diff --git a/.gitignore b/.gitignore index 95d659f..bee4c81 100644 --- a/.gitignore +++ b/.gitignore @@ -44,4 +44,6 @@ lib/generated_plugin_registrant.dart /key.jks /android/key.properties -**/android/app/.cxx \ No newline at end of file +**/android/app/.cxx +android/key.jks +lib/l10n_old \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d0fc8fb..5c0f033 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: +image: name: registry.gitlab.com/famedly/containers/flutter-dockerimages:stable variables: @@ -36,9 +36,10 @@ build_web: - cd web/ && curl -L 'https://github.com/sql-js/sql.js/releases/latest/download/sqljs-wasm.zip' > sqljs-wasm.zip && cd ../ - cd web/ && unzip sqljs-wasm.zip && cd ../ - cd web/ && rm sqljs-wasm.zip && cd ../ - - flutter pub get - flutter clean - - flutter build web --release --verbose --dart-define=FLUTTER_WEB_USE_SKIA=true + - flutter pub get + - flutter build web --release --verbose + # upload elsewhere, if wanted artifacts: paths: - build/web/ @@ -54,7 +55,7 @@ build_android_debug: paths: - build/app/outputs/apk/debug/app-debug.apk except: - - master + - main build_android_apk: @@ -66,13 +67,16 @@ build_android_apk: - cd android && echo "keyAlias=key" >> key.properties && cd .. - cd android && echo "storeFile=../key.jks" >> key.properties && cd .. - cd android/app && echo $GOOGLE_SERVICES >> google-services.json && cd ../.. + - flutter pub get - flutter build apk --release + - mkdir -p build/android + - cp build/app/outputs/apk/release/app-release.apk build/android/ artifacts: when: on_success paths: - - build/app/outputs/apk/release/app-release.apk + - build/android/app-release.apk only: - - master + - main - tags @@ -86,12 +90,15 @@ build_android_appbundle: - cd android && echo "storeFile=../key.jks" >> key.properties && cd .. - cd android/app && echo $GOOGLE_SERVICES >> google-services.json && cd ../.. - flutter build appbundle --target-platform android-arm,android-arm64,android-x64 + - mkdir -p build/android + - cp build/app/outputs/bundle/release/app-release.aab build/android/ artifacts: when: on_success paths: - - build/app/outputs/bundle/release/app-release.aab + - build/android/app-release.aab only: - - master + - main + upload_to_fdroid_repo: stage: publish @@ -105,17 +112,24 @@ upload_to_fdroid_repo: ## - 'which rsync || (sudo apt-get update -y && sudo apt-get install rsync -y )' ## + ## Install pcregrep if not already installed. + ## + - 'which pcregrep || (sudo apt-get update -y && sudo apt-get install pcregrep -y )' + ## ## Run ssh-agent (inside the build environment) ## - eval $(ssh-agent -s) - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - - mkdir -p ~/.ssh - chmod 700 ~/.ssh + - ssh-keyscan -t rsa fdroid.nordgedanken.dev >> ~/.ssh/known_hosts script: - - export UPDATE_VERSION=$(pcregrep -o1 'version:\\s([0-9]*\\.[0-9]*\\.[0-9]*)\\+[0-9]*' pubspec.yaml) - - mv app-release.apk "${UPDATE_VERSION}.apk" - - cd build/app/outputs/apk/release/ && rsync -rav -e ssh ./ fluffy@fdroid.nordgedanken.dev:/fdroid/repo - - ssh fluffy@fdroid.nordgedanken.dev "cd fdroid && fdroid update" + - mkdir -p upload + - cp build/android/* upload/ + - cd build/android/ + - export UPDATE_VERSION=$(pcregrep -o1 'version:\\s([0-9]*\\.[0-9]*\\.[0-9]*)\\+[0-9]*' pubspec.yaml) && mv app-release.apk "${UPDATE_VERSION}.apk" + - rsync -rav -e ssh ./ fluffy@fdroid.nordgedanken.dev:/fdroid/repo + - ssh fluffy@fdroid.nordgedanken.dev "cd fdroid && mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc && fdroid update" dependencies: - build_android_apk only: @@ -138,4 +152,4 @@ pages: paths: - public only: - - master + - main diff --git a/CHANGELOG.md b/CHANGELOG.md index 41c7a85..e4d83a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,73 @@ -# Version 0.16.0 - 2020-07-?? +# Version 0.20.0 - 2020-??-?? +### Features +- Add ability to enable / disable emotes globally +- Add ability to manage emote packs with different state keys + +# Version 0.19.0 - 2020-09-21 +### Features +- Implemented ignore list +- Jump to events in timeline: When tapping on a reply and when tapping a matrix.to link +- Display messages with up to 10 emotes or emoji bigger +- New design for the chat list and message bubbles +- Implement reactions +- Implement password change +- Implement deactivate user account +### Fixes +- Timeline randomly resorting while more history is being fetched +- Automatically request history if the "load more" button is on the screen + +# Version 0.18.0 - 2020-09-13 +### Features +- Added translations: Armenian, Turkish, Chinese (Simplified), Estonian +- Url-ify matrix identifiers +- Use server-side generated thumbnails in cleartext rooms +- Add option to send images in their original resolution +- Add additional confirmation for sending files & share intents +- Add option to opt-in to report issues / crashes to sentry +- Write keys to online key backup, fully implementing online key backup +### Changes +- Tapping links, pills, etc. now does stuff +- Better handling of sending messages in bad network +- Better recovery of "keys not cached" +### Fixes: +- Various html rendering and url-ifying fixes +- Added support for blurhashes +- Image viewer now eventually displays the original image, not only the thumbnail + +# Version 0.17.0 - 2020-08-31 +### Features +- Pin and unpin chats +- Implement event aggregations +- Implement message edits +- Render reactions +- Add / Remove reactions by tapping on existing reactions +### Fixes: +- Don't re-render the room list nearly as often, increasing performance +- Various fixes for sending messages on bad networks +- Design tweeks and fixes +- Various performance fixes and improvements + +# Version 0.16.0 - 2020-07-24 ### Features - Implement web notifications +- Implement a connection status header ### Changes -- Various performance improvements -- Added languages: Galician, Croatian, Japanese, Russian +- Switch out database engine for faster performance +- Greatly improve startup time +- Added languages: Galician, Croatian, Japanese, Russian, Ukrainian - Thanks a lot to all the weblate users! +- Only show the microg toast once, if you have play services disabled +- Homeserver URL input now strips trailing whitespace and slash - Thanks @kate_shine +- Also use prev_content to determine profile of a user: This allows the username and avatar of people who left a group to still be displayed ### Fixes: -- Various fixes, including key verification fixes +- Fix not being able to initiate key verification properly +- Fix message sending being weird on slow networks +- Fix a few HTML rendering bugs +- Various other fixes +- Fix the 12h clock showing 00:15am, instead of 12:15am - Thanks @not_chicken +- Fix an issue with replies and invalid HTML +- Fix messages getting lost when retrieving chat history +- Fix a bug where an incorrect string encoding from the server is assumed +- Fix a bug where people couldn't log in if they had email notifications enabled # Version 0.15.1 - 2020-06-26 ### Fixes: diff --git a/PRIVACY.md b/PRIVACY.md index 5abc128..c7797bc 100644 --- a/PRIVACY.md +++ b/PRIVACY.md @@ -1,49 +1,97 @@ -**Understand how your data is used** +# Privacy -The Matrix protocol is designed with your privacy and data sovereignty in mind. Because it is a decentralised, federated service with cryptographically-validated message integrity, there are a few important things to know before you use the Service. +FluffyChat is available on Android, iOS and as a web version. Desktop versions for Windows, Linux and macOS may follow. -This app can communicate with any matrix homeserver which supports the matrix specification by the homeserver. The user is free to choose the homeserver and has to accept the privacy policy of this homeserver before using it. +* [Matrix](#1) +* [Sentry](#2) +* [Database](#3) +* [Encryption](#4) +* [App Permissions](#5) +* [Push Notifications](#6) -**Federation** +## 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. -Services using the Matrix protocol rely on Matrix homeservers which share user data with the wider ecosystem over federation. +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. -* When you send messages or files in a room, a copy of the data is sent to all participants in the room. If these participants are registered on remote homeservers, your username, display name, messages and files may be replicated across each participating homeserver. +FluffyChat only communicates with the selected server and with sentry.io if enabled. -* We will forget your copy of your data upon your request. We will also forward your request onto federated homeservers. However - these homeservers are outside our span of control, so we cannot guarantee they will forget your data. +More information is available at: [https://matrix.org](https://matrix.org) -* Federated homeservers can be located anywhere in the world, and are subject to local laws and regulations. +## Sentry +FluffyChat uses Sentry for crash reports if the user allows it. -**Bridging** +More information is available at: [https://sentry.io](https://sentry.io) -Some Matrix rooms are bridged to third-party services, such as IRC networks, twitter or email. When a room has been bridged, your messages and media may be copied onto the bridged service. +## Database +FluffyChat caches some data received from the server in a local database on the device of the user. -* It may not be technically possible to support your management of your data once it has been copied onto a bridged service. +More information is available at: [https://pub.dev/packages/moor](https://pub.dev/packages/moor) -* Bridged services can be located anywhere in the world, and are subject to local laws and regulations. +## Encryption +All communication of substantive content between Fluffychat and any server is done in secure way, using transport encryption to protect it. -**Integration Services (Bots and Widgets)** +FluffyChat is able to use End-To-End-Encryption as a tech preview. -The homeserver the user is using may provide a range of integrations in the form of Widgets (web applications accessed as part of the Matrix Client webapp) and Bots (automated participants in rooms). Bots and Widgets have access to the messages and files in rooms in which they participate. +## App Permissions -**Forgetting your Data** +The permissions are the same on Android and iOS but may differ in the name. This are the Android Permissions: -You can request that we forget your data if you deactivate your account. Each user in a Matrix conversation receives their own copy of all messages and files in that conversation (similar to email), so we ensure data is forgotten by ensuring that your data is not shared further and is not visible to future users. Once all users’ copies have been forgotten the messages and files will be deleted from the homeserver database. For full details, please see the [full privacy notice](https://matrix.org/legal/privacy-notice/ "https://matrix.org/legal/privacy-notice/"). +#### Internet Access +FluffyChat needs to have internet access to communicate with the Matrix Server. -If you remove (redact) a message, the message content will no longer be accessible to users. Redactions only remove message content, your display name and avatar - your username will still be visible. Federated homeservers and some matrix clients may not honour the redaction request. +#### 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) -**Legal Basis for Processing** +#### Record Audio +FluffyChat can send voice messages in a chat and therefore needs to have the permission to record audio. -New Vector processes your data under Legitimate Interest. This means that we process your data only as necessary to deliver the Service, and in a manner that you understand and expect. +#### Write External Storage +The user is able to save received files and therefore app needs this permission. -The Legitimate Interest of our Service is the provision of decentralised, openly-federated and (optionally) end-to-end encrypted communication services. The processing of user data we undertake is necessary to provide the Service. The nature of the Service and its implementation results in some caveats concerning this processing, particularly in terms of GDPR Article 17 Right to Erasure (Right to be Forgotten). We believe these caveats are in line with the broader societal interests served by providing the Service. These caveats are discussed in detail in the full privacy notice, but the most important restriction is that your username will still be publicly associated with rooms in which you have participated even if you deactivate your account and ask us to forget your data. +#### Read External Storage +The user is able to send files from the device's file system. -In situations where the interests of the individual appear to be in conflict with the broader societal interests, we will seek to reconcile those differences in accordance with our policy. +## 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 -If any of the above are unacceptable to you, **please do not use the Service.** +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) -Please review the [full privacy notice](https://matrix.org/legal/privacy-notice/ "https://matrix.org/legal/privacy-notice/") and [code of conduct](https://matrix.org/legal/code-of-conduct/ "https://matrix.org/legal/code-of-conduct/") before using this Service. +`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 -Please review the [terms and conditions](https://matrix.org/legal/terms-and-conditions/ "https://matrix.org/legal/terms-and-conditions/") before using this Service. +A typical push notification could look like this: +``` +{ + "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" + } + } + ] + } +} +``` -You must be at least 16 years old to use this Service. +FluffyChat sets the `event_id_only` flag at the Matrix Server. This server is then responsible to send the correct data. diff --git a/README.md b/README.md index 0838ffb..ceab28a 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,7 @@ An experimental fork of FluffyChat. # Features * Single and group chats * Send images and files + * Voice messages * Offline chat history * Push Notifications * Account settings @@ -18,6 +19,9 @@ An experimental fork of FluffyChat. * Archived chats * Discover public chats on the user's homeserver * Registration + * Disable account + * Change password + * End-To-End-Encryption ## How to build @@ -75,25 +79,40 @@ with a method call: ``` Text(L10n.of(context).helloWorld), ``` -And add the method to `/lib/l10n/l10n.dart`: + +and add the following import if missing: + ``` -String get helloWorld => Intl.message('Hello world'); +import 'package:flutter_gen/gen_l10n/l10n.dart'; ``` -2. Add the string to the .arb files with this command: +2. Add the string to `/lib/l10n/l10n_en.arb`: + +(The following example need to be sorounded by the usual json `{}` and after the `@@locale` key) + +Example A: ``` -flutter pub run intl_translation:extract_to_arb --output-dir=lib/l10n lib/l10n/l10n.dart +"helloWorld": "Hello World!", +"@helloWorld": { + "description": "The conventional newborn programmer greeting" +} ``` -3. Copy the new translation objects from `/lib/l10n/intl_message.arb` to `/lib/l10n/intl_.arb` and translate it or create a new file for your language by copying `intl_message.arb`. - -4. Update the translations with this command: +Example B: ``` -flutter pub pub run intl_translation:generate_from_arb --output-dir=lib/l10n --no-use-deferred-loading lib/l10n/l10n.dart lib/l10n/intl_*.arb +"hello": "Hello {userName}", +"@hello": { + "description": "A message with a single parameter", + "placeholders": { + "userName": { + "type": “String”, + “example”: “Bob” + } + } +} ``` -5. Make sure your language is in `supportedLocales` in `/lib/main.dart` and in the List at `https://gitlab.com/ChristianPauly/fluffychat-flutter/-/blob/master/lib/l10n/l10n.dart#L11`. - +3. For testing just run a regular build without extras # Special thanks to diff --git a/assets/sounds/notification.wav b/assets/sounds/notification.wav index 15d9235..ec51a78 100644 Binary files a/assets/sounds/notification.wav and b/assets/sounds/notification.wav differ diff --git a/ios/Flutter/.last_build_id b/ios/Flutter/.last_build_id index f7f5f2a..19376c0 100644 --- a/ios/Flutter/.last_build_id +++ b/ios/Flutter/.last_build_id @@ -1 +1 @@ -6c5611b14df049743797687d0807922a \ No newline at end of file +8ccc4b539b008db59a45e66a3eaa417e \ No newline at end of file diff --git a/ios/Podfile.lock b/ios/Podfile.lock index ecb727c..27a5e41 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -33,48 +33,46 @@ PODS: - file_picker (0.0.1): - DKImagePickerController/PhotoGallery - Flutter - - Firebase/Core (6.27.0): + - Firebase/CoreOnly (6.26.0): + - FirebaseCore (= 6.7.2) + - Firebase/Messaging (6.26.0): - Firebase/CoreOnly - - FirebaseAnalytics (= 6.6.1) - - Firebase/CoreOnly (6.27.0): - - FirebaseCore (= 6.8.0) - - Firebase/Messaging (6.27.0): - - Firebase/CoreOnly - - FirebaseMessaging (~> 4.5.0) - - firebase_messaging (0.0.1): - - Firebase/Core - - Firebase/Messaging + - FirebaseMessaging (~> 4.4.1) + - firebase_core (0.5.0): + - Firebase/CoreOnly (~> 6.26.0) - Flutter - - FirebaseAnalytics (6.6.1): - - FirebaseCore (~> 6.8) - - FirebaseInstallations (~> 1.4) - - GoogleAppMeasurement (= 6.6.1) - - GoogleUtilities/AppDelegateSwizzler (~> 6.0) - - GoogleUtilities/MethodSwizzler (~> 6.0) - - GoogleUtilities/Network (~> 6.0) - - "GoogleUtilities/NSData+zlib (~> 6.0)" - - nanopb (~> 1.30905.0) - - FirebaseCore (6.8.0): + - firebase_core_web (0.1.0): + - Flutter + - firebase_messaging (7.0.2): + - Firebase/CoreOnly (~> 6.26.0) + - Firebase/Messaging (~> 6.26.0) + - firebase_core + - Flutter + - FirebaseAnalyticsInterop (1.5.0) + - FirebaseCore (6.7.2): - FirebaseCoreDiagnostics (~> 1.3) + - FirebaseCoreDiagnosticsInterop (~> 1.2) - GoogleUtilities/Environment (~> 6.5) - GoogleUtilities/Logger (~> 6.5) - - FirebaseCoreDiagnostics (1.4.0): - - GoogleDataTransportCCTSupport (~> 3.1) - - GoogleUtilities/Environment (~> 6.5) - - GoogleUtilities/Logger (~> 6.5) - - nanopb (~> 1.30905.0) - - FirebaseInstallations (1.4.0): - - FirebaseCore (~> 6.8) + - FirebaseCoreDiagnostics (1.6.0): + - GoogleDataTransport (~> 7.2) + - GoogleUtilities/Environment (~> 6.7) + - GoogleUtilities/Logger (~> 6.7) + - nanopb (~> 1.30906.0) + - FirebaseCoreDiagnosticsInterop (1.2.0) + - FirebaseInstallations (1.3.0): + - FirebaseCore (~> 6.6) - GoogleUtilities/Environment (~> 6.6) - GoogleUtilities/UserDefaults (~> 6.6) - PromisesObjC (~> 1.2) - - FirebaseInstanceID (4.4.0): - - FirebaseCore (~> 6.8) + - FirebaseInstanceID (4.3.4): + - FirebaseCore (~> 6.6) - FirebaseInstallations (~> 1.0) - GoogleUtilities/Environment (~> 6.5) - GoogleUtilities/UserDefaults (~> 6.5) - - FirebaseMessaging (4.5.0): - - FirebaseCore (~> 6.8) + - FirebaseMessaging (4.4.1): + - FirebaseAnalyticsInterop (~> 1.5) + - FirebaseCore (~> 6.6) - FirebaseInstanceID (~> 4.3) - GoogleUtilities/AppDelegateSwizzler (~> 6.5) - GoogleUtilities/Environment (~> 6.5) @@ -83,10 +81,13 @@ PODS: - Protobuf (>= 3.9.2, ~> 3.9) - FLAnimatedImage (1.0.12) - Flutter (1.0.0) - - flutter_keyboard_visibility (0.7.0): + - flutter_keyboard_visibility (0.0.1): - Flutter - flutter_local_notifications (0.0.1): - Flutter + - flutter_olm (0.0.1): + - Flutter + - OLMKit - flutter_plugin_android_lifecycle (0.0.1): - Flutter - flutter_secure_storage (3.3.1): @@ -95,45 +96,35 @@ PODS: - Flutter - FMDB (2.7.5): - FMDB/standard (= 2.7.5) - - FMDB/SQLCipher (2.7.5): - - SQLCipher - FMDB/standard (2.7.5) - - GoogleAppMeasurement (6.6.1): - - GoogleUtilities/AppDelegateSwizzler (~> 6.0) - - GoogleUtilities/MethodSwizzler (~> 6.0) - - GoogleUtilities/Network (~> 6.0) - - "GoogleUtilities/NSData+zlib (~> 6.0)" - - nanopb (~> 1.30905.0) - - GoogleDataTransport (6.2.1) - - GoogleDataTransportCCTSupport (3.2.0): - - GoogleDataTransport (~> 6.1) - - nanopb (~> 1.30905.0) - - GoogleUtilities/AppDelegateSwizzler (6.6.0): + - GoogleDataTransport (7.3.0): + - nanopb (~> 1.30906.0) + - GoogleUtilities/AppDelegateSwizzler (6.7.2): - GoogleUtilities/Environment - GoogleUtilities/Logger - GoogleUtilities/Network - - GoogleUtilities/Environment (6.6.0): + - GoogleUtilities/Environment (6.7.2): - PromisesObjC (~> 1.2) - - GoogleUtilities/Logger (6.6.0): + - GoogleUtilities/Logger (6.7.2): - GoogleUtilities/Environment - - GoogleUtilities/MethodSwizzler (6.6.0): - - GoogleUtilities/Logger - - GoogleUtilities/Network (6.6.0): + - GoogleUtilities/Network (6.7.2): - GoogleUtilities/Logger - "GoogleUtilities/NSData+zlib" - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (6.6.0)" - - GoogleUtilities/Reachability (6.6.0): + - "GoogleUtilities/NSData+zlib (6.7.2)" + - GoogleUtilities/Reachability (6.7.2): - GoogleUtilities/Logger - - GoogleUtilities/UserDefaults (6.6.0): + - GoogleUtilities/UserDefaults (6.7.2): - GoogleUtilities/Logger - image_picker (0.0.1): - Flutter - - nanopb (1.30905.0): - - nanopb/decode (= 1.30905.0) - - nanopb/encode (= 1.30905.0) - - nanopb/decode (1.30905.0) - - nanopb/encode (1.30905.0) + - nanopb (1.30906.0): + - nanopb/decode (= 1.30906.0) + - nanopb/encode (= 1.30906.0) + - nanopb/decode (1.30906.0) + - nanopb/encode (1.30906.0) + - native_imaging (0.0.1): + - Flutter - OLMKit (3.1.0): - OLMKit/olmc (= 3.1.0) - OLMKit/olmcpp (= 3.1.0) @@ -143,58 +134,92 @@ PODS: - Flutter - path_provider (0.0.1): - Flutter - - PromisesObjC (1.2.9) - - Protobuf (3.12.0) + - path_provider_linux (0.0.1): + - Flutter + - path_provider_macos (0.0.1): + - Flutter + - path_provider_windows (0.0.1): + - Flutter + - PromisesObjC (1.2.10) + - Protobuf (3.13.0) - receive_sharing_intent (0.0.1): - Flutter - - SDWebImage (5.8.1): - - SDWebImage/Core (= 5.8.1) - - SDWebImage/Core (5.8.1) + - SDWebImage (5.9.1): + - SDWebImage/Core (= 5.9.1) + - SDWebImage/Core (5.9.1) - SDWebImageFLPlugin (0.4.0): - FLAnimatedImage (>= 1.0.11) - SDWebImage/Core (~> 5.6) - - share (0.5.2): + - share (0.0.1): - Flutter - sqflite (0.0.1): - Flutter - FMDB (~> 2.7.2) - - sqflite_sqlcipher (0.0.1): - - Flutter - - FMDB/SQLCipher (~> 2.7.5) - SQLCipher (4.4.0): - SQLCipher/standard (= 4.4.0) - SQLCipher/common (4.4.0) - SQLCipher/standard (4.4.0): - SQLCipher/common + - sqlite3 (3.32.3): + - sqlite3/common (= 3.32.3) + - sqlite3/common (3.32.3) + - sqlite3/fts5 (3.32.3): + - sqlite3/common + - sqlite3/json1 (3.32.3): + - sqlite3/common + - sqlite3/perf-threadsafe (3.32.3): + - sqlite3/common + - sqlite3/rtree (3.32.3): + - sqlite3/common + - sqlite3_flutter_libs (0.0.1): + - Flutter + - sqlite3 (~> 3.32.3) + - sqlite3/fts5 + - sqlite3/json1 + - sqlite3/perf-threadsafe + - sqlite3/rtree - url_launcher (0.0.1): - Flutter + - url_launcher_linux (0.0.1): + - Flutter - url_launcher_macos (0.0.1): - Flutter - url_launcher_web (0.0.1): - Flutter + - url_launcher_windows (0.0.1): + - Flutter - webview_flutter (0.0.1): - Flutter DEPENDENCIES: - file_picker (from `.symlinks/plugins/file_picker/ios`) + - firebase_core (from `.symlinks/plugins/firebase_core/ios`) + - firebase_core_web (from `.symlinks/plugins/firebase_core_web/ios`) - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) - Flutter (from `Flutter`) - flutter_keyboard_visibility (from `.symlinks/plugins/flutter_keyboard_visibility/ios`) - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) + - flutter_olm (from `.symlinks/plugins/flutter_olm/ios`) - flutter_plugin_android_lifecycle (from `.symlinks/plugins/flutter_plugin_android_lifecycle/ios`) - flutter_secure_storage (from `.symlinks/plugins/flutter_secure_storage/ios`) - flutter_sound (from `.symlinks/plugins/flutter_sound/ios`) - image_picker (from `.symlinks/plugins/image_picker/ios`) - - OLMKit + - native_imaging (from `.symlinks/plugins/native_imaging/ios`) - open_file (from `.symlinks/plugins/open_file/ios`) - path_provider (from `.symlinks/plugins/path_provider/ios`) + - path_provider_linux (from `.symlinks/plugins/path_provider_linux/ios`) + - path_provider_macos (from `.symlinks/plugins/path_provider_macos/ios`) + - path_provider_windows (from `.symlinks/plugins/path_provider_windows/ios`) - receive_sharing_intent (from `.symlinks/plugins/receive_sharing_intent/ios`) - share (from `.symlinks/plugins/share/ios`) - sqflite (from `.symlinks/plugins/sqflite/ios`) - - sqflite_sqlcipher (from `.symlinks/plugins/sqflite_sqlcipher/ios`) + - SQLCipher + - sqlite3_flutter_libs (from `.symlinks/plugins/sqlite3_flutter_libs/ios`) - url_launcher (from `.symlinks/plugins/url_launcher/ios`) + - url_launcher_linux (from `.symlinks/plugins/url_launcher_linux/ios`) - url_launcher_macos (from `.symlinks/plugins/url_launcher_macos/ios`) - url_launcher_web (from `.symlinks/plugins/url_launcher_web/ios`) + - url_launcher_windows (from `.symlinks/plugins/url_launcher_windows/ios`) - webview_flutter (from `.symlinks/plugins/webview_flutter/ios`) SPEC REPOS: @@ -202,17 +227,16 @@ SPEC REPOS: - DKImagePickerController - DKPhotoGallery - Firebase - - FirebaseAnalytics + - FirebaseAnalyticsInterop - FirebaseCore - FirebaseCoreDiagnostics + - FirebaseCoreDiagnosticsInterop - FirebaseInstallations - FirebaseInstanceID - FirebaseMessaging - FLAnimatedImage - FMDB - - GoogleAppMeasurement - GoogleDataTransport - - GoogleDataTransportCCTSupport - GoogleUtilities - nanopb - OLMKit @@ -221,10 +245,15 @@ SPEC REPOS: - SDWebImage - SDWebImageFLPlugin - SQLCipher + - sqlite3 EXTERNAL SOURCES: file_picker: :path: ".symlinks/plugins/file_picker/ios" + firebase_core: + :path: ".symlinks/plugins/firebase_core/ios" + firebase_core_web: + :path: ".symlinks/plugins/firebase_core_web/ios" firebase_messaging: :path: ".symlinks/plugins/firebase_messaging/ios" Flutter: @@ -233,6 +262,8 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/flutter_keyboard_visibility/ios" flutter_local_notifications: :path: ".symlinks/plugins/flutter_local_notifications/ios" + flutter_olm: + :path: ".symlinks/plugins/flutter_olm/ios" flutter_plugin_android_lifecycle: :path: ".symlinks/plugins/flutter_plugin_android_lifecycle/ios" flutter_secure_storage: @@ -241,24 +272,36 @@ EXTERNAL SOURCES: :path: ".symlinks/plugins/flutter_sound/ios" image_picker: :path: ".symlinks/plugins/image_picker/ios" + native_imaging: + :path: ".symlinks/plugins/native_imaging/ios" open_file: :path: ".symlinks/plugins/open_file/ios" path_provider: :path: ".symlinks/plugins/path_provider/ios" + path_provider_linux: + :path: ".symlinks/plugins/path_provider_linux/ios" + path_provider_macos: + :path: ".symlinks/plugins/path_provider_macos/ios" + path_provider_windows: + :path: ".symlinks/plugins/path_provider_windows/ios" receive_sharing_intent: :path: ".symlinks/plugins/receive_sharing_intent/ios" share: :path: ".symlinks/plugins/share/ios" sqflite: :path: ".symlinks/plugins/sqflite/ios" - sqflite_sqlcipher: - :path: ".symlinks/plugins/sqflite_sqlcipher/ios" + sqlite3_flutter_libs: + :path: ".symlinks/plugins/sqlite3_flutter_libs/ios" url_launcher: :path: ".symlinks/plugins/url_launcher/ios" + url_launcher_linux: + :path: ".symlinks/plugins/url_launcher_linux/ios" url_launcher_macos: :path: ".symlinks/plugins/url_launcher_macos/ios" url_launcher_web: :path: ".symlinks/plugins/url_launcher_web/ios" + url_launcher_windows: + :path: ".symlinks/plugins/url_launcher_windows/ios" webview_flutter: :path: ".symlinks/plugins/webview_flutter/ios" @@ -266,45 +309,54 @@ SPEC CHECKSUMS: DKImagePickerController: 4a3e7948a848c4348e600b3fe5ce41478835fa10 DKPhotoGallery: 0290d32343574f06eaa4c26f8f2f8a1035e916be file_picker: 3e6c3790de664ccf9b882732d9db5eaf6b8d4eb1 - Firebase: fc4cbf6f1592636431821ef9a3c557e4dfd9f268 - firebase_messaging: cffb57ce40958c6204f03fb0c81713e4cd1e240c - FirebaseAnalytics: 0ea640473474f036cabbc2576e20c2d63671c92f - FirebaseCore: feda061cb1ee6d8ad4824f4a4a8ffbcfe284f595 - FirebaseCoreDiagnostics: 4505e4d4009b1d93f605088ee7d7764d5f0d1c84 - FirebaseInstallations: 293f567159b6d66d1c990f13bb868066096c94ec - FirebaseInstanceID: 3b119bfe90e904851218159c9a4ecb847cc51d18 - FirebaseMessaging: ad9e1a80ea64905e01a0ce1b3eb76a2944544151 + Firebase: 7cf5f9c67f03cb3b606d1d6535286e1080e57eb6 + firebase_core: 3134fe79d257d430f163b558caf52a10a87efe8a + firebase_core_web: d501d8b946b60c8af265428ce483b0fff5ad52d1 + firebase_messaging: 2844c37f9ce87c0904b38fe435223161b1a71528 + FirebaseAnalyticsInterop: 3f86269c38ae41f47afeb43ebf32a001f58fcdae + FirebaseCore: f42e5e5f382cdcf6b617ed737bf6c871a6947b17 + FirebaseCoreDiagnostics: 7415bfb3883b3500c5a95c42b6ba66baae78f600 + FirebaseCoreDiagnosticsInterop: 296e2c5f5314500a850ad0b83e9e7c10b011a850 + FirebaseInstallations: 6f5f680e65dc374397a483c32d1799ba822a395b + FirebaseInstanceID: cef67c4967c7cecb56ea65d8acbb4834825c587b + FirebaseMessaging: 29543feb343b09546ab3aa04d008ee8595b43c44 FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31 Flutter: 0e3d915762c693b495b44d77113d4970485de6ec - flutter_keyboard_visibility: 6195387fb6d8f46e5cd6dda4a4154e41f800f545 + flutter_keyboard_visibility: 0339d06371254c3eb25eeb90ba8d17dca8f9c069 flutter_local_notifications: 9e4738ce2471c5af910d961a6b7eadcf57c50186 + flutter_olm: be36ebeb6388f7d7b3097d39feaf459a3cad2091 flutter_plugin_android_lifecycle: dc0b544e129eebb77a6bfb1239d4d1c673a60a35 flutter_secure_storage: 7953c38a04c3fdbb00571bcd87d8e3b5ceb9daec flutter_sound: 0e8163ceac1e00eb6d894e2ae4641ba726a2c479 FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a - GoogleAppMeasurement: 2fd5c5a56c069db635c8e7b92d4809a9591d0a69 - GoogleDataTransport: 9a8a16f79feffc7f42096743de2a7c4815e84020 - GoogleDataTransportCCTSupport: 489c1265d2c85b68187a83a911913d190012158d - GoogleUtilities: 39530bc0ad980530298e9c4af8549e991fd033b1 - image_picker: 66aa71bc96850a90590a35d4c4a2907b0d823109 - nanopb: c43f40fadfe79e8b8db116583945847910cbabc9 + GoogleDataTransport: e85fb700c9b027079ce182c3d08e12e0f9618bb4 + GoogleUtilities: 7f2f5a07f888cdb145101d6042bc4422f57e70b3 + image_picker: 9c3312491f862b28d21ecd8fdf0ee14e601b3f09 + nanopb: 59317e09cf1f1a0af72f12af412d54edf52603fc + native_imaging: 633687fc14422729cc67ed80c3435e359ef7a92b OLMKit: 4ee0159d63feeb86d836fdcfefe418e163511639 open_file: 02eb5cb6b21264bd3a696876f5afbfb7ca4f4b7d - path_provider: fb74bd0465e96b594bb3b5088ee4a4e7bb1f2a9d - PromisesObjC: b48e0338dbbac2207e611750777895f7a5811b75 - Protobuf: 2793fcd0622a00b546c60e7cbbcc493e043e9bb9 + path_provider: abfe2b5c733d04e238b0d8691db0cfd63a27a93c + path_provider_linux: 4d630dc393e1f20364f3e3b4a2ff41d9674a84e4 + path_provider_macos: f760a3c5b04357c380e2fddb6f9db6f3015897e0 + path_provider_windows: a2b81600c677ac1959367280991971cb9a1edb3b + PromisesObjC: b14b1c6b68e306650688599de8a45e49fae81151 + Protobuf: 3dac39b34a08151c6d949560efe3f86134a3f748 receive_sharing_intent: c0d87310754e74c0f9542947e7cbdf3a0335a3b1 - SDWebImage: e3eae2eda88578db0685a0c88597fdadd9433f05 + SDWebImage: a990c053fff71e388a10f3357edb0be17929c9c5 SDWebImageFLPlugin: 6c2295fb1242d44467c6c87dc5db6b0a13228fd8 - share: bae0a282aab4483288913fc4dc0b935d4b491f2e + share: 0b2c3e82132f5888bccca3351c504d0003b3b410 sqflite: 4001a31ff81d210346b500c55b17f4d6c7589dd0 - sqflite_sqlcipher: 45e72be2f26bde6ad196ff8b084123d8634ba921 SQLCipher: e434ed542b24f38ea7b36468a13f9765e1b5c072 - url_launcher: a1c0cc845906122c4784c542523d8cacbded5626 + sqlite3: 8f7d2078ae27778699a622a94b853285793422a2 + sqlite3_flutter_libs: 5651f8ff48e3b44d910863c4ea5916085b1b245f + url_launcher: 6fef411d543ceb26efce54b05a0a40bfd74cbbef + url_launcher_linux: ac237cb7a8058736e4aae38bdbcc748a4b394cc0 url_launcher_macos: fd7894421cd39320dce5f292fc99ea9270b2a313 url_launcher_web: e5527357f037c87560776e36436bf2b0288b965c - webview_flutter: bec7599de6bfbe8008a739aa3ebd7b364ea9d0cd + url_launcher_windows: 683d7c283894db8d1914d3ab2223b20cc1ad95d5 + webview_flutter: d2b4d6c66968ad042ad94cbb791f5b72b4678a96 -PODFILE CHECKSUM: a023bd4e2d89de8e64bb7aab80deaefdf9f0384c +PODFILE CHECKSUM: 4b647f92a1fa32e6a4287abfd67897564ceda4e9 -COCOAPODS: 1.9.1 +COCOAPODS: 1.9.3 diff --git a/l10n.yaml b/l10n.yaml new file mode 100644 index 0000000..19636a3 --- /dev/null +++ b/l10n.yaml @@ -0,0 +1,4 @@ +arb-dir: lib/l10n +template-arb-file: intl_en.arb +output-localization-file: l10n.dart +output-class: L10n \ No newline at end of file diff --git a/lib/components/audio_player.dart b/lib/components/audio_player.dart index 0ffb4bf..940fa0f 100644 --- a/lib/components/audio_player.dart +++ b/lib/components/audio_player.dart @@ -2,12 +2,15 @@ import 'dart:async'; import 'dart:typed_data'; import 'package:famedlysdk/famedlysdk.dart'; +import 'package:fluffychat/components/message_download_content.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_sound/flutter_sound.dart'; import 'package:intl/intl.dart'; - +import 'package:universal_html/prefer_universal/html.dart' as html; import 'dialogs/simple_dialogs.dart'; +import '../utils/ui_fake.dart' if (dart.library.html) 'dart:ui' as ui; +import 'matrix.dart'; class AudioPlayer extends StatefulWidget { final Color color; @@ -36,6 +39,22 @@ class _AudioPlayerState extends State { double currentPosition = 0; double maxPosition = 0; + String webSrcUrl; + + @override + void initState() { + super.initState(); + if (kIsWeb) { + ui.platformViewRegistry.registerViewFactory( + 'web_audio_player', + (int viewId) => html.AudioElement() + ..src = webSrcUrl + ..autoplay = false + ..controls = true + ..style.border = 'none'); + } + } + @override void dispose() { if (flutterSound.audioState == t_AUDIO_STATE.IS_PLAYING) { @@ -111,6 +130,18 @@ class _AudioPlayerState extends State { @override Widget build(BuildContext context) { + if (kIsWeb) { + if (widget.event.content['url'] is String) { + webSrcUrl = Uri.parse(widget.event.content['url']) + .getDownloadLink(Matrix.of(context).client); + return Container( + height: 50, + width: 300, + child: HtmlElementView(viewType: 'web_audio_player'), + ); + } + return MessageDownloadContent(widget.event, widget.color); + } return Row( mainAxisSize: MainAxisSize.min, children: [ diff --git a/lib/components/avatar.dart b/lib/components/avatar.dart index c3d55a5..1d450b6 100644 --- a/lib/components/avatar.dart +++ b/lib/components/avatar.dart @@ -2,7 +2,7 @@ import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/utils/string_color.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_advanced_networkimage/provider.dart'; +import 'package:cached_network_image/cached_network_image.dart'; import 'matrix.dart'; @@ -41,12 +41,7 @@ class Avatar extends StatelessWidget { onTap: onTap, child: CircleAvatar( radius: size / 2, - backgroundImage: !noPic - ? AdvancedNetworkImage( - src, - useDiskCache: !kIsWeb, - ) - : null, + backgroundImage: !noPic ? CachedNetworkImageProvider(src) : null, backgroundColor: noPic ? name?.lightColor ?? Theme.of(context).secondaryHeaderColor : Theme.of(context).secondaryHeaderColor, diff --git a/lib/components/chat_settings_popup_menu.dart b/lib/components/chat_settings_popup_menu.dart index 0b37c2e..4bc1290 100644 --- a/lib/components/chat_settings_popup_menu.dart +++ b/lib/components/chat_settings_popup_menu.dart @@ -1,11 +1,11 @@ import 'dart:async'; import 'package:famedlysdk/famedlysdk.dart'; -import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/utils/app_route.dart'; import 'package:fluffychat/views/chat_details.dart'; import 'package:fluffychat/views/chat_list.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:url_launcher/url_launcher.dart'; import 'dialogs/simple_dialogs.dart'; diff --git a/lib/components/connection_status_header.dart b/lib/components/connection_status_header.dart index 705a4f5..0789f18 100644 --- a/lib/components/connection_status_header.dart +++ b/lib/components/connection_status_header.dart @@ -11,7 +11,7 @@ class ConnectionStatusHeader extends StatefulWidget { class _ConnectionStatusHeaderState extends State { StreamSubscription _onSyncSub; StreamSubscription _onSyncErrorSub; - static bool _connected = false; + static bool _connected = true; set connected(bool connected) { if (mounted) { diff --git a/lib/components/content_banner.dart b/lib/components/content_banner.dart index 4342534..40eefde 100644 --- a/lib/components/content_banner.dart +++ b/lib/components/content_banner.dart @@ -1,7 +1,7 @@ import 'package:famedlysdk/famedlysdk.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_advanced_networkimage/provider.dart'; +import 'package:cached_network_image/cached_network_image.dart'; import 'matrix.dart'; @@ -48,13 +48,10 @@ class ContentBanner extends StatelessWidget { opacity: 0.75, child: !loading ? mxContent != null - ? Image( + ? CachedNetworkImage( + imageUrl: src, height: 300, fit: BoxFit.cover, - image: AdvancedNetworkImage( - src, - useDiskCache: !kIsWeb, - ), ) : Icon(defaultIcon, size: 300) : Icon(defaultIcon, size: 300), diff --git a/lib/components/dialogs/presence_dialog.dart b/lib/components/dialogs/presence_dialog.dart deleted file mode 100644 index c5398d1..0000000 --- a/lib/components/dialogs/presence_dialog.dart +++ /dev/null @@ -1,63 +0,0 @@ -import 'package:famedlysdk/famedlysdk.dart'; -import 'package:fluffychat/l10n/l10n.dart'; -import 'package:fluffychat/utils/app_route.dart'; -import 'package:fluffychat/views/chat.dart'; -import 'package:flutter/material.dart'; -import 'package:fluffychat/utils/presence_extension.dart'; - -import '../avatar.dart'; -import '../matrix.dart'; - -class PresenceDialog extends StatelessWidget { - final Uri avatarUrl; - final String displayname; - final Presence presence; - - const PresenceDialog( - this.presence, { - this.avatarUrl, - this.displayname, - Key key, - }) : super(key: key); - - @override - Widget build(BuildContext context) { - return AlertDialog( - title: ListTile( - contentPadding: EdgeInsets.zero, - leading: Avatar(avatarUrl, displayname), - title: Text(displayname), - subtitle: Text(presence.senderId), - ), - content: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text(presence.getLocalizedStatusMessage(context)), - ], - ), - actions: [ - if (presence.senderId != Matrix.of(context).client.userID) - FlatButton( - child: Text(L10n.of(context).sendAMessage), - onPressed: () async { - final roomId = await User( - presence.senderId, - room: Room(id: '', client: Matrix.of(context).client), - ).startDirectChat(); - await Navigator.of(context).pushAndRemoveUntil( - AppRoute.defaultRoute( - context, - ChatView(roomId), - ), - (Route r) => r.isFirst); - }, - ), - FlatButton( - child: Text(L10n.of(context).close), - onPressed: () => Navigator.of(context).pop(), - ), - ], - ); - } -} diff --git a/lib/components/dialogs/recording_dialog.dart b/lib/components/dialogs/recording_dialog.dart index e79861f..80d879e 100644 --- a/lib/components/dialogs/recording_dialog.dart +++ b/lib/components/dialogs/recording_dialog.dart @@ -1,7 +1,7 @@ import 'dart:async'; -import 'package:fluffychat/l10n/l10n.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:flutter_sound/flutter_sound.dart'; import 'package:intl/intl.dart'; diff --git a/lib/components/dialogs/send_file_dialog.dart b/lib/components/dialogs/send_file_dialog.dart new file mode 100644 index 0000000..74aa87c --- /dev/null +++ b/lib/components/dialogs/send_file_dialog.dart @@ -0,0 +1,134 @@ +import 'dart:typed_data'; +import 'dart:ui'; + +import 'package:famedlysdk/famedlysdk.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:native_imaging/native_imaging.dart' as native; + +import '../../components/dialogs/simple_dialogs.dart'; +import '../../utils/matrix_file_extension.dart'; +import '../../utils/room_send_file_extension.dart'; + +class SendFileDialog extends StatefulWidget { + final Room room; + final MatrixFile file; + + const SendFileDialog({this.room, this.file, Key key}) : super(key: key); + + @override + _SendFileDialogState createState() => _SendFileDialogState(); +} + +class _SendFileDialogState extends State { + bool origImage = false; + + Future _send() async { + var file = widget.file; + if (file is MatrixImageFile && !origImage) { + final imgFile = file as MatrixImageFile; + // resize to max 1600 x 1600 + try { + await native.init(); + var nativeImg = native.Image(); + try { + await nativeImg.loadEncoded(imgFile.bytes); + imgFile.width = nativeImg.width(); + imgFile.height = nativeImg.height(); + } on UnsupportedError { + final dartCodec = await instantiateImageCodec(imgFile.bytes); + final dartFrame = await dartCodec.getNextFrame(); + imgFile.width = dartFrame.image.width; + imgFile.height = dartFrame.image.height; + final rgbaData = await dartFrame.image.toByteData(); + final rgba = Uint8List.view( + rgbaData.buffer, rgbaData.offsetInBytes, rgbaData.lengthInBytes); + dartFrame.image.dispose(); + dartCodec.dispose(); + nativeImg.loadRGBA(imgFile.width, imgFile.height, rgba); + } + + const max = 1600; + if (imgFile.width > max || imgFile.height > max) { + var w = max, h = max; + if (imgFile.width > imgFile.height) { + h = max * imgFile.height ~/ imgFile.width; + } else { + w = max * imgFile.width ~/ imgFile.height; + } + + final scaledImg = nativeImg.resample(w, h, native.Transform.lanczos); + nativeImg.free(); + nativeImg = scaledImg; + } + final jpegBytes = await nativeImg.toJpeg(75); + file = MatrixImageFile( + bytes: jpegBytes, + name: 'scaled_' + imgFile.name.split('.').first + '.jpg'); + nativeImg.free(); + } catch (e) { + // couldn't resize + } + } + await widget.room.sendFileEventWithThumbnail(file); + } + + @override + Widget build(BuildContext context) { + var sendStr = L10n.of(context).sendFile; + if (widget.file is MatrixImageFile) { + sendStr = L10n.of(context).sendImage; + } else if (widget.file is MatrixAudioFile) { + sendStr = L10n.of(context).sendAudio; + } else if (widget.file is MatrixVideoFile) { + sendStr = L10n.of(context).sendVideo; + } + Widget contentWidget; + if (widget.file is MatrixImageFile) { + contentWidget = Column(mainAxisSize: MainAxisSize.min, children: [ + Flexible( + child: Image.memory( + widget.file.bytes, + fit: BoxFit.contain, + ), + ), + Text(widget.file.name), + Row( + children: [ + Checkbox( + value: origImage, + onChanged: (v) => setState(() => origImage = v), + ), + InkWell( + onTap: () => setState(() => origImage = !origImage), + child: Text(L10n.of(context).sendOriginal + + ' (${widget.file.sizeString})'), + ), + ], + ) + ]); + } else { + contentWidget = Text('${widget.file.name} (${widget.file.sizeString})'); + } + return AlertDialog( + title: Text(sendStr), + content: contentWidget, + actions: [ + FlatButton( + child: Text(L10n.of(context).cancel), + onPressed: () { + // just close the dialog + Navigator.of(context).pop(); + }, + ), + FlatButton( + child: Text(L10n.of(context).send), + onPressed: () async { + await SimpleDialogs(context).tryRequestWithLoadingDialog(_send()); + await Navigator.of(context).pop(); + }, + ), + ], + ); + } +} diff --git a/lib/components/dialogs/simple_dialogs.dart b/lib/components/dialogs/simple_dialogs.dart index 01be2e9..ffeca4f 100644 --- a/lib/components/dialogs/simple_dialogs.dart +++ b/lib/components/dialogs/simple_dialogs.dart @@ -1,7 +1,8 @@ -import 'package:fluffychat/l10n/l10n.dart'; -import 'package:flutter/material.dart'; -import 'package:famedlysdk/famedlysdk.dart'; import 'package:bot_toast/bot_toast.dart'; +import 'package:famedlysdk/famedlysdk.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:matrix_link_text/link_text.dart'; class SimpleDialogs { final BuildContext context; @@ -78,13 +79,14 @@ class SimpleDialogs { String contentText, String confirmText, String cancelText, + bool dangerous = false, }) async { var confirmed = false; await showDialog( context: context, builder: (c) => AlertDialog( title: Text(titleText ?? L10n.of(context).areYouSure), - content: contentText != null ? Text(contentText) : null, + content: contentText != null ? LinkText(text: contentText) : null, actions: [ FlatButton( child: Text( @@ -97,6 +99,7 @@ class SimpleDialogs { child: Text( confirmText?.toUpperCase() ?? L10n.of(context).confirm.toUpperCase(), + style: TextStyle(color: dangerous ? Colors.red : null), ), onPressed: () { confirmed = true; @@ -135,11 +138,26 @@ class SimpleDialogs { Future tryRequestWithLoadingDialog(Future request, {Function(MatrixException) onAdditionalAuth}) async { - showLoadingDialog(context); - final dynamic = await tryRequestWithErrorToast(request, - onAdditionalAuth: onAdditionalAuth); - Navigator.of(context)?.pop(); - return dynamic; + var completed = false; + final futureResult = tryRequestWithErrorToast( + request, + onAdditionalAuth: onAdditionalAuth, + ).whenComplete(() => completed = true); + await Future.delayed(Duration(seconds: 1)); + if (completed) return futureResult; + return showDialog( + context: context, + barrierDismissible: false, + builder: (BuildContext context) { + futureResult.then( + (result) => Navigator.of(context).pop(result), + ); + return AlertDialog( + title: Text(L10n.of(context).loadingPleaseWait), + content: LinearProgressIndicator(), + ); + }, + ); } Future tryRequestWithErrorToast(Future request, @@ -164,18 +182,8 @@ class SimpleDialogs { context: context, barrierDismissible: false, builder: (BuildContext context) => AlertDialog( - content: Row( - children: [ - CircularProgressIndicator(), - SizedBox(width: 16), - Expanded( - child: Text( - L10n.of(context).loadingPleaseWait, - overflow: TextOverflow.ellipsis, - maxLines: 1, - )), - ], - ), + title: Text(L10n.of(context).loadingPleaseWait), + content: LinearProgressIndicator(), ), ); } diff --git a/lib/components/encryption_button.dart b/lib/components/encryption_button.dart index e152a3c..acd7cb9 100644 --- a/lib/components/encryption_button.dart +++ b/lib/components/encryption_button.dart @@ -1,11 +1,11 @@ import 'dart:async'; +import 'package:bot_toast/bot_toast.dart'; import 'package:famedlysdk/famedlysdk.dart'; -import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/utils/app_route.dart'; import 'package:fluffychat/views/chat_encryption_settings.dart'; import 'package:flutter/material.dart'; -import 'package:bot_toast/bot_toast.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'dialogs/simple_dialogs.dart'; import 'matrix.dart'; diff --git a/lib/components/html_message.dart b/lib/components/html_message.dart index 2008ee0..df508a4 100644 --- a/lib/components/html_message.dart +++ b/lib/components/html_message.dart @@ -1,7 +1,7 @@ import 'package:famedlysdk/famedlysdk.dart'; import 'package:flutter_matrix_html/flutter_html.dart'; import 'package:flutter/material.dart'; -import 'package:url_launcher/url_launcher.dart'; +import '../utils/url_launcher.dart'; import 'matrix.dart'; @@ -11,13 +11,15 @@ class HtmlMessage extends StatelessWidget { final Room room; final TextStyle defaultTextStyle; final TextStyle linkStyle; + final double emoteSize; const HtmlMessage( {this.html, this.maxLines, this.room, this.defaultTextStyle, - this.linkStyle}); + this.linkStyle, + this.emoteSize}); @override Widget build(BuildContext context) { @@ -35,6 +37,7 @@ class HtmlMessage extends StatelessWidget { return Html( data: renderHtml, defaultTextStyle: defaultTextStyle, + emoteSize: emoteSize, linkStyle: linkStyle ?? themeData.textTheme.bodyText2.copyWith( color: themeData.accentColor, @@ -42,12 +45,8 @@ class HtmlMessage extends StatelessWidget { ), shrinkToFit: true, maxLines: maxLines, - onLinkTap: (String url) { - if (url == null || url.isEmpty) { - return; - } - launch(url); - }, + onLinkTap: (url) => UrlLauncher(context, url).launchUrl(), + onPillTap: (url) => UrlLauncher(context, url).launchUrl(), getMxcUrl: (String mxc, double width, double height) { final ratio = MediaQuery.of(context).devicePixelRatio; return Uri.parse(mxc)?.getThumbnail( diff --git a/lib/components/image_bubble.dart b/lib/components/image_bubble.dart index a7e980d..92ce418 100644 --- a/lib/components/image_bubble.dart +++ b/lib/components/image_bubble.dart @@ -1,8 +1,10 @@ -import 'package:bubble/bubble.dart'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/utils/app_route.dart'; import 'package:fluffychat/views/image_view.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter_blurhash/flutter_blurhash.dart'; +import 'package:cached_network_image/cached_network_image.dart'; class ImageBubble extends StatefulWidget { final Event event; @@ -11,6 +13,7 @@ class ImageBubble extends StatefulWidget { final bool maxSize; final Color backgroundColor; final double radius; + final bool thumbnailOnly; const ImageBubble( this.event, { @@ -19,6 +22,7 @@ class ImageBubble extends StatefulWidget { this.backgroundColor, this.fit = BoxFit.cover, this.radius = 10.0, + this.thumbnailOnly = true, Key key, }) : super(key: key); @@ -27,27 +31,47 @@ class ImageBubble extends StatefulWidget { } class _ImageBubbleState extends State { + bool get isUnencrypted => widget.event.content['url'] is String; + static final Map _matrixFileMap = {}; MatrixFile get _file => _matrixFileMap[widget.event.eventId]; set _file(MatrixFile file) { - _matrixFileMap[widget.event.eventId] = file; + if (file != null) { + _matrixFileMap[widget.event.eventId] = file; + } + } + + static final Map _matrixThumbnailMap = {}; + MatrixFile get _thumbnail => _matrixThumbnailMap[widget.event.eventId]; + set _thumbnail(MatrixFile thumbnail) { + if (thumbnail != null) { + _matrixThumbnailMap[widget.event.eventId] = thumbnail; + } } dynamic _error; + bool _requestedFile = false; Future _getFile() async { + _requestedFile = true; + if (widget.thumbnailOnly) return null; if (_file != null) return _file; + return widget.event.downloadAndDecryptAttachment(); + } + + bool _requestedThumbnail = false; + Future _getThumbnail() async { + _requestedThumbnail = true; + if (isUnencrypted) return null; + if (_thumbnail != null) return _thumbnail; return widget.event .downloadAndDecryptAttachment(getThumbnail: widget.event.hasThumbnail); } @override Widget build(BuildContext context) { - return Bubble( - padding: BubbleEdges.all(0), - radius: Radius.circular(widget.radius), - color: widget.backgroundColor ?? Theme.of(context).secondaryHeaderColor, - elevation: 0, + return ClipRRect( + borderRadius: BorderRadius.circular(widget.radius), child: Container( height: widget.maxSize ? 300 : null, width: widget.maxSize ? 400 : null, @@ -60,32 +84,68 @@ class _ImageBubbleState extends State { ), ); } - if (_file != null) { - return InkWell( - onTap: () { - if (!widget.tapToView) return; - Navigator.of(context).push( - AppRoute( - ImageView(widget.event), - ), - ); - }, - child: Hero( - tag: widget.event.eventId, - child: Image.memory( - _file.bytes, - fit: widget.fit, - ), - ), - ); + if (_thumbnail == null && !_requestedThumbnail && !isUnencrypted) { + _getThumbnail().then((MatrixFile thumbnail) { + setState(() => _thumbnail = thumbnail); + }, onError: (error, stacktrace) { + setState(() => _error = error); + }); } - _getFile().then((MatrixFile file) { - setState(() => _file = file); - }, onError: (error, stacktrace) { - setState(() => _error = error); - }); - return Center( - child: CircularProgressIndicator(), + if (_file == null && !widget.thumbnailOnly && !_requestedFile) { + _getFile().then((MatrixFile file) { + setState(() => _file = file); + }, onError: (error, stacktrace) { + setState(() => _error = error); + }); + } + final display = _file ?? _thumbnail; + + final generatePlaceholderWidget = () => Stack( + children: [ + if (widget.event.content['info'] is Map && + widget.event.content['info']['xyz.amorgan.blurhash'] + is String) + BlurHash( + hash: widget.event.content['info'] + ['xyz.amorgan.blurhash']), + Center( + child: CircularProgressIndicator(), + ), + ], + ); + + Widget renderWidget; + if (display != null) { + renderWidget = Image.memory( + display.bytes, + fit: widget.fit, + ); + } else if (isUnencrypted) { + renderWidget = CachedNetworkImage( + imageUrl: Uri.parse(widget.event.content['url']).getThumbnail( + widget.event.room.client, + width: 800, + height: 800, + method: ThumbnailMethod.scale), + placeholder: (context, url) => generatePlaceholderWidget(), + fit: widget.fit, + ); + } else { + renderWidget = generatePlaceholderWidget(); + } + return InkWell( + onTap: () { + if (!widget.tapToView) return; + Navigator.of(context).push( + AppRoute( + ImageView(widget.event), + ), + ); + }, + child: Hero( + tag: widget.event.eventId, + child: renderWidget, + ), ); }, ), diff --git a/lib/components/input_bar.dart b/lib/components/input_bar.dart index dfb4b22..3daebaa 100644 --- a/lib/components/input_bar.dart +++ b/lib/components/input_bar.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/foundation.dart'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:flutter_typeahead/flutter_typeahead.dart'; -import 'package:flutter_advanced_networkimage/provider.dart'; +import 'package:cached_network_image/cached_network_image.dart'; import 'avatar.dart'; class InputBar extends StatelessWidget { @@ -146,8 +146,8 @@ class InputBar extends StatelessWidget { child: Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ - Image( - image: AdvancedNetworkImage(url, useDiskCache: !kIsWeb), + CachedNetworkImage( + imageUrl: url, width: size, height: size, ), @@ -237,22 +237,10 @@ class InputBar extends StatelessWidget { } if (insertText.isNotEmpty && startText.isNotEmpty) { controller.text = startText + afterText; - if (startText == insertText) { - // stupid fix for now - FocusScope.of(context).requestFocus(FocusNode()); - Future.delayed(Duration(milliseconds: 1)).then((res) { - focusNode.requestFocus(); - controller.selection = TextSelection( - baseOffset: startText.length, - extentOffset: startText.length, - ); - }); - } else { - controller.selection = TextSelection( - baseOffset: startText.length, - extentOffset: startText.length, - ); - } + controller.selection = TextSelection( + baseOffset: startText.length, + extentOffset: startText.length, + ); } } diff --git a/lib/components/list_items/chat_list_item.dart b/lib/components/list_items/chat_list_item.dart index 7d54815..f42f9ba 100644 --- a/lib/components/list_items/chat_list_item.dart +++ b/lib/components/list_items/chat_list_item.dart @@ -1,27 +1,37 @@ +import 'package:bot_toast/bot_toast.dart'; import 'package:famedlysdk/famedlysdk.dart'; +import 'package:fluffychat/utils/matrix_locals.dart'; import 'package:fluffychat/views/chat.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_slidable/flutter_slidable.dart'; -import 'package:bot_toast/bot_toast.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:pedantic/pedantic.dart'; -import '../../l10n/l10n.dart'; import '../../utils/app_route.dart'; import '../../utils/date_time_extension.dart'; import '../../views/chat.dart'; -import '../theme_switcher.dart'; import '../avatar.dart'; +import '../dialogs/send_file_dialog.dart'; import '../dialogs/simple_dialogs.dart'; import '../matrix.dart'; +import '../theme_switcher.dart'; class ChatListItem extends StatelessWidget { final Room room; final bool activeChat; + final bool selected; final Function onForget; + final Function onTap; + final Function onLongPress; - const ChatListItem(this.room, {this.activeChat = false, this.onForget}); + const ChatListItem(this.room, + {this.activeChat = false, + this.selected = false, + this.onTap, + this.onLongPress, + this.onForget}); void clickAction(BuildContext context) async { + if (onTap != null) return onTap(); if (!activeChat) { if (room.membership == Membership.invite && await SimpleDialogs(context) @@ -73,11 +83,12 @@ class ChatListItem extends StatelessWidget { if (Matrix.of(context).shareContent != null) { if (Matrix.of(context).shareContent['msgtype'] == 'chat.fluffy.shared_file') { - await SimpleDialogs(context).tryRequestWithErrorToast( - room.sendFileEvent( - Matrix.of(context).shareContent['file'], - ), - ); + await showDialog( + context: context, + builder: (context) => SendFileDialog( + file: Matrix.of(context).shareContent['file'], + room: room, + )); } else { unawaited(room.sendEvent(Matrix.of(context).shareContent)); } @@ -92,7 +103,7 @@ class ChatListItem extends StatelessWidget { } } - Future archiveAction(BuildContext context) async { + Future archiveAction(BuildContext context) async { { if ([Membership.leave, Membership.ban].contains(room.membership)) { final success = await SimpleDialogs(context) @@ -103,70 +114,59 @@ class ChatListItem extends StatelessWidget { return success; } final confirmed = await SimpleDialogs(context).askConfirmation(); - if (!confirmed) { - return false; - } - final success = await SimpleDialogs(context) - .tryRequestWithLoadingDialog(room.leave()); - if (success == false) { - return false; - } - return true; + if (!confirmed) return; + await SimpleDialogs(context).tryRequestWithLoadingDialog(room.leave()); + return; } } @override Widget build(BuildContext context) { - return Slidable( - key: Key(room.id), - secondaryActions: [ - if ([Membership.join, Membership.invite].contains(room.membership)) - IconSlideAction( - caption: L10n.of(context).leave, - color: Colors.red, - icon: Icons.archive, - onTap: () => archiveAction(context), - ), - if ([Membership.leave, Membership.ban].contains(room.membership)) - IconSlideAction( - caption: L10n.of(context).delete, - color: Colors.red, - icon: Icons.delete_forever, - onTap: () => archiveAction(context), - ), - ], - actionPane: SlidableDrawerActionPane(), - dismissal: SlidableDismissal( - child: SlidableDrawerDismissal(), - onWillDismiss: (actionType) => archiveAction(context), - ), + final isMuted = room.pushRuleState != PushRuleState.notify; + return Center( child: Material( - color: chatListItemColor(context, activeChat), + color: chatListItemColor(context, activeChat, selected), child: ListTile( + onLongPress: onLongPress, leading: Avatar(room.avatar, room.displayname), title: Row( children: [ Expanded( child: Text( - room.getLocalizedDisplayname(L10n.of(context)), + room.getLocalizedDisplayname(MatrixLocals(L10n.of(context))), maxLines: 1, - overflow: TextOverflow.fade, + overflow: TextOverflow.ellipsis, softWrap: false, ), ), - SizedBox(width: 4), - room.pushRuleState == PushRuleState.notify - ? Container() - : Icon( - Icons.notifications_off, - color: Colors.grey[400], - size: 16, - ), - Text( - room.timeCreated.localizedTimeShort(context), - style: TextStyle( - color: Color(0xFF555555), - fontSize: 13, + room.isFavourite + ? Padding( + padding: const EdgeInsets.only(left: 4.0), + child: Icon( + Icons.favorite, + color: Colors.grey[400], + size: 16, + ), + ) + : Container(), + isMuted + ? Padding( + padding: const EdgeInsets.only(left: 4.0), + child: Icon( + Icons.notifications_off, + color: Colors.grey[400], + size: 16, + ), + ) + : Container(), + Padding( + padding: const EdgeInsets.only(left: 4.0), + child: Text( + room.timeCreated.localizedTimeShort(context), + style: TextStyle( + color: Color(0xFF555555), + fontSize: 13, + ), ), ), ], @@ -185,14 +185,15 @@ class ChatListItem extends StatelessWidget { ) : Text( room.lastEvent?.getLocalizedBody( - L10n.of(context), - withSenderNamePrefix: !room.isDirectChat, + MatrixLocals(L10n.of(context)), + withSenderNamePrefix: !room.isDirectChat || + room.lastEvent.senderId == room.client.userID, hideReply: true, ) ?? '', softWrap: false, maxLines: 1, - overflow: TextOverflow.fade, + overflow: TextOverflow.ellipsis, style: TextStyle( decoration: room.lastEvent?.redacted == true ? TextDecoration.lineThrough diff --git a/lib/components/list_items/message.dart b/lib/components/list_items/message.dart index 35e064d..3c85288 100644 --- a/lib/components/list_items/message.dart +++ b/lib/components/list_items/message.dart @@ -1,17 +1,16 @@ -import 'package:bubble/bubble.dart'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; import 'package:fluffychat/components/message_content.dart'; import 'package:fluffychat/components/reply_content.dart'; -import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/utils/date_time_extension.dart'; import 'package:fluffychat/utils/event_extension.dart'; import 'package:fluffychat/utils/string_color.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; -import '../adaptive_page_layout.dart'; import '../avatar.dart'; import '../matrix.dart'; +import '../message_reactions.dart'; import 'state_message.dart'; class Message extends StatelessWidget { @@ -19,6 +18,7 @@ class Message extends StatelessWidget { final Event nextEvent; final Function(Event) onSelect; final Function(Event) onAvatarTab; + final Function(String) scrollToEventId; final bool longPressSelect; final bool selected; final Timeline timeline; @@ -28,6 +28,7 @@ class Message extends StatelessWidget { this.longPressSelect, this.onSelect, this.onAvatarTab, + this.scrollToEventId, this.selected, this.timeline}); @@ -53,9 +54,6 @@ class Message extends StatelessWidget { [EventTypes.Message, EventTypes.Sticker].contains(nextEvent.type) ? nextEvent.sender.id == event.sender.id : false; - var nip = sameSender - ? BubbleNip.no - : ownMessage ? BubbleNip.rightBottom : BubbleNip.leftBottom; var textColor = ownMessage ? Colors.white : Theme.of(context).brightness == Brightness.dark @@ -64,42 +62,44 @@ class Message extends StatelessWidget { var rowMainAxisAlignment = ownMessage ? MainAxisAlignment.end : MainAxisAlignment.start; + final displayEvent = event.getDisplayEvent(timeline); + if (event.showThumbnail) { - color = Theme.of(context).scaffoldBackgroundColor.withOpacity(0.66); + color = Theme.of(context).scaffoldBackgroundColor; textColor = Theme.of(context).textTheme.bodyText2.color; } else if (ownMessage) { - color = event.status == -1 + color = displayEvent.status == -1 ? Colors.redAccent : Theme.of(context).primaryColor; } + final radius = 16.0; + var rowChildren = [ Expanded( - child: Bubble( - elevation: 0, - radius: Radius.circular(8), + child: Container( alignment: alignment, - margin: BubbleEdges.symmetric(horizontal: 4), - color: color, - nip: nip, child: Container( - constraints: - BoxConstraints(maxWidth: AdaptivePageLayout.defaultMinWidth), + margin: const EdgeInsets.symmetric(horizontal: 8), + padding: const EdgeInsets.symmetric(vertical: 6, horizontal: 10), + decoration: BoxDecoration( + color: color, + borderRadius: BorderRadius.circular(radius), + ), child: Stack( children: [ Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - if (event.isReply) + if (event.relationshipType == RelationshipTypes.Reply) FutureBuilder( future: event.getReplyEvent(timeline), builder: (BuildContext context, snapshot) { final replyEvent = snapshot.hasData ? snapshot.data : Event( - eventId: event.content['m.relates_to'] - ['m.in_reply_to']['event_id'], + eventId: event.relationshipEventId, content: {'msgtype': 'm.text', 'body': '...'}, senderId: event.senderId, type: 'm.room.message', @@ -108,20 +108,29 @@ class Message extends StatelessWidget { status: 1, originServerTs: DateTime.now(), ); - return Container( - margin: EdgeInsets.symmetric(vertical: 4.0), - child: - ReplyContent(replyEvent, lightText: ownMessage), + return InkWell( + child: AbsorbPointer( + child: Container( + margin: EdgeInsets.symmetric(vertical: 4.0), + child: ReplyContent(replyEvent, + lightText: ownMessage, timeline: timeline), + ), + ), + onTap: () { + if (scrollToEventId != null) { + scrollToEventId(replyEvent.eventId); + } + }, ); }, ), MessageContent( - event, + displayEvent, textColor: textColor, ), - if (event.type == EventTypes.Encrypted && - event.messageType == MessageTypes.BadEncrypted && - event.content['can_request_session'] == true) + if (displayEvent.type == EventTypes.Encrypted && + displayEvent.messageType == MessageTypes.BadEncrypted && + displayEvent.content['can_request_session'] == true) RaisedButton( color: color.withAlpha(100), child: Text( @@ -129,15 +138,18 @@ class Message extends StatelessWidget { style: TextStyle(color: textColor), ), onPressed: () => SimpleDialogs(context) - .tryRequestWithLoadingDialog(event.requestKey()), + .tryRequestWithLoadingDialog( + displayEvent.requestKey()), ), SizedBox(height: 4), Opacity( opacity: 0, child: _MetaRow( - event, + event, // meta information should be from the unedited event ownMessage, textColor, + timeline, + displayEvent, ), ), ], @@ -150,6 +162,8 @@ class Message extends StatelessWidget { event, ownMessage, textColor, + timeline, + displayEvent, ), ), ], @@ -170,26 +184,45 @@ class Message extends StatelessWidget { } else { rowChildren.insert(0, avatarOrSizedBox); } + final row = Row( + crossAxisAlignment: CrossAxisAlignment.end, + mainAxisAlignment: rowMainAxisAlignment, + children: rowChildren, + ); + Widget container; + if (event.hasAggregatedEvents(timeline, RelationshipTypes.Reaction)) { + container = Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: + ownMessage ? CrossAxisAlignment.end : CrossAxisAlignment.start, + children: [ + row, + Padding( + padding: EdgeInsets.only( + top: 4.0, + left: (ownMessage ? 0 : Avatar.defaultSize) + 12.0, + right: (ownMessage ? Avatar.defaultSize : 0) + 12.0, + ), + child: MessageReactions(event, timeline), + ), + ], + ); + } else { + container = row; + } return InkWell( onHover: (b) => useMouse = true, onTap: !useMouse && longPressSelect ? () => null : () => onSelect(event), splashColor: Theme.of(context).primaryColor.withAlpha(100), onLongPress: !longPressSelect ? null : () => onSelect(event), - child: AnimatedContainer( - duration: Duration(milliseconds: 300), - curve: Curves.fastOutSlowIn, + child: Container( color: selected ? Theme.of(context).primaryColor.withAlpha(100) : Theme.of(context).primaryColor.withAlpha(0), child: Padding( - padding: EdgeInsets.only( - left: 8.0, right: 8.0, bottom: sameSender ? 4.0 : 8.0), - child: Row( - crossAxisAlignment: CrossAxisAlignment.end, - mainAxisAlignment: rowMainAxisAlignment, - children: rowChildren, - ), + padding: EdgeInsets.only(left: 8.0, right: 8.0, bottom: 8.0), + child: container, ), ), ); @@ -200,8 +233,12 @@ class _MetaRow extends StatelessWidget { final Event event; final bool ownMessage; final Color color; + final Timeline timeline; + final Event displayEvent; - const _MetaRow(this.event, this.ownMessage, this.color, {Key key}) + const _MetaRow( + this.event, this.ownMessage, this.color, this.timeline, this.displayEvent, + {Key key}) : super(key: key); @override @@ -218,21 +255,30 @@ class _MetaRow extends StatelessWidget { style: TextStyle( fontSize: 11, fontWeight: FontWeight.bold, - color: displayname.color, + color: displayname.color.withAlpha(200), ), ), if (showDisplayname) SizedBox(width: 4), Text( event.originServerTs.localizedTime(context), style: TextStyle( - color: color, + color: color.withAlpha(200), fontSize: 11, ), ), + if (event.hasAggregatedEvents(timeline, RelationshipTypes.Edit)) + Padding( + padding: const EdgeInsets.only(left: 2.0), + child: Icon( + Icons.edit, + size: 12, + color: color, + ), + ), if (ownMessage) SizedBox(width: 2), if (ownMessage) Icon( - event.statusIcon, + displayEvent.statusIcon, size: 12, color: color, ), diff --git a/lib/components/list_items/participant_list_item.dart b/lib/components/list_items/participant_list_item.dart index 6ce9023..5258f2c 100644 --- a/lib/components/list_items/participant_list_item.dart +++ b/lib/components/list_items/participant_list_item.dart @@ -1,9 +1,9 @@ import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; -import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/utils/app_route.dart'; import 'package:fluffychat/views/chat.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import '../avatar.dart'; import '../matrix.dart'; @@ -71,7 +71,9 @@ class ParticipantListItem extends StatelessWidget { }; final permissionBatch = user.powerLevel == 100 ? L10n.of(context).admin - : user.powerLevel >= 50 ? L10n.of(context).moderator : ''; + : user.powerLevel >= 50 + ? L10n.of(context).moderator + : ''; var items = >[]; if (user.id != Matrix.of(context).client.userID) { diff --git a/lib/components/list_items/presence_list_item.dart b/lib/components/list_items/presence_list_item.dart deleted file mode 100644 index d694036..0000000 --- a/lib/components/list_items/presence_list_item.dart +++ /dev/null @@ -1,83 +0,0 @@ -import 'package:famedlysdk/famedlysdk.dart'; -import 'package:fluffychat/components/dialogs/presence_dialog.dart'; -import 'package:fluffychat/utils/app_route.dart'; -import 'package:fluffychat/views/chat.dart'; -import 'package:flutter/material.dart'; -import '../avatar.dart'; -import '../matrix.dart'; - -class PresenceListItem extends StatelessWidget { - final Room room; - - const PresenceListItem(this.room); - - void _startChatAction(BuildContext context, String userId) async { - final roomId = await User(userId, - room: Room(client: Matrix.of(context).client, id: '')) - .startDirectChat(); - await Navigator.of(context).pushAndRemoveUntil( - AppRoute.defaultRoute( - context, - ChatView(roomId), - ), - (Route r) => r.isFirst); - } - - @override - Widget build(BuildContext context) { - final user = room.getUserByMXIDSync(room.directChatMatrixID); - final presence = - Matrix.of(context).client.presences[room.directChatMatrixID]; - return InkWell( - onTap: () => presence?.presence?.statusMsg == null - ? _startChatAction(context, user.id) - : showDialog( - context: context, - builder: (_) => PresenceDialog( - presence, - avatarUrl: user.avatarUrl, - displayname: user.calcDisplayname(), - ), - ), - child: Container( - width: 80, - child: Column( - children: [ - SizedBox(height: 16), - Container( - child: Avatar(user.avatarUrl, user.calcDisplayname()), - decoration: BoxDecoration( - border: Border.all( - width: 1, - color: presence?.presence?.statusMsg == null - ? presence?.presence?.currentlyActive == true - ? Colors.blue - : Theme.of(context).secondaryHeaderColor - : Theme.of(context).primaryColor, - ), - borderRadius: BorderRadius.circular(80), - ), - padding: EdgeInsets.all(2), - ), - Padding( - padding: const EdgeInsets.only(left: 6.0, top: 0.0, right: 6.0), - child: Text( - user.calcDisplayname().trim().split(' ').first, - overflow: TextOverflow.clip, - maxLines: 1, - style: TextStyle( - color: Theme.of(context) - .textTheme - .bodyText2 - .color - .withOpacity(0.66), - fontSize: 13, - ), - ), - ), - ], - ), - ), - ); - } -} diff --git a/lib/components/list_items/public_room_list_item.dart b/lib/components/list_items/public_room_list_item.dart index eff6dd3..82f4495 100644 --- a/lib/components/list_items/public_room_list_item.dart +++ b/lib/components/list_items/public_room_list_item.dart @@ -2,8 +2,8 @@ import 'package:famedlysdk/famedlysdk.dart'; import 'package:famedlysdk/matrix_api.dart'; import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; -import '../../l10n/l10n.dart'; import '../../utils/app_route.dart'; import '../../views/chat.dart'; import '../avatar.dart'; @@ -28,10 +28,8 @@ class PublicRoomListItem extends StatelessWidget { } Future _joinRoomAndWait(BuildContext context) async { - final roomId = await Matrix.of(context) - .client - .api - .joinRoomOrAlias(publicRoomEntry.roomId); + final roomId = + await Matrix.of(context).client.joinRoomOrAlias(publicRoomEntry.roomId); if (Matrix.of(context).client.getRoomById(roomId) == null) { await Matrix.of(context) .client diff --git a/lib/components/list_items/state_message.dart b/lib/components/list_items/state_message.dart index 12d105c..80ab464 100644 --- a/lib/components/list_items/state_message.dart +++ b/lib/components/list_items/state_message.dart @@ -1,7 +1,7 @@ -import 'package:bubble/bubble.dart'; import 'package:famedlysdk/famedlysdk.dart'; -import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/matrix_locals.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; class StateMessage extends StatelessWidget { final Event event; @@ -16,16 +16,20 @@ class StateMessage extends StatelessWidget { right: 8.0, bottom: 8.0, ), - child: Bubble( - elevation: 0, - color: Theme.of(context).backgroundColor.withOpacity(0.66), - alignment: Alignment.center, - child: Text( - event.getLocalizedBody(L10n.of(context)), - textAlign: TextAlign.center, - style: TextStyle( - color: Theme.of(context).textTheme.bodyText2.color, - decoration: event.redacted ? TextDecoration.lineThrough : null, + child: Center( + child: Container( + padding: const EdgeInsets.all(4), + decoration: BoxDecoration( + color: Theme.of(context).backgroundColor.withOpacity(0.8), + borderRadius: BorderRadius.circular(7), + ), + child: Text( + event.getLocalizedBody(MatrixLocals(L10n.of(context))), + textAlign: TextAlign.center, + style: TextStyle( + color: Theme.of(context).textTheme.bodyText2.color, + decoration: event.redacted ? TextDecoration.lineThrough : null, + ), ), ), ), diff --git a/lib/components/list_items/status_list_item.dart b/lib/components/list_items/status_list_item.dart new file mode 100644 index 0000000..7ed9680 --- /dev/null +++ b/lib/components/list_items/status_list_item.dart @@ -0,0 +1,83 @@ +import 'package:famedlysdk/famedlysdk.dart'; +import 'package:fluffychat/utils/user_status.dart'; +import 'package:fluffychat/views/status_view.dart'; +import 'package:flutter/material.dart'; +import '../avatar.dart'; +import '../matrix.dart'; + +class StatusListItem extends StatelessWidget { + final UserStatus status; + + const StatusListItem(this.status, {Key key}) : super(key: key); + + @override + Widget build(BuildContext context) { + final client = Matrix.of(context).client; + return FutureBuilder( + future: client.getProfileFromUserId(status.userId), + builder: (context, snapshot) { + final profile = + snapshot.data ?? Profile(client.userID, Uri.parse('')); + return InkWell( + borderRadius: BorderRadius.circular(8), + onTap: () => Navigator.of(context).push( + MaterialPageRoute( + builder: (_) => StatusView( + status: status, + avatarUrl: profile.avatarUrl, + displayname: profile.displayname, + ), + ), + ), + child: Container( + width: 76, + child: Column( + children: [ + SizedBox(height: 10), + Container( + child: Stack( + children: [ + Avatar(profile.avatarUrl, profile.displayname), + Positioned( + bottom: 0, + right: 0, + child: Container( + width: 10, + height: 10, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(20), + color: Colors.green, + ), + ), + ), + ], + ), + decoration: BoxDecoration( + border: Border.all( + width: 1, + color: Theme.of(context).primaryColor, + ), + borderRadius: BorderRadius.circular(80), + ), + padding: EdgeInsets.all(2), + ), + Padding( + padding: + const EdgeInsets.only(left: 6.0, top: 0.0, right: 6.0), + child: Text( + profile.displayname.trim().split(' ').first, + overflow: TextOverflow.clip, + maxLines: 1, + style: TextStyle( + color: Theme.of(context).textTheme.bodyText2.color, + fontSize: 13, + ), + ), + ), + ], + ), + ), + ); + }); + } +} diff --git a/lib/components/matrix.dart b/lib/components/matrix.dart index bb0886a..2306404 100644 --- a/lib/components/matrix.dart +++ b/lib/components/matrix.dart @@ -1,25 +1,30 @@ import 'dart:async'; +import 'dart:convert'; import 'dart:io'; -import 'package:famedlysdk/famedlysdk.dart'; import 'package:famedlysdk/encryption.dart'; +import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; import 'package:fluffychat/utils/firebase_controller.dart'; +import 'package:fluffychat/utils/matrix_locals.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/utils/user_status.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:localstorage/localstorage.dart'; -import 'package:url_launcher/url_launcher.dart'; import 'package:universal_html/prefer_universal/html.dart' as html; -import '../l10n/l10n.dart'; +import 'package:url_launcher/url_launcher.dart'; + +import '../utils/app_route.dart'; import '../utils/beautify_string_extension.dart'; import '../utils/famedlysdk_store.dart'; -import 'avatar.dart'; +import '../utils/presence_extension.dart'; import '../views/key_verification.dart'; -import '../utils/app_route.dart'; +import 'avatar.dart'; class Matrix extends StatefulWidget { static const String callNamespace = 'chat.fluffy.jitsi_call'; - static const String defaultHomeserver = 'tchncs.de'; final Widget child; @@ -79,7 +84,7 @@ class MatrixState extends State { var initLoginState = client.onLoginStateChanged.stream.first; client.database = await getDatabase(client); client.connect(); - if (await initLoginState == LoginState.logged && !kIsWeb) { + if (await initLoginState == LoginState.logged && PlatformInfos.isMobile) { await FirebaseController.setupFirebase( this, widget.clientName, @@ -102,6 +107,9 @@ class MatrixState extends State { StreamSubscription onKeyVerificationRequestSub; StreamSubscription onJitsiCallSub; StreamSubscription onNotification; + StreamSubscription onFocusSub; + StreamSubscription onBlurSub; + StreamSubscription onPresenceSub; void onJitsiCall(EventUpdate eventUpdate) { final event = Event.fromJson( @@ -158,12 +166,15 @@ class MatrixState extends State { return; } + bool webHasFocus = true; + void _showWebNotification(EventUpdate eventUpdate) async { + if (webHasFocus && activeRoomId == eventUpdate.roomID) return; final room = client.getRoomById(eventUpdate.roomID); if (room.notificationCount == 0) return; final event = Event.fromJson(eventUpdate.content, room); final body = event.getLocalizedBody( - L10n.of(context), + MatrixLocals(L10n.of(context)), withSenderNamePrefix: !room.isDirectChat || room.lastEvent.senderId == client.userID, ); @@ -172,7 +183,7 @@ class MatrixState extends State { ..autoplay = true ..load(); html.Notification( - room.getLocalizedDisplayname(L10n.of(context)), + room.getLocalizedDisplayname(MatrixLocals(L10n.of(context))), body: body, icon: event.sender.avatarUrl?.getThumbnail(client, width: 64, height: 64, method: ThumbnailMethod.crop) ?? @@ -184,6 +195,16 @@ class MatrixState extends State { @override void initState() { store = widget.store ?? Store(); + store.getItem('fluffychat.user_statuses').then( + (json) { + userStatuses = json == null + ? [] + : (jsonDecode(json)['user_statuses'] as List) + .map((j) => UserStatus.fromJson(j)) + .toList(); + _cleanUpUserStatus(); + }, + ); if (widget.client == null) { debugPrint('[Matrix] Init matrix client'); final Set verificationMethods = { @@ -194,12 +215,14 @@ class MatrixState extends State { verificationMethods.add(KeyVerificationMethod.emoji); } client = Client(widget.clientName, - debug: false, enableE2eeRecovery: true, verificationMethods: verificationMethods, importantStateEvents: { 'im.ponies.room_emotes', // we want emotes to work properly }); + onPresenceSub ??= client.onPresence.stream + .where((p) => p.isUserStatus) + .listen(_storeUserStatus); onJitsiCallSub ??= client.onEvent.stream .where((e) => e.type == 'timeline' && @@ -207,6 +230,7 @@ class MatrixState extends State { e.content['content']['msgtype'] == Matrix.callNamespace && e.content['sender'] != client.userID) .listen(onJitsiCall); + onRoomKeyRequestSub ??= client.onRoomKeyRequest.stream.listen((RoomKeyRequest request) async { final room = request.room; @@ -262,11 +286,13 @@ class MatrixState extends State { }); } if (kIsWeb) { + onFocusSub = html.window.onFocus.listen((_) => webHasFocus = true); + onBlurSub = html.window.onBlur.listen((_) => webHasFocus = false); + client.onSync.stream.first.then((s) { html.Notification.requestPermission(); onNotification ??= client.onEvent.stream .where((e) => - e.roomID != activeRoomId && e.type == 'timeline' && [EventTypes.Message, EventTypes.Sticker, EventTypes.Encrypted] .contains(e.eventType) && @@ -277,12 +303,57 @@ class MatrixState extends State { super.initState(); } + List userStatuses = []; + + void _storeUserStatus(Presence presence) { + final currentStatusIndex = + userStatuses.indexWhere((u) => u.userId == presence.senderId); + final newUserStatus = UserStatus() + ..receivedAt = DateTime.now().millisecondsSinceEpoch + ..statusMsg = presence.presence.statusMsg + ..userId = presence.senderId; + if (currentStatusIndex == -1) { + userStatuses.add(newUserStatus); + } else if (userStatuses[currentStatusIndex].statusMsg != + presence.presence.statusMsg) { + if (presence.presence.statusMsg.trim().isEmpty) { + userStatuses.removeAt(currentStatusIndex); + } else { + userStatuses[currentStatusIndex] = newUserStatus; + } + } else { + return; + } + _cleanUpUserStatus(); + } + + void _cleanUpUserStatus() { + final now = DateTime.now().millisecondsSinceEpoch; + userStatuses + .removeWhere((u) => (now - u.receivedAt) > (1000 * 60 * 60 * 24)); + userStatuses.sort((a, b) => b.receivedAt.compareTo(a.receivedAt)); + if (userStatuses.length > 40) { + userStatuses.removeRange(40, userStatuses.length); + } + store.setItem( + 'fluffychat.user_statuses', + jsonEncode( + { + 'user_statuses': userStatuses.map((i) => i.toJson()).toList(), + }, + ), + ); + } + @override void dispose() { onRoomKeyRequestSub?.cancel(); onKeyVerificationRequestSub?.cancel(); onJitsiCallSub?.cancel(); + onPresenceSub?.cancel(); onNotification?.cancel(); + onFocusSub?.cancel(); + onBlurSub?.cancel(); super.dispose(); } @@ -303,12 +374,11 @@ class _InheritedMatrix extends InheritedWidget { @override bool updateShouldNotify(_InheritedMatrix old) { - var update = - old.data.client.api.accessToken != data.client.api.accessToken || - old.data.client.userID != data.client.userID || - old.data.client.deviceID != data.client.deviceID || - old.data.client.deviceName != data.client.deviceName || - old.data.client.api.homeserver != data.client.api.homeserver; + var update = old.data.client.accessToken != data.client.accessToken || + old.data.client.userID != data.client.userID || + old.data.client.deviceID != data.client.deviceID || + old.data.client.deviceName != data.client.deviceName || + old.data.client.homeserver != data.client.homeserver; return update; } } diff --git a/lib/components/message_content.dart b/lib/components/message_content.dart index cff9d08..3909a76 100644 --- a/lib/components/message_content.dart +++ b/lib/components/message_content.dart @@ -1,14 +1,17 @@ import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/components/audio_player.dart'; import 'package:fluffychat/components/image_bubble.dart'; -import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/utils/event_extension.dart'; +import 'package:fluffychat/utils/matrix_locals.dart'; import 'package:flutter/material.dart'; -import 'package:link_text/link_text.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:matrix_link_text/link_text.dart'; import 'package:url_launcher/url_launcher.dart'; + +import '../utils/url_launcher.dart'; +import 'html_message.dart'; import 'matrix.dart'; import 'message_download_content.dart'; -import 'html_message.dart'; class MessageContent extends StatelessWidget { final Event event; @@ -40,22 +43,25 @@ class MessageContent extends StatelessWidget { case MessageTypes.Text: case MessageTypes.Notice: case MessageTypes.Emote: - case MessageTypes.Reply: if (Matrix.of(context).renderHtml && !event.redacted && - event.content['format'] == 'org.matrix.custom.html' && - event.content['formatted_body'] is String) { + event.isRichMessage) { String html = event.content['formatted_body']; if (event.messageType == MessageTypes.Emote) { html = '* $html'; } + final bigEmotes = event.onlyEmotes && + event.numberEmotes > 0 && + event.numberEmotes <= 10; + final fontSize = DefaultTextStyle.of(context).style.fontSize; return HtmlMessage( html: html, defaultTextStyle: TextStyle( color: textColor, - fontSize: DefaultTextStyle.of(context).style.fontSize, + fontSize: bigEmotes ? fontSize * 3 : fontSize, ), room: event.room, + emoteSize: bigEmotes ? fontSize * 3 : fontSize * 1.5, ); } // else we fall through to the normal message rendering @@ -78,13 +84,19 @@ class MessageContent extends StatelessWidget { onPressed: () => launch(event.body), ); } + final bigEmotes = event.onlyEmotes && + event.numberEmotes > 0 && + event.numberEmotes <= 10; + final fontSize = DefaultTextStyle.of(context).style.fontSize; return LinkText( - text: event.getLocalizedBody(L10n.of(context), hideReply: true), + text: event.getLocalizedBody(MatrixLocals(L10n.of(context)), + hideReply: true), textStyle: TextStyle( color: textColor, - fontSize: DefaultTextStyle.of(context).style.fontSize, + fontSize: bigEmotes ? fontSize * 3 : fontSize, decoration: event.redacted ? TextDecoration.lineThrough : null, ), + onLinkTap: (url) => UrlLauncher(context, url).launchUrl(), ); } break; diff --git a/lib/components/message_reactions.dart b/lib/components/message_reactions.dart new file mode 100644 index 0000000..2619891 --- /dev/null +++ b/lib/components/message_reactions.dart @@ -0,0 +1,142 @@ +import 'package:famedlysdk/famedlysdk.dart'; +import 'package:flutter/material.dart'; +import 'package:cached_network_image/cached_network_image.dart'; + +import 'dialogs/simple_dialogs.dart'; +import 'matrix.dart'; + +class MessageReactions extends StatelessWidget { + final Event event; + final Timeline timeline; + + const MessageReactions(this.event, this.timeline); + + @override + Widget build(BuildContext context) { + final allReactionEvents = + event.aggregatedEvents(timeline, RelationshipTypes.Reaction); + final reactionMap = {}; + for (final e in allReactionEvents) { + if (e.content['m.relates_to'].containsKey('key')) { + final key = e.content['m.relates_to']['key']; + if (!reactionMap.containsKey(key)) { + reactionMap[key] = _ReactionEntry( + key: key, + count: 0, + reacted: false, + ); + } + reactionMap[key].count++; + 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); + return Wrap( + spacing: 4.0, + runSpacing: 4.0, + children: reactionList + .map((r) => _Reaction( + reactionKey: r.key, + count: r.count, + reacted: r.reacted, + onTap: () { + if (r.reacted) { + final evt = allReactionEvents.firstWhere( + (e) => + e.senderId == e.room.client.userID && + e.content['m.relates_to']['key'] == r.key, + orElse: () => null); + if (evt != null) { + SimpleDialogs(context) + .tryRequestWithLoadingDialog(evt.redact()); + } + } else { + SimpleDialogs(context).tryRequestWithLoadingDialog( + event.room.sendReaction(event.eventId, r.key)); + } + }, + )) + .toList(), + ); + } +} + +class _Reaction extends StatelessWidget { + final String reactionKey; + final int count; + final bool reacted; + final void Function() onTap; + + const _Reaction({this.reactionKey, this.count, this.reacted, this.onTap}); + + @override + Widget build(BuildContext context) { + final borderColor = reacted + ? Theme.of(context).primaryColor + : Theme.of(context).secondaryHeaderColor; + final textColor = Theme.of(context).brightness == Brightness.dark + ? Colors.white + : Colors.black; + final color = Theme.of(context).secondaryHeaderColor; + final fontSize = DefaultTextStyle.of(context).style.fontSize; + final padding = fontSize / 5; + Widget content; + if (reactionKey.startsWith('mxc://')) { + final src = Uri.parse(reactionKey)?.getThumbnail( + Matrix.of(context).client, + width: 9999, + height: fontSize * MediaQuery.of(context).devicePixelRatio, + method: ThumbnailMethod.scale, + ); + content = Row( + mainAxisSize: MainAxisSize.min, + children: [ + CachedNetworkImage( + imageUrl: src, + height: fontSize, + ), + Container(width: 4), + Text(count.toString(), + style: TextStyle( + color: textColor, + fontSize: DefaultTextStyle.of(context).style.fontSize, + )), + ], + ); + } else { + var renderKey = reactionKey; + if (renderKey.length > 10) { + renderKey = renderKey.substring(0, 7) + '...'; + } + content = Text('$renderKey $count', + style: TextStyle( + color: textColor, + fontSize: DefaultTextStyle.of(context).style.fontSize, + )); + } + return InkWell( + child: Container( + decoration: BoxDecoration( + color: color, + border: Border.all( + width: 1, + color: borderColor, + ), + borderRadius: BorderRadius.circular(8), + ), + padding: EdgeInsets.all(padding), + child: content, + ), + onTap: () => onTap != null ? onTap() : null, + ); + } +} + +class _ReactionEntry { + String key; + int count; + bool reacted; + + _ReactionEntry({this.key, this.count, this.reacted}); +} diff --git a/lib/components/reply_content.dart b/lib/components/reply_content.dart index e831d49..1ebc3b0 100644 --- a/lib/components/reply_content.dart +++ b/lib/components/reply_content.dart @@ -1,6 +1,7 @@ import 'package:famedlysdk/famedlysdk.dart'; -import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/matrix_locals.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'html_message.dart'; import 'matrix.dart'; @@ -8,23 +9,29 @@ import 'matrix.dart'; class ReplyContent extends StatelessWidget { final Event replyEvent; final bool lightText; + final Timeline timeline; - const ReplyContent(this.replyEvent, {this.lightText = false, Key key}) + const ReplyContent(this.replyEvent, + {this.lightText = false, Key key, this.timeline}) : super(key: key); @override Widget build(BuildContext context) { Widget replyBody; - if (replyEvent != null && + final displayEvent = replyEvent != null && timeline != null + ? replyEvent.getDisplayEvent(timeline) + : replyEvent; + if (displayEvent != null && Matrix.of(context).renderHtml && - [EventTypes.Message, EventTypes.Encrypted].contains(replyEvent.type) && + [EventTypes.Message, EventTypes.Encrypted] + .contains(displayEvent.type) && [MessageTypes.Text, MessageTypes.Notice, MessageTypes.Emote] - .contains(replyEvent.messageType) && - !replyEvent.redacted && - replyEvent.content['format'] == 'org.matrix.custom.html' && - replyEvent.content['formatted_body'] is String) { - String html = replyEvent.content['formatted_body']; - if (replyEvent.messageType == MessageTypes.Emote) { + .contains(displayEvent.messageType) && + !displayEvent.redacted && + displayEvent.content['format'] == 'org.matrix.custom.html' && + displayEvent.content['formatted_body'] is String) { + String html = displayEvent.content['formatted_body']; + if (displayEvent.messageType == MessageTypes.Emote) { html = '* $html'; } replyBody = HtmlMessage( @@ -36,12 +43,12 @@ class ReplyContent extends StatelessWidget { fontSize: DefaultTextStyle.of(context).style.fontSize, ), maxLines: 1, - room: replyEvent.room, + room: displayEvent.room, ); } else { replyBody = Text( - replyEvent?.getLocalizedBody( - L10n.of(context), + displayEvent?.getLocalizedBody( + MatrixLocals(L10n.of(context)), withSenderNamePrefix: false, hideReply: true, ) ?? @@ -71,7 +78,7 @@ class ReplyContent extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ Text( - (replyEvent?.sender?.calcDisplayname() ?? '') + ':', + (displayEvent?.sender?.calcDisplayname() ?? '') + ':', maxLines: 1, overflow: TextOverflow.ellipsis, style: TextStyle( diff --git a/lib/components/settings_themes.dart b/lib/components/settings_themes.dart index c0832da..6837a43 100644 --- a/lib/components/settings_themes.dart +++ b/lib/components/settings_themes.dart @@ -1,8 +1,8 @@ import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; -import '../components/theme_switcher.dart'; import '../components/matrix.dart'; -import '../l10n/l10n.dart'; +import '../components/theme_switcher.dart'; class ThemesSettings extends StatefulWidget { @override diff --git a/lib/components/theme_switcher.dart b/lib/components/theme_switcher.dart index a86c266..e67441f 100644 --- a/lib/components/theme_switcher.dart +++ b/lib/components/theme_switcher.dart @@ -112,16 +112,20 @@ final ThemeData amoledTheme = ThemeData.dark().copyWith( ), ); -Color chatListItemColor(BuildContext context, bool activeChat) => - Theme.of(context).brightness == Brightness.light - ? activeChat ? Color(0xFFE8E8E8) : Colors.white - : activeChat - ? ThemeSwitcherWidget.of(context).amoledEnabled - ? Color(0xff121212) - : Colors.black - : ThemeSwitcherWidget.of(context).amoledEnabled - ? Colors.black - : Color(0xff121212); +Color chatListItemColor(BuildContext context, bool activeChat, bool selected) => + selected + ? Theme.of(context).primaryColor.withAlpha(50) + : Theme.of(context).brightness == Brightness.light + ? activeChat + ? Color(0xFFE8E8E8) + : Colors.white + : activeChat + ? ThemeSwitcherWidget.of(context).amoledEnabled + ? Color(0xff121212) + : Colors.black + : ThemeSwitcherWidget.of(context).amoledEnabled + ? Colors.black + : Color(0xff121212); Color blackWhiteColor(BuildContext context) => Theme.of(context).brightness == Brightness.light diff --git a/lib/config/app_config.dart b/lib/config/app_config.dart new file mode 100644 index 0000000..8c50c09 --- /dev/null +++ b/lib/config/app_config.dart @@ -0,0 +1,9 @@ +abstract class AppConfig { + static const String applicationName = 'FluffyChat'; + static const String defaultHomeserver = 'matrix.tchncs.de'; + static const String privacyUrl = 'https://fluffychat.im/en/privacy.html'; + static const String sourceCodeUrl = + 'https://gitlab.com/ChristianPauly/fluffychat-flutter'; + static const String supportUrl = + 'https://gitlab.com/ChristianPauly/fluffychat-flutter/issues'; +} 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/l10n/intl_ar.arb b/lib/l10n/intl_ar.arb new file mode 100644 index 0000000..e46adbd --- /dev/null +++ b/lib/l10n/intl_ar.arb @@ -0,0 +1,1706 @@ +{ + "@@locale": "ar", + "@@last_modified": "2020-09-23T11:45:42.519831", + "about": "حول", + "@about": { + "type": "text", + "placeholders": {} + }, + "accept": "أقبل", + "@accept": { + "type": "text", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} قبل الدعوة", + "@acceptedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "account": "حساب", + "@account": { + "type": "text", + "placeholders": {} + }, + "accountInformation": "معلومات الحساب", + "@accountInformation": { + "type": "text", + "placeholders": {} + }, + "activatedEndToEndEncryption": "{username} فعَّل تشفير طرف لطرف", + "@activatedEndToEndEncryption": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "addGroupDescription": "أضف وصف للمجموعة", + "@addGroupDescription": { + "type": "text", + "placeholders": {} + }, + "admin": "المدير", + "@admin": { + "type": "text", + "placeholders": {} + }, + "alias": "اللقب", + "@alias": { + "type": "text", + "placeholders": {} + }, + "alreadyHaveAnAccount": "عندك حساب؟", + "@alreadyHaveAnAccount": { + "type": "text", + "placeholders": {} + }, + "answeredTheCall": "{senderName} أجاب على المكالمة", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "يمكن لأي أحد الدخول", + "@anyoneCanJoin": { + "type": "text", + "placeholders": {} + }, + "archive": "الأرشيف", + "@archive": { + "type": "text", + "placeholders": {} + }, + "archivedRoom": "غرفة مؤرشفة", + "@archivedRoom": { + "type": "text", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "هل يُسمح للزوار الدخول", + "@areGuestsAllowedToJoin": { + "type": "text", + "placeholders": {} + }, + "areYouSure": "متأكد؟", + "@areYouSure": { + "type": "text", + "placeholders": {} + }, + "askSSSSCache": "", + "@askSSSSCache": { + "type": "text", + "placeholders": {} + }, + "askSSSSSign": "", + "@askSSSSSign": { + "type": "text", + "placeholders": {} + }, + "askSSSSVerify": "", + "@askSSSSVerify": { + "type": "text", + "placeholders": {} + }, + "askVerificationRequest": "أتقبل طلب تحقق {username}؟", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "authentication": "الاستيثاق", + "@authentication": { + "type": "text", + "placeholders": {} + }, + "avatarHasBeenChanged": "غُيّرت الصورة الشخصية", + "@avatarHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "banFromChat": "إحظره من المحادثة", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "banned": "محظور", + "@banned": { + "type": "text", + "placeholders": {} + }, + "bannedUser": "{username} حظر {targetName}", + "@bannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "blockDevice": "أُحظر الجهاز", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, + "byDefaultYouWillBeConnectedTo": "{homeserver} هو الخادم الافتراضي", + "@byDefaultYouWillBeConnectedTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "cachedKeys": "", + "@cachedKeys": { + "type": "text", + "placeholders": {} + }, + "cancel": "ألغِ", + "@cancel": { + "type": "text", + "placeholders": {} + }, + "changedTheChatAvatar": "غيَّر {username} صورة المحادثة", + "@changedTheChatAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheChatNameTo": "غيَّر {username} اسم المحادثة الى: '{chatname}'", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, + "changedTheChatDescriptionTo": "غيَّر {username} وصف المحادثة الى: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "text", + "placeholders": { + "username": {}, + "description": {} + } + }, + "changedTheChatPermissions": "غيَّر {username} أذون المحادثة", + "@changedTheChatPermissions": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheDisplaynameTo": "{username} غيّر اسمه الى {displayname}", + "@changedTheDisplaynameTo": { + "type": "text", + "placeholders": { + "username": {}, + "displayname": {} + } + }, + "changeTheHomeserver": "غيّر الخادم", + "@changeTheHomeserver": { + "type": "text", + "placeholders": {} + }, + "changedTheGuestAccessRules": "غيّر {username} قواعد وصول الزوار", + "@changedTheGuestAccessRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheGuestAccessRulesTo": "غيّر {username} قواعد وصول الزوار الى: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheHistoryVisibility": "غيَّر {username} مرئية التأريخ", + "@changedTheHistoryVisibility": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheHistoryVisibilityTo": "غيَّر {username} مرئية التأريخ الى: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheJoinRules": "غيَّر {username} قواعد الانضمام", + "@changedTheJoinRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheJoinRulesTo": "غيَّر {username} قواعد الانضمام الى: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "joinRules": {} + } + }, + "changedTheProfileAvatar": "غيّر {username} صورته الشخصية", + "@changedTheProfileAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomAliases": "غيّر {username} ألقاب الغرف", + "@changedTheRoomAliases": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomInvitationLink": "غيّر {username} رابط الدعوة", + "@changedTheRoomInvitationLink": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changelog": "سجل التغييرات", + "@changelog": { + "type": "text", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "غيِّر اسم المجموعة", + "@changeTheNameOfTheGroup": { + "type": "text", + "placeholders": {} + }, + "changeWallpaper": "غيِّر الخلفية", + "@changeWallpaper": { + "type": "text", + "placeholders": {} + }, + "changeTheServer": "غيِّر الخادم", + "@changeTheServer": { + "type": "text", + "placeholders": {} + }, + "channelCorruptedDecryptError": "فسُد التشفير", + "@channelCorruptedDecryptError": { + "type": "text", + "placeholders": {} + }, + "chat": "محادثة", + "@chat": { + "type": "text", + "placeholders": {} + }, + "chatDetails": "تفاصيل المحادثة", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "chooseAStrongPassword": "اختر كلمة سر قوية", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "chooseAUsername": "اختر اسم المستخدم", + "@chooseAUsername": { + "type": "text", + "placeholders": {} + }, + "close": "أغلق", + "@close": { + "type": "text", + "placeholders": {} + }, + "compareEmojiMatch": "تأكد من أن هذه الإيموجي تطابق الموجودة على الأجهزة الأخرى:", + "@compareEmojiMatch": { + "type": "text", + "placeholders": {} + }, + "compareNumbersMatch": "تأكد من أن هذه الأرقام تطابق الموجودة على الأجهزة الأخرى:", + "@compareNumbersMatch": { + "type": "text", + "placeholders": {} + }, + "confirm": "أكّد", + "@confirm": { + "type": "text", + "placeholders": {} + }, + "connect": "اتصل", + "@connect": { + "type": "text", + "placeholders": {} + }, + "connectionAttemptFailed": "فشلت محاولة الاتصال", + "@connectionAttemptFailed": { + "type": "text", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "دعيَ المراسل للمجموعة", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "contentViewer": "عارض المحتوى", + "@contentViewer": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "نُسخ في الحافظة", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "copy": "انسخ", + "@copy": { + "type": "text", + "placeholders": {} + }, + "couldNotDecryptMessage": "تعذر فك تشفير الرسالة: {error}", + "@couldNotDecryptMessage": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "couldNotSetAvatar": "تعذر تعيين الصورة الشخصية", + "@couldNotSetAvatar": { + "type": "text", + "placeholders": {} + }, + "couldNotSetDisplayname": "تعذر تعيين الاسم", + "@couldNotSetDisplayname": { + "type": "text", + "placeholders": {} + }, + "countParticipants": "{count} منتسبا", + "@countParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "create": "أنشئ", + "@create": { + "type": "text", + "placeholders": {} + }, + "createAccountNow": "أنشئ حسابًا الآن", + "@createAccountNow": { + "type": "text", + "placeholders": {} + }, + "createdTheChat": "أنشأ {username} المحادثة", + "@createdTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "createNewGroup": "أنشئ مجموعة جديدة", + "@createNewGroup": { + "type": "text", + "placeholders": {} + }, + "crossSigningDisabled": "", + "@crossSigningDisabled": { + "type": "text", + "placeholders": {} + }, + "crossSigningEnabled": "", + "@crossSigningEnabled": { + "type": "text", + "placeholders": {} + }, + "currentlyActive": "نشطٌ حاليا", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "dateAndTimeOfDay": "", + "@dateAndTimeOfDay": { + "type": "text", + "placeholders": { + "date": {}, + "timeOfDay": {} + } + }, + "dateWithoutYear": "", + "@dateWithoutYear": { + "type": "text", + "placeholders": { + "month": {}, + "day": {} + } + }, + "dateWithYear": "", + "@dateWithYear": { + "type": "text", + "placeholders": { + "year": {}, + "month": {}, + "day": {} + } + }, + "delete": "احذف", + "@delete": { + "type": "text", + "placeholders": {} + }, + "deactivateAccountWarning": "لا مجال للعودة، أتأكد تعطيل حسابك؟", + "@deactivateAccountWarning": { + "type": "text", + "placeholders": {} + }, + "deleteAccount": "احذف الحساب", + "@deleteAccount": { + "type": "text", + "placeholders": {} + }, + "deleteMessage": "احذف الرسالة", + "@deleteMessage": { + "type": "text", + "placeholders": {} + }, + "deny": "رفض", + "@deny": { + "type": "text", + "placeholders": {} + }, + "device": "جهاز", + "@device": { + "type": "text", + "placeholders": {} + }, + "devices": "الأجهزة", + "@devices": { + "type": "text", + "placeholders": {} + }, + "discardPicture": "أهمل الصورة", + "@discardPicture": { + "type": "text", + "placeholders": {} + }, + "displaynameHasBeenChanged": "غُيِّر الاسم", + "@displaynameHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "downloadFile": "نزِّل الملف", + "@downloadFile": { + "type": "text", + "placeholders": {} + }, + "editDisplayname": "حرر الاسم", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "emoteSettings": "اعدادات الانفعالات", + "@emoteSettings": { + "type": "text", + "placeholders": {} + }, + "emoteShortcode": "رمز الانفعالة", + "@emoteShortcode": { + "type": "text", + "placeholders": {} + }, + "emoteWarnNeedToPick": "اختر صورة ورمزا للانفعالة", + "@emoteWarnNeedToPick": { + "type": "text", + "placeholders": {} + }, + "emoteExists": "الانفعالة موجودة مسبقا!", + "@emoteExists": { + "type": "text", + "placeholders": {} + }, + "emoteInvalid": "رمز الانفعالة غير صالح!", + "@emoteInvalid": { + "type": "text", + "placeholders": {} + }, + "emptyChat": "محادثة فارغة", + "@emptyChat": { + "type": "text", + "placeholders": {} + }, + "enableEncryptionWarning": "لن يمكنك تعطيل التشفير أبدا، أمتأكد؟", + "@enableEncryptionWarning": { + "type": "text", + "placeholders": {} + }, + "encryption": "التشفير", + "@encryption": { + "type": "text", + "placeholders": {} + }, + "encryptionAlgorithm": "خوارزمية التشفير", + "@encryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "encryptionNotEnabled": "التشفير معطل", + "@encryptionNotEnabled": { + "type": "text", + "placeholders": {} + }, + "end2endEncryptionSettings": "إعدادات تشفير الطرف لطرف", + "@end2endEncryptionSettings": { + "type": "text", + "placeholders": {} + }, + "endedTheCall": "أنهى {senderName} المكالمة", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterAGroupName": "أدخل اسم المجموعة", + "@enterAGroupName": { + "type": "text", + "placeholders": {} + }, + "enterAUsername": "أدخل اسم المستخدم", + "@enterAUsername": { + "type": "text", + "placeholders": {} + }, + "enterYourHomeserver": "أدخل الخادم", + "@enterYourHomeserver": { + "type": "text", + "placeholders": {} + }, + "fileName": "اسم الملف", + "@fileName": { + "type": "text", + "placeholders": {} + }, + "fileSize": "حجم الملف", + "@fileSize": { + "type": "text", + "placeholders": {} + }, + "fluffychat": "", + "@fluffychat": { + "type": "text", + "placeholders": {} + }, + "forward": "أعد التوجيه", + "@forward": { + "type": "text", + "placeholders": {} + }, + "friday": "الجمعة", + "@friday": { + "type": "text", + "placeholders": {} + }, + "fromJoining": "من بعد الانضمام", + "@fromJoining": { + "type": "text", + "placeholders": {} + }, + "fromTheInvitation": "من بعد الدعوة", + "@fromTheInvitation": { + "type": "text", + "placeholders": {} + }, + "group": "المجموعة", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupDescription": "وصف المجموعة", + "@groupDescription": { + "type": "text", + "placeholders": {} + }, + "groupDescriptionHasBeenChanged": "غُيِّر وصف المجموعة", + "@groupDescriptionHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "المجموعة عامة", + "@groupIsPublic": { + "type": "text", + "placeholders": {} + }, + "groupWith": "", + "@groupWith": { + "type": "text", + "placeholders": { + "displayname": {} + } + }, + "guestsAreForbidden": "يمنع الزوار", + "@guestsAreForbidden": { + "type": "text", + "placeholders": {} + }, + "guestsCanJoin": "يمكن للزوار الانضمام", + "@guestsCanJoin": { + "type": "text", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "سحب {username} دعوة {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "help": "المساعدة", + "@help": { + "type": "text", + "placeholders": {} + }, + "homeserverIsNotCompatible": "الخادم ليس متوافقًا", + "@homeserverIsNotCompatible": { + "type": "text", + "placeholders": {} + }, + "id": "المعرّف", + "@id": { + "type": "text", + "placeholders": {} + }, + "identity": "المُعرّف", + "@identity": { + "type": "text", + "placeholders": {} + }, + "ignoredUsers": "المستخدمون المتجاهلون", + "@ignoredUsers": { + "type": "text", + "placeholders": {} + }, + "ignoreUsername": "تجاهل اسم المستخدم", + "@ignoreUsername": { + "type": "text", + "placeholders": {} + }, + "ignoreListDescription": "يمكنك تجاهل المستخدمين المزعجين، لن يتمكنوا من مراسلتك أو دعوتك لغرفة ما داموا في قائمة التجاهل.", + "@ignoreListDescription": { + "type": "text", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "أدعو مراسلًا", + "@inviteContact": { + "type": "text", + "placeholders": {} + }, + "inviteContactToGroup": "أدعو مراسلا الى {groupName}", + "@inviteContactToGroup": { + "type": "text", + "placeholders": { + "groupName": {} + } + }, + "invited": "دُعيَ", + "@invited": { + "type": "text", + "placeholders": {} + }, + "inviteText": "دعاك {username} لاستخدام فلافي-شات. \n1. ثبت فلافي-شات: https://fluffychat.im \n2. لج أو سجل\n3. افتح رابط الدعوة: {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "invitedUser": "{username} دعا {targetName}", + "@invitedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "invitedUsersOnly": "المستخدمون المدعوون فقط", + "@invitedUsersOnly": { + "type": "text", + "placeholders": {} + }, + "isDeviceKeyCorrect": "هل مفتاح الجهاز صحيح؟", + "@isDeviceKeyCorrect": { + "type": "text", + "placeholders": {} + }, + "isTyping": "يكتب...", + "@isTyping": { + "type": "text", + "placeholders": {} + }, + "editJitsiInstance": "غيِّر خادم جيتسي", + "@editJitsiInstance": { + "type": "text", + "placeholders": {} + }, + "joinedTheChat": "انضم {username} للمحادثة", + "@joinedTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "joinRoom": "انضم للمحادثة", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, + "keysCached": "", + "@keysCached": { + "type": "text", + "placeholders": {} + }, + "keysMissing": "المفاتيح مفقودة", + "@keysMissing": { + "type": "text", + "placeholders": {} + }, + "kicked": "{username} طرد {targetName}", + "@kicked": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickedAndBanned": "{username} طرد وحظر {targetName}", + "@kickedAndBanned": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickFromChat": "أطرد من المحادثة", + "@kickFromChat": { + "type": "text", + "placeholders": {} + }, + "leave": "غادر", + "@leave": { + "type": "text", + "placeholders": {} + }, + "leftTheChat": "غادر المحادثة", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "logout": "خروج", + "@logout": { + "type": "text", + "placeholders": {} + }, + "userLeftTheChat": "غادر {username} المحادثة", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "lastActiveAgo": "آخر نشاط: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "text", + "placeholders": { + "localizedTimeShort": {} + } + }, + "lastSeenIp": "آخر عنوان IP مسجل", + "@lastSeenIp": { + "type": "text", + "placeholders": {} + }, + "license": "الرخصة", + "@license": { + "type": "text", + "placeholders": {} + }, + "loadingPleaseWait": "يحمّل... يرجى الانتظار", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "حمِّل المزيد...", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "loadCountMoreParticipants": "حمِّل {count} منتسبًا إضافيًا", + "@loadCountMoreParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "login": "لِج", + "@login": { + "type": "text", + "placeholders": {} + }, + "logInTo": "لِج ل {homeserver}", + "@logInTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "makeAModerator": "اجعله مشرفًا", + "@makeAModerator": { + "type": "text", + "placeholders": {} + }, + "makeAnAdmin": "اجعله مديرًا", + "@makeAnAdmin": { + "type": "text", + "placeholders": {} + }, + "makeSureTheIdentifierIsValid": "تأكد من صحة المعرّف", + "@makeSureTheIdentifierIsValid": { + "type": "text", + "placeholders": {} + }, + "messageWillBeRemovedWarning": "ستحذف الرسالة عند كل المنتسبين", + "@messageWillBeRemovedWarning": { + "type": "text", + "placeholders": {} + }, + "moderator": "مشرف", + "@moderator": { + "type": "text", + "placeholders": {} + }, + "monday": "الإثنين", + "@monday": { + "type": "text", + "placeholders": {} + }, + "muteChat": "أكتم الماحدثة", + "@muteChat": { + "type": "text", + "placeholders": {} + }, + "needPantalaimonWarning": "اعلم أننا نستخدم بانتاليمون للتشفير طرفا لطرف.", + "@needPantalaimonWarning": { + "type": "text", + "placeholders": {} + }, + "newMessageInFluffyChat": "رسالة جديدة في فلافي-شات", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "newPrivateChat": "محادثة خاصة جديدة", + "@newPrivateChat": { + "type": "text", + "placeholders": {} + }, + "newVerificationRequest": "طلب تحقق جديد!", + "@newVerificationRequest": { + "type": "text", + "placeholders": {} + }, + "noCrossSignBootstrap": "", + "@noCrossSignBootstrap": { + "type": "text", + "placeholders": {} + }, + "noMegolmBootstrap": "", + "@noMegolmBootstrap": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "من الرائع أن نرى انك لا تستخدم خدمات غوغل للحفاظ على خصوصيتك!من أجل استلام الإشعارات نقترح استخدام ميكرو-جي: https://microg.org", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "none": "بدون", + "@none": { + "type": "text", + "placeholders": {} + }, + "noEmotesFound": "لم يُعثر على انفعالة. 😕", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noPermission": "بدون اذن", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "لم يُعثر على غرف...", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "notSupportedInWeb": "", + "@notSupportedInWeb": { + "type": "text", + "placeholders": {} + }, + "numberSelected": "حُدد {number}", + "@numberSelected": { + "type": "text", + "placeholders": { + "number": {} + } + }, + "ok": "موافق", + "@ok": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupDisabled": "", + "@onlineKeyBackupDisabled": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "", + "@onlineKeyBackupEnabled": { + "type": "text", + "placeholders": {} + }, + "oopsSomethingWentWrong": "هناك خطأ ما...", + "@oopsSomethingWentWrong": { + "type": "text", + "placeholders": {} + }, + "openAppToReadMessages": "افتح التطبيق لقراءة الرسائل", + "@openAppToReadMessages": { + "type": "text", + "placeholders": {} + }, + "openCamera": "افتح الكاميرا", + "@openCamera": { + "type": "text", + "placeholders": {} + }, + "optionalGroupName": "اسم المجموعة (اختياري)", + "@optionalGroupName": { + "type": "text", + "placeholders": {} + }, + "participatingUserDevices": "أجهزة المنتسبين", + "@participatingUserDevices": { + "type": "text", + "placeholders": {} + }, + "passphraseOrKey": "", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "password": "كلمة السر", + "@password": { + "type": "text", + "placeholders": {} + }, + "passwordHasBeenChanged": "غُيّرت كلمة السر", + "@passwordHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "pickImage": "اختر صورة", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "pin": "ثبِّت", + "@pin": { + "type": "text", + "placeholders": {} + }, + "play": "شغّل {fileName}", + "@play": { + "type": "text", + "placeholders": { + "fileName": {} + } + }, + "pleaseChooseAUsername": "اختر اسم المستخدم", + "@pleaseChooseAUsername": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterAMatrixIdentifier": "أدخل معرف مايتركس", + "@pleaseEnterAMatrixIdentifier": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPassword": "أدخل كلمة السر", + "@pleaseEnterYourPassword": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourUsername": "أدخل اسم المستخدم", + "@pleaseEnterYourUsername": { + "type": "text", + "placeholders": {} + }, + "publicRooms": "الغرف العامة", + "@publicRooms": { + "type": "text", + "placeholders": {} + }, + "reject": "رفض", + "@reject": { + "type": "text", + "placeholders": {} + }, + "rejoin": "أعد الانضمام", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "renderRichContent": "صيّر الرسائل ذات المحتوى الكبير", + "@renderRichContent": { + "type": "text", + "placeholders": {} + }, + "recording": "يسجل", + "@recording": { + "type": "text", + "placeholders": {} + }, + "redactedAnEvent": "", + "@redactedAnEvent": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "rejectedTheInvitation": "رفض {username} الدعوة", + "@rejectedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "removeAllOtherDevices": "أزِل كل الأجهزة الأخرى", + "@removeAllOtherDevices": { + "type": "text", + "placeholders": {} + }, + "removedBy": "أزاله {username}", + "@removedBy": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "removeDevice": "أزل جهازا", + "@removeDevice": { + "type": "text", + "placeholders": {} + }, + "removeExile": "", + "@removeExile": { + "type": "text", + "placeholders": {} + }, + "revokeAllPermissions": "أبطل كل الأذون", + "@revokeAllPermissions": { + "type": "text", + "placeholders": {} + }, + "remove": "أزِل", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeMessage": "أزل رسالة", + "@removeMessage": { + "type": "text", + "placeholders": {} + }, + "reply": "ردّ", + "@reply": { + "type": "text", + "placeholders": {} + }, + "requestPermission": "أطلب إذنا", + "@requestPermission": { + "type": "text", + "placeholders": {} + }, + "requestToReadOlderMessages": "أطلب السماح بقراءة الرسائل القديمة", + "@requestToReadOlderMessages": { + "type": "text", + "placeholders": {} + }, + "roomHasBeenUpgraded": "رُقيّت الغرفة", + "@roomHasBeenUpgraded": { + "type": "text", + "placeholders": {} + }, + "saturday": "السبت", + "@saturday": { + "type": "text", + "placeholders": {} + }, + "share": "شارك", + "@share": { + "type": "text", + "placeholders": {} + }, + "sharedTheLocation": "شارك {username} الموقع", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "searchForAChat": "ابحث عن محادثة", + "@searchForAChat": { + "type": "text", + "placeholders": {} + }, + "lastSeenLongTimeAgo": "", + "@lastSeenLongTimeAgo": { + "type": "text", + "placeholders": {} + }, + "sendBugReports": "اسمح بإرسال تقريرات عن العلل باستخدام sentry.io", + "@sendBugReports": { + "type": "text", + "placeholders": {} + }, + "sentryInfo": "معلومات عن خصوصيتك: https://sentry.io/security/", + "@sentryInfo": { + "type": "text", + "placeholders": {} + }, + "changesHaveBeenSaved": "حُفظت التغييرات", + "@changesHaveBeenSaved": { + "type": "text", + "placeholders": {} + }, + "no": "لا", + "@no": { + "type": "text", + "placeholders": {} + }, + "seenByUser": "رآه {username}", + "@seenByUser": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "seenByUserAndUser": "رآه {username} و {username2}", + "@seenByUserAndUser": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "seenByUserAndCountOthers": "رآه {username} و {count} أخرون", + "@seenByUserAndCountOthers": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "send": "أرسل", + "@send": { + "type": "text", + "placeholders": {} + }, + "sendAMessage": "أرسل رسالة", + "@sendAMessage": { + "type": "text", + "placeholders": {} + }, + "sendAudio": "أرسل ملفًا صوتيًا", + "@sendAudio": { + "type": "text", + "placeholders": {} + }, + "sendFile": "أرسل ملف", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "أرسل صورة", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "أرسل الملف الأصلي", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendVideo": "أرسل فيديو", + "@sendVideo": { + "type": "text", + "placeholders": {} + }, + "sentAFile": "أرسلَ {username} ملفًا", + "@sentAFile": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAnAudio": "أرسلَ {username} ملفًا صوتيًا", + "@sentAnAudio": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAPicture": "أرسلَ {username} صورة", + "@sentAPicture": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentASticker": "أرسلَ {username} ملصقا", + "@sentASticker": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAVideo": "أرسلَ {username} فيديو", + "@sentAVideo": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentCallInformations": "أرسل {senderName} معلومات مكالمة", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "sessionVerified": "تُحقق من الجلسة", + "@sessionVerified": { + "type": "text", + "placeholders": {} + }, + "setAProfilePicture": "عيّن صورة ملف شخصي", + "@setAProfilePicture": { + "type": "text", + "placeholders": {} + }, + "setGroupDescription": "عيّن وصفا للمجموعة", + "@setGroupDescription": { + "type": "text", + "placeholders": {} + }, + "setInvitationLink": "عيّن رابط الدعوة", + "@setInvitationLink": { + "type": "text", + "placeholders": {} + }, + "setStatus": "عيّن الحالة", + "@setStatus": { + "type": "text", + "placeholders": {} + }, + "settings": "الإعدادات", + "@settings": { + "type": "text", + "placeholders": {} + }, + "signUp": "سجّل", + "@signUp": { + "type": "text", + "placeholders": {} + }, + "skip": "تخط", + "@skip": { + "type": "text", + "placeholders": {} + }, + "startedACall": "بدأ {senderName} مكالمة", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "changeTheme": "غيّر أسلوبك", + "@changeTheme": { + "type": "text", + "placeholders": {} + }, + "systemTheme": "النظام", + "@systemTheme": { + "type": "text", + "placeholders": {} + }, + "statusExampleMessage": "ماهو وضعك؟", + "@statusExampleMessage": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "فاتح", + "@lightTheme": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "داكن", + "@darkTheme": { + "type": "text", + "placeholders": {} + }, + "useAmoledTheme": "", + "@useAmoledTheme": { + "type": "text", + "placeholders": {} + }, + "sourceCode": "الشفرة المصدرية", + "@sourceCode": { + "type": "text", + "placeholders": {} + }, + "startYourFirstChat": "ابدأ محادثتك الأولى :-)", + "@startYourFirstChat": { + "type": "text", + "placeholders": {} + }, + "submit": "أرسل", + "@submit": { + "type": "text", + "placeholders": {} + }, + "sunday": "الأحد", + "@sunday": { + "type": "text", + "placeholders": {} + }, + "donate": "تبرع", + "@donate": { + "type": "text", + "placeholders": {} + }, + "tapToShowMenu": "اضغط لعرض القائمة", + "@tapToShowMenu": { + "type": "text", + "placeholders": {} + }, + "theyDontMatch": "لا يتطبقان", + "@theyDontMatch": { + "type": "text", + "placeholders": {} + }, + "theyMatch": "متطبقان", + "@theyMatch": { + "type": "text", + "placeholders": {} + }, + "thisRoomHasBeenArchived": "أُرشِفت هته الغرفة.", + "@thisRoomHasBeenArchived": { + "type": "text", + "placeholders": {} + }, + "thursday": "الخميس", + "@thursday": { + "type": "text", + "placeholders": {} + }, + "timeOfDay": "", + "@timeOfDay": { + "type": "text", + "placeholders": { + "hours12": {}, + "hours24": {}, + "minutes": {}, + "suffix": {} + } + }, + "title": "", + "@title": { + "description": "Title for the application", + "type": "text", + "placeholders": {} + }, + "tryToSendAgain": "حاول إعادة الارسال", + "@tryToSendAgain": { + "type": "text", + "placeholders": {} + }, + "tuesday": "الثلاثاء", + "@tuesday": { + "type": "text", + "placeholders": {} + }, + "unbannedUser": "ألغى {username} حظر {targetName}", + "@unbannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "unblockDevice": "ألغ حظر الجهاز", + "@unblockDevice": { + "type": "text", + "placeholders": {} + }, + "unmuteChat": "ألغِ كتم المحادثة", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unknownDevice": "جهز مجهول", + "@unknownDevice": { + "type": "text", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "خوارزمية تشفير مجهولة", + "@unknownEncryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "unknownSessionVerify": "الجلسة مجهولة، تحقق منها", + "@unknownSessionVerify": { + "type": "text", + "placeholders": {} + }, + "unknownEvent": "", + "@unknownEvent": { + "type": "text", + "placeholders": { + "type": {} + } + }, + "unpin": "ألغِ التثبيت", + "@unpin": { + "type": "text", + "placeholders": {} + }, + "unreadChats": "{unreadCount} رسالة غير مقروءة", + "@unreadChats": { + "type": "text", + "placeholders": { + "unreadCount": {} + } + }, + "unreadMessages": "", + "@unreadMessages": { + "type": "text", + "placeholders": { + "unreadEvents": {} + } + }, + "unreadMessagesInChats": "", + "@unreadMessagesInChats": { + "type": "text", + "placeholders": { + "unreadEvents": {}, + "unreadChats": {} + } + }, + "userAndOthersAreTyping": "{username} و {count} أخرون يكتبون...", + "@userAndOthersAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "userAndUserAreTyping": "{username} و {username2} يكتبان...", + "@userAndUserAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "username": "اسم المستخدم", + "@username": { + "type": "text", + "placeholders": {} + }, + "userIsTyping": "{username} يكتب...", + "@userIsTyping": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "userSentUnknownEvent": "", + "@userSentUnknownEvent": { + "type": "text", + "placeholders": { + "username": {}, + "type": {} + } + }, + "verify": "تحقق", + "@verify": { + "type": "text", + "placeholders": {} + }, + "verifyManual": "تحقق يدويا", + "@verifyManual": { + "type": "text", + "placeholders": {} + }, + "verifiedSession": "تُحقق من الجلسة بنجاح!", + "@verifiedSession": { + "type": "text", + "placeholders": {} + }, + "verifyStart": "ابدأ التحقق", + "@verifyStart": { + "type": "text", + "placeholders": {} + }, + "verifySuccess": "تُحقق منك بنجاح!", + "@verifySuccess": { + "type": "text", + "placeholders": {} + }, + "verifyTitle": "يتحقق من الحساب الآخر", + "@verifyTitle": { + "type": "text", + "placeholders": {} + }, + "verifyUser": "تحقق من مستخدم", + "@verifyUser": { + "type": "text", + "placeholders": {} + }, + "videoCall": "مكالمة فيديو", + "@videoCall": { + "type": "text", + "placeholders": {} + }, + "visibleForAllParticipants": "مرئي لكل المنتسبين", + "@visibleForAllParticipants": { + "type": "text", + "placeholders": {} + }, + "visibleForEveryone": "مرئي للجميع", + "@visibleForEveryone": { + "type": "text", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "غيّر مرئية تأريخ المحادثة", + "@visibilityOfTheChatHistory": { + "type": "text", + "placeholders": {} + }, + "voiceMessage": "رسالة صوتية", + "@voiceMessage": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "ينتظر قبول الشريك للطلب...", + "@waitingPartnerAcceptRequest": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerEmoji": "ينتظر قبول الشريك لإيموجي...", + "@waitingPartnerEmoji": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerNumbers": "ينتظر قبول الشريك للأرقام...", + "@waitingPartnerNumbers": { + "type": "text", + "placeholders": {} + }, + "warning": "تحذير!", + "@warning": { + "type": "text", + "placeholders": {} + }, + "wallpaper": "الخلفية", + "@wallpaper": { + "type": "text", + "placeholders": {} + }, + "warningEncryptionInBeta": "التشفير طرفا لطرف لا يزال في مرحلة البيتا! استخدمه تحت مسؤوليتك!", + "@warningEncryptionInBeta": { + "type": "text", + "placeholders": {} + }, + "wednesday": "الأربعاء", + "@wednesday": { + "type": "text", + "placeholders": {} + }, + "welcomeText": "مرحبا بك في أظرف مراسل فروري لمايتركس.", + "@welcomeText": { + "type": "text", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "من يسمح له الانضمام للمجموعة", + "@whoIsAllowedToJoinThisGroup": { + "type": "text", + "placeholders": {} + }, + "writeAMessage": "اكتب رسالة...", + "@writeAMessage": { + "type": "text", + "placeholders": {} + }, + "yes": "نعم", + "@yes": { + "type": "text", + "placeholders": {} + }, + "you": "انت", + "@you": { + "type": "text", + "placeholders": {} + }, + "youAreInvitedToThisChat": "دُعيتَ لهذه المحادثة", + "@youAreInvitedToThisChat": { + "type": "text", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "لم تعد منتسبا لهذه المحادثة", + "@youAreNoLongerParticipatingInThisChat": { + "type": "text", + "placeholders": {} + }, + "youCannotInviteYourself": "لا يمكنك دعوة نفسك", + "@youCannotInviteYourself": { + "type": "text", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "حُظرت من هذه المحادثة", + "@youHaveBeenBannedFromThisChat": { + "type": "text", + "placeholders": {} + }, + "yourOwnUsername": "اسم المستخدم الخاص بك", + "@yourOwnUsername": { + "type": "text", + "placeholders": {} + } +} diff --git a/lib/l10n/intl_cs.arb b/lib/l10n/intl_cs.arb index d31cfc2..e08169d 100644 --- a/lib/l10n/intl_cs.arb +++ b/lib/l10n/intl_cs.arb @@ -1,7 +1,13 @@ { - "@@last_modified": "2020-05-15T15:34:50.065646", - "About": "O aplikaci", - "@About": { + "@@locale": "cs", + "@@last_modified": "2020-09-23 11:46:02.887128", + "about": "O aplikaci", + "@about": { + "type": "text", + "placeholders": {} + }, + "accept": "Přijmout", + "@accept": { "type": "text", "placeholders": {} }, @@ -12,13 +18,13 @@ "username": {} } }, - "Account": "Účet", - "@Account": { + "account": "Účet", + "@account": { "type": "text", "placeholders": {} }, - "Account informations": "Informace o účtu", - "@Account informations": { + "accountInformation": "Informace o účtu", + "@accountInformation": { "type": "text", "placeholders": {} }, @@ -29,13 +35,13 @@ "username": {} } }, - "Add a group description": "Přidat popis skupiny", - "@Add a group description": { + "addGroupDescription": "Přidat popis skupiny", + "@addGroupDescription": { "type": "text", "placeholders": {} }, - "Admin": "Administrátor", - "@Admin": { + "admin": "Administrátor", + "@admin": { "type": "text", "placeholders": {} }, @@ -44,57 +50,86 @@ "type": "text", "placeholders": {} }, - "Already have an account?": "Máte již účet?", - "@Already have an account?": { + "alreadyHaveAnAccount": "Máte již účet?", + "@alreadyHaveAnAccount": { "type": "text", "placeholders": {} }, - "Anyone can join": "Kdokoliv se může připojit", - "@Anyone can join": { + "answeredTheCall": "{senderName} odpověděl na hovor", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "Kdokoliv se může připojit", + "@anyoneCanJoin": { "type": "text", "placeholders": {} }, - "Archive": "Archiv", - "@Archive": { + "archive": "Archiv", + "@archive": { "type": "text", "placeholders": {} }, - "Archived Room": "Archivované místnosti", - "@Archived Room": { + "archivedRoom": "Archivované místnosti", + "@archivedRoom": { "type": "text", "placeholders": {} }, - "Are guest users allowed to join": "Mohou se připojit hosté", - "@Are guest users allowed to join": { + "areGuestsAllowedToJoin": "Mohou se připojit hosté", + "@areGuestsAllowedToJoin": { "type": "text", "placeholders": {} }, - "Are you sure?": "Jste si jisti?", - "@Are you sure?": { + "areYouSure": "Jste si jisti?", + "@areYouSure": { "type": "text", "placeholders": {} }, - "Authentication": "Autentizace", - "@Authentication": { + "askSSSSCache": "Prosím zadajte vaší prístupovu frázI k \"bezpečému úložišti\" anebo \"klíč na obnovu\" pro uložení klíčů.", + "@askSSSSCache": { "type": "text", "placeholders": {} }, - "Avatar has been changed": "Avatar byl změněn", - "@Avatar has been changed": { + "askSSSSSign": "Pro ověření této osoby, zadejte prosím přístupovou frází k “bezpečnému úložišti” anebo “klíč pro obnovu”.", + "@askSSSSSign": { "type": "text", "placeholders": {} }, - "Ban from chat": "Zabanovat z diskuze", - "@Ban from chat": { + "askSSSSVerify": "Zadejte prosím vaší přístupovou frází k “bezpečnému úložišti” anebo “klíč pro obnovu” pro ověření vaší relace.", + "@askSSSSVerify": { "type": "text", "placeholders": {} }, - "Banned": "Zabanován", - "@Banned": { + "askVerificationRequest": "Přijmout žádost o ověření od (username)?", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "authentication": "Autentizace", + "@authentication": { "type": "text", "placeholders": {} }, - "bannedUser": "{username} zabanoval {targetName}", + "avatarHasBeenChanged": "Avatar byl změněn", + "@avatarHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "banFromChat": "Zabanovat z diskuze", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "banned": "Zakázán", + "@banned": { + "type": "text", + "placeholders": {} + }, + "bannedUser": "{username} zakázal {targetName}", "@bannedUser": { "type": "text", "placeholders": { @@ -102,6 +137,11 @@ "targetName": {} } }, + "blockDevice": "Blokovat zařízení", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, "byDefaultYouWillBeConnectedTo": "V základním nastavení budete připojeni do {homeserver}", "@byDefaultYouWillBeConnectedTo": { "type": "text", @@ -109,8 +149,13 @@ "homeserver": {} } }, - "Cancel": "Zrušit", - "@Cancel": { + "cachedKeys": "Klíče byly úspěšně uloženy!", + "@cachedKeys": { + "type": "text", + "placeholders": {} + }, + "cancel": "Zrušit", + "@cancel": { "type": "text", "placeholders": {} }, @@ -121,14 +166,6 @@ "username": {} } }, - "changedTheChatNameTo": "{username} změnili jméno diskuze na: „{chatname}“", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, "changedTheChatDescriptionTo": "{username} změnili popis diskuze na: „{description}“", "@changedTheChatDescriptionTo": { "type": "text", @@ -137,6 +174,14 @@ "description": {} } }, + "changedTheChatNameTo": "{username} změnili jméno diskuze na: „{chatname}“", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, "changedTheChatPermissions": "{username} změnili nastavení oprávnění v diskuzi", "@changedTheChatPermissions": { "type": "text", @@ -152,11 +197,6 @@ "displayname": {} } }, - "Change the homeserver": "Změnit použitý server", - "@Change the homeserver": { - "type": "text", - "placeholders": {} - }, "changedTheGuestAccessRules": "{username} změnili přístupová práva pro hosty", "@changedTheGuestAccessRules": { "type": "text", @@ -202,7 +242,7 @@ "joinRules": {} } }, - "changedTheProfileAvatar": "{username} změnili nastavení profilového avataru", + "changedTheProfileAvatar": "{username} změnili svůj avatar", "@changedTheProfileAvatar": { "type": "text", "placeholders": { @@ -223,88 +263,113 @@ "username": {} } }, - "Changelog": "Historie změn", - "@Changelog": { + "changelog": "Historie změn", + "@changelog": { "type": "text", "placeholders": {} }, - "Change the name of the group": "Změnit název skupiny", - "@Change the name of the group": { + "changesHaveBeenSaved": "Změny byly uloženy", + "@changesHaveBeenSaved": { "type": "text", "placeholders": {} }, - "Change wallpaper": "Změnit pozadí", - "@Change wallpaper": { + "changeTheHomeserver": "Změnit použitý server", + "@changeTheHomeserver": { "type": "text", "placeholders": {} }, - "Change the server": "Změnit server", - "@Change the server": { + "changeTheme": "Nastavte svůj styl", + "@changeTheme": { "type": "text", "placeholders": {} }, - "The encryption has been corrupted": "Šifrování bylo poškozeno", - "@The encryption has been corrupted": { + "changeTheNameOfTheGroup": "Změnit název skupiny", + "@changeTheNameOfTheGroup": { "type": "text", "placeholders": {} }, - "Chat": "Diskuze", - "@Chat": { + "changeTheServer": "Změnit server", + "@changeTheServer": { "type": "text", "placeholders": {} }, - "Chat details": "Detail diskuze", - "@Chat details": { + "changeWallpaper": "Změnit pozadí", + "@changeWallpaper": { "type": "text", "placeholders": {} }, - "Choose a strong password": "Vyberte silné heslo", - "@Choose a strong password": { + "channelCorruptedDecryptError": "Šifrování bylo poškozeno", + "@channelCorruptedDecryptError": { "type": "text", "placeholders": {} }, - "Choose a username": "Vyberte uživatelské jméno", - "@Choose a username": { + "chat": "Diskuze", + "@chat": { "type": "text", "placeholders": {} }, - "Close": "Zavřít", - "@Close": { + "chatDetails": "Detail diskuze", + "@chatDetails": { "type": "text", "placeholders": {} }, - "Confirm": "Potvrdit", - "@Confirm": { + "chooseAStrongPassword": "Vyberte silné heslo", + "@chooseAStrongPassword": { "type": "text", "placeholders": {} }, - "Connect": "Připojit", - "@Connect": { + "chooseAUsername": "Vyberte uživatelské jméno", + "@chooseAUsername": { "type": "text", "placeholders": {} }, - "Connection attempt failed": "Pokus o připojení selhal", - "@Connection attempt failed": { + "close": "Zavřít", + "@close": { "type": "text", "placeholders": {} }, - "Contact has been invited to the group": "Kontakt byl pozván do skupiny", - "@Contact has been invited to the group": { + "compareEmojiMatch": "Porovnejte a přesvědčete se, že následující emotikony se shodují na obou zařízeních:", + "@compareEmojiMatch": { "type": "text", "placeholders": {} }, - "Content viewer": "Prohlížeč obsahu", - "@Content viewer": { + "compareNumbersMatch": "Porovnejte a přesvědčete se, že následující čísla se shodují na obou zařízeních:", + "@compareNumbersMatch": { "type": "text", "placeholders": {} }, - "Copied to clipboard": "Zkopírováno do schránky", - "@Copied to clipboard": { + "confirm": "Potvrdit", + "@confirm": { "type": "text", "placeholders": {} }, - "Copy": "Kopírovat", - "@Copy": { + "connect": "Připojit", + "@connect": { + "type": "text", + "placeholders": {} + }, + "connectionAttemptFailed": "Pokus o připojení selhal", + "@connectionAttemptFailed": { + "type": "text", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kontakt byl pozván do skupiny", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "contentViewer": "Prohlížeč obsahu", + "@contentViewer": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "Zkopírováno do schránky", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "copy": "Kopírovat", + "@copy": { "type": "text", "placeholders": {} }, @@ -315,13 +380,13 @@ "error": {} } }, - "Could not set avatar": "Nebylo možné nastavit avatar", - "@Could not set avatar": { + "couldNotSetAvatar": "Nebylo možné nastavit avatar", + "@couldNotSetAvatar": { "type": "text", "placeholders": {} }, - "Could not set displayname": "Nebylo možné nastavit přezdívku uživatele", - "@Could not set displayname": { + "couldNotSetDisplayname": "Nebylo možné nastavit přezdívku uživatele", + "@couldNotSetDisplayname": { "type": "text", "placeholders": {} }, @@ -332,13 +397,13 @@ "count": {} } }, - "Create": "Vytvořit", - "@Create": { + "create": "Vytvořit", + "@create": { "type": "text", "placeholders": {} }, - "Create account now": "Vytvořit účet teď", - "@Create account now": { + "createAccountNow": "Vytvořit účet teď", + "@createAccountNow": { "type": "text", "placeholders": {} }, @@ -349,13 +414,28 @@ "username": {} } }, - "Create new group": "Založit skupinu", - "@Create new group": { + "createNewGroup": "Založit skupinu", + "@createNewGroup": { "type": "text", "placeholders": {} }, - "Currently active": "Momentálně aktivní", - "@Currently active": { + "crossSigningDisabled": "Vzájemné ověření je vypnuté", + "@crossSigningDisabled": { + "type": "text", + "placeholders": {} + }, + "crossSigningEnabled": "Vzájemné ověření je zapnuté", + "@crossSigningEnabled": { + "type": "text", + "placeholders": {} + }, + "currentlyActive": "Momentálně aktivní", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "Tmavý", + "@darkTheme": { "type": "text", "placeholders": {} }, @@ -384,168 +464,190 @@ "day": {} } }, - "Delete": "Smazat", - "@Delete": { + "delete": "Smazat", + "@delete": { "type": "text", "placeholders": {} }, - "Delete message": "Smazat zprávu", - "@Delete message": { + "deleteMessage": "Smazat zprávu", + "@deleteMessage": { "type": "text", "placeholders": {} }, - "Deny": "Zakázat", - "@Deny": { + "deny": "Zakázat", + "@deny": { "type": "text", "placeholders": {} }, - "Device": "Zařízení", - "@Device": { + "device": "Zařízení", + "@device": { "type": "text", "placeholders": {} }, - "Devices": "Zařízení", - "@Devices": { + "devices": "Zařízení", + "@devices": { "type": "text", "placeholders": {} }, - "Discard picture": "Vyřadit obrázek", - "@Discard picture": { + "discardPicture": "Vyřadit obrázek", + "@discardPicture": { "type": "text", "placeholders": {} }, - "Displayname has been changed": "Přezdívka byla změněna", - "@Displayname has been changed": { + "displaynameHasBeenChanged": "Přezdívka byla změněna", + "@displaynameHasBeenChanged": { "type": "text", "placeholders": {} }, - "Download file": "Stáhnout soubor", - "@Download file": { + "donate": "Přispějte", + "@donate": { "type": "text", "placeholders": {} }, - "Edit displayname": "Změnit přezdívku", - "@Edit displayname": { + "downloadFile": "Stáhnout soubor", + "@downloadFile": { "type": "text", "placeholders": {} }, - "Emote Settings": "Nastavení emotikon", - "@Emote Settings": { + "editDisplayname": "Změnit přezdívku", + "@editDisplayname": { "type": "text", "placeholders": {} }, - "Emote shortcode": "Označení emotikony", - "@Emote shortcode": { + "editJitsiInstance": "Nastavení instance Jitsi", + "@editJitsiInstance": { "type": "text", "placeholders": {} }, - "emoteWarnNeedToPick": "Musíte zvolit označení emotikony a obrázek", - "@emoteWarnNeedToPick": { - "type": "text", - "placeholders": {} - }, - "emoteExists": "Emotikona již existuje", + "emoteExists": "Emotikona již existuje!", "@emoteExists": { "type": "text", "placeholders": {} }, - "emoteInvalid": "Nesprávné označení emotikony", + "emoteInvalid": "Nesprávné označení emotikony!", "@emoteInvalid": { "type": "text", "placeholders": {} }, - "Empty chat": "Prázdná diskuze", - "@Empty chat": { + "emoteSettings": "Nastavení emotikon", + "@emoteSettings": { "type": "text", "placeholders": {} }, - "You won't be able to disable the encryption anymore. Are you sure?": "Šifrování jiš nebude možné vypnout. Jste si tím jisti?", - "@You won't be able to disable the encryption anymore. Are you sure?": { + "emoteShortcode": "Označení emotikony", + "@emoteShortcode": { "type": "text", "placeholders": {} }, - "Encryption algorithm": "Šifrovací algoritmus", - "@Encryption algorithm": { + "emoteWarnNeedToPick": "Musíte zvolit označení emotikony a obrázek!", + "@emoteWarnNeedToPick": { "type": "text", "placeholders": {} }, - "Encryption is not enabled": "Šifrování není aktivní", - "@Encryption is not enabled": { + "emptyChat": "Prázdná diskuze", + "@emptyChat": { "type": "text", "placeholders": {} }, - "End-to-end encryption settings": "Nastavení koncového šifrování", - "@End-to-end encryption settings": { + "enableEncryptionWarning": "Šifrování jiš nebude možné vypnout. Jste si tím jisti?", + "@enableEncryptionWarning": { "type": "text", "placeholders": {} }, - "Enter a group name": "Zadejte jméno skupiny", - "@Enter a group name": { + "encryption": "Šifrování", + "@encryption": { "type": "text", "placeholders": {} }, - "Enter a username": "Zadejte uživatelské jméno", - "@Enter a username": { + "encryptionAlgorithm": "Šifrovací algoritmus", + "@encryptionAlgorithm": { "type": "text", "placeholders": {} }, - "Enter your homeserver": "Zadejte adresu serveru", - "@Enter your homeserver": { + "encryptionNotEnabled": "Šifrování není aktivní", + "@encryptionNotEnabled": { "type": "text", "placeholders": {} }, - "File name": "Název souboru", - "@File name": { + "end2endEncryptionSettings": "Nastavení koncového šifrování", + "@end2endEncryptionSettings": { "type": "text", "placeholders": {} }, - "File size": "Velikost souboru", - "@File size": { + "endedTheCall": "{senderName} ukončil hovor", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterAGroupName": "Zadejte jméno skupiny", + "@enterAGroupName": { "type": "text", "placeholders": {} }, - "FluffyChat": "FluffyChat", - "@FluffyChat": { + "enterAUsername": "Zadejte uživatelské jméno", + "@enterAUsername": { "type": "text", "placeholders": {} }, - "Forward": "Přeposlat", - "@Forward": { + "enterYourHomeserver": "Zadejte adresu serveru", + "@enterYourHomeserver": { "type": "text", "placeholders": {} }, - "Friday": "Pátek", - "@Friday": { + "fileName": "Název souboru", + "@fileName": { "type": "text", "placeholders": {} }, - "From joining": "Od připojení", - "@From joining": { + "fileSize": "Velikost souboru", + "@fileSize": { "type": "text", "placeholders": {} }, - "From the invitation": "Od pozvání", - "@From the invitation": { + "fluffychat": "FluffyChat", + "@fluffychat": { "type": "text", "placeholders": {} }, - "Group": "Skupina", - "@Group": { + "forward": "Přeposlat", + "@forward": { "type": "text", "placeholders": {} }, - "Group description": "Popis skupiny", - "@Group description": { + "friday": "Pátek", + "@friday": { "type": "text", "placeholders": {} }, - "Group description has been changed": "Popis skupiny byl změněn", - "@Group description has been changed": { + "fromJoining": "Od připojení", + "@fromJoining": { "type": "text", "placeholders": {} }, - "Group is public": "Skupina je veřejná", - "@Group is public": { + "fromTheInvitation": "Od pozvání", + "@fromTheInvitation": { + "type": "text", + "placeholders": {} + }, + "group": "Skupina", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupDescription": "Popis skupiny", + "@groupDescription": { + "type": "text", + "placeholders": {} + }, + "groupDescriptionHasBeenChanged": "Popis skupiny byl změněn", + "@groupDescriptionHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "Skupina je veřejná", + "@groupIsPublic": { "type": "text", "placeholders": {} }, @@ -556,13 +658,13 @@ "displayname": {} } }, - "Guests are forbidden": "Hosté jsou zakázáni", - "@Guests are forbidden": { + "guestsAreForbidden": "Hosté jsou zakázáni", + "@guestsAreForbidden": { "type": "text", "placeholders": {} }, - "Guests can join": "Hosté se mohou připojit", - "@Guests can join": { + "guestsCanJoin": "Hosté se mohou připojit", + "@guestsCanJoin": { "type": "text", "placeholders": {} }, @@ -574,28 +676,48 @@ "targetName": {} } }, - "Help": "Pomoc", - "@Help": { + "help": "Pomoc", + "@help": { "type": "text", "placeholders": {} }, - "Homeserver is not compatible": "Server není kompatibilní", - "@Homeserver is not compatible": { + "homeserverIsNotCompatible": "Server není kompatibilní", + "@homeserverIsNotCompatible": { "type": "text", "placeholders": {} }, - "ID": "ID", - "@ID": { + "id": "ID", + "@id": { "type": "text", "placeholders": {} }, - "Identity": "Identita", - "@Identity": { + "identity": "Identita", + "@identity": { "type": "text", "placeholders": {} }, - "Invite contact": "Pozvat kontakt", - "@Invite contact": { + "ignoredUsers": "Ignorovaní uživatelé", + "@ignoredUsers": { + "type": "text", + "placeholders": {} + }, + "ignoreListDescription": "Můžete ignorovat uživatele, kteří vás znepokojují. Nebudete moci přijímat žádné zprávy nebo pozvánky od uživatelů na vašem osobním seznamu ignorovaných.", + "@ignoreListDescription": { + "type": "text", + "placeholders": {} + }, + "ignoreUsername": "Ignorovat uživatelské jméno", + "@ignoreUsername": { + "type": "text", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Nesprávné přístupové heslo anebo klíč pro obnovu", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "Pozvat kontakt", + "@inviteContact": { "type": "text", "placeholders": {} }, @@ -606,19 +728,11 @@ "groupName": {} } }, - "Invited": "Pozváni", - "@Invited": { + "invited": "Pozváni", + "@invited": { "type": "text", "placeholders": {} }, - "inviteText": "", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, "invitedUser": "{username} pozvali {targetName}", "@invitedUser": { "type": "text", @@ -627,18 +741,26 @@ "targetName": {} } }, - "Invited users only": "Pouze pozvaní uživatelé", - "@Invited users only": { + "invitedUsersOnly": "Pouze pozvaní uživatelé", + "@invitedUsersOnly": { "type": "text", "placeholders": {} }, - "is typing...": "píše…", - "@is typing...": { + "inviteText": "{username} vás pozval na FluffyChat.\n1. Nainstalujte si FluffyChat: https://fluffychat.im\n2. Zaregistrujte se anebo se přihlašte\n3. Otevřete odkaz na pozvánce: {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "isDeviceKeyCorrect": "Je následjící kód zařízení správný?", + "@isDeviceKeyCorrect": { "type": "text", "placeholders": {} }, - "Edit Jitsi instance": "Nastavení instance Jitsi", - "@Edit Jitsi instance": { + "isTyping": "píše…", + "@isTyping": { "type": "text", "placeholders": {} }, @@ -649,6 +771,21 @@ "username": {} } }, + "joinRoom": "Vstoupil do místnosti", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, + "keysCached": "Klíče jsou uloženy v mezipaměti", + "@keysCached": { + "type": "text", + "placeholders": {} + }, + "keysMissing": "Chybí klíče", + "@keysMissing": { + "type": "text", + "placeholders": {} + }, "kicked": "{username} vyhodil {targetName}", "@kicked": { "type": "text", @@ -657,7 +794,7 @@ "targetName": {} } }, - "kickedAndBanned": "{username} vyhodil a zabanoval {targetName}", + "kickedAndBanned": "{username} vyhodil a zakázal {targetName}", "@kickedAndBanned": { "type": "text", "placeholders": { @@ -665,33 +802,11 @@ "targetName": {} } }, - "Kick from chat": "Vyhodit z diskuze", - "@Kick from chat": { + "kickFromChat": "Vyhodit z diskuze", + "@kickFromChat": { "type": "text", "placeholders": {} }, - "Leave": "Odejít", - "@Leave": { - "type": "text", - "placeholders": {} - }, - "Left the chat": "Odešel z diskuze", - "@Left the chat": { - "type": "text", - "placeholders": {} - }, - "Logout": "Odhlásit", - "@Logout": { - "type": "text", - "placeholders": {} - }, - "userLeftTheChat": "{username} opustili diskuzi", - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, "lastActiveAgo": "Naposledy aktivní: {localizedTimeShort}", "@lastActiveAgo": { "type": "text", @@ -699,23 +814,33 @@ "localizedTimeShort": {} } }, - "Last seen IP": "Naposledy viděná IP", - "@Last seen IP": { + "lastSeenIp": "Naposledy viděná IP", + "@lastSeenIp": { "type": "text", "placeholders": {} }, - "License": "Licence", - "@License": { + "lastSeenLongTimeAgo": "Viděni velmi dávno", + "@lastSeenLongTimeAgo": { "type": "text", "placeholders": {} }, - "Loading... Please wait": "Načítání… Prosíme počkejte", - "@Loading... Please wait": { + "leave": "Odejít", + "@leave": { "type": "text", "placeholders": {} }, - "Load more...": "Načíst další…", - "@Load more...": { + "leftTheChat": "Odešel z diskuze", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "Licence", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "Světlý", + "@lightTheme": { "type": "text", "placeholders": {} }, @@ -726,8 +851,18 @@ "count": {} } }, - "Login": "Přihlášení", - "@Login": { + "loadingPleaseWait": "Načítání… Prosíme počkejte", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "Načíst další…", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "login": "Přihlášení", + "@login": { "type": "text", "placeholders": {} }, @@ -738,83 +873,108 @@ "homeserver": {} } }, - "Make a moderator": "Učiň moderátorem", - "@Make a moderator": { + "logout": "Odhlásit", + "@logout": { "type": "text", "placeholders": {} }, - "Make an admin": "Učiň adminem", - "@Make an admin": { + "makeAModerator": "Učiň moderátorem", + "@makeAModerator": { "type": "text", "placeholders": {} }, - "Make sure the identifier is valid": "Ujistěte se, že je identifikátor validní", - "@Make sure the identifier is valid": { + "makeAnAdmin": "Učiň adminem", + "@makeAnAdmin": { "type": "text", "placeholders": {} }, - "Message will be removed for all participants": "Zpráva bude odstraněna pro všechny účastníky", - "@Message will be removed for all participants": { + "makeSureTheIdentifierIsValid": "Ujistěte se, že je identifikátor validní", + "@makeSureTheIdentifierIsValid": { "type": "text", "placeholders": {} }, - "Moderator": "Moderátor", - "@Moderator": { + "messageWillBeRemovedWarning": "Zpráva bude odstraněna pro všechny účastníky", + "@messageWillBeRemovedWarning": { "type": "text", "placeholders": {} }, - "Monday": "Pondělí", - "@Monday": { + "moderator": "Moderátor", + "@moderator": { "type": "text", "placeholders": {} }, - "Mute chat": "Ztišit diskuzi", - "@Mute chat": { + "monday": "Pondělí", + "@monday": { "type": "text", "placeholders": {} }, - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": "", - "@Please be aware that you need Pantalaimon to use end-to-end encryption for now.": { + "muteChat": "Ztišit diskuzi", + "@muteChat": { "type": "text", "placeholders": {} }, - "New message in FluffyChat": "Nová zpráva ve FluffyChatu", - "@New message in FluffyChat": { + "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": "text", "placeholders": {} }, - "New private chat": "Nová soukromá diskuze", - "@New private chat": { + "newMessageInFluffyChat": "Nová zpráva ve FluffyChatu", + "@newMessageInFluffyChat": { "type": "text", "placeholders": {} }, - "It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": "Vypadá to, že váš telefon nemá nainstalovány google services. Dobré rozhodnutí pro vaši bezpečnost! Pro příjem notifikací doporučujeme použít miocroG: https://microg.org/", - "@It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": { + "newPrivateChat": "Nová soukromá diskuze", + "@newPrivateChat": { "type": "text", "placeholders": {} }, - "None": "Nic", - "@None": { + "newVerificationRequest": "Nová žádost o ověření!", + "@newVerificationRequest": { "type": "text", "placeholders": {} }, - "No emotes found. 😕": "Žádné emotikony nebyly nalezeny. 😕", - "@No emotes found. 😕": { + "no": "Ne", + "@no": { "type": "text", "placeholders": {} }, - "No permission": "Chybí oprávnění", - "@No permission": { + "noCrossSignBootstrap": "Fluffychet momentálně nepodporuje aktivaci křížového podpisu. Prosím aktivujte ho z klientu Riot.", + "@noCrossSignBootstrap": { "type": "text", "placeholders": {} }, - "No rooms found...": "Žádné místnosti nebyly nalezeny…", - "@No rooms found...": { + "noEmotesFound": "Žádné emotikony nebyly nalezeny. 😕", + "@noEmotesFound": { "type": "text", "placeholders": {} }, - "Not supported in web": "Nepodporováno na webu", - "@Not supported in web": { + "noGoogleServicesWarning": "Vypadá to, že váš telefon nemá nainstalovány google services. Dobré rozhodnutí pro vaši bezpečnost! Pro příjem notifikací doporučujeme použít miocroG: https://microg.org/", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "noMegolmBootstrap": "Fluffychet momentálně nepodporuje aktivaci online záloh klíčů. Prosím zapněte ji z klientu Riot.", + "@noMegolmBootstrap": { + "type": "text", + "placeholders": {} + }, + "none": "Nic", + "@none": { + "type": "text", + "placeholders": {} + }, + "noPermission": "Chybí oprávnění", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "Žádné místnosti nebyly nalezeny…", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "notSupportedInWeb": "Nepodporováno na webu", + "@notSupportedInWeb": { "type": "text", "placeholders": {} }, @@ -830,38 +990,58 @@ "type": "text", "placeholders": {} }, - "Oops something went wrong...": "Ups! Něco se pokazilo…", - "@Oops something went wrong...": { + "onlineKeyBackupDisabled": "Online záloha klíčů je vypnutá", + "@onlineKeyBackupDisabled": { "type": "text", "placeholders": {} }, - "Open app to read messages": "Otevřete aplikaci pro přečtení zpráv", - "@Open app to read messages": { + "onlineKeyBackupEnabled": "Online záloha kíčů je zapnuta", + "@onlineKeyBackupEnabled": { "type": "text", "placeholders": {} }, - "Open camera": "Otevřít fotoaparát", - "@Open camera": { + "oopsSomethingWentWrong": "Ups! Něco se pokazilo…", + "@oopsSomethingWentWrong": { "type": "text", "placeholders": {} }, - "(Optional) Group name": "(Volitelné) Název skupiny", - "@(Optional) Group name": { + "openAppToReadMessages": "Otevřete aplikaci pro přečtení zpráv", + "@openAppToReadMessages": { "type": "text", "placeholders": {} }, - "Participating user devices": "Zúčastněná zařízení uživatele", - "@Participating user devices": { + "openCamera": "Otevřít fotoaparát", + "@openCamera": { "type": "text", "placeholders": {} }, - "Password": "Heslo", - "@Password": { + "optionalGroupName": "(Volitelné) Název skupiny", + "@optionalGroupName": { "type": "text", "placeholders": {} }, - "Pick image": "Zvolit obrázek", - "@Pick image": { + "participatingUserDevices": "Zúčastněná zařízení uživatele", + "@participatingUserDevices": { + "type": "text", + "placeholders": {} + }, + "passphraseOrKey": "heslo nebo klíč k ověření", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "password": "Heslo", + "@password": { + "type": "text", + "placeholders": {} + }, + "pickImage": "Zvolit obrázek", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "pin": "Připnout zprávu", + "@pin": { "type": "text", "placeholders": {} }, @@ -872,43 +1052,33 @@ "fileName": {} } }, - "Please choose a username": "Prosíme zvolte si uživatelské jméno", - "@Please choose a username": { + "pleaseChooseAUsername": "Prosíme zvolte si uživatelské jméno", + "@pleaseChooseAUsername": { "type": "text", "placeholders": {} }, - "Please enter a matrix identifier": "Prosíme zadejte identifikátor sítě matrix", - "@Please enter a matrix identifier": { + "pleaseEnterAMatrixIdentifier": "Prosíme zadejte identifikátor sítě matrix", + "@pleaseEnterAMatrixIdentifier": { "type": "text", "placeholders": {} }, - "Please enter your password": "Prosíme zadejte heslo", - "@Please enter your password": { + "pleaseEnterYourPassword": "Prosíme zadejte heslo", + "@pleaseEnterYourPassword": { "type": "text", "placeholders": {} }, - "Please enter your username": "Prosíme zadejte uživateslké jméno", - "@Please enter your username": { + "pleaseEnterYourUsername": "Prosíme zadejte uživateslké jméno", + "@pleaseEnterYourUsername": { "type": "text", "placeholders": {} }, - "Public Rooms": "Veřejné místnosti", - "@Public Rooms": { + "publicRooms": "Veřejné místnosti", + "@publicRooms": { "type": "text", "placeholders": {} }, - "Rejoin": "Připojit znovu", - "@Rejoin": { - "type": "text", - "placeholders": {} - }, - "Render rich message content": "Zobrazit formátovaný obsah", - "@Render rich message content": { - "type": "text", - "placeholders": {} - }, - "Recording": "Nahrávání", - "@Recording": { + "recording": "Nahrávání", + "@recording": { "type": "text", "placeholders": {} }, @@ -919,6 +1089,11 @@ "username": {} } }, + "reject": "Zamítnout", + "@reject": { + "type": "text", + "placeholders": {} + }, "rejectedTheInvitation": "{username} odmítli pozvání", "@rejectedTheInvitation": { "type": "text", @@ -926,8 +1101,18 @@ "username": {} } }, - "Remove all other devices": "Odstranit všechna další zařízení", - "@Remove all other devices": { + "rejoin": "Připojit znovu", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "Odstranit", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "Odstranit všechna další zařízení", + "@removeAllOtherDevices": { "type": "text", "placeholders": {} }, @@ -938,70 +1123,58 @@ "username": {} } }, - "Remove device": "Odstraň zařízení", - "@Remove device": { + "removeDevice": "Odstraň zařízení", + "@removeDevice": { "type": "text", "placeholders": {} }, - "Remove exile": "", - "@Remove exile": { + "removeExile": "Odblokovat", + "@removeExile": { "type": "text", "placeholders": {} }, - "Revoke all permissions": "Vezmi zpět všechna oprávnění", - "@Revoke all permissions": { + "removeMessage": "Odstranit zprávu", + "@removeMessage": { "type": "text", "placeholders": {} }, - "Remove": "Odstranit", - "@Remove": { + "renderRichContent": "Zobrazit formátovaný obsah", + "@renderRichContent": { "type": "text", "placeholders": {} }, - "Remove message": "Odstranit zprávu", - "@Remove message": { + "reply": "Odpovědět", + "@reply": { "type": "text", "placeholders": {} }, - "Reply": "Odpovědět", - "@Reply": { + "requestPermission": "Vyžádat oprávnění", + "@requestPermission": { "type": "text", "placeholders": {} }, - "Request permission": "Vyžádat oprávnění", - "@Request permission": { + "requestToReadOlderMessages": "Vyžádat přečtení starších zpráv", + "@requestToReadOlderMessages": { "type": "text", "placeholders": {} }, - "Request to read older messages": "Vyžádat přečtení starších zpráv", - "@Request to read older messages": { + "revokeAllPermissions": "Vezmi zpět všechna oprávnění", + "@revokeAllPermissions": { "type": "text", "placeholders": {} }, - "Saturday": "Sobota", - "@Saturday": { + "roomHasBeenUpgraded": "Místnost byla upgradována", + "@roomHasBeenUpgraded": { "type": "text", "placeholders": {} }, - "Share": "Sdílet", - "@Share": { + "saturday": "Sobota", + "@saturday": { "type": "text", "placeholders": {} }, - "sharedTheLocation": "{username} nasdíleli lokaci", - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "Search for a chat": "Hledej diskuzi", - "@Search for a chat": { - "type": "text", - "placeholders": {} - }, - "Seen a long time ago": "", - "@Seen a long time ago": { + "searchForAChat": "Hledej diskuzi", + "@searchForAChat": { "type": "text", "placeholders": {} }, @@ -1012,14 +1185,6 @@ "username": {} } }, - "seenByUserAndUser": "Viděno uživateli {username} a {username2}", - "@seenByUserAndUser": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, "seenByUserAndCountOthers": "Viděno uživateli {username} a {count} dalšími", "@seenByUserAndCountOthers": { "type": "text", @@ -1028,23 +1193,51 @@ "count": {} } }, - "Send": "Odeslat", - "@Send": { + "seenByUserAndUser": "Viděno uživateli {username} a {username2}", + "@seenByUserAndUser": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "send": "Odeslat", + "@send": { "type": "text", "placeholders": {} }, - "Send a message": "Odeslat zprávu", - "@Send a message": { + "sendAMessage": "Odeslat zprávu", + "@sendAMessage": { "type": "text", "placeholders": {} }, - "Send file": "Odeslat soubor", - "@Send file": { + "sendAudio": "Odeslat audio", + "@sendAudio": { "type": "text", "placeholders": {} }, - "Send image": "Odeslat obrázek", - "@Send image": { + "sendBugReports": "Umožňuje zasílání hlášení o chybách prostřednictvím sentry.io", + "@sendBugReports": { + "type": "text", + "placeholders": {} + }, + "sendFile": "Odeslat soubor", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "Odeslat obrázek", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "Odeslat originál", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendVideo": "Odeslat video", + "@sendVideo": { "type": "text", "placeholders": {} }, @@ -1083,98 +1276,129 @@ "username": {} } }, - "Set a profile picture": "Nastavit profilový obrázek", - "@Set a profile picture": { + "sentCallInformations": "{senderName} odeslal informace o hovoru", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "sentryInfo": "Informace o vašem soukromí: https://sentry.io/security/", + "@sentryInfo": { "type": "text", "placeholders": {} }, - "Set group description": "Nastavit popis skupiny", - "@Set group description": { + "sessionVerified": "Sezení je ověřeno", + "@sessionVerified": { "type": "text", "placeholders": {} }, - "Set invitation link": "Nastavit zvací odkaz", - "@Set invitation link": { + "setAProfilePicture": "Nastavit profilový obrázek", + "@setAProfilePicture": { "type": "text", "placeholders": {} }, - "Set status": "Nastavit status", - "@Set status": { + "setGroupDescription": "Nastavit popis skupiny", + "@setGroupDescription": { "type": "text", "placeholders": {} }, - "Settings": "Nastavení", - "@Settings": { + "setInvitationLink": "Nastavit zvací odkaz", + "@setInvitationLink": { "type": "text", "placeholders": {} }, - "Sign up": "Registrovat se", - "@Sign up": { + "setStatus": "Nastavit status", + "@setStatus": { "type": "text", "placeholders": {} }, - "Change your style": "Nastavte svůj styl", - "@Change your style": { + "settings": "Nastavení", + "@settings": { "type": "text", "placeholders": {} }, - "System": "Systém", - "@System": { + "share": "Sdílet", + "@share": { "type": "text", "placeholders": {} }, - "How are you today?": "Jak se máte?", - "@How are you today?": { + "sharedTheLocation": "{username} nasdíleli lokaci", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "signUp": "Registrovat se", + "@signUp": { "type": "text", "placeholders": {} }, - "Light": "Světlý", - "@Light": { + "skip": "Přeskočit", + "@skip": { "type": "text", "placeholders": {} }, - "Dark": "Tmavý", - "@Dark": { + "sourceCode": "Zdrojové kódy", + "@sourceCode": { "type": "text", "placeholders": {} }, - "Use Amoled compatible colors?": "Použít barvy kompatibilní s Amoled displayem?", - "@Use Amoled compatible colors?": { + "startedACall": "{senderName} zahájil hovor", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "startYourFirstChat": "Začněte svou první diskuzi :)", + "@startYourFirstChat": { "type": "text", "placeholders": {} }, - "Source code": "Zdrojové kódy", - "@Source code": { + "statusExampleMessage": "Jak se máte?", + "@statusExampleMessage": { "type": "text", "placeholders": {} }, - "Start your first chat :-)": "Začněte svou první diskuzi :)", - "@Start your first chat :-)": { + "submit": "Potvrdit", + "@submit": { "type": "text", "placeholders": {} }, - "Sunday": "Neděle", - "@Sunday": { + "sunday": "Neděle", + "@sunday": { "type": "text", "placeholders": {} }, - "Donate": "Přispějte", - "@Donate": { + "systemTheme": "Systém", + "@systemTheme": { "type": "text", "placeholders": {} }, - "Tap to show menu": "Klepněte pro zobrazení menu", - "@Tap to show menu": { + "tapToShowMenu": "Klepněte pro zobrazení menu", + "@tapToShowMenu": { "type": "text", "placeholders": {} }, - "This room has been archived.": "Tato místnost byla archivována.", - "@This room has been archived.": { + "theyDontMatch": "Neshodují se", + "@theyDontMatch": { "type": "text", "placeholders": {} }, - "Thursday": "Čtvrtek", - "@Thursday": { + "theyMatch": "Shodují se", + "@theyMatch": { + "type": "text", + "placeholders": {} + }, + "thisRoomHasBeenArchived": "Tato místnost byla archivována.", + "@thisRoomHasBeenArchived": { + "type": "text", + "placeholders": {} + }, + "thursday": "Čtvrtek", + "@thursday": { "type": "text", "placeholders": {} }, @@ -1194,17 +1418,17 @@ "type": "text", "placeholders": {} }, - "Try to send again": "", - "@Try to send again": { + "tryToSendAgain": "Pokusit se odeslat znovu", + "@tryToSendAgain": { "type": "text", "placeholders": {} }, - "Tuesday": "", - "@Tuesday": { + "tuesday": "Úterý", + "@tuesday": { "type": "text", "placeholders": {} }, - "unbannedUser": "", + "unbannedUser": "{username} zrušil zákaz pro {targetName}", "@unbannedUser": { "type": "text", "placeholders": { @@ -1212,18 +1436,18 @@ "targetName": {} } }, - "Unmute chat": "Zrušit ztišení", - "@Unmute chat": { + "unblockDevice": "Odblokovat zařízení", + "@unblockDevice": { "type": "text", "placeholders": {} }, - "Unknown device": "Neznámé zařízení", - "@Unknown device": { + "unknownDevice": "Neznámé zařízení", + "@unknownDevice": { "type": "text", "placeholders": {} }, - "Unknown encryption algorithm": "Neznámý šifrovací algoritmus", - "@Unknown encryption algorithm": { + "unknownEncryptionAlgorithm": "Neznámý šifrovací algoritmus", + "@unknownEncryptionAlgorithm": { "type": "text", "placeholders": {} }, @@ -1234,6 +1458,21 @@ "type": {} } }, + "unknownSessionVerify": "Neznámé sezení, prosím o ověření", + "@unknownSessionVerify": { + "type": "text", + "placeholders": {} + }, + "unmuteChat": "Zrušit ztišení", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unpin": "Odepnout zprávu", + "@unpin": { + "type": "text", + "placeholders": {} + }, "unreadChats": "{unreadCount} nepřečtených diskuzí", "@unreadChats": { "type": "text", @@ -1256,6 +1495,11 @@ "unreadChats": {} } }, + "useAmoledTheme": "Použít barvy kompatibilní s Amoled displayem?", + "@useAmoledTheme": { + "type": "text", + "placeholders": {} + }, "userAndOthersAreTyping": "{username} a {count} dalších píší…", "@userAndOthersAreTyping": { "type": "text", @@ -1272,11 +1516,6 @@ "username2": {} } }, - "Username": "Uživatelské jméno", - "@Username": { - "type": "text", - "placeholders": {} - }, "userIsTyping": "{username} píše…", "@userIsTyping": { "type": "text", @@ -1284,6 +1523,18 @@ "username": {} } }, + "userLeftTheChat": "{username} opustili diskuzi", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "Uživatelské jméno", + "@username": { + "type": "text", + "placeholders": {} + }, "userSentUnknownEvent": "{username} poslal událost {type}", "@userSentUnknownEvent": { "type": "text", @@ -1292,103 +1543,163 @@ "type": {} } }, - "Verify": "Ověř", - "@Verify": { + "verifiedSession": "Sezení úspěšně ověřeno!", + "@verifiedSession": { "type": "text", "placeholders": {} }, - "Video call": "Video hovor", - "@Video call": { + "verify": "Ověř", + "@verify": { "type": "text", "placeholders": {} }, - "Visible for all participants": "Viditelné pro všechny účastníky", - "@Visible for all participants": { + "verifyManual": "Ověřit ručně", + "@verifyManual": { "type": "text", "placeholders": {} }, - "Visible for everyone": "Viditelné pro všechny", - "@Visible for everyone": { + "verifyStart": "Spustit ověření", + "@verifyStart": { "type": "text", "placeholders": {} }, - "Visibility of the chat history": "Viditelnost historie diskuze", - "@Visibility of the chat history": { + "verifySuccess": "Ověření proběhlo úspěšně!", + "@verifySuccess": { "type": "text", "placeholders": {} }, - "Voice message": "Hlasová zpráva", - "@Voice message": { + "verifyTitle": "Ověřuji druhý účet", + "@verifyTitle": { "type": "text", "placeholders": {} }, - "Wallpaper": "Pozadí", - "@Wallpaper": { + "verifyUser": "Ověřit uživatele", + "@verifyUser": { "type": "text", "placeholders": {} }, - "End to end encryption is currently in Beta! Use at your own risk!": "Koncové šifrování je momentálně v Beta verzi! Používejte na vlastní nebezpečí!", - "@End to end encryption is currently in Beta! Use at your own risk!": { + "videoCall": "Video hovor", + "@videoCall": { "type": "text", "placeholders": {} }, - "Wednesday": "Středa", - "@Wednesday": { + "visibilityOfTheChatHistory": "Viditelnost historie diskuze", + "@visibilityOfTheChatHistory": { "type": "text", "placeholders": {} }, - "Welcome to the cutest instant messenger in the matrix network.": "Vítejte v nejroztomilejší diskuzní aplikaci pro síť matrix.", - "@Welcome to the cutest instant messenger in the matrix network.": { + "visibleForAllParticipants": "Viditelné pro všechny účastníky", + "@visibleForAllParticipants": { "type": "text", "placeholders": {} }, - "Who is allowed to join this group": "Kdo se může připojit do této skupiny", - "@Who is allowed to join this group": { + "visibleForEveryone": "Viditelné pro všechny", + "@visibleForEveryone": { "type": "text", "placeholders": {} }, - "Write a message...": "Napište zprávu…", - "@Write a message...": { + "voiceMessage": "Hlasová zpráva", + "@voiceMessage": { "type": "text", "placeholders": {} }, - "Yes": "Ano", - "@Yes": { + "waitingPartnerAcceptRequest": "Čeká se na potvrzení žádosti partnerem…", + "@waitingPartnerAcceptRequest": { "type": "text", "placeholders": {} }, - "You": "Ty", - "@You": { + "waitingPartnerEmoji": "Čeká se na potvrzení emoji partnerem…", + "@waitingPartnerEmoji": { "type": "text", "placeholders": {} }, - "You are invited to this chat": "Jste zváni do této diskuze", - "@You are invited to this chat": { + "waitingPartnerNumbers": "Čeká se na potvrzení čísel partnerem…", + "@waitingPartnerNumbers": { "type": "text", "placeholders": {} }, - "You are no longer participating in this chat": "Této diskuze se nadále neúčastníte", - "@You are no longer participating in this chat": { + "wallpaper": "Pozadí", + "@wallpaper": { "type": "text", "placeholders": {} }, - "You cannot invite yourself": "Nemůžete pozvat sami sebe", - "@You cannot invite yourself": { + "warningEncryptionInBeta": "Koncové šifrování je momentálně v Beta verzi! Používejte na vlastní nebezpečí!", + "@warningEncryptionInBeta": { "type": "text", "placeholders": {} }, - "You have been banned from this chat": "Byli jste zabanováni z této diskuze", - "@You have been banned from this chat": { + "wednesday": "Středa", + "@wednesday": { "type": "text", "placeholders": {} }, - "Your own username": "Vaše vlastní uživatelské jméno", - "@Your own username": { + "welcomeText": "Vítejte v nejroztomilejší diskuzní aplikaci pro síť matrix.", + "@welcomeText": { "type": "text", "placeholders": {} }, - "Accept": "Přijmout", - "@Accept": { + "whoIsAllowedToJoinThisGroup": "Kdo se může připojit do této skupiny", + "@whoIsAllowedToJoinThisGroup": { + "type": "text", + "placeholders": {} + }, + "writeAMessage": "Napište zprávu…", + "@writeAMessage": { + "type": "text", + "placeholders": {} + }, + "yes": "Ano", + "@yes": { + "type": "text", + "placeholders": {} + }, + "you": "Ty", + "@you": { + "type": "text", + "placeholders": {} + }, + "youAreInvitedToThisChat": "Jste zváni do této diskuze", + "@youAreInvitedToThisChat": { + "type": "text", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Této diskuze se nadále neúčastníte", + "@youAreNoLongerParticipatingInThisChat": { + "type": "text", + "placeholders": {} + }, + "youCannotInviteYourself": "Nemůžete pozvat sami sebe", + "@youCannotInviteYourself": { + "type": "text", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Byl vám zablokován přístup k tomuto chatu", + "@youHaveBeenBannedFromThisChat": { + "type": "text", + "placeholders": {} + }, + "yourOwnUsername": "Vaše vlastní uživatelské jméno", + "@yourOwnUsername": { + "type": "text", + "placeholders": {} + }, + "warning": "Varování!", + "@warning": { + "type": "text", + "placeholders": {} + }, + "passwordHasBeenChanged": "Heslo bylo změněno", + "@passwordHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "deleteAccount": "Smazat účet", + "@deleteAccount": { + "type": "text", + "placeholders": {} + }, + "deactivateAccountWarning": "Tímto krokem se deaktivuje váš uživatelský účet. Akci nelze vrátit zpět! Jste si jistí?", + "@deactivateAccountWarning": { "type": "text", "placeholders": {} } diff --git a/lib/l10n/intl_de.arb b/lib/l10n/intl_de.arb index c996436..5d931a4 100644 --- a/lib/l10n/intl_de.arb +++ b/lib/l10n/intl_de.arb @@ -1,7 +1,13 @@ { - "@@last_modified": "2020-01-20T12:59:40.796070", - "About": "Über", - "@About": { + "@@locale": "de", + "@@last_modified": "2020-09-23 11:46:02.811571", + "about": "Über", + "@about": { + "type": "text", + "placeholders": {} + }, + "accept": "Annehmen", + "@accept": { "type": "text", "placeholders": {} }, @@ -12,13 +18,13 @@ "username": {} } }, - "Account": "Konto", - "@Account": { + "account": "Konto", + "@account": { "type": "text", "placeholders": {} }, - "Account informations": "Kontoinformationen", - "@Account informations": { + "accountInformation": "Kontoinformationen", + "@accountInformation": { "type": "text", "placeholders": {} }, @@ -29,13 +35,13 @@ "username": {} } }, - "Add a group description": "Eine Beschreibung für die Gruppe hinzufügen", - "@Add a group description": { + "addGroupDescription": "Eine Beschreibung für die Gruppe hinzufügen", + "@addGroupDescription": { "type": "text", "placeholders": {} }, - "Admin": "Admin", - "@Admin": { + "admin": "Admin", + "@admin": { "type": "text", "placeholders": {} }, @@ -44,53 +50,82 @@ "type": "text", "placeholders": {} }, - "Already have an account?": "Hast du schon einen Account?", - "@Already have an account?": { + "alreadyHaveAnAccount": "Hast du schon einen Account?", + "@alreadyHaveAnAccount": { "type": "text", "placeholders": {} }, - "Anyone can join": "Jeder darf beitreten", - "@Anyone can join": { + "answeredTheCall": "{senderName} hat den Anruf abgehoben", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "Jeder darf beitreten", + "@anyoneCanJoin": { "type": "text", "placeholders": {} }, - "Archive": "Archiv", - "@Archive": { + "archive": "Archiv", + "@archive": { "type": "text", "placeholders": {} }, - "Archived Room": "Archivierter Raum", - "@Archived Room": { + "archivedRoom": "Archivierter Raum", + "@archivedRoom": { "type": "text", "placeholders": {} }, - "Are guest users allowed to join": "Dürfen Gast-Benutzer beitreten", - "@Are guest users allowed to join": { + "areGuestsAllowedToJoin": "Dürfen Gast-Benutzer beitreten", + "@areGuestsAllowedToJoin": { "type": "text", "placeholders": {} }, - "Are you sure?": "Bist Du sicher?", - "@Are you sure?": { + "areYouSure": "Bist Du sicher?", + "@areYouSure": { "type": "text", "placeholders": {} }, - "Authentication": "Authentifizierung", - "@Authentication": { + "askSSSSCache": "Bitte gib dein Secure-Store Passwort oder Wiederherstellungsschlüssel ein, um die Keys zu cachen.", + "@askSSSSCache": { "type": "text", "placeholders": {} }, - "Avatar has been changed": "Avatar wurde geändert", - "@Avatar has been changed": { + "askSSSSSign": "Bitte gebe um die andere Person signieren zu können dein Secure-Store Passwort oder Wiederherstellungsschlüssel ein.", + "@askSSSSSign": { "type": "text", "placeholders": {} }, - "Ban from chat": "Aus dem Chat verbannen", - "@Ban from chat": { + "askSSSSVerify": "Bitte gebe um deine Session zu verifizieren dein Secure-Store Passwort oder Wiederherstellungsschlüssel ein.", + "@askSSSSVerify": { "type": "text", "placeholders": {} }, - "Banned": "Verbannt", - "@Banned": { + "askVerificationRequest": "Diese Bestätigungsanfrage von {username} annehmen?", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "authentication": "Authentifizierung", + "@authentication": { + "type": "text", + "placeholders": {} + }, + "avatarHasBeenChanged": "Avatar wurde geändert", + "@avatarHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "banFromChat": "Aus dem Chat verbannen", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "banned": "Verbannt", + "@banned": { "type": "text", "placeholders": {} }, @@ -102,6 +137,11 @@ "targetName": {} } }, + "blockDevice": "Blockiere Gerät", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, "byDefaultYouWillBeConnectedTo": "Standardmäßig wirst Du mit {homeserver} verbunden", "@byDefaultYouWillBeConnectedTo": { "type": "text", @@ -109,8 +149,13 @@ "homeserver": {} } }, - "Cancel": "Abbrechen", - "@Cancel": { + "cachedKeys": "Keys erfolgreich gecached!", + "@cachedKeys": { + "type": "text", + "placeholders": {} + }, + "cancel": "Abbrechen", + "@cancel": { "type": "text", "placeholders": {} }, @@ -121,15 +166,7 @@ "username": {} } }, - "changedTheChatNameTo": "{username} hat den Chat-Namen geändert zu: '{chatname}'", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, - "changedTheChatDescriptionTo": "{username} hat die Beschreibung vom Chat geändert zu: '{description}'", + "changedTheChatDescriptionTo": "{username} hat die Chat-Beschreibung geändert zu: „{description}“", "@changedTheChatDescriptionTo": { "type": "text", "placeholders": { @@ -137,7 +174,15 @@ "description": {} } }, - "changedTheChatPermissions": "{username} hat die Berechtigungen vom Chat geändert", + "changedTheChatNameTo": "{username} hat den Chat-Namen geändert zu: „{chatname}“", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, + "changedTheChatPermissions": "{username} hat die Chat-Berechtigungen geändert", "@changedTheChatPermissions": { "type": "text", "placeholders": { @@ -152,19 +197,14 @@ "displayname": {} } }, - "Change the homeserver": "Anderen Homeserver verwenden", - "@Change the homeserver": { - "type": "text", - "placeholders": {} - }, - "changedTheGuestAccessRules": "{username} hat Gast-Zugangsregeln geändert", + "changedTheGuestAccessRules": "{username} hat die Zugangsregeln für Gäste geändert", "@changedTheGuestAccessRules": { "type": "text", "placeholders": { "username": {} } }, - "changedTheGuestAccessRulesTo": "{username} hat Gast-Zugangsregeln geändert zu: {rules}", + "changedTheGuestAccessRulesTo": "{username} hat die Zugangsregeln für Gäste geändert zu: {rules}", "@changedTheGuestAccessRulesTo": { "type": "text", "placeholders": { @@ -209,7 +249,7 @@ "username": {} } }, - "changedTheRoomAliases": "{username} hat die Raum-Aliase geändert", + "changedTheRoomAliases": "{username} hat die Raum-Aliasse geändert", "@changedTheRoomAliases": { "type": "text", "placeholders": { @@ -223,88 +263,113 @@ "username": {} } }, - "Changelog": "Protokoll der Änderungen", - "@Changelog": { + "changelog": "Protokoll der Änderungen", + "@changelog": { "type": "text", "placeholders": {} }, - "Change the name of the group": "Gruppenname ändern", - "@Change the name of the group": { + "changesHaveBeenSaved": "Änderungen wurden gespeichert", + "@changesHaveBeenSaved": { "type": "text", "placeholders": {} }, - "Change wallpaper": "Hintergrund ändern", - "@Change wallpaper": { + "changeTheHomeserver": "Anderen Homeserver verwenden", + "@changeTheHomeserver": { "type": "text", "placeholders": {} }, - "Change the server": "Ändere den Server", - "@Change the server": { + "changeTheme": "Ändere Deinen Style", + "@changeTheme": { "type": "text", "placeholders": {} }, - "The encryption has been corrupted": "Die Verschlüsselung wurde korrumpiert", - "@The encryption has been corrupted": { + "changeTheNameOfTheGroup": "Gruppenname ändern", + "@changeTheNameOfTheGroup": { "type": "text", "placeholders": {} }, - "Chat": "Chat", - "@Chat": { + "changeTheServer": "Ändere den Server", + "@changeTheServer": { "type": "text", "placeholders": {} }, - "Chat details": "Gruppeninfo", - "@Chat details": { + "changeWallpaper": "Hintergrund ändern", + "@changeWallpaper": { "type": "text", "placeholders": {} }, - "Choose a strong password": "Wähle ein sicheres Passwort", - "@Choose a strong password": { + "channelCorruptedDecryptError": "Die Verschlüsselung wurde korrumpiert", + "@channelCorruptedDecryptError": { "type": "text", "placeholders": {} }, - "Choose a username": "Wähle einen Benutzernamen", - "@Choose a username": { + "chat": "Chat", + "@chat": { "type": "text", "placeholders": {} }, - "Close": "Schließen", - "@Close": { + "chatDetails": "Gruppeninfo", + "@chatDetails": { "type": "text", "placeholders": {} }, - "Confirm": "Bestätigen", - "@Confirm": { + "chooseAStrongPassword": "Wähle ein sicheres Passwort", + "@chooseAStrongPassword": { "type": "text", "placeholders": {} }, - "Connect": "Verbinden", - "@Connect": { + "chooseAUsername": "Wähle einen Benutzernamen", + "@chooseAUsername": { "type": "text", "placeholders": {} }, - "Connection attempt failed": "Verbindungsversuch fehlgeschlagen", - "@Connection attempt failed": { + "close": "Schließen", + "@close": { "type": "text", "placeholders": {} }, - "Contact has been invited to the group": "Kontakt wurde in die Gruppe eingeladen", - "@Contact has been invited to the group": { + "compareEmojiMatch": "Vergleiche und stelle sicher, dass die folgenden Emoji mit denen des anderen Gerätes übereinstimmen:", + "@compareEmojiMatch": { "type": "text", "placeholders": {} }, - "Content viewer": "Content Viewer", - "@Content viewer": { + "compareNumbersMatch": "Vergleiche und stelle sicher, dass die folgenden Zahlen mit denen des anderen Gerätes übereinstimmen:", + "@compareNumbersMatch": { "type": "text", "placeholders": {} }, - "Copied to clipboard": "Wurde in die Zwischenablage kopiert", - "@Copied to clipboard": { + "confirm": "Bestätigen", + "@confirm": { "type": "text", "placeholders": {} }, - "Copy": "Kopieren", - "@Copy": { + "connect": "Verbinden", + "@connect": { + "type": "text", + "placeholders": {} + }, + "connectionAttemptFailed": "Verbindungsversuch fehlgeschlagen", + "@connectionAttemptFailed": { + "type": "text", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kontakt wurde in die Gruppe eingeladen", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "contentViewer": "Content Viewer", + "@contentViewer": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "Wurde in die Zwischenablage kopiert", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "copy": "Kopieren", + "@copy": { "type": "text", "placeholders": {} }, @@ -315,13 +380,13 @@ "error": {} } }, - "Could not set avatar": "Profilbild konnte nicht gesetzt werden", - "@Could not set avatar": { + "couldNotSetAvatar": "Profilbild konnte nicht gesetzt werden", + "@couldNotSetAvatar": { "type": "text", "placeholders": {} }, - "Could not set displayname": "Anzeigename konnte nicht gesetzt werden", - "@Could not set displayname": { + "couldNotSetDisplayname": "Anzeigename konnte nicht gesetzt werden", + "@couldNotSetDisplayname": { "type": "text", "placeholders": {} }, @@ -332,13 +397,13 @@ "count": {} } }, - "Create": "Erstellen", - "@Create": { + "create": "Erstellen", + "@create": { "type": "text", "placeholders": {} }, - "Create account now": "Account jetzt erstellen", - "@Create account now": { + "createAccountNow": "Account jetzt erstellen", + "@createAccountNow": { "type": "text", "placeholders": {} }, @@ -349,13 +414,28 @@ "username": {} } }, - "Create new group": "Neue Gruppe", - "@Create new group": { + "createNewGroup": "Neue Gruppe", + "@createNewGroup": { "type": "text", "placeholders": {} }, - "Currently active": "Jetzt gerade online", - "@Currently active": { + "crossSigningDisabled": "Cross-Signing ist deaktiviert", + "@crossSigningDisabled": { + "type": "text", + "placeholders": {} + }, + "crossSigningEnabled": "Cross-Signing ist aktiviert", + "@crossSigningEnabled": { + "type": "text", + "placeholders": {} + }, + "currentlyActive": "Jetzt gerade online", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "Dunkel", + "@darkTheme": { "type": "text", "placeholders": {} }, @@ -384,63 +464,58 @@ "day": {} } }, - "Delete": "Löschen", - "@Delete": { + "delete": "Löschen", + "@delete": { "type": "text", "placeholders": {} }, - "Delete message": "Nachricht löschen", - "@Delete message": { + "deleteMessage": "Nachricht löschen", + "@deleteMessage": { "type": "text", "placeholders": {} }, - "Deny": "Ablehnen", - "@Deny": { + "deny": "Ablehnen", + "@deny": { "type": "text", "placeholders": {} }, - "Device": "Gerät", - "@Device": { + "device": "Gerät", + "@device": { "type": "text", "placeholders": {} }, - "Devices": "Geräte", - "@Devices": { + "devices": "Geräte", + "@devices": { "type": "text", "placeholders": {} }, - "Discard picture": "Bild verwerfen", - "@Discard picture": { + "discardPicture": "Bild verwerfen", + "@discardPicture": { "type": "text", "placeholders": {} }, - "Displayname has been changed": "Anzeigename wurde geändert", - "@Displayname has been changed": { + "displaynameHasBeenChanged": "Anzeigename wurde geändert", + "@displaynameHasBeenChanged": { "type": "text", "placeholders": {} }, - "Download file": "Datei herunterladen", - "@Download file": { + "donate": "Spenden", + "@donate": { "type": "text", "placeholders": {} }, - "Edit displayname": "Anzeigename ändern", - "@Edit displayname": { + "downloadFile": "Datei herunterladen", + "@downloadFile": { "type": "text", "placeholders": {} }, - "Emote Settings": "Emote Einstellungen", - "@Emote Settings": { + "editDisplayname": "Anzeigename ändern", + "@editDisplayname": { "type": "text", "placeholders": {} }, - "Emote shortcode": "Emote kürzel", - "@Emote shortcode": { - "type": "text", - "placeholders": {} - }, - "emoteWarnNeedToPick": "Wähle ein Emote-kürzel und ein Bild!", - "@emoteWarnNeedToPick": { + "editJitsiInstance": "Jitsi-Instanz ändern", + "@editJitsiInstance": { "type": "text", "placeholders": {} }, @@ -449,103 +524,130 @@ "type": "text", "placeholders": {} }, - "emoteInvalid": "Ungültiges Emote-kürzel!", + "emoteInvalid": "Ungültiges Emote-Kürzel!", "@emoteInvalid": { "type": "text", "placeholders": {} }, - "Empty chat": "Leerer Chat", - "@Empty chat": { + "emoteSettings": "Emote-Einstellungen", + "@emoteSettings": { "type": "text", "placeholders": {} }, - "You won't be able to disable the encryption anymore. Are you sure?": "Du wirst die Verschlüsselung nicht mehr ausstellen können. Bist Du sicher?", - "@You won't be able to disable the encryption anymore. Are you sure?": { + "emoteShortcode": "Emote-Kürzel", + "@emoteShortcode": { "type": "text", "placeholders": {} }, - "Encryption algorithm": "Verschlüsselungsalgorithmus", - "@Encryption algorithm": { + "emoteWarnNeedToPick": "Wähle ein Emote-Kürzel und ein Bild!", + "@emoteWarnNeedToPick": { "type": "text", "placeholders": {} }, - "Encryption is not enabled": "Verschlüsselung ist nicht aktiviert", - "@Encryption is not enabled": { + "emptyChat": "Leerer Chat", + "@emptyChat": { "type": "text", "placeholders": {} }, - "End-to-end encryption settings": "Ende-zu-Ende-Verschlüsselung", - "@End-to-end encryption settings": { + "enableEncryptionWarning": "Du wirst die Verschlüsselung nicht mehr ausstellen können. Bist Du sicher?", + "@enableEncryptionWarning": { "type": "text", "placeholders": {} }, - "Enter a group name": "Gib einen Gruppennamen ein", - "@Enter a group name": { + "encryption": "Verschlüsselung", + "@encryption": { "type": "text", "placeholders": {} }, - "Enter a username": "Gib einen Benutzernamen ein", - "@Enter a username": { + "encryptionAlgorithm": "Verschlüsselungsalgorithmus", + "@encryptionAlgorithm": { "type": "text", "placeholders": {} }, - "Enter your homeserver": "Gib Deinen Homeserver ein", - "@Enter your homeserver": { + "encryptionNotEnabled": "Verschlüsselung ist nicht aktiviert", + "@encryptionNotEnabled": { "type": "text", "placeholders": {} }, - "FluffyChat": "FluffyChat", - "@FluffyChat": { + "end2endEncryptionSettings": "Ende-zu-Ende-Verschlüsselung", + "@end2endEncryptionSettings": { "type": "text", "placeholders": {} }, - "File name": "Dateiname", - "@File name": { + "endedTheCall": "{senderName} hat den Anruf aufgelegt", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterAGroupName": "Gib einen Gruppennamen ein", + "@enterAGroupName": { "type": "text", "placeholders": {} }, - "File size": "Dateigröße", - "@File size": { + "enterAUsername": "Gib einen Benutzernamen ein", + "@enterAUsername": { "type": "text", "placeholders": {} }, - "Forward": "Weiterleiten", - "@Forward": { + "enterYourHomeserver": "Gib Deinen Homeserver ein", + "@enterYourHomeserver": { "type": "text", "placeholders": {} }, - "Friday": "Freitag", - "@Friday": { + "fileName": "Dateiname", + "@fileName": { "type": "text", "placeholders": {} }, - "From joining": "Ab dem Beitritt", - "@From joining": { + "fileSize": "Dateigröße", + "@fileSize": { "type": "text", "placeholders": {} }, - "From the invitation": "Ab der Einladung", - "@From the invitation": { + "fluffychat": "FluffyChat", + "@fluffychat": { "type": "text", "placeholders": {} }, - "Group": "Gruppe", - "@Group": { + "forward": "Weiterleiten", + "@forward": { "type": "text", "placeholders": {} }, - "Group description": "Gruppenbeschreibung", - "@Group description": { + "friday": "Freitag", + "@friday": { "type": "text", "placeholders": {} }, - "Group description has been changed": "Gruppenbeschreibung wurde geändert", - "@Group description has been changed": { + "fromJoining": "Ab dem Beitritt", + "@fromJoining": { "type": "text", "placeholders": {} }, - "Group is public": "Öffentliche Gruppe", - "@Group is public": { + "fromTheInvitation": "Ab der Einladung", + "@fromTheInvitation": { + "type": "text", + "placeholders": {} + }, + "group": "Gruppe", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupDescription": "Gruppenbeschreibung", + "@groupDescription": { + "type": "text", + "placeholders": {} + }, + "groupDescriptionHasBeenChanged": "Gruppenbeschreibung wurde geändert", + "@groupDescriptionHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "Öffentliche Gruppe", + "@groupIsPublic": { "type": "text", "placeholders": {} }, @@ -556,13 +658,13 @@ "displayname": {} } }, - "Guests are forbidden": "Gäste sind verboten", - "@Guests are forbidden": { + "guestsAreForbidden": "Gäste sind verboten", + "@guestsAreForbidden": { "type": "text", "placeholders": {} }, - "Guests can join": "Gäste dürfen beitreten", - "@Guests can join": { + "guestsCanJoin": "Gäste dürfen beitreten", + "@guestsCanJoin": { "type": "text", "placeholders": {} }, @@ -574,28 +676,33 @@ "targetName": {} } }, - "Help": "Hilfe", - "@Help": { + "help": "Hilfe", + "@help": { "type": "text", "placeholders": {} }, - "Homeserver is not compatible": "Homeserver ist nicht kompatibel", - "@Homeserver is not compatible": { + "homeserverIsNotCompatible": "Homeserver ist nicht kompatibel", + "@homeserverIsNotCompatible": { "type": "text", "placeholders": {} }, - "ID": "ID", - "@ID": { + "id": "ID", + "@id": { "type": "text", "placeholders": {} }, - "Identity": "Identität", - "@Identity": { + "identity": "Identität", + "@identity": { "type": "text", "placeholders": {} }, - "Invite contact": "Kontakt einladen", - "@Invite contact": { + "incorrectPassphraseOrKey": "Falsches Passwort oder Wiederherstellungsschlüssel", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "Kontakt einladen", + "@inviteContact": { "type": "text", "placeholders": {} }, @@ -606,19 +713,11 @@ "groupName": {} } }, - "Invited": "Eingeladen", - "@Invited": { + "invited": "Eingeladen", + "@invited": { "type": "text", "placeholders": {} }, - "inviteText": "{username} hat Dich zu FluffyChat eingeladen. \n1. Installiere FluffyChat: http://fluffy.chat \n2. Melde Dich in der App an \n3. Öffne den Einladungslink: {link}", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, "invitedUser": "{username} hat {targetName} eingeladen", "@invitedUser": { "type": "text", @@ -627,18 +726,26 @@ "targetName": {} } }, - "Invited users only": "Nur eingeladene Benutzer", - "@Invited users only": { + "invitedUsersOnly": "Nur eingeladene Benutzer", + "@invitedUsersOnly": { "type": "text", "placeholders": {} }, - "is typing...": "schreibt...", - "@is typing...": { + "inviteText": "{username} hat Dich zu FluffyChat eingeladen. \n1. Installiere FluffyChat: https://fluffychat.im \n2. Melde Dich in der App an \n3. Öffne den Einladungslink: {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "isDeviceKeyCorrect": "Ist der folgende Geräteschlüssel korrekt?", + "@isDeviceKeyCorrect": { "type": "text", "placeholders": {} }, - "Edit Jitsi instance": "Jitsi Instanz ändern", - "@Edit Jitsi instance": { + "isTyping": "schreibt...", + "@isTyping": { "type": "text", "placeholders": {} }, @@ -649,6 +756,21 @@ "username": {} } }, + "joinRoom": "Raum beitreten", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, + "keysCached": "Keys sind gecached", + "@keysCached": { + "type": "text", + "placeholders": {} + }, + "keysMissing": "Keys fehlen", + "@keysMissing": { + "type": "text", + "placeholders": {} + }, "kicked": "{username} hat {targetName} hinausgeworfen", "@kicked": { "type": "text", @@ -665,33 +787,11 @@ "targetName": {} } }, - "Kick from chat": "Aus dem Chat hinauswerfen", - "@Kick from chat": { + "kickFromChat": "Aus dem Chat hinauswerfen", + "@kickFromChat": { "type": "text", "placeholders": {} }, - "Leave": "Verlassen", - "@Leave": { - "type": "text", - "placeholders": {} - }, - "Left the chat": "Hat den Chat verlassen", - "@Left the chat": { - "type": "text", - "placeholders": {} - }, - "Logout": "Abmelden", - "@Logout": { - "type": "text", - "placeholders": {} - }, - "userLeftTheChat": "{username} hat den Chat verlassen", - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, "lastActiveAgo": "Zuletzt aktiv: {localizedTimeShort}", "@lastActiveAgo": { "type": "text", @@ -699,23 +799,33 @@ "localizedTimeShort": {} } }, - "Last seen IP": "Zuletzt bekannte IP", - "@Last seen IP": { + "lastSeenIp": "Letzte bekannte IP", + "@lastSeenIp": { "type": "text", "placeholders": {} }, - "License": "Lizenz", - "@License": { + "lastSeenLongTimeAgo": "Vor sehr langer Zeit gesehen", + "@lastSeenLongTimeAgo": { "type": "text", "placeholders": {} }, - "Loading... Please wait": "Lade ... Bitte warten", - "@Loading... Please wait": { + "leave": "Verlassen", + "@leave": { "type": "text", "placeholders": {} }, - "Load more...": "Lade mehr ...", - "@Load more...": { + "leftTheChat": "Hat den Chat verlassen", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "Lizenz", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "Hell", + "@lightTheme": { "type": "text", "placeholders": {} }, @@ -726,8 +836,18 @@ "count": {} } }, - "Login": "Login", - "@Login": { + "loadingPleaseWait": "Lade... Bitte warten", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "Lade mehr...", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "login": "Login", + "@login": { "type": "text", "placeholders": {} }, @@ -738,83 +858,108 @@ "homeserver": {} } }, - "Make an admin": "Zum Admin ernennen", - "@Make an admin": { + "logout": "Abmelden", + "@logout": { "type": "text", "placeholders": {} }, - "Make a moderator": "Zum Moderator ernennen", - "@Make a moderator": { + "makeAModerator": "Zum Moderator ernennen", + "@makeAModerator": { "type": "text", "placeholders": {} }, - "Make sure the identifier is valid": "Gib bitte einen richtigen Benutzernamen ein", - "@Make sure the identifier is valid": { + "makeAnAdmin": "Zum Admin ernennen", + "@makeAnAdmin": { "type": "text", "placeholders": {} }, - "Message will be removed for all participants": "Nachricht wird für alle Teilnehmer*innen entfernt", - "@Message will be removed for all participants": { + "makeSureTheIdentifierIsValid": "Gib bitte einen richtigen Benutzernamen ein", + "@makeSureTheIdentifierIsValid": { "type": "text", "placeholders": {} }, - "Moderator": "Moderator", - "@Moderator": { + "messageWillBeRemovedWarning": "Nachricht wird für alle Teilnehmer*innen entfernt", + "@messageWillBeRemovedWarning": { "type": "text", "placeholders": {} }, - "Monday": "Montag", - "@Monday": { + "moderator": "Moderator", + "@moderator": { "type": "text", "placeholders": {} }, - "Mute chat": "Stummschalten", - "@Mute chat": { + "monday": "Montag", + "@monday": { "type": "text", "placeholders": {} }, - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": "Bitte beachte, dass du Pantalaimon brauchst, um Ende-zu-Ende-Verschlüsselung benutzen zu können.", - "@Please be aware that you need Pantalaimon to use end-to-end encryption for now.": { + "muteChat": "Stummschalten", + "@muteChat": { "type": "text", "placeholders": {} }, - "New message in FluffyChat": "Neue Nachricht in FluffyChat", - "@New message in FluffyChat": { + "needPantalaimonWarning": "Bitte beachte, dass du Pantalaimon brauchst, um Ende-zu-Ende-Verschlüsselung benutzen zu können.", + "@needPantalaimonWarning": { "type": "text", "placeholders": {} }, - "New private chat": "Neuer privater Chat", - "@New private chat": { + "newMessageInFluffyChat": "Neue Nachricht in FluffyChat", + "@newMessageInFluffyChat": { "type": "text", "placeholders": {} }, - "It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": "Es sieht so aus als hättest du keine Google Dienste auf deinem Gerät. Das ist eine gute Entscheidung für deine Privatsphäre. Um Push Benachrichtigungen in FluffyChat zu erhalten, empfehlen wir die Verwendung von microG: https://microg.org/", - "@It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": { + "newPrivateChat": "Neuer privater Chat", + "@newPrivateChat": { "type": "text", "placeholders": {} }, - "None": "Keiner", - "@None": { + "newVerificationRequest": "Neue Verifikationsanfrage!", + "@newVerificationRequest": { "type": "text", "placeholders": {} }, - "No emotes found. 😕": "Keine Emotes gefunden. 😕", - "@No emotes found. 😕": { + "no": "Nein", + "@no": { "type": "text", "placeholders": {} }, - "No permission": "Keine Berechtigung", - "@No permission": { + "noCrossSignBootstrap": "Fluffychat kann Cross-Signing noch nicht einschalten. Bitte schalte es innerhalb Element an.", + "@noCrossSignBootstrap": { "type": "text", "placeholders": {} }, - "No rooms found...": "Keine Räume gefunden ...", - "@No rooms found...": { + "noEmotesFound": "Keine Emotes gefunden. 😕", + "@noEmotesFound": { "type": "text", "placeholders": {} }, - "Not supported in web": "Wird in der Web-Version nicht unterstützt", - "@Not supported in web": { + "noGoogleServicesWarning": "Es sieht so aus als hättest du keine Google-Dienste auf deinem Gerät. Das ist eine gute Entscheidung für deine Privatsphäre! Um Push Benachrichtigungen in FluffyChat zu erhalten, empfehlen wir die Verwendung von microG: https://microg.org/", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "noMegolmBootstrap": "Fluffychat kann das Online-Schlüssel-Backup noch nicht aktivieren. Bitte schalte es innerhalb von Element an.", + "@noMegolmBootstrap": { + "type": "text", + "placeholders": {} + }, + "none": "Keiner", + "@none": { + "type": "text", + "placeholders": {} + }, + "noPermission": "Keine Berechtigung", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "Keine Räume gefunden...", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "notSupportedInWeb": "Wird in der Web-Version nicht unterstützt", + "@notSupportedInWeb": { "type": "text", "placeholders": {} }, @@ -830,33 +975,58 @@ "type": "text", "placeholders": {} }, - "Oops something went wrong...": "Hoppla! Da ist etwas schief gelaufen ...", - "@Oops something went wrong...": { + "onlineKeyBackupDisabled": "Online Key Backup ist deaktiviert", + "@onlineKeyBackupDisabled": { "type": "text", "placeholders": {} }, - "Open camera": "Kamera öffnen", - "@Open camera": { + "onlineKeyBackupEnabled": "Online Key Backup ist aktiviert", + "@onlineKeyBackupEnabled": { "type": "text", "placeholders": {} }, - "(Optional) Group name": "(Optional) Name für die Gruppe", - "@(Optional) Group name": { + "oopsSomethingWentWrong": "Hoppla! Da ist etwas schief gelaufen ...", + "@oopsSomethingWentWrong": { "type": "text", "placeholders": {} }, - "Participating user devices": "Teilnehmende Geräte", - "@Participating user devices": { + "openAppToReadMessages": "App öffnen, um Nachrichten zu lesen", + "@openAppToReadMessages": { "type": "text", "placeholders": {} }, - "Password": "Passwort", - "@Password": { + "openCamera": "Kamera öffnen", + "@openCamera": { "type": "text", "placeholders": {} }, - "Pick image": "Wähle Bild", - "@Pick image": { + "optionalGroupName": "(Optional) Name für die Gruppe", + "@optionalGroupName": { + "type": "text", + "placeholders": {} + }, + "participatingUserDevices": "Teilnehmende Geräte", + "@participatingUserDevices": { + "type": "text", + "placeholders": {} + }, + "passphraseOrKey": "Passwort oder Wiederherstellungsschlüssel", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "password": "Passwort", + "@password": { + "type": "text", + "placeholders": {} + }, + "pickImage": "Bild wählen", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "pin": "Anpinnen", + "@pin": { "type": "text", "placeholders": {} }, @@ -867,50 +1037,45 @@ "fileName": {} } }, - "Please choose a username": "Bitte wähle einen Benutzernamen", - "@Please choose a username": { + "pleaseChooseAUsername": "Bitte wähle einen Benutzernamen", + "@pleaseChooseAUsername": { "type": "text", "placeholders": {} }, - "Please enter a matrix identifier": "Bitte eine Matrix ID eingeben", - "@Please enter a matrix identifier": { + "pleaseEnterAMatrixIdentifier": "Bitte eine Matrix ID eingeben", + "@pleaseEnterAMatrixIdentifier": { "type": "text", "placeholders": {} }, - "Please enter your password": "Bitte dein Passwort eingeben", - "@Please enter your password": { + "pleaseEnterYourPassword": "Bitte dein Passwort eingeben", + "@pleaseEnterYourPassword": { "type": "text", "placeholders": {} }, - "Please enter your username": "Bitte deinen Benutzernamen eingeben", - "@Please enter your username": { + "pleaseEnterYourUsername": "Bitte deinen Benutzernamen eingeben", + "@pleaseEnterYourUsername": { "type": "text", "placeholders": {} }, - "Public Rooms": "Öffentliche Räume", - "@Public Rooms": { + "publicRooms": "Öffentliche Räume", + "@publicRooms": { "type": "text", "placeholders": {} }, - "Rejoin": "Wieder beitreten", - "@Rejoin": { + "recording": "Aufnahme", + "@recording": { "type": "text", "placeholders": {} }, - "Render rich message content": "Zeige Nachrichtenformatierungen an", - "@Render rich message content": { - "type": "text", - "placeholders": {} - }, - "redactedAnEvent": "{username} hat ein Event enternt", + "redactedAnEvent": "{username} hat ein Event entfernt", "@redactedAnEvent": { "type": "text", "placeholders": { "username": {} } }, - "Recording": "Aufnahme", - "@Recording": { + "reject": "Ablehnen", + "@reject": { "type": "text", "placeholders": {} }, @@ -921,8 +1086,18 @@ "username": {} } }, - "Remove all other devices": "Alle anderen Geräte entfernen", - "@Remove all other devices": { + "rejoin": "Wieder beitreten", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "Entfernen", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "Alle anderen Geräte entfernen", + "@removeAllOtherDevices": { "type": "text", "placeholders": {} }, @@ -933,65 +1108,58 @@ "username": {} } }, - "Remove device": "Gerät entfernen", - "@Remove device": { + "removeDevice": "Gerät entfernen", + "@removeDevice": { "type": "text", "placeholders": {} }, - "Remove exile": "Verbannung aufheben", - "@Remove exile": { + "removeExile": "Verbannung aufheben", + "@removeExile": { "type": "text", "placeholders": {} }, - "Revoke all permissions": "Alle Berechtigungen zurücknehmen", - "@Revoke all permissions": { + "removeMessage": "Nachricht entfernen", + "@removeMessage": { "type": "text", "placeholders": {} }, - "Remove": "Entfernen", - "@Remove": { + "renderRichContent": "Zeige Nachrichtenformatierungen an", + "@renderRichContent": { "type": "text", "placeholders": {} }, - "Remove message": "Nachricht entfernen", - "@Remove message": { + "reply": "Antworten", + "@reply": { "type": "text", "placeholders": {} }, - "Reply": "Antworten", - "@Reply": { + "requestPermission": "Berechtigung anfragen", + "@requestPermission": { "type": "text", "placeholders": {} }, - "Request permission": "Berechtigung anfragen", - "@Request permission": { + "requestToReadOlderMessages": "Anfrage um ältere Nachrichten zu lesen", + "@requestToReadOlderMessages": { "type": "text", "placeholders": {} }, - "Request to read older messages": "Anfrage um ältere Nachrichten zu lesen", - "@Request to read older messages": { + "revokeAllPermissions": "Alle Berechtigungen zurücknehmen", + "@revokeAllPermissions": { "type": "text", "placeholders": {} }, - "Saturday": "Samstag", - "@Saturday": { + "roomHasBeenUpgraded": "Der Raum wurde ge-upgraded", + "@roomHasBeenUpgraded": { "type": "text", "placeholders": {} }, - "Share": "Teilen", - "@Share": { + "saturday": "Samstag", + "@saturday": { "type": "text", "placeholders": {} }, - "sharedTheLocation": "{username} hat den Standort geteilt", - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "Search for a chat": "Chat suchen", - "@Search for a chat": { + "searchForAChat": "Chat suchen", + "@searchForAChat": { "type": "text", "placeholders": {} }, @@ -1002,10 +1170,13 @@ "username": {} } }, - "Seen a long time ago": "Vor sehr langer Zeit gesehen", - "@Seen a long time ago": { + "seenByUserAndCountOthers": "Gelesen von {username} und {count} anderen", + "@seenByUserAndCountOthers": { "type": "text", - "placeholders": {} + "placeholders": { + "username": {}, + "count": {} + } }, "seenByUserAndUser": "Gelesen von {username} und {username2}", "@seenByUserAndUser": { @@ -1015,31 +1186,43 @@ "username2": {} } }, - "seenByUserAndCountOthers": "Gelesen von {username} und {count} anderen", - "@seenByUserAndCountOthers": { - "type": "text", - "placeholders": { - "username": {}, - "count": {} - } - }, - "Send a message": "Nachricht schreiben", - "@Send a message": { + "send": "Senden", + "@send": { "type": "text", "placeholders": {} }, - "Send": "Senden", - "@Send": { + "sendAMessage": "Nachricht schreiben", + "@sendAMessage": { "type": "text", "placeholders": {} }, - "Send file": "Datei senden", - "@Send file": { + "sendAudio": "Sende Audiodatei", + "@sendAudio": { "type": "text", "placeholders": {} }, - "Send image": "Bild senden", - "@Send image": { + "sendBugReports": "Erlaube das Senden von Fehlermeldungen via sentry.io", + "@sendBugReports": { + "type": "text", + "placeholders": {} + }, + "sendFile": "Datei senden", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "Bild senden", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "Sende Original", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendVideo": "Sende Video", + "@sendVideo": { "type": "text", "placeholders": {} }, @@ -1078,93 +1261,129 @@ "username": {} } }, - "Set a profile picture": "Ein Profilbild festlegen", - "@Set a profile picture": { + "sentCallInformations": "{senderName} hat Anrufinformationen geschickt", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "sentryInfo": "Information über deine Privatsphäre: https://sentry.io/security/", + "@sentryInfo": { "type": "text", "placeholders": {} }, - "Set group description": "Gruppenbeschreibung festlegen", - "@Set group description": { + "sessionVerified": "Sitzung ist verifiziert", + "@sessionVerified": { "type": "text", "placeholders": {} }, - "Set invitation link": "Einladungslink festlegen", - "@Set invitation link": { + "setAProfilePicture": "Ein Profilbild festlegen", + "@setAProfilePicture": { "type": "text", "placeholders": {} }, - "Settings": "Einstellungen", - "@Settings": { + "setGroupDescription": "Gruppenbeschreibung festlegen", + "@setGroupDescription": { "type": "text", "placeholders": {} }, - "Sign up": "Registrieren", - "@Sign up": { + "setInvitationLink": "Einladungslink festlegen", + "@setInvitationLink": { "type": "text", "placeholders": {} }, - "Set status": "Status ändern", - "@Set status": { + "setStatus": "Status ändern", + "@setStatus": { "type": "text", "placeholders": {} }, - "Change your style": "Ändere Deinen Style", - "@Change your style": { + "settings": "Einstellungen", + "@settings": { "type": "text", "placeholders": {} }, - "System": "System", - "@System": { + "share": "Teilen", + "@share": { "type": "text", "placeholders": {} }, - "Light": "Hell", - "@Light": { + "sharedTheLocation": "{username} hat den Standort geteilt", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "signUp": "Registrieren", + "@signUp": { "type": "text", "placeholders": {} }, - "Dark": "Dunkel", - "@Dark": { + "skip": "Überspringe", + "@skip": { "type": "text", "placeholders": {} }, - "Use Amoled compatible colors?": "Amoled optimierte Farben verwenden?", - "@Use Amoled compatible colors?": { + "sourceCode": "Quellcode", + "@sourceCode": { "type": "text", "placeholders": {} }, - "Source code": "Quellcode", - "@Source code": { + "startedACall": "{senderName} hat einen Anruf getätigt", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "startYourFirstChat": "Starte deinen ersten Chat :-)", + "@startYourFirstChat": { "type": "text", "placeholders": {} }, - "Start your first chat :-)": "Starte deinen ersten Chat :-)", - "@Start your first chat :-)": { + "statusExampleMessage": "Wie geht es dir heute?", + "@statusExampleMessage": { "type": "text", "placeholders": {} }, - "Sunday": "Sonntag", - "@Sunday": { + "submit": "Absenden", + "@submit": { "type": "text", "placeholders": {} }, - "Donate": "Spenden", - "@Donate": { + "sunday": "Sonntag", + "@sunday": { "type": "text", "placeholders": {} }, - "Tap to show menu": "Tippen, um das Menü anzuzeigen", - "@Tap to show menu": { + "systemTheme": "System", + "@systemTheme": { "type": "text", "placeholders": {} }, - "This room has been archived.": "Dieser Raum wurde archiviert.", - "@This room has been archived.": { + "tapToShowMenu": "Tippen, um das Menü anzuzeigen", + "@tapToShowMenu": { "type": "text", "placeholders": {} }, - "Thursday": "Donnerstag", - "@Thursday": { + "theyDontMatch": "Stimmen nicht überein", + "@theyDontMatch": { + "type": "text", + "placeholders": {} + }, + "theyMatch": "Stimmen überein", + "@theyMatch": { + "type": "text", + "placeholders": {} + }, + "thisRoomHasBeenArchived": "Dieser Raum wurde archiviert.", + "@thisRoomHasBeenArchived": { + "type": "text", + "placeholders": {} + }, + "thursday": "Donnerstag", + "@thursday": { "type": "text", "placeholders": {} }, @@ -1184,13 +1403,13 @@ "type": "text", "placeholders": {} }, - "Try to send again": "Nochmal versuchen zu senden", - "@Try to send again": { + "tryToSendAgain": "Nochmal versuchen zu senden", + "@tryToSendAgain": { "type": "text", "placeholders": {} }, - "Tuesday": "Dienstag", - "@Tuesday": { + "tuesday": "Dienstag", + "@tuesday": { "type": "text", "placeholders": {} }, @@ -1202,18 +1421,18 @@ "targetName": {} } }, - "Unmute chat": "Stumm aus", - "@Unmute chat": { + "unblockDevice": "Geräteblockierung aufheben", + "@unblockDevice": { "type": "text", "placeholders": {} }, - "Unknown device": "Unbekanntes Gerät", - "@Unknown device": { + "unknownDevice": "Unbekanntes Gerät", + "@unknownDevice": { "type": "text", "placeholders": {} }, - "Unknown encryption algorithm": "Unbekannter Verschlüsselungsalgorithmus", - "@Unknown encryption algorithm": { + "unknownEncryptionAlgorithm": "Unbekannter Verschlüsselungsalgorithmus", + "@unknownEncryptionAlgorithm": { "type": "text", "placeholders": {} }, @@ -1224,12 +1443,20 @@ "type": {} } }, - "unreadMessages": "{unreadEvents} ungelesene Nachrichten", - "@unreadMessages": { + "unknownSessionVerify": "Unbekannte Sitzung, bitte verifiziere diese", + "@unknownSessionVerify": { "type": "text", - "placeholders": { - "unreadEvents": {} - } + "placeholders": {} + }, + "unmuteChat": "Stumm aus", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unpin": "Abpinnen", + "@unpin": { + "type": "text", + "placeholders": {} }, "unreadChats": "{unreadCount} ungelesene Unterhaltungen", "@unreadChats": { @@ -1238,6 +1465,13 @@ "unreadCount": {} } }, + "unreadMessages": "{unreadEvents} ungelesene Nachrichten", + "@unreadMessages": { + "type": "text", + "placeholders": { + "unreadEvents": {} + } + }, "unreadMessagesInChats": "{unreadEvents} ungelesene Nachrichten in {unreadChats} Chats", "@unreadMessagesInChats": { "type": "text", @@ -1246,7 +1480,12 @@ "unreadChats": {} } }, - "userAndOthersAreTyping": "{username} und {count} andere schreiben ...", + "useAmoledTheme": "Amoled optimierte Farben verwenden?", + "@useAmoledTheme": { + "type": "text", + "placeholders": {} + }, + "userAndOthersAreTyping": "{username} und {count} andere schreiben...", "@userAndOthersAreTyping": { "type": "text", "placeholders": { @@ -1254,7 +1493,7 @@ "count": {} } }, - "userAndUserAreTyping": "{username} und {username2} schreiben ...", + "userAndUserAreTyping": "{username} und {username2} schreiben...", "@userAndUserAreTyping": { "type": "text", "placeholders": { @@ -1262,11 +1501,6 @@ "username2": {} } }, - "Username": "Benutzername", - "@Username": { - "type": "text", - "placeholders": {} - }, "userIsTyping": "{username} schreibt ...", "@userIsTyping": { "type": "text", @@ -1274,6 +1508,18 @@ "username": {} } }, + "userLeftTheChat": "{username} hat den Chat verlassen", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "Benutzername", + "@username": { + "type": "text", + "placeholders": {} + }, "userSentUnknownEvent": "{username} hat {type} Event gesendet", "@userSentUnknownEvent": { "type": "text", @@ -1282,310 +1528,178 @@ "type": {} } }, - "Verify": "Bestätigen", - "@Verify": { - "type": "text", - "placeholders": {} - }, - "Video call": "Videoanruf", - "@Video call": { - "type": "text", - "placeholders": {} - }, - "Visible for all participants": "Sichtbar für alle Teilnehmer*innen", - "@Visible for all participants": { - "type": "text", - "placeholders": {} - }, - "Visible for everyone": "Für jeden sichtbar", - "@Visible for everyone": { - "type": "text", - "placeholders": {} - }, - "Visibility of the chat history": "Sichtbarkeit des Chat-Verlaufs", - "@Visibility of the chat history": { - "type": "text", - "placeholders": {} - }, - "Wednesday": "Mittwoch", - "@Wednesday": { - "type": "text", - "placeholders": {} - }, - "Wallpaper": "Hintergrund", - "@Wallpaper": { - "type": "text", - "placeholders": {} - }, - "Voice message": "Sprachnachricht", - "@Voice message": { - "type": "text", - "placeholders": {} - }, - "End to end encryption is currently in Beta! Use at your own risk!": "Ende-zu-Ende-Verschlüsselung ist im Beta-Status. Benutzung auf eigene Gefahr!", - "@End to end encryption is currently in Beta! Use at your own risk!": { - "type": "text", - "placeholders": {} - }, - "Welcome to the cutest instant messenger in the matrix network.": "Herzlich willkommen beim knuffigsten Instant Messenger im Matrix-Netwerk.", - "@Welcome to the cutest instant messenger in the matrix network.": { - "type": "text", - "placeholders": {} - }, - "Who is allowed to join this group": "Wer darf der Gruppe beitreten", - "@Who is allowed to join this group": { - "type": "text", - "placeholders": {} - }, - "Write a message...": "Schreibe eine Nachricht ...", - "@Write a message...": { - "type": "text", - "placeholders": {} - }, - "Yes": "Ja", - "@Yes": { - "type": "text", - "placeholders": {} - }, - "You": "Du", - "@You": { - "type": "text", - "placeholders": {} - }, - "You are invited to this chat": "Du wurdest eingeladen in diesen Chat", - "@You are invited to this chat": { - "type": "text", - "placeholders": {} - }, - "You are no longer participating in this chat": "Du bist kein Mitglied mehr in diesem Chat", - "@You are no longer participating in this chat": { - "type": "text", - "placeholders": {} - }, - "You cannot invite yourself": "Du kannst dich nicht selbst einladen", - "@You cannot invite yourself": { - "type": "text", - "placeholders": {} - }, - "You have been banned from this chat": "Du wurdest aus dem Chat verbannt", - "@You have been banned from this chat": { - "type": "text", - "placeholders": {} - }, - "Your own username": "Dein eigener Benutzername", - "@Your own username": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerNumbers": "Warte darauf, dass der Partner die Zahlen annimmt...", - "@waitingPartnerNumbers": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerEmoji": "Warte darauf, dass der Partner die Emoji annimmt...", - "@waitingPartnerEmoji": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerAcceptRequest": "Warte darauf, dass der Partner die Verifikationsanfrage annimmt...", - "@waitingPartnerAcceptRequest": { - "type": "text", - "placeholders": {} - }, - "Verify User": "Verifiziere Benutzer", - "@Verify User": { - "type": "text", - "placeholders": {} - }, - "verifyTitle": "Verifiziere anderen Benutzer", - "@verifyTitle": { - "type": "text", - "placeholders": {} - }, - "verifySuccess": "Erfolgreich verifiziert!", - "@verifySuccess": { - "type": "text", - "placeholders": {} - }, - "verifyStart": "Starte Verifikation", - "@verifyStart": { - "type": "text", - "placeholders": {} - }, "verifiedSession": "Sitzung erfolgreich verifiziert!", "@verifiedSession": { "type": "text", "placeholders": {} }, + "verify": "Bestätigen", + "@verify": { + "type": "text", + "placeholders": {} + }, "verifyManual": "Verifiziere manuell", "@verifyManual": { "type": "text", "placeholders": {} }, - "unknownSessionVerify": "Unbekannte Sitzung, bitte verifiziere diese", - "@unknownSessionVerify": { + "verifyStart": "Starte Verifikation", + "@verifyStart": { "type": "text", "placeholders": {} }, - "Unblock Device": "Geräteblockierung aufheben", - "@Unblock Device": { + "verifySuccess": "Erfolgreich verifiziert!", + "@verifySuccess": { "type": "text", "placeholders": {} }, - "They Match": "Stimmen überein", - "@They Match": { + "verifyTitle": "Verifiziere anderen Benutzer", + "@verifyTitle": { "type": "text", "placeholders": {} }, - "They Don't Match": "Stimmen nicht überein", - "@They Don't Match": { + "verifyUser": "Verifiziere Benutzer", + "@verifyUser": { "type": "text", "placeholders": {} }, - "How are you today?": "Wie geht es dir heute?", - "@How are you today?": { + "videoCall": "Videoanruf", + "@videoCall": { "type": "text", "placeholders": {} }, - "Skip": "Überspringe", - "@Skip": { + "visibilityOfTheChatHistory": "Sichtbarkeit des Chat-Verlaufs", + "@visibilityOfTheChatHistory": { "type": "text", "placeholders": {} }, - "sessionVerified": "Sitzung ist verifiziert", - "@sessionVerified": { + "visibleForAllParticipants": "Sichtbar für alle Teilnehmer*innen", + "@visibleForAllParticipants": { "type": "text", "placeholders": {} }, - "Room has been upgraded": "Der Raum wurde ge-upgraded", - "@Room has been upgraded": { + "visibleForEveryone": "Für jeden sichtbar", + "@visibleForEveryone": { "type": "text", "placeholders": {} }, - "Reject": "Ablehnen", - "@Reject": { + "voiceMessage": "Sprachnachricht", + "@voiceMessage": { "type": "text", "placeholders": {} }, - "passphraseOrKey": "Passwort oder Wiederherstellungsschlüssel", - "@passphraseOrKey": { + "waitingPartnerAcceptRequest": "Warte darauf, dass der Partner die Verifikationsanfrage annimmt...", + "@waitingPartnerAcceptRequest": { "type": "text", "placeholders": {} }, - "Open app to read messages": "Öffne app, um Nachrichten zu lesen", - "@Open app to read messages": { + "waitingPartnerEmoji": "Warte darauf, dass der Partner die Emoji annimmt...", + "@waitingPartnerEmoji": { "type": "text", "placeholders": {} }, - "onlineKeyBackupEnabled": "Online Key Backup ist aktiviert", - "@onlineKeyBackupEnabled": { + "waitingPartnerNumbers": "Warte darauf, dass der Partner die Zahlen annimmt...", + "@waitingPartnerNumbers": { "type": "text", "placeholders": {} }, - "onlineKeyBackupDisabled": "Online Key Backup ist deaktiviert", - "@onlineKeyBackupDisabled": { + "wallpaper": "Hintergrund", + "@wallpaper": { "type": "text", "placeholders": {} }, - "noMegolmBootstrap": "Fluffychat unterstützt noch nicht das Einschalten vom Online Key Backup. Bitte schalte es innerhalb Riot an.", - "@noMegolmBootstrap": { + "warningEncryptionInBeta": "Ende-zu-Ende-Verschlüsselung ist im Beta-Status. Benutzung auf eigene Gefahr!", + "@warningEncryptionInBeta": { "type": "text", "placeholders": {} }, - "noCrossSignBootstrap": "Fluffychat unterstützt noch nicht das Einschalten von Cross-Signing. Bitte schalte es innerhalb Riot an.", - "@noCrossSignBootstrap": { + "wednesday": "Mittwoch", + "@wednesday": { "type": "text", "placeholders": {} }, - "newVerificationRequest": "Neue Verifikationsanfrage!", - "@newVerificationRequest": { + "welcomeText": "Herzlich willkommen beim knuffigsten Instant Messenger im Matrix-Netwerk.", + "@welcomeText": { "type": "text", "placeholders": {} }, - "keysMissing": "Keys fehlen", - "@keysMissing": { + "whoIsAllowedToJoinThisGroup": "Wer darf der Gruppe beitreten", + "@whoIsAllowedToJoinThisGroup": { "type": "text", "placeholders": {} }, - "keysCached": "Keys sind gecached", - "@keysCached": { + "writeAMessage": "Schreibe eine Nachricht ...", + "@writeAMessage": { "type": "text", "placeholders": {} }, - "isDeviceKeyCorrect": "Ist der folgende Geräteschlüssel korrekt?", - "@isDeviceKeyCorrect": { + "yes": "Ja", + "@yes": { "type": "text", "placeholders": {} }, - "incorrectPassphraseOrKey": "Falsches Passwort oder Wiederherstellungsschlüssel", - "@incorrectPassphraseOrKey": { + "you": "Du", + "@you": { "type": "text", "placeholders": {} }, - "Encryption": "Verschlüsselung", - "@Encryption": { + "youAreInvitedToThisChat": "Du wurdest in diesen Chat eingeladen", + "@youAreInvitedToThisChat": { "type": "text", "placeholders": {} }, - "crossSigningEnabled": "Cross-Signing ist aktiviert", - "@crossSigningEnabled": { + "youAreNoLongerParticipatingInThisChat": "Du bist kein Mitglied mehr in diesem Chat", + "@youAreNoLongerParticipatingInThisChat": { "type": "text", "placeholders": {} }, - "crossSigningDisabled": "Cross-Signing ist deaktiviert", - "@crossSigningDisabled": { + "youCannotInviteYourself": "Du kannst dich nicht selbst einladen", + "@youCannotInviteYourself": { "type": "text", "placeholders": {} }, - "compareNumbersMatch": "Vergleiche und stelle sicher, dass die folgenden Zahlen mit denen des anderen Gerätes übereinstimmen:", - "@compareNumbersMatch": { + "youHaveBeenBannedFromThisChat": "Du wurdest aus dem Chat verbannt", + "@youHaveBeenBannedFromThisChat": { "type": "text", "placeholders": {} }, - "compareEmojiMatch": "Vergleiche und stelle sicher, dass die folgenden Emoji mit denen des anderen Gerätes übereinstimmen:", - "@compareEmojiMatch": { + "yourOwnUsername": "Dein eigener Benutzername", + "@yourOwnUsername": { "type": "text", "placeholders": {} }, - "cachedKeys": "Keys erfolgreich gecached!", - "@cachedKeys": { + "warning": "Achtung!", + "@warning": { "type": "text", "placeholders": {} }, - "Block Device": "Blockiere Gerät", - "@Block Device": { + "passwordHasBeenChanged": "Passwort wurde geändert", + "@passwordHasBeenChanged": { "type": "text", "placeholders": {} }, - "askVerificationRequest": "Diese Bestätigungsanfrage von {username} annehmen?", - "@askVerificationRequest": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "askSSSSVerify": "Bitte gebe um deine Session zu verifizieren dein Secure-Store Passwort oder Wiederherstellungsschlüssel ein.", - "@askSSSSVerify": { + "ignoreListDescription": "Du kannst störende Benutzer ignorieren. DU bist dann nicht mehr in der Lage Nachrichten oder Raumeinladungen von diesen zu erhalten.", + "@ignoreListDescription": { "type": "text", "placeholders": {} }, - "askSSSSSign": "Bitte gebe um die andere Person signieren zu können dein Secure-Store Passwort oder Wiederherstellungsschlüssel ein.", - "@askSSSSSign": { + "ignoreUsername": "Ignoriere Benutzername", + "@ignoreUsername": { "type": "text", "placeholders": {} }, - "askSSSSCache": "Bitte gib dein Secure-Store Passwort oder Wiederherstellungsschlüssel ein, um die Keys zu cachen.", - "@askSSSSCache": { + "ignoredUsers": "Ignorierte Benutzer", + "@ignoredUsers": { "type": "text", "placeholders": {} }, - "Accept": "Annehmen", - "@Accept": { + "deactivateAccountWarning": "Dies deaktiviert deinen Account. Es kann nicht rückgängig gemacht werden! Bist du sicher?", + "@deactivateAccountWarning": { "type": "text", "placeholders": {} }, - "Submit": "Absenden", - "@Submit": { + "deleteAccount": "Account löschen", + "@deleteAccount": { "type": "text", "placeholders": {} } diff --git a/lib/l10n/intl_messages.arb b/lib/l10n/intl_en.arb similarity index 61% rename from lib/l10n/intl_messages.arb rename to lib/l10n/intl_en.arb index 349eb91..5ac25ce 100644 --- a/lib/l10n/intl_messages.arb +++ b/lib/l10n/intl_en.arb @@ -1,12 +1,13 @@ { - "@@last_modified": "2020-06-25T16:02:16.297192", - "About": "About", - "@About": { + "@@locale": "en", + "@@last_modified": "2020-09-23T11:45:42.519831", + "about": "About", + "@about": { "type": "text", "placeholders": {} }, - "Accept": "Accept", - "@Accept": { + "accept": "Accept", + "@accept": { "type": "text", "placeholders": {} }, @@ -17,13 +18,13 @@ "username": {} } }, - "Account": "Account", - "@Account": { + "account": "Account", + "@account": { "type": "text", "placeholders": {} }, - "Account informations": "Account informations", - "@Account informations": { + "accountInformation": "Account informations", + "@accountInformation": { "type": "text", "placeholders": {} }, @@ -34,13 +35,13 @@ "username": {} } }, - "Add a group description": "Add a group description", - "@Add a group description": { + "addGroupDescription": "Add a group description", + "@addGroupDescription": { "type": "text", "placeholders": {} }, - "Admin": "Admin", - "@Admin": { + "admin": "Admin", + "@admin": { "type": "text", "placeholders": {} }, @@ -49,33 +50,40 @@ "type": "text", "placeholders": {} }, - "Already have an account?": "Already have an account?", - "@Already have an account?": { + "alreadyHaveAnAccount": "Already have an account?", + "@alreadyHaveAnAccount": { "type": "text", "placeholders": {} }, - "Anyone can join": "Anyone can join", - "@Anyone can join": { + "answeredTheCall": "{senderName} answered the call", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "Anyone can join", + "@anyoneCanJoin": { "type": "text", "placeholders": {} }, - "Archive": "Archive", - "@Archive": { + "archive": "Archive", + "@archive": { "type": "text", "placeholders": {} }, - "Archived Room": "Archived Room", - "@Archived Room": { + "archivedRoom": "Archived Room", + "@archivedRoom": { "type": "text", "placeholders": {} }, - "Are guest users allowed to join": "Are guest users allowed to join", - "@Are guest users allowed to join": { + "areGuestsAllowedToJoin": "Are guest users allowed to join", + "@areGuestsAllowedToJoin": { "type": "text", "placeholders": {} }, - "Are you sure?": "Are you sure?", - "@Are you sure?": { + "areYouSure": "Are you sure?", + "@areYouSure": { "type": "text", "placeholders": {} }, @@ -101,23 +109,23 @@ "username": {} } }, - "Authentication": "Authentication", - "@Authentication": { + "authentication": "Authentication", + "@authentication": { "type": "text", "placeholders": {} }, - "Avatar has been changed": "Avatar has been changed", - "@Avatar has been changed": { + "avatarHasBeenChanged": "Avatar has been changed", + "@avatarHasBeenChanged": { "type": "text", "placeholders": {} }, - "Ban from chat": "Ban from chat", - "@Ban from chat": { + "banFromChat": "Ban from chat", + "@banFromChat": { "type": "text", "placeholders": {} }, - "Banned": "Banned", - "@Banned": { + "banned": "Banned", + "@banned": { "type": "text", "placeholders": {} }, @@ -129,8 +137,8 @@ "targetName": {} } }, - "Block Device": "Block Device", - "@Block Device": { + "blockDevice": "Block Device", + "@blockDevice": { "type": "text", "placeholders": {} }, @@ -146,8 +154,8 @@ "type": "text", "placeholders": {} }, - "Cancel": "Cancel", - "@Cancel": { + "cancel": "Cancel", + "@cancel": { "type": "text", "placeholders": {} }, @@ -189,8 +197,8 @@ "displayname": {} } }, - "Change the homeserver": "Change the homeserver", - "@Change the homeserver": { + "changeTheHomeserver": "Change the homeserver", + "@changeTheHomeserver": { "type": "text", "placeholders": {} }, @@ -260,53 +268,53 @@ "username": {} } }, - "Changelog": "Changelog", - "@Changelog": { + "changelog": "Changelog", + "@changelog": { "type": "text", "placeholders": {} }, - "Change the name of the group": "Change the name of the group", - "@Change the name of the group": { + "changeTheNameOfTheGroup": "Change the name of the group", + "@changeTheNameOfTheGroup": { "type": "text", "placeholders": {} }, - "Change wallpaper": "Change wallpaper", - "@Change wallpaper": { + "changeWallpaper": "Change wallpaper", + "@changeWallpaper": { "type": "text", "placeholders": {} }, - "Change the server": "Change the server", - "@Change the server": { + "changeTheServer": "Change the server", + "@changeTheServer": { "type": "text", "placeholders": {} }, - "The encryption has been corrupted": "The encryption has been corrupted", - "@The encryption has been corrupted": { + "channelCorruptedDecryptError": "The encryption has been corrupted", + "@channelCorruptedDecryptError": { "type": "text", "placeholders": {} }, - "Chat": "Chat", - "@Chat": { + "chat": "Chat", + "@chat": { "type": "text", "placeholders": {} }, - "Chat details": "Chat details", - "@Chat details": { + "chatDetails": "Chat details", + "@chatDetails": { "type": "text", "placeholders": {} }, - "Choose a strong password": "Choose a strong password", - "@Choose a strong password": { + "chooseAStrongPassword": "Choose a strong password", + "@chooseAStrongPassword": { "type": "text", "placeholders": {} }, - "Choose a username": "Choose a username", - "@Choose a username": { + "chooseAUsername": "Choose a username", + "@chooseAUsername": { "type": "text", "placeholders": {} }, - "Close": "Close", - "@Close": { + "close": "Close", + "@close": { "type": "text", "placeholders": {} }, @@ -320,38 +328,38 @@ "type": "text", "placeholders": {} }, - "Confirm": "Confirm", - "@Confirm": { + "confirm": "Confirm", + "@confirm": { "type": "text", "placeholders": {} }, - "Connect": "Connect", - "@Connect": { + "connect": "Connect", + "@connect": { "type": "text", "placeholders": {} }, - "Connection attempt failed": "Connection attempt failed", - "@Connection attempt failed": { + "connectionAttemptFailed": "Connection attempt failed", + "@connectionAttemptFailed": { "type": "text", "placeholders": {} }, - "Contact has been invited to the group": "Contact has been invited to the group", - "@Contact has been invited to the group": { + "contactHasBeenInvitedToTheGroup": "Contact has been invited to the group", + "@contactHasBeenInvitedToTheGroup": { "type": "text", "placeholders": {} }, - "Content viewer": "Content viewer", - "@Content viewer": { + "contentViewer": "Content viewer", + "@contentViewer": { "type": "text", "placeholders": {} }, - "Copied to clipboard": "Copied to clipboard", - "@Copied to clipboard": { + "copiedToClipboard": "Copied to clipboard", + "@copiedToClipboard": { "type": "text", "placeholders": {} }, - "Copy": "Copy", - "@Copy": { + "copy": "Copy", + "@copy": { "type": "text", "placeholders": {} }, @@ -362,13 +370,13 @@ "error": {} } }, - "Could not set avatar": "Could not set avatar", - "@Could not set avatar": { + "couldNotSetAvatar": "Could not set avatar", + "@couldNotSetAvatar": { "type": "text", "placeholders": {} }, - "Could not set displayname": "Could not set displayname", - "@Could not set displayname": { + "couldNotSetDisplayname": "Could not set displayname", + "@couldNotSetDisplayname": { "type": "text", "placeholders": {} }, @@ -379,13 +387,13 @@ "count": {} } }, - "Create": "Create", - "@Create": { + "create": "Create", + "@create": { "type": "text", "placeholders": {} }, - "Create account now": "Create account now", - "@Create account now": { + "createAccountNow": "Create account now", + "@createAccountNow": { "type": "text", "placeholders": {} }, @@ -396,8 +404,8 @@ "username": {} } }, - "Create new group": "Create new group", - "@Create new group": { + "createNewGroup": "Create new group", + "@createNewGroup": { "type": "text", "placeholders": {} }, @@ -411,8 +419,8 @@ "type": "text", "placeholders": {} }, - "Currently active": "Currently active", - "@Currently active": { + "currentlyActive": "Currently active", + "@currentlyActive": { "type": "text", "placeholders": {} }, @@ -441,58 +449,68 @@ "day": {} } }, - "Delete": "Delete", - "@Delete": { + "delete": "Delete", + "@delete": { "type": "text", "placeholders": {} }, - "Delete message": "Delete message", - "@Delete message": { + "deactivateAccountWarning": "This will deactivate your user account. This can not be undone! Are you sure?", + "@deactivateAccountWarning": { "type": "text", "placeholders": {} }, - "Deny": "Deny", - "@Deny": { + "deleteAccount": "Delete account", + "@deleteAccount": { "type": "text", "placeholders": {} }, - "Device": "Device", - "@Device": { + "deleteMessage": "Delete message", + "@deleteMessage": { "type": "text", "placeholders": {} }, - "Devices": "Devices", - "@Devices": { + "deny": "Deny", + "@deny": { "type": "text", "placeholders": {} }, - "Discard picture": "Discard picture", - "@Discard picture": { + "device": "Device", + "@device": { "type": "text", "placeholders": {} }, - "Displayname has been changed": "Displayname has been changed", - "@Displayname has been changed": { + "devices": "Devices", + "@devices": { "type": "text", "placeholders": {} }, - "Download file": "Download file", - "@Download file": { + "discardPicture": "Discard picture", + "@discardPicture": { "type": "text", "placeholders": {} }, - "Edit displayname": "Edit displayname", - "@Edit displayname": { + "displaynameHasBeenChanged": "Displayname has been changed", + "@displaynameHasBeenChanged": { "type": "text", "placeholders": {} }, - "Emote Settings": "Emote Settings", - "@Emote Settings": { + "downloadFile": "Download file", + "@downloadFile": { "type": "text", "placeholders": {} }, - "Emote shortcode": "Emote shortcode", - "@Emote shortcode": { + "editDisplayname": "Edit displayname", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "emoteSettings": "Emote Settings", + "@emoteSettings": { + "type": "text", + "placeholders": {} + }, + "emoteShortcode": "Emote shortcode", + "@emoteShortcode": { "type": "text", "placeholders": {} }, @@ -511,103 +529,120 @@ "type": "text", "placeholders": {} }, - "Empty chat": "Empty chat", - "@Empty chat": { + "emotePacks": "Emote packs for room", + "@emotePacks": { "type": "text", "placeholders": {} }, - "You won't be able to disable the encryption anymore. Are you sure?": "You won't be able to disable the encryption anymore. Are you sure?", - "@You won't be able to disable the encryption anymore. Are you sure?": { + "emptyChat": "Empty chat", + "@emptyChat": { "type": "text", "placeholders": {} }, - "Encryption": "Encryption", - "@Encryption": { + "enableEmotesGlobally": "Enable emote pack globally", + "@enableEmotesGlobally": { "type": "text", "placeholders": {} }, - "Encryption algorithm": "Encryption algorithm", - "@Encryption algorithm": { + "enableEncryptionWarning": "You won't be able to disable the encryption anymore. Are you sure?", + "@enableEncryptionWarning": { "type": "text", "placeholders": {} }, - "Encryption is not enabled": "Encryption is not enabled", - "@Encryption is not enabled": { + "encryption": "Encryption", + "@encryption": { "type": "text", "placeholders": {} }, - "End-to-end encryption settings": "End-to-end encryption settings", - "@End-to-end encryption settings": { + "encryptionAlgorithm": "Encryption algorithm", + "@encryptionAlgorithm": { "type": "text", "placeholders": {} }, - "Enter a group name": "Enter a group name", - "@Enter a group name": { + "encryptionNotEnabled": "Encryption is not enabled", + "@encryptionNotEnabled": { "type": "text", "placeholders": {} }, - "Enter a username": "Enter a username", - "@Enter a username": { + "end2endEncryptionSettings": "End-to-end encryption settings", + "@end2endEncryptionSettings": { "type": "text", "placeholders": {} }, - "Enter your homeserver": "Enter your homeserver", - "@Enter your homeserver": { + "endedTheCall": "{senderName} ended the call", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterAGroupName": "Enter a group name", + "@enterAGroupName": { "type": "text", "placeholders": {} }, - "File name": "File name", - "@File name": { + "enterAUsername": "Enter a username", + "@enterAUsername": { "type": "text", "placeholders": {} }, - "File size": "File size", - "@File size": { + "enterYourHomeserver": "Enter your homeserver", + "@enterYourHomeserver": { "type": "text", "placeholders": {} }, - "FluffyChat": "FluffyChat", - "@FluffyChat": { + "fileName": "File name", + "@fileName": { "type": "text", "placeholders": {} }, - "Forward": "Forward", - "@Forward": { + "fileSize": "File size", + "@fileSize": { "type": "text", "placeholders": {} }, - "Friday": "Friday", - "@Friday": { + "fluffychat": "FluffyChat", + "@fluffychat": { "type": "text", "placeholders": {} }, - "From joining": "From joining", - "@From joining": { + "forward": "Forward", + "@forward": { "type": "text", "placeholders": {} }, - "From the invitation": "From the invitation", - "@From the invitation": { + "friday": "Friday", + "@friday": { "type": "text", "placeholders": {} }, - "Group": "Group", - "@Group": { + "fromJoining": "From joining", + "@fromJoining": { "type": "text", "placeholders": {} }, - "Group description": "Group description", - "@Group description": { + "fromTheInvitation": "From the invitation", + "@fromTheInvitation": { "type": "text", "placeholders": {} }, - "Group description has been changed": "Group description has been changed", - "@Group description has been changed": { + "group": "Group", + "@group": { "type": "text", "placeholders": {} }, - "Group is public": "Group is public", - "@Group is public": { + "groupDescription": "Group description", + "@groupDescription": { + "type": "text", + "placeholders": {} + }, + "groupDescriptionHasBeenChanged": "Group description has been changed", + "@groupDescriptionHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "Group is public", + "@groupIsPublic": { "type": "text", "placeholders": {} }, @@ -618,13 +653,13 @@ "displayname": {} } }, - "Guests are forbidden": "Guests are forbidden", - "@Guests are forbidden": { + "guestsAreForbidden": "Guests are forbidden", + "@guestsAreForbidden": { "type": "text", "placeholders": {} }, - "Guests can join": "Guests can join", - "@Guests can join": { + "guestsCanJoin": "Guests can join", + "@guestsCanJoin": { "type": "text", "placeholders": {} }, @@ -636,23 +671,38 @@ "targetName": {} } }, - "Help": "Help", - "@Help": { + "help": "Help", + "@help": { "type": "text", "placeholders": {} }, - "Homeserver is not compatible": "Homeserver is not compatible", - "@Homeserver is not compatible": { + "homeserverIsNotCompatible": "Homeserver is not compatible", + "@homeserverIsNotCompatible": { "type": "text", "placeholders": {} }, - "ID": "ID", - "@ID": { + "id": "ID", + "@id": { "type": "text", "placeholders": {} }, - "Identity": "Identity", - "@Identity": { + "identity": "Identity", + "@identity": { + "type": "text", + "placeholders": {} + }, + "ignoredUsers": "Ignored users", + "@ignoredUsers": { + "type": "text", + "placeholders": {} + }, + "ignoreUsername": "Ignore username", + "@ignoreUsername": { + "type": "text", + "placeholders": {} + }, + "ignoreListDescription": "You can ignore users who are disturbing you. You won't be able to receive any messages or room invites from the users on your personal ignore list.", + "@ignoreListDescription": { "type": "text", "placeholders": {} }, @@ -661,8 +711,8 @@ "type": "text", "placeholders": {} }, - "Invite contact": "Invite contact", - "@Invite contact": { + "inviteContact": "Invite contact", + "@inviteContact": { "type": "text", "placeholders": {} }, @@ -673,12 +723,12 @@ "groupName": {} } }, - "Invited": "Invited", - "@Invited": { + "invited": "Invited", + "@invited": { "type": "text", "placeholders": {} }, - "inviteText": "{username} invited you to FluffyChat. \n1. Install FluffyChat: http://fluffy.chat \n2. Sign up or sign in \n3. Open the invite link: {link}", + "inviteText": "{username} invited you to FluffyChat. \n1. Install FluffyChat: https://fluffychat.im \n2. Sign up or sign in \n3. Open the invite link: {link}", "@inviteText": { "type": "text", "placeholders": { @@ -694,8 +744,8 @@ "targetName": {} } }, - "Invited users only": "Invited users only", - "@Invited users only": { + "invitedUsersOnly": "Invited users only", + "@invitedUsersOnly": { "type": "text", "placeholders": {} }, @@ -704,13 +754,13 @@ "type": "text", "placeholders": {} }, - "is typing...": "is typing...", - "@is typing...": { + "isTyping": "is typing...", + "@isTyping": { "type": "text", "placeholders": {} }, - "Edit Jitsi instance": "Edit Jitsi instance", - "@Edit Jitsi instance": { + "editJitsiInstance": "Edit Jitsi instance", + "@editJitsiInstance": { "type": "text", "placeholders": {} }, @@ -721,6 +771,11 @@ "username": {} } }, + "joinRoom": "Join room", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, "keysCached": "Keys are cached", "@keysCached": { "type": "text", @@ -747,23 +802,23 @@ "targetName": {} } }, - "Kick from chat": "Kick from chat", - "@Kick from chat": { + "kickFromChat": "Kick from chat", + "@kickFromChat": { "type": "text", "placeholders": {} }, - "Leave": "Leave", - "@Leave": { + "leave": "Leave", + "@leave": { "type": "text", "placeholders": {} }, - "Left the chat": "Left the chat", - "@Left the chat": { + "leftTheChat": "Left the chat", + "@leftTheChat": { "type": "text", "placeholders": {} }, - "Logout": "Logout", - "@Logout": { + "logout": "Logout", + "@logout": { "type": "text", "placeholders": {} }, @@ -781,23 +836,23 @@ "localizedTimeShort": {} } }, - "Last seen IP": "Last seen IP", - "@Last seen IP": { + "lastSeenIp": "Last seen IP", + "@lastSeenIp": { "type": "text", "placeholders": {} }, - "License": "License", - "@License": { + "license": "License", + "@license": { "type": "text", "placeholders": {} }, - "Loading... Please wait": "Loading... Please wait", - "@Loading... Please wait": { + "loadingPleaseWait": "Loading... Please wait", + "@loadingPleaseWait": { "type": "text", "placeholders": {} }, - "Load more...": "Load more...", - "@Load more...": { + "loadMore": "Load more...", + "@loadMore": { "type": "text", "placeholders": {} }, @@ -808,8 +863,8 @@ "count": {} } }, - "Login": "Login", - "@Login": { + "login": "Login", + "@login": { "type": "text", "placeholders": {} }, @@ -820,53 +875,53 @@ "homeserver": {} } }, - "Make a moderator": "Make a moderator", - "@Make a moderator": { + "makeAModerator": "Make a moderator", + "@makeAModerator": { "type": "text", "placeholders": {} }, - "Make an admin": "Make an admin", - "@Make an admin": { + "makeAnAdmin": "Make an admin", + "@makeAnAdmin": { "type": "text", "placeholders": {} }, - "Make sure the identifier is valid": "Make sure the identifier is valid", - "@Make sure the identifier is valid": { + "makeSureTheIdentifierIsValid": "Make sure the identifier is valid", + "@makeSureTheIdentifierIsValid": { "type": "text", "placeholders": {} }, - "Message will be removed for all participants": "Message will be removed for all participants", - "@Message will be removed for all participants": { + "messageWillBeRemovedWarning": "Message will be removed for all participants", + "@messageWillBeRemovedWarning": { "type": "text", "placeholders": {} }, - "Moderator": "Moderator", - "@Moderator": { + "moderator": "Moderator", + "@moderator": { "type": "text", "placeholders": {} }, - "Monday": "Monday", - "@Monday": { + "monday": "Monday", + "@monday": { "type": "text", "placeholders": {} }, - "Mute chat": "Mute chat", - "@Mute chat": { + "muteChat": "Mute chat", + "@muteChat": { "type": "text", "placeholders": {} }, - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": "Please be aware that you need Pantalaimon to use end-to-end encryption for now.", - "@Please be aware that you need Pantalaimon to use end-to-end encryption for now.": { + "needPantalaimonWarning": "Please be aware that you need Pantalaimon to use end-to-end encryption for now.", + "@needPantalaimonWarning": { "type": "text", "placeholders": {} }, - "New message in FluffyChat": "New message in FluffyChat", - "@New message in FluffyChat": { + "newMessageInFluffyChat": "New message in FluffyChat", + "@newMessageInFluffyChat": { "type": "text", "placeholders": {} }, - "New private chat": "New private chat", - "@New private chat": { + "newPrivateChat": "New private chat", + "@newPrivateChat": { "type": "text", "placeholders": {} }, @@ -875,43 +930,43 @@ "type": "text", "placeholders": {} }, - "noCrossSignBootstrap": "Fluffychat currently does not support enabling Cross-Signing. Please enable it from within Element.", + "noCrossSignBootstrap": "Fluffychat currently does not support enabling Cross-Signing. Please enable it from within Riot.", "@noCrossSignBootstrap": { "type": "text", "placeholders": {} }, - "noMegolmBootstrap": "Fluffychat currently does not support enabling Online Key Backup. Please enable it from within Element.", + "noMegolmBootstrap": "Fluffychat currently does not support enabling Online Key Backup. Please enable it from within Riot.", "@noMegolmBootstrap": { "type": "text", "placeholders": {} }, - "It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": "It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/", - "@It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": { + "noGoogleServicesWarning": "It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/", + "@noGoogleServicesWarning": { "type": "text", "placeholders": {} }, - "None": "None", - "@None": { + "none": "None", + "@none": { "type": "text", "placeholders": {} }, - "No emotes found. 😕": "No emotes found. 😕", - "@No emotes found. 😕": { + "noEmotesFound": "No emotes found. 😕", + "@noEmotesFound": { "type": "text", "placeholders": {} }, - "No permission": "No permission", - "@No permission": { + "noPermission": "No permission", + "@noPermission": { "type": "text", "placeholders": {} }, - "No rooms found...": "No rooms found...", - "@No rooms found...": { + "noRoomsFound": "No rooms found...", + "@noRoomsFound": { "type": "text", "placeholders": {} }, - "Not supported in web": "Not supported in web", - "@Not supported in web": { + "notSupportedInWeb": "Not supported in web", + "@notSupportedInWeb": { "type": "text", "placeholders": {} }, @@ -937,28 +992,28 @@ "type": "text", "placeholders": {} }, - "Oops something went wrong...": "Oops something went wrong...", - "@Oops something went wrong...": { + "oopsSomethingWentWrong": "Oops something went wrong...", + "@oopsSomethingWentWrong": { "type": "text", "placeholders": {} }, - "Open app to read messages": "Open app to read messages", - "@Open app to read messages": { + "openAppToReadMessages": "Open app to read messages", + "@openAppToReadMessages": { "type": "text", "placeholders": {} }, - "Open camera": "Open camera", - "@Open camera": { + "openCamera": "Open camera", + "@openCamera": { "type": "text", "placeholders": {} }, - "(Optional) Group name": "(Optional) Group name", - "@(Optional) Group name": { + "optionalGroupName": "(Optional) Group name", + "@optionalGroupName": { "type": "text", "placeholders": {} }, - "Participating user devices": "Participating user devices", - "@Participating user devices": { + "participatingUserDevices": "Participating user devices", + "@participatingUserDevices": { "type": "text", "placeholders": {} }, @@ -967,13 +1022,23 @@ "type": "text", "placeholders": {} }, - "Password": "Password", - "@Password": { + "password": "Password", + "@password": { "type": "text", "placeholders": {} }, - "Pick image": "Pick image", - "@Pick image": { + "passwordHasBeenChanged": "Password has been changed", + "@passwordHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "pickImage": "Pick image", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "pin": "Pin", + "@pin": { "type": "text", "placeholders": {} }, @@ -984,48 +1049,53 @@ "fileName": {} } }, - "Please choose a username": "Please choose a username", - "@Please choose a username": { + "pleaseChooseAUsername": "Please choose a username", + "@pleaseChooseAUsername": { "type": "text", "placeholders": {} }, - "Please enter a matrix identifier": "Please enter a matrix identifier", - "@Please enter a matrix identifier": { + "pleaseEnterAMatrixIdentifier": "Please enter a matrix identifier", + "@pleaseEnterAMatrixIdentifier": { "type": "text", "placeholders": {} }, - "Please enter your password": "Please enter your password", - "@Please enter your password": { + "pleaseEnterYourPassword": "Please enter your password", + "@pleaseEnterYourPassword": { "type": "text", "placeholders": {} }, - "Please enter your username": "Please enter your username", - "@Please enter your username": { + "pleaseEnterYourUsername": "Please enter your username", + "@pleaseEnterYourUsername": { "type": "text", "placeholders": {} }, - "Public Rooms": "Public Rooms", - "@Public Rooms": { + "privacy": "Privacy", + "@privacy": { "type": "text", "placeholders": {} }, - "Reject": "Reject", - "@Reject": { + "publicRooms": "Public Rooms", + "@publicRooms": { "type": "text", "placeholders": {} }, - "Rejoin": "Rejoin", - "@Rejoin": { + "reject": "Reject", + "@reject": { "type": "text", "placeholders": {} }, - "Render rich message content": "Render rich message content", - "@Render rich message content": { + "rejoin": "Rejoin", + "@rejoin": { "type": "text", "placeholders": {} }, - "Recording": "Recording", - "@Recording": { + "renderRichContent": "Render rich message content", + "@renderRichContent": { + "type": "text", + "placeholders": {} + }, + "recording": "Recording", + "@recording": { "type": "text", "placeholders": {} }, @@ -1043,8 +1113,8 @@ "username": {} } }, - "Remove all other devices": "Remove all other devices", - "@Remove all other devices": { + "removeAllOtherDevices": "Remove all other devices", + "@removeAllOtherDevices": { "type": "text", "placeholders": {} }, @@ -1055,58 +1125,58 @@ "username": {} } }, - "Remove device": "Remove device", - "@Remove device": { + "removeDevice": "Remove device", + "@removeDevice": { "type": "text", "placeholders": {} }, - "Remove exile": "Remove exile", - "@Remove exile": { + "removeExile": "Remove exile", + "@removeExile": { "type": "text", "placeholders": {} }, - "Revoke all permissions": "Revoke all permissions", - "@Revoke all permissions": { + "revokeAllPermissions": "Revoke all permissions", + "@revokeAllPermissions": { "type": "text", "placeholders": {} }, - "Remove": "Remove", - "@Remove": { + "remove": "Remove", + "@remove": { "type": "text", "placeholders": {} }, - "Remove message": "Remove message", - "@Remove message": { + "removeMessage": "Remove message", + "@removeMessage": { "type": "text", "placeholders": {} }, - "Reply": "Reply", - "@Reply": { + "reply": "Reply", + "@reply": { "type": "text", "placeholders": {} }, - "Request permission": "Request permission", - "@Request permission": { + "requestPermission": "Request permission", + "@requestPermission": { "type": "text", "placeholders": {} }, - "Request to read older messages": "Request to read older messages", - "@Request to read older messages": { + "requestToReadOlderMessages": "Request to read older messages", + "@requestToReadOlderMessages": { "type": "text", "placeholders": {} }, - "Room has been upgraded": "Room has been upgraded", - "@Room has been upgraded": { + "roomHasBeenUpgraded": "Room has been upgraded", + "@roomHasBeenUpgraded": { "type": "text", "placeholders": {} }, - "Saturday": "Saturday", - "@Saturday": { + "saturday": "Saturday", + "@saturday": { "type": "text", "placeholders": {} }, - "Share": "Share", - "@Share": { + "share": "Share", + "@share": { "type": "text", "placeholders": {} }, @@ -1117,13 +1187,33 @@ "username": {} } }, - "Search for a chat": "Search for a chat", - "@Search for a chat": { + "searchForAChat": "Search for a chat", + "@searchForAChat": { "type": "text", "placeholders": {} }, - "Seen a long time ago": "Seen a long time ago", - "@Seen a long time ago": { + "lastSeenLongTimeAgo": "Seen a long time ago", + "@lastSeenLongTimeAgo": { + "type": "text", + "placeholders": {} + }, + "sendBugReports": "Allow sending bug reports with sentry.io", + "@sendBugReports": { + "type": "text", + "placeholders": {} + }, + "sentryInfo": "Informations about your privacy: https://sentry.io/security/", + "@sentryInfo": { + "type": "text", + "placeholders": {} + }, + "changesHaveBeenSaved": "Changes have been saved", + "@changesHaveBeenSaved": { + "type": "text", + "placeholders": {} + }, + "no": "No", + "@no": { "type": "text", "placeholders": {} }, @@ -1150,23 +1240,38 @@ "count": {} } }, - "Send": "Send", - "@Send": { + "send": "Send", + "@send": { "type": "text", "placeholders": {} }, - "Send a message": "Send a message", - "@Send a message": { + "sendAMessage": "Send a message", + "@sendAMessage": { "type": "text", "placeholders": {} }, - "Send file": "Send file", - "@Send file": { + "sendAudio": "Send audio", + "@sendAudio": { "type": "text", "placeholders": {} }, - "Send image": "Send image", - "@Send image": { + "sendFile": "Send file", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "Send image", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "Send original", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendVideo": "Send video", + "@sendVideo": { "type": "text", "placeholders": {} }, @@ -1205,123 +1310,137 @@ "username": {} } }, + "sentCallInformations": "{senderName} sent call informations", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, "sessionVerified": "Session is verified", "@sessionVerified": { "type": "text", "placeholders": {} }, - "Set a profile picture": "Set a profile picture", - "@Set a profile picture": { + "setAProfilePicture": "Set a profile picture", + "@setAProfilePicture": { "type": "text", "placeholders": {} }, - "Set group description": "Set group description", - "@Set group description": { + "setGroupDescription": "Set group description", + "@setGroupDescription": { "type": "text", "placeholders": {} }, - "Set invitation link": "Set invitation link", - "@Set invitation link": { + "setInvitationLink": "Set invitation link", + "@setInvitationLink": { "type": "text", "placeholders": {} }, - "Set status": "Set status", - "@Set status": { + "setStatus": "Set status", + "@setStatus": { "type": "text", "placeholders": {} }, - "Settings": "Settings", - "@Settings": { + "settings": "Settings", + "@settings": { "type": "text", "placeholders": {} }, - "Sign up": "Sign up", - "@Sign up": { + "signUp": "Sign up", + "@signUp": { "type": "text", "placeholders": {} }, - "Skip": "Skip", - "@Skip": { + "skip": "Skip", + "@skip": { "type": "text", "placeholders": {} }, - "Change your style": "Change your style", - "@Change your style": { + "startedACall": "{senderName} started a call", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "changeTheme": "Change your style", + "@changeTheme": { "type": "text", "placeholders": {} }, - "System": "System", - "@System": { + "systemTheme": "System", + "@systemTheme": { "type": "text", "placeholders": {} }, - "How are you today?": "How are you today?", - "@How are you today?": { + "statusExampleMessage": "How are you today?", + "@statusExampleMessage": { "type": "text", "placeholders": {} }, - "Light": "Light", - "@Light": { + "lightTheme": "Light", + "@lightTheme": { "type": "text", "placeholders": {} }, - "Dark": "Dark", - "@Dark": { + "darkTheme": "Dark", + "@darkTheme": { "type": "text", "placeholders": {} }, - "Use Amoled compatible colors?": "Use Amoled compatible colors?", - "@Use Amoled compatible colors?": { + "useAmoledTheme": "Use Amoled compatible colors?", + "@useAmoledTheme": { "type": "text", "placeholders": {} }, - "Source code": "Source code", - "@Source code": { + "sourceCode": "Source code", + "@sourceCode": { "type": "text", "placeholders": {} }, - "Start your first chat :-)": "Start your first chat :-)", - "@Start your first chat :-)": { + "startYourFirstChat": "Start your first chat :-)", + "@startYourFirstChat": { "type": "text", "placeholders": {} }, - "Submit": "Submit", - "@Submit": { + "submit": "Submit", + "@submit": { "type": "text", "placeholders": {} }, - "Sunday": "Sunday", - "@Sunday": { + "sunday": "Sunday", + "@sunday": { "type": "text", "placeholders": {} }, - "Donate": "Donate", - "@Donate": { + "donate": "Donate", + "@donate": { "type": "text", "placeholders": {} }, - "Tap to show menu": "Tap to show menu", - "@Tap to show menu": { + "tapToShowMenu": "Tap to show menu", + "@tapToShowMenu": { "type": "text", "placeholders": {} }, - "They Don't Match": "They Don't Match", - "@They Don't Match": { + "theyDontMatch": "They Don't Match", + "@theyDontMatch": { "type": "text", "placeholders": {} }, - "They Match": "They Match", - "@They Match": { + "theyMatch": "They Match", + "@theyMatch": { "type": "text", "placeholders": {} }, - "This room has been archived.": "This room has been archived.", - "@This room has been archived.": { + "thisRoomHasBeenArchived": "This room has been archived.", + "@thisRoomHasBeenArchived": { "type": "text", "placeholders": {} }, - "Thursday": "Thursday", - "@Thursday": { + "thursday": "Thursday", + "@thursday": { "type": "text", "placeholders": {} }, @@ -1341,13 +1460,13 @@ "type": "text", "placeholders": {} }, - "Try to send again": "Try to send again", - "@Try to send again": { + "tryToSendAgain": "Try to send again", + "@tryToSendAgain": { "type": "text", "placeholders": {} }, - "Tuesday": "Tuesday", - "@Tuesday": { + "tuesday": "Tuesday", + "@tuesday": { "type": "text", "placeholders": {} }, @@ -1359,23 +1478,23 @@ "targetName": {} } }, - "Unblock Device": "Unblock Device", - "@Unblock Device": { + "unblockDevice": "Unblock Device", + "@unblockDevice": { "type": "text", "placeholders": {} }, - "Unmute chat": "Unmute chat", - "@Unmute chat": { + "unmuteChat": "Unmute chat", + "@unmuteChat": { "type": "text", "placeholders": {} }, - "Unknown device": "Unknown device", - "@Unknown device": { + "unknownDevice": "Unknown device", + "@unknownDevice": { "type": "text", "placeholders": {} }, - "Unknown encryption algorithm": "Unknown encryption algorithm", - "@Unknown encryption algorithm": { + "unknownEncryptionAlgorithm": "Unknown encryption algorithm", + "@unknownEncryptionAlgorithm": { "type": "text", "placeholders": {} }, @@ -1391,6 +1510,11 @@ "type": {} } }, + "unpin": "Unpin", + "@unpin": { + "type": "text", + "placeholders": {} + }, "unreadChats": "{unreadCount} unread chats", "@unreadChats": { "type": "text", @@ -1429,8 +1553,8 @@ "username2": {} } }, - "Username": "Username", - "@Username": { + "username": "Username", + "@username": { "type": "text", "placeholders": {} }, @@ -1449,8 +1573,8 @@ "type": {} } }, - "Verify": "Verify", - "@Verify": { + "verify": "Verify", + "@verify": { "type": "text", "placeholders": {} }, @@ -1479,33 +1603,33 @@ "type": "text", "placeholders": {} }, - "Verify User": "Verify User", - "@Verify User": { + "verifyUser": "Verify User", + "@verifyUser": { "type": "text", "placeholders": {} }, - "Video call": "Video call", - "@Video call": { + "videoCall": "Video call", + "@videoCall": { "type": "text", "placeholders": {} }, - "Visible for all participants": "Visible for all participants", - "@Visible for all participants": { + "visibleForAllParticipants": "Visible for all participants", + "@visibleForAllParticipants": { "type": "text", "placeholders": {} }, - "Visible for everyone": "Visible for everyone", - "@Visible for everyone": { + "visibleForEveryone": "Visible for everyone", + "@visibleForEveryone": { "type": "text", "placeholders": {} }, - "Visibility of the chat history": "Visibility of the chat history", - "@Visibility of the chat history": { + "visibilityOfTheChatHistory": "Visibility of the chat history", + "@visibilityOfTheChatHistory": { "type": "text", "placeholders": {} }, - "Voice message": "Voice message", - "@Voice message": { + "voiceMessage": "Voice message", + "@voiceMessage": { "type": "text", "placeholders": {} }, @@ -1524,68 +1648,73 @@ "type": "text", "placeholders": {} }, - "Wallpaper": "Wallpaper", - "@Wallpaper": { + "warning": "Warning!", + "@warning": { "type": "text", "placeholders": {} }, - "End to end encryption is currently in Beta! Use at your own risk!": "End to end encryption is currently in Beta! Use at your own risk!", - "@End to end encryption is currently in Beta! Use at your own risk!": { + "wallpaper": "Wallpaper", + "@wallpaper": { "type": "text", "placeholders": {} }, - "Wednesday": "Wednesday", - "@Wednesday": { + "warningEncryptionInBeta": "End to end encryption is currently in Beta! Use at your own risk!", + "@warningEncryptionInBeta": { "type": "text", "placeholders": {} }, - "Welcome to the cutest instant messenger in the matrix network.": "Welcome to the cutest instant messenger in the matrix network.", - "@Welcome to the cutest instant messenger in the matrix network.": { + "wednesday": "Wednesday", + "@wednesday": { "type": "text", "placeholders": {} }, - "Who is allowed to join this group": "Who is allowed to join this group", - "@Who is allowed to join this group": { + "welcomeText": "Welcome to the cutest instant messenger in the matrix network.", + "@welcomeText": { "type": "text", "placeholders": {} }, - "Write a message...": "Write a message...", - "@Write a message...": { + "whoIsAllowedToJoinThisGroup": "Who is allowed to join this group", + "@whoIsAllowedToJoinThisGroup": { "type": "text", "placeholders": {} }, - "Yes": "Yes", - "@Yes": { + "writeAMessage": "Write a message...", + "@writeAMessage": { "type": "text", "placeholders": {} }, - "You": "You", - "@You": { + "yes": "Yes", + "@yes": { "type": "text", "placeholders": {} }, - "You are invited to this chat": "You are invited to this chat", - "@You are invited to this chat": { + "you": "You", + "@you": { "type": "text", "placeholders": {} }, - "You are no longer participating in this chat": "You are no longer participating in this chat", - "@You are no longer participating in this chat": { + "youAreInvitedToThisChat": "You are invited to this chat", + "@youAreInvitedToThisChat": { "type": "text", "placeholders": {} }, - "You cannot invite yourself": "You cannot invite yourself", - "@You cannot invite yourself": { + "youAreNoLongerParticipatingInThisChat": "You are no longer participating in this chat", + "@youAreNoLongerParticipatingInThisChat": { "type": "text", "placeholders": {} }, - "You have been banned from this chat": "You have been banned from this chat", - "@You have been banned from this chat": { + "youCannotInviteYourself": "You cannot invite yourself", + "@youCannotInviteYourself": { "type": "text", "placeholders": {} }, - "Your own username": "Your own username", - "@Your own username": { + "youHaveBeenBannedFromThisChat": "You have been banned from this chat", + "@youHaveBeenBannedFromThisChat": { + "type": "text", + "placeholders": {} + }, + "yourOwnUsername": "Your own username", + "@yourOwnUsername": { "type": "text", "placeholders": {} } diff --git a/lib/l10n/intl_es.arb b/lib/l10n/intl_es.arb index 6ef3231..593ce3a 100644 --- a/lib/l10n/intl_es.arb +++ b/lib/l10n/intl_es.arb @@ -1,12 +1,13 @@ { - "@@last_modified": "2020-06-25T16:02:16.297192", - "About": "Acerca de", - "@About": { + "@@locale": "es", + "@@last_modified": "2020-09-23 11:46:02.754339", + "about": "Acerca de", + "@about": { "type": "text", "placeholders": {} }, - "Accept": "Aceptar", - "@Accept": { + "accept": "Aceptar", + "@accept": { "type": "text", "placeholders": {} }, @@ -17,13 +18,13 @@ "username": {} } }, - "Account": "Cuenta", - "@Account": { + "account": "Cuenta", + "@account": { "type": "text", "placeholders": {} }, - "Account informations": "Información de la cuenta", - "@Account informations": { + "accountInformation": "Información de la cuenta", + "@accountInformation": { "type": "text", "placeholders": {} }, @@ -34,13 +35,13 @@ "username": {} } }, - "Add a group description": "Agregar una descripción al grupo", - "@Add a group description": { + "addGroupDescription": "Agregar una descripción al grupo", + "@addGroupDescription": { "type": "text", "placeholders": {} }, - "Admin": "Administrador", - "@Admin": { + "admin": "Administrador", + "@admin": { "type": "text", "placeholders": {} }, @@ -49,33 +50,40 @@ "type": "text", "placeholders": {} }, - "Already have an account?": "¿Ya tienes una cuenta?", - "@Already have an account?": { + "alreadyHaveAnAccount": "¿Ya tienes una cuenta?", + "@alreadyHaveAnAccount": { "type": "text", "placeholders": {} }, - "Anyone can join": "Cualquiera puede unirse", - "@Anyone can join": { + "answeredTheCall": "{senderName} respondió a la llamada", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "Cualquiera puede unirse", + "@anyoneCanJoin": { "type": "text", "placeholders": {} }, - "Archive": "Archivo", - "@Archive": { + "archive": "Archivo", + "@archive": { "type": "text", "placeholders": {} }, - "Archived Room": "Sala archivada", - "@Archived Room": { + "archivedRoom": "Sala archivada", + "@archivedRoom": { "type": "text", "placeholders": {} }, - "Are guest users allowed to join": "¿Pueden unirse los usuarios visitantes?", - "@Are guest users allowed to join": { + "areGuestsAllowedToJoin": "¿Pueden unirse los usuarios visitantes?", + "@areGuestsAllowedToJoin": { "type": "text", "placeholders": {} }, - "Are you sure?": "¿Estás seguro?", - "@Are you sure?": { + "areYouSure": "¿Estás seguro?", + "@areYouSure": { "type": "text", "placeholders": {} }, @@ -101,23 +109,23 @@ "username": {} } }, - "Authentication": "Autenticación", - "@Authentication": { + "authentication": "Autenticación", + "@authentication": { "type": "text", "placeholders": {} }, - "Avatar has been changed": "La imagen de perfil ha sido cambiada", - "@Avatar has been changed": { + "avatarHasBeenChanged": "La imagen de perfil ha sido cambiada", + "@avatarHasBeenChanged": { "type": "text", "placeholders": {} }, - "Ban from chat": "Vetar del chat", - "@Ban from chat": { + "banFromChat": "Vetar del chat", + "@banFromChat": { "type": "text", "placeholders": {} }, - "Banned": "Vetado", - "@Banned": { + "banned": "Vetado", + "@banned": { "type": "text", "placeholders": {} }, @@ -129,8 +137,8 @@ "targetName": {} } }, - "Block Device": "Bloquear dispositivo", - "@Block Device": { + "blockDevice": "Bloquear dispositivo", + "@blockDevice": { "type": "text", "placeholders": {} }, @@ -146,8 +154,8 @@ "type": "text", "placeholders": {} }, - "Cancel": "Cancelar", - "@Cancel": { + "cancel": "Cancelar", + "@cancel": { "type": "text", "placeholders": {} }, @@ -158,14 +166,6 @@ "username": {} } }, - "changedTheChatNameTo": "{username} cambió el nombre del chat a: '{chatname}'", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, "changedTheChatDescriptionTo": "{username} cambió la descripción del chat a: '{description}'", "@changedTheChatDescriptionTo": { "type": "text", @@ -174,6 +174,14 @@ "description": {} } }, + "changedTheChatNameTo": "{username} cambió el nombre del chat a: '{chatname}'", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, "changedTheChatPermissions": "{username} cambió los permisos del chat", "@changedTheChatPermissions": { "type": "text", @@ -189,11 +197,6 @@ "displayname": {} } }, - "Change the homeserver": "Cambiar el servidor", - "@Change the homeserver": { - "type": "text", - "placeholders": {} - }, "changedTheGuestAccessRules": "{username} cambió las reglas de acceso de visitantes", "@changedTheGuestAccessRules": { "type": "text", @@ -260,53 +263,68 @@ "username": {} } }, - "Changelog": "Registro de cambios", - "@Changelog": { + "changelog": "Registro de cambios", + "@changelog": { "type": "text", "placeholders": {} }, - "Change the name of the group": "Cambiar el nombre del grupo", - "@Change the name of the group": { + "changesHaveBeenSaved": "Los cambios se han guardado", + "@changesHaveBeenSaved": { "type": "text", "placeholders": {} }, - "Change wallpaper": "Cambiar el fondo de pantalla", - "@Change wallpaper": { + "changeTheHomeserver": "Cambiar el servidor", + "@changeTheHomeserver": { "type": "text", "placeholders": {} }, - "Change the server": "Cambiar el servidor", - "@Change the server": { + "changeTheme": "Cambia tu estilo", + "@changeTheme": { "type": "text", "placeholders": {} }, - "The encryption has been corrupted": "El cifrado se ha corrompido", - "@The encryption has been corrupted": { + "changeTheNameOfTheGroup": "Cambiar el nombre del grupo", + "@changeTheNameOfTheGroup": { "type": "text", "placeholders": {} }, - "Chat": "Chat", - "@Chat": { + "changeTheServer": "Cambiar el servidor", + "@changeTheServer": { "type": "text", "placeholders": {} }, - "Chat details": "Detalles del chat", - "@Chat details": { + "changeWallpaper": "Cambiar el fondo de pantalla", + "@changeWallpaper": { "type": "text", "placeholders": {} }, - "Choose a strong password": "Elija una contraseña segura", - "@Choose a strong password": { + "channelCorruptedDecryptError": "El cifrado se ha corrompido", + "@channelCorruptedDecryptError": { "type": "text", "placeholders": {} }, - "Choose a username": "Elija un nombre de usuario", - "@Choose a username": { + "chat": "Chat", + "@chat": { "type": "text", "placeholders": {} }, - "Close": "Cerrar", - "@Close": { + "chatDetails": "Detalles del chat", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "chooseAStrongPassword": "Elija una contraseña segura", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "chooseAUsername": "Elija un nombre de usuario", + "@chooseAUsername": { + "type": "text", + "placeholders": {} + }, + "close": "Cerrar", + "@close": { "type": "text", "placeholders": {} }, @@ -320,38 +338,38 @@ "type": "text", "placeholders": {} }, - "Confirm": "Confirmar", - "@Confirm": { + "confirm": "Confirmar", + "@confirm": { "type": "text", "placeholders": {} }, - "Connect": "Conectar", - "@Connect": { + "connect": "Conectar", + "@connect": { "type": "text", "placeholders": {} }, - "Connection attempt failed": "Falló el intento de conexión", - "@Connection attempt failed": { + "connectionAttemptFailed": "Falló el intento de conexión", + "@connectionAttemptFailed": { "type": "text", "placeholders": {} }, - "Contact has been invited to the group": "El contacto ha sido invitado al grupo", - "@Contact has been invited to the group": { + "contactHasBeenInvitedToTheGroup": "El contacto ha sido invitado al grupo", + "@contactHasBeenInvitedToTheGroup": { "type": "text", "placeholders": {} }, - "Content viewer": "Visor de contenido", - "@Content viewer": { + "contentViewer": "Visor de contenido", + "@contentViewer": { "type": "text", "placeholders": {} }, - "Copied to clipboard": "Copiado al portapapeles", - "@Copied to clipboard": { + "copiedToClipboard": "Copiado al portapapeles", + "@copiedToClipboard": { "type": "text", "placeholders": {} }, - "Copy": "Copiar", - "@Copy": { + "copy": "Copiar", + "@copy": { "type": "text", "placeholders": {} }, @@ -362,13 +380,13 @@ "error": {} } }, - "Could not set avatar": "No se pudo establecer la imagen de perfil", - "@Could not set avatar": { + "couldNotSetAvatar": "No se pudo establecer la imagen de perfil", + "@couldNotSetAvatar": { "type": "text", "placeholders": {} }, - "Could not set displayname": "No se pudo establecer el nombre visible", - "@Could not set displayname": { + "couldNotSetDisplayname": "No se pudo establecer el nombre visible", + "@couldNotSetDisplayname": { "type": "text", "placeholders": {} }, @@ -379,13 +397,13 @@ "count": {} } }, - "Create": "Crear", - "@Create": { + "create": "Crear", + "@create": { "type": "text", "placeholders": {} }, - "Create account now": "Crear cuenta ahora", - "@Create account now": { + "createAccountNow": "Crear cuenta ahora", + "@createAccountNow": { "type": "text", "placeholders": {} }, @@ -396,8 +414,8 @@ "username": {} } }, - "Create new group": "Crear grupo nuevo", - "@Create new group": { + "createNewGroup": "Crear grupo nuevo", + "@createNewGroup": { "type": "text", "placeholders": {} }, @@ -411,8 +429,13 @@ "type": "text", "placeholders": {} }, - "Currently active": "Actualmente activo", - "@Currently active": { + "currentlyActive": "Actualmente activo", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "Oscuro", + "@darkTheme": { "type": "text", "placeholders": {} }, @@ -441,63 +464,58 @@ "day": {} } }, - "Delete": "Eliminar", - "@Delete": { + "delete": "Eliminar", + "@delete": { "type": "text", "placeholders": {} }, - "Delete message": "Eliminar mensaje", - "@Delete message": { + "deleteMessage": "Eliminar mensaje", + "@deleteMessage": { "type": "text", "placeholders": {} }, - "Deny": "Rechazar", - "@Deny": { + "deny": "Rechazar", + "@deny": { "type": "text", "placeholders": {} }, - "Device": "Dispositivo", - "@Device": { + "device": "Dispositivo", + "@device": { "type": "text", "placeholders": {} }, - "Devices": "Dispositivos", - "@Devices": { + "devices": "Dispositivos", + "@devices": { "type": "text", "placeholders": {} }, - "Discard picture": "Descartar imagen", - "@Discard picture": { + "discardPicture": "Descartar imagen", + "@discardPicture": { "type": "text", "placeholders": {} }, - "Displayname has been changed": "El nombre visible ha cambiado", - "@Displayname has been changed": { + "displaynameHasBeenChanged": "El nombre visible ha cambiado", + "@displaynameHasBeenChanged": { "type": "text", "placeholders": {} }, - "Download file": "Descargar archivo", - "@Download file": { + "donate": "Donar", + "@donate": { "type": "text", "placeholders": {} }, - "Edit displayname": "Editar nombre visible", - "@Edit displayname": { + "downloadFile": "Descargar archivo", + "@downloadFile": { "type": "text", "placeholders": {} }, - "Emote Settings": "Configuración de emotes", - "@Emote Settings": { + "editDisplayname": "Editar nombre visible", + "@editDisplayname": { "type": "text", "placeholders": {} }, - "Emote shortcode": "Atajo de emote", - "@Emote shortcode": { - "type": "text", - "placeholders": {} - }, - "emoteWarnNeedToPick": "¡Debes elegir un atajo de emote y una imagen!", - "@emoteWarnNeedToPick": { + "editJitsiInstance": "Cambiar la instancia de Jitsi", + "@editJitsiInstance": { "type": "text", "placeholders": {} }, @@ -511,103 +529,125 @@ "type": "text", "placeholders": {} }, - "Empty chat": "Chat vacío", - "@Empty chat": { + "emoteSettings": "Configuración de emotes", + "@emoteSettings": { "type": "text", "placeholders": {} }, - "You won't be able to disable the encryption anymore. Are you sure?": "Ya no podrá deshabilitar el cifrado. ¿Estás seguro?", - "@You won't be able to disable the encryption anymore. Are you sure?": { + "emoteShortcode": "Atajo de emote", + "@emoteShortcode": { "type": "text", "placeholders": {} }, - "Encryption": "Cifrado", - "@Encryption": { + "emoteWarnNeedToPick": "¡Debes elegir un atajo de emote y una imagen!", + "@emoteWarnNeedToPick": { "type": "text", "placeholders": {} }, - "Encryption algorithm": "Algoritmo de cifrado", - "@Encryption algorithm": { + "emptyChat": "Chat vacío", + "@emptyChat": { "type": "text", "placeholders": {} }, - "Encryption is not enabled": "El cifrado no está habilitado", - "@Encryption is not enabled": { + "enableEncryptionWarning": "Ya no podrá deshabilitar el cifrado. ¿Estás seguro?", + "@enableEncryptionWarning": { "type": "text", "placeholders": {} }, - "End-to-end encryption settings": "Configuración del cifrado de extremo a extremo", - "@End-to-end encryption settings": { + "encryption": "Cifrado", + "@encryption": { "type": "text", "placeholders": {} }, - "Enter a group name": "Ingrese un nombre de grupo", - "@Enter a group name": { + "encryptionAlgorithm": "Algoritmo de cifrado", + "@encryptionAlgorithm": { "type": "text", "placeholders": {} }, - "Enter a username": "Ingrese un nombre de usuario", - "@Enter a username": { + "encryptionNotEnabled": "El cifrado no está habilitado", + "@encryptionNotEnabled": { "type": "text", "placeholders": {} }, - "Enter your homeserver": "Ingrese su servidor", - "@Enter your homeserver": { + "end2endEncryptionSettings": "Configuración del cifrado de extremo a extremo", + "@end2endEncryptionSettings": { "type": "text", "placeholders": {} }, - "File name": "Nombre del archivo", - "@File name": { + "endedTheCall": "{senderName} terminó la llamada", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterAGroupName": "Ingrese un nombre de grupo", + "@enterAGroupName": { "type": "text", "placeholders": {} }, - "File size": "Tamaño del archivo", - "@File size": { + "enterAUsername": "Ingrese un nombre de usuario", + "@enterAUsername": { "type": "text", "placeholders": {} }, - "FluffyChat": "FluffyChat", - "@FluffyChat": { + "enterYourHomeserver": "Ingrese su servidor", + "@enterYourHomeserver": { "type": "text", "placeholders": {} }, - "Forward": "Reenviar", - "@Forward": { + "fileName": "Nombre del archivo", + "@fileName": { "type": "text", "placeholders": {} }, - "Friday": "Viernes", - "@Friday": { + "fileSize": "Tamaño del archivo", + "@fileSize": { "type": "text", "placeholders": {} }, - "From joining": "Desde que se unió", - "@From joining": { + "fluffychat": "FluffyChat", + "@fluffychat": { "type": "text", "placeholders": {} }, - "From the invitation": "Desde la invitación", - "@From the invitation": { + "forward": "Reenviar", + "@forward": { "type": "text", "placeholders": {} }, - "Group": "Grupo", - "@Group": { + "friday": "Viernes", + "@friday": { "type": "text", "placeholders": {} }, - "Group description": "Descripción del grupo", - "@Group description": { + "fromJoining": "Desde que se unió", + "@fromJoining": { "type": "text", "placeholders": {} }, - "Group description has been changed": "La descripción del grupo ha sido cambiada", - "@Group description has been changed": { + "fromTheInvitation": "Desde la invitación", + "@fromTheInvitation": { "type": "text", "placeholders": {} }, - "Group is public": "El grupo es público", - "@Group is public": { + "group": "Grupo", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupDescription": "Descripción del grupo", + "@groupDescription": { + "type": "text", + "placeholders": {} + }, + "groupDescriptionHasBeenChanged": "La descripción del grupo ha sido cambiada", + "@groupDescriptionHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "El grupo es público", + "@groupIsPublic": { "type": "text", "placeholders": {} }, @@ -618,13 +658,13 @@ "displayname": {} } }, - "Guests are forbidden": "Los visitantes están prohibidos", - "@Guests are forbidden": { + "guestsAreForbidden": "Los visitantes están prohibidos", + "@guestsAreForbidden": { "type": "text", "placeholders": {} }, - "Guests can join": "Los visitantes pueden unirse", - "@Guests can join": { + "guestsCanJoin": "Los visitantes pueden unirse", + "@guestsCanJoin": { "type": "text", "placeholders": {} }, @@ -636,23 +676,23 @@ "targetName": {} } }, - "Help": "Ayuda", - "@Help": { + "help": "Ayuda", + "@help": { "type": "text", "placeholders": {} }, - "Homeserver is not compatible": "El servidor no es compatible", - "@Homeserver is not compatible": { + "homeserverIsNotCompatible": "El servidor no es compatible", + "@homeserverIsNotCompatible": { "type": "text", "placeholders": {} }, - "ID": "Identificación", - "@ID": { + "id": "Identificación", + "@id": { "type": "text", "placeholders": {} }, - "Identity": "Identidad", - "@Identity": { + "identity": "Identidad", + "@identity": { "type": "text", "placeholders": {} }, @@ -661,8 +701,8 @@ "type": "text", "placeholders": {} }, - "Invite contact": "Invitar contacto", - "@Invite contact": { + "inviteContact": "Invitar contacto", + "@inviteContact": { "type": "text", "placeholders": {} }, @@ -673,19 +713,11 @@ "groupName": {} } }, - "Invited": "Invitado", - "@Invited": { + "invited": "Invitado", + "@invited": { "type": "text", "placeholders": {} }, - "inviteText": "{username} te invitó a FluffyChat.\n1. Instale FluffyChat: http://fluffy.chat\n2. Regístrate o inicia sesión \n3. Abra el enlace de invitación: {link}", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, "invitedUser": "{username} invitó a {targetName}", "@invitedUser": { "type": "text", @@ -694,23 +726,26 @@ "targetName": {} } }, - "Invited users only": "Sólo usuarios invitados", - "@Invited users only": { + "invitedUsersOnly": "Sólo usuarios invitados", + "@invitedUsersOnly": { "type": "text", "placeholders": {} }, + "inviteText": "{username} te invitó a FluffyChat.\n1. Instale FluffyChat: https://fluffychat.im\n2. Regístrate o inicia sesión \n3. Abra el enlace de invitación: {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, "isDeviceKeyCorrect": "¿Es correcta la siguiente clave de dispositivo?", "@isDeviceKeyCorrect": { "type": "text", "placeholders": {} }, - "is typing...": "está escribiendo...", - "@is typing...": { - "type": "text", - "placeholders": {} - }, - "Edit Jitsi instance": "Cambiar la instancia de Jitsi", - "@Edit Jitsi instance": { + "isTyping": "está escribiendo...", + "@isTyping": { "type": "text", "placeholders": {} }, @@ -721,6 +756,11 @@ "username": {} } }, + "joinRoom": "Unirse a la sala", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, "keysCached": "Las claves están en caché", "@keysCached": { "type": "text", @@ -747,33 +787,11 @@ "targetName": {} } }, - "Kick from chat": "Echar del chat", - "@Kick from chat": { + "kickFromChat": "Echar del chat", + "@kickFromChat": { "type": "text", "placeholders": {} }, - "Leave": "Abandonar", - "@Leave": { - "type": "text", - "placeholders": {} - }, - "Left the chat": "Abandonó el chat", - "@Left the chat": { - "type": "text", - "placeholders": {} - }, - "Logout": "Cerrar sesión", - "@Logout": { - "type": "text", - "placeholders": {} - }, - "userLeftTheChat": "{username} abandonó el chat", - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, "lastActiveAgo": "Última vez activo: {localizedTimeShort}", "@lastActiveAgo": { "type": "text", @@ -781,23 +799,33 @@ "localizedTimeShort": {} } }, - "Last seen IP": "Última dirección IP vista", - "@Last seen IP": { + "lastSeenIp": "Última dirección IP vista", + "@lastSeenIp": { "type": "text", "placeholders": {} }, - "License": "Licencia", - "@License": { + "lastSeenLongTimeAgo": "Visto hace mucho tiempo", + "@lastSeenLongTimeAgo": { "type": "text", "placeholders": {} }, - "Loading... Please wait": "Cargando... Por favor espere", - "@Loading... Please wait": { + "leave": "Abandonar", + "@leave": { "type": "text", "placeholders": {} }, - "Load more...": "Mostrar más...", - "@Load more...": { + "leftTheChat": "Abandonó el chat", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "Licencia", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "Claro", + "@lightTheme": { "type": "text", "placeholders": {} }, @@ -808,8 +836,18 @@ "count": {} } }, - "Login": "Iniciar sesión", - "@Login": { + "loadingPleaseWait": "Cargando... Por favor espere", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "Mostrar más...", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "login": "Iniciar sesión", + "@login": { "type": "text", "placeholders": {} }, @@ -820,53 +858,58 @@ "homeserver": {} } }, - "Make a moderator": "Hacer un moderador/a", - "@Make a moderator": { + "logout": "Cerrar sesión", + "@logout": { "type": "text", "placeholders": {} }, - "Make an admin": "Hacer un administrador/a", - "@Make an admin": { + "makeAModerator": "Hacer un moderador/a", + "@makeAModerator": { "type": "text", "placeholders": {} }, - "Make sure the identifier is valid": "Asegúrese de que el identificador es válido", - "@Make sure the identifier is valid": { + "makeAnAdmin": "Hacer un administrador/a", + "@makeAnAdmin": { "type": "text", "placeholders": {} }, - "Message will be removed for all participants": "El mensaje será eliminado para todos los participantes", - "@Message will be removed for all participants": { + "makeSureTheIdentifierIsValid": "Asegúrese de que el identificador es válido", + "@makeSureTheIdentifierIsValid": { "type": "text", "placeholders": {} }, - "Moderator": "Moderador", - "@Moderator": { + "messageWillBeRemovedWarning": "El mensaje será eliminado para todos los participantes", + "@messageWillBeRemovedWarning": { "type": "text", "placeholders": {} }, - "Monday": "Lunes", - "@Monday": { + "moderator": "Moderador", + "@moderator": { "type": "text", "placeholders": {} }, - "Mute chat": "Silenciar chat", - "@Mute chat": { + "monday": "Lunes", + "@monday": { "type": "text", "placeholders": {} }, - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": "Tenga en cuenta que necesita Pantalaimon para utilizar el cifrado de extremo a extremo por ahora.", - "@Please be aware that you need Pantalaimon to use end-to-end encryption for now.": { + "muteChat": "Silenciar chat", + "@muteChat": { "type": "text", "placeholders": {} }, - "New message in FluffyChat": "Nuevo mensaje en FluffyChat", - "@New message in FluffyChat": { + "needPantalaimonWarning": "Tenga en cuenta que necesita Pantalaimon para utilizar el cifrado de extremo a extremo por ahora.", + "@needPantalaimonWarning": { "type": "text", "placeholders": {} }, - "New private chat": "Nuevo chat privado", - "@New private chat": { + "newMessageInFluffyChat": "Nuevo mensaje en FluffyChat", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "newPrivateChat": "Nuevo chat privado", + "@newPrivateChat": { "type": "text", "placeholders": {} }, @@ -875,43 +918,48 @@ "type": "text", "placeholders": {} }, - "noCrossSignBootstrap": "Fluffychat actualmente no admite habilitar confirmación cruzada. Por favor habilítela desde Element.", + "no": "No", + "@no": { + "type": "text", + "placeholders": {} + }, + "noCrossSignBootstrap": "Fluffychat actualmente no soporta la activación de Cross-Signing. Por favor, actívelo dentro de Riot.", "@noCrossSignBootstrap": { "type": "text", "placeholders": {} }, - "noMegolmBootstrap": "Fluffychat actualmente no admite habilitar la Copia de seguridad de clave en línea. Por favor habilítela desde Element.", + "noEmotesFound": "Ningún emote encontrado. 😕", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "Parece que no tienes servicios de Google en tu teléfono. ¡Esa es una buena decisión para tu privacidad! Para recibir notificaciones instantáneas en FluffyChat, recomendamos usar microG: https://microg.org/", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "noMegolmBootstrap": "Fluffychat actualmente no soporta la activación de Online Key Backup. Por favor, actívalo dentro de Riot.", "@noMegolmBootstrap": { "type": "text", "placeholders": {} }, - "It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": "Parece que no tienes servicios de Google en tu teléfono. ¡Esa es una buena decisión para tu privacidad! Para recibir notificaciones instantáneas en FluffyChat, recomendamos usar microG: https://microg.org/", - "@It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": { + "none": "Ninguno", + "@none": { "type": "text", "placeholders": {} }, - "None": "Ninguno", - "@None": { + "noPermission": "Sin autorización", + "@noPermission": { "type": "text", "placeholders": {} }, - "No emotes found. 😕": "Ningún emote encontrado. 😕", - "@No emotes found. 😕": { + "noRoomsFound": "Ninguna sala encontrada...", + "@noRoomsFound": { "type": "text", "placeholders": {} }, - "No permission": "Sin autorización", - "@No permission": { - "type": "text", - "placeholders": {} - }, - "No rooms found...": "Ninguna sala encontrada...", - "@No rooms found...": { - "type": "text", - "placeholders": {} - }, - "Not supported in web": "No es compatible con la versión web", - "@Not supported in web": { + "notSupportedInWeb": "No es compatible con la versión web", + "@notSupportedInWeb": { "type": "text", "placeholders": {} }, @@ -937,28 +985,28 @@ "type": "text", "placeholders": {} }, - "Oops something went wrong...": "Ups, algo salió mal...", - "@Oops something went wrong...": { + "oopsSomethingWentWrong": "Ups, algo salió mal...", + "@oopsSomethingWentWrong": { "type": "text", "placeholders": {} }, - "Open app to read messages": "Abrir la aplicación para leer los mensajes", - "@Open app to read messages": { + "openAppToReadMessages": "Abrir la aplicación para leer los mensajes", + "@openAppToReadMessages": { "type": "text", "placeholders": {} }, - "Open camera": "Abrir la cámara", - "@Open camera": { + "openCamera": "Abrir la cámara", + "@openCamera": { "type": "text", "placeholders": {} }, - "(Optional) Group name": "(Opcional) Nombre del grupo", - "@(Optional) Group name": { + "optionalGroupName": "(Opcional) Nombre del grupo", + "@optionalGroupName": { "type": "text", "placeholders": {} }, - "Participating user devices": "Dispositivos de usuario participantes", - "@Participating user devices": { + "participatingUserDevices": "Dispositivos de usuario participantes", + "@participatingUserDevices": { "type": "text", "placeholders": {} }, @@ -967,13 +1015,18 @@ "type": "text", "placeholders": {} }, - "Password": "Contraseña", - "@Password": { + "password": "Contraseña", + "@password": { "type": "text", "placeholders": {} }, - "Pick image": "Elegir imagen", - "@Pick image": { + "pickImage": "Elegir imagen", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "pin": "Pin", + "@pin": { "type": "text", "placeholders": {} }, @@ -984,48 +1037,33 @@ "fileName": {} } }, - "Please choose a username": "Por favor, elija un nombre de usuario", - "@Please choose a username": { + "pleaseChooseAUsername": "Por favor, elija un nombre de usuario", + "@pleaseChooseAUsername": { "type": "text", "placeholders": {} }, - "Please enter a matrix identifier": "Por favor, ingrese un identificador matrix", - "@Please enter a matrix identifier": { + "pleaseEnterAMatrixIdentifier": "Por favor, ingrese un identificador matrix", + "@pleaseEnterAMatrixIdentifier": { "type": "text", "placeholders": {} }, - "Please enter your password": "Por favor ingrese su contraseña", - "@Please enter your password": { + "pleaseEnterYourPassword": "Por favor ingrese su contraseña", + "@pleaseEnterYourPassword": { "type": "text", "placeholders": {} }, - "Please enter your username": "Por favor ingrese su nombre de usuario", - "@Please enter your username": { + "pleaseEnterYourUsername": "Por favor ingrese su nombre de usuario", + "@pleaseEnterYourUsername": { "type": "text", "placeholders": {} }, - "Public Rooms": "Salas públicas", - "@Public Rooms": { + "publicRooms": "Salas públicas", + "@publicRooms": { "type": "text", "placeholders": {} }, - "Reject": "Rechazar", - "@Reject": { - "type": "text", - "placeholders": {} - }, - "Rejoin": "Volver a unirse", - "@Rejoin": { - "type": "text", - "placeholders": {} - }, - "Render rich message content": "Mostrar el contenido con mensajes enriquecidos", - "@Render rich message content": { - "type": "text", - "placeholders": {} - }, - "Recording": "Grabando", - "@Recording": { + "recording": "Grabando", + "@recording": { "type": "text", "placeholders": {} }, @@ -1036,6 +1074,11 @@ "username": {} } }, + "reject": "Rechazar", + "@reject": { + "type": "text", + "placeholders": {} + }, "rejectedTheInvitation": "{username} rechazó la invitación", "@rejectedTheInvitation": { "type": "text", @@ -1043,8 +1086,18 @@ "username": {} } }, - "Remove all other devices": "Eliminar todos los otros dispositivos", - "@Remove all other devices": { + "rejoin": "Volver a unirse", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "Eliminar", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "Eliminar todos los otros dispositivos", + "@removeAllOtherDevices": { "type": "text", "placeholders": {} }, @@ -1055,75 +1108,58 @@ "username": {} } }, - "Remove device": "Eliminar dispositivo", - "@Remove device": { + "removeDevice": "Eliminar dispositivo", + "@removeDevice": { "type": "text", "placeholders": {} }, - "Remove exile": "Eliminar la expulsión", - "@Remove exile": { + "removeExile": "Eliminar la expulsión", + "@removeExile": { "type": "text", "placeholders": {} }, - "Revoke all permissions": "Revocar todos los permisos", - "@Revoke all permissions": { + "removeMessage": "Eliminar mensaje", + "@removeMessage": { "type": "text", "placeholders": {} }, - "Remove": "Eliminar", - "@Remove": { + "renderRichContent": "Mostrar el contenido con mensajes enriquecidos", + "@renderRichContent": { "type": "text", "placeholders": {} }, - "Remove message": "Eliminar mensaje", - "@Remove message": { + "reply": "Responder", + "@reply": { "type": "text", "placeholders": {} }, - "Reply": "Responder", - "@Reply": { + "requestPermission": "Solicitar permiso", + "@requestPermission": { "type": "text", "placeholders": {} }, - "Request permission": "Solicitar permiso", - "@Request permission": { + "requestToReadOlderMessages": "Solicitar poder leer mensajes antiguos", + "@requestToReadOlderMessages": { "type": "text", "placeholders": {} }, - "Request to read older messages": "Solicitar poder leer mensajes antiguos", - "@Request to read older messages": { + "revokeAllPermissions": "Revocar todos los permisos", + "@revokeAllPermissions": { "type": "text", "placeholders": {} }, - "Room has been upgraded": "La sala ha subido de categoría", - "@Room has been upgraded": { + "roomHasBeenUpgraded": "La sala ha subido de categoría", + "@roomHasBeenUpgraded": { "type": "text", "placeholders": {} }, - "Saturday": "Sábado", - "@Saturday": { + "saturday": "Sábado", + "@saturday": { "type": "text", "placeholders": {} }, - "Share": "Compartir", - "@Share": { - "type": "text", - "placeholders": {} - }, - "sharedTheLocation": "{username} compartió la ubicación", - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "Search for a chat": "Buscar un chat", - "@Search for a chat": { - "type": "text", - "placeholders": {} - }, - "Seen a long time ago": "Visto hace mucho tiempo", - "@Seen a long time ago": { + "searchForAChat": "Buscar un chat", + "@searchForAChat": { "type": "text", "placeholders": {} }, @@ -1134,14 +1170,6 @@ "username": {} } }, - "seenByUserAndUser": "Visto por {username} y {username2}", - "@seenByUserAndUser": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, "seenByUserAndCountOthers": "Visto por {username} y {count} más", "@seenByUserAndCountOthers": { "type": "text", @@ -1150,23 +1178,51 @@ "count": {} } }, - "Send": "Enviar", - "@Send": { + "seenByUserAndUser": "Visto por {username} y {username2}", + "@seenByUserAndUser": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "send": "Enviar", + "@send": { "type": "text", "placeholders": {} }, - "Send a message": "Enviar un mensaje", - "@Send a message": { + "sendAMessage": "Enviar un mensaje", + "@sendAMessage": { "type": "text", "placeholders": {} }, - "Send file": "Enviar un archivo", - "@Send file": { + "sendAudio": "Enviar audio", + "@sendAudio": { "type": "text", "placeholders": {} }, - "Send image": "Enviar una imagen", - "@Send image": { + "sendBugReports": "Permite el envió de informes de errores con sentry.io", + "@sendBugReports": { + "type": "text", + "placeholders": {} + }, + "sendFile": "Enviar un archivo", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "Enviar una imagen", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "Enviar el original", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendVideo": "Enviar video", + "@sendVideo": { "type": "text", "placeholders": {} }, @@ -1205,123 +1261,129 @@ "username": {} } }, + "sentCallInformations": "{senderName} envió información de la llamada", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "sentryInfo": "Informacion sobre tu privacidad: https://sentry.io/security/", + "@sentryInfo": { + "type": "text", + "placeholders": {} + }, "sessionVerified": "La sesión está verificada", "@sessionVerified": { "type": "text", "placeholders": {} }, - "Set a profile picture": "Establecer una foto de perfil", - "@Set a profile picture": { + "setAProfilePicture": "Establecer una foto de perfil", + "@setAProfilePicture": { "type": "text", "placeholders": {} }, - "Set group description": "Establecer descripción del grupo", - "@Set group description": { + "setGroupDescription": "Establecer descripción del grupo", + "@setGroupDescription": { "type": "text", "placeholders": {} }, - "Set invitation link": "Establecer enlace de invitación", - "@Set invitation link": { + "setInvitationLink": "Establecer enlace de invitación", + "@setInvitationLink": { "type": "text", "placeholders": {} }, - "Set status": "Establecer estado", - "@Set status": { + "setStatus": "Establecer estado", + "@setStatus": { "type": "text", "placeholders": {} }, - "Settings": "Ajustes", - "@Settings": { + "settings": "Ajustes", + "@settings": { "type": "text", "placeholders": {} }, - "Sign up": "Registrarse", - "@Sign up": { + "share": "Compartir", + "@share": { "type": "text", "placeholders": {} }, - "Skip": "Omitir", - "@Skip": { + "sharedTheLocation": "{username} compartió la ubicación", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "signUp": "Registrarse", + "@signUp": { "type": "text", "placeholders": {} }, - "Change your style": "Cambia tu estilo", - "@Change your style": { + "skip": "Omitir", + "@skip": { "type": "text", "placeholders": {} }, - "System": "Sistema", - "@System": { + "sourceCode": "Código fuente", + "@sourceCode": { "type": "text", "placeholders": {} }, - "How are you today?": "¿Cómo estás hoy?", - "@How are you today?": { + "startedACall": "{senderName} comenzó una llamada", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "startYourFirstChat": "Comience su primer chat :-)", + "@startYourFirstChat": { "type": "text", "placeholders": {} }, - "Light": "Claro", - "@Light": { + "statusExampleMessage": "¿Cómo estás hoy?", + "@statusExampleMessage": { "type": "text", "placeholders": {} }, - "Dark": "Oscuro", - "@Dark": { + "submit": "Enviar", + "@submit": { "type": "text", "placeholders": {} }, - "Use Amoled compatible colors?": "¿Usar colores compatibles con AMOLED?", - "@Use Amoled compatible colors?": { + "sunday": "Domingo", + "@sunday": { "type": "text", "placeholders": {} }, - "Source code": "Código fuente", - "@Source code": { + "systemTheme": "Sistema", + "@systemTheme": { "type": "text", "placeholders": {} }, - "Start your first chat :-)": "Comience su primer chat :-)", - "@Start your first chat :-)": { + "tapToShowMenu": "Toca para mostrar el menú", + "@tapToShowMenu": { "type": "text", "placeholders": {} }, - "Submit": "Enviar", - "@Submit": { + "theyDontMatch": "No coinciden", + "@theyDontMatch": { "type": "text", "placeholders": {} }, - "Sunday": "Domingo", - "@Sunday": { + "theyMatch": "Coinciden", + "@theyMatch": { "type": "text", "placeholders": {} }, - "Donate": "Donar", - "@Donate": { + "thisRoomHasBeenArchived": "Esta sala ha sido archivada.", + "@thisRoomHasBeenArchived": { "type": "text", "placeholders": {} }, - "Tap to show menu": "Toca para mostrar el menú", - "@Tap to show menu": { - "type": "text", - "placeholders": {} - }, - "They Don't Match": "No coinciden", - "@They Don't Match": { - "type": "text", - "placeholders": {} - }, - "They Match": "Coinciden", - "@They Match": { - "type": "text", - "placeholders": {} - }, - "This room has been archived.": "Esta sala ha sido archivada.", - "@This room has been archived.": { - "type": "text", - "placeholders": {} - }, - "Thursday": "Jueves", - "@Thursday": { + "thursday": "Jueves", + "@thursday": { "type": "text", "placeholders": {} }, @@ -1341,13 +1403,13 @@ "type": "text", "placeholders": {} }, - "Try to send again": "Intentar enviar nuevamente", - "@Try to send again": { + "tryToSendAgain": "Intentar enviar nuevamente", + "@tryToSendAgain": { "type": "text", "placeholders": {} }, - "Tuesday": "Martes", - "@Tuesday": { + "tuesday": "Martes", + "@tuesday": { "type": "text", "placeholders": {} }, @@ -1359,28 +1421,18 @@ "targetName": {} } }, - "Unblock Device": "Desbloquear dispositivo", - "@Unblock Device": { + "unblockDevice": "Desbloquear dispositivo", + "@unblockDevice": { "type": "text", "placeholders": {} }, - "Unmute chat": "Dejar de silenciar el chat", - "@Unmute chat": { + "unknownDevice": "Dispositivo desconocido", + "@unknownDevice": { "type": "text", "placeholders": {} }, - "Unknown device": "Dispositivo desconocido", - "@Unknown device": { - "type": "text", - "placeholders": {} - }, - "Unknown encryption algorithm": "Algoritmo de cifrado desconocido", - "@Unknown encryption algorithm": { - "type": "text", - "placeholders": {} - }, - "unknownSessionVerify": "Sesión desconocida, por favor verifíquela", - "@unknownSessionVerify": { + "unknownEncryptionAlgorithm": "Algoritmo de cifrado desconocido", + "@unknownEncryptionAlgorithm": { "type": "text", "placeholders": {} }, @@ -1391,6 +1443,21 @@ "type": {} } }, + "unknownSessionVerify": "Sesión desconocida, por favor verifíquela", + "@unknownSessionVerify": { + "type": "text", + "placeholders": {} + }, + "unmuteChat": "Dejar de silenciar el chat", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unpin": "Despinchar", + "@unpin": { + "type": "text", + "placeholders": {} + }, "unreadChats": "{unreadCount} chats no leídos", "@unreadChats": { "type": "text", @@ -1413,6 +1480,11 @@ "unreadChats": {} } }, + "useAmoledTheme": "¿Usar colores compatibles con AMOLED?", + "@useAmoledTheme": { + "type": "text", + "placeholders": {} + }, "userAndOthersAreTyping": "{username} y {count} más están escribiendo...", "@userAndOthersAreTyping": { "type": "text", @@ -1429,11 +1501,6 @@ "username2": {} } }, - "Username": "Nombre de usuario", - "@Username": { - "type": "text", - "placeholders": {} - }, "userIsTyping": "{username} está escribiendo...", "@userIsTyping": { "type": "text", @@ -1441,6 +1508,18 @@ "username": {} } }, + "userLeftTheChat": "{username} abandonó el chat", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "Nombre de usuario", + "@username": { + "type": "text", + "placeholders": {} + }, "userSentUnknownEvent": "{username} envió un evento {type}", "@userSentUnknownEvent": { "type": "text", @@ -1449,8 +1528,13 @@ "type": {} } }, - "Verify": "Verificar", - "@Verify": { + "verifiedSession": "¡Sesión verificada exitosamente!", + "@verifiedSession": { + "type": "text", + "placeholders": {} + }, + "verify": "Verificar", + "@verify": { "type": "text", "placeholders": {} }, @@ -1459,11 +1543,6 @@ "type": "text", "placeholders": {} }, - "verifiedSession": "¡Sesión verificada exitosamente!", - "@verifiedSession": { - "type": "text", - "placeholders": {} - }, "verifyStart": "Comenzar verificación", "@verifyStart": { "type": "text", @@ -1479,33 +1558,33 @@ "type": "text", "placeholders": {} }, - "Verify User": "Verificar usuario", - "@Verify User": { + "verifyUser": "Verificar usuario", + "@verifyUser": { "type": "text", "placeholders": {} }, - "Video call": "Video llamada", - "@Video call": { + "videoCall": "Video llamada", + "@videoCall": { "type": "text", "placeholders": {} }, - "Visible for all participants": "Visible para todos los participantes", - "@Visible for all participants": { + "visibilityOfTheChatHistory": "Visibilidad del historial del chat", + "@visibilityOfTheChatHistory": { "type": "text", "placeholders": {} }, - "Visible for everyone": "Visible para todo el mundo", - "@Visible for everyone": { + "visibleForAllParticipants": "Visible para todos los participantes", + "@visibleForAllParticipants": { "type": "text", "placeholders": {} }, - "Visibility of the chat history": "Visibilidad del historial del chat", - "@Visibility of the chat history": { + "visibleForEveryone": "Visible para todo el mundo", + "@visibleForEveryone": { "type": "text", "placeholders": {} }, - "Voice message": "Mensaje de voz", - "@Voice message": { + "voiceMessage": "Mensaje de voz", + "@voiceMessage": { "type": "text", "placeholders": {} }, @@ -1524,69 +1603,69 @@ "type": "text", "placeholders": {} }, - "Wallpaper": "Fondo de pantalla", - "@Wallpaper": { + "wallpaper": "Fondo de pantalla", + "@wallpaper": { "type": "text", "placeholders": {} }, - "End to end encryption is currently in Beta! Use at your own risk!": "¡El cifrado de extremo a extremo está actualmente en período de prueba! ¡Úselo bajo su propio riesgo!", - "@End to end encryption is currently in Beta! Use at your own risk!": { + "warningEncryptionInBeta": "¡El cifrado de extremo a extremo está actualmente en período de prueba! ¡Úselo bajo su propio riesgo!", + "@warningEncryptionInBeta": { "type": "text", "placeholders": {} }, - "Wednesday": "Miércoles", - "@Wednesday": { + "wednesday": "Miércoles", + "@wednesday": { "type": "text", "placeholders": {} }, - "Welcome to the cutest instant messenger in the matrix network.": "Bienvenido al mensajero instantáneo más tierno de la red Matrix.", - "@Welcome to the cutest instant messenger in the matrix network.": { + "welcomeText": "Bienvenidos al mensajero instantáneo más lindo de la red matricial.", + "@welcomeText": { "type": "text", "placeholders": {} }, - "Who is allowed to join this group": "Quién tiene permitido unirse al grupo", - "@Who is allowed to join this group": { + "whoIsAllowedToJoinThisGroup": "Quién tiene permitido unirse al grupo", + "@whoIsAllowedToJoinThisGroup": { "type": "text", "placeholders": {} }, - "Write a message...": "Escribe un mensaje...", - "@Write a message...": { + "writeAMessage": "Escribe un mensaje...", + "@writeAMessage": { "type": "text", "placeholders": {} }, - "Yes": "Sí", - "@Yes": { + "yes": "Sí", + "@yes": { "type": "text", "placeholders": {} }, - "You": "Tú", - "@You": { + "you": "Tú", + "@you": { "type": "text", "placeholders": {} }, - "You are invited to this chat": "Estás invitado a este chat", - "@You are invited to this chat": { + "youAreInvitedToThisChat": "Estás invitado a este chat", + "@youAreInvitedToThisChat": { "type": "text", "placeholders": {} }, - "You are no longer participating in this chat": "Ya no estás participando en este chat", - "@You are no longer participating in this chat": { + "youAreNoLongerParticipatingInThisChat": "Ya no estás participando en este chat", + "@youAreNoLongerParticipatingInThisChat": { "type": "text", "placeholders": {} }, - "You cannot invite yourself": "No puedes invitarte a tí mismo", - "@You cannot invite yourself": { + "youCannotInviteYourself": "No puedes invitarte a tí mismo", + "@youCannotInviteYourself": { "type": "text", "placeholders": {} }, - "You have been banned from this chat": "Has sido vetado de este chat", - "@You have been banned from this chat": { + "youHaveBeenBannedFromThisChat": "Has sido vetado de este chat", + "@youHaveBeenBannedFromThisChat": { "type": "text", "placeholders": {} }, - "Your own username": "Tu nombre de usuario", - "@Your own username": { + "yourOwnUsername": "Tu nombre de usuario", + "@yourOwnUsername": { "type": "text", "placeholders": {} } -} +} \ No newline at end of file diff --git a/lib/l10n/intl_et.arb b/lib/l10n/intl_et.arb new file mode 100644 index 0000000..11b58fe --- /dev/null +++ b/lib/l10n/intl_et.arb @@ -0,0 +1,1706 @@ +{ + "@@locale": "et", + "@@last_modified": "2020-09-23 11:46:02.671026", + "about": "Rakenduse teave", + "@about": { + "type": "text", + "placeholders": {} + }, + "accept": "Nõustu", + "@accept": { + "type": "text", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} võttis kutse vastu", + "@acceptedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "account": "Kasutajakonto", + "@account": { + "type": "text", + "placeholders": {} + }, + "accountInformation": "Kasutajakonto teave", + "@accountInformation": { + "type": "text", + "placeholders": {} + }, + "activatedEndToEndEncryption": "{username} võttis kasutusele läbiva krüptimise", + "@activatedEndToEndEncryption": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "addGroupDescription": "Lisa rühma kirjeldus", + "@addGroupDescription": { + "type": "text", + "placeholders": {} + }, + "admin": "Peakasutaja", + "@admin": { + "type": "text", + "placeholders": {} + }, + "alias": "alias", + "@alias": { + "type": "text", + "placeholders": {} + }, + "alreadyHaveAnAccount": "Sul juba on kasutajakonto olemas?", + "@alreadyHaveAnAccount": { + "type": "text", + "placeholders": {} + }, + "answeredTheCall": "{senderName} vastas kõnele", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "Kõik võivad liituda", + "@anyoneCanJoin": { + "type": "text", + "placeholders": {} + }, + "archive": "Arhiiv", + "@archive": { + "type": "text", + "placeholders": {} + }, + "archivedRoom": "Arhiveeritud jututuba", + "@archivedRoom": { + "type": "text", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Kas külalised võivad liituda", + "@areGuestsAllowedToJoin": { + "type": "text", + "placeholders": {} + }, + "areYouSure": "Kas sa oled kindel?", + "@areYouSure": { + "type": "text", + "placeholders": {} + }, + "askSSSSCache": "Krüptovõtmete puhverdamiseks palun sisesta oma turvahoidla paroolifraas või taastevõti.", + "@askSSSSCache": { + "type": "text", + "placeholders": {} + }, + "askSSSSSign": "Selleks, et teist osapoolt identifitseerivat allkirja anda, palun sisesta oma turvahoidla paroolifraas või taastevõti.", + "@askSSSSSign": { + "type": "text", + "placeholders": {} + }, + "askSSSSVerify": "Oma sessiooni verifitseerimiseks palun sisesta oma turvahoidla paroolifraas või taastevõti.", + "@askSSSSVerify": { + "type": "text", + "placeholders": {} + }, + "askVerificationRequest": "Kas võtad vastu selle verifitseerimispalve kasutajalt {username}?", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "authentication": "Autentimine", + "@authentication": { + "type": "text", + "placeholders": {} + }, + "avatarHasBeenChanged": "Tunnuspilt on muudetud", + "@avatarHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "banFromChat": "Keela ligipääs vestlusele", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "banned": "Ligipääs vestlusele on keelatud", + "@banned": { + "type": "text", + "placeholders": {} + }, + "bannedUser": "{username} keelas ligipääsu kasutajale {targetName}", + "@bannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "blockDevice": "Blokeeri seade", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, + "byDefaultYouWillBeConnectedTo": "Vaikimisi kasutame ühendust koduserveriga {homeserver}", + "@byDefaultYouWillBeConnectedTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "cachedKeys": "Krüptovõtmed on edukalt puhverdatud!", + "@cachedKeys": { + "type": "text", + "placeholders": {} + }, + "cancel": "Tühista", + "@cancel": { + "type": "text", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} muutis vestluse tunnuspilti", + "@changedTheChatAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheChatDescriptionTo": "{username} muutis vestluse uueks kirjelduseks „{description}“", + "@changedTheChatDescriptionTo": { + "type": "text", + "placeholders": { + "username": {}, + "description": {} + } + }, + "changedTheChatNameTo": "{username} muutis oma uueks kuvatavaks nimeks „{chatname}“", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, + "changedTheChatPermissions": "{username} muutis vestlusega seotud õigusi", + "@changedTheChatPermissions": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheDisplaynameTo": "{username} muutis uueks kuvatavaks nimeks: {displayname}", + "@changedTheDisplaynameTo": { + "type": "text", + "placeholders": { + "username": {}, + "displayname": {} + } + }, + "changedTheGuestAccessRules": "{username} muutis külaliste ligipääsureegleid", + "@changedTheGuestAccessRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheGuestAccessRulesTo": "{username} muutis külaliste ligipääsureegleid järgnevalt: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheHistoryVisibility": "{username} muutis sõnumite ajaloo nähtavust", + "@changedTheHistoryVisibility": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheHistoryVisibilityTo": "{username} muutis sõnumite ajaloo nähtavust järgnevalt: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheJoinRules": "{username} muutis liitumise reegleid", + "@changedTheJoinRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheJoinRulesTo": "{username} muutis liitumise reegleid järgnevalt: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "joinRules": {} + } + }, + "changedTheProfileAvatar": "{username} muutis oma tunnuspilti", + "@changedTheProfileAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomAliases": "{username} muutis jututoa aliast", + "@changedTheRoomAliases": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomInvitationLink": "{username} muutis kutse linki", + "@changedTheRoomInvitationLink": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changelog": "Muudatuste logi", + "@changelog": { + "type": "text", + "placeholders": {} + }, + "changesHaveBeenSaved": "Salvestasin muudatused", + "@changesHaveBeenSaved": { + "type": "text", + "placeholders": {} + }, + "changeTheHomeserver": "Muuda koduserverit", + "@changeTheHomeserver": { + "type": "text", + "placeholders": {} + }, + "changeTheme": "Muuda oma stiili", + "@changeTheme": { + "type": "text", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Muuda rühma nime", + "@changeTheNameOfTheGroup": { + "type": "text", + "placeholders": {} + }, + "changeTheServer": "Muuda serverit", + "@changeTheServer": { + "type": "text", + "placeholders": {} + }, + "changeWallpaper": "Muuda taustapilti", + "@changeWallpaper": { + "type": "text", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Kasutatud krüptimine on vigane", + "@channelCorruptedDecryptError": { + "type": "text", + "placeholders": {} + }, + "chat": "Vestlus", + "@chat": { + "type": "text", + "placeholders": {} + }, + "chatDetails": "Vestluse teave", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "chooseAStrongPassword": "Vali korralik salasõna", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "chooseAUsername": "Vali kasutajanimi", + "@chooseAUsername": { + "type": "text", + "placeholders": {} + }, + "close": "Sulge", + "@close": { + "type": "text", + "placeholders": {} + }, + "compareEmojiMatch": "Võrdle ja kontrolli, et emotikonid on teises seadmes täpselt samad:", + "@compareEmojiMatch": { + "type": "text", + "placeholders": {} + }, + "compareNumbersMatch": "Võrdle ja kontrolli, et järgnevad numbrid on teises seadmes täpselt samad:", + "@compareNumbersMatch": { + "type": "text", + "placeholders": {} + }, + "confirm": "Kinnita", + "@confirm": { + "type": "text", + "placeholders": {} + }, + "connect": "Ühenda", + "@connect": { + "type": "text", + "placeholders": {} + }, + "connectionAttemptFailed": "Ühenduse loomise katse ebaõnnestus", + "@connectionAttemptFailed": { + "type": "text", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Sinu kontakt on kutsutud liituma rühmaga", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "contentViewer": "Sisukuvaja", + "@contentViewer": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "Kopeerisin lõikelauale", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "copy": "Kopeeri", + "@copy": { + "type": "text", + "placeholders": {} + }, + "couldNotDecryptMessage": "Sõnumi dekrüptimine ei õnnestunud: {error}", + "@couldNotDecryptMessage": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "couldNotSetAvatar": "Tunnuspildi seadmine ei õnnestunud", + "@couldNotSetAvatar": { + "type": "text", + "placeholders": {} + }, + "couldNotSetDisplayname": "Kuvatava nime määramine ei õnnestunud", + "@couldNotSetDisplayname": { + "type": "text", + "placeholders": {} + }, + "countParticipants": "{count} osalejat", + "@countParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "create": "Loo", + "@create": { + "type": "text", + "placeholders": {} + }, + "createAccountNow": "Tee nüüd kasutajakonto", + "@createAccountNow": { + "type": "text", + "placeholders": {} + }, + "createdTheChat": "{username} algatas vestluse", + "@createdTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "createNewGroup": "Loo uus rühm", + "@createNewGroup": { + "type": "text", + "placeholders": {} + }, + "crossSigningDisabled": "Risttunnustamine ei ole kasutusel", + "@crossSigningDisabled": { + "type": "text", + "placeholders": {} + }, + "crossSigningEnabled": "Risttunnustamine on kasutusel", + "@crossSigningEnabled": { + "type": "text", + "placeholders": {} + }, + "currentlyActive": "Hetkel aktiivne", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "Tume", + "@darkTheme": { + "type": "text", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "text", + "placeholders": { + "date": {}, + "timeOfDay": {} + } + }, + "dateWithoutYear": "{day}.{month}", + "@dateWithoutYear": { + "type": "text", + "placeholders": { + "month": {}, + "day": {} + } + }, + "dateWithYear": "{day}.{month}.{year}", + "@dateWithYear": { + "type": "text", + "placeholders": { + "year": {}, + "month": {}, + "day": {} + } + }, + "deactivateAccountWarning": "Järgnevaga eemaldatakse sinu konto kasutusest. Seda tegevust ei saa tagasi pöörata! Kas sa ikka oled kindel?", + "@deactivateAccountWarning": { + "type": "text", + "placeholders": {} + }, + "delete": "Kustuta", + "@delete": { + "type": "text", + "placeholders": {} + }, + "deleteAccount": "Kustuta kasutajakonto", + "@deleteAccount": { + "type": "text", + "placeholders": {} + }, + "deleteMessage": "Kustuta sõnum", + "@deleteMessage": { + "type": "text", + "placeholders": {} + }, + "deny": "Keela", + "@deny": { + "type": "text", + "placeholders": {} + }, + "device": "Seade", + "@device": { + "type": "text", + "placeholders": {} + }, + "devices": "Seadmed", + "@devices": { + "type": "text", + "placeholders": {} + }, + "discardPicture": "Emalda pilt", + "@discardPicture": { + "type": "text", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Kuvatav nimi on muudetud", + "@displaynameHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "donate": "Toeta", + "@donate": { + "type": "text", + "placeholders": {} + }, + "downloadFile": "Lae fail alla", + "@downloadFile": { + "type": "text", + "placeholders": {} + }, + "editDisplayname": "Muuda kuvatavat nime", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "editJitsiInstance": "Muuda Jitsi liidestust", + "@editJitsiInstance": { + "type": "text", + "placeholders": {} + }, + "emoteExists": "Selline emotsioonitegevus on juba olemas!", + "@emoteExists": { + "type": "text", + "placeholders": {} + }, + "emoteInvalid": "Vigane emotsioonitegevuse lühikood!", + "@emoteInvalid": { + "type": "text", + "placeholders": {} + }, + "emoteSettings": "Emotsioonitegevuste seadistused", + "@emoteSettings": { + "type": "text", + "placeholders": {} + }, + "emoteShortcode": "Emotsioonitegevuse lühikood", + "@emoteShortcode": { + "type": "text", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Sa pead valima emotsioonitegevuse lühikoodi ja pildi!", + "@emoteWarnNeedToPick": { + "type": "text", + "placeholders": {} + }, + "emptyChat": "Vestlust pole olnud", + "@emptyChat": { + "type": "text", + "placeholders": {} + }, + "enableEncryptionWarning": "Sa ei saa hiljem enam krüptimist välja lülitada. Kas oled kindel?", + "@enableEncryptionWarning": { + "type": "text", + "placeholders": {} + }, + "encryption": "Krüptimine", + "@encryption": { + "type": "text", + "placeholders": {} + }, + "encryptionAlgorithm": "Krüptoalgoritm", + "@encryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "encryptionNotEnabled": "Krüptimine ei ole kasutusel", + "@encryptionNotEnabled": { + "type": "text", + "placeholders": {} + }, + "end2endEncryptionSettings": "Läbiva krüptimise seadistused", + "@end2endEncryptionSettings": { + "type": "text", + "placeholders": {} + }, + "endedTheCall": "{senderName} lõpetas kõne", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterAGroupName": "Sisesta rühma nimi", + "@enterAGroupName": { + "type": "text", + "placeholders": {} + }, + "enterAUsername": "Sisesta kasutajanimi", + "@enterAUsername": { + "type": "text", + "placeholders": {} + }, + "enterYourHomeserver": "Sisesta oma koduserveri aadress", + "@enterYourHomeserver": { + "type": "text", + "placeholders": {} + }, + "fileName": "Faili nimi", + "@fileName": { + "type": "text", + "placeholders": {} + }, + "fileSize": "Faili suurus", + "@fileSize": { + "type": "text", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "text", + "placeholders": {} + }, + "forward": "Edasi", + "@forward": { + "type": "text", + "placeholders": {} + }, + "friday": "Reede", + "@friday": { + "type": "text", + "placeholders": {} + }, + "fromJoining": "Alates liitumise hetkest", + "@fromJoining": { + "type": "text", + "placeholders": {} + }, + "fromTheInvitation": "Kutse saamisest", + "@fromTheInvitation": { + "type": "text", + "placeholders": {} + }, + "group": "Rühm", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupDescription": "Rühma kirjeldus", + "@groupDescription": { + "type": "text", + "placeholders": {} + }, + "groupDescriptionHasBeenChanged": "Rühma kirjeldus on muutunud", + "@groupDescriptionHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "Rühm on avalik", + "@groupIsPublic": { + "type": "text", + "placeholders": {} + }, + "groupWith": "Rühm {displayname} kasutajanimega", + "@groupWith": { + "type": "text", + "placeholders": { + "displayname": {} + } + }, + "guestsAreForbidden": "Külalised ei ole lubatud", + "@guestsAreForbidden": { + "type": "text", + "placeholders": {} + }, + "guestsCanJoin": "Külalised võivad liituda", + "@guestsCanJoin": { + "type": "text", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} on võtnud tagasi {targetName} kutse", + "@hasWithdrawnTheInvitationFor": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "help": "Abiteave", + "@help": { + "type": "text", + "placeholders": {} + }, + "homeserverIsNotCompatible": "Koduserver ei ole ühilduv", + "@homeserverIsNotCompatible": { + "type": "text", + "placeholders": {} + }, + "id": "ID", + "@id": { + "type": "text", + "placeholders": {} + }, + "identity": "Identiteet", + "@identity": { + "type": "text", + "placeholders": {} + }, + "ignoredUsers": "Eiratud kasutajad", + "@ignoredUsers": { + "type": "text", + "placeholders": {} + }, + "ignoreListDescription": "Sul on võimalik eirata neid kasutajaid, kes sind segavad. Oma isiklikku eiramisloendisse lisatud kasutajad ei saa sulle saata sõnumeid ega kutseid.", + "@ignoreListDescription": { + "type": "text", + "placeholders": {} + }, + "ignoreUsername": "Eira kasutajanime", + "@ignoreUsername": { + "type": "text", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Vigane paroolifraas või taastevõti", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "Kutsu neid, keda sa tead", + "@inviteContact": { + "type": "text", + "placeholders": {} + }, + "inviteContactToGroup": "Kutsu neid, keda sa tead {groupName} liikmeks", + "@inviteContactToGroup": { + "type": "text", + "placeholders": { + "groupName": {} + } + }, + "invited": "Kutsutud", + "@invited": { + "type": "text", + "placeholders": {} + }, + "invitedUser": "{username} kutsus kasutajaks {targetName}", + "@invitedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "invitedUsersOnly": "Ainult kutsutud kasutajatele", + "@invitedUsersOnly": { + "type": "text", + "placeholders": {} + }, + "inviteText": "{username} kutsus sind kasutama Matrix'i-põhist suhtlusrakendust FluffyChat. \n1. Paigalda FluffyChat: https://fluffychat.im \n2. Liitu kasutajaks või logi sisse olemasoleva Matrix'i kasutajaga\n3. Ava kutse link: {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "isDeviceKeyCorrect": "Kas järgnev seadmevõti on õige?", + "@isDeviceKeyCorrect": { + "type": "text", + "placeholders": {} + }, + "isTyping": "kirjutab...", + "@isTyping": { + "type": "text", + "placeholders": {} + }, + "joinedTheChat": "{username} liitus vestlusega", + "@joinedTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "joinRoom": "Liitu jututoaga", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, + "keysCached": "Krüptovõtmed on puhverdatud", + "@keysCached": { + "type": "text", + "placeholders": {} + }, + "keysMissing": "Krüptovõtmed on puudu", + "@keysMissing": { + "type": "text", + "placeholders": {} + }, + "kicked": "{username} müksas kasutaja {targetName} välja", + "@kicked": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickedAndBanned": "{username} müksas kasutaja {targetName} välja ning seadis talle suhtluskeelu", + "@kickedAndBanned": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickFromChat": "Müksa vestlusest välja", + "@kickFromChat": { + "type": "text", + "placeholders": {} + }, + "lastActiveAgo": "Viimati nähtud: {localizedTimeShort}", + "@lastActiveAgo": { + "type": "text", + "placeholders": { + "localizedTimeShort": {} + } + }, + "lastSeenIp": "Viimati nähtud IP-aadress", + "@lastSeenIp": { + "type": "text", + "placeholders": {} + }, + "lastSeenLongTimeAgo": "Nähtud ammu aega tagasi", + "@lastSeenLongTimeAgo": { + "type": "text", + "placeholders": {} + }, + "leave": "Lahku", + "@leave": { + "type": "text", + "placeholders": {} + }, + "leftTheChat": "Lahkus vestlusest", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "Litsents", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "Hele", + "@lightTheme": { + "type": "text", + "placeholders": {} + }, + "loadCountMoreParticipants": "Lisa veel {count} osalejat", + "@loadCountMoreParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "loadingPleaseWait": "Laen andmeid... Palun oota", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "Lae veel...", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "login": "Logi sisse", + "@login": { + "type": "text", + "placeholders": {} + }, + "logInTo": "Logi sisse {homeserver} serverisse", + "@logInTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "logout": "Logi välja", + "@logout": { + "type": "text", + "placeholders": {} + }, + "makeAModerator": "Määra moderaatoriks", + "@makeAModerator": { + "type": "text", + "placeholders": {} + }, + "makeAnAdmin": "Määra peakasutajaks", + "@makeAnAdmin": { + "type": "text", + "placeholders": {} + }, + "makeSureTheIdentifierIsValid": "Kontrolli, et see tunnus oleks õige", + "@makeSureTheIdentifierIsValid": { + "type": "text", + "placeholders": {} + }, + "messageWillBeRemovedWarning": "Sõnum eemaldatakse kõikidelt kasutajatelt", + "@messageWillBeRemovedWarning": { + "type": "text", + "placeholders": {} + }, + "moderator": "Moderaator", + "@moderator": { + "type": "text", + "placeholders": {} + }, + "monday": "Esmaspäev", + "@monday": { + "type": "text", + "placeholders": {} + }, + "muteChat": "Summuta vestlus", + "@muteChat": { + "type": "text", + "placeholders": {} + }, + "needPantalaimonWarning": "Palun arvesta, et sa saad hetkel kasutada läbivat krüptimist vaid siis, kui koduserver kasutab Pantalaimon'it.", + "@needPantalaimonWarning": { + "type": "text", + "placeholders": {} + }, + "newMessageInFluffyChat": "Uus sõnum FluffyChat'i vahendusel", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "newPrivateChat": "Uus privaatne vestlus", + "@newPrivateChat": { + "type": "text", + "placeholders": {} + }, + "newVerificationRequest": "Uus verifitseerimispäring!", + "@newVerificationRequest": { + "type": "text", + "placeholders": {} + }, + "no": "Ei", + "@no": { + "type": "text", + "placeholders": {} + }, + "noCrossSignBootstrap": "FluffyChat hetkel ei toeta risttunnustamist. Palun võta ta kasutusele Element'i (vana nimega Riot) vahendusel.", + "@noCrossSignBootstrap": { + "type": "text", + "placeholders": {} + }, + "noEmotesFound": "Ühtegi emotsioonitegevust ei leidunud. 😕", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "Tundub, et sinu nutiseadmes pole Google teenuseid. Sinu privaatsuse mõttes on see kindlasti hea otsus! Kui sa soovid FluffyChat'is näha tõuketeavitusi, siis soovitame, et selle jaoks kasutad microG liidestust https://microg.org/", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "noMegolmBootstrap": "FluffyChat hetkel ei toeta krüptovõtmete võrgupõhise varunduse kasutusele võtmist. Palun võta ta kasutusele Element'i (vana nimega Riot) vahendusel.", + "@noMegolmBootstrap": { + "type": "text", + "placeholders": {} + }, + "none": "Mitte midagi", + "@none": { + "type": "text", + "placeholders": {} + }, + "noPermission": "Õigused puuduvad", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "Jututubasid ei leidunud...", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "notSupportedInWeb": "See funktsionaalsus ei ole veebiliideses toetatud", + "@notSupportedInWeb": { + "type": "text", + "placeholders": {} + }, + "numberSelected": "{number} valitud", + "@numberSelected": { + "type": "text", + "placeholders": { + "number": {} + } + }, + "ok": "sobib", + "@ok": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupDisabled": "Krüptovõtmete veebipõhine varundus ei ole kasutusel", + "@onlineKeyBackupDisabled": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "Krüptovõtmete veebipõhine varundus on kasutusel", + "@onlineKeyBackupEnabled": { + "type": "text", + "placeholders": {} + }, + "oopsSomethingWentWrong": "Hopsti! Midagi läks nüüd viltu...", + "@oopsSomethingWentWrong": { + "type": "text", + "placeholders": {} + }, + "openAppToReadMessages": "Sõnumite lugemiseks ava rakendus", + "@openAppToReadMessages": { + "type": "text", + "placeholders": {} + }, + "openCamera": "Ava kaamera", + "@openCamera": { + "type": "text", + "placeholders": {} + }, + "optionalGroupName": "(Kui soovid) Rühma nimi", + "@optionalGroupName": { + "type": "text", + "placeholders": {} + }, + "participatingUserDevices": "Kaasatud kasutajate seadmed", + "@participatingUserDevices": { + "type": "text", + "placeholders": {} + }, + "passphraseOrKey": "paroolifraas või taastevõti", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "password": "Salasõna", + "@password": { + "type": "text", + "placeholders": {} + }, + "passwordHasBeenChanged": "Salasõna on muudetud", + "@passwordHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "pickImage": "Vali pilt", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "pin": "Klammerda", + "@pin": { + "type": "text", + "placeholders": {} + }, + "play": "Esita {fileName}", + "@play": { + "type": "text", + "placeholders": { + "fileName": {} + } + }, + "pleaseChooseAUsername": "Palun vali kasutajanimi", + "@pleaseChooseAUsername": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterAMatrixIdentifier": "Palun sisesta Matrix'i kasutajatunnus", + "@pleaseEnterAMatrixIdentifier": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Palun sisesta oma salasõna", + "@pleaseEnterYourPassword": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Palun sisesta oma kasutajanimi", + "@pleaseEnterYourUsername": { + "type": "text", + "placeholders": {} + }, + "publicRooms": "Avalikud jututoad", + "@publicRooms": { + "type": "text", + "placeholders": {} + }, + "recording": "Salvestan", + "@recording": { + "type": "text", + "placeholders": {} + }, + "redactedAnEvent": "{username} muutis sündmust", + "@redactedAnEvent": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "reject": "Lükka tagasi", + "@reject": { + "type": "text", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} lükkas kutse tagasi", + "@rejectedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "rejoin": "Liitu uuesti", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "Eemalda", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "Eemalda kõik muud seadmed", + "@removeAllOtherDevices": { + "type": "text", + "placeholders": {} + }, + "removedBy": "Eemaldatud {username} poolt", + "@removedBy": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "removeDevice": "Eemalda seade", + "@removeDevice": { + "type": "text", + "placeholders": {} + }, + "removeExile": "Eemalda suhtluskeeld", + "@removeExile": { + "type": "text", + "placeholders": {} + }, + "removeMessage": "Eemalda sõnum", + "@removeMessage": { + "type": "text", + "placeholders": {} + }, + "renderRichContent": "Visualiseeri vormindatud sõnumite sisu", + "@renderRichContent": { + "type": "text", + "placeholders": {} + }, + "reply": "Vasta", + "@reply": { + "type": "text", + "placeholders": {} + }, + "requestPermission": "Palu õigusi", + "@requestPermission": { + "type": "text", + "placeholders": {} + }, + "requestToReadOlderMessages": "Palu õigust lugeda vanu sõnumeid", + "@requestToReadOlderMessages": { + "type": "text", + "placeholders": {} + }, + "revokeAllPermissions": "Tühista kõik õigused", + "@revokeAllPermissions": { + "type": "text", + "placeholders": {} + }, + "roomHasBeenUpgraded": "Jututuba on uuendatud", + "@roomHasBeenUpgraded": { + "type": "text", + "placeholders": {} + }, + "saturday": "Laupäev", + "@saturday": { + "type": "text", + "placeholders": {} + }, + "searchForAChat": "Otsi vestlust", + "@searchForAChat": { + "type": "text", + "placeholders": {} + }, + "seenByUser": "Nähtud {username} poolt", + "@seenByUser": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "seenByUserAndCountOthers": "Nähtud {username} ja {count} muu kasutaja poolt", + "@seenByUserAndCountOthers": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "seenByUserAndUser": "Nähtud {username} ja {username2} poolt", + "@seenByUserAndUser": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "send": "Saada", + "@send": { + "type": "text", + "placeholders": {} + }, + "sendAMessage": "Saada sõnum", + "@sendAMessage": { + "type": "text", + "placeholders": {} + }, + "sendAudio": "Saada helifail", + "@sendAudio": { + "type": "text", + "placeholders": {} + }, + "sendBugReports": "Luba veateadete saatmist sentry.io vahendusel", + "@sendBugReports": { + "type": "text", + "placeholders": {} + }, + "sendFile": "Saada fail", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "Saada pilt", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "Saada algupärane fail", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendVideo": "Saada videofail", + "@sendVideo": { + "type": "text", + "placeholders": {} + }, + "sentAFile": "{username} saatis faili", + "@sentAFile": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAnAudio": "{username} saatis helifaili", + "@sentAnAudio": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAPicture": "{username} saatis pildi", + "@sentAPicture": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentASticker": "{username} saatis kleepsu", + "@sentASticker": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAVideo": "{username} saatis video", + "@sentAVideo": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentCallInformations": "{senderName} saatis teavet kõne kohta", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "sentryInfo": "Teave sinu privaatsuse kohta: https://sentry.io/security/", + "@sentryInfo": { + "type": "text", + "placeholders": {} + }, + "sessionVerified": "Sessioon on verifitseeritud", + "@sessionVerified": { + "type": "text", + "placeholders": {} + }, + "setAProfilePicture": "Seadista profiilipilt", + "@setAProfilePicture": { + "type": "text", + "placeholders": {} + }, + "setGroupDescription": "Seadista rühma kirjeldus", + "@setGroupDescription": { + "type": "text", + "placeholders": {} + }, + "setInvitationLink": "Tee kutse link", + "@setInvitationLink": { + "type": "text", + "placeholders": {} + }, + "setStatus": "Määra olek", + "@setStatus": { + "type": "text", + "placeholders": {} + }, + "settings": "Seadistused", + "@settings": { + "type": "text", + "placeholders": {} + }, + "share": "Jaga", + "@share": { + "type": "text", + "placeholders": {} + }, + "sharedTheLocation": "{username} jagas asukohta", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "signUp": "Liitu", + "@signUp": { + "type": "text", + "placeholders": {} + }, + "skip": "Jäta vahele", + "@skip": { + "type": "text", + "placeholders": {} + }, + "sourceCode": "Lähtekood", + "@sourceCode": { + "type": "text", + "placeholders": {} + }, + "startedACall": "{senderName} alustas kõnet", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "startYourFirstChat": "Alusta oma esimest vestlust :-)", + "@startYourFirstChat": { + "type": "text", + "placeholders": {} + }, + "statusExampleMessage": "Kuidas sul täna läheb?", + "@statusExampleMessage": { + "type": "text", + "placeholders": {} + }, + "submit": "Saada", + "@submit": { + "type": "text", + "placeholders": {} + }, + "sunday": "Pühapäev", + "@sunday": { + "type": "text", + "placeholders": {} + }, + "systemTheme": "Süsteem", + "@systemTheme": { + "type": "text", + "placeholders": {} + }, + "tapToShowMenu": "Menüü kuvamiseks puuduta", + "@tapToShowMenu": { + "type": "text", + "placeholders": {} + }, + "theyDontMatch": "Nad ei klapi omavahel", + "@theyDontMatch": { + "type": "text", + "placeholders": {} + }, + "theyMatch": "Nad klapivad omavahel", + "@theyMatch": { + "type": "text", + "placeholders": {} + }, + "thisRoomHasBeenArchived": "See jututuba on arhiveeritud.", + "@thisRoomHasBeenArchived": { + "type": "text", + "placeholders": {} + }, + "thursday": "Neljapäev", + "@thursday": { + "type": "text", + "placeholders": {} + }, + "timeOfDay": "{hours24}:{minutes}", + "@timeOfDay": { + "type": "text", + "placeholders": { + "hours12": {}, + "hours24": {}, + "minutes": {}, + "suffix": {} + } + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "text", + "placeholders": {} + }, + "tryToSendAgain": "Proovi uuesti saata", + "@tryToSendAgain": { + "type": "text", + "placeholders": {} + }, + "tuesday": "Teisipäev", + "@tuesday": { + "type": "text", + "placeholders": {} + }, + "unbannedUser": "{username} eemaldas ligipääsukeelu kasutajalt {targetName}", + "@unbannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "unblockDevice": "Eemalda seadmelt blokeering", + "@unblockDevice": { + "type": "text", + "placeholders": {} + }, + "unknownDevice": "Tundmatu seade", + "@unknownDevice": { + "type": "text", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Tundmatu krüptoalgoritm", + "@unknownEncryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "unknownEvent": "Tundmatu sündmuse tüüp „{type}“", + "@unknownEvent": { + "type": "text", + "placeholders": { + "type": {} + } + }, + "unknownSessionVerify": "Tundmatu sessioon, palun verifitseeri", + "@unknownSessionVerify": { + "type": "text", + "placeholders": {} + }, + "unmuteChat": "Lõpeta vestluse vaigistamine", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unpin": "Eemalda klammerdus", + "@unpin": { + "type": "text", + "placeholders": {} + }, + "unreadChats": "{unreadCount} lugemata vestlus(t)", + "@unreadChats": { + "type": "text", + "placeholders": { + "unreadCount": {} + } + }, + "unreadMessages": "{unreadEvents} lugemata sõnum(it)", + "@unreadMessages": { + "type": "text", + "placeholders": { + "unreadEvents": {} + } + }, + "unreadMessagesInChats": "{unreadEvents} lugemata sõnum(it) {unreadChats} vestluses", + "@unreadMessagesInChats": { + "type": "text", + "placeholders": { + "unreadEvents": {}, + "unreadChats": {} + } + }, + "useAmoledTheme": "Kas kasutame amoled-tehnoloogiaga ühilduvaid värve?", + "@useAmoledTheme": { + "type": "text", + "placeholders": {} + }, + "userAndOthersAreTyping": "{username} ja {count} muud kirjutavad...", + "@userAndOthersAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "userAndUserAreTyping": "{username} ja {username2} kirjutavad...", + "@userAndUserAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "userIsTyping": "{username} kirjutab...", + "@userIsTyping": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "userLeftTheChat": "{username} lahkus vestlusest", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "Kasutajanimi", + "@username": { + "type": "text", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} saatis {type} sündmuse", + "@userSentUnknownEvent": { + "type": "text", + "placeholders": { + "username": {}, + "type": {} + } + }, + "verifiedSession": "Sessiooni verifitseerimine õnnestus!", + "@verifiedSession": { + "type": "text", + "placeholders": {} + }, + "verify": "Verifitseeri", + "@verify": { + "type": "text", + "placeholders": {} + }, + "verifyManual": "Verifitseeri käsitsi", + "@verifyManual": { + "type": "text", + "placeholders": {} + }, + "verifyStart": "Alusta verifitseerimist", + "@verifyStart": { + "type": "text", + "placeholders": {} + }, + "verifySuccess": "Verifitseerimine õnnestus sinul!", + "@verifySuccess": { + "type": "text", + "placeholders": {} + }, + "verifyTitle": "Verifitseerin teist kasutajakontot", + "@verifyTitle": { + "type": "text", + "placeholders": {} + }, + "verifyUser": "Verifitseeri kasutajat", + "@verifyUser": { + "type": "text", + "placeholders": {} + }, + "videoCall": "Videokõne", + "@videoCall": { + "type": "text", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Vestluse ajaloo nähtavus", + "@visibilityOfTheChatHistory": { + "type": "text", + "placeholders": {} + }, + "visibleForAllParticipants": "Nähtav kõikidele osalejatele", + "@visibleForAllParticipants": { + "type": "text", + "placeholders": {} + }, + "visibleForEveryone": "Nähtav kõikidele", + "@visibleForEveryone": { + "type": "text", + "placeholders": {} + }, + "voiceMessage": "Häälsõnum", + "@voiceMessage": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "Ootan, et teine osapool nõustuks päringuga...", + "@waitingPartnerAcceptRequest": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerEmoji": "Ootan teise osapoole kinnitust, et tegemist on samade emojidega...", + "@waitingPartnerEmoji": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerNumbers": "Ootan teise osapoole kinnitust, et tegemist on samade numbritega...", + "@waitingPartnerNumbers": { + "type": "text", + "placeholders": {} + }, + "wallpaper": "Taustapilt", + "@wallpaper": { + "type": "text", + "placeholders": {} + }, + "warning": "Hoiatus!", + "@warning": { + "type": "text", + "placeholders": {} + }, + "warningEncryptionInBeta": "Läbiv krüptimine on parasjagu beetatestimise faasis! Kasuta seda omal vastutusel!", + "@warningEncryptionInBeta": { + "type": "text", + "placeholders": {} + }, + "wednesday": "Kolmapäev", + "@wednesday": { + "type": "text", + "placeholders": {} + }, + "welcomeText": "Tere tulemast kasutama kõige vahvamat sõnumiklienti Matrix'i võrgus.", + "@welcomeText": { + "type": "text", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Kes võivad selle rühmaga liituda", + "@whoIsAllowedToJoinThisGroup": { + "type": "text", + "placeholders": {} + }, + "writeAMessage": "Kirjuta üks sõnum...", + "@writeAMessage": { + "type": "text", + "placeholders": {} + }, + "yes": "Jah", + "@yes": { + "type": "text", + "placeholders": {} + }, + "you": "Sina", + "@you": { + "type": "text", + "placeholders": {} + }, + "youAreInvitedToThisChat": "Sa oled kutsutud osalema selles vestluses", + "@youAreInvitedToThisChat": { + "type": "text", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Sa enam ei osale selles vestluses", + "@youAreNoLongerParticipatingInThisChat": { + "type": "text", + "placeholders": {} + }, + "youCannotInviteYourself": "Sa ei saa endale kutset saata", + "@youCannotInviteYourself": { + "type": "text", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Sinule on selles vestluses seatud suhtluskeeld", + "@youHaveBeenBannedFromThisChat": { + "type": "text", + "placeholders": {} + }, + "yourOwnUsername": "Sinu oma kasutajanimi", + "@yourOwnUsername": { + "type": "text", + "placeholders": {} + } +} \ No newline at end of file diff --git a/lib/l10n/intl_eu.arb b/lib/l10n/intl_eu.arb new file mode 100644 index 0000000..09e3e25 --- /dev/null +++ b/lib/l10n/intl_eu.arb @@ -0,0 +1,1671 @@ +{ + "@@locale": "eu", + "@@last_modified": "2020-09-23 11:46:02.601891", + "about": "Honi buruz", + "@about": { + "type": "text", + "placeholders": {} + }, + "accept": "Ados", + "@accept": { + "type": "text", + "placeholders": {} + }, + "acceptedTheInvitation": "{username}-(e)k gonbidapena onartu du", + "@acceptedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "account": "Kontua", + "@account": { + "type": "text", + "placeholders": {} + }, + "accountInformation": "Kontuaren informazioa", + "@accountInformation": { + "type": "text", + "placeholders": {} + }, + "activatedEndToEndEncryption": "", + "@activatedEndToEndEncryption": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "addGroupDescription": "Gehitu taldearen deskribapena", + "@addGroupDescription": { + "type": "text", + "placeholders": {} + }, + "admin": "Administratzailea", + "@admin": { + "type": "text", + "placeholders": {} + }, + "alias": "ezizena", + "@alias": { + "type": "text", + "placeholders": {} + }, + "alreadyHaveAnAccount": "Baduzu kontu bat?", + "@alreadyHaveAnAccount": { + "type": "text", + "placeholders": {} + }, + "answeredTheCall": "{senderName}-(e)k deia erantzun du", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "Edonor batu daiteke", + "@anyoneCanJoin": { + "type": "text", + "placeholders": {} + }, + "archive": "", + "@archive": { + "type": "text", + "placeholders": {} + }, + "archivedRoom": "Artxibatutako gelak", + "@archivedRoom": { + "type": "text", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Ba al dute batzeko baimenik erabiltzaile gonbidatuek?", + "@areGuestsAllowedToJoin": { + "type": "text", + "placeholders": {} + }, + "areYouSure": "Ziur al zaude?", + "@areYouSure": { + "type": "text", + "placeholders": {} + }, + "askSSSSCache": "Mesedez sar ezazu zure biltegiratze segururako pasaesaldia edo berreskuratze gakoa katxean gakoak gordetzeko.", + "@askSSSSCache": { + "type": "text", + "placeholders": {} + }, + "askSSSSSign": "Beste pertsona ziurtatzeko, mesedez, sartu zure biltegiratze segururako pasaesaldia edo berreskuratze gakoa.", + "@askSSSSSign": { + "type": "text", + "placeholders": {} + }, + "askSSSSVerify": "Zure saioa egiaztatzeko, mesedez sar ezazu zure biltegiratze segururako pasaesaldia edo berreskuratze gakoa.", + "@askSSSSVerify": { + "type": "text", + "placeholders": {} + }, + "askVerificationRequest": "{username}-(r)en egiaztatze eskaera onartu?", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "authentication": "Autentifikazioa", + "@authentication": { + "type": "text", + "placeholders": {} + }, + "avatarHasBeenChanged": "Profileko irudia aldatua izan da", + "@avatarHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "banFromChat": "Berriketa debekatu", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "banned": "", + "@banned": { + "type": "text", + "placeholders": {} + }, + "bannedUser": "{username}-(e)k {targetName} debekatu du", + "@bannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "blockDevice": "Gailua blokeatu", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, + "byDefaultYouWillBeConnectedTo": "Modu lehenetsian {homeserver}-(e)ra konektatua izango zara", + "@byDefaultYouWillBeConnectedTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "cachedKeys": "Gakoak ongi gorde dira!", + "@cachedKeys": { + "type": "text", + "placeholders": {} + }, + "cancel": "Utzi", + "@cancel": { + "type": "text", + "placeholders": {} + }, + "changedTheChatAvatar": "{username}-(e)k berriketako irudia aldatu du", + "@changedTheChatAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheChatDescriptionTo": "", + "@changedTheChatDescriptionTo": { + "type": "text", + "placeholders": { + "username": {}, + "description": {} + } + }, + "changedTheChatNameTo": "{username}-(e)k berriketaren izena '{chatname}'-(e)ra aldatu du", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, + "changedTheChatPermissions": "{username}-(e)k berriketaren baimenak aldatu ditu", + "@changedTheChatPermissions": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheDisplaynameTo": "", + "@changedTheDisplaynameTo": { + "type": "text", + "placeholders": { + "username": {}, + "displayname": {} + } + }, + "changedTheGuestAccessRules": "{username}-(e)k gonbidatuen sarbide arauak aldatu ditu", + "@changedTheGuestAccessRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheGuestAccessRulesTo": "", + "@changedTheGuestAccessRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheHistoryVisibility": "{username}-(e)k historiaren ikusgarritasuna aldatu du", + "@changedTheHistoryVisibility": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheHistoryVisibilityTo": "{username}-(e)k historiaren ikusgarritasuna {rules}-(e)ra aldatu du", + "@changedTheHistoryVisibilityTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheJoinRules": "{username}-(e)k batze arauak aldatu ditu", + "@changedTheJoinRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheJoinRulesTo": "{username}-(e)k batzeko arauak {joinRules}-(e)ra aldatu ditu", + "@changedTheJoinRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "joinRules": {} + } + }, + "changedTheProfileAvatar": "{username}-(e)k profileko irudia aldatu du", + "@changedTheProfileAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomAliases": "{username}-(e)k gelaren ezizena aldatu du", + "@changedTheRoomAliases": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomInvitationLink": "{username}-(e)k gonbidapen esteka aldatu du", + "@changedTheRoomInvitationLink": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changelog": "Aldaketen erregistroa", + "@changelog": { + "type": "text", + "placeholders": {} + }, + "changesHaveBeenSaved": "", + "@changesHaveBeenSaved": { + "type": "text", + "placeholders": {} + }, + "changeTheHomeserver": "Zerbitzaria aldatu", + "@changeTheHomeserver": { + "type": "text", + "placeholders": {} + }, + "changeTheme": "", + "@changeTheme": { + "type": "text", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Taldearen izena aldatu", + "@changeTheNameOfTheGroup": { + "type": "text", + "placeholders": {} + }, + "changeTheServer": "Zerbitzaria aldatu", + "@changeTheServer": { + "type": "text", + "placeholders": {} + }, + "changeWallpaper": "Atzekaldea aldatu", + "@changeWallpaper": { + "type": "text", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Enkriptatzea hondatu egin da", + "@channelCorruptedDecryptError": { + "type": "text", + "placeholders": {} + }, + "chat": "Berriketa", + "@chat": { + "type": "text", + "placeholders": {} + }, + "chatDetails": "Berriketaren xehetasunak", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "chooseAStrongPassword": "Aukera ezazu pasahitz sendo bat", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "chooseAUsername": "Aukera ezazu erabiltzaile izen bat", + "@chooseAUsername": { + "type": "text", + "placeholders": {} + }, + "close": "Itxi", + "@close": { + "type": "text", + "placeholders": {} + }, + "compareEmojiMatch": "Konparatu eta egiazta ezazu ondorengo emojiak beste gailukoaren berdinak direla:", + "@compareEmojiMatch": { + "type": "text", + "placeholders": {} + }, + "compareNumbersMatch": "Konparatu eta egiazta ezazu ondorengo zenbakiak beste gailukoaren berdinak direla:", + "@compareNumbersMatch": { + "type": "text", + "placeholders": {} + }, + "confirm": "Baieztatu", + "@confirm": { + "type": "text", + "placeholders": {} + }, + "connect": "Konektatu", + "@connect": { + "type": "text", + "placeholders": {} + }, + "connectionAttemptFailed": "Konektatze saiakerak huts egin du", + "@connectionAttemptFailed": { + "type": "text", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kontaktua taldera gonbidatua izan da", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "contentViewer": "Eduki ikustailea", + "@contentViewer": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "Arbelera kopiatua", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "copy": "Kopiatu", + "@copy": { + "type": "text", + "placeholders": {} + }, + "couldNotDecryptMessage": "Ezin izan da mezua deszifratu: {error}", + "@couldNotDecryptMessage": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "couldNotSetAvatar": "Ezin izan da irudia ezarri", + "@couldNotSetAvatar": { + "type": "text", + "placeholders": {} + }, + "couldNotSetDisplayname": "Ezin izan da bistaratze-izena ezarri", + "@couldNotSetDisplayname": { + "type": "text", + "placeholders": {} + }, + "countParticipants": "{count} partaide", + "@countParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "create": "Sortu", + "@create": { + "type": "text", + "placeholders": {} + }, + "createAccountNow": "Sortu kontua orain", + "@createAccountNow": { + "type": "text", + "placeholders": {} + }, + "createdTheChat": "{username}-(e)k berriketa sortu du", + "@createdTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "createNewGroup": "Talde berria sortu", + "@createNewGroup": { + "type": "text", + "placeholders": {} + }, + "crossSigningDisabled": "Sinadura gurutzatua desgaituta dago", + "@crossSigningDisabled": { + "type": "text", + "placeholders": {} + }, + "crossSigningEnabled": "", + "@crossSigningEnabled": { + "type": "text", + "placeholders": {} + }, + "currentlyActive": "", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "", + "@darkTheme": { + "type": "text", + "placeholders": {} + }, + "dateAndTimeOfDay": "", + "@dateAndTimeOfDay": { + "type": "text", + "placeholders": { + "date": {}, + "timeOfDay": {} + } + }, + "dateWithoutYear": "", + "@dateWithoutYear": { + "type": "text", + "placeholders": { + "month": {}, + "day": {} + } + }, + "dateWithYear": "", + "@dateWithYear": { + "type": "text", + "placeholders": { + "year": {}, + "month": {}, + "day": {} + } + }, + "delete": "", + "@delete": { + "type": "text", + "placeholders": {} + }, + "deleteMessage": "", + "@deleteMessage": { + "type": "text", + "placeholders": {} + }, + "deny": "", + "@deny": { + "type": "text", + "placeholders": {} + }, + "device": "", + "@device": { + "type": "text", + "placeholders": {} + }, + "devices": "", + "@devices": { + "type": "text", + "placeholders": {} + }, + "discardPicture": "", + "@discardPicture": { + "type": "text", + "placeholders": {} + }, + "displaynameHasBeenChanged": "", + "@displaynameHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "donate": "", + "@donate": { + "type": "text", + "placeholders": {} + }, + "downloadFile": "", + "@downloadFile": { + "type": "text", + "placeholders": {} + }, + "editDisplayname": "", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "editJitsiInstance": "", + "@editJitsiInstance": { + "type": "text", + "placeholders": {} + }, + "emoteExists": "", + "@emoteExists": { + "type": "text", + "placeholders": {} + }, + "emoteInvalid": "", + "@emoteInvalid": { + "type": "text", + "placeholders": {} + }, + "emoteSettings": "", + "@emoteSettings": { + "type": "text", + "placeholders": {} + }, + "emoteShortcode": "", + "@emoteShortcode": { + "type": "text", + "placeholders": {} + }, + "emoteWarnNeedToPick": "", + "@emoteWarnNeedToPick": { + "type": "text", + "placeholders": {} + }, + "emptyChat": "", + "@emptyChat": { + "type": "text", + "placeholders": {} + }, + "enableEncryptionWarning": "", + "@enableEncryptionWarning": { + "type": "text", + "placeholders": {} + }, + "encryption": "", + "@encryption": { + "type": "text", + "placeholders": {} + }, + "encryptionAlgorithm": "", + "@encryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "encryptionNotEnabled": "", + "@encryptionNotEnabled": { + "type": "text", + "placeholders": {} + }, + "end2endEncryptionSettings": "", + "@end2endEncryptionSettings": { + "type": "text", + "placeholders": {} + }, + "endedTheCall": "", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterAGroupName": "", + "@enterAGroupName": { + "type": "text", + "placeholders": {} + }, + "enterAUsername": "", + "@enterAUsername": { + "type": "text", + "placeholders": {} + }, + "enterYourHomeserver": "", + "@enterYourHomeserver": { + "type": "text", + "placeholders": {} + }, + "fileName": "", + "@fileName": { + "type": "text", + "placeholders": {} + }, + "fileSize": "", + "@fileSize": { + "type": "text", + "placeholders": {} + }, + "fluffychat": "", + "@fluffychat": { + "type": "text", + "placeholders": {} + }, + "forward": "", + "@forward": { + "type": "text", + "placeholders": {} + }, + "friday": "", + "@friday": { + "type": "text", + "placeholders": {} + }, + "fromJoining": "", + "@fromJoining": { + "type": "text", + "placeholders": {} + }, + "fromTheInvitation": "", + "@fromTheInvitation": { + "type": "text", + "placeholders": {} + }, + "group": "", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupDescription": "", + "@groupDescription": { + "type": "text", + "placeholders": {} + }, + "groupDescriptionHasBeenChanged": "", + "@groupDescriptionHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "", + "@groupIsPublic": { + "type": "text", + "placeholders": {} + }, + "groupWith": "", + "@groupWith": { + "type": "text", + "placeholders": { + "displayname": {} + } + }, + "guestsAreForbidden": "", + "@guestsAreForbidden": { + "type": "text", + "placeholders": {} + }, + "guestsCanJoin": "", + "@guestsCanJoin": { + "type": "text", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "", + "@hasWithdrawnTheInvitationFor": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "help": "", + "@help": { + "type": "text", + "placeholders": {} + }, + "homeserverIsNotCompatible": "", + "@homeserverIsNotCompatible": { + "type": "text", + "placeholders": {} + }, + "id": "", + "@id": { + "type": "text", + "placeholders": {} + }, + "identity": "", + "@identity": { + "type": "text", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "", + "@inviteContact": { + "type": "text", + "placeholders": {} + }, + "inviteContactToGroup": "", + "@inviteContactToGroup": { + "type": "text", + "placeholders": { + "groupName": {} + } + }, + "invited": "", + "@invited": { + "type": "text", + "placeholders": {} + }, + "invitedUser": "", + "@invitedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "invitedUsersOnly": "", + "@invitedUsersOnly": { + "type": "text", + "placeholders": {} + }, + "inviteText": "", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "isDeviceKeyCorrect": "", + "@isDeviceKeyCorrect": { + "type": "text", + "placeholders": {} + }, + "isTyping": "", + "@isTyping": { + "type": "text", + "placeholders": {} + }, + "joinedTheChat": "", + "@joinedTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "joinRoom": "", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, + "keysCached": "", + "@keysCached": { + "type": "text", + "placeholders": {} + }, + "keysMissing": "", + "@keysMissing": { + "type": "text", + "placeholders": {} + }, + "kicked": "", + "@kicked": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickedAndBanned": "", + "@kickedAndBanned": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickFromChat": "", + "@kickFromChat": { + "type": "text", + "placeholders": {} + }, + "lastActiveAgo": "", + "@lastActiveAgo": { + "type": "text", + "placeholders": { + "localizedTimeShort": {} + } + }, + "lastSeenIp": "", + "@lastSeenIp": { + "type": "text", + "placeholders": {} + }, + "lastSeenLongTimeAgo": "", + "@lastSeenLongTimeAgo": { + "type": "text", + "placeholders": {} + }, + "leave": "", + "@leave": { + "type": "text", + "placeholders": {} + }, + "leftTheChat": "", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "", + "@lightTheme": { + "type": "text", + "placeholders": {} + }, + "loadCountMoreParticipants": "", + "@loadCountMoreParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "loadingPleaseWait": "", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "login": "", + "@login": { + "type": "text", + "placeholders": {} + }, + "logInTo": "", + "@logInTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "logout": "", + "@logout": { + "type": "text", + "placeholders": {} + }, + "makeAModerator": "", + "@makeAModerator": { + "type": "text", + "placeholders": {} + }, + "makeAnAdmin": "", + "@makeAnAdmin": { + "type": "text", + "placeholders": {} + }, + "makeSureTheIdentifierIsValid": "", + "@makeSureTheIdentifierIsValid": { + "type": "text", + "placeholders": {} + }, + "messageWillBeRemovedWarning": "", + "@messageWillBeRemovedWarning": { + "type": "text", + "placeholders": {} + }, + "moderator": "", + "@moderator": { + "type": "text", + "placeholders": {} + }, + "monday": "", + "@monday": { + "type": "text", + "placeholders": {} + }, + "muteChat": "", + "@muteChat": { + "type": "text", + "placeholders": {} + }, + "needPantalaimonWarning": "", + "@needPantalaimonWarning": { + "type": "text", + "placeholders": {} + }, + "newMessageInFluffyChat": "", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "newPrivateChat": "", + "@newPrivateChat": { + "type": "text", + "placeholders": {} + }, + "newVerificationRequest": "", + "@newVerificationRequest": { + "type": "text", + "placeholders": {} + }, + "no": "", + "@no": { + "type": "text", + "placeholders": {} + }, + "noCrossSignBootstrap": "", + "@noCrossSignBootstrap": { + "type": "text", + "placeholders": {} + }, + "noEmotesFound": "", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "noMegolmBootstrap": "", + "@noMegolmBootstrap": { + "type": "text", + "placeholders": {} + }, + "none": "", + "@none": { + "type": "text", + "placeholders": {} + }, + "noPermission": "", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "notSupportedInWeb": "", + "@notSupportedInWeb": { + "type": "text", + "placeholders": {} + }, + "numberSelected": "", + "@numberSelected": { + "type": "text", + "placeholders": { + "number": {} + } + }, + "ok": "", + "@ok": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupDisabled": "", + "@onlineKeyBackupDisabled": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "", + "@onlineKeyBackupEnabled": { + "type": "text", + "placeholders": {} + }, + "oopsSomethingWentWrong": "", + "@oopsSomethingWentWrong": { + "type": "text", + "placeholders": {} + }, + "openAppToReadMessages": "", + "@openAppToReadMessages": { + "type": "text", + "placeholders": {} + }, + "openCamera": "", + "@openCamera": { + "type": "text", + "placeholders": {} + }, + "optionalGroupName": "", + "@optionalGroupName": { + "type": "text", + "placeholders": {} + }, + "participatingUserDevices": "", + "@participatingUserDevices": { + "type": "text", + "placeholders": {} + }, + "passphraseOrKey": "", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "password": "", + "@password": { + "type": "text", + "placeholders": {} + }, + "pickImage": "", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "pin": "", + "@pin": { + "type": "text", + "placeholders": {} + }, + "play": "", + "@play": { + "type": "text", + "placeholders": { + "fileName": {} + } + }, + "pleaseChooseAUsername": "", + "@pleaseChooseAUsername": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterAMatrixIdentifier": "", + "@pleaseEnterAMatrixIdentifier": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPassword": "", + "@pleaseEnterYourPassword": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourUsername": "", + "@pleaseEnterYourUsername": { + "type": "text", + "placeholders": {} + }, + "publicRooms": "", + "@publicRooms": { + "type": "text", + "placeholders": {} + }, + "recording": "", + "@recording": { + "type": "text", + "placeholders": {} + }, + "redactedAnEvent": "", + "@redactedAnEvent": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "reject": "", + "@reject": { + "type": "text", + "placeholders": {} + }, + "rejectedTheInvitation": "", + "@rejectedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "rejoin": "", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "", + "@removeAllOtherDevices": { + "type": "text", + "placeholders": {} + }, + "removedBy": "", + "@removedBy": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "removeDevice": "", + "@removeDevice": { + "type": "text", + "placeholders": {} + }, + "removeExile": "", + "@removeExile": { + "type": "text", + "placeholders": {} + }, + "removeMessage": "", + "@removeMessage": { + "type": "text", + "placeholders": {} + }, + "renderRichContent": "", + "@renderRichContent": { + "type": "text", + "placeholders": {} + }, + "reply": "", + "@reply": { + "type": "text", + "placeholders": {} + }, + "requestPermission": "", + "@requestPermission": { + "type": "text", + "placeholders": {} + }, + "requestToReadOlderMessages": "", + "@requestToReadOlderMessages": { + "type": "text", + "placeholders": {} + }, + "revokeAllPermissions": "", + "@revokeAllPermissions": { + "type": "text", + "placeholders": {} + }, + "roomHasBeenUpgraded": "", + "@roomHasBeenUpgraded": { + "type": "text", + "placeholders": {} + }, + "saturday": "", + "@saturday": { + "type": "text", + "placeholders": {} + }, + "searchForAChat": "", + "@searchForAChat": { + "type": "text", + "placeholders": {} + }, + "seenByUser": "", + "@seenByUser": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "seenByUserAndCountOthers": "", + "@seenByUserAndCountOthers": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "seenByUserAndUser": "", + "@seenByUserAndUser": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "send": "", + "@send": { + "type": "text", + "placeholders": {} + }, + "sendAMessage": "", + "@sendAMessage": { + "type": "text", + "placeholders": {} + }, + "sendAudio": "", + "@sendAudio": { + "type": "text", + "placeholders": {} + }, + "sendBugReports": "", + "@sendBugReports": { + "type": "text", + "placeholders": {} + }, + "sendFile": "", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendVideo": "", + "@sendVideo": { + "type": "text", + "placeholders": {} + }, + "sentAFile": "", + "@sentAFile": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAnAudio": "", + "@sentAnAudio": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAPicture": "", + "@sentAPicture": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentASticker": "", + "@sentASticker": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAVideo": "", + "@sentAVideo": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentCallInformations": "", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "sentryInfo": "", + "@sentryInfo": { + "type": "text", + "placeholders": {} + }, + "sessionVerified": "", + "@sessionVerified": { + "type": "text", + "placeholders": {} + }, + "setAProfilePicture": "", + "@setAProfilePicture": { + "type": "text", + "placeholders": {} + }, + "setGroupDescription": "", + "@setGroupDescription": { + "type": "text", + "placeholders": {} + }, + "setInvitationLink": "", + "@setInvitationLink": { + "type": "text", + "placeholders": {} + }, + "setStatus": "", + "@setStatus": { + "type": "text", + "placeholders": {} + }, + "settings": "", + "@settings": { + "type": "text", + "placeholders": {} + }, + "share": "", + "@share": { + "type": "text", + "placeholders": {} + }, + "sharedTheLocation": "", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "signUp": "", + "@signUp": { + "type": "text", + "placeholders": {} + }, + "skip": "", + "@skip": { + "type": "text", + "placeholders": {} + }, + "sourceCode": "", + "@sourceCode": { + "type": "text", + "placeholders": {} + }, + "startedACall": "", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "startYourFirstChat": "", + "@startYourFirstChat": { + "type": "text", + "placeholders": {} + }, + "statusExampleMessage": "", + "@statusExampleMessage": { + "type": "text", + "placeholders": {} + }, + "submit": "", + "@submit": { + "type": "text", + "placeholders": {} + }, + "sunday": "", + "@sunday": { + "type": "text", + "placeholders": {} + }, + "systemTheme": "", + "@systemTheme": { + "type": "text", + "placeholders": {} + }, + "tapToShowMenu": "", + "@tapToShowMenu": { + "type": "text", + "placeholders": {} + }, + "theyDontMatch": "", + "@theyDontMatch": { + "type": "text", + "placeholders": {} + }, + "theyMatch": "", + "@theyMatch": { + "type": "text", + "placeholders": {} + }, + "thisRoomHasBeenArchived": "", + "@thisRoomHasBeenArchived": { + "type": "text", + "placeholders": {} + }, + "thursday": "", + "@thursday": { + "type": "text", + "placeholders": {} + }, + "timeOfDay": "", + "@timeOfDay": { + "type": "text", + "placeholders": { + "hours12": {}, + "hours24": {}, + "minutes": {}, + "suffix": {} + } + }, + "title": "", + "@title": { + "description": "Title for the application", + "type": "text", + "placeholders": {} + }, + "tryToSendAgain": "", + "@tryToSendAgain": { + "type": "text", + "placeholders": {} + }, + "tuesday": "", + "@tuesday": { + "type": "text", + "placeholders": {} + }, + "unbannedUser": "", + "@unbannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "unblockDevice": "", + "@unblockDevice": { + "type": "text", + "placeholders": {} + }, + "unknownDevice": "", + "@unknownDevice": { + "type": "text", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "", + "@unknownEncryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "unknownEvent": "", + "@unknownEvent": { + "type": "text", + "placeholders": { + "type": {} + } + }, + "unknownSessionVerify": "", + "@unknownSessionVerify": { + "type": "text", + "placeholders": {} + }, + "unmuteChat": "", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unpin": "", + "@unpin": { + "type": "text", + "placeholders": {} + }, + "unreadChats": "", + "@unreadChats": { + "type": "text", + "placeholders": { + "unreadCount": {} + } + }, + "unreadMessages": "", + "@unreadMessages": { + "type": "text", + "placeholders": { + "unreadEvents": {} + } + }, + "unreadMessagesInChats": "", + "@unreadMessagesInChats": { + "type": "text", + "placeholders": { + "unreadEvents": {}, + "unreadChats": {} + } + }, + "useAmoledTheme": "", + "@useAmoledTheme": { + "type": "text", + "placeholders": {} + }, + "userAndOthersAreTyping": "", + "@userAndOthersAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "userAndUserAreTyping": "", + "@userAndUserAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "userIsTyping": "", + "@userIsTyping": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "userLeftTheChat": "", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "", + "@username": { + "type": "text", + "placeholders": {} + }, + "userSentUnknownEvent": "", + "@userSentUnknownEvent": { + "type": "text", + "placeholders": { + "username": {}, + "type": {} + } + }, + "verifiedSession": "", + "@verifiedSession": { + "type": "text", + "placeholders": {} + }, + "verify": "", + "@verify": { + "type": "text", + "placeholders": {} + }, + "verifyManual": "", + "@verifyManual": { + "type": "text", + "placeholders": {} + }, + "verifyStart": "", + "@verifyStart": { + "type": "text", + "placeholders": {} + }, + "verifySuccess": "", + "@verifySuccess": { + "type": "text", + "placeholders": {} + }, + "verifyTitle": "", + "@verifyTitle": { + "type": "text", + "placeholders": {} + }, + "verifyUser": "", + "@verifyUser": { + "type": "text", + "placeholders": {} + }, + "videoCall": "", + "@videoCall": { + "type": "text", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "", + "@visibilityOfTheChatHistory": { + "type": "text", + "placeholders": {} + }, + "visibleForAllParticipants": "", + "@visibleForAllParticipants": { + "type": "text", + "placeholders": {} + }, + "visibleForEveryone": "", + "@visibleForEveryone": { + "type": "text", + "placeholders": {} + }, + "voiceMessage": "", + "@voiceMessage": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "", + "@waitingPartnerAcceptRequest": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerEmoji": "", + "@waitingPartnerEmoji": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerNumbers": "", + "@waitingPartnerNumbers": { + "type": "text", + "placeholders": {} + }, + "wallpaper": "", + "@wallpaper": { + "type": "text", + "placeholders": {} + }, + "warningEncryptionInBeta": "", + "@warningEncryptionInBeta": { + "type": "text", + "placeholders": {} + }, + "wednesday": "", + "@wednesday": { + "type": "text", + "placeholders": {} + }, + "welcomeText": "", + "@welcomeText": { + "type": "text", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "", + "@whoIsAllowedToJoinThisGroup": { + "type": "text", + "placeholders": {} + }, + "writeAMessage": "", + "@writeAMessage": { + "type": "text", + "placeholders": {} + }, + "yes": "", + "@yes": { + "type": "text", + "placeholders": {} + }, + "you": "", + "@you": { + "type": "text", + "placeholders": {} + }, + "youAreInvitedToThisChat": "", + "@youAreInvitedToThisChat": { + "type": "text", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "", + "@youAreNoLongerParticipatingInThisChat": { + "type": "text", + "placeholders": {} + }, + "youCannotInviteYourself": "", + "@youCannotInviteYourself": { + "type": "text", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "", + "@youHaveBeenBannedFromThisChat": { + "type": "text", + "placeholders": {} + }, + "yourOwnUsername": "", + "@yourOwnUsername": { + "type": "text", + "placeholders": {} + } +} \ No newline at end of file diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb index 1f6af57..ce82ea1 100644 --- a/lib/l10n/intl_fr.arb +++ b/lib/l10n/intl_fr.arb @@ -1,7 +1,13 @@ { - "@@last_modified": "2020-05-15T22:28:40", - "About": "À propos", - "@About": { + "@@locale": "fr", + "@@last_modified": "2020-09-23 11:46:02.526626", + "about": "À propos", + "@about": { + "type": "text", + "placeholders": {} + }, + "accept": "Accepter", + "@accept": { "type": "text", "placeholders": {} }, @@ -12,13 +18,13 @@ "username": {} } }, - "Account": "Compte", - "@Account": { + "account": "Compte", + "@account": { "type": "text", "placeholders": {} }, - "Account informations": "Informations du compte", - "@Account informations": { + "accountInformation": "Informations du compte", + "@accountInformation": { "type": "text", "placeholders": {} }, @@ -29,13 +35,13 @@ "username": {} } }, - "Add a group description": "Ajouter une description au groupe", - "@Add a group description": { + "addGroupDescription": "Ajouter une description au groupe", + "@addGroupDescription": { "type": "text", "placeholders": {} }, - "Admin": "Administrateur", - "@Admin": { + "admin": "Administrateur", + "@admin": { "type": "text", "placeholders": {} }, @@ -44,53 +50,82 @@ "type": "text", "placeholders": {} }, - "Already have an account?": "Vous avez déjà un compte ?", - "@Already have an account?": { + "alreadyHaveAnAccount": "Vous avez déjà un compte ?", + "@alreadyHaveAnAccount": { "type": "text", "placeholders": {} }, - "Anyone can join": "Tout le monde peut rejoindre", - "@Anyone can join": { + "answeredTheCall": "{senderName} a répondu à l'appel", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "Tout le monde peut rejoindre", + "@anyoneCanJoin": { "type": "text", "placeholders": {} }, - "Archive": "Archiver", - "@Archive": { + "archive": "Archiver", + "@archive": { "type": "text", "placeholders": {} }, - "Archived Room": "Salon achivé", - "@Archived Room": { + "archivedRoom": "Salon achivé", + "@archivedRoom": { "type": "text", "placeholders": {} }, - "Are guest users allowed to join": "Est-ce que les invités peuvent rejoindre", - "@Are guest users allowed to join": { + "areGuestsAllowedToJoin": "Est-ce que les invités peuvent rejoindre", + "@areGuestsAllowedToJoin": { "type": "text", "placeholders": {} }, - "Are you sure?": "Êtes-vous sûr ?", - "@Are you sure?": { + "areYouSure": "Êtes-vous sûr ?", + "@areYouSure": { "type": "text", "placeholders": {} }, - "Authentication": "Authentification", - "@Authentication": { + "askSSSSCache": "Veuillez saisir votre phrase de passe stockée de manière sécurisée ou votre clé de récupération pour mettre les clés en cache.", + "@askSSSSCache": { "type": "text", "placeholders": {} }, - "Avatar has been changed": "L'image de profil a été changée", - "@Avatar has been changed": { + "askSSSSSign": "Pour pouvoir faire signer l'autre personne, veuillez entrer votre phrase de passe stockée de manière sécurisée ou votre clé de récupération.", + "@askSSSSSign": { "type": "text", "placeholders": {} }, - "Ban from chat": "Bannir de la discussion", - "@Ban from chat": { + "askSSSSVerify": "Veuillez saisir votre phrase de passe stockée de manière sécurisée ou votre clé de récupération pour vérifier votre session.", + "@askSSSSVerify": { "type": "text", "placeholders": {} }, - "Banned": "Banni", - "@Banned": { + "askVerificationRequest": "Accepter cette demande de vérification de {username} ?", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "authentication": "Authentification", + "@authentication": { + "type": "text", + "placeholders": {} + }, + "avatarHasBeenChanged": "L'image de profil a été changée", + "@avatarHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "banFromChat": "Bannir de la discussion", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "banned": "Banni", + "@banned": { "type": "text", "placeholders": {} }, @@ -102,6 +137,11 @@ "targetName": {} } }, + "blockDevice": "Bloquer l'appareil", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, "byDefaultYouWillBeConnectedTo": "Par défaut, vous serez connecté à {homeserver}", "@byDefaultYouWillBeConnectedTo": { "type": "text", @@ -109,8 +149,13 @@ "homeserver": {} } }, - "Cancel": "Annuler", - "@Cancel": { + "cachedKeys": "Clés mises en cache avec succès !", + "@cachedKeys": { + "type": "text", + "placeholders": {} + }, + "cancel": "Annuler", + "@cancel": { "type": "text", "placeholders": {} }, @@ -121,14 +166,6 @@ "username": {} } }, - "changedTheChatNameTo": "{username} a renommé la discussion en : '{chatname}'", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, "changedTheChatDescriptionTo": "{username} a changé la description de la discussion en : '{description}'", "@changedTheChatDescriptionTo": { "type": "text", @@ -137,6 +174,14 @@ "description": {} } }, + "changedTheChatNameTo": "{username} a renommé la discussion en : '{chatname}'", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, "changedTheChatPermissions": "{username} a changé les permissions de la discussion", "@changedTheChatPermissions": { "type": "text", @@ -152,11 +197,6 @@ "displayname": {} } }, - "Change the homeserver": "Changer le serveur d'accueil", - "@Change the homeserver": { - "type": "text", - "placeholders": {} - }, "changedTheGuestAccessRules": "{username} a changé les règles d'accès à la discussion pour les invités", "@changedTheGuestAccessRules": { "type": "text", @@ -202,7 +242,7 @@ "joinRules": {} } }, - "changedTheProfileAvatar": "{username} a changé son image de profil", + "changedTheProfileAvatar": "{username} a changé son avatar", "@changedTheProfileAvatar": { "type": "text", "placeholders": { @@ -223,88 +263,113 @@ "username": {} } }, - "Changelog": "Journal des changements", - "@Changelog": { + "changelog": "Journal des changements", + "@changelog": { "type": "text", "placeholders": {} }, - "Change the name of the group": "Changer le nom du groupe", - "@Change the name of the group": { + "changesHaveBeenSaved": "Les changements ont été sauvegardés", + "@changesHaveBeenSaved": { "type": "text", "placeholders": {} }, - "Change wallpaper": "Changer d'image de fond", - "@Change wallpaper": { + "changeTheHomeserver": "Changer le serveur d'accueil", + "@changeTheHomeserver": { "type": "text", "placeholders": {} }, - "Change the server": "Changer de serveur", - "@Change the server": { + "changeTheme": "Changez votre style", + "@changeTheme": { "type": "text", "placeholders": {} }, - "The encryption has been corrupted": "Le chiffrement a été corrompu", - "@The encryption has been corrupted": { + "changeTheNameOfTheGroup": "Changer le nom du groupe", + "@changeTheNameOfTheGroup": { "type": "text", "placeholders": {} }, - "Chat": "Discussion", - "@Chat": { + "changeTheServer": "Changer de serveur", + "@changeTheServer": { "type": "text", "placeholders": {} }, - "Chat details": "Détails de la discussion", - "@Chat details": { + "changeWallpaper": "Changer d'image de fond", + "@changeWallpaper": { "type": "text", "placeholders": {} }, - "Choose a strong password": "Choisissez un mot de passe fort", - "@Choose a strong password": { + "channelCorruptedDecryptError": "Le chiffrement a été corrompu", + "@channelCorruptedDecryptError": { "type": "text", "placeholders": {} }, - "Choose a username": "Choisissez un nom d'utilisateur", - "@Choose a username": { + "chat": "Discussion", + "@chat": { "type": "text", "placeholders": {} }, - "Close": "Fermer", - "@Close": { + "chatDetails": "Détails de la discussion", + "@chatDetails": { "type": "text", "placeholders": {} }, - "Confirm": "Confirmer", - "@Confirm": { + "chooseAStrongPassword": "Choisissez un mot de passe fort", + "@chooseAStrongPassword": { "type": "text", "placeholders": {} }, - "Connect": "Se connecter", - "@Connect": { + "chooseAUsername": "Choisissez un nom d'utilisateur", + "@chooseAUsername": { "type": "text", "placeholders": {} }, - "Connection attempt failed": "Tentative de connexion echouée", - "@Connection attempt failed": { + "close": "Fermer", + "@close": { "type": "text", "placeholders": {} }, - "Contact has been invited to the group": "Le contact a été invité au groupe", - "@Contact has been invited to the group": { + "compareEmojiMatch": "Comparez et assurez-vous que les emojis suivants correspondent à ceux de l'autre appareil :", + "@compareEmojiMatch": { "type": "text", "placeholders": {} }, - "Content viewer": "Visionneuse de contenu", - "@Content viewer": { + "compareNumbersMatch": "Comparez et assurez-vous que les chiffres suivants correspondent à ceux de l'autre appareil :", + "@compareNumbersMatch": { "type": "text", "placeholders": {} }, - "Copied to clipboard": "Copié dans le presse-papier", - "@Copied to clipboard": { + "confirm": "Confirmer", + "@confirm": { "type": "text", "placeholders": {} }, - "Copy": "Copier", - "@Copy": { + "connect": "Se connecter", + "@connect": { + "type": "text", + "placeholders": {} + }, + "connectionAttemptFailed": "Tentative de connexion echouée", + "@connectionAttemptFailed": { + "type": "text", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Le contact a été invité au groupe", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "contentViewer": "Visionneuse de contenu", + "@contentViewer": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "Copié dans le presse-papier", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "copy": "Copier", + "@copy": { "type": "text", "placeholders": {} }, @@ -315,13 +380,13 @@ "error": {} } }, - "Could not set avatar": "Impossible de changer d'image de profil", - "@Could not set avatar": { + "couldNotSetAvatar": "Impossible de changer d'image de profil", + "@couldNotSetAvatar": { "type": "text", "placeholders": {} }, - "Could not set displayname": "Impossible de changer de nom", - "@Could not set displayname": { + "couldNotSetDisplayname": "Impossible de changer de nom", + "@couldNotSetDisplayname": { "type": "text", "placeholders": {} }, @@ -332,13 +397,13 @@ "count": {} } }, - "Create": "Créer", - "@Create": { + "create": "Créer", + "@create": { "type": "text", "placeholders": {} }, - "Create account now": "Créer un compte", - "@Create account now": { + "createAccountNow": "Créer un compte", + "@createAccountNow": { "type": "text", "placeholders": {} }, @@ -349,13 +414,28 @@ "username": {} } }, - "Create new group": "Créer un nouveau groupe", - "@Create new group": { + "createNewGroup": "Créer un nouveau groupe", + "@createNewGroup": { "type": "text", "placeholders": {} }, - "Currently active": "Actif en ce moment", - "@Currently active": { + "crossSigningDisabled": "La signature croisée est désactivée", + "@crossSigningDisabled": { + "type": "text", + "placeholders": {} + }, + "crossSigningEnabled": "La signature croisée est activée", + "@crossSigningEnabled": { + "type": "text", + "placeholders": {} + }, + "currentlyActive": "Actif en ce moment", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "Sombre", + "@darkTheme": { "type": "text", "placeholders": {} }, @@ -384,63 +464,68 @@ "day": {} } }, - "Delete": "Supprimer", - "@Delete": { + "deactivateAccountWarning": "Cela désactivera votre compte et ne peut pas être annulé ! Êtes-vous sûr(e) ?", + "@deactivateAccountWarning": { "type": "text", "placeholders": {} }, - "Delete message": "Supprimer le message", - "@Delete message": { + "delete": "Supprimer", + "@delete": { "type": "text", "placeholders": {} }, - "Deny": "Refuser", - "@Deny": { + "deleteAccount": "Supprimer le compte", + "@deleteAccount": { "type": "text", "placeholders": {} }, - "Device": "Périphérique", - "@Device": { + "deleteMessage": "Supprimer le message", + "@deleteMessage": { "type": "text", "placeholders": {} }, - "Devices": "Périphériques", - "@Devices": { + "deny": "Refuser", + "@deny": { "type": "text", "placeholders": {} }, - "Discard picture": "Abandonner l'image", - "@Discard picture": { + "device": "Périphérique", + "@device": { "type": "text", "placeholders": {} }, - "Displayname has been changed": "Renommage effectué", - "@Displayname has been changed": { + "devices": "Périphériques", + "@devices": { "type": "text", "placeholders": {} }, - "Download file": "Télécharger le fichier", - "@Download file": { + "discardPicture": "Abandonner l'image", + "@discardPicture": { "type": "text", "placeholders": {} }, - "Edit displayname": "Changer de nom", - "@Edit displayname": { + "displaynameHasBeenChanged": "Renommage effectué", + "@displaynameHasBeenChanged": { "type": "text", "placeholders": {} }, - "Emote Settings": "Paramètre des émoticônes", - "@Emote Settings": { + "donate": "Faire un don", + "@donate": { "type": "text", "placeholders": {} }, - "Emote shortcode": "Raccourci d'émoticône", - "@Emote shortcode": { + "downloadFile": "Télécharger le fichier", + "@downloadFile": { "type": "text", "placeholders": {} }, - "emoteWarnNeedToPick": "Vous devez sélectionner un raccourci d'émoticône et une image !", - "@emoteWarnNeedToPick": { + "editDisplayname": "Changer de nom", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "editJitsiInstance": "Changer l'instance Jitsi", + "@editJitsiInstance": { "type": "text", "placeholders": {} }, @@ -454,98 +539,125 @@ "type": "text", "placeholders": {} }, - "Empty chat": "Discussion vide", - "@Empty chat": { + "emoteSettings": "Paramètre des émoticônes", + "@emoteSettings": { "type": "text", "placeholders": {} }, - "You won't be able to disable the encryption anymore. Are you sure?": "Vous ne pourrez plus désactiver le chiffrement. Êtez-vous sûr ?", - "@You won't be able to disable the encryption anymore. Are you sure?": { + "emoteShortcode": "Raccourci d'émoticône", + "@emoteShortcode": { "type": "text", "placeholders": {} }, - "Encryption algorithm": "Algorithme de chiffrement", - "@Encryption algorithm": { + "emoteWarnNeedToPick": "Vous devez sélectionner un raccourci d'émoticône et une image !", + "@emoteWarnNeedToPick": { "type": "text", "placeholders": {} }, - "Encryption is not enabled": "Le chiffrement n'est pas actif", - "@Encryption is not enabled": { + "emptyChat": "Discussion vide", + "@emptyChat": { "type": "text", "placeholders": {} }, - "End-to-end encryption settings": "Paramètres du chiffrement de bout en bout", - "@End-to-end encryption settings": { + "enableEncryptionWarning": "Vous ne pourrez plus désactiver le chiffrement. Êtes-vous sûr(e) ?", + "@enableEncryptionWarning": { "type": "text", "placeholders": {} }, - "Enter a group name": "Entrez un nom de groupe", - "@Enter a group name": { + "encryption": "Chiffrement", + "@encryption": { "type": "text", "placeholders": {} }, - "Enter a username": "Entrez un nom d'utilisateur", - "@Enter a username": { + "encryptionAlgorithm": "Algorithme de chiffrement", + "@encryptionAlgorithm": { "type": "text", "placeholders": {} }, - "Enter your homeserver": "Renseignez votre serveur d'accueil", - "@Enter your homeserver": { + "encryptionNotEnabled": "Le chiffrement n'est pas actif", + "@encryptionNotEnabled": { "type": "text", "placeholders": {} }, - "File name": "Nom du ficher", - "@File name": { + "end2endEncryptionSettings": "Paramètres du chiffrement de bout en bout", + "@end2endEncryptionSettings": { "type": "text", "placeholders": {} }, - "File size": "Taille du fichier", - "@File size": { + "endedTheCall": "{senderName} a mis fin à l'appel", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterAGroupName": "Entrez un nom de groupe", + "@enterAGroupName": { "type": "text", "placeholders": {} }, - "FluffyChat": "FluffyChat", - "@FluffyChat": { + "enterAUsername": "Entrez un nom d'utilisateur", + "@enterAUsername": { "type": "text", "placeholders": {} }, - "Forward": "Transférer", - "@Forward": { + "enterYourHomeserver": "Renseignez votre serveur d'accueil", + "@enterYourHomeserver": { "type": "text", "placeholders": {} }, - "Friday": "Vendredi", - "@Friday": { + "fileName": "Nom du ficher", + "@fileName": { "type": "text", "placeholders": {} }, - "From joining": "À partir de l'entrée dans le salon", - "@From joining": { + "fileSize": "Taille du fichier", + "@fileSize": { "type": "text", "placeholders": {} }, - "From the invitation": "À partir de l'invitation", - "@From the invitation": { + "fluffychat": "FluffyChat", + "@fluffychat": { "type": "text", "placeholders": {} }, - "Group": "Groupe", - "@Group": { + "forward": "Transférer", + "@forward": { "type": "text", "placeholders": {} }, - "Group description": "Description du groupe", - "@Group description": { + "friday": "Vendredi", + "@friday": { "type": "text", "placeholders": {} }, - "Group description has been changed": "La description du groupe a été changée", - "@Group description has been changed": { + "fromJoining": "À partir de l'entrée dans le salon", + "@fromJoining": { "type": "text", "placeholders": {} }, - "Group is public": "Le groupe est public", - "@Group is public": { + "fromTheInvitation": "À partir de l'invitation", + "@fromTheInvitation": { + "type": "text", + "placeholders": {} + }, + "group": "Groupe", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupDescription": "Description du groupe", + "@groupDescription": { + "type": "text", + "placeholders": {} + }, + "groupDescriptionHasBeenChanged": "La description du groupe a été changée", + "@groupDescriptionHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "Le groupe est public", + "@groupIsPublic": { "type": "text", "placeholders": {} }, @@ -556,13 +668,13 @@ "displayname": {} } }, - "Guests are forbidden": "Les invités ne peuvent pas rejoindre", - "@Guests are forbidden": { + "guestsAreForbidden": "Les invités ne peuvent pas rejoindre", + "@guestsAreForbidden": { "type": "text", "placeholders": {} }, - "Guests can join": "Les invités peuvent rejoindre", - "@Guests can join": { + "guestsCanJoin": "Les invités peuvent rejoindre", + "@guestsCanJoin": { "type": "text", "placeholders": {} }, @@ -574,28 +686,48 @@ "targetName": {} } }, - "Help": "Aide", - "@Help": { + "help": "Aide", + "@help": { "type": "text", "placeholders": {} }, - "Homeserver is not compatible": "Le serveur d'accueil n'est pas compatible", - "@Homeserver is not compatible": { + "homeserverIsNotCompatible": "Le serveur d'accueil n'est pas compatible", + "@homeserverIsNotCompatible": { "type": "text", "placeholders": {} }, - "ID": "Identifiant", - "@ID": { + "id": "Identifiant", + "@id": { "type": "text", "placeholders": {} }, - "Identity": "Identité", - "@Identity": { + "identity": "Identité", + "@identity": { "type": "text", "placeholders": {} }, - "Invite contact": "Inviter un contact", - "@Invite contact": { + "ignoredUsers": "Utilisateurs/trices ignoré(e)s", + "@ignoredUsers": { + "type": "text", + "placeholders": {} + }, + "ignoreListDescription": "Vous pouvez ignorer les utilisateurs/trices qui vous dérangent. Vous ne pourrez pas recevoir de messages ou d'invitations à participer à un salon de discussion de la part des utilisateurs/trices figurant sur votre liste personnelle.", + "@ignoreListDescription": { + "type": "text", + "placeholders": {} + }, + "ignoreUsername": "Ignorer l'utilisateur/trice", + "@ignoreUsername": { + "type": "text", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "Phrase de passe ou clé de récupération incorrecte", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "Inviter un contact", + "@inviteContact": { "type": "text", "placeholders": {} }, @@ -606,19 +738,11 @@ "groupName": {} } }, - "Invited": "Invité", - "@Invited": { + "invited": "Invité", + "@invited": { "type": "text", "placeholders": {} }, - "inviteText": "{username} vous a invité sur FluffyChat. \n1. Installez FluffyChat : http://fluffy.chat \n2. Inscrivez-vous ou connectez-vous \n3. Ouvrez le lien d'invitation : {link}", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, "invitedUser": "{username} a invité {targetName}", "@invitedUser": { "type": "text", @@ -627,18 +751,26 @@ "targetName": {} } }, - "Invited users only": "Uniquement les utilisateurs invités", - "@Invited users only": { + "invitedUsersOnly": "Uniquement les utilisateurs invités", + "@invitedUsersOnly": { "type": "text", "placeholders": {} }, - "is typing...": "est en train d'écrire...", - "@is typing...": { + "inviteText": "{username} vous a invité sur FluffyChat. \n1. Installez FluffyChat : https://fluffychat.im \n2. Inscrivez-vous ou connectez-vous \n3. Ouvrez le lien d'invitation : {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "isDeviceKeyCorrect": "La clé de l'appareil ci-dessous est-elle correcte ?", + "@isDeviceKeyCorrect": { "type": "text", "placeholders": {} }, - "Edit Jitsi instance": "Changer l'instance Jitsi", - "@Edit Jitsi instance": { + "isTyping": "écrit...", + "@isTyping": { "type": "text", "placeholders": {} }, @@ -649,6 +781,21 @@ "username": {} } }, + "joinRoom": "Rejoindre la réunion", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, + "keysCached": "Les clés sont mises en cache", + "@keysCached": { + "type": "text", + "placeholders": {} + }, + "keysMissing": "Les clés sont manquantes", + "@keysMissing": { + "type": "text", + "placeholders": {} + }, "kicked": "{username} a expulsé {targetName}", "@kicked": { "type": "text", @@ -665,33 +812,11 @@ "targetName": {} } }, - "Kick from chat": "Expulser de la discussion", - "@Kick from chat": { + "kickFromChat": "Expulser de la discussion", + "@kickFromChat": { "type": "text", "placeholders": {} }, - "Leave": "Partir", - "@Leave": { - "type": "text", - "placeholders": {} - }, - "Left the chat": "A quitté la discussion", - "@Left the chat": { - "type": "text", - "placeholders": {} - }, - "Logout": "Se déconnecter", - "@Logout": { - "type": "text", - "placeholders": {} - }, - "userLeftTheChat": "{username} a quitté la discussion", - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, "lastActiveAgo": "Vu pour la dernière fois : {localizedTimeShort}", "@lastActiveAgo": { "type": "text", @@ -699,23 +824,33 @@ "localizedTimeShort": {} } }, - "Last seen IP": "Dernière addresse IP utilisée", - "@Last seen IP": { + "lastSeenIp": "Dernière addresse IP utilisée", + "@lastSeenIp": { "type": "text", "placeholders": {} }, - "License": "Licence", - "@License": { + "lastSeenLongTimeAgo": "Vu pour la dernière fois il y a longtemps", + "@lastSeenLongTimeAgo": { "type": "text", "placeholders": {} }, - "Loading... Please wait": "Chargement... Merci de patienter", - "@Loading... Please wait": { + "leave": "Partir", + "@leave": { "type": "text", "placeholders": {} }, - "Load more...": "Charger plus...", - "@Load more...": { + "leftTheChat": "A quitté la discussion", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "Licence", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "Clair", + "@lightTheme": { "type": "text", "placeholders": {} }, @@ -726,8 +861,18 @@ "count": {} } }, - "Login": "Connexion", - "@Login": { + "loadingPleaseWait": "Chargement... Veuillez patienter", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "Charger plus...", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "login": "Connexion", + "@login": { "type": "text", "placeholders": {} }, @@ -738,83 +883,108 @@ "homeserver": {} } }, - "Make a moderator": "Promouvoir comme modérateur", - "@Make a moderator": { + "logout": "Se déconnecter", + "@logout": { "type": "text", "placeholders": {} }, - "Make an admin": "Promouvoir comme administrateur", - "@Make an admin": { + "makeAModerator": "Promouvoir comme modérateur", + "@makeAModerator": { "type": "text", "placeholders": {} }, - "Make sure the identifier is valid": "Vérifiez que l'identifiant est valide", - "@Make sure the identifier is valid": { + "makeAnAdmin": "Promouvoir comme administrateur", + "@makeAnAdmin": { "type": "text", "placeholders": {} }, - "Message will be removed for all participants": "Le message sera supprimé pour tous les participants", - "@Message will be removed for all participants": { + "makeSureTheIdentifierIsValid": "Vérifiez que l'identifiant est valide", + "@makeSureTheIdentifierIsValid": { "type": "text", "placeholders": {} }, - "Moderator": "Moderateur", - "@Moderator": { + "messageWillBeRemovedWarning": "Le message sera supprimé pour tous les participants", + "@messageWillBeRemovedWarning": { "type": "text", "placeholders": {} }, - "Monday": "Lundi", - "@Monday": { + "moderator": "Moderateur", + "@moderator": { "type": "text", "placeholders": {} }, - "Mute chat": "Mettre la discussion en sourdine", - "@Mute chat": { + "monday": "Lundi", + "@monday": { "type": "text", "placeholders": {} }, - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": "Vous devez installer Pantalaimon pour utiliser le chiffrement de bout en bout pour l'instant.", - "@Please be aware that you need Pantalaimon to use end-to-end encryption for now.": { + "muteChat": "Mettre la discussion en sourdine", + "@muteChat": { "type": "text", "placeholders": {} }, - "New message in FluffyChat": "Nouveau message dans FluffyChat", - "@New message in FluffyChat": { + "needPantalaimonWarning": "Sachez que vous avez besoin de Pantalaimon pour utiliser le chiffrement de bout en bout pour l'instant.", + "@needPantalaimonWarning": { "type": "text", "placeholders": {} }, - "New private chat": "Nouvelle discussion privée", - "@New private chat": { + "newMessageInFluffyChat": "Nouveau message dans FluffyChat", + "@newMessageInFluffyChat": { "type": "text", "placeholders": {} }, - "It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": "On dirait que vous n'avez pas installé les services Google sur votre téléphone. C'est une bonne décision pour votre vie privée ! Pour recevoir les notifications de FluffyChat, nous vous recommendons d'utiliser microG : https://microg.org/", - "@It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": { + "newPrivateChat": "Nouvelle discussion privée", + "@newPrivateChat": { "type": "text", "placeholders": {} }, - "None": "Aucun", - "@None": { + "newVerificationRequest": "Nouvelle demande de vérification !", + "@newVerificationRequest": { "type": "text", "placeholders": {} }, - "No emotes found. 😕": "Aucune émoticône trouvée. 😕", - "@No emotes found. 😕": { + "no": "Non", + "@no": { "type": "text", "placeholders": {} }, - "No permission": "Aucune permission", - "@No permission": { + "noCrossSignBootstrap": "Fluffychat ne permet pas actuellement d'activer la signature croisée. Veuillez l'activer à partir de Riot.", + "@noCrossSignBootstrap": { "type": "text", "placeholders": {} }, - "No rooms found...": "Aucun salon trouvé...", - "@No rooms found...": { + "noEmotesFound": "Aucun émote trouvé. 😕", + "@noEmotesFound": { "type": "text", "placeholders": {} }, - "Not supported in web": "Non supporté par l'application web", - "@Not supported in web": { + "noGoogleServicesWarning": "Il semblerait que vous n'ayez pas de services Google sur votre téléphone. C'est une bonne décision pour votre vie privée ! Pour recevoir des notifications dans FluffyChat, nous vous recommandons d'utiliser microG : https://microg.org/", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "noMegolmBootstrap": "Fluffychat ne prend pas actuellement en charge l'activation de la sauvegarde des clés en ligne. Veuillez l'activer à partir de Riot.", + "@noMegolmBootstrap": { + "type": "text", + "placeholders": {} + }, + "none": "Aucun", + "@none": { + "type": "text", + "placeholders": {} + }, + "noPermission": "Aucune permission", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "Aucun salon trouvé...", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "notSupportedInWeb": "Non supporté par l'application web", + "@notSupportedInWeb": { "type": "text", "placeholders": {} }, @@ -830,38 +1000,63 @@ "type": "text", "placeholders": {} }, - "Oops something went wrong...": "Oups, quelque chose s'est mal passé...", - "@Oops something went wrong...": { + "onlineKeyBackupDisabled": "La sauvegarde en ligne des clés est désactivée", + "@onlineKeyBackupDisabled": { "type": "text", "placeholders": {} }, - "Open app to read messages": "Ouvrez l'application pour lire le message", - "@Open app to read messages": { + "onlineKeyBackupEnabled": "La sauvegarde en ligne des clés est activée", + "@onlineKeyBackupEnabled": { "type": "text", "placeholders": {} }, - "Open camera": "Ouvrir l'appareil photo", - "@Open camera": { + "oopsSomethingWentWrong": "Oups, un problème s'est produit...", + "@oopsSomethingWentWrong": { "type": "text", "placeholders": {} }, - "(Optional) Group name": "(Optionnel) Nom du groupe", - "@(Optional) Group name": { + "openAppToReadMessages": "Ouvrez l'application pour lire le message", + "@openAppToReadMessages": { "type": "text", "placeholders": {} }, - "Participating user devices": "Périphériques participants", - "@Participating user devices": { + "openCamera": "Ouvrir l'appareil photo", + "@openCamera": { "type": "text", "placeholders": {} }, - "Password": "Mot de passe", - "@Password": { + "optionalGroupName": "(Optionnel) Nom du groupe", + "@optionalGroupName": { "type": "text", "placeholders": {} }, - "Pick image": "Choisir une image", - "@Pick image": { + "participatingUserDevices": "Périphériques participants", + "@participatingUserDevices": { + "type": "text", + "placeholders": {} + }, + "passphraseOrKey": "Phrase de passe ou clé de récupération", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "password": "Mot de passe", + "@password": { + "type": "text", + "placeholders": {} + }, + "passwordHasBeenChanged": "Le mot de passe a été modifié", + "@passwordHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "pickImage": "Choisir une image", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "pin": "Épingler", + "@pin": { "type": "text", "placeholders": {} }, @@ -872,43 +1067,33 @@ "fileName": {} } }, - "Please choose a username": "Choisissez un nom d'utilisateur", - "@Please choose a username": { + "pleaseChooseAUsername": "Choisissez un nom d'utilisateur", + "@pleaseChooseAUsername": { "type": "text", "placeholders": {} }, - "Please enter a matrix identifier": "Renseignez un identifiant Matrix", - "@Please enter a matrix identifier": { + "pleaseEnterAMatrixIdentifier": "Renseignez un identifiant Matrix", + "@pleaseEnterAMatrixIdentifier": { "type": "text", "placeholders": {} }, - "Please enter your password": "Renseignez votre mot de passe", - "@Please enter your password": { + "pleaseEnterYourPassword": "Renseignez votre mot de passe", + "@pleaseEnterYourPassword": { "type": "text", "placeholders": {} }, - "Please enter your username": "Renseignez votre nom d'utilisateur", - "@Please enter your username": { + "pleaseEnterYourUsername": "Renseignez votre nom d'utilisateur", + "@pleaseEnterYourUsername": { "type": "text", "placeholders": {} }, - "Public Rooms": "Salons publics", - "@Public Rooms": { + "publicRooms": "Salons publics", + "@publicRooms": { "type": "text", "placeholders": {} }, - "Rejoin": "Rejoindre de nouveau", - "@Rejoin": { - "type": "text", - "placeholders": {} - }, - "Render rich message content": "Afficher les contenus riches des messages", - "@Render rich message content": { - "type": "text", - "placeholders": {} - }, - "Recording": "Enregistrement", - "@Recording": { + "recording": "Enregistrement", + "@recording": { "type": "text", "placeholders": {} }, @@ -919,6 +1104,11 @@ "username": {} } }, + "reject": "Refuser", + "@reject": { + "type": "text", + "placeholders": {} + }, "rejectedTheInvitation": "{username} a refusé l'invitation", "@rejectedTheInvitation": { "type": "text", @@ -926,8 +1116,18 @@ "username": {} } }, - "Remove all other devices": "Supprimer tous les autres périphériques", - "@Remove all other devices": { + "rejoin": "Rejoindre de nouveau", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "Supprimer", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "Supprimer tous les autres périphériques", + "@removeAllOtherDevices": { "type": "text", "placeholders": {} }, @@ -938,70 +1138,58 @@ "username": {} } }, - "Remove device": "Supprimer le périphérique", - "@Remove device": { + "removeDevice": "Supprimer le périphérique", + "@removeDevice": { "type": "text", "placeholders": {} }, - "Remove exile": "Retirer le bannissement", - "@Remove exile": { + "removeExile": "Retirer le bannissement", + "@removeExile": { "type": "text", "placeholders": {} }, - "Revoke all permissions": "Révoquer toutes les permissions", - "@Revoke all permissions": { + "removeMessage": "Supprimer le message", + "@removeMessage": { "type": "text", "placeholders": {} }, - "Remove": "Supprimer", - "@Remove": { + "renderRichContent": "Afficher les contenus riches des messages", + "@renderRichContent": { "type": "text", "placeholders": {} }, - "Remove message": "Supprimer le message", - "@Remove message": { + "reply": "Répondre", + "@reply": { "type": "text", "placeholders": {} }, - "Reply": "Répondre", - "@Reply": { + "requestPermission": "Demander la permission", + "@requestPermission": { "type": "text", "placeholders": {} }, - "Request permission": "Demander la permission", - "@Request permission": { + "requestToReadOlderMessages": "Demander à lire les anciens messages", + "@requestToReadOlderMessages": { "type": "text", "placeholders": {} }, - "Request to read older messages": "Demander à lire les anciens messages", - "@Request to read older messages": { + "revokeAllPermissions": "Révoquer toutes les permissions", + "@revokeAllPermissions": { "type": "text", "placeholders": {} }, - "Saturday": "Samedi", - "@Saturday": { + "roomHasBeenUpgraded": "Le salon a été mis à niveau", + "@roomHasBeenUpgraded": { "type": "text", "placeholders": {} }, - "Share": "Partager", - "@Share": { + "saturday": "Samedi", + "@saturday": { "type": "text", "placeholders": {} }, - "sharedTheLocation": "{username} a partagé une localisation", - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "Search for a chat": "Rechercher une discussion", - "@Search for a chat": { - "type": "text", - "placeholders": {} - }, - "Seen a long time ago": "Vu pour la dernière fois il y a longtemps", - "@Seen a long time ago": { + "searchForAChat": "Rechercher une discussion", + "@searchForAChat": { "type": "text", "placeholders": {} }, @@ -1012,14 +1200,6 @@ "username": {} } }, - "seenByUserAndUser": "Vu par {username} et {username2}", - "@seenByUserAndUser": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, "seenByUserAndCountOthers": "Vu par {username} et {count} autres", "@seenByUserAndCountOthers": { "type": "text", @@ -1028,23 +1208,51 @@ "count": {} } }, - "Send": "Envoyer", - "@Send": { + "seenByUserAndUser": "Vu par {username} et {username2}", + "@seenByUserAndUser": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "send": "Envoyer", + "@send": { "type": "text", "placeholders": {} }, - "Send a message": "Envoyer un message", - "@Send a message": { + "sendAMessage": "Envoyer un message", + "@sendAMessage": { "type": "text", "placeholders": {} }, - "Send file": "Envoyer un fichier", - "@Send file": { + "sendAudio": "Envoyer un fichier audio", + "@sendAudio": { "type": "text", "placeholders": {} }, - "Send image": "Envoyer une image", - "@Send image": { + "sendBugReports": "Autoriser l'envoi de rapports d'anomalies via sentry.io", + "@sendBugReports": { + "type": "text", + "placeholders": {} + }, + "sendFile": "Envoyer un fichier", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "Envoyer une image", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "Envoyer le fichier original", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendVideo": "Envoyer une vidéo", + "@sendVideo": { "type": "text", "placeholders": {} }, @@ -1083,98 +1291,129 @@ "username": {} } }, - "Set a profile picture": "Définir une image de profil", - "@Set a profile picture": { + "sentCallInformations": "{senderName} a envoyé des informations sur l'appel", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "sentryInfo": "Informations relatives à votre vie privée : https://sentry.io/security/", + "@sentryInfo": { "type": "text", "placeholders": {} }, - "Set group description": "Définir une description du groupe", - "@Set group description": { + "sessionVerified": "La session est vérifiée", + "@sessionVerified": { "type": "text", "placeholders": {} }, - "Set invitation link": "Créer un lien d'invitation", - "@Set invitation link": { + "setAProfilePicture": "Définir une image de profil", + "@setAProfilePicture": { "type": "text", "placeholders": {} }, - "Set status": "Définir un statut", - "@Set status": { + "setGroupDescription": "Définir une description du groupe", + "@setGroupDescription": { "type": "text", "placeholders": {} }, - "Settings": "Paramètres", - "@Settings": { + "setInvitationLink": "Créer un lien d'invitation", + "@setInvitationLink": { "type": "text", "placeholders": {} }, - "Sign up": "S'inscrire", - "@Sign up": { + "setStatus": "Définir un statut", + "@setStatus": { "type": "text", "placeholders": {} }, - "Change your style": "Changez votre style", - "@Change your style": { + "settings": "Paramètres", + "@settings": { "type": "text", "placeholders": {} }, - "System": "Système", - "@System": { + "share": "Partager", + "@share": { "type": "text", "placeholders": {} }, - "How are you today?": "Comment allez-vous aujourd'hui ?", - "@How are you today?": { + "sharedTheLocation": "{username} a partagé une localisation", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "signUp": "S'inscrire", + "@signUp": { "type": "text", "placeholders": {} }, - "Light": "Clair", - "@Light": { + "skip": "Ignorer", + "@skip": { "type": "text", "placeholders": {} }, - "Dark": "Sombre", - "@Dark": { + "sourceCode": "Code source", + "@sourceCode": { "type": "text", "placeholders": {} }, - "Use Amoled compatible colors?": "Utiliser des couleurs compatibles Amoled ?", - "@Use Amoled compatible colors?": { + "startedACall": "{senderName} a démarré un appel", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "startYourFirstChat": "Démarrez votre première discussion :-)", + "@startYourFirstChat": { "type": "text", "placeholders": {} }, - "Source code": "Code source", - "@Source code": { + "statusExampleMessage": "Comment allez-vous aujourd'hui ?", + "@statusExampleMessage": { "type": "text", "placeholders": {} }, - "Start your first chat :-)": "Démarrez votre première discussion :-)", - "@Start your first chat :-)": { + "submit": "Soumettre", + "@submit": { "type": "text", "placeholders": {} }, - "Sunday": "Dimanche", - "@Sunday": { + "sunday": "Dimanche", + "@sunday": { "type": "text", "placeholders": {} }, - "Donate": "Faire un don", - "@Donate": { + "systemTheme": "Système", + "@systemTheme": { "type": "text", "placeholders": {} }, - "Tap to show menu": "Tappez pour afficher le menu", - "@Tap to show menu": { + "tapToShowMenu": "Tappez pour afficher le menu", + "@tapToShowMenu": { "type": "text", "placeholders": {} }, - "This room has been archived.": "Ce salon a été archivé.", - "@This room has been archived.": { + "theyDontMatch": "Elles ne correspondent pas", + "@theyDontMatch": { "type": "text", "placeholders": {} }, - "Thursday": "Jeudi", - "@Thursday": { + "theyMatch": "Elles correspondent", + "@theyMatch": { + "type": "text", + "placeholders": {} + }, + "thisRoomHasBeenArchived": "Ce salon a été archivé.", + "@thisRoomHasBeenArchived": { + "type": "text", + "placeholders": {} + }, + "thursday": "Jeudi", + "@thursday": { "type": "text", "placeholders": {} }, @@ -1194,13 +1433,13 @@ "type": "text", "placeholders": {} }, - "Try to send again": "Retenter l'envoi", - "@Try to send again": { + "tryToSendAgain": "Retenter l'envoi", + "@tryToSendAgain": { "type": "text", "placeholders": {} }, - "Tuesday": "Mardi", - "@Tuesday": { + "tuesday": "Mardi", + "@tuesday": { "type": "text", "placeholders": {} }, @@ -1212,18 +1451,18 @@ "targetName": {} } }, - "Unmute chat": "Retirer la sourdine", - "@Unmute chat": { + "unblockDevice": "Débloquer l'appareil", + "@unblockDevice": { "type": "text", "placeholders": {} }, - "Unknown device": "Périphérique inconnu", - "@Unknown device": { + "unknownDevice": "Périphérique inconnu", + "@unknownDevice": { "type": "text", "placeholders": {} }, - "Unknown encryption algorithm": "Algorithme de chiffrement inconnu", - "@Unknown encryption algorithm": { + "unknownEncryptionAlgorithm": "Algorithme de chiffrement inconnu", + "@unknownEncryptionAlgorithm": { "type": "text", "placeholders": {} }, @@ -1234,6 +1473,21 @@ "type": {} } }, + "unknownSessionVerify": "Session inconnue, veuillez vérifier", + "@unknownSessionVerify": { + "type": "text", + "placeholders": {} + }, + "unmuteChat": "Retirer la sourdine", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unpin": "Détacher", + "@unpin": { + "type": "text", + "placeholders": {} + }, "unreadChats": "{unreadCount} discussions non lues", "@unreadChats": { "type": "text", @@ -1256,6 +1510,11 @@ "unreadChats": {} } }, + "useAmoledTheme": "Utiliser des couleurs compatibles Amoled ?", + "@useAmoledTheme": { + "type": "text", + "placeholders": {} + }, "userAndOthersAreTyping": "{username} et {count} autres sont en train d'écrire...", "@userAndOthersAreTyping": { "type": "text", @@ -1272,11 +1531,6 @@ "username2": {} } }, - "Username": "Nom d'utilisateur", - "@Username": { - "type": "text", - "placeholders": {} - }, "userIsTyping": "{username} est en train d'écrire...", "@userIsTyping": { "type": "text", @@ -1284,6 +1538,18 @@ "username": {} } }, + "userLeftTheChat": "{username} a quitté la discussion", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "Nom d'utilisateur", + "@username": { + "type": "text", + "placeholders": {} + }, "userSentUnknownEvent": "{username} a envoyé un événement de type {type}", "@userSentUnknownEvent": { "type": "text", @@ -1292,301 +1558,149 @@ "type": {} } }, - "Verify": "Vérifier", - "@Verify": { - "type": "text", - "placeholders": {} - }, - "Video call": "Appel vidéo", - "@Video call": { - "type": "text", - "placeholders": {} - }, - "Visible for all participants": "Visible pour tous les participants", - "@Visible for all participants": { - "type": "text", - "placeholders": {} - }, - "Visible for everyone": "Visible pour tout le monde", - "@Visible for everyone": { - "type": "text", - "placeholders": {} - }, - "Visibility of the chat history": "Visibilité de l'historique de la discussion", - "@Visibility of the chat history": { - "type": "text", - "placeholders": {} - }, - "Voice message": "Message vocal", - "@Voice message": { - "type": "text", - "placeholders": {} - }, - "Wallpaper": "Image de fond", - "@Wallpaper": { - "type": "text", - "placeholders": {} - }, - "End to end encryption is currently in Beta! Use at your own risk!": "Le chiffrement de bout en bout est actuellement en béta ! Utilisez cette fonctionnalité à vos propres risques !", - "@End to end encryption is currently in Beta! Use at your own risk!": { - "type": "text", - "placeholders": {} - }, - "Wednesday": "Mercredi", - "@Wednesday": { - "type": "text", - "placeholders": {} - }, - "Welcome to the cutest instant messenger in the matrix network.": "Bienvenue dans la messagerie la plus mignonne du réseau Matrix.", - "@Welcome to the cutest instant messenger in the matrix network.": { - "type": "text", - "placeholders": {} - }, - "Who is allowed to join this group": "Qui est autorisé à rejoindre ce groupe", - "@Who is allowed to join this group": { - "type": "text", - "placeholders": {} - }, - "Write a message...": "Écrivez un message...", - "@Write a message...": { - "type": "text", - "placeholders": {} - }, - "Yes": "Oui", - "@Yes": { - "type": "text", - "placeholders": {} - }, - "You": "Vous", - "@You": { - "type": "text", - "placeholders": {} - }, - "You are invited to this chat": "Vous êtes invité à cette discussion", - "@You are invited to this chat": { - "type": "text", - "placeholders": {} - }, - "You are no longer participating in this chat": "Vous ne participez plus à cette discussion", - "@You are no longer participating in this chat": { - "type": "text", - "placeholders": {} - }, - "You cannot invite yourself": "Vous ne pouvez pas vous inviter vous-même", - "@You cannot invite yourself": { - "type": "text", - "placeholders": {} - }, - "You have been banned from this chat": "Vous avez été banni de cette discussion", - "@You have been banned from this chat": { - "type": "text", - "placeholders": {} - }, - "Your own username": "Votre propre nom d'utilisateur", - "@Your own username": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerNumbers": "En attente de l'acceptation des nombres par le partenaire...", - "@waitingPartnerNumbers": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerEmoji": "En attente de l'acceptation de l'émoji par le partenaire...", - "@waitingPartnerEmoji": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerAcceptRequest": "En attente de la vérification de la demande par le partenaire...", - "@waitingPartnerAcceptRequest": { - "type": "text", - "placeholders": {} - }, - "Verify User": "Vérifier l'utilisateur/trice", - "@Verify User": { - "type": "text", - "placeholders": {} - }, - "verifyTitle": "Vérification de l'autre compte", - "@verifyTitle": { - "type": "text", - "placeholders": {} - }, - "verifySuccess": "Vous avez vérifié avec succès !", - "@verifySuccess": { - "type": "text", - "placeholders": {} - }, - "verifyStart": "Commencer la vérification", - "@verifyStart": { - "type": "text", - "placeholders": {} - }, "verifiedSession": "Session vérifiée avec succès !", "@verifiedSession": { "type": "text", "placeholders": {} }, + "verify": "Vérifier", + "@verify": { + "type": "text", + "placeholders": {} + }, "verifyManual": "Vérifier manuellement", "@verifyManual": { "type": "text", "placeholders": {} }, - "unknownSessionVerify": "Session inconnue, veuillez vérifier", - "@unknownSessionVerify": { + "verifyStart": "Commencer la vérification", + "@verifyStart": { "type": "text", "placeholders": {} }, - "Unblock Device": "Débloquer l'appareil", - "@Unblock Device": { + "verifySuccess": "Vous avez vérifié avec succès !", + "@verifySuccess": { "type": "text", "placeholders": {} }, - "They Match": "Elles correspondent", - "@They Match": { + "verifyTitle": "Vérification de l'autre compte", + "@verifyTitle": { "type": "text", "placeholders": {} }, - "They Don't Match": "Elles ne correspondent pas", - "@They Don't Match": { + "verifyUser": "Vérifier l'utilisateur/trice", + "@verifyUser": { "type": "text", "placeholders": {} }, - "Submit": "Soumettre", - "@Submit": { + "videoCall": "Appel vidéo", + "@videoCall": { "type": "text", "placeholders": {} }, - "Skip": "Ignorer", - "@Skip": { + "visibilityOfTheChatHistory": "Visibilité de l'historique de la discussion", + "@visibilityOfTheChatHistory": { "type": "text", "placeholders": {} }, - "sessionVerified": "La session est vérifiée", - "@sessionVerified": { + "visibleForAllParticipants": "Visible pour tous les participants", + "@visibleForAllParticipants": { "type": "text", "placeholders": {} }, - "Room has been upgraded": "Le salon a été mis à niveau", - "@Room has been upgraded": { + "visibleForEveryone": "Visible pour tout le monde", + "@visibleForEveryone": { "type": "text", "placeholders": {} }, - "Reject": "Refuser", - "@Reject": { + "voiceMessage": "Message vocal", + "@voiceMessage": { "type": "text", "placeholders": {} }, - "passphraseOrKey": "Phrase de passe ou clé de récupération", - "@passphraseOrKey": { + "waitingPartnerAcceptRequest": "En attente de la vérification de la demande par le partenaire...", + "@waitingPartnerAcceptRequest": { "type": "text", "placeholders": {} }, - "onlineKeyBackupEnabled": "La sauvegarde en ligne des clés est activée", - "@onlineKeyBackupEnabled": { + "waitingPartnerEmoji": "En attente de l'acceptation de l'émoji par le partenaire...", + "@waitingPartnerEmoji": { "type": "text", "placeholders": {} }, - "onlineKeyBackupDisabled": "La sauvegarde en ligne des clés est désactivée", - "@onlineKeyBackupDisabled": { + "waitingPartnerNumbers": "En attente de l'acceptation des nombres par le partenaire...", + "@waitingPartnerNumbers": { "type": "text", "placeholders": {} }, - "noMegolmBootstrap": "Fluffychat ne prend pas actuellement en charge l'activation de la sauvegarde des clés en ligne. Veuillez l'activer à partir de Element.", - "@noMegolmBootstrap": { + "wallpaper": "Image de fond", + "@wallpaper": { "type": "text", "placeholders": {} }, - "noCrossSignBootstrap": "Fluffychat ne permet pas actuellement d'activer la signature croisée. Veuillez l'activer à partir de Element.", - "@noCrossSignBootstrap": { + "warning": "Attention !", + "@warning": { "type": "text", "placeholders": {} }, - "newVerificationRequest": "Nouvelle demande de vérification !", - "@newVerificationRequest": { + "warningEncryptionInBeta": "Le chiffrement de bout en bout est actuellement en béta ! Utilisez cette fonctionnalité à vos propres risques !", + "@warningEncryptionInBeta": { "type": "text", "placeholders": {} }, - "keysMissing": "Les clés sont manquantes", - "@keysMissing": { + "wednesday": "Mercredi", + "@wednesday": { "type": "text", "placeholders": {} }, - "keysCached": "Les clés sont mises en cache", - "@keysCached": { + "welcomeText": "Bienvenue dans la messagerie instantanée la plus mignonne du réseau Matrix.", + "@welcomeText": { "type": "text", "placeholders": {} }, - "isDeviceKeyCorrect": "La clé de l'appareil ci-dessous est-elle correcte ?", - "@isDeviceKeyCorrect": { + "whoIsAllowedToJoinThisGroup": "Qui est autorisé à rejoindre ce groupe", + "@whoIsAllowedToJoinThisGroup": { "type": "text", "placeholders": {} }, - "incorrectPassphraseOrKey": "Phrase de passe ou clé de récupération incorrecte", - "@incorrectPassphraseOrKey": { + "writeAMessage": "Écrit un message...", + "@writeAMessage": { "type": "text", "placeholders": {} }, - "Encryption": "Chiffrement", - "@Encryption": { + "yes": "Oui", + "@yes": { "type": "text", "placeholders": {} }, - "crossSigningEnabled": "La signature croisée est activée", - "@crossSigningEnabled": { + "you": "Vous", + "@you": { "type": "text", "placeholders": {} }, - "crossSigningDisabled": "La signature croisée est désactivée", - "@crossSigningDisabled": { + "youAreInvitedToThisChat": "Vous êtes invité à cette discussion", + "@youAreInvitedToThisChat": { "type": "text", "placeholders": {} }, - "compareNumbersMatch": "Comparez et assurez-vous que les chiffres suivants correspondent à ceux de l'autre appareil :", - "@compareNumbersMatch": { + "youAreNoLongerParticipatingInThisChat": "Vous ne participez plus à cette discussion", + "@youAreNoLongerParticipatingInThisChat": { "type": "text", "placeholders": {} }, - "compareEmojiMatch": "Comparez et assurez-vous que les emojis suivants correspondent à ceux de l'autre appareil :", - "@compareEmojiMatch": { + "youCannotInviteYourself": "Vous ne pouvez pas vous inviter vous-même", + "@youCannotInviteYourself": { "type": "text", "placeholders": {} }, - "cachedKeys": "Clés mises en cache avec succès !", - "@cachedKeys": { + "youHaveBeenBannedFromThisChat": "Vous avez été banni de cette discussion", + "@youHaveBeenBannedFromThisChat": { "type": "text", "placeholders": {} }, - "Block Device": "Bloquer l'appareil", - "@Block Device": { - "type": "text", - "placeholders": {} - }, - "askVerificationRequest": "Accepter cette demande de vérification de {username} ?", - "@askVerificationRequest": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "askSSSSVerify": "Veuillez saisir votre phrase de passe stockée de manière sécurisée ou votre clé de récupération pour vérifier votre session.", - "@askSSSSVerify": { - "type": "text", - "placeholders": {} - }, - "askSSSSSign": "Pour pouvoir faire signer l'autre personne, veuillez entrer votre phrase de passe stockée de manière sécurisée ou votre clé de récupération.", - "@askSSSSSign": { - "type": "text", - "placeholders": {} - }, - "askSSSSCache": "Veuillez saisir votre phrase de passe stockée de manière sécurisée ou votre clé de récupération pour mettre les clés en cache.", - "@askSSSSCache": { - "type": "text", - "placeholders": {} - }, - "Accept": "Accepter", - "@Accept": { + "yourOwnUsername": "Votre propre nom d'utilisateur", + "@yourOwnUsername": { "type": "text", "placeholders": {} } -} +} \ No newline at end of file diff --git a/lib/l10n/intl_gl.arb b/lib/l10n/intl_gl.arb index 05f881d..5cb4196 100644 --- a/lib/l10n/intl_gl.arb +++ b/lib/l10n/intl_gl.arb @@ -1,12 +1,13 @@ { - "@@last_modified": "2020-06-25T16:02:16.297192", - "About": "Acerca de", - "@About": { + "@@locale": "gl", + "@@last_modified": "2020-09-23 11:46:02.441724", + "about": "Acerca de", + "@about": { "type": "text", "placeholders": {} }, - "Accept": "Aceptar", - "@Accept": { + "accept": "Aceptar", + "@accept": { "type": "text", "placeholders": {} }, @@ -17,13 +18,13 @@ "username": {} } }, - "Account": "Conta", - "@Account": { + "account": "Conta", + "@account": { "type": "text", "placeholders": {} }, - "Account informations": "Información da conta", - "@Account informations": { + "accountInformation": "Información da conta", + "@accountInformation": { "type": "text", "placeholders": {} }, @@ -34,13 +35,13 @@ "username": {} } }, - "Add a group description": "Engade a descrición do grupo", - "@Add a group description": { + "addGroupDescription": "Engade a descrición do grupo", + "@addGroupDescription": { "type": "text", "placeholders": {} }, - "Admin": "Admin", - "@Admin": { + "admin": "Admin", + "@admin": { "type": "text", "placeholders": {} }, @@ -49,33 +50,40 @@ "type": "text", "placeholders": {} }, - "Already have an account?": "¿xa tes unha conta?", - "@Already have an account?": { + "alreadyHaveAnAccount": "¿xa tes unha conta?", + "@alreadyHaveAnAccount": { "type": "text", "placeholders": {} }, - "Anyone can join": "Calquera pode unirse", - "@Anyone can join": { + "answeredTheCall": "{senderName} respondeu á chamada", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "Calquera pode unirse", + "@anyoneCanJoin": { "type": "text", "placeholders": {} }, - "Archive": "Arquivo", - "@Archive": { + "archive": "Arquivo", + "@archive": { "type": "text", "placeholders": {} }, - "Archived Room": "Sala arquivada", - "@Archived Room": { + "archivedRoom": "Sala arquivada", + "@archivedRoom": { "type": "text", "placeholders": {} }, - "Are guest users allowed to join": "Teñen permitido as convidadas o acceso", - "@Are guest users allowed to join": { + "areGuestsAllowedToJoin": "Teñen permitido as convidadas o acceso", + "@areGuestsAllowedToJoin": { "type": "text", "placeholders": {} }, - "Are you sure?": "¿estás certo?", - "@Are you sure?": { + "areYouSure": "¿estás certo?", + "@areYouSure": { "type": "text", "placeholders": {} }, @@ -101,23 +109,23 @@ "username": {} } }, - "Authentication": "Autenticación", - "@Authentication": { + "authentication": "Autenticación", + "@authentication": { "type": "text", "placeholders": {} }, - "Avatar has been changed": "O avatar cambiou", - "@Avatar has been changed": { + "avatarHasBeenChanged": "O avatar cambiou", + "@avatarHasBeenChanged": { "type": "text", "placeholders": {} }, - "Ban from chat": "Expulsar da conversa", - "@Ban from chat": { + "banFromChat": "Expulsar da conversa", + "@banFromChat": { "type": "text", "placeholders": {} }, - "Banned": "Vetada", - "@Banned": { + "banned": "Vetada", + "@banned": { "type": "text", "placeholders": {} }, @@ -129,8 +137,8 @@ "targetName": {} } }, - "Block Device": "Bloquear dispositivo", - "@Block Device": { + "blockDevice": "Bloquear dispositivo", + "@blockDevice": { "type": "text", "placeholders": {} }, @@ -146,8 +154,8 @@ "type": "text", "placeholders": {} }, - "Cancel": "Cancelar", - "@Cancel": { + "cancel": "Cancelar", + "@cancel": { "type": "text", "placeholders": {} }, @@ -158,14 +166,6 @@ "username": {} } }, - "changedTheChatNameTo": "{username} mudou o nome da conversa a: '{chatname}'", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, "changedTheChatDescriptionTo": "{username} mudou a descrición da conversa a: '{description}'", "@changedTheChatDescriptionTo": { "type": "text", @@ -174,6 +174,14 @@ "description": {} } }, + "changedTheChatNameTo": "{username} mudou o nome da conversa a: '{chatname}'", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, "changedTheChatPermissions": "{username} mudou os permisos da conversa", "@changedTheChatPermissions": { "type": "text", @@ -189,11 +197,6 @@ "displayname": {} } }, - "Change the homeserver": "Mudar de servidor de inicio", - "@Change the homeserver": { - "type": "text", - "placeholders": {} - }, "changedTheGuestAccessRules": "{username} mudou as regras de acceso para convidadas", "@changedTheGuestAccessRules": { "type": "text", @@ -239,7 +242,7 @@ "joinRules": {} } }, - "changedTheProfileAvatar": "{username} mudou o avatar do perfil", + "changedTheProfileAvatar": "{username} mudou o avatar", "@changedTheProfileAvatar": { "type": "text", "placeholders": { @@ -260,53 +263,68 @@ "username": {} } }, - "Changelog": "Rexistro de cambios", - "@Changelog": { + "changelog": "Rexistro de cambios", + "@changelog": { "type": "text", "placeholders": {} }, - "Change the name of the group": "Mudar o nome do grupo", - "@Change the name of the group": { + "changesHaveBeenSaved": "Gardáronse os cambios", + "@changesHaveBeenSaved": { "type": "text", "placeholders": {} }, - "Change wallpaper": "Mudar fondo do chat", - "@Change wallpaper": { + "changeTheHomeserver": "Mudar de servidor de inicio", + "@changeTheHomeserver": { "type": "text", "placeholders": {} }, - "Change the server": "Mudar de servidor", - "@Change the server": { + "changeTheme": "Cambiar o estilo", + "@changeTheme": { "type": "text", "placeholders": {} }, - "The encryption has been corrupted": "O cifrado está corrompido", - "@The encryption has been corrupted": { + "changeTheNameOfTheGroup": "Mudar o nome do grupo", + "@changeTheNameOfTheGroup": { "type": "text", "placeholders": {} }, - "Chat": "Chat", - "@Chat": { + "changeTheServer": "Mudar de servidor", + "@changeTheServer": { "type": "text", "placeholders": {} }, - "Chat details": "Detalles do chat", - "@Chat details": { + "changeWallpaper": "Mudar fondo do chat", + "@changeWallpaper": { "type": "text", "placeholders": {} }, - "Choose a strong password": "Escolle un contrasinal forte", - "@Choose a strong password": { + "channelCorruptedDecryptError": "O cifrado está corrompido", + "@channelCorruptedDecryptError": { "type": "text", "placeholders": {} }, - "Choose a username": "Escolle un nome de usuaria", - "@Choose a username": { + "chat": "Chat", + "@chat": { "type": "text", "placeholders": {} }, - "Close": "Pechar", - "@Close": { + "chatDetails": "Detalles do chat", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "chooseAStrongPassword": "Escolle un contrasinal forte", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "chooseAUsername": "Escolle un nome de usuaria", + "@chooseAUsername": { + "type": "text", + "placeholders": {} + }, + "close": "Pechar", + "@close": { "type": "text", "placeholders": {} }, @@ -320,38 +338,38 @@ "type": "text", "placeholders": {} }, - "Confirm": "Confirmar", - "@Confirm": { + "confirm": "Confirmar", + "@confirm": { "type": "text", "placeholders": {} }, - "Connect": "Conectar", - "@Connect": { + "connect": "Conectar", + "@connect": { "type": "text", "placeholders": {} }, - "Connection attempt failed": "Fallou o intento de conexión", - "@Connection attempt failed": { + "connectionAttemptFailed": "Fallou o intento de conexión", + "@connectionAttemptFailed": { "type": "text", "placeholders": {} }, - "Contact has been invited to the group": "O contacto foi convidado ó grupo", - "@Contact has been invited to the group": { + "contactHasBeenInvitedToTheGroup": "O contacto foi convidado ó grupo", + "@contactHasBeenInvitedToTheGroup": { "type": "text", "placeholders": {} }, - "Content viewer": "Visor de contido", - "@Content viewer": { + "contentViewer": "Visor de contido", + "@contentViewer": { "type": "text", "placeholders": {} }, - "Copied to clipboard": "Copiado ó portapapeis", - "@Copied to clipboard": { + "copiedToClipboard": "Copiado ó portapapeis", + "@copiedToClipboard": { "type": "text", "placeholders": {} }, - "Copy": "Copiar", - "@Copy": { + "copy": "Copiar", + "@copy": { "type": "text", "placeholders": {} }, @@ -362,13 +380,13 @@ "error": {} } }, - "Could not set avatar": "Non se estableceu o avatar", - "@Could not set avatar": { + "couldNotSetAvatar": "Non se estableceu o avatar", + "@couldNotSetAvatar": { "type": "text", "placeholders": {} }, - "Could not set displayname": "Non se estableceu o nome público", - "@Could not set displayname": { + "couldNotSetDisplayname": "Non se estableceu o nome público", + "@couldNotSetDisplayname": { "type": "text", "placeholders": {} }, @@ -379,13 +397,13 @@ "count": {} } }, - "Create": "Crear", - "@Create": { + "create": "Crear", + "@create": { "type": "text", "placeholders": {} }, - "Create account now": "Crear unha conta", - "@Create account now": { + "createAccountNow": "Crear unha conta", + "@createAccountNow": { "type": "text", "placeholders": {} }, @@ -396,8 +414,8 @@ "username": {} } }, - "Create new group": "Crear novo grupo", - "@Create new group": { + "createNewGroup": "Crear novo grupo", + "@createNewGroup": { "type": "text", "placeholders": {} }, @@ -411,8 +429,13 @@ "type": "text", "placeholders": {} }, - "Currently active": "Actualmente activo", - "@Currently active": { + "currentlyActive": "Actualmente activo", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "Escuro", + "@darkTheme": { "type": "text", "placeholders": {} }, @@ -441,63 +464,68 @@ "day": {} } }, - "Delete": "Eliminar", - "@Delete": { + "deactivateAccountWarning": "Esto desactivará a conta. Esto non ten volta atrás. Estás segura?", + "@deactivateAccountWarning": { "type": "text", "placeholders": {} }, - "Delete message": "Eliminar mensaxe", - "@Delete message": { + "delete": "Eliminar", + "@delete": { "type": "text", "placeholders": {} }, - "Deny": "Denegar", - "@Deny": { + "deleteAccount": "Eliminar conta", + "@deleteAccount": { "type": "text", "placeholders": {} }, - "Device": "Dispositivo", - "@Device": { + "deleteMessage": "Eliminar mensaxe", + "@deleteMessage": { "type": "text", "placeholders": {} }, - "Devices": "Dispositivos", - "@Devices": { + "deny": "Denegar", + "@deny": { "type": "text", "placeholders": {} }, - "Discard picture": "Desbotar imaxe", - "@Discard picture": { + "device": "Dispositivo", + "@device": { "type": "text", "placeholders": {} }, - "Displayname has been changed": "O nome público mudou", - "@Displayname has been changed": { + "devices": "Dispositivos", + "@devices": { "type": "text", "placeholders": {} }, - "Download file": "Descargar ficheiro", - "@Download file": { + "discardPicture": "Desbotar imaxe", + "@discardPicture": { "type": "text", "placeholders": {} }, - "Edit displayname": "Editar nome público", - "@Edit displayname": { + "displaynameHasBeenChanged": "O nome público mudou", + "@displaynameHasBeenChanged": { "type": "text", "placeholders": {} }, - "Emote Settings": "Axustes de Emote", - "@Emote Settings": { + "donate": "Doar", + "@donate": { "type": "text", "placeholders": {} }, - "Emote shortcode": "Atallo de Emote", - "@Emote shortcode": { + "downloadFile": "Descargar ficheiro", + "@downloadFile": { "type": "text", "placeholders": {} }, - "emoteWarnNeedToPick": "Escribe un atallo e asocialle unha imaxe!", - "@emoteWarnNeedToPick": { + "editDisplayname": "Editar nome público", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "editJitsiInstance": "Editar instancia Jitsi", + "@editJitsiInstance": { "type": "text", "placeholders": {} }, @@ -511,103 +539,125 @@ "type": "text", "placeholders": {} }, - "Empty chat": "Chat baleiro", - "@Empty chat": { + "emoteSettings": "Axustes de Emote", + "@emoteSettings": { "type": "text", "placeholders": {} }, - "You won't be able to disable the encryption anymore. Are you sure?": "Non poderás desactivar o cifrado posteriormente, ¿estás certo?", - "@You won't be able to disable the encryption anymore. Are you sure?": { + "emoteShortcode": "Atallo de Emote", + "@emoteShortcode": { "type": "text", "placeholders": {} }, - "Encryption": "Cifrado", - "@Encryption": { + "emoteWarnNeedToPick": "Escribe un atallo e asocialle unha imaxe!", + "@emoteWarnNeedToPick": { "type": "text", "placeholders": {} }, - "Encryption algorithm": "Algoritmo do cifrado", - "@Encryption algorithm": { + "emptyChat": "Chat baleiro", + "@emptyChat": { "type": "text", "placeholders": {} }, - "Encryption is not enabled": "Cifrado desactivado", - "@Encryption is not enabled": { + "enableEncryptionWarning": "Non poderás desactivar o cifrado posteriormente, ¿estás certo?", + "@enableEncryptionWarning": { "type": "text", "placeholders": {} }, - "End-to-end encryption settings": "Axustes do cifrado extremo-a-extremo", - "@End-to-end encryption settings": { + "encryption": "Cifrado", + "@encryption": { "type": "text", "placeholders": {} }, - "Enter a group name": "Escribe un nome para o grupo", - "@Enter a group name": { + "encryptionAlgorithm": "Algoritmo do cifrado", + "@encryptionAlgorithm": { "type": "text", "placeholders": {} }, - "Enter a username": "Escribe un nome de usuaria", - "@Enter a username": { + "encryptionNotEnabled": "Cifrado desactivado", + "@encryptionNotEnabled": { "type": "text", "placeholders": {} }, - "Enter your homeserver": "Escribe o teu servidor de inicio", - "@Enter your homeserver": { + "end2endEncryptionSettings": "Axustes do cifrado extremo-a-extremo", + "@end2endEncryptionSettings": { "type": "text", "placeholders": {} }, - "File name": "Nome do ficheiro", - "@File name": { + "endedTheCall": "{senderName} rematou a chamada", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterAGroupName": "Escribe un nome para o grupo", + "@enterAGroupName": { "type": "text", "placeholders": {} }, - "File size": "Tamaño do ficheiro", - "@File size": { + "enterAUsername": "Escribe un nome de usuaria", + "@enterAUsername": { "type": "text", "placeholders": {} }, - "FluffyChat": "FluffyChat", - "@FluffyChat": { + "enterYourHomeserver": "Escribe o teu servidor de inicio", + "@enterYourHomeserver": { "type": "text", "placeholders": {} }, - "Forward": "Reenviar", - "@Forward": { + "fileName": "Nome do ficheiro", + "@fileName": { "type": "text", "placeholders": {} }, - "Friday": "Venres", - "@Friday": { + "fileSize": "Tamaño do ficheiro", + "@fileSize": { "type": "text", "placeholders": {} }, - "From joining": "Desde que se una", - "@From joining": { + "fluffychat": "FluffyChat", + "@fluffychat": { "type": "text", "placeholders": {} }, - "From the invitation": "Desde o convite", - "@From the invitation": { + "forward": "Reenviar", + "@forward": { "type": "text", "placeholders": {} }, - "Group": "Grupo", - "@Group": { + "friday": "Venres", + "@friday": { "type": "text", "placeholders": {} }, - "Group description": "Descrición do grupo", - "@Group description": { + "fromJoining": "Desde que se una", + "@fromJoining": { "type": "text", "placeholders": {} }, - "Group description has been changed": "Mudou a descrición do grupo", - "@Group description has been changed": { + "fromTheInvitation": "Desde o convite", + "@fromTheInvitation": { "type": "text", "placeholders": {} }, - "Group is public": "O grupo é público", - "@Group is public": { + "group": "Grupo", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupDescription": "Descrición do grupo", + "@groupDescription": { + "type": "text", + "placeholders": {} + }, + "groupDescriptionHasBeenChanged": "Mudou a descrición do grupo", + "@groupDescriptionHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "O grupo é público", + "@groupIsPublic": { "type": "text", "placeholders": {} }, @@ -618,13 +668,13 @@ "displayname": {} } }, - "Guests are forbidden": "Non se permiten convidadas", - "@Guests are forbidden": { + "guestsAreForbidden": "Non se permiten convidadas", + "@guestsAreForbidden": { "type": "text", "placeholders": {} }, - "Guests can join": "Permítense convidadas", - "@Guests can join": { + "guestsCanJoin": "Permítense convidadas", + "@guestsCanJoin": { "type": "text", "placeholders": {} }, @@ -636,23 +686,38 @@ "targetName": {} } }, - "Help": "Axuda", - "@Help": { + "help": "Axuda", + "@help": { "type": "text", "placeholders": {} }, - "Homeserver is not compatible": "Servidor de inicio non compatible", - "@Homeserver is not compatible": { + "homeserverIsNotCompatible": "Servidor de inicio non compatible", + "@homeserverIsNotCompatible": { "type": "text", "placeholders": {} }, - "ID": "ID", - "@ID": { + "id": "ID", + "@id": { "type": "text", "placeholders": {} }, - "Identity": "Identidade", - "@Identity": { + "identity": "Identidade", + "@identity": { + "type": "text", + "placeholders": {} + }, + "ignoredUsers": "Usuarias ignoradas", + "@ignoredUsers": { + "type": "text", + "placeholders": {} + }, + "ignoreListDescription": "Podes ignorar usuarias molestas. Non recibirás ningunha mensaxe nin convites a salas da túa lista personal de usuarias ignoradas.", + "@ignoreListDescription": { + "type": "text", + "placeholders": {} + }, + "ignoreUsername": "Ignorar nome de usuaria", + "@ignoreUsername": { "type": "text", "placeholders": {} }, @@ -661,8 +726,8 @@ "type": "text", "placeholders": {} }, - "Invite contact": "Convidar contacto", - "@Invite contact": { + "inviteContact": "Convidar contacto", + "@inviteContact": { "type": "text", "placeholders": {} }, @@ -673,19 +738,11 @@ "groupName": {} } }, - "Invited": "Convidado", - "@Invited": { + "invited": "Convidado", + "@invited": { "type": "text", "placeholders": {} }, - "inviteText": "{username} convidoute a FluffyChat.\n1. instala FluffyChat: http://fluffy.chat \n2. Rexístrate ou conéctate\n3. Abre a ligazón do convite: {link}", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, "invitedUser": "{username} convidou a {targetName}", "@invitedUser": { "type": "text", @@ -694,23 +751,26 @@ "targetName": {} } }, - "Invited users only": "Só usuarias convidadas", - "@Invited users only": { + "invitedUsersOnly": "Só usuarias convidadas", + "@invitedUsersOnly": { "type": "text", "placeholders": {} }, + "inviteText": "{username} convidoute a FluffyChat.\n1. instala FluffyChat: https://fluffychat.im \n2. Rexístrate ou conéctate\n3. Abre a ligazón do convite: {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, "isDeviceKeyCorrect": "¿É correcta esta chave do dispositivo?", "@isDeviceKeyCorrect": { "type": "text", "placeholders": {} }, - "is typing...": "está escribindo...", - "@is typing...": { - "type": "text", - "placeholders": {} - }, - "Edit Jitsi instance": "Editar instancia Jitsi", - "@Edit Jitsi instance": { + "isTyping": "está escribindo...", + "@isTyping": { "type": "text", "placeholders": {} }, @@ -721,6 +781,11 @@ "username": {} } }, + "joinRoom": "Entrar na sala", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, "keysCached": "Chaves almacenadas", "@keysCached": { "type": "text", @@ -747,33 +812,11 @@ "targetName": {} } }, - "Kick from chat": "Expulsar da conversa", - "@Kick from chat": { + "kickFromChat": "Expulsar da conversa", + "@kickFromChat": { "type": "text", "placeholders": {} }, - "Leave": "Saír", - "@Leave": { - "type": "text", - "placeholders": {} - }, - "Left the chat": "Deixar a conversa", - "@Left the chat": { - "type": "text", - "placeholders": {} - }, - "Logout": "Desconectar", - "@Logout": { - "type": "text", - "placeholders": {} - }, - "userLeftTheChat": "{username} deixou a conversa", - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, "lastActiveAgo": "Última actividade: {localizedTimeShort}", "@lastActiveAgo": { "type": "text", @@ -781,23 +824,33 @@ "localizedTimeShort": {} } }, - "Last seen IP": "Última IP vista", - "@Last seen IP": { + "lastSeenIp": "Última IP vista", + "@lastSeenIp": { "type": "text", "placeholders": {} }, - "License": "Licenza", - "@License": { + "lastSeenLongTimeAgo": "Hai moito que non aparece", + "@lastSeenLongTimeAgo": { "type": "text", "placeholders": {} }, - "Loading... Please wait": "Cargando... Agarda", - "@Loading... Please wait": { + "leave": "Saír", + "@leave": { "type": "text", "placeholders": {} }, - "Load more...": "Cargar máis...", - "@Load more...": { + "leftTheChat": "Deixar a conversa", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "Licenza", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "Claro", + "@lightTheme": { "type": "text", "placeholders": {} }, @@ -808,8 +861,18 @@ "count": {} } }, - "Login": "Conexión", - "@Login": { + "loadingPleaseWait": "Cargando... Agarda", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "Cargar máis...", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "login": "Conexión", + "@login": { "type": "text", "placeholders": {} }, @@ -820,53 +883,58 @@ "homeserver": {} } }, - "Make a moderator": "Converter en moderadora", - "@Make a moderator": { + "logout": "Desconectar", + "@logout": { "type": "text", "placeholders": {} }, - "Make an admin": "Converter en administradora", - "@Make an admin": { + "makeAModerator": "Converter en moderadora", + "@makeAModerator": { "type": "text", "placeholders": {} }, - "Make sure the identifier is valid": "Asegúrate de que o identificador é válido", - "@Make sure the identifier is valid": { + "makeAnAdmin": "Converter en administradora", + "@makeAnAdmin": { "type": "text", "placeholders": {} }, - "Message will be removed for all participants": "A mensaxe eliminarase para todas as participantes", - "@Message will be removed for all participants": { + "makeSureTheIdentifierIsValid": "Asegúrate de que o identificador é válido", + "@makeSureTheIdentifierIsValid": { "type": "text", "placeholders": {} }, - "Moderator": "Moderadora", - "@Moderator": { + "messageWillBeRemovedWarning": "A mensaxe eliminarase para todas as participantes", + "@messageWillBeRemovedWarning": { "type": "text", "placeholders": {} }, - "Monday": "Luns", - "@Monday": { + "moderator": "Moderadora", + "@moderator": { "type": "text", "placeholders": {} }, - "Mute chat": "Acalar conversa", - "@Mute chat": { + "monday": "Luns", + "@monday": { "type": "text", "placeholders": {} }, - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": "Ten en conta que polo de agora precisas Pantalaimon para o cifrado extremo-a-extremo.", - "@Please be aware that you need Pantalaimon to use end-to-end encryption for now.": { + "muteChat": "Acalar conversa", + "@muteChat": { "type": "text", "placeholders": {} }, - "New message in FluffyChat": "Nova mensaxe en FluffyChat", - "@New message in FluffyChat": { + "needPantalaimonWarning": "Ten en conta que polo de agora precisas Pantalaimon para o cifrado extremo-a-extremo.", + "@needPantalaimonWarning": { "type": "text", "placeholders": {} }, - "New private chat": "Nova conversa privada", - "@New private chat": { + "newMessageInFluffyChat": "Nova mensaxe en FluffyChat", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "newPrivateChat": "Nova conversa privada", + "@newPrivateChat": { "type": "text", "placeholders": {} }, @@ -875,43 +943,48 @@ "type": "text", "placeholders": {} }, + "no": "Non", + "@no": { + "type": "text", + "placeholders": {} + }, "noCrossSignBootstrap": "Polo momento FluffyChat non soporta a activación da Sinatura-Cruzada. Actívaa desde Element.", "@noCrossSignBootstrap": { "type": "text", "placeholders": {} }, + "noEmotesFound": "Non hai emotes. 😕", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "Semella que non tes os servizos de google no teu dispositivo. Ben feito! a túa privacidade agradécecho! Para recibir notificacións push en FluffyChat recomendamos usar microG: https://microg.org/", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, "noMegolmBootstrap": "Actualmente Fluffychat non soporta a activación da Copia En Liña das Chaves. Actívaa desde Element.", "@noMegolmBootstrap": { "type": "text", "placeholders": {} }, - "It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": "Semella que non tes os servizos de google no teu dispositivo. Ben feito! a túa privacidade agradécecho! Para recibir notificacións push en FluffyChat recomendamos usar microG: https://microg.org/", - "@It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": { + "none": "Ningún", + "@none": { "type": "text", "placeholders": {} }, - "None": "Ningún", - "@None": { + "noPermission": "Sen permiso", + "@noPermission": { "type": "text", "placeholders": {} }, - "No emotes found. 😕": "Non hai emotes. 😕", - "@No emotes found. 😕": { + "noRoomsFound": "Non se atoparon salas...", + "@noRoomsFound": { "type": "text", "placeholders": {} }, - "No permission": "Sen permiso", - "@No permission": { - "type": "text", - "placeholders": {} - }, - "No rooms found...": "Non se atoparon salas...", - "@No rooms found...": { - "type": "text", - "placeholders": {} - }, - "Not supported in web": "Non soportado na web", - "@Not supported in web": { + "notSupportedInWeb": "Non soportado na web", + "@notSupportedInWeb": { "type": "text", "placeholders": {} }, @@ -937,28 +1010,28 @@ "type": "text", "placeholders": {} }, - "Oops something went wrong...": "Ooooi, algo fallou...", - "@Oops something went wrong...": { + "oopsSomethingWentWrong": "Ooooi, algo fallou...", + "@oopsSomethingWentWrong": { "type": "text", "placeholders": {} }, - "Open app to read messages": "Abrir a app e ler mensaxes", - "@Open app to read messages": { + "openAppToReadMessages": "Abrir a app e ler mensaxes", + "@openAppToReadMessages": { "type": "text", "placeholders": {} }, - "Open camera": "Abrir cámara", - "@Open camera": { + "openCamera": "Abrir cámara", + "@openCamera": { "type": "text", "placeholders": {} }, - "(Optional) Group name": "(Optativo) Nome do grupo", - "@(Optional) Group name": { + "optionalGroupName": "(Optativo) Nome do grupo", + "@optionalGroupName": { "type": "text", "placeholders": {} }, - "Participating user devices": "Dispositivos das usuarias participantes", - "@Participating user devices": { + "participatingUserDevices": "Dispositivos das usuarias participantes", + "@participatingUserDevices": { "type": "text", "placeholders": {} }, @@ -967,13 +1040,23 @@ "type": "text", "placeholders": {} }, - "Password": "Contrasinal", - "@Password": { + "password": "Contrasinal", + "@password": { "type": "text", "placeholders": {} }, - "Pick image": "Escolle unha imaxe", - "@Pick image": { + "passwordHasBeenChanged": "Cambiaches o contrasinal", + "@passwordHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "pickImage": "Escolle unha imaxe", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "pin": "Fixar", + "@pin": { "type": "text", "placeholders": {} }, @@ -984,48 +1067,33 @@ "fileName": {} } }, - "Please choose a username": "Escolle un nome de usuaria", - "@Please choose a username": { + "pleaseChooseAUsername": "Escolle un nome de usuaria", + "@pleaseChooseAUsername": { "type": "text", "placeholders": {} }, - "Please enter a matrix identifier": "Escribe un identificador matrix", - "@Please enter a matrix identifier": { + "pleaseEnterAMatrixIdentifier": "Escribe un identificador matrix", + "@pleaseEnterAMatrixIdentifier": { "type": "text", "placeholders": {} }, - "Please enter your password": "Escribe o teu contrasinal", - "@Please enter your password": { + "pleaseEnterYourPassword": "Escribe o teu contrasinal", + "@pleaseEnterYourPassword": { "type": "text", "placeholders": {} }, - "Please enter your username": "Escribe o teu nome de usuaria", - "@Please enter your username": { + "pleaseEnterYourUsername": "Escribe o teu nome de usuaria", + "@pleaseEnterYourUsername": { "type": "text", "placeholders": {} }, - "Public Rooms": "Salas públicas", - "@Public Rooms": { + "publicRooms": "Salas públicas", + "@publicRooms": { "type": "text", "placeholders": {} }, - "Reject": "Rexeitar", - "@Reject": { - "type": "text", - "placeholders": {} - }, - "Rejoin": "Volta a unirte", - "@Rejoin": { - "type": "text", - "placeholders": {} - }, - "Render rich message content": "Mostrar contido enriquecido da mensaxe", - "@Render rich message content": { - "type": "text", - "placeholders": {} - }, - "Recording": "Gravando", - "@Recording": { + "recording": "Gravando", + "@recording": { "type": "text", "placeholders": {} }, @@ -1036,6 +1104,11 @@ "username": {} } }, + "reject": "Rexeitar", + "@reject": { + "type": "text", + "placeholders": {} + }, "rejectedTheInvitation": "{username} rexeitou o convite", "@rejectedTheInvitation": { "type": "text", @@ -1043,8 +1116,18 @@ "username": {} } }, - "Remove all other devices": "Quitar todos os outros dispositivos", - "@Remove all other devices": { + "rejoin": "Volta a unirte", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "Eliminar", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "Quitar todos os outros dispositivos", + "@removeAllOtherDevices": { "type": "text", "placeholders": {} }, @@ -1055,75 +1138,58 @@ "username": {} } }, - "Remove device": "Quitar dispositivo", - "@Remove device": { + "removeDevice": "Quitar dispositivo", + "@removeDevice": { "type": "text", "placeholders": {} }, - "Remove exile": "Quitar o veto", - "@Remove exile": { + "removeExile": "Quitar o veto", + "@removeExile": { "type": "text", "placeholders": {} }, - "Revoke all permissions": "Revogar tódolos permisos", - "@Revoke all permissions": { + "removeMessage": "Eliminar mensaxe", + "@removeMessage": { "type": "text", "placeholders": {} }, - "Remove": "Eliminar", - "@Remove": { + "renderRichContent": "Mostrar contido enriquecido da mensaxe", + "@renderRichContent": { "type": "text", "placeholders": {} }, - "Remove message": "Eliminar mensaxe", - "@Remove message": { + "reply": "Responder", + "@reply": { "type": "text", "placeholders": {} }, - "Reply": "Responder", - "@Reply": { + "requestPermission": "Solicitar permiso", + "@requestPermission": { "type": "text", "placeholders": {} }, - "Request permission": "Solicitar permiso", - "@Request permission": { + "requestToReadOlderMessages": "Solicitar ler mensaxes antigas", + "@requestToReadOlderMessages": { "type": "text", "placeholders": {} }, - "Request to read older messages": "Solicitar ler mensaxes antigas", - "@Request to read older messages": { + "revokeAllPermissions": "Revogar tódolos permisos", + "@revokeAllPermissions": { "type": "text", "placeholders": {} }, - "Room has been upgraded": "A sala foi actualizada", - "@Room has been upgraded": { + "roomHasBeenUpgraded": "A sala foi actualizada", + "@roomHasBeenUpgraded": { "type": "text", "placeholders": {} }, - "Saturday": "Sábado", - "@Saturday": { + "saturday": "Sábado", + "@saturday": { "type": "text", "placeholders": {} }, - "Share": "Compartir", - "@Share": { - "type": "text", - "placeholders": {} - }, - "sharedTheLocation": "{username} compartiu a localización", - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "Search for a chat": "Buscar un chat", - "@Search for a chat": { - "type": "text", - "placeholders": {} - }, - "Seen a long time ago": "Hai moito que non aparece", - "@Seen a long time ago": { + "searchForAChat": "Buscar un chat", + "@searchForAChat": { "type": "text", "placeholders": {} }, @@ -1134,14 +1200,6 @@ "username": {} } }, - "seenByUserAndUser": "Visto por {username} e {username2}", - "@seenByUserAndUser": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, "seenByUserAndCountOthers": "Visto por {username} e {count} outras", "@seenByUserAndCountOthers": { "type": "text", @@ -1150,23 +1208,51 @@ "count": {} } }, - "Send": "Enviar", - "@Send": { + "seenByUserAndUser": "Visto por {username} e {username2}", + "@seenByUserAndUser": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "send": "Enviar", + "@send": { "type": "text", "placeholders": {} }, - "Send a message": "Enviar unha mensaxe", - "@Send a message": { + "sendAMessage": "Enviar unha mensaxe", + "@sendAMessage": { "type": "text", "placeholders": {} }, - "Send file": "Enviar ficheiro", - "@Send file": { + "sendAudio": "Enviar audio", + "@sendAudio": { "type": "text", "placeholders": {} }, - "Send image": "Enviar imaxe", - "@Send image": { + "sendBugReports": "Permitir o envío de informes de fallos con sentry.io", + "@sendBugReports": { + "type": "text", + "placeholders": {} + }, + "sendFile": "Enviar ficheiro", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "Enviar imaxe", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "Enviar orixinal", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendVideo": "Enviar vídeo", + "@sendVideo": { "type": "text", "placeholders": {} }, @@ -1205,123 +1291,129 @@ "username": {} } }, + "sentCallInformations": "{senderName} enviou informacións da chamada", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "sentryInfo": "Información sobre privacidade: https://sentry.io/security/", + "@sentryInfo": { + "type": "text", + "placeholders": {} + }, "sessionVerified": "Sesión verificada", "@sessionVerified": { "type": "text", "placeholders": {} }, - "Set a profile picture": "Establecer foto do perfil", - "@Set a profile picture": { + "setAProfilePicture": "Establecer foto do perfil", + "@setAProfilePicture": { "type": "text", "placeholders": {} }, - "Set group description": "Establecer descrición do grupo", - "@Set group description": { + "setGroupDescription": "Establecer descrición do grupo", + "@setGroupDescription": { "type": "text", "placeholders": {} }, - "Set invitation link": "Establecer ligazón do convite", - "@Set invitation link": { + "setInvitationLink": "Establecer ligazón do convite", + "@setInvitationLink": { "type": "text", "placeholders": {} }, - "Set status": "Establecer estado", - "@Set status": { + "setStatus": "Establecer estado", + "@setStatus": { "type": "text", "placeholders": {} }, - "Settings": "Axustes", - "@Settings": { + "settings": "Axustes", + "@settings": { "type": "text", "placeholders": {} }, - "Sign up": "Rexistro", - "@Sign up": { + "share": "Compartir", + "@share": { "type": "text", "placeholders": {} }, - "Skip": "Saltar", - "@Skip": { + "sharedTheLocation": "{username} compartiu a localización", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "signUp": "Rexistro", + "@signUp": { "type": "text", "placeholders": {} }, - "Change your style": "Cambiar o estilo", - "@Change your style": { + "skip": "Saltar", + "@skip": { "type": "text", "placeholders": {} }, - "System": "Sistema", - "@System": { + "sourceCode": "Código fonte", + "@sourceCode": { "type": "text", "placeholders": {} }, - "How are you today?": "¿Que tal estás hoxe?", - "@How are you today?": { + "startedACall": "{senderName} iniciou unha chamada", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "startYourFirstChat": "Abre a primeira conversa :-)", + "@startYourFirstChat": { "type": "text", "placeholders": {} }, - "Light": "Claro", - "@Light": { + "statusExampleMessage": "¿Que tal estás hoxe?", + "@statusExampleMessage": { "type": "text", "placeholders": {} }, - "Dark": "Escuro", - "@Dark": { + "submit": "Enviar", + "@submit": { "type": "text", "placeholders": {} }, - "Use Amoled compatible colors?": "¿Usar cores compatibles con Amoled?", - "@Use Amoled compatible colors?": { + "sunday": "Domingo", + "@sunday": { "type": "text", "placeholders": {} }, - "Source code": "Código fonte", - "@Source code": { + "systemTheme": "Sistema", + "@systemTheme": { "type": "text", "placeholders": {} }, - "Start your first chat :-)": "Abre a primeira conversa :-)", - "@Start your first chat :-)": { + "tapToShowMenu": "Toca para mostrar menú", + "@tapToShowMenu": { "type": "text", "placeholders": {} }, - "Submit": "Enviar", - "@Submit": { + "theyDontMatch": "Non concordan", + "@theyDontMatch": { "type": "text", "placeholders": {} }, - "Sunday": "Domingo", - "@Sunday": { + "theyMatch": "Concordan", + "@theyMatch": { "type": "text", "placeholders": {} }, - "Donate": "Doar", - "@Donate": { + "thisRoomHasBeenArchived": "A sala foi arquivada.", + "@thisRoomHasBeenArchived": { "type": "text", "placeholders": {} }, - "Tap to show menu": "Toca para mostrar menú", - "@Tap to show menu": { - "type": "text", - "placeholders": {} - }, - "They Don't Match": "Non concordan", - "@They Don't Match": { - "type": "text", - "placeholders": {} - }, - "They Match": "Concordan", - "@They Match": { - "type": "text", - "placeholders": {} - }, - "This room has been archived.": "A sala foi arquivada.", - "@This room has been archived.": { - "type": "text", - "placeholders": {} - }, - "Thursday": "Xoves", - "@Thursday": { + "thursday": "Xoves", + "@thursday": { "type": "text", "placeholders": {} }, @@ -1341,13 +1433,13 @@ "type": "text", "placeholders": {} }, - "Try to send again": "Inténtao outra vez", - "@Try to send again": { + "tryToSendAgain": "Inténtao outra vez", + "@tryToSendAgain": { "type": "text", "placeholders": {} }, - "Tuesday": "Martes", - "@Tuesday": { + "tuesday": "Martes", + "@tuesday": { "type": "text", "placeholders": {} }, @@ -1359,28 +1451,18 @@ "targetName": {} } }, - "Unblock Device": "Desbloquear dispositivo", - "@Unblock Device": { + "unblockDevice": "Desbloquear dispositivo", + "@unblockDevice": { "type": "text", "placeholders": {} }, - "Unmute chat": "Reactivar chat", - "@Unmute chat": { + "unknownDevice": "Dispositivo descoñecido", + "@unknownDevice": { "type": "text", "placeholders": {} }, - "Unknown device": "Dispositivo descoñecido", - "@Unknown device": { - "type": "text", - "placeholders": {} - }, - "Unknown encryption algorithm": "Algoritmo de cifrado descoñecido", - "@Unknown encryption algorithm": { - "type": "text", - "placeholders": {} - }, - "unknownSessionVerify": "Sesión descoñecida, por favor verifícaa", - "@unknownSessionVerify": { + "unknownEncryptionAlgorithm": "Algoritmo de cifrado descoñecido", + "@unknownEncryptionAlgorithm": { "type": "text", "placeholders": {} }, @@ -1391,6 +1473,21 @@ "type": {} } }, + "unknownSessionVerify": "Sesión descoñecida, por favor verifícaa", + "@unknownSessionVerify": { + "type": "text", + "placeholders": {} + }, + "unmuteChat": "Reactivar chat", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unpin": "Desafixar", + "@unpin": { + "type": "text", + "placeholders": {} + }, "unreadChats": "{unreadCount} chats non lidos", "@unreadChats": { "type": "text", @@ -1413,6 +1510,11 @@ "unreadChats": {} } }, + "useAmoledTheme": "¿Usar cores compatibles con Amoled?", + "@useAmoledTheme": { + "type": "text", + "placeholders": {} + }, "userAndOthersAreTyping": "{username} e {count} máis están escribindo...", "@userAndOthersAreTyping": { "type": "text", @@ -1429,11 +1531,6 @@ "username2": {} } }, - "Username": "Nome de usuaria", - "@Username": { - "type": "text", - "placeholders": {} - }, "userIsTyping": "{username} está escribindo...", "@userIsTyping": { "type": "text", @@ -1441,6 +1538,18 @@ "username": {} } }, + "userLeftTheChat": "{username} deixou a conversa", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "Nome de usuaria", + "@username": { + "type": "text", + "placeholders": {} + }, "userSentUnknownEvent": "{username} enviou un evento {type]", "@userSentUnknownEvent": { "type": "text", @@ -1449,8 +1558,13 @@ "type": {} } }, - "Verify": "Verificar", - "@Verify": { + "verifiedSession": "Sesión verificada correctamente!", + "@verifiedSession": { + "type": "text", + "placeholders": {} + }, + "verify": "Verificar", + "@verify": { "type": "text", "placeholders": {} }, @@ -1459,11 +1573,6 @@ "type": "text", "placeholders": {} }, - "verifiedSession": "Sesión verificada correctamente!", - "@verifiedSession": { - "type": "text", - "placeholders": {} - }, "verifyStart": "Comezar verificación", "@verifyStart": { "type": "text", @@ -1479,33 +1588,33 @@ "type": "text", "placeholders": {} }, - "Verify User": "Verificar usuaria", - "@Verify User": { + "verifyUser": "Verificar usuaria", + "@verifyUser": { "type": "text", "placeholders": {} }, - "Video call": "Chamada de vídeo", - "@Video call": { + "videoCall": "Chamada de vídeo", + "@videoCall": { "type": "text", "placeholders": {} }, - "Visible for all participants": "Visible para todas as participantes", - "@Visible for all participants": { + "visibilityOfTheChatHistory": "Visibilidade do historial da conversa", + "@visibilityOfTheChatHistory": { "type": "text", "placeholders": {} }, - "Visible for everyone": "Visible para todas", - "@Visible for everyone": { + "visibleForAllParticipants": "Visible para todas as participantes", + "@visibleForAllParticipants": { "type": "text", "placeholders": {} }, - "Visibility of the chat history": "Visibilidade do historial da conversa", - "@Visibility of the chat history": { + "visibleForEveryone": "Visible para todas", + "@visibleForEveryone": { "type": "text", "placeholders": {} }, - "Voice message": "Mensaxe de voz", - "@Voice message": { + "voiceMessage": "Mensaxe de voz", + "@voiceMessage": { "type": "text", "placeholders": {} }, @@ -1524,68 +1633,73 @@ "type": "text", "placeholders": {} }, - "Wallpaper": "Fondo da conversa", - "@Wallpaper": { + "wallpaper": "Fondo da conversa", + "@wallpaper": { "type": "text", "placeholders": {} }, - "End to end encryption is currently in Beta! Use at your own risk!": "O cifrado extremo-a-extremo está en Beta! Úsao baixo a túa responsabilidade!", - "@End to end encryption is currently in Beta! Use at your own risk!": { + "warning": "Aviso!", + "@warning": { "type": "text", "placeholders": {} }, - "Wednesday": "Mércores", - "@Wednesday": { + "warningEncryptionInBeta": "O cifrado extremo-a-extremo está en Beta! Úsao baixo a túa responsabilidade!", + "@warningEncryptionInBeta": { "type": "text", "placeholders": {} }, - "Welcome to the cutest instant messenger in the matrix network.": "Benvida a mensaxería instantánea más cuquiña da rede matrix.", - "@Welcome to the cutest instant messenger in the matrix network.": { + "wednesday": "Mércores", + "@wednesday": { "type": "text", "placeholders": {} }, - "Who is allowed to join this group": "Quen se pode unir a este grupo", - "@Who is allowed to join this group": { + "welcomeText": "Benvida á mensaxería instantánea más cuquiña da rede matrix.", + "@welcomeText": { "type": "text", "placeholders": {} }, - "Write a message...": "Escribe unha mensaxe...", - "@Write a message...": { + "whoIsAllowedToJoinThisGroup": "Quen se pode unir a este grupo", + "@whoIsAllowedToJoinThisGroup": { "type": "text", "placeholders": {} }, - "Yes": "Si", - "@Yes": { + "writeAMessage": "Escribe unha mensaxe...", + "@writeAMessage": { "type": "text", "placeholders": {} }, - "You": "Ti", - "@You": { + "yes": "Si", + "@yes": { "type": "text", "placeholders": {} }, - "You are invited to this chat": "Estás convidada a este chat", - "@You are invited to this chat": { + "you": "Ti", + "@you": { "type": "text", "placeholders": {} }, - "You are no longer participating in this chat": "Xa non participas desta conversa", - "@You are no longer participating in this chat": { + "youAreInvitedToThisChat": "Estás convidada a este chat", + "@youAreInvitedToThisChat": { "type": "text", "placeholders": {} }, - "You cannot invite yourself": "Non podes autoconvidarte", - "@You cannot invite yourself": { + "youAreNoLongerParticipatingInThisChat": "Xa non participas desta conversa", + "@youAreNoLongerParticipatingInThisChat": { "type": "text", "placeholders": {} }, - "You have been banned from this chat": "Foches vetada nesta conversa", - "@You have been banned from this chat": { + "youCannotInviteYourself": "Non podes autoconvidarte", + "@youCannotInviteYourself": { "type": "text", "placeholders": {} }, - "Your own username": "O teu nome de usuaria", - "@Your own username": { + "youHaveBeenBannedFromThisChat": "Foches vetada nesta conversa", + "@youHaveBeenBannedFromThisChat": { + "type": "text", + "placeholders": {} + }, + "yourOwnUsername": "O teu nome de usuaria", + "@yourOwnUsername": { "type": "text", "placeholders": {} } diff --git a/lib/l10n/intl_hr.arb b/lib/l10n/intl_hr.arb index e0f030d..f9121cc 100644 --- a/lib/l10n/intl_hr.arb +++ b/lib/l10n/intl_hr.arb @@ -1,12 +1,13 @@ { - "@@last_modified": "2020-06-25T16:02:16.297192", - "About": "Informacije", - "@About": { + "@@locale": "hr", + "@@last_modified": "2020-09-23 11:46:02.375244", + "about": "Informacije", + "@about": { "type": "text", "placeholders": {} }, - "Accept": "Prihvati", - "@Accept": { + "accept": "Prihvati", + "@accept": { "type": "text", "placeholders": {} }, @@ -17,13 +18,13 @@ "username": {} } }, - "Account": "Račun", - "@Account": { + "account": "Račun", + "@account": { "type": "text", "placeholders": {} }, - "Account informations": "Podaci računa", - "@Account informations": { + "accountInformation": "Podaci računa", + "@accountInformation": { "type": "text", "placeholders": {} }, @@ -34,13 +35,13 @@ "username": {} } }, - "Add a group description": "Dodaj opis grupe", - "@Add a group description": { + "addGroupDescription": "Dodaj opis grupe", + "@addGroupDescription": { "type": "text", "placeholders": {} }, - "Admin": "Administrator", - "@Admin": { + "admin": "Administrator", + "@admin": { "type": "text", "placeholders": {} }, @@ -49,33 +50,40 @@ "type": "text", "placeholders": {} }, - "Already have an account?": "Već imaš račun?", - "@Already have an account?": { + "alreadyHaveAnAccount": "Već imaš račun?", + "@alreadyHaveAnAccount": { "type": "text", "placeholders": {} }, - "Anyone can join": "Svatko se može pridružiti", - "@Anyone can join": { + "answeredTheCall": "{senderName} je odgovorio/la na poziv", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "Svatko se može pridružiti", + "@anyoneCanJoin": { "type": "text", "placeholders": {} }, - "Archive": "Arhiva", - "@Archive": { + "archive": "Arhiva", + "@archive": { "type": "text", "placeholders": {} }, - "Archived Room": "Arhivirana soba", - "@Archived Room": { + "archivedRoom": "Arhivirana soba", + "@archivedRoom": { "type": "text", "placeholders": {} }, - "Are guest users allowed to join": "Smiju li se gosti pridružiti grupi", - "@Are guest users allowed to join": { + "areGuestsAllowedToJoin": "Smiju li se gosti pridružiti grupi", + "@areGuestsAllowedToJoin": { "type": "text", "placeholders": {} }, - "Are you sure?": "Sigurno?", - "@Are you sure?": { + "areYouSure": "Sigurno?", + "@areYouSure": { "type": "text", "placeholders": {} }, @@ -101,23 +109,23 @@ "username": {} } }, - "Authentication": "Autentifikacija", - "@Authentication": { + "authentication": "Autentifikacija", + "@authentication": { "type": "text", "placeholders": {} }, - "Avatar has been changed": "Avatar je promijenjen", - "@Avatar has been changed": { + "avatarHasBeenChanged": "Avatar je promijenjen", + "@avatarHasBeenChanged": { "type": "text", "placeholders": {} }, - "Ban from chat": "Isključi iz chata", - "@Ban from chat": { + "banFromChat": "Isključi iz chata", + "@banFromChat": { "type": "text", "placeholders": {} }, - "Banned": "Isključen", - "@Banned": { + "banned": "Isključen", + "@banned": { "type": "text", "placeholders": {} }, @@ -129,8 +137,8 @@ "targetName": {} } }, - "Block Device": "Blokiraj uređaj", - "@Block Device": { + "blockDevice": "Blokiraj uređaj", + "@blockDevice": { "type": "text", "placeholders": {} }, @@ -146,8 +154,8 @@ "type": "text", "placeholders": {} }, - "Cancel": "Odustani", - "@Cancel": { + "cancel": "Odustani", + "@cancel": { "type": "text", "placeholders": {} }, @@ -158,14 +166,6 @@ "username": {} } }, - "changedTheChatNameTo": "{username} je promijenio/la ime chata u: „{chatname}”", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, "changedTheChatDescriptionTo": "{username} je promijenio/la opis chata u: „{description}”", "@changedTheChatDescriptionTo": { "type": "text", @@ -174,6 +174,14 @@ "description": {} } }, + "changedTheChatNameTo": "{username} je promijenio/la ime chata u: „{chatname}”", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, "changedTheChatPermissions": "{username} je promijenio/la dozvole chata", "@changedTheChatPermissions": { "type": "text", @@ -189,11 +197,6 @@ "displayname": {} } }, - "Change the homeserver": "Promijeni domaćeg poslužitelja", - "@Change the homeserver": { - "type": "text", - "placeholders": {} - }, "changedTheGuestAccessRules": "{username} je promijenio/la pravila pristupa za goste", "@changedTheGuestAccessRules": { "type": "text", @@ -239,7 +242,7 @@ "joinRules": {} } }, - "changedTheProfileAvatar": "{username} je promijenio/la avatar profila", + "changedTheProfileAvatar": "{username} je promijenio/la svoj avatar", "@changedTheProfileAvatar": { "type": "text", "placeholders": { @@ -260,53 +263,68 @@ "username": {} } }, - "Changelog": "Zapis promjena", - "@Changelog": { + "changelog": "Zapis promjena", + "@changelog": { "type": "text", "placeholders": {} }, - "Change the name of the group": "Promijeni ime grupe", - "@Change the name of the group": { + "changesHaveBeenSaved": "Promjene nisu spremljene", + "@changesHaveBeenSaved": { "type": "text", "placeholders": {} }, - "Change wallpaper": "Promijeni sliku pozadine", - "@Change wallpaper": { + "changeTheHomeserver": "Promijeni domaćeg poslužitelja", + "@changeTheHomeserver": { "type": "text", "placeholders": {} }, - "Change the server": "Promijeni poslužitelja", - "@Change the server": { + "changeTheme": "Promijeni svoj stil", + "@changeTheme": { "type": "text", "placeholders": {} }, - "The encryption has been corrupted": "Šifriranje je oštećeno", - "@The encryption has been corrupted": { + "changeTheNameOfTheGroup": "Promijeni ime grupe", + "@changeTheNameOfTheGroup": { "type": "text", "placeholders": {} }, - "Chat": "Chat", - "@Chat": { + "changeTheServer": "Promijeni poslužitelja", + "@changeTheServer": { "type": "text", "placeholders": {} }, - "Chat details": "Detalji chata", - "@Chat details": { + "changeWallpaper": "Promijeni sliku pozadine", + "@changeWallpaper": { "type": "text", "placeholders": {} }, - "Choose a strong password": "Odaberi snažnu lozinku", - "@Choose a strong password": { + "channelCorruptedDecryptError": "Šifriranje je oštećeno", + "@channelCorruptedDecryptError": { "type": "text", "placeholders": {} }, - "Choose a username": "Odaberi korisničko ime", - "@Choose a username": { + "chat": "Chat", + "@chat": { "type": "text", "placeholders": {} }, - "Close": "Zatvori", - "@Close": { + "chatDetails": "Detalji chata", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "chooseAStrongPassword": "Odaberi snažnu lozinku", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "chooseAUsername": "Odaberi korisničko ime", + "@chooseAUsername": { + "type": "text", + "placeholders": {} + }, + "close": "Zatvori", + "@close": { "type": "text", "placeholders": {} }, @@ -320,38 +338,38 @@ "type": "text", "placeholders": {} }, - "Confirm": "Potvrdi", - "@Confirm": { + "confirm": "Potvrdi", + "@confirm": { "type": "text", "placeholders": {} }, - "Connect": "Spoji", - "@Connect": { + "connect": "Spoji", + "@connect": { "type": "text", "placeholders": {} }, - "Connection attempt failed": "Neuspio pokušaj povezivanja", - "@Connection attempt failed": { + "connectionAttemptFailed": "Neuspio pokušaj povezivanja", + "@connectionAttemptFailed": { "type": "text", "placeholders": {} }, - "Contact has been invited to the group": "Kontakt je pozvan u grupu", - "@Contact has been invited to the group": { + "contactHasBeenInvitedToTheGroup": "Kontakt je pozvan u grupu", + "@contactHasBeenInvitedToTheGroup": { "type": "text", "placeholders": {} }, - "Content viewer": "Prikazivač sadržaja", - "@Content viewer": { + "contentViewer": "Prikazivač sadržaja", + "@contentViewer": { "type": "text", "placeholders": {} }, - "Copied to clipboard": "Kopirano u međuspremnik", - "@Copied to clipboard": { + "copiedToClipboard": "Kopirano u međuspremnik", + "@copiedToClipboard": { "type": "text", "placeholders": {} }, - "Copy": "Kopiraj", - "@Copy": { + "copy": "Kopiraj", + "@copy": { "type": "text", "placeholders": {} }, @@ -362,13 +380,13 @@ "error": {} } }, - "Could not set avatar": "Neuspjelo postavljanje avatara", - "@Could not set avatar": { + "couldNotSetAvatar": "Neuspjelo postavljanje avatara", + "@couldNotSetAvatar": { "type": "text", "placeholders": {} }, - "Could not set displayname": "Neuspjelo postavljanje prikaznog imena", - "@Could not set displayname": { + "couldNotSetDisplayname": "Neuspjelo postavljanje prikaznog imena", + "@couldNotSetDisplayname": { "type": "text", "placeholders": {} }, @@ -379,13 +397,13 @@ "count": {} } }, - "Create": "Stvori", - "@Create": { + "create": "Stvori", + "@create": { "type": "text", "placeholders": {} }, - "Create account now": "Stvori račun sada", - "@Create account now": { + "createAccountNow": "Stvori račun sada", + "@createAccountNow": { "type": "text", "placeholders": {} }, @@ -396,8 +414,8 @@ "username": {} } }, - "Create new group": "Stvori novu grupu", - "@Create new group": { + "createNewGroup": "Stvori novu grupu", + "@createNewGroup": { "type": "text", "placeholders": {} }, @@ -411,8 +429,13 @@ "type": "text", "placeholders": {} }, - "Currently active": "Trenutačno aktivni", - "@Currently active": { + "currentlyActive": "Trenutačno aktivni", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "Tamna", + "@darkTheme": { "type": "text", "placeholders": {} }, @@ -441,63 +464,68 @@ "day": {} } }, - "Delete": "Izbriži", - "@Delete": { + "deactivateAccountWarning": "Ovo će nepovratno deaktivirati tvoj korisnički račun. Stvarno to želiš uraditi?", + "@deactivateAccountWarning": { "type": "text", "placeholders": {} }, - "Delete message": "Izbriži poruku", - "@Delete message": { + "delete": "Izbriži", + "@delete": { "type": "text", "placeholders": {} }, - "Deny": "Odbij", - "@Deny": { + "deleteAccount": "Izbriši račun", + "@deleteAccount": { "type": "text", "placeholders": {} }, - "Device": "Uređaj", - "@Device": { + "deleteMessage": "Izbriži poruku", + "@deleteMessage": { "type": "text", "placeholders": {} }, - "Devices": "Uređaji", - "@Devices": { + "deny": "Odbij", + "@deny": { "type": "text", "placeholders": {} }, - "Discard picture": "Odbaci sliku", - "@Discard picture": { + "device": "Uređaj", + "@device": { "type": "text", "placeholders": {} }, - "Displayname has been changed": "Prikazno ime je promijenjeno", - "@Displayname has been changed": { + "devices": "Uređaji", + "@devices": { "type": "text", "placeholders": {} }, - "Download file": "Preuzmi datoteku", - "@Download file": { + "discardPicture": "Odbaci sliku", + "@discardPicture": { "type": "text", "placeholders": {} }, - "Edit displayname": "Uredi prikazano ime", - "@Edit displayname": { + "displaynameHasBeenChanged": "Prikazno ime je promijenjeno", + "@displaynameHasBeenChanged": { "type": "text", "placeholders": {} }, - "Emote Settings": "Postavke emojija", - "@Emote Settings": { + "donate": "Doniraj", + "@donate": { "type": "text", "placeholders": {} }, - "Emote shortcode": "Kratica emota", - "@Emote shortcode": { + "downloadFile": "Preuzmi datoteku", + "@downloadFile": { "type": "text", "placeholders": {} }, - "emoteWarnNeedToPick": "Moraš odabrati jednu kraticu emota i sliku!", - "@emoteWarnNeedToPick": { + "editDisplayname": "Uredi prikazano ime", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "editJitsiInstance": "Uredi Jitsi primjerak", + "@editJitsiInstance": { "type": "text", "placeholders": {} }, @@ -511,103 +539,125 @@ "type": "text", "placeholders": {} }, - "Empty chat": "Prazan chat", - "@Empty chat": { + "emoteSettings": "Postavke emojija", + "@emoteSettings": { "type": "text", "placeholders": {} }, - "You won't be able to disable the encryption anymore. Are you sure?": "Više nećeš moći deaktivirati šifriranje. Sigurno?", - "@You won't be able to disable the encryption anymore. Are you sure?": { + "emoteShortcode": "Kratica emota", + "@emoteShortcode": { "type": "text", "placeholders": {} }, - "Encryption": "Šifriranje", - "@Encryption": { + "emoteWarnNeedToPick": "Moraš odabrati jednu kraticu emota i sliku!", + "@emoteWarnNeedToPick": { "type": "text", "placeholders": {} }, - "Encryption algorithm": "Algoritam šifriranja", - "@Encryption algorithm": { + "emptyChat": "Prazan chat", + "@emptyChat": { "type": "text", "placeholders": {} }, - "Encryption is not enabled": "Šifriranje nije aktivirano", - "@Encryption is not enabled": { + "enableEncryptionWarning": "Više nećeš moći deaktivirati šifriranje. Sigurno?", + "@enableEncryptionWarning": { "type": "text", "placeholders": {} }, - "End-to-end encryption settings": "Postavke obostranog šifriranja", - "@End-to-end encryption settings": { + "encryption": "Šifriranje", + "@encryption": { "type": "text", "placeholders": {} }, - "Enter a group name": "Upiši ime grupe", - "@Enter a group name": { + "encryptionAlgorithm": "Algoritam šifriranja", + "@encryptionAlgorithm": { "type": "text", "placeholders": {} }, - "Enter a username": "Upiši korisničko ime", - "@Enter a username": { + "encryptionNotEnabled": "Šifriranje nije aktivirano", + "@encryptionNotEnabled": { "type": "text", "placeholders": {} }, - "Enter your homeserver": "Upiši svog domaćeg poslužitelja", - "@Enter your homeserver": { + "end2endEncryptionSettings": "Postavke obostranog šifriranja", + "@end2endEncryptionSettings": { "type": "text", "placeholders": {} }, - "File name": "Ime datoteke", - "@File name": { + "endedTheCall": "{senderName} je završio/la poziv", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterAGroupName": "Upiši ime grupe", + "@enterAGroupName": { "type": "text", "placeholders": {} }, - "File size": "Veličina datoteke", - "@File size": { + "enterAUsername": "Upiši korisničko ime", + "@enterAUsername": { "type": "text", "placeholders": {} }, - "FluffyChat": "FluffyChat", - "@FluffyChat": { + "enterYourHomeserver": "Upiši svog domaćeg poslužitelja", + "@enterYourHomeserver": { "type": "text", "placeholders": {} }, - "Forward": "Proslijedi", - "@Forward": { + "fileName": "Ime datoteke", + "@fileName": { "type": "text", "placeholders": {} }, - "Friday": "Petak", - "@Friday": { + "fileSize": "Veličina datoteke", + "@fileSize": { "type": "text", "placeholders": {} }, - "From joining": "Od pridruživanja", - "@From joining": { + "fluffychat": "FluffyChat", + "@fluffychat": { "type": "text", "placeholders": {} }, - "From the invitation": "Od poziva", - "@From the invitation": { + "forward": "Proslijedi", + "@forward": { "type": "text", "placeholders": {} }, - "Group": "Grupiraj", - "@Group": { + "friday": "Petak", + "@friday": { "type": "text", "placeholders": {} }, - "Group description": "Opis grupe", - "@Group description": { + "fromJoining": "Od pridruživanja", + "@fromJoining": { "type": "text", "placeholders": {} }, - "Group description has been changed": "Opis grupe je promijenjen", - "@Group description has been changed": { + "fromTheInvitation": "Od poziva", + "@fromTheInvitation": { "type": "text", "placeholders": {} }, - "Group is public": "Grupa je javna", - "@Group is public": { + "group": "Grupiraj", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupDescription": "Opis grupe", + "@groupDescription": { + "type": "text", + "placeholders": {} + }, + "groupDescriptionHasBeenChanged": "Opis grupe je promijenjen", + "@groupDescriptionHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "Grupa je javna", + "@groupIsPublic": { "type": "text", "placeholders": {} }, @@ -618,13 +668,13 @@ "displayname": {} } }, - "Guests are forbidden": "Gosti su zabranjeni", - "@Guests are forbidden": { + "guestsAreForbidden": "Gosti su zabranjeni", + "@guestsAreForbidden": { "type": "text", "placeholders": {} }, - "Guests can join": "Gosti se mogu pridružiti", - "@Guests can join": { + "guestsCanJoin": "Gosti se mogu pridružiti", + "@guestsCanJoin": { "type": "text", "placeholders": {} }, @@ -636,23 +686,38 @@ "targetName": {} } }, - "Help": "Pomoć", - "@Help": { + "help": "Pomoć", + "@help": { "type": "text", "placeholders": {} }, - "Homeserver is not compatible": "Domaći poslužitelj nije kompatibilan", - "@Homeserver is not compatible": { + "homeserverIsNotCompatible": "Domaći poslužitelj nije kompatibilan", + "@homeserverIsNotCompatible": { "type": "text", "placeholders": {} }, - "ID": "ID", - "@ID": { + "id": "ID", + "@id": { "type": "text", "placeholders": {} }, - "Identity": "Identitet", - "@Identity": { + "identity": "Identitet", + "@identity": { + "type": "text", + "placeholders": {} + }, + "ignoredUsers": "Zanemareni korisnici", + "@ignoredUsers": { + "type": "text", + "placeholders": {} + }, + "ignoreListDescription": "Možeš zanemariti korisnike koji te ometaju. Nećeš moći primiti nijednu poruku ili pozivnice u sobe od korisnika koji se nalaze u tvom osobnom popisu zanemarivanja.", + "@ignoreListDescription": { + "type": "text", + "placeholders": {} + }, + "ignoreUsername": "Zanemari korisničko ime", + "@ignoreUsername": { "type": "text", "placeholders": {} }, @@ -661,8 +726,8 @@ "type": "text", "placeholders": {} }, - "Invite contact": "Pozovi kontakt", - "@Invite contact": { + "inviteContact": "Pozovi kontakt", + "@inviteContact": { "type": "text", "placeholders": {} }, @@ -673,19 +738,11 @@ "groupName": {} } }, - "Invited": "Pozvan/a", - "@Invited": { + "invited": "Pozvan/a", + "@invited": { "type": "text", "placeholders": {} }, - "inviteText": "{username} te je pozvao/la u FluffyChat. \n1. Instaliraj FluffyChat: http://fluffy.chat \n2. Registriraj ili prijavi se \n3. Otvori poveznicu poziva: {link}", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, "invitedUser": "{username} je pozvao/la {targetName}", "@invitedUser": { "type": "text", @@ -694,23 +751,26 @@ "targetName": {} } }, - "Invited users only": "Samo pozvani korisnici", - "@Invited users only": { + "invitedUsersOnly": "Samo pozvani korisnici", + "@invitedUsersOnly": { "type": "text", "placeholders": {} }, + "inviteText": "{username} te je pozvao/la u FluffyChat. \n1. Instaliraj FluffyChat: https://fluffychat.im \n2. Registriraj ili prijavi se \n3. Otvori poveznicu poziva: {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, "isDeviceKeyCorrect": "Je li sljedeći ključ uređaja ispravan?", "@isDeviceKeyCorrect": { "type": "text", "placeholders": {} }, - "is typing...": "piše …", - "@is typing...": { - "type": "text", - "placeholders": {} - }, - "Edit Jitsi instance": "Uredi Jitsi primjerak", - "@Edit Jitsi instance": { + "isTyping": "piše …", + "@isTyping": { "type": "text", "placeholders": {} }, @@ -721,6 +781,11 @@ "username": {} } }, + "joinRoom": "Pridruži se sobi", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, "keysCached": "Ključevi su spremljeni u predmemoriji", "@keysCached": { "type": "text", @@ -747,33 +812,11 @@ "targetName": {} } }, - "Kick from chat": "Izbaci iz chata", - "@Kick from chat": { + "kickFromChat": "Izbaci iz chata", + "@kickFromChat": { "type": "text", "placeholders": {} }, - "Leave": "Napusti", - "@Leave": { - "type": "text", - "placeholders": {} - }, - "Left the chat": "Napustio/la je chat", - "@Left the chat": { - "type": "text", - "placeholders": {} - }, - "Logout": "Odjava", - "@Logout": { - "type": "text", - "placeholders": {} - }, - "userLeftTheChat": "{username} je napustio/la chat", - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, "lastActiveAgo": "Zadnja aktivnost: {localizedTimeShort}", "@lastActiveAgo": { "type": "text", @@ -781,23 +824,33 @@ "localizedTimeShort": {} } }, - "Last seen IP": "Zadnji viđeni IP", - "@Last seen IP": { + "lastSeenIp": "Zadnji viđeni IP", + "@lastSeenIp": { "type": "text", "placeholders": {} }, - "License": "Licenca", - "@License": { + "lastSeenLongTimeAgo": "Viđeno prije dugo vremena", + "@lastSeenLongTimeAgo": { "type": "text", "placeholders": {} }, - "Loading... Please wait": "Učitava se … Pričekaj", - "@Loading... Please wait": { + "leave": "Napusti", + "@leave": { "type": "text", "placeholders": {} }, - "Load more...": "Učitaj više …", - "@Load more...": { + "leftTheChat": "Napustio/la je chat", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "Licenca", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "Svjetla", + "@lightTheme": { "type": "text", "placeholders": {} }, @@ -808,8 +861,18 @@ "count": {} } }, - "Login": "Prijava", - "@Login": { + "loadingPleaseWait": "Učitava se … Pričekaj", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "Učitaj više …", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "login": "Prijava", + "@login": { "type": "text", "placeholders": {} }, @@ -820,53 +883,58 @@ "homeserver": {} } }, - "Make a moderator": "Postavi kao voditelja", - "@Make a moderator": { + "logout": "Odjava", + "@logout": { "type": "text", "placeholders": {} }, - "Make an admin": "Postavi kao administratora", - "@Make an admin": { + "makeAModerator": "Postavi kao voditelja", + "@makeAModerator": { "type": "text", "placeholders": {} }, - "Make sure the identifier is valid": "Provjeri je li identifikator ispravan", - "@Make sure the identifier is valid": { + "makeAnAdmin": "Postavi kao administratora", + "@makeAnAdmin": { "type": "text", "placeholders": {} }, - "Message will be removed for all participants": "Poruke će se ukloniti za sve sudionike", - "@Message will be removed for all participants": { + "makeSureTheIdentifierIsValid": "Provjeri je li identifikator ispravan", + "@makeSureTheIdentifierIsValid": { "type": "text", "placeholders": {} }, - "Moderator": "Voditelj", - "@Moderator": { + "messageWillBeRemovedWarning": "Poruke će se ukloniti za sve sudionike", + "@messageWillBeRemovedWarning": { "type": "text", "placeholders": {} }, - "Monday": "Ponedjeljak", - "@Monday": { + "moderator": "Voditelj", + "@moderator": { "type": "text", "placeholders": {} }, - "Mute chat": "Isključi zvuk chata", - "@Mute chat": { + "monday": "Ponedjeljak", + "@monday": { "type": "text", "placeholders": {} }, - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": "Za sada trebaš Pantalaimon za obostrano šifriranje.", - "@Please be aware that you need Pantalaimon to use end-to-end encryption for now.": { + "muteChat": "Isključi zvuk chata", + "@muteChat": { "type": "text", "placeholders": {} }, - "New message in FluffyChat": "Nova poruka u FluffyChatu", - "@New message in FluffyChat": { + "needPantalaimonWarning": "Za sada trebaš Pantalaimon za obostrano šifriranje.", + "@needPantalaimonWarning": { "type": "text", "placeholders": {} }, - "New private chat": "Novi privatni chat", - "@New private chat": { + "newMessageInFluffyChat": "Nova poruka u FluffyChatu", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "newPrivateChat": "Novi privatni chat", + "@newPrivateChat": { "type": "text", "placeholders": {} }, @@ -875,43 +943,48 @@ "type": "text", "placeholders": {} }, - "noCrossSignBootstrap": "Fluffychat trenutačno ne podržava unakrsno potpisivanje. Aktiviraj je pomoću Element-a.", + "no": "Ne", + "@no": { + "type": "text", + "placeholders": {} + }, + "noCrossSignBootstrap": "Fluffychat trenutačno ne podržava unakrsno potpisivanje. Aktiviraj je u Riot.", "@noCrossSignBootstrap": { "type": "text", "placeholders": {} }, - "noMegolmBootstrap": "Fluffychat trenutačno ne podržava online sigurnosnu kopiju ključeva. Aktiviraj je pomoću Element-a.", + "noEmotesFound": "Nema emota. 😕", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "Čini se da na mobitelu nemaš google usluge. To je dobra odluka za tvoju privatnost! Za primanje push obavijesti u FluffyChatu preporučujemo upotrebu microG-a: https://microg.org/", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "noMegolmBootstrap": "Fluffychat trenutačno ne podržava aktiviranje online sigurnosnu kopiju ključeva. Aktiviraj je u Riot.", "@noMegolmBootstrap": { "type": "text", "placeholders": {} }, - "It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": "Čini se da na mobitelu nemaš google usluge. To je dobra odluka za tvoju privatnost! Za primanje push obavijesti u FluffyChatu preporučujemo upotrebu microG-a: https://microg.org/", - "@It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": { + "none": "Ništa", + "@none": { "type": "text", "placeholders": {} }, - "None": "Ništa", - "@None": { + "noPermission": "Bez dozvole", + "@noPermission": { "type": "text", "placeholders": {} }, - "No emotes found. 😕": "Nema emota. 😕", - "@No emotes found. 😕": { + "noRoomsFound": "Nema soba …", + "@noRoomsFound": { "type": "text", "placeholders": {} }, - "No permission": "Bez dozvole", - "@No permission": { - "type": "text", - "placeholders": {} - }, - "No rooms found...": "Nema pronađenih soba …", - "@No rooms found...": { - "type": "text", - "placeholders": {} - }, - "Not supported in web": "Nije podržano u internetu", - "@Not supported in web": { + "notSupportedInWeb": "Nije podržano u internetu", + "@notSupportedInWeb": { "type": "text", "placeholders": {} }, @@ -937,28 +1010,28 @@ "type": "text", "placeholders": {} }, - "Oops something went wrong...": "Ups, došlo je do neke greške …", - "@Oops something went wrong...": { + "oopsSomethingWentWrong": "Ups, došlo je do neke greške …", + "@oopsSomethingWentWrong": { "type": "text", "placeholders": {} }, - "Open app to read messages": "Za čitanje poruka, otvori program", - "@Open app to read messages": { + "openAppToReadMessages": "Za čitanje poruka, otvori program", + "@openAppToReadMessages": { "type": "text", "placeholders": {} }, - "Open camera": "Otvori kameru", - "@Open camera": { + "openCamera": "Otvori kameru", + "@openCamera": { "type": "text", "placeholders": {} }, - "(Optional) Group name": "(Opcionalno) Ime grupe", - "@(Optional) Group name": { + "optionalGroupName": "(Opcionalno) Ime grupe", + "@optionalGroupName": { "type": "text", "placeholders": {} }, - "Participating user devices": "Sudjelujući korisnički uređaji", - "@Participating user devices": { + "participatingUserDevices": "Sudjelujući korisnički uređaji", + "@participatingUserDevices": { "type": "text", "placeholders": {} }, @@ -967,13 +1040,23 @@ "type": "text", "placeholders": {} }, - "Password": "Lozinka", - "@Password": { + "password": "Lozinka", + "@password": { "type": "text", "placeholders": {} }, - "Pick image": "Odaberi sliku", - "@Pick image": { + "passwordHasBeenChanged": "Lozinka je promijenjena", + "@passwordHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "pickImage": "Odaberi sliku", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "pin": "Prikvači", + "@pin": { "type": "text", "placeholders": {} }, @@ -984,48 +1067,33 @@ "fileName": {} } }, - "Please choose a username": "Odaberi korisničko ime", - "@Please choose a username": { + "pleaseChooseAUsername": "Odaberi korisničko ime", + "@pleaseChooseAUsername": { "type": "text", "placeholders": {} }, - "Please enter a matrix identifier": "Upiši identifikator matrice", - "@Please enter a matrix identifier": { + "pleaseEnterAMatrixIdentifier": "Upiši identifikator matrice", + "@pleaseEnterAMatrixIdentifier": { "type": "text", "placeholders": {} }, - "Please enter your password": "Upiši svoju lozinku", - "@Please enter your password": { + "pleaseEnterYourPassword": "Upiši svoju lozinku", + "@pleaseEnterYourPassword": { "type": "text", "placeholders": {} }, - "Please enter your username": "Upiši svoje korisničko ime", - "@Please enter your username": { + "pleaseEnterYourUsername": "Upiši svoje korisničko ime", + "@pleaseEnterYourUsername": { "type": "text", "placeholders": {} }, - "Public Rooms": "Javne sobe", - "@Public Rooms": { + "publicRooms": "Javne sobe", + "@publicRooms": { "type": "text", "placeholders": {} }, - "Reject": "Odbij", - "@Reject": { - "type": "text", - "placeholders": {} - }, - "Rejoin": "Ponovo se pridruži", - "@Rejoin": { - "type": "text", - "placeholders": {} - }, - "Render rich message content": "Prikaži formatirani sadržaj poruke", - "@Render rich message content": { - "type": "text", - "placeholders": {} - }, - "Recording": "Snimanje", - "@Recording": { + "recording": "Snimanje", + "@recording": { "type": "text", "placeholders": {} }, @@ -1036,6 +1104,11 @@ "username": {} } }, + "reject": "Odbij", + "@reject": { + "type": "text", + "placeholders": {} + }, "rejectedTheInvitation": "{username} je odbio/la poziv", "@rejectedTheInvitation": { "type": "text", @@ -1043,8 +1116,18 @@ "username": {} } }, - "Remove all other devices": "Ukloni sve druge uređaje", - "@Remove all other devices": { + "rejoin": "Ponovo se pridruži", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "Ukloni", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "Ukloni sve druge uređaje", + "@removeAllOtherDevices": { "type": "text", "placeholders": {} }, @@ -1055,75 +1138,58 @@ "username": {} } }, - "Remove device": "Ukloni uređaj", - "@Remove device": { + "removeDevice": "Ukloni uređaj", + "@removeDevice": { "type": "text", "placeholders": {} }, - "Remove exile": "Ukloni izbacivanje", - "@Remove exile": { + "removeExile": "Ukloni izbacivanje", + "@removeExile": { "type": "text", "placeholders": {} }, - "Revoke all permissions": "Opozovi sve dozvole", - "@Revoke all permissions": { + "removeMessage": "Ukloni poruku", + "@removeMessage": { "type": "text", "placeholders": {} }, - "Remove": "Ukloni", - "@Remove": { + "renderRichContent": "Prikaži formatirani sadržaj poruke", + "@renderRichContent": { "type": "text", "placeholders": {} }, - "Remove message": "Ukloni poruku", - "@Remove message": { + "reply": "Odgovori", + "@reply": { "type": "text", "placeholders": {} }, - "Reply": "Odgovori", - "@Reply": { + "requestPermission": "Zatraži dozvolu", + "@requestPermission": { "type": "text", "placeholders": {} }, - "Request permission": "Zatraži dozvolu", - "@Request permission": { + "requestToReadOlderMessages": "Zahtjev za čitanje starijih poruka", + "@requestToReadOlderMessages": { "type": "text", "placeholders": {} }, - "Request to read older messages": "Zahtjev za čitanje starijih poruka", - "@Request to read older messages": { + "revokeAllPermissions": "Opozovi sve dozvole", + "@revokeAllPermissions": { "type": "text", "placeholders": {} }, - "Room has been upgraded": "Ova soba je nadograđena", - "@Room has been upgraded": { + "roomHasBeenUpgraded": "Soba je nadograđena", + "@roomHasBeenUpgraded": { "type": "text", "placeholders": {} }, - "Saturday": "Subota", - "@Saturday": { + "saturday": "Subota", + "@saturday": { "type": "text", "placeholders": {} }, - "Share": "Dijeli", - "@Share": { - "type": "text", - "placeholders": {} - }, - "sharedTheLocation": "{username} je dijelio/la mjesto", - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "Search for a chat": "Traži chat", - "@Search for a chat": { - "type": "text", - "placeholders": {} - }, - "Seen a long time ago": "Viđeno prije dugo vremena", - "@Seen a long time ago": { + "searchForAChat": "Traži chat", + "@searchForAChat": { "type": "text", "placeholders": {} }, @@ -1134,14 +1200,6 @@ "username": {} } }, - "seenByUserAndUser": "Viđeno od {username} i {username2}", - "@seenByUserAndUser": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, "seenByUserAndCountOthers": "Viđeno od {username} i još {count} korisnika", "@seenByUserAndCountOthers": { "type": "text", @@ -1150,23 +1208,51 @@ "count": {} } }, - "Send": "Pošalji", - "@Send": { + "seenByUserAndUser": "Viđeno od {username} i {username2}", + "@seenByUserAndUser": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "send": "Pošalji", + "@send": { "type": "text", "placeholders": {} }, - "Send a message": "Pošalji poruku", - "@Send a message": { + "sendAMessage": "Pošalji poruku", + "@sendAMessage": { "type": "text", "placeholders": {} }, - "Send file": "Pošalji datoteku", - "@Send file": { + "sendAudio": "Pošalji audio datoteku", + "@sendAudio": { "type": "text", "placeholders": {} }, - "Send image": "Pošalji sliku", - "@Send image": { + "sendBugReports": "Dozvoli slanje izvještaja o greškama sa sentry.io", + "@sendBugReports": { + "type": "text", + "placeholders": {} + }, + "sendFile": "Pošalji datoteku", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "Pošalji sliku", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "Pošalji original", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendVideo": "Pošalji video datoteku", + "@sendVideo": { "type": "text", "placeholders": {} }, @@ -1205,123 +1291,129 @@ "username": {} } }, + "sentCallInformations": "{senderName} je poslao/la podatke poziva", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "sentryInfo": "Podaci o tvojoj privatnosti: https://sentry.io/security/", + "@sentryInfo": { + "type": "text", + "placeholders": {} + }, "sessionVerified": "Sesija je provjerena", "@sessionVerified": { "type": "text", "placeholders": {} }, - "Set a profile picture": "Postavi sliku profila", - "@Set a profile picture": { + "setAProfilePicture": "Postavi sliku profila", + "@setAProfilePicture": { "type": "text", "placeholders": {} }, - "Set group description": "Postavi opis grupe", - "@Set group description": { + "setGroupDescription": "Postavi opis grupe", + "@setGroupDescription": { "type": "text", "placeholders": {} }, - "Set invitation link": "Pošalji poveznicu za pozivnicu", - "@Set invitation link": { + "setInvitationLink": "Pošalji poveznicu za pozivnicu", + "@setInvitationLink": { "type": "text", "placeholders": {} }, - "Set status": "Postavi stanje", - "@Set status": { + "setStatus": "Postavi stanje", + "@setStatus": { "type": "text", "placeholders": {} }, - "Settings": "Postavke", - "@Settings": { + "settings": "Postavke", + "@settings": { "type": "text", "placeholders": {} }, - "Sign up": "Prijavi se", - "@Sign up": { + "share": "Dijeli", + "@share": { "type": "text", "placeholders": {} }, - "Skip": "Preskoči", - "@Skip": { + "sharedTheLocation": "{username} je dijelio/la mjesto", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "signUp": "Prijavi se", + "@signUp": { "type": "text", "placeholders": {} }, - "Change your style": "Promijeni svoj stil", - "@Change your style": { + "skip": "Preskoči", + "@skip": { "type": "text", "placeholders": {} }, - "System": "Sustav", - "@System": { + "sourceCode": "Izvorni kȏd", + "@sourceCode": { "type": "text", "placeholders": {} }, - "How are you today?": "Kako si danas?", - "@How are you today?": { + "startedACall": "{senderName} ja započeo/la poziv", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "startYourFirstChat": "Počni svoj prvi chat :-)", + "@startYourFirstChat": { "type": "text", "placeholders": {} }, - "Light": "Svjetla", - "@Light": { + "statusExampleMessage": "Kako si danas?", + "@statusExampleMessage": { "type": "text", "placeholders": {} }, - "Dark": "Tamna", - "@Dark": { + "submit": "Pošalji", + "@submit": { "type": "text", "placeholders": {} }, - "Use Amoled compatible colors?": "Koristiti Amoled kompatibilne boje?", - "@Use Amoled compatible colors?": { + "sunday": "Nedjelja", + "@sunday": { "type": "text", "placeholders": {} }, - "Source code": "Izvorni kȏd", - "@Source code": { + "systemTheme": "Sustav", + "@systemTheme": { "type": "text", "placeholders": {} }, - "Start your first chat :-)": "Počni svoj prvi chat :-)", - "@Start your first chat :-)": { + "tapToShowMenu": "Dodirni za prikaz izbornika", + "@tapToShowMenu": { "type": "text", "placeholders": {} }, - "Submit": "Pošalji", - "@Submit": { + "theyDontMatch": "Ne poklapaju se", + "@theyDontMatch": { "type": "text", "placeholders": {} }, - "Sunday": "Nedjelja", - "@Sunday": { + "theyMatch": "Poklapaju se", + "@theyMatch": { "type": "text", "placeholders": {} }, - "Donate": "Doniraj", - "@Donate": { + "thisRoomHasBeenArchived": "Ova soba je arhivirana.", + "@thisRoomHasBeenArchived": { "type": "text", "placeholders": {} }, - "Tap to show menu": "Dodirni za prikaz izbornika", - "@Tap to show menu": { - "type": "text", - "placeholders": {} - }, - "They Don't Match": "Ne poklapaju se", - "@They Don't Match": { - "type": "text", - "placeholders": {} - }, - "They Match": "Poklapaju se", - "@They Match": { - "type": "text", - "placeholders": {} - }, - "This room has been archived.": "Ova soba je arhivirana.", - "@This room has been archived.": { - "type": "text", - "placeholders": {} - }, - "Thursday": "Četvrtak", - "@Thursday": { + "thursday": "Četvrtak", + "@thursday": { "type": "text", "placeholders": {} }, @@ -1341,13 +1433,13 @@ "type": "text", "placeholders": {} }, - "Try to send again": "Pokušaj ponovo poslati", - "@Try to send again": { + "tryToSendAgain": "Pokušaj ponovo poslati", + "@tryToSendAgain": { "type": "text", "placeholders": {} }, - "Tuesday": "Utorak", - "@Tuesday": { + "tuesday": "Utorak", + "@tuesday": { "type": "text", "placeholders": {} }, @@ -1359,28 +1451,18 @@ "targetName": {} } }, - "Unblock Device": "Deblokiraj uređaj", - "@Unblock Device": { + "unblockDevice": "Deblokiraj uređaj", + "@unblockDevice": { "type": "text", "placeholders": {} }, - "Unmute chat": "Uključi zvuk chata", - "@Unmute chat": { + "unknownDevice": "Nepoznat uređaj", + "@unknownDevice": { "type": "text", "placeholders": {} }, - "Unknown device": "Nepoznat uređaj", - "@Unknown device": { - "type": "text", - "placeholders": {} - }, - "Unknown encryption algorithm": "Nepoznat algoritam šifriranja", - "@Unknown encryption algorithm": { - "type": "text", - "placeholders": {} - }, - "unknownSessionVerify": "Nepoznata sesija, provjeri", - "@unknownSessionVerify": { + "unknownEncryptionAlgorithm": "Nepoznat algoritam šifriranja", + "@unknownEncryptionAlgorithm": { "type": "text", "placeholders": {} }, @@ -1391,6 +1473,21 @@ "type": {} } }, + "unknownSessionVerify": "Nepoznata sesija, provjeri", + "@unknownSessionVerify": { + "type": "text", + "placeholders": {} + }, + "unmuteChat": "Uključi zvuk chata", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unpin": "Otkvači", + "@unpin": { + "type": "text", + "placeholders": {} + }, "unreadChats": "{unreadCount} nepročitana chata", "@unreadChats": { "type": "text", @@ -1413,6 +1510,11 @@ "unreadChats": {} } }, + "useAmoledTheme": "Koristiti Amoled kompatibilne boje?", + "@useAmoledTheme": { + "type": "text", + "placeholders": {} + }, "userAndOthersAreTyping": "{username} i još {count} korisnika pišu …", "@userAndOthersAreTyping": { "type": "text", @@ -1429,11 +1531,6 @@ "username2": {} } }, - "Username": "Korisničko ime", - "@Username": { - "type": "text", - "placeholders": {} - }, "userIsTyping": "{username} piše …", "@userIsTyping": { "type": "text", @@ -1441,6 +1538,18 @@ "username": {} } }, + "userLeftTheChat": "{username} je napustio/la chat", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "Korisničko ime", + "@username": { + "type": "text", + "placeholders": {} + }, "userSentUnknownEvent": "{username} ja poslao/la {type} događaj", "@userSentUnknownEvent": { "type": "text", @@ -1449,8 +1558,13 @@ "type": {} } }, - "Verify": "Provjeri", - "@Verify": { + "verifiedSession": "Uspješno provjerena sesija!", + "@verifiedSession": { + "type": "text", + "placeholders": {} + }, + "verify": "Provjeri", + "@verify": { "type": "text", "placeholders": {} }, @@ -1459,11 +1573,6 @@ "type": "text", "placeholders": {} }, - "verifiedSession": "Uspješno provjerena sesija!", - "@verifiedSession": { - "type": "text", - "placeholders": {} - }, "verifyStart": "Pokreni provjeru", "@verifyStart": { "type": "text", @@ -1479,33 +1588,33 @@ "type": "text", "placeholders": {} }, - "Verify User": "Provjeri korisnika", - "@Verify User": { + "verifyUser": "Provjeri korisnika", + "@verifyUser": { "type": "text", "placeholders": {} }, - "Video call": "Video poziv", - "@Video call": { + "videoCall": "Video poziv", + "@videoCall": { "type": "text", "placeholders": {} }, - "Visible for all participants": "Vidljivo za sve sudionike", - "@Visible for all participants": { + "visibilityOfTheChatHistory": "Vidljivost kronologije chata", + "@visibilityOfTheChatHistory": { "type": "text", "placeholders": {} }, - "Visible for everyone": "Vidljivo za sve", - "@Visible for everyone": { + "visibleForAllParticipants": "Vidljivo za sve sudionike", + "@visibleForAllParticipants": { "type": "text", "placeholders": {} }, - "Visibility of the chat history": "Vidljivost kronologije chata", - "@Visibility of the chat history": { + "visibleForEveryone": "Vidljivo za sve", + "@visibleForEveryone": { "type": "text", "placeholders": {} }, - "Voice message": "Glasovna poruka", - "@Voice message": { + "voiceMessage": "Glasovna poruka", + "@voiceMessage": { "type": "text", "placeholders": {} }, @@ -1524,69 +1633,74 @@ "type": "text", "placeholders": {} }, - "Wallpaper": "Slika pozadine", - "@Wallpaper": { + "wallpaper": "Slika pozadine", + "@wallpaper": { "type": "text", "placeholders": {} }, - "End to end encryption is currently in Beta! Use at your own risk!": "Obostrano šifriranje je trenutačno u beta stanju! Koriti na vlastitu odgovornost!", - "@End to end encryption is currently in Beta! Use at your own risk!": { + "warning": "Upozorenje!", + "@warning": { "type": "text", "placeholders": {} }, - "Wednesday": "Srijeda", - "@Wednesday": { + "warningEncryptionInBeta": "Obostrano šifriranje je trenutačno u beta stanju! Koriti na vlastitu odgovornost!", + "@warningEncryptionInBeta": { "type": "text", "placeholders": {} }, - "Welcome to the cutest instant messenger in the matrix network.": "Lijep pozdrav u najslađi program za čavrljanje u matrix-mreži.", - "@Welcome to the cutest instant messenger in the matrix network.": { + "wednesday": "Srijeda", + "@wednesday": { "type": "text", "placeholders": {} }, - "Who is allowed to join this group": "Tko se smije pridružiti grupi", - "@Who is allowed to join this group": { + "welcomeText": "Lijep pozdrav u najslađi program za čavrljanje u mreži matrix.", + "@welcomeText": { "type": "text", "placeholders": {} }, - "Write a message...": "Napiši poruku …", - "@Write a message...": { + "whoIsAllowedToJoinThisGroup": "Tko se smije pridružiti grupi", + "@whoIsAllowedToJoinThisGroup": { "type": "text", "placeholders": {} }, - "Yes": "Da", - "@Yes": { + "writeAMessage": "Napiši poruku …", + "@writeAMessage": { "type": "text", "placeholders": {} }, - "You": "Ti", - "@You": { + "yes": "Da", + "@yes": { "type": "text", "placeholders": {} }, - "You are invited to this chat": "Pozvan/a si u ovaj chat", - "@You are invited to this chat": { + "you": "Ti", + "@you": { "type": "text", "placeholders": {} }, - "You are no longer participating in this chat": "Više ne sudjeluješ u ovom chatu", - "@You are no longer participating in this chat": { + "youAreInvitedToThisChat": "Pozvan/a si u ovaj chat", + "@youAreInvitedToThisChat": { "type": "text", "placeholders": {} }, - "You cannot invite yourself": "Sebe ne možeš pozvati", - "@You cannot invite yourself": { + "youAreNoLongerParticipatingInThisChat": "Više ne sudjeluješ u ovom chatu", + "@youAreNoLongerParticipatingInThisChat": { "type": "text", "placeholders": {} }, - "You have been banned from this chat": "Isključen/a si iz ovog chata", - "@You have been banned from this chat": { + "youCannotInviteYourself": "Sebe ne možeš pozvati", + "@youCannotInviteYourself": { "type": "text", "placeholders": {} }, - "Your own username": "Tvoje korisničko ime", - "@Your own username": { + "youHaveBeenBannedFromThisChat": "Isključen/a si iz ovog chata", + "@youHaveBeenBannedFromThisChat": { + "type": "text", + "placeholders": {} + }, + "yourOwnUsername": "Tvoje korisničko ime", + "@yourOwnUsername": { "type": "text", "placeholders": {} } -} +} \ No newline at end of file diff --git a/lib/l10n/intl_hu.arb b/lib/l10n/intl_hu.arb index a7f7ef9..c3eb9fc 100644 --- a/lib/l10n/intl_hu.arb +++ b/lib/l10n/intl_hu.arb @@ -1,7 +1,13 @@ { - "@@last_modified": "2020-04-12T11:11:56.595233", - "About": "Névjegy", - "@About": { + "@@locale": "hu", + "@@last_modified": "2020-09-23 11:46:02.295098", + "about": "Névjegy", + "@about": { + "type": "text", + "placeholders": {} + }, + "accept": "Elfogad", + "@accept": { "type": "text", "placeholders": {} }, @@ -12,13 +18,13 @@ "username": {} } }, - "Account": "Fiók", - "@Account": { + "account": "Fiók", + "@account": { "type": "text", "placeholders": {} }, - "Account informations": "Fiók információk", - "@Account informations": { + "accountInformation": "Fiók információk", + "@accountInformation": { "type": "text", "placeholders": {} }, @@ -29,13 +35,13 @@ "username": {} } }, - "Add a group description": "Csoport leírás hozzáadása", - "@Add a group description": { + "addGroupDescription": "Csoport leírás hozzáadása", + "@addGroupDescription": { "type": "text", "placeholders": {} }, - "Admin": "Admin", - "@Admin": { + "admin": "Admin", + "@admin": { "type": "text", "placeholders": {} }, @@ -44,53 +50,75 @@ "type": "text", "placeholders": {} }, - "Already have an account?": "Van már fiókod?", - "@Already have an account?": { + "alreadyHaveAnAccount": "Van már fiókod?", + "@alreadyHaveAnAccount": { "type": "text", "placeholders": {} }, - "Anyone can join": "Bárki csatlakozhat", - "@Anyone can join": { + "anyoneCanJoin": "Bárki csatlakozhat", + "@anyoneCanJoin": { "type": "text", "placeholders": {} }, - "Archive": "Archív", - "@Archive": { + "archive": "Archív", + "@archive": { "type": "text", "placeholders": {} }, - "Archived Room": "Archivált szoba", - "@Archived Room": { + "archivedRoom": "Archivált szoba", + "@archivedRoom": { "type": "text", "placeholders": {} }, - "Are guest users allowed to join": "Csatlakozhatnak vendég felhasználók", - "@Are guest users allowed to join": { + "areGuestsAllowedToJoin": "Csatlakozhatnak vendég felhasználók", + "@areGuestsAllowedToJoin": { "type": "text", "placeholders": {} }, - "Are you sure?": "Biztos?", - "@Are you sure?": { + "areYouSure": "Biztos?", + "@areYouSure": { "type": "text", "placeholders": {} }, - "Authentication": "Hitelesítés", - "@Authentication": { + "askSSSSCache": "Add meg a biztonságos tárolóhoz tartozó vagy a visszaállítási jelszavadat, hogy betöltsük a kulcsaidat.", + "@askSSSSCache": { "type": "text", "placeholders": {} }, - "Avatar has been changed": "Az avatar megváltozott", - "@Avatar has been changed": { + "askSSSSSign": "A másik személy igazolásához, kérlek add meg jelszavadat vagy visszaállítási kulcsodat.", + "@askSSSSSign": { "type": "text", "placeholders": {} }, - "Ban from chat": "Csevegésből kitiltás", - "@Ban from chat": { + "askSSSSVerify": "Add meg a biztonságos tárolóhoz tartozó vagy a visszaállítási jelszavadat, a munkamenet hitelesítéséhez.", + "@askSSSSVerify": { "type": "text", "placeholders": {} }, - "Banned": "Kitiltva", - "@Banned": { + "askVerificationRequest": "Elfogadod {username} hitelesítési kérelmét?", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "authentication": "Hitelesítés", + "@authentication": { + "type": "text", + "placeholders": {} + }, + "avatarHasBeenChanged": "Az avatar megváltozott", + "@avatarHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "banFromChat": "Csevegésből kitiltás", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "banned": "Kitiltva", + "@banned": { "type": "text", "placeholders": {} }, @@ -102,6 +130,11 @@ "targetName": {} } }, + "blockDevice": "Eszköz blokkolása", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, "byDefaultYouWillBeConnectedTo": "Alapértelmezésben {homeserver}-hoz csatlakozol", "@byDefaultYouWillBeConnectedTo": { "type": "text", @@ -109,8 +142,13 @@ "homeserver": {} } }, - "Cancel": "Mégsem", - "@Cancel": { + "cachedKeys": "Sikeresen betöltöttük a kulcsokat!", + "@cachedKeys": { + "type": "text", + "placeholders": {} + }, + "cancel": "Mégsem", + "@cancel": { "type": "text", "placeholders": {} }, @@ -121,14 +159,6 @@ "username": {} } }, - "changedTheChatNameTo": "{username} módosította a csevegés nevét erre: '{chatname}'", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, "changedTheChatDescriptionTo": "{username} módosította a csevegés leírását erre: '{description}'", "@changedTheChatDescriptionTo": { "type": "text", @@ -137,6 +167,14 @@ "description": {} } }, + "changedTheChatNameTo": "{username} módosította a csevegés nevét erre: '{chatname}'", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, "changedTheChatPermissions": "{username} módosította a csevegési enegedélyeket", "@changedTheChatPermissions": { "type": "text", @@ -152,11 +190,6 @@ "displayname": {} } }, - "Change the homeserver": "Matrix szerver váltás", - "@Change the homeserver": { - "type": "text", - "placeholders": {} - }, "changedTheGuestAccessRules": "{username} módosította a vendégek hozzáférési jogait", "@changedTheGuestAccessRules": { "type": "text", @@ -223,105 +256,125 @@ "username": {} } }, - "Changelog": "Változás napló", - "@Changelog": { + "changelog": "Változás napló", + "@changelog": { "type": "text", "placeholders": {} }, - "Change the name of the group": "Csoport nevének módosítása", - "@Change the name of the group": { + "changeTheHomeserver": "Matrix szerver váltás", + "@changeTheHomeserver": { "type": "text", "placeholders": {} }, - "Change wallpaper": "Háttér módosítása", - "@Change wallpaper": { + "changeTheme": "Stílus módosítása", + "@changeTheme": { "type": "text", "placeholders": {} }, - "Change the server": "Szerver módosítás", - "@Change the server": { + "changeTheNameOfTheGroup": "Csoport nevének módosítása", + "@changeTheNameOfTheGroup": { "type": "text", "placeholders": {} }, - "The encryption has been corrupted": "A titkosítás sérült és megbízhatatlan", - "@The encryption has been corrupted": { + "changeTheServer": "Szerver módosítás", + "@changeTheServer": { "type": "text", "placeholders": {} }, - "Chat": "Csevegés", - "@Chat": { + "changeWallpaper": "Háttér módosítása", + "@changeWallpaper": { "type": "text", "placeholders": {} }, - "Chat details": "Csevegés részletei", - "@Chat details": { + "channelCorruptedDecryptError": "A titkosítás sérült és megbízhatatlan", + "@channelCorruptedDecryptError": { "type": "text", "placeholders": {} }, - "Choose a strong password": "Válassz egy erős jelszót", - "@Choose a strong password": { + "chat": "Csevegés", + "@chat": { "type": "text", "placeholders": {} }, - "Choose a username": "Válassz egy felhasználónevet", - "@Choose a username": { + "chatDetails": "Csevegés részletei", + "@chatDetails": { "type": "text", "placeholders": {} }, - "Close": "Bezárás", - "@Close": { + "chooseAStrongPassword": "Válassz egy erős jelszót", + "@chooseAStrongPassword": { "type": "text", "placeholders": {} }, - "Confirm": "Megerősítés", - "@Confirm": { + "chooseAUsername": "Válassz egy felhasználónevet", + "@chooseAUsername": { "type": "text", "placeholders": {} }, - "Connect": "Csatlakozás", - "@Connect": { + "close": "Bezárás", + "@close": { "type": "text", "placeholders": {} }, - "Connection attempt failed": "Csatlakozási kísérlet meghiusult", - "@Connection attempt failed": { + "compareEmojiMatch": "Hasonlítsd össze a hangulatjeleket a másik eszközön lévőkkel:", + "@compareEmojiMatch": { "type": "text", "placeholders": {} }, - "Contact has been invited to the group": "Meghívtad ismerősödet a csoportba", - "@Contact has been invited to the group": { + "compareNumbersMatch": "Hasonlítsd össze a számokat a másik eszközön lévőkkel:", + "@compareNumbersMatch": { "type": "text", "placeholders": {} }, - "Content viewer": "Tartalom nézegető", - "@Content viewer": { + "confirm": "Megerősítés", + "@confirm": { "type": "text", "placeholders": {} }, - "Copied to clipboard": "Vágólapra másolva", - "@Copied to clipboard": { + "connect": "Csatlakozás", + "@connect": { "type": "text", "placeholders": {} }, - "Copy": "Másolás", - "@Copy": { + "connectionAttemptFailed": "Csatlakozási kísérlet meghiusult", + "@connectionAttemptFailed": { "type": "text", "placeholders": {} }, - "Could not decrypt message": "Nem sikerült az üzenet titkosítását feloldani: {error}", - "@Could not decrypt message": { + "contactHasBeenInvitedToTheGroup": "Meghívtad ismerősödet a csoportba", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "contentViewer": "Tartalom nézegető", + "@contentViewer": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "Vágólapra másolva", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "copy": "Másolás", + "@copy": { + "type": "text", + "placeholders": {} + }, + "couldNotDecryptMessage": "Nem sikerült visszafejteni a titkosított üzenetet: {error}", + "@couldNotDecryptMessage": { "type": "text", "placeholders": { "error": {} } }, - "Could not set avatar": "Nem sikerült beállítani a képet", - "@Could not set avatar": { + "couldNotSetAvatar": "Nem sikerült beállítani a képet", + "@couldNotSetAvatar": { "type": "text", "placeholders": {} }, - "Could not set displayname": "Nem sikerült beállítani a megjelenítési nevet", - "@Could not set displayname": { + "couldNotSetDisplayname": "Nem sikerült beállítani a megjelenítési nevet", + "@couldNotSetDisplayname": { "type": "text", "placeholders": {} }, @@ -332,13 +385,13 @@ "count": {} } }, - "Create": "Létrehozás", - "@Create": { + "create": "Létrehozás", + "@create": { "type": "text", "placeholders": {} }, - "Create account now": "Új fiók létrehozása", - "@Create account now": { + "createAccountNow": "Új fiók létrehozása", + "@createAccountNow": { "type": "text", "placeholders": {} }, @@ -349,8 +402,28 @@ "username": {} } }, - "Create new group": "Új csoport létrehozása", - "@Create new group": { + "createNewGroup": "Új csoport létrehozása", + "@createNewGroup": { + "type": "text", + "placeholders": {} + }, + "crossSigningDisabled": "Kereszt-Aláírás kikapcsolva", + "@crossSigningDisabled": { + "type": "text", + "placeholders": {} + }, + "crossSigningEnabled": "Kereszt-Aláírás bekapcsolva", + "@crossSigningEnabled": { + "type": "text", + "placeholders": {} + }, + "currentlyActive": "Jelenleg aktív", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "Sötét", + "@darkTheme": { "type": "text", "placeholders": {} }, @@ -379,63 +452,58 @@ "day": {} } }, - "Delete": "Törlés", - "@Delete": { + "delete": "Törlés", + "@delete": { "type": "text", "placeholders": {} }, - "Delete message": "Üzenet törlése", - "@Delete message": { + "deleteMessage": "Üzenet törlése", + "@deleteMessage": { "type": "text", "placeholders": {} }, - "Deny": "Elutasítás", - "@Deny": { + "deny": "Elutasítás", + "@deny": { "type": "text", "placeholders": {} }, - "Device": "Eszköz", - "@Device": { + "device": "Eszköz", + "@device": { "type": "text", "placeholders": {} }, - "Devices": "Eszközök", - "@Devices": { + "devices": "Eszközök", + "@devices": { "type": "text", "placeholders": {} }, - "Discard picture": "Kép elvetése", - "@Discard picture": { + "discardPicture": "Kép elvetése", + "@discardPicture": { "type": "text", "placeholders": {} }, - "Displayname has been changed": "Megjelenítési név megváltozott", - "@Displayname has been changed": { + "displaynameHasBeenChanged": "Megjelenítési név megváltozott", + "@displaynameHasBeenChanged": { "type": "text", "placeholders": {} }, - "Download file": "File letöltése", - "@Download file": { + "donate": "Támogatom", + "@donate": { "type": "text", "placeholders": {} }, - "Edit displayname": "Megjelenítési név módosítása", - "@Edit displayname": { + "downloadFile": "File letöltése", + "@downloadFile": { "type": "text", "placeholders": {} }, - "Emote Settings": "Hangulatjel beállítások", - "@Emote Settings": { + "editDisplayname": "Megjelenítési név módosítása", + "@editDisplayname": { "type": "text", "placeholders": {} }, - "Emote shortcode": "Rövid kód a hangulatjelhez", - "@Emote shortcode": { - "type": "text", - "placeholders": {} - }, - "emoteWarnNeedToPick": "A hangulatjelhez válassz egy képet és egy rövid kód", - "@emoteWarnNeedToPick": { + "editJitsiInstance": "Jitsi példány módosítása", + "@editJitsiInstance": { "type": "text", "placeholders": {} }, @@ -449,98 +517,118 @@ "type": "text", "placeholders": {} }, - "Empty chat": "Üres csevegés", - "@Empty chat": { + "emoteSettings": "Hangulatjel beállítások", + "@emoteSettings": { "type": "text", "placeholders": {} }, - "You won't be able to disable the encryption anymore. Are you sure?": "Többé nem tudod kikapcsolni a titkosítás. Biztosan folytatod?", - "@You won't be able to disable the encryption anymore. Are you sure?": { + "emoteShortcode": "Rövid kód a hangulatjelhez", + "@emoteShortcode": { "type": "text", "placeholders": {} }, - "Encryption algorithm": "Titkosítási algoritmus", - "@Encryption algorithm": { + "emoteWarnNeedToPick": "A hangulatjelhez válassz egy képet és egy rövid kód", + "@emoteWarnNeedToPick": { "type": "text", "placeholders": {} }, - "Encryption is not enabled": "Titkosítás nincs engedélyezve", - "@Encryption is not enabled": { + "emptyChat": "Üres csevegés", + "@emptyChat": { "type": "text", "placeholders": {} }, - "End-to-end encryption settings": "Végpontól-végpontig titkosítás beállításai", - "@End-to-end encryption settings": { + "enableEncryptionWarning": "Többé nem tudod kikapcsolni a titkosítás. Biztosan folytatod?", + "@enableEncryptionWarning": { "type": "text", "placeholders": {} }, - "Enter a group name": "Adj meg egy csoport nevet", - "@Enter a group name": { + "encryption": "Titkosítás", + "@encryption": { "type": "text", "placeholders": {} }, - "Enter a username": "Adj meg egy felhasználónevet", - "@Enter a username": { + "encryptionAlgorithm": "Titkosítási algoritmus", + "@encryptionAlgorithm": { "type": "text", "placeholders": {} }, - "Enter your homeserver": "Add meg a Matrix szervered nevét", - "@Enter your homeserver": { + "encryptionNotEnabled": "Titkosítás nincs engedélyezve", + "@encryptionNotEnabled": { "type": "text", "placeholders": {} }, - "File name": "Fájl név", - "@File name": { + "end2endEncryptionSettings": "Végpontól-végpontig titkosítás beállításai", + "@end2endEncryptionSettings": { "type": "text", "placeholders": {} }, - "File size": "Fájl méret", - "@File size": { + "enterAGroupName": "Adj meg egy csoport nevet", + "@enterAGroupName": { "type": "text", "placeholders": {} }, - "FluffyChat": "FluffyChat", - "@FluffyChat": { + "enterAUsername": "Adj meg egy felhasználónevet", + "@enterAUsername": { "type": "text", "placeholders": {} }, - "Forward": "Továbbítás", - "@Forward": { + "enterYourHomeserver": "Add meg a Matrix szervered nevét", + "@enterYourHomeserver": { "type": "text", "placeholders": {} }, - "Friday": "Péntek", - "@Friday": { + "fileName": "Fájl név", + "@fileName": { "type": "text", "placeholders": {} }, - "From joining": "Belépés óta", - "@From joining": { + "fileSize": "Fájl méret", + "@fileSize": { "type": "text", "placeholders": {} }, - "From the invitation": "Meghívás óta", - "@From the invitation": { + "fluffychat": "FluffyChat", + "@fluffychat": { "type": "text", "placeholders": {} }, - "Group": "Csoport", - "@Group": { + "forward": "Továbbítás", + "@forward": { "type": "text", "placeholders": {} }, - "Group description": "Csoport leírás", - "@Group description": { + "friday": "Péntek", + "@friday": { "type": "text", "placeholders": {} }, - "Group description has been changed": "Csoport leírása megváltozott", - "@Group description has been changed": { + "fromJoining": "Belépés óta", + "@fromJoining": { "type": "text", "placeholders": {} }, - "Group is public": "A csoport publikus", - "@Group is public": { + "fromTheInvitation": "Meghívás óta", + "@fromTheInvitation": { + "type": "text", + "placeholders": {} + }, + "group": "Csoport", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupDescription": "Csoport leírás", + "@groupDescription": { + "type": "text", + "placeholders": {} + }, + "groupDescriptionHasBeenChanged": "Csoport leírása megváltozott", + "@groupDescriptionHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "A csoport publikus", + "@groupIsPublic": { "type": "text", "placeholders": {} }, @@ -551,13 +639,13 @@ "displayname": {} } }, - "Guests are forbidden": "Vendégeknek tilos a belépés", - "@Guests are forbidden": { + "guestsAreForbidden": "Vendégeknek tilos a belépés", + "@guestsAreForbidden": { "type": "text", "placeholders": {} }, - "Guests can join": "Vendégek csatlakozhatnak", - "@Guests can join": { + "guestsCanJoin": "Vendégek csatlakozhatnak", + "@guestsCanJoin": { "type": "text", "placeholders": {} }, @@ -569,28 +657,33 @@ "targetName": {} } }, - "Help": "Segítség", - "@Help": { + "help": "Segítség", + "@help": { "type": "text", "placeholders": {} }, - "Homeserver is not compatible": "Ez a Matrix szerver nem kompatibilis", - "@Homeserver is not compatible": { + "homeserverIsNotCompatible": "Ez a Matrix szerver nem kompatibilis", + "@homeserverIsNotCompatible": { "type": "text", "placeholders": {} }, - "ID": "ID", - "@ID": { + "id": "ID", + "@id": { "type": "text", "placeholders": {} }, - "Identity": "Azonosság", - "@Identity": { + "identity": "Azonosság", + "@identity": { "type": "text", "placeholders": {} }, - "Invite contact": "Ismerős meghívása", - "@Invite contact": { + "incorrectPassphraseOrKey": "Hibás jelszó vagy visszaállítási kulcs", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "Ismerős meghívása", + "@inviteContact": { "type": "text", "placeholders": {} }, @@ -601,19 +694,11 @@ "groupName": {} } }, - "Invited": "Meghívott", - "@Invited": { + "invited": "Meghívott", + "@invited": { "type": "text", "placeholders": {} }, - "inviteText": "{username} meghívott a FluffyChatre. \n1. FluffyChat telepítése: http://fluffy.chat \n2. Jelentkezz be vagy regisztrálj. \n3. Nyisd meg a meghívó linket: {link}", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, "invitedUser": "{username} meghívta {targetName}-t", "@invitedUser": { "type": "text", @@ -622,18 +707,26 @@ "targetName": {} } }, - "Invited users only": "Csak meghívottak", - "@Invited users only": { + "invitedUsersOnly": "Csak meghívottak", + "@invitedUsersOnly": { "type": "text", "placeholders": {} }, - "is typing...": "gépel...", - "@is typing...": { + "inviteText": "{username} meghívott a FluffyChatre. \n1. FluffyChat telepítése: https://fluffychat.im \n2. Jelentkezz be vagy regisztrálj. \n3. Nyisd meg a meghívó linket: {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "isDeviceKeyCorrect": "Helyes az alábbi eszköz kulcs?", + "@isDeviceKeyCorrect": { "type": "text", "placeholders": {} }, - "Edit Jitsi instance": "Jitsi példány módosítása", - "@Edit Jitsi instance": { + "isTyping": "gépel...", + "@isTyping": { "type": "text", "placeholders": {} }, @@ -644,6 +737,16 @@ "username": {} } }, + "keysCached": "Kulcsok betöltve", + "@keysCached": { + "type": "text", + "placeholders": {} + }, + "keysMissing": "Kulcsok hiányoznak", + "@keysMissing": { + "type": "text", + "placeholders": {} + }, "kicked": "{username} kirúgta {targetName}-t", "@kicked": { "type": "text", @@ -660,33 +763,11 @@ "targetName": {} } }, - "Kick from chat": "Csevegésből kirúgás", - "@Kick from chat": { + "kickFromChat": "Csevegésből kirúgás", + "@kickFromChat": { "type": "text", "placeholders": {} }, - "Leave": "Csevegés elhagyása", - "@Leave": { - "type": "text", - "placeholders": {} - }, - "Left the chat": "Elhagyta a csevegést", - "@Left the chat": { - "type": "text", - "placeholders": {} - }, - "Logout": "Kijelentkezés", - "@Logout": { - "type": "text", - "placeholders": {} - }, - "userLeftTheChat": "{username} elhagyta a csevegést", - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, "lastActiveAgo": "Utoljára aktív: {localizedTimeShort}", "@lastActiveAgo": { "type": "text", @@ -694,23 +775,33 @@ "localizedTimeShort": {} } }, - "Last seen IP": "Utoljára látott IP", - "@Last seen IP": { + "lastSeenIp": "Utoljára látott IP", + "@lastSeenIp": { "type": "text", "placeholders": {} }, - "License": "Licenc", - "@License": { + "lastSeenLongTimeAgo": "Már régen látta", + "@lastSeenLongTimeAgo": { "type": "text", "placeholders": {} }, - "Loading... Please wait": "Betöltés... Kérlek várj", - "@Loading... Please wait": { + "leave": "Csevegés elhagyása", + "@leave": { "type": "text", "placeholders": {} }, - "Load more...": "Továbbiak betöltése...", - "@Load more...": { + "leftTheChat": "Elhagyta a csevegést", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "Licenc", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "Világos", + "@lightTheme": { "type": "text", "placeholders": {} }, @@ -721,8 +812,18 @@ "count": {} } }, - "Login": "Bejelentkezés", - "@Login": { + "loadingPleaseWait": "Betöltés... Kérlek várj", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "Továbbiak betöltése...", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "login": "Bejelentkezés", + "@login": { "type": "text", "placeholders": {} }, @@ -733,83 +834,103 @@ "homeserver": {} } }, - "Make a moderator": "Kinevezés moderátorrá", - "@Make a moderator": { + "logout": "Kijelentkezés", + "@logout": { "type": "text", "placeholders": {} }, - "Make an admin": "Kinevezés adminná", - "@Make an admin": { + "makeAModerator": "Kinevezés moderátorrá", + "@makeAModerator": { "type": "text", "placeholders": {} }, - "Make sure the identifier is valid": "Bizonyosodj meg az azonosító helyességéről", - "@Make sure the identifier is valid": { + "makeAnAdmin": "Kinevezés adminná", + "@makeAnAdmin": { "type": "text", "placeholders": {} }, - "Message will be removed for all participants": "Az üzenet minden résztvevő számára törlődni fog", - "@Message will be removed for all participants": { + "makeSureTheIdentifierIsValid": "Bizonyosodj meg az azonosító helyességéről", + "@makeSureTheIdentifierIsValid": { "type": "text", "placeholders": {} }, - "Moderator": "Moderátor", - "@Moderator": { + "messageWillBeRemovedWarning": "Az üzenet minden résztvevő számára törlődni fog", + "@messageWillBeRemovedWarning": { "type": "text", "placeholders": {} }, - "Monday": "Hétfő", - "@Monday": { + "moderator": "Moderátor", + "@moderator": { "type": "text", "placeholders": {} }, - "Mute chat": "Csevegés némítása", - "@Mute chat": { + "monday": "Hétfő", + "@monday": { "type": "text", "placeholders": {} }, - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": "Tájékoztatlak, hogy egyelőre szükséged van a Pantalaimon-ra, hogy a végponttól-végpontig titkosítást hasnzáld.", - "@Please be aware that you need Pantalaimon to use end-to-end encryption for now.": { + "muteChat": "Csevegés némítása", + "@muteChat": { "type": "text", "placeholders": {} }, - "New message in FluffyChat": "Új üzenet a FluffyChaten", - "@New message in FluffyChat": { + "needPantalaimonWarning": "Tájékoztatlak, hogy egyelőre szükséged van a Pantalaimon-ra, hogy a végponttól-végpontig titkosítást hasnzáld.", + "@needPantalaimonWarning": { "type": "text", "placeholders": {} }, - "New private chat": "Új privát csevegés", - "@New private chat": { + "newMessageInFluffyChat": "Új üzenet a FluffyChaten", + "@newMessageInFluffyChat": { "type": "text", "placeholders": {} }, - "It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": "Úgy tűnik ügyelsz a magánszférádra és nincsenek google szolgáltatások telepítve. Hogy így is kapj azonnali értesítéseket javasoljuk a microG-t: https://microg.org/", - "@It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": { + "newPrivateChat": "Új privát csevegés", + "@newPrivateChat": { "type": "text", "placeholders": {} }, - "None": "Nincs", - "@None": { + "newVerificationRequest": "Új hitelesítési kérelem!", + "@newVerificationRequest": { "type": "text", "placeholders": {} }, - "No emotes found. 😕": "Nincsenek hangulatjelek. 😕", - "@No emotes found. 😕": { + "noCrossSignBootstrap": "FluffyChat jelenleg nem támogatja a Kereszt-Aláírás bekapcsolását. Kérlek engedélyezd Riot-ból.", + "@noCrossSignBootstrap": { "type": "text", "placeholders": {} }, - "No permission": "Nincsenek engedélyek", - "@No permission": { + "noEmotesFound": "Nincsenek hangulatjelek. 😕", + "@noEmotesFound": { "type": "text", "placeholders": {} }, - "No rooms found...": "Nem találtam szobákat...", - "@No rooms found...": { + "noGoogleServicesWarning": "Úgy tűnik ügyelsz a magánszférádra és nincsenek google szolgáltatások telepítve. Hogy így is kapj azonnali értesítéseket javasoljuk a microG-t: https://microg.org/", + "@noGoogleServicesWarning": { "type": "text", "placeholders": {} }, - "Not supported in web": "Nem támogatott a weben", - "@Not supported in web": { + "noMegolmBootstrap": "FluffyChat jelenleg nem támogatja az Online Kulcs Archívumot (backup). Kérlek engedélyezd Riot-ból.", + "@noMegolmBootstrap": { + "type": "text", + "placeholders": {} + }, + "none": "Nincs", + "@none": { + "type": "text", + "placeholders": {} + }, + "noPermission": "Nincsenek engedélyek", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "Nem találtam szobákat...", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "notSupportedInWeb": "Nem támogatott a weben", + "@notSupportedInWeb": { "type": "text", "placeholders": {} }, @@ -825,38 +946,53 @@ "type": "text", "placeholders": {} }, - "Oops something went wrong...": "Hoppá, valami baj történt...", - "@Oops something went wrong...": { + "onlineKeyBackupDisabled": "Online Kulcs Archívum letiltva", + "@onlineKeyBackupDisabled": { "type": "text", "placeholders": {} }, - "Open app to read messages": "App megnyitása az üzenetek elolvasásához", - "@Open app to read messages": { + "onlineKeyBackupEnabled": "Online Kulcs Archívum engedélyezve", + "@onlineKeyBackupEnabled": { "type": "text", "placeholders": {} }, - "Open camera": "Kamera megnyitása", - "@Open camera": { + "oopsSomethingWentWrong": "Hoppá, valami baj történt...", + "@oopsSomethingWentWrong": { "type": "text", "placeholders": {} }, - "(Optional) Group name": "(Nem kötelező) Csoport név", - "@(Optional) Group name": { + "openAppToReadMessages": "App megnyitása az üzenetek elolvasásához", + "@openAppToReadMessages": { "type": "text", "placeholders": {} }, - "Participating user devices": "Résztvevő felhasználók eszközei", - "@Participating user devices": { + "openCamera": "Kamera megnyitása", + "@openCamera": { "type": "text", "placeholders": {} }, - "Password": "Jelszó", - "@Password": { + "optionalGroupName": "(Nem kötelező) Csoport név", + "@optionalGroupName": { "type": "text", "placeholders": {} }, - "Pick image": "Válassz egy képet", - "@Pick image": { + "participatingUserDevices": "Résztvevő felhasználók eszközei", + "@participatingUserDevices": { + "type": "text", + "placeholders": {} + }, + "passphraseOrKey": "Jelszó vagy visszaállítási kulcs", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "password": "Jelszó", + "@password": { + "type": "text", + "placeholders": {} + }, + "pickImage": "Válassz egy képet", + "@pickImage": { "type": "text", "placeholders": {} }, @@ -867,43 +1003,33 @@ "fileName": {} } }, - "Please choose a username": "Válassz egy felhasználónevet", - "@Please choose a username": { + "pleaseChooseAUsername": "Válassz egy felhasználónevet", + "@pleaseChooseAUsername": { "type": "text", "placeholders": {} }, - "Please enter a matrix identifier": "Írj be egy Matrix azonosítót", - "@Please enter a matrix identifier": { + "pleaseEnterAMatrixIdentifier": "Írj be egy Matrix azonosítót", + "@pleaseEnterAMatrixIdentifier": { "type": "text", "placeholders": {} }, - "Please enter your password": "Add meg a jelszavad", - "@Please enter your password": { + "pleaseEnterYourPassword": "Add meg a jelszavad", + "@pleaseEnterYourPassword": { "type": "text", "placeholders": {} }, - "Please enter your username": "Add meg a felhasználónevedet", - "@Please enter your username": { + "pleaseEnterYourUsername": "Add meg a felhasználónevedet", + "@pleaseEnterYourUsername": { "type": "text", "placeholders": {} }, - "Public Rooms": "Publikus szoba", - "@Public Rooms": { + "publicRooms": "Publikus szoba", + "@publicRooms": { "type": "text", "placeholders": {} }, - "Rejoin": "Újracsatlakozás", - "@Rejoin": { - "type": "text", - "placeholders": {} - }, - "Render rich message content": "Formázott üzenetek megjelenítése", - "@Render rich message content": { - "type": "text", - "placeholders": {} - }, - "Recording": "Felvétel", - "@Recording": { + "recording": "Felvétel", + "@recording": { "type": "text", "placeholders": {} }, @@ -914,6 +1040,11 @@ "username": {} } }, + "reject": "Visszautasít", + "@reject": { + "type": "text", + "placeholders": {} + }, "rejectedTheInvitation": "{username} elutasította a meghívást", "@rejectedTheInvitation": { "type": "text", @@ -921,8 +1052,18 @@ "username": {} } }, - "Remove all other devices": "Minden más eszköz eltávolítása", - "@Remove all other devices": { + "rejoin": "Újracsatlakozás", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "Eltávolítás", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "Minden más eszköz eltávolítása", + "@removeAllOtherDevices": { "type": "text", "placeholders": {} }, @@ -933,65 +1074,58 @@ "username": {} } }, - "Remove device": "Eszköz eltávolítása", - "@Remove device": { + "removeDevice": "Eszköz eltávolítása", + "@removeDevice": { "type": "text", "placeholders": {} }, - "Remove exile": "Kitiltás feloldása", - "@Remove exile": { + "removeExile": "Kitiltás feloldása", + "@removeExile": { "type": "text", "placeholders": {} }, - "Revoke all permissions": "Minden jogosultság megvonása", - "@Revoke all permissions": { + "removeMessage": "Üzenet eltávolítása", + "@removeMessage": { "type": "text", "placeholders": {} }, - "Remove": "Eltávolítás", - "@Remove": { + "renderRichContent": "Formázott üzenetek megjelenítése", + "@renderRichContent": { "type": "text", "placeholders": {} }, - "Remove message": "Üzenet eltávolítása", - "@Remove message": { + "reply": "Válasz", + "@reply": { "type": "text", "placeholders": {} }, - "Reply": "Válasz", - "@Reply": { + "requestPermission": "Jogosultság igénylése", + "@requestPermission": { "type": "text", "placeholders": {} }, - "Request permission": "Jogosultság igénylése", - "@Request permission": { + "requestToReadOlderMessages": "Korábbi üzenetekhez való hozzáférés igénylése", + "@requestToReadOlderMessages": { "type": "text", "placeholders": {} }, - "Request to read older messages": "Korábbi üzenetekhez való hozzáférés igénylése", - "@Request to read older messages": { + "revokeAllPermissions": "Minden jogosultság megvonása", + "@revokeAllPermissions": { "type": "text", "placeholders": {} }, - "Saturday": "Szombat", - "@Saturday": { + "roomHasBeenUpgraded": "Szoba frissítve lett", + "@roomHasBeenUpgraded": { "type": "text", "placeholders": {} }, - "Share": "Megosztás", - "@Share": { + "saturday": "Szombat", + "@saturday": { "type": "text", "placeholders": {} }, - "sharedTheLocation": "{username} megosztotta a pozícióját", - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "Search for a chat": "Csevegés keresése", - "@Search for a chat": { + "searchForAChat": "Csevegés keresése", + "@searchForAChat": { "type": "text", "placeholders": {} }, @@ -1002,14 +1136,6 @@ "username": {} } }, - "seenByUserAndUser": "{username} és {username2} látta", - "@seenByUserAndUser": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, "seenByUserAndCountOthers": "{username} és {count} másik résztvevő látta", "@seenByUserAndCountOthers": { "type": "text", @@ -1018,23 +1144,31 @@ "count": {} } }, - "Send": "Küldés", - "@Send": { + "seenByUserAndUser": "{username} és {username2} látta", + "@seenByUserAndUser": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "send": "Küldés", + "@send": { "type": "text", "placeholders": {} }, - "Send a message": "Üzenet küldése", - "@Send a message": { + "sendAMessage": "Üzenet küldése", + "@sendAMessage": { "type": "text", "placeholders": {} }, - "Send file": "Fájl küldése", - "@Send file": { + "sendFile": "Fájl küldése", + "@sendFile": { "type": "text", "placeholders": {} }, - "Send image": "Kép küldése", - "@Send image": { + "sendImage": "Kép küldése", + "@sendImage": { "type": "text", "placeholders": {} }, @@ -1073,98 +1207,110 @@ "username": {} } }, - "Set a profile picture": "Profilkép beállítása", - "@Set a profile picture": { + "sessionVerified": "Munkamenet hitelesítve", + "@sessionVerified": { "type": "text", "placeholders": {} }, - "Set group description": "Csoport leírás beállítása", - "@Set group description": { + "setAProfilePicture": "Profilkép beállítása", + "@setAProfilePicture": { "type": "text", "placeholders": {} }, - "Set invitation link": "Meghívó link beállítása", - "@Set invitation link": { + "setGroupDescription": "Csoport leírás beállítása", + "@setGroupDescription": { "type": "text", "placeholders": {} }, - "Set status": "Állapot beállítása", - "@Set status": { + "setInvitationLink": "Meghívó link beállítása", + "@setInvitationLink": { "type": "text", "placeholders": {} }, - "Settings": "Beállítások", - "@Settings": { + "setStatus": "Állapot beállítása", + "@setStatus": { "type": "text", "placeholders": {} }, - "Sign up": "Felíratkozás", - "@Sign up": { + "settings": "Beállítások", + "@settings": { "type": "text", "placeholders": {} }, - "Change your style": "Stílus módosítása", - "@Change your style": { + "share": "Megosztás", + "@share": { "type": "text", "placeholders": {} }, - "System": "Rendszer", - "@System": { + "sharedTheLocation": "{username} megosztotta a pozícióját", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "signUp": "Felíratkozás", + "@signUp": { "type": "text", "placeholders": {} }, - "How are you today?": "Hogy vagy?", - "@How are you today?": { + "skip": "Kihagy", + "@skip": { "type": "text", "placeholders": {} }, - "Light": "Világos", - "@Light": { + "sourceCode": "Forráskód", + "@sourceCode": { "type": "text", "placeholders": {} }, - "Dark": "Sötét", - "@Dark": { + "startYourFirstChat": "Kezdj el csevegni :-)", + "@startYourFirstChat": { "type": "text", "placeholders": {} }, - "Use Amoled compatible colors?": "AmoLED kompatibilis színek használata?", - "@Use Amoled compatible colors?": { + "statusExampleMessage": "Hogy vagy?", + "@statusExampleMessage": { "type": "text", "placeholders": {} }, - "Source code": "Forráskód", - "@Source code": { + "submit": "Mehet", + "@submit": { "type": "text", "placeholders": {} }, - "Start your first chat :-)": "Kezdj el csevegni :-)", - "@Start your first chat :-)": { + "sunday": "Vasárnap", + "@sunday": { "type": "text", "placeholders": {} }, - "Sunday": "Vasárnap", - "@Sunday": { + "systemTheme": "Rendszer", + "@systemTheme": { "type": "text", "placeholders": {} }, - "Donate": "Támogatom", - "@Donate": { + "tapToShowMenu": "Érintsd meg a menü megnyitásához", + "@tapToShowMenu": { "type": "text", "placeholders": {} }, - "Tap to show menu": "Érintsd meg a menü megnyitásához", - "@Tap to show menu": { + "theyDontMatch": "Nem egyeznek", + "@theyDontMatch": { "type": "text", "placeholders": {} }, - "This room has been archived.": "Ez a szoba archiválva lett.", - "@This room has been archived.": { + "theyMatch": "Megegyeznek", + "@theyMatch": { "type": "text", "placeholders": {} }, - "Thursday": "Csütörtök", - "@Thursday": { + "thisRoomHasBeenArchived": "Ez a szoba archiválva lett.", + "@thisRoomHasBeenArchived": { + "type": "text", + "placeholders": {} + }, + "thursday": "Csütörtök", + "@thursday": { "type": "text", "placeholders": {} }, @@ -1184,13 +1330,13 @@ "type": "text", "placeholders": {} }, - "Try to send again": "Próbáld újraküldeni", - "@Try to send again": { + "tryToSendAgain": "Próbáld újraküldeni", + "@tryToSendAgain": { "type": "text", "placeholders": {} }, - "Tuesday": "Kedd", - "@Tuesday": { + "tuesday": "Kedd", + "@tuesday": { "type": "text", "placeholders": {} }, @@ -1202,18 +1348,18 @@ "targetName": {} } }, - "Unmute chat": "Csevegés felhangosítása", - "@Unmute chat": { + "unblockDevice": "Eszköz blokkolásának megszüntetése", + "@unblockDevice": { "type": "text", "placeholders": {} }, - "Unknown device": "Ismeretlen eszköz", - "@Unknown device": { + "unknownDevice": "Ismeretlen eszköz", + "@unknownDevice": { "type": "text", "placeholders": {} }, - "Unknown encryption algorithm": "Ismeretlen titkosítási algoritmus", - "@Unknown encryption algorithm": { + "unknownEncryptionAlgorithm": "Ismeretlen titkosítási algoritmus", + "@unknownEncryptionAlgorithm": { "type": "text", "placeholders": {} }, @@ -1224,6 +1370,16 @@ "type": {} } }, + "unknownSessionVerify": "Ismeretlen munkamenet, kérlek hitelesítsd", + "@unknownSessionVerify": { + "type": "text", + "placeholders": {} + }, + "unmuteChat": "Csevegés felhangosítása", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, "unreadChats": "{unreadCount} olvasatlan üzenet", "@unreadChats": { "type": "text", @@ -1246,6 +1402,11 @@ "unreadChats": {} } }, + "useAmoledTheme": "AmoLED kompatibilis színek használata?", + "@useAmoledTheme": { + "type": "text", + "placeholders": {} + }, "userAndOthersAreTyping": "{username} és {count} másik résztvevő gépel...", "@userAndOthersAreTyping": { "type": "text", @@ -1262,11 +1423,6 @@ "username2": {} } }, - "Username": "Felhasználónév", - "@Username": { - "type": "text", - "placeholders": {} - }, "userIsTyping": "{username} gépel...", "@userIsTyping": { "type": "text", @@ -1274,6 +1430,18 @@ "username": {} } }, + "userLeftTheChat": "{username} elhagyta a csevegést", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "Felhasználónév", + "@username": { + "type": "text", + "placeholders": {} + }, "userSentUnknownEvent": "{username} {type} eseményt küldött", "@userSentUnknownEvent": { "type": "text", @@ -1282,113 +1450,63 @@ "type": {} } }, - "Verify": "Hitelesít", - "@Verify": { + "verifiedSession": "Sikeresen hitelesítetted a munkamenetedet!", + "@verifiedSession": { "type": "text", "placeholders": {} }, - "Video call": "Videó hívás", - "@Video call": { + "verify": "Hitelesít", + "@verify": { "type": "text", "placeholders": {} }, - "Visible for all participants": "Minden résztvevő számára látható", - "@Visible for all participants": { + "verifyManual": "Kézi hitelesítés", + "@verifyManual": { "type": "text", "placeholders": {} }, - "Visible for everyone": "Bárki számára látható", - "@Visible for everyone": { + "verifyStart": "Hitelesítés megkezdése", + "@verifyStart": { "type": "text", "placeholders": {} }, - "Visibility of the chat history": "Csevegési előzmény láthatósága", - "@Visibility of the chat history": { + "verifySuccess": "Sikeresen hitelesítettél!", + "@verifySuccess": { "type": "text", "placeholders": {} }, - "Voice message": "Hang üzenet", - "@Voice message": { + "verifyTitle": "Másik fiók hitelesítése", + "@verifyTitle": { "type": "text", "placeholders": {} }, - "Wallpaper": "Háttér", - "@Wallpaper": { + "verifyUser": "Felhasználó hitelesítése", + "@verifyUser": { "type": "text", "placeholders": {} }, - "End to end encryption is currently in Beta! Use at your own risk!": "Végpontól-végpontig titkosítás egyelőre béta! Csak saját felelősségre!", - "@End to end encryption is currently in Beta! Use at your own risk!": { + "videoCall": "Videó hívás", + "@videoCall": { "type": "text", "placeholders": {} }, - "Wednesday": "Szerda", - "@Wednesday": { + "visibilityOfTheChatHistory": "Csevegési előzmény láthatósága", + "@visibilityOfTheChatHistory": { "type": "text", "placeholders": {} }, - "Welcome to the cutest instant messenger in the matrix network.": "Üdv a legcukibb üzenetküldő alkalmazásban az egész Matrixon!", - "@Welcome to the cutest instant messenger in the matrix network.": { + "visibleForAllParticipants": "Minden résztvevő számára látható", + "@visibleForAllParticipants": { "type": "text", "placeholders": {} }, - "Who is allowed to join this group": "Ki csatlakozhat a csoporthoz", - "@Who is allowed to join this group": { + "visibleForEveryone": "Bárki számára látható", + "@visibleForEveryone": { "type": "text", "placeholders": {} }, - "Write a message...": "Írj egy üzenetet...", - "@Write a message...": { - "type": "text", - "placeholders": {} - }, - "Yes": "Igen", - "@Yes": { - "type": "text", - "placeholders": {} - }, - "You": "Te", - "@You": { - "type": "text", - "placeholders": {} - }, - "You are invited to this chat": "Meghívtak ebbe a csevegésbe", - "@You are invited to this chat": { - "type": "text", - "placeholders": {} - }, - "You are no longer participating in this chat": "Nem veszel részt ebben a csevegésben", - "@You are no longer participating in this chat": { - "type": "text", - "placeholders": {} - }, - "You cannot invite yourself": "Nem tudod meghívni magadat", - "@You cannot invite yourself": { - "type": "text", - "placeholders": {} - }, - "You have been banned from this chat": "Kitiltottak ebből a csevegésből", - "@You have been banned from this chat": { - "type": "text", - "placeholders": {} - }, - "Your own username": "A saját felhasználóneved", - "@Your own username": { - "type": "text", - "placeholders": {} - }, - "askSSSSSign": "A másik személy igazolásához, kérlek add meg jelszavadat vagy visszaállítási kulcsodat.", - "@askSSSSSign": { - "type": "text", - "placeholders": {} - }, - "newVerificationRequest": "Új hitelesítési kérelem!", - "@newVerificationRequest": { - "type": "text", - "placeholders": {} - }, - "waitingPartnerNumbers": "Várakozás partnere, amíg elfogadja a számokat...", - "@waitingPartnerNumbers": { + "voiceMessage": "Hang üzenet", + "@voiceMessage": { "type": "text", "placeholders": {} }, @@ -1402,198 +1520,74 @@ "type": "text", "placeholders": {} }, - "Verify User": "Felhasználó hitelesítése", - "@Verify User": { + "waitingPartnerNumbers": "Várakozás partnere, amíg elfogadja a számokat...", + "@waitingPartnerNumbers": { "type": "text", "placeholders": {} }, - "verifyTitle": "Másik fiók hitelesítése", - "@verifyTitle": { + "wallpaper": "Háttér", + "@wallpaper": { "type": "text", "placeholders": {} }, - "verifySuccess": "Sikeresen hitelesítettél!", - "@verifySuccess": { + "warningEncryptionInBeta": "Végpontól-végpontig titkosítás egyelőre béta! Csak saját felelősségre!", + "@warningEncryptionInBeta": { "type": "text", "placeholders": {} }, - "verifyStart": "Hitelesítés megkezdése", - "@verifyStart": { + "wednesday": "Szerda", + "@wednesday": { "type": "text", "placeholders": {} }, - "verifiedSession": "Sikeresen hitelesítetted a munkamenetedet!", - "@verifiedSession": { + "welcomeText": "Üdv a legcukibb üzenetküldő alkalmazásban az egész Matrixon!", + "@welcomeText": { "type": "text", "placeholders": {} }, - "verifyManual": "Kézi hitelesítés", - "@verifyManual": { + "whoIsAllowedToJoinThisGroup": "Ki csatlakozhat a csoporthoz", + "@whoIsAllowedToJoinThisGroup": { "type": "text", "placeholders": {} }, - "unknownSessionVerify": "Ismeretlen munkamenet, kérlek hitelesítsd", - "@unknownSessionVerify": { + "writeAMessage": "Írj egy üzenetet...", + "@writeAMessage": { "type": "text", "placeholders": {} }, - "Block Device": "Eszköz blokkolása", - "@Block Device": { + "yes": "Igen", + "@yes": { "type": "text", "placeholders": {} }, - "Unblock Device": "Eszköz blokkolásának megszüntetése", - "@Unblock Device": { + "you": "Te", + "@you": { "type": "text", "placeholders": {} }, - "They Match": "Megegyeznek", - "@They Match": { + "youAreInvitedToThisChat": "Meghívtak ebbe a csevegésbe", + "@youAreInvitedToThisChat": { "type": "text", "placeholders": {} }, - "They Don't Match": "Nem egyeznek", - "@They Don't Match": { + "youAreNoLongerParticipatingInThisChat": "Nem veszel részt ebben a csevegésben", + "@youAreNoLongerParticipatingInThisChat": { "type": "text", "placeholders": {} }, - "Submit": "Mehet", - "@Submit": { + "youCannotInviteYourself": "Nem tudod meghívni magadat", + "@youCannotInviteYourself": { "type": "text", "placeholders": {} }, - "Skip": "Kihagy", - "@Skip": { + "youHaveBeenBannedFromThisChat": "Kitiltottak ebből a csevegésből", + "@youHaveBeenBannedFromThisChat": { "type": "text", "placeholders": {} }, - "sessionVerified": "Munkamenet hitelesítve", - "@sessionVerified": { - "type": "text", - "placeholders": {} - }, - "Seen a long time ago": "Már régen látta", - "@Seen a long time ago": { - "type": "text", - "placeholders": {} - }, - "Room has been upgraded": "Szoba frissítve lett", - "@Room has been upgraded": { - "type": "text", - "placeholders": {} - }, - "Reject": "Visszautasít", - "@Reject": { - "type": "text", - "placeholders": {} - }, - "passphraseOrKey": "Jelszó vagy visszaállítási kulcs", - "@passphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "onlineKeyBackupEnabled": "Online Kulcs Archívum engedélyezve", - "@onlineKeyBackupEnabled": { - "type": "text", - "placeholders": {} - }, - "onlineKeyBackupDisabled": "Online Kulcs Archívum letiltva", - "@onlineKeyBackupDisabled": { - "type": "text", - "placeholders": {} - }, - "noMegolmBootstrap": "FluffyChat jelenleg nem támogatja az Online Kulcs Archívumot (backup). Kérlek engedélyezd Riot-ból.", - "@noMegolmBootstrap": { - "type": "text", - "placeholders": {} - }, - "noCrossSignBootstrap": "FluffyChat jelenleg nem támogatja a Kereszt-Aláírás bekapcsolását. Kérlek engedélyezd Riot-ból.", - "@noCrossSignBootstrap": { - "type": "text", - "placeholders": {} - }, - "keysMissing": "Kulcsok hiányoznak", - "@keysMissing": { - "type": "text", - "placeholders": {} - }, - "keysCached": "Kulcsok betöltve", - "@keysCached": { - "type": "text", - "placeholders": {} - }, - "isDeviceKeyCorrect": "Helyes az alábbi eszköz kulcs?", - "@isDeviceKeyCorrect": { - "type": "text", - "placeholders": {} - }, - "incorrectPassphraseOrKey": "Hibás jelszó vagy visszaállítási kulcs", - "@incorrectPassphraseOrKey": { - "type": "text", - "placeholders": {} - }, - "Encryption": "Titkosítás", - "@Encryption": { - "type": "text", - "placeholders": {} - }, - "Currently active": "Jelenleg aktív", - "@Currently active": { - "type": "text", - "placeholders": {} - }, - "crossSigningEnabled": "Kereszt-Aláírás bekapcsolva", - "@crossSigningEnabled": { - "type": "text", - "placeholders": {} - }, - "crossSigningDisabled": "Kereszt-Aláírás kikapcsolva", - "@crossSigningDisabled": { - "type": "text", - "placeholders": {} - }, - "couldNotDecryptMessage": "Nem sikerült visszafejteni a titkosított üzenetet: {error}", - "@couldNotDecryptMessage": { - "type": "text", - "placeholders": { - "error": {} - } - }, - "compareNumbersMatch": "Hasonlítsd össze a számokat a másik eszközön lévőkkel:", - "@compareNumbersMatch": { - "type": "text", - "placeholders": {} - }, - "compareEmojiMatch": "Hasonlítsd össze a hangulatjeleket a másik eszközön lévőkkel:", - "@compareEmojiMatch": { - "type": "text", - "placeholders": {} - }, - "cachedKeys": "Sikeresen betöltöttük a kulcsokat!", - "@cachedKeys": { - "type": "text", - "placeholders": {} - }, - "askVerificationRequest": "Elfogadod {username} hitelesítési kérelmét?", - "@askVerificationRequest": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "askSSSSVerify": "Add meg a biztonságos tárolóhoz tartozó vagy a visszaállítási jelszavadat, a munkamenet hitelesítéséhez.", - "@askSSSSVerify": { - "type": "text", - "placeholders": {} - }, - "askSSSSCache": "Add meg a biztonságos tárolóhoz tartozó vagy a visszaállítási jelszavadat, hogy betöltsük a kulcsaidat.", - "@askSSSSCache": { - "type": "text", - "placeholders": {} - }, - "Accept": "Elfogad", - "@Accept": { + "yourOwnUsername": "A saját felhasználóneved", + "@yourOwnUsername": { "type": "text", "placeholders": {} } -} +} \ No newline at end of file diff --git a/lib/l10n/intl_hy.arb b/lib/l10n/intl_hy.arb new file mode 100644 index 0000000..7c692a4 --- /dev/null +++ b/lib/l10n/intl_hy.arb @@ -0,0 +1,1593 @@ +{ + "@@locale": "hy", + "@@last_modified": "2020-09-23 11:46:02.219595", + "about": "Հավելվածի մասին", + "@about": { + "type": "text", + "placeholders": {} + }, + "accept": "Ընդունել", + "@accept": { + "type": "text", + "placeholders": {} + }, + "acceptedTheInvitation": "{username}-ը ընդունել է հրավերը", + "@acceptedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "account": "Հաշիվ", + "@account": { + "type": "text", + "placeholders": {} + }, + "accountInformation": "Տեղեկություններ հաշվի մասին", + "@accountInformation": { + "type": "text", + "placeholders": {} + }, + "activatedEndToEndEncryption": "{username}-ը ակտիվացրել է end to end կոդավորումը", + "@activatedEndToEndEncryption": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "addGroupDescription": "Ավելացնել խմբի նկարագրություն", + "@addGroupDescription": { + "type": "text", + "placeholders": {} + }, + "admin": "Համակարգող", + "@admin": { + "type": "text", + "placeholders": {} + }, + "alias": "կեղծանուն", + "@alias": { + "type": "text", + "placeholders": {} + }, + "alreadyHaveAnAccount": "Արդեն հաշի՞վ ունեք", + "@alreadyHaveAnAccount": { + "type": "text", + "placeholders": {} + }, + "anyoneCanJoin": "Յուրաքանչյուրը կարող է միանալ", + "@anyoneCanJoin": { + "type": "text", + "placeholders": {} + }, + "archive": "Արխիվ", + "@archive": { + "type": "text", + "placeholders": {} + }, + "archivedRoom": "Արխիվացված սենյակ", + "@archivedRoom": { + "type": "text", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Արդյո՞ք հյուր օգտատերերին թույլատրվում է միանալ", + "@areGuestsAllowedToJoin": { + "type": "text", + "placeholders": {} + }, + "areYouSure": "Համոզվա՞ծ եք", + "@areYouSure": { + "type": "text", + "placeholders": {} + }, + "askSSSSCache": "", + "@askSSSSCache": { + "type": "text", + "placeholders": {} + }, + "askSSSSSign": "", + "@askSSSSSign": { + "type": "text", + "placeholders": {} + }, + "askSSSSVerify": "", + "@askSSSSVerify": { + "type": "text", + "placeholders": {} + }, + "askVerificationRequest": "", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "authentication": "", + "@authentication": { + "type": "text", + "placeholders": {} + }, + "avatarHasBeenChanged": "", + "@avatarHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "banFromChat": "", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "banned": "", + "@banned": { + "type": "text", + "placeholders": {} + }, + "bannedUser": "", + "@bannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "blockDevice": "", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, + "byDefaultYouWillBeConnectedTo": "", + "@byDefaultYouWillBeConnectedTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "cachedKeys": "", + "@cachedKeys": { + "type": "text", + "placeholders": {} + }, + "cancel": "", + "@cancel": { + "type": "text", + "placeholders": {} + }, + "changedTheChatAvatar": "", + "@changedTheChatAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheChatDescriptionTo": "", + "@changedTheChatDescriptionTo": { + "type": "text", + "placeholders": { + "username": {}, + "description": {} + } + }, + "changedTheChatNameTo": "", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, + "changedTheChatPermissions": "", + "@changedTheChatPermissions": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheDisplaynameTo": "", + "@changedTheDisplaynameTo": { + "type": "text", + "placeholders": { + "username": {}, + "displayname": {} + } + }, + "changedTheGuestAccessRules": "", + "@changedTheGuestAccessRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheGuestAccessRulesTo": "", + "@changedTheGuestAccessRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheHistoryVisibility": "", + "@changedTheHistoryVisibility": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheHistoryVisibilityTo": "", + "@changedTheHistoryVisibilityTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheJoinRules": "", + "@changedTheJoinRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheJoinRulesTo": "", + "@changedTheJoinRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "joinRules": {} + } + }, + "changedTheProfileAvatar": "", + "@changedTheProfileAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomAliases": "", + "@changedTheRoomAliases": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomInvitationLink": "", + "@changedTheRoomInvitationLink": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changelog": "", + "@changelog": { + "type": "text", + "placeholders": {} + }, + "changeTheHomeserver": "", + "@changeTheHomeserver": { + "type": "text", + "placeholders": {} + }, + "changeTheme": "", + "@changeTheme": { + "type": "text", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "", + "@changeTheNameOfTheGroup": { + "type": "text", + "placeholders": {} + }, + "changeTheServer": "", + "@changeTheServer": { + "type": "text", + "placeholders": {} + }, + "changeWallpaper": "", + "@changeWallpaper": { + "type": "text", + "placeholders": {} + }, + "channelCorruptedDecryptError": "", + "@channelCorruptedDecryptError": { + "type": "text", + "placeholders": {} + }, + "chat": "", + "@chat": { + "type": "text", + "placeholders": {} + }, + "chatDetails": "", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "chooseAStrongPassword": "", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "chooseAUsername": "", + "@chooseAUsername": { + "type": "text", + "placeholders": {} + }, + "close": "", + "@close": { + "type": "text", + "placeholders": {} + }, + "compareEmojiMatch": "", + "@compareEmojiMatch": { + "type": "text", + "placeholders": {} + }, + "compareNumbersMatch": "", + "@compareNumbersMatch": { + "type": "text", + "placeholders": {} + }, + "confirm": "", + "@confirm": { + "type": "text", + "placeholders": {} + }, + "connect": "", + "@connect": { + "type": "text", + "placeholders": {} + }, + "connectionAttemptFailed": "", + "@connectionAttemptFailed": { + "type": "text", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "contentViewer": "", + "@contentViewer": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "copy": "", + "@copy": { + "type": "text", + "placeholders": {} + }, + "couldNotDecryptMessage": "", + "@couldNotDecryptMessage": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "couldNotSetAvatar": "", + "@couldNotSetAvatar": { + "type": "text", + "placeholders": {} + }, + "couldNotSetDisplayname": "", + "@couldNotSetDisplayname": { + "type": "text", + "placeholders": {} + }, + "countParticipants": "", + "@countParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "create": "", + "@create": { + "type": "text", + "placeholders": {} + }, + "createAccountNow": "", + "@createAccountNow": { + "type": "text", + "placeholders": {} + }, + "createdTheChat": "", + "@createdTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "createNewGroup": "", + "@createNewGroup": { + "type": "text", + "placeholders": {} + }, + "crossSigningDisabled": "", + "@crossSigningDisabled": { + "type": "text", + "placeholders": {} + }, + "crossSigningEnabled": "", + "@crossSigningEnabled": { + "type": "text", + "placeholders": {} + }, + "currentlyActive": "", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "", + "@darkTheme": { + "type": "text", + "placeholders": {} + }, + "dateAndTimeOfDay": "", + "@dateAndTimeOfDay": { + "type": "text", + "placeholders": { + "date": {}, + "timeOfDay": {} + } + }, + "dateWithoutYear": "", + "@dateWithoutYear": { + "type": "text", + "placeholders": { + "month": {}, + "day": {} + } + }, + "dateWithYear": "", + "@dateWithYear": { + "type": "text", + "placeholders": { + "year": {}, + "month": {}, + "day": {} + } + }, + "delete": "", + "@delete": { + "type": "text", + "placeholders": {} + }, + "deleteMessage": "", + "@deleteMessage": { + "type": "text", + "placeholders": {} + }, + "deny": "", + "@deny": { + "type": "text", + "placeholders": {} + }, + "device": "", + "@device": { + "type": "text", + "placeholders": {} + }, + "devices": "", + "@devices": { + "type": "text", + "placeholders": {} + }, + "discardPicture": "", + "@discardPicture": { + "type": "text", + "placeholders": {} + }, + "displaynameHasBeenChanged": "", + "@displaynameHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "donate": "", + "@donate": { + "type": "text", + "placeholders": {} + }, + "downloadFile": "", + "@downloadFile": { + "type": "text", + "placeholders": {} + }, + "editDisplayname": "", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "editJitsiInstance": "", + "@editJitsiInstance": { + "type": "text", + "placeholders": {} + }, + "emoteExists": "", + "@emoteExists": { + "type": "text", + "placeholders": {} + }, + "emoteInvalid": "", + "@emoteInvalid": { + "type": "text", + "placeholders": {} + }, + "emoteSettings": "", + "@emoteSettings": { + "type": "text", + "placeholders": {} + }, + "emoteShortcode": "", + "@emoteShortcode": { + "type": "text", + "placeholders": {} + }, + "emoteWarnNeedToPick": "", + "@emoteWarnNeedToPick": { + "type": "text", + "placeholders": {} + }, + "emptyChat": "", + "@emptyChat": { + "type": "text", + "placeholders": {} + }, + "enableEncryptionWarning": "", + "@enableEncryptionWarning": { + "type": "text", + "placeholders": {} + }, + "encryption": "", + "@encryption": { + "type": "text", + "placeholders": {} + }, + "encryptionAlgorithm": "", + "@encryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "encryptionNotEnabled": "", + "@encryptionNotEnabled": { + "type": "text", + "placeholders": {} + }, + "end2endEncryptionSettings": "", + "@end2endEncryptionSettings": { + "type": "text", + "placeholders": {} + }, + "enterAGroupName": "", + "@enterAGroupName": { + "type": "text", + "placeholders": {} + }, + "enterAUsername": "", + "@enterAUsername": { + "type": "text", + "placeholders": {} + }, + "enterYourHomeserver": "", + "@enterYourHomeserver": { + "type": "text", + "placeholders": {} + }, + "fileName": "", + "@fileName": { + "type": "text", + "placeholders": {} + }, + "fileSize": "", + "@fileSize": { + "type": "text", + "placeholders": {} + }, + "fluffychat": "", + "@fluffychat": { + "type": "text", + "placeholders": {} + }, + "forward": "", + "@forward": { + "type": "text", + "placeholders": {} + }, + "friday": "", + "@friday": { + "type": "text", + "placeholders": {} + }, + "fromJoining": "", + "@fromJoining": { + "type": "text", + "placeholders": {} + }, + "fromTheInvitation": "", + "@fromTheInvitation": { + "type": "text", + "placeholders": {} + }, + "group": "", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupDescription": "", + "@groupDescription": { + "type": "text", + "placeholders": {} + }, + "groupDescriptionHasBeenChanged": "", + "@groupDescriptionHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "", + "@groupIsPublic": { + "type": "text", + "placeholders": {} + }, + "groupWith": "", + "@groupWith": { + "type": "text", + "placeholders": { + "displayname": {} + } + }, + "guestsAreForbidden": "", + "@guestsAreForbidden": { + "type": "text", + "placeholders": {} + }, + "guestsCanJoin": "", + "@guestsCanJoin": { + "type": "text", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "", + "@hasWithdrawnTheInvitationFor": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "help": "", + "@help": { + "type": "text", + "placeholders": {} + }, + "homeserverIsNotCompatible": "", + "@homeserverIsNotCompatible": { + "type": "text", + "placeholders": {} + }, + "id": "", + "@id": { + "type": "text", + "placeholders": {} + }, + "identity": "", + "@identity": { + "type": "text", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "", + "@inviteContact": { + "type": "text", + "placeholders": {} + }, + "inviteContactToGroup": "", + "@inviteContactToGroup": { + "type": "text", + "placeholders": { + "groupName": {} + } + }, + "invited": "", + "@invited": { + "type": "text", + "placeholders": {} + }, + "invitedUser": "", + "@invitedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "invitedUsersOnly": "", + "@invitedUsersOnly": { + "type": "text", + "placeholders": {} + }, + "inviteText": "", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "isDeviceKeyCorrect": "", + "@isDeviceKeyCorrect": { + "type": "text", + "placeholders": {} + }, + "isTyping": "", + "@isTyping": { + "type": "text", + "placeholders": {} + }, + "joinedTheChat": "", + "@joinedTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "keysCached": "", + "@keysCached": { + "type": "text", + "placeholders": {} + }, + "keysMissing": "", + "@keysMissing": { + "type": "text", + "placeholders": {} + }, + "kicked": "", + "@kicked": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickedAndBanned": "", + "@kickedAndBanned": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickFromChat": "", + "@kickFromChat": { + "type": "text", + "placeholders": {} + }, + "lastActiveAgo": "", + "@lastActiveAgo": { + "type": "text", + "placeholders": { + "localizedTimeShort": {} + } + }, + "lastSeenIp": "", + "@lastSeenIp": { + "type": "text", + "placeholders": {} + }, + "lastSeenLongTimeAgo": "", + "@lastSeenLongTimeAgo": { + "type": "text", + "placeholders": {} + }, + "leave": "", + "@leave": { + "type": "text", + "placeholders": {} + }, + "leftTheChat": "", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "", + "@lightTheme": { + "type": "text", + "placeholders": {} + }, + "loadCountMoreParticipants": "", + "@loadCountMoreParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "loadingPleaseWait": "", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "login": "", + "@login": { + "type": "text", + "placeholders": {} + }, + "logInTo": "", + "@logInTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "logout": "", + "@logout": { + "type": "text", + "placeholders": {} + }, + "makeAModerator": "", + "@makeAModerator": { + "type": "text", + "placeholders": {} + }, + "makeAnAdmin": "", + "@makeAnAdmin": { + "type": "text", + "placeholders": {} + }, + "makeSureTheIdentifierIsValid": "", + "@makeSureTheIdentifierIsValid": { + "type": "text", + "placeholders": {} + }, + "messageWillBeRemovedWarning": "", + "@messageWillBeRemovedWarning": { + "type": "text", + "placeholders": {} + }, + "moderator": "", + "@moderator": { + "type": "text", + "placeholders": {} + }, + "monday": "", + "@monday": { + "type": "text", + "placeholders": {} + }, + "muteChat": "", + "@muteChat": { + "type": "text", + "placeholders": {} + }, + "needPantalaimonWarning": "", + "@needPantalaimonWarning": { + "type": "text", + "placeholders": {} + }, + "newMessageInFluffyChat": "", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "newPrivateChat": "", + "@newPrivateChat": { + "type": "text", + "placeholders": {} + }, + "newVerificationRequest": "", + "@newVerificationRequest": { + "type": "text", + "placeholders": {} + }, + "noCrossSignBootstrap": "", + "@noCrossSignBootstrap": { + "type": "text", + "placeholders": {} + }, + "noEmotesFound": "", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "noMegolmBootstrap": "", + "@noMegolmBootstrap": { + "type": "text", + "placeholders": {} + }, + "none": "", + "@none": { + "type": "text", + "placeholders": {} + }, + "noPermission": "", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "notSupportedInWeb": "", + "@notSupportedInWeb": { + "type": "text", + "placeholders": {} + }, + "numberSelected": "", + "@numberSelected": { + "type": "text", + "placeholders": { + "number": {} + } + }, + "ok": "", + "@ok": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupDisabled": "", + "@onlineKeyBackupDisabled": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "", + "@onlineKeyBackupEnabled": { + "type": "text", + "placeholders": {} + }, + "oopsSomethingWentWrong": "", + "@oopsSomethingWentWrong": { + "type": "text", + "placeholders": {} + }, + "openAppToReadMessages": "", + "@openAppToReadMessages": { + "type": "text", + "placeholders": {} + }, + "openCamera": "", + "@openCamera": { + "type": "text", + "placeholders": {} + }, + "optionalGroupName": "", + "@optionalGroupName": { + "type": "text", + "placeholders": {} + }, + "participatingUserDevices": "", + "@participatingUserDevices": { + "type": "text", + "placeholders": {} + }, + "passphraseOrKey": "", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "password": "", + "@password": { + "type": "text", + "placeholders": {} + }, + "pickImage": "", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "play": "", + "@play": { + "type": "text", + "placeholders": { + "fileName": {} + } + }, + "pleaseChooseAUsername": "", + "@pleaseChooseAUsername": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterAMatrixIdentifier": "", + "@pleaseEnterAMatrixIdentifier": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPassword": "", + "@pleaseEnterYourPassword": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourUsername": "", + "@pleaseEnterYourUsername": { + "type": "text", + "placeholders": {} + }, + "publicRooms": "", + "@publicRooms": { + "type": "text", + "placeholders": {} + }, + "recording": "", + "@recording": { + "type": "text", + "placeholders": {} + }, + "redactedAnEvent": "", + "@redactedAnEvent": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "reject": "", + "@reject": { + "type": "text", + "placeholders": {} + }, + "rejectedTheInvitation": "", + "@rejectedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "rejoin": "", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "", + "@removeAllOtherDevices": { + "type": "text", + "placeholders": {} + }, + "removedBy": "", + "@removedBy": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "removeDevice": "", + "@removeDevice": { + "type": "text", + "placeholders": {} + }, + "removeExile": "", + "@removeExile": { + "type": "text", + "placeholders": {} + }, + "removeMessage": "", + "@removeMessage": { + "type": "text", + "placeholders": {} + }, + "renderRichContent": "", + "@renderRichContent": { + "type": "text", + "placeholders": {} + }, + "reply": "", + "@reply": { + "type": "text", + "placeholders": {} + }, + "requestPermission": "", + "@requestPermission": { + "type": "text", + "placeholders": {} + }, + "requestToReadOlderMessages": "", + "@requestToReadOlderMessages": { + "type": "text", + "placeholders": {} + }, + "revokeAllPermissions": "", + "@revokeAllPermissions": { + "type": "text", + "placeholders": {} + }, + "roomHasBeenUpgraded": "", + "@roomHasBeenUpgraded": { + "type": "text", + "placeholders": {} + }, + "saturday": "", + "@saturday": { + "type": "text", + "placeholders": {} + }, + "searchForAChat": "", + "@searchForAChat": { + "type": "text", + "placeholders": {} + }, + "seenByUser": "", + "@seenByUser": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "seenByUserAndCountOthers": "", + "@seenByUserAndCountOthers": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "seenByUserAndUser": "", + "@seenByUserAndUser": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "send": "", + "@send": { + "type": "text", + "placeholders": {} + }, + "sendAMessage": "", + "@sendAMessage": { + "type": "text", + "placeholders": {} + }, + "sendFile": "", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sentAFile": "", + "@sentAFile": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAnAudio": "", + "@sentAnAudio": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAPicture": "", + "@sentAPicture": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentASticker": "", + "@sentASticker": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAVideo": "", + "@sentAVideo": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sessionVerified": "", + "@sessionVerified": { + "type": "text", + "placeholders": {} + }, + "setAProfilePicture": "", + "@setAProfilePicture": { + "type": "text", + "placeholders": {} + }, + "setGroupDescription": "", + "@setGroupDescription": { + "type": "text", + "placeholders": {} + }, + "setInvitationLink": "", + "@setInvitationLink": { + "type": "text", + "placeholders": {} + }, + "setStatus": "", + "@setStatus": { + "type": "text", + "placeholders": {} + }, + "settings": "", + "@settings": { + "type": "text", + "placeholders": {} + }, + "share": "", + "@share": { + "type": "text", + "placeholders": {} + }, + "sharedTheLocation": "", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "signUp": "", + "@signUp": { + "type": "text", + "placeholders": {} + }, + "skip": "", + "@skip": { + "type": "text", + "placeholders": {} + }, + "sourceCode": "", + "@sourceCode": { + "type": "text", + "placeholders": {} + }, + "startYourFirstChat": "", + "@startYourFirstChat": { + "type": "text", + "placeholders": {} + }, + "statusExampleMessage": "", + "@statusExampleMessage": { + "type": "text", + "placeholders": {} + }, + "submit": "", + "@submit": { + "type": "text", + "placeholders": {} + }, + "sunday": "", + "@sunday": { + "type": "text", + "placeholders": {} + }, + "systemTheme": "", + "@systemTheme": { + "type": "text", + "placeholders": {} + }, + "tapToShowMenu": "", + "@tapToShowMenu": { + "type": "text", + "placeholders": {} + }, + "theyDontMatch": "", + "@theyDontMatch": { + "type": "text", + "placeholders": {} + }, + "theyMatch": "", + "@theyMatch": { + "type": "text", + "placeholders": {} + }, + "thisRoomHasBeenArchived": "", + "@thisRoomHasBeenArchived": { + "type": "text", + "placeholders": {} + }, + "thursday": "", + "@thursday": { + "type": "text", + "placeholders": {} + }, + "timeOfDay": "", + "@timeOfDay": { + "type": "text", + "placeholders": { + "hours12": {}, + "hours24": {}, + "minutes": {}, + "suffix": {} + } + }, + "title": "", + "@title": { + "description": "Title for the application", + "type": "text", + "placeholders": {} + }, + "tryToSendAgain": "", + "@tryToSendAgain": { + "type": "text", + "placeholders": {} + }, + "tuesday": "", + "@tuesday": { + "type": "text", + "placeholders": {} + }, + "unbannedUser": "", + "@unbannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "unblockDevice": "", + "@unblockDevice": { + "type": "text", + "placeholders": {} + }, + "unknownDevice": "", + "@unknownDevice": { + "type": "text", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "", + "@unknownEncryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "unknownEvent": "", + "@unknownEvent": { + "type": "text", + "placeholders": { + "type": {} + } + }, + "unknownSessionVerify": "", + "@unknownSessionVerify": { + "type": "text", + "placeholders": {} + }, + "unmuteChat": "", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unreadChats": "", + "@unreadChats": { + "type": "text", + "placeholders": { + "unreadCount": {} + } + }, + "unreadMessages": "", + "@unreadMessages": { + "type": "text", + "placeholders": { + "unreadEvents": {} + } + }, + "unreadMessagesInChats": "", + "@unreadMessagesInChats": { + "type": "text", + "placeholders": { + "unreadEvents": {}, + "unreadChats": {} + } + }, + "useAmoledTheme": "", + "@useAmoledTheme": { + "type": "text", + "placeholders": {} + }, + "userAndOthersAreTyping": "", + "@userAndOthersAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "userAndUserAreTyping": "", + "@userAndUserAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "userIsTyping": "", + "@userIsTyping": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "userLeftTheChat": "", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "", + "@username": { + "type": "text", + "placeholders": {} + }, + "userSentUnknownEvent": "", + "@userSentUnknownEvent": { + "type": "text", + "placeholders": { + "username": {}, + "type": {} + } + }, + "verifiedSession": "", + "@verifiedSession": { + "type": "text", + "placeholders": {} + }, + "verify": "", + "@verify": { + "type": "text", + "placeholders": {} + }, + "verifyManual": "", + "@verifyManual": { + "type": "text", + "placeholders": {} + }, + "verifyStart": "", + "@verifyStart": { + "type": "text", + "placeholders": {} + }, + "verifySuccess": "", + "@verifySuccess": { + "type": "text", + "placeholders": {} + }, + "verifyTitle": "", + "@verifyTitle": { + "type": "text", + "placeholders": {} + }, + "verifyUser": "", + "@verifyUser": { + "type": "text", + "placeholders": {} + }, + "videoCall": "", + "@videoCall": { + "type": "text", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "", + "@visibilityOfTheChatHistory": { + "type": "text", + "placeholders": {} + }, + "visibleForAllParticipants": "", + "@visibleForAllParticipants": { + "type": "text", + "placeholders": {} + }, + "visibleForEveryone": "", + "@visibleForEveryone": { + "type": "text", + "placeholders": {} + }, + "voiceMessage": "", + "@voiceMessage": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "", + "@waitingPartnerAcceptRequest": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerEmoji": "", + "@waitingPartnerEmoji": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerNumbers": "", + "@waitingPartnerNumbers": { + "type": "text", + "placeholders": {} + }, + "wallpaper": "", + "@wallpaper": { + "type": "text", + "placeholders": {} + }, + "warningEncryptionInBeta": "", + "@warningEncryptionInBeta": { + "type": "text", + "placeholders": {} + }, + "wednesday": "", + "@wednesday": { + "type": "text", + "placeholders": {} + }, + "welcomeText": "", + "@welcomeText": { + "type": "text", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "", + "@whoIsAllowedToJoinThisGroup": { + "type": "text", + "placeholders": {} + }, + "writeAMessage": "", + "@writeAMessage": { + "type": "text", + "placeholders": {} + }, + "yes": "", + "@yes": { + "type": "text", + "placeholders": {} + }, + "you": "", + "@you": { + "type": "text", + "placeholders": {} + }, + "youAreInvitedToThisChat": "", + "@youAreInvitedToThisChat": { + "type": "text", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "", + "@youAreNoLongerParticipatingInThisChat": { + "type": "text", + "placeholders": {} + }, + "youCannotInviteYourself": "", + "@youCannotInviteYourself": { + "type": "text", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "", + "@youHaveBeenBannedFromThisChat": { + "type": "text", + "placeholders": {} + }, + "yourOwnUsername": "", + "@yourOwnUsername": { + "type": "text", + "placeholders": {} + } +} \ No newline at end of file diff --git a/lib/l10n/intl_ja.arb b/lib/l10n/intl_ja.arb index be28a96..d85ee8a 100644 --- a/lib/l10n/intl_ja.arb +++ b/lib/l10n/intl_ja.arb @@ -1,12 +1,13 @@ { - "@@last_modified": "2020-06-25T16:02:16.297192", - "About": "このアプリについて", - "@About": { + "@@locale": "ja", + "@@last_modified": "2020-09-23 11:46:02.146406", + "about": "このアプリについて", + "@about": { "type": "text", "placeholders": {} }, - "Accept": "承諾する", - "@Accept": { + "accept": "承諾する", + "@accept": { "type": "text", "placeholders": {} }, @@ -17,13 +18,13 @@ "username": {} } }, - "Account": "アカウント", - "@Account": { + "account": "アカウント", + "@account": { "type": "text", "placeholders": {} }, - "Account informations": "アカウント情報", - "@Account informations": { + "accountInformation": "アカウント情報", + "@accountInformation": { "type": "text", "placeholders": {} }, @@ -34,13 +35,13 @@ "username": {} } }, - "Add a group description": "グループの説明を追加する", - "@Add a group description": { + "addGroupDescription": "グループの説明を追加する", + "@addGroupDescription": { "type": "text", "placeholders": {} }, - "Admin": "管理者", - "@Admin": { + "admin": "管理者", + "@admin": { "type": "text", "placeholders": {} }, @@ -49,33 +50,40 @@ "type": "text", "placeholders": {} }, - "Already have an account?": "アカウントをすでにお持ちですか?", - "@Already have an account?": { + "alreadyHaveAnAccount": "アカウントをすでにお持ちですか?", + "@alreadyHaveAnAccount": { "type": "text", "placeholders": {} }, - "Anyone can join": "誰でも参加できる", - "@Anyone can join": { + "answeredTheCall": "{senderName}は通話に出ました", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "誰でも参加できる", + "@anyoneCanJoin": { "type": "text", "placeholders": {} }, - "Archive": "アーカイブ", - "@Archive": { + "archive": "アーカイブ", + "@archive": { "type": "text", "placeholders": {} }, - "Archived Room": "アーカイブされた部屋", - "@Archived Room": { + "archivedRoom": "アーカイブされた部屋", + "@archivedRoom": { "type": "text", "placeholders": {} }, - "Are guest users allowed to join": "ゲストユーザーの参加を許可する", - "@Are guest users allowed to join": { + "areGuestsAllowedToJoin": "ゲストユーザーの参加を許可する", + "@areGuestsAllowedToJoin": { "type": "text", "placeholders": {} }, - "Are you sure?": "これでよろしいですか?", - "@Are you sure?": { + "areYouSure": "これでよろしいですか?", + "@areYouSure": { "type": "text", "placeholders": {} }, @@ -101,23 +109,23 @@ "username": {} } }, - "Authentication": "認証", - "@Authentication": { + "authentication": "認証", + "@authentication": { "type": "text", "placeholders": {} }, - "Avatar has been changed": "アバターが変更されました", - "@Avatar has been changed": { + "avatarHasBeenChanged": "アバターが変更されました", + "@avatarHasBeenChanged": { "type": "text", "placeholders": {} }, - "Ban from chat": "チャットからBANする", - "@Ban from chat": { + "banFromChat": "チャットからBANする", + "@banFromChat": { "type": "text", "placeholders": {} }, - "Banned": "BANされています", - "@Banned": { + "banned": "BANされています", + "@banned": { "type": "text", "placeholders": {} }, @@ -129,8 +137,8 @@ "targetName": {} } }, - "Block Device": "デバイスをブロックする", - "@Block Device": { + "blockDevice": "デバイスをブロックする", + "@blockDevice": { "type": "text", "placeholders": {} }, @@ -146,8 +154,8 @@ "type": "text", "placeholders": {} }, - "Cancel": "キャンセル", - "@Cancel": { + "cancel": "キャンセル", + "@cancel": { "type": "text", "placeholders": {} }, @@ -158,14 +166,6 @@ "username": {} } }, - "changedTheChatNameTo": "{username}がチャットの名前を「{chatname}」に変更しました", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, "changedTheChatDescriptionTo": "{username}がチャットの説明を「{description}」に変更しました", "@changedTheChatDescriptionTo": { "type": "text", @@ -174,6 +174,14 @@ "description": {} } }, + "changedTheChatNameTo": "{username}がチャットの名前を「{chatname}」に変更しました", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, "changedTheChatPermissions": "{username}がチャットの権限を変更しました", "@changedTheChatPermissions": { "type": "text", @@ -189,11 +197,6 @@ "displayname": {} } }, - "Change the homeserver": "ホームサーバーの変更", - "@Change the homeserver": { - "type": "text", - "placeholders": {} - }, "changedTheGuestAccessRules": "{username}がゲストのアクセスルールを変更しました", "@changedTheGuestAccessRules": { "type": "text", @@ -239,7 +242,7 @@ "joinRules": {} } }, - "changedTheProfileAvatar": "{username}がプロフィールのアバターを変更しました", + "changedTheProfileAvatar": "{username}がアバターを変更しました", "@changedTheProfileAvatar": { "type": "text", "placeholders": { @@ -260,53 +263,63 @@ "username": {} } }, - "Changelog": "変更履歴", - "@Changelog": { + "changelog": "変更履歴", + "@changelog": { "type": "text", "placeholders": {} }, - "Change the name of the group": "グループの名前を変更する", - "@Change the name of the group": { + "changeTheHomeserver": "ホームサーバーの変更", + "@changeTheHomeserver": { "type": "text", "placeholders": {} }, - "Change wallpaper": "壁紙を変更する", - "@Change wallpaper": { + "changeTheme": "スタイルを変更する", + "@changeTheme": { "type": "text", "placeholders": {} }, - "Change the server": "サーバーを変更する", - "@Change the server": { + "changeTheNameOfTheGroup": "グループの名前を変更する", + "@changeTheNameOfTheGroup": { "type": "text", "placeholders": {} }, - "The encryption has been corrupted": "暗号が破損しています", - "@The encryption has been corrupted": { + "changeTheServer": "サーバーを変更する", + "@changeTheServer": { "type": "text", "placeholders": {} }, - "Chat": "チャット", - "@Chat": { + "changeWallpaper": "壁紙を変更する", + "@changeWallpaper": { "type": "text", "placeholders": {} }, - "Chat details": "チャットの詳細", - "@Chat details": { + "channelCorruptedDecryptError": "暗号が破損しています", + "@channelCorruptedDecryptError": { "type": "text", "placeholders": {} }, - "Choose a strong password": "強いパスワードを選択してください", - "@Choose a strong password": { + "chat": "チャット", + "@chat": { "type": "text", "placeholders": {} }, - "Choose a username": "ユーザー名を選択してください", - "@Choose a username": { + "chatDetails": "チャットの詳細", + "@chatDetails": { "type": "text", "placeholders": {} }, - "Close": "閉じる", - "@Close": { + "chooseAStrongPassword": "強いパスワードを選択してください", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "chooseAUsername": "ユーザー名を選択してください", + "@chooseAUsername": { + "type": "text", + "placeholders": {} + }, + "close": "閉じる", + "@close": { "type": "text", "placeholders": {} }, @@ -320,38 +333,38 @@ "type": "text", "placeholders": {} }, - "Confirm": "確認", - "@Confirm": { + "confirm": "確認", + "@confirm": { "type": "text", "placeholders": {} }, - "Connect": "接続", - "@Connect": { + "connect": "接続", + "@connect": { "type": "text", "placeholders": {} }, - "Connection attempt failed": "接続が失敗しました", - "@Connection attempt failed": { + "connectionAttemptFailed": "接続が失敗しました", + "@connectionAttemptFailed": { "type": "text", "placeholders": {} }, - "Contact has been invited to the group": "連絡先に登録された人が招待されました", - "@Contact has been invited to the group": { + "contactHasBeenInvitedToTheGroup": "連絡先に登録された人が招待されました", + "@contactHasBeenInvitedToTheGroup": { "type": "text", "placeholders": {} }, - "Content viewer": "コンテンツビューアー", - "@Content viewer": { + "contentViewer": "コンテンツビューアー", + "@contentViewer": { "type": "text", "placeholders": {} }, - "Copied to clipboard": "クリップボードにコピーされました", - "@Copied to clipboard": { + "copiedToClipboard": "クリップボードにコピーされました", + "@copiedToClipboard": { "type": "text", "placeholders": {} }, - "Copy": "コピー", - "@Copy": { + "copy": "コピー", + "@copy": { "type": "text", "placeholders": {} }, @@ -362,13 +375,13 @@ "error": {} } }, - "Could not set avatar": "アバターをセットできませんでした", - "@Could not set avatar": { + "couldNotSetAvatar": "アバターをセットできませんでした", + "@couldNotSetAvatar": { "type": "text", "placeholders": {} }, - "Could not set displayname": "表示名をセットできませんでした", - "@Could not set displayname": { + "couldNotSetDisplayname": "表示名をセットできませんでした", + "@couldNotSetDisplayname": { "type": "text", "placeholders": {} }, @@ -379,13 +392,13 @@ "count": {} } }, - "Create": "作成", - "@Create": { + "create": "作成", + "@create": { "type": "text", "placeholders": {} }, - "Create account now": "アカウントを作成する", - "@Create account now": { + "createAccountNow": "アカウントを作成する", + "@createAccountNow": { "type": "text", "placeholders": {} }, @@ -396,8 +409,8 @@ "username": {} } }, - "Create new group": "新しいグループを作成する", - "@Create new group": { + "createNewGroup": "新しいグループを作成する", + "@createNewGroup": { "type": "text", "placeholders": {} }, @@ -411,8 +424,13 @@ "type": "text", "placeholders": {} }, - "Currently active": "現在アクティブです", - "@Currently active": { + "currentlyActive": "現在アクティブです", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "ダーク", + "@darkTheme": { "type": "text", "placeholders": {} }, @@ -432,7 +450,7 @@ "day": {} } }, - "dateWithYear": "{year}-{month}-{day}", + "dateWithYear": "{year}/{month}/{day}", "@dateWithYear": { "type": "text", "placeholders": { @@ -441,63 +459,58 @@ "day": {} } }, - "Delete": "削除", - "@Delete": { + "delete": "削除", + "@delete": { "type": "text", "placeholders": {} }, - "Delete message": "メッセージの削除", - "@Delete message": { + "deleteMessage": "メッセージの削除", + "@deleteMessage": { "type": "text", "placeholders": {} }, - "Deny": "拒否", - "@Deny": { + "deny": "拒否", + "@deny": { "type": "text", "placeholders": {} }, - "Device": "デバイス", - "@Device": { + "device": "デバイス", + "@device": { "type": "text", "placeholders": {} }, - "Devices": "デバイス", - "@Devices": { + "devices": "デバイス", + "@devices": { "type": "text", "placeholders": {} }, - "Discard picture": "画像を無視する", - "@Discard picture": { + "discardPicture": "画像を無視する", + "@discardPicture": { "type": "text", "placeholders": {} }, - "Displayname has been changed": "表示名が変更されました", - "@Displayname has been changed": { + "displaynameHasBeenChanged": "表示名が変更されました", + "@displaynameHasBeenChanged": { "type": "text", "placeholders": {} }, - "Download file": "ファイルのダウンロード", - "@Download file": { + "donate": "寄付する", + "@donate": { "type": "text", "placeholders": {} }, - "Edit displayname": "表示名を編集", - "@Edit displayname": { + "downloadFile": "ファイルのダウンロード", + "@downloadFile": { "type": "text", "placeholders": {} }, - "Emote Settings": "Emote設定", - "@Emote Settings": { + "editDisplayname": "表示名を編集", + "@editDisplayname": { "type": "text", "placeholders": {} }, - "Emote shortcode": "Emoteショートコード", - "@Emote shortcode": { - "type": "text", - "placeholders": {} - }, - "emoteWarnNeedToPick": "Emoteショートコードと画像を選択してください!", - "@emoteWarnNeedToPick": { + "editJitsiInstance": "Jitsiインスタンスを編集する", + "@editJitsiInstance": { "type": "text", "placeholders": {} }, @@ -511,103 +524,125 @@ "type": "text", "placeholders": {} }, - "Empty chat": "空のチャット", - "@Empty chat": { + "emoteSettings": "Emote設定", + "@emoteSettings": { "type": "text", "placeholders": {} }, - "You won't be able to disable the encryption anymore. Are you sure?": "一度暗号化を有効にするともとに戻せません。よろしいですか?", - "@You won't be able to disable the encryption anymore. Are you sure?": { + "emoteShortcode": "Emoteショートコード", + "@emoteShortcode": { "type": "text", "placeholders": {} }, - "Encryption": "暗号化", - "@Encryption": { + "emoteWarnNeedToPick": "Emoteショートコードと画像を選択してください!", + "@emoteWarnNeedToPick": { "type": "text", "placeholders": {} }, - "Encryption algorithm": "暗号化アルゴリズム", - "@Encryption algorithm": { + "emptyChat": "空のチャット", + "@emptyChat": { "type": "text", "placeholders": {} }, - "Encryption is not enabled": "暗号化されていません", - "@Encryption is not enabled": { + "enableEncryptionWarning": "一度暗号化を有効にするともとに戻せません。よろしいですか?", + "@enableEncryptionWarning": { "type": "text", "placeholders": {} }, - "End-to-end encryption settings": "エンドツーエンド暗号化設定", - "@End-to-end encryption settings": { + "encryption": "暗号化", + "@encryption": { "type": "text", "placeholders": {} }, - "Enter a group name": "グループ名を入力してください", - "@Enter a group name": { + "encryptionAlgorithm": "暗号化アルゴリズム", + "@encryptionAlgorithm": { "type": "text", "placeholders": {} }, - "Enter a username": "ユーザー名を入力してください", - "@Enter a username": { + "encryptionNotEnabled": "暗号化されていません", + "@encryptionNotEnabled": { "type": "text", "placeholders": {} }, - "Enter your homeserver": "ホームサーバーを入力してください", - "@Enter your homeserver": { + "end2endEncryptionSettings": "エンドツーエンド暗号化設定", + "@end2endEncryptionSettings": { "type": "text", "placeholders": {} }, - "File name": "ファイル名", - "@File name": { + "endedTheCall": "{senderName}は通話を切断しました", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterAGroupName": "グループ名を入力してください", + "@enterAGroupName": { "type": "text", "placeholders": {} }, - "File size": "ファイルサイズ", - "@File size": { + "enterAUsername": "ユーザー名を入力してください", + "@enterAUsername": { "type": "text", "placeholders": {} }, - "FluffyChat": "FluffyChat", - "@FluffyChat": { + "enterYourHomeserver": "ホームサーバーを入力してください", + "@enterYourHomeserver": { "type": "text", "placeholders": {} }, - "Forward": "進む", - "@Forward": { + "fileName": "ファイル名", + "@fileName": { "type": "text", "placeholders": {} }, - "Friday": "金曜日", - "@Friday": { + "fileSize": "ファイルサイズ", + "@fileSize": { "type": "text", "placeholders": {} }, - "From joining": "参加時点から閲覧可能", - "@From joining": { + "fluffychat": "FluffyChat", + "@fluffychat": { "type": "text", "placeholders": {} }, - "From the invitation": "招待時点から閲覧可能", - "@From the invitation": { + "forward": "進む", + "@forward": { "type": "text", "placeholders": {} }, - "Group": "グループ", - "@Group": { + "friday": "金曜日", + "@friday": { "type": "text", "placeholders": {} }, - "Group description": "グループの説明", - "@Group description": { + "fromJoining": "参加時点から閲覧可能", + "@fromJoining": { "type": "text", "placeholders": {} }, - "Group description has been changed": "グループの説明が変更されました", - "@Group description has been changed": { + "fromTheInvitation": "招待時点から閲覧可能", + "@fromTheInvitation": { "type": "text", "placeholders": {} }, - "Group is public": "グループは公開されています", - "@Group is public": { + "group": "グループ", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupDescription": "グループの説明", + "@groupDescription": { + "type": "text", + "placeholders": {} + }, + "groupDescriptionHasBeenChanged": "グループの説明が変更されました", + "@groupDescriptionHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "グループは公開されています", + "@groupIsPublic": { "type": "text", "placeholders": {} }, @@ -618,13 +653,13 @@ "displayname": {} } }, - "Guests are forbidden": "ゲストは許可されていません", - "@Guests are forbidden": { + "guestsAreForbidden": "ゲストは許可されていません", + "@guestsAreForbidden": { "type": "text", "placeholders": {} }, - "Guests can join": "ゲストが許可されています", - "@Guests can join": { + "guestsCanJoin": "ゲストが許可されています", + "@guestsCanJoin": { "type": "text", "placeholders": {} }, @@ -636,23 +671,23 @@ "targetName": {} } }, - "Help": "ヘルプ", - "@Help": { + "help": "ヘルプ", + "@help": { "type": "text", "placeholders": {} }, - "Homeserver is not compatible": "このホームサーバーは互換性がありません", - "@Homeserver is not compatible": { + "homeserverIsNotCompatible": "このホームサーバーは互換性がありません", + "@homeserverIsNotCompatible": { "type": "text", "placeholders": {} }, - "ID": "ID", - "@ID": { + "id": "ID", + "@id": { "type": "text", "placeholders": {} }, - "Identity": "アイデンティティ", - "@Identity": { + "identity": "アイデンティティ", + "@identity": { "type": "text", "placeholders": {} }, @@ -661,8 +696,8 @@ "type": "text", "placeholders": {} }, - "Invite contact": "連絡先から招待する", - "@Invite contact": { + "inviteContact": "連絡先から招待する", + "@inviteContact": { "type": "text", "placeholders": {} }, @@ -673,19 +708,11 @@ "groupName": {} } }, - "Invited": "招待されました", - "@Invited": { + "invited": "招待されました", + "@invited": { "type": "text", "placeholders": {} }, - "inviteText": "{username}がFluffyChatにあなたを招待しました. \n1. FluffyChatをインストールしてください: http://fluffy.chat \n2. 新しくアカウントを作成するかサインインしてください\n3. 招待リンクを開いてください: {link}", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, "invitedUser": "{username}が{targetName}を招待しました", "@invitedUser": { "type": "text", @@ -694,23 +721,26 @@ "targetName": {} } }, - "Invited users only": "招待されたユーザーのみ", - "@Invited users only": { + "invitedUsersOnly": "招待されたユーザーのみ", + "@invitedUsersOnly": { "type": "text", "placeholders": {} }, + "inviteText": "{username}がFluffyChatにあなたを招待しました. \n1. FluffyChatをインストールしてください: https://fluffychat.im \n2. 新しくアカウントを作成するかサインインしてください\n3. 招待リンクを開いてください: {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, "isDeviceKeyCorrect": "このデバイスキーは正しいですか?", "@isDeviceKeyCorrect": { "type": "text", "placeholders": {} }, - "is typing...": "入力しています...", - "@is typing...": { - "type": "text", - "placeholders": {} - }, - "Edit Jitsi instance": "Jitsiインスタンスを編集する", - "@Edit Jitsi instance": { + "isTyping": "入力しています...", + "@isTyping": { "type": "text", "placeholders": {} }, @@ -721,6 +751,11 @@ "username": {} } }, + "joinRoom": "部屋に参加", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, "keysCached": "鍵はキャッシュされたいます", "@keysCached": { "type": "text", @@ -747,33 +782,11 @@ "targetName": {} } }, - "Kick from chat": "チャットからキックする", - "@Kick from chat": { + "kickFromChat": "チャットからキックする", + "@kickFromChat": { "type": "text", "placeholders": {} }, - "Leave": "退室する", - "@Leave": { - "type": "text", - "placeholders": {} - }, - "Left the chat": "退室しました", - "@Left the chat": { - "type": "text", - "placeholders": {} - }, - "Logout": "ログアウト", - "@Logout": { - "type": "text", - "placeholders": {} - }, - "userLeftTheChat": "{username}は退室しました", - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, "lastActiveAgo": "最終アクティブ: {localizedTimeShort}", "@lastActiveAgo": { "type": "text", @@ -781,23 +794,33 @@ "localizedTimeShort": {} } }, - "Last seen IP": "最終IP", - "@Last seen IP": { + "lastSeenIp": "最終IP", + "@lastSeenIp": { "type": "text", "placeholders": {} }, - "License": "ライセンス", - "@License": { + "lastSeenLongTimeAgo": "ずいぶん前", + "@lastSeenLongTimeAgo": { "type": "text", "placeholders": {} }, - "Loading... Please wait": "読み込み中...お待ちください", - "@Loading... Please wait": { + "leave": "退室する", + "@leave": { "type": "text", "placeholders": {} }, - "Load more...": "更に読み込む...", - "@Load more...": { + "leftTheChat": "退室しました", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "ライセンス", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "ライト", + "@lightTheme": { "type": "text", "placeholders": {} }, @@ -808,8 +831,18 @@ "count": {} } }, - "Login": "ログイン", - "@Login": { + "loadingPleaseWait": "読み込み中...お待ちください", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "更に読み込む...", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "login": "ログイン", + "@login": { "type": "text", "placeholders": {} }, @@ -820,53 +853,58 @@ "homeserver": {} } }, - "Make a moderator": "モデレータにする", - "@Make a moderator": { + "logout": "ログアウト", + "@logout": { "type": "text", "placeholders": {} }, - "Make an admin": "管理者にする", - "@Make an admin": { + "makeAModerator": "モデレータにする", + "@makeAModerator": { "type": "text", "placeholders": {} }, - "Make sure the identifier is valid": "識別子が正しいか確認してください", - "@Make sure the identifier is valid": { + "makeAnAdmin": "管理者にする", + "@makeAnAdmin": { "type": "text", "placeholders": {} }, - "Message will be removed for all participants": "メッセージはすべての参加者から消去されます", - "@Message will be removed for all participants": { + "makeSureTheIdentifierIsValid": "識別子が正しいか確認してください", + "@makeSureTheIdentifierIsValid": { "type": "text", "placeholders": {} }, - "Moderator": "モデレータ", - "@Moderator": { + "messageWillBeRemovedWarning": "メッセージはすべての参加者から消去されます", + "@messageWillBeRemovedWarning": { "type": "text", "placeholders": {} }, - "Monday": "月曜日", - "@Monday": { + "moderator": "モデレータ", + "@moderator": { "type": "text", "placeholders": {} }, - "Mute chat": "チャットのミュート", - "@Mute chat": { + "monday": "月曜日", + "@monday": { "type": "text", "placeholders": {} }, - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": "現時点では、エンドツーエンドの暗号化を使用するにはPantalaimonが必要であることに注意してください。", - "@Please be aware that you need Pantalaimon to use end-to-end encryption for now.": { + "muteChat": "チャットのミュート", + "@muteChat": { "type": "text", "placeholders": {} }, - "New message in FluffyChat": "FluffyChatに新しいメッセージがあります", - "@New message in FluffyChat": { + "needPantalaimonWarning": "現時点では、エンドツーエンドの暗号化を使用するにはPantalaimonが必要であることに注意してください。", + "@needPantalaimonWarning": { "type": "text", "placeholders": {} }, - "New private chat": "新しいプライベートチャット", - "@New private chat": { + "newMessageInFluffyChat": "FluffyChatに新しいメッセージがあります", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "newPrivateChat": "新しいプライベートチャット", + "@newPrivateChat": { "type": "text", "placeholders": {} }, @@ -875,43 +913,43 @@ "type": "text", "placeholders": {} }, - "noCrossSignBootstrap": "FluffyChatは現在相互署名機能をサポートしていません。Elementから有効化してください。", + "noCrossSignBootstrap": "FluffyChatは現在相互署名機能をサポートしていません。Riotから有効化してください。", "@noCrossSignBootstrap": { "type": "text", "placeholders": {} }, - "noMegolmBootstrap": "FluffyChatは現在鍵のオンラインバックアップの有効化をサポートしていません。Elementから有効化してください。", + "noEmotesFound": "Emoteは見つかりませんでした😕", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "あなたのスマホにはグーグルサービスがないようですね。プライバシーを保護するための良い選択です!Push通知を受け取るにはmicroGを使うことを推奨しています: https://microg.org/", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "noMegolmBootstrap": "FluffyChatは現在鍵のオンラインバックアップの有効化をサポートしていません。Riotから有効化してください。", "@noMegolmBootstrap": { "type": "text", "placeholders": {} }, - "It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": "あなたのスマホにはグーグルサービスがないようですね。プライバシーを保護するための良い選択です!Push通知を受け取るにはmicroGを使うことを推奨しています: https://microg.org/", - "@It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": { + "none": "なし", + "@none": { "type": "text", "placeholders": {} }, - "None": "なし", - "@None": { + "noPermission": "権限がありません", + "@noPermission": { "type": "text", "placeholders": {} }, - "No emotes found. 😕": "Emoteは見つかりませんでした😕", - "@No emotes found. 😕": { + "noRoomsFound": "部屋は見つかりませんでした...", + "@noRoomsFound": { "type": "text", "placeholders": {} }, - "No permission": "権限がありません", - "@No permission": { - "type": "text", - "placeholders": {} - }, - "No rooms found...": "部屋は見つかりませんでした...", - "@No rooms found...": { - "type": "text", - "placeholders": {} - }, - "Not supported in web": "ウェブではサポートされていません", - "@Not supported in web": { + "notSupportedInWeb": "ウェブではサポートされていません", + "@notSupportedInWeb": { "type": "text", "placeholders": {} }, @@ -937,28 +975,28 @@ "type": "text", "placeholders": {} }, - "Oops something went wrong...": "おっと、何かがうまくいきませんでした...", - "@Oops something went wrong...": { + "oopsSomethingWentWrong": "おっと、何かがうまくいきませんでした...", + "@oopsSomethingWentWrong": { "type": "text", "placeholders": {} }, - "Open app to read messages": "アプリを開いてメッセージを確認してください", - "@Open app to read messages": { + "openAppToReadMessages": "アプリを開いてメッセージを確認してください", + "@openAppToReadMessages": { "type": "text", "placeholders": {} }, - "Open camera": "カメラを開く", - "@Open camera": { + "openCamera": "カメラを開く", + "@openCamera": { "type": "text", "placeholders": {} }, - "(Optional) Group name": "(任意)グループ名", - "@(Optional) Group name": { + "optionalGroupName": "(任意)グループ名", + "@optionalGroupName": { "type": "text", "placeholders": {} }, - "Participating user devices": "ユーザーの使用しているデバイス", - "@Participating user devices": { + "participatingUserDevices": "ユーザーの使用しているデバイス", + "@participatingUserDevices": { "type": "text", "placeholders": {} }, @@ -967,13 +1005,18 @@ "type": "text", "placeholders": {} }, - "Password": "パスワード", - "@Password": { + "password": "パスワード", + "@password": { "type": "text", "placeholders": {} }, - "Pick image": "画像を選択してください", - "@Pick image": { + "pickImage": "画像を選択してください", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "pin": "ピン", + "@pin": { "type": "text", "placeholders": {} }, @@ -984,48 +1027,33 @@ "fileName": {} } }, - "Please choose a username": "ユーザー名を選択してください", - "@Please choose a username": { + "pleaseChooseAUsername": "ユーザー名を選択してください", + "@pleaseChooseAUsername": { "type": "text", "placeholders": {} }, - "Please enter a matrix identifier": "Matrix識別子を入力してください", - "@Please enter a matrix identifier": { + "pleaseEnterAMatrixIdentifier": "Matrix識別子を入力してください", + "@pleaseEnterAMatrixIdentifier": { "type": "text", "placeholders": {} }, - "Please enter your password": "パスワードを入力してください", - "@Please enter your password": { + "pleaseEnterYourPassword": "パスワードを入力してください", + "@pleaseEnterYourPassword": { "type": "text", "placeholders": {} }, - "Please enter your username": "ユーザー名を入力してください", - "@Please enter your username": { + "pleaseEnterYourUsername": "ユーザー名を入力してください", + "@pleaseEnterYourUsername": { "type": "text", "placeholders": {} }, - "Public Rooms": "公開された部屋", - "@Public Rooms": { + "publicRooms": "公開された部屋", + "@publicRooms": { "type": "text", "placeholders": {} }, - "Reject": "拒否", - "@Reject": { - "type": "text", - "placeholders": {} - }, - "Rejoin": "再参加", - "@Rejoin": { - "type": "text", - "placeholders": {} - }, - "Render rich message content": "リッチメッセージをレンダリングする", - "@Render rich message content": { - "type": "text", - "placeholders": {} - }, - "Recording": "録音中", - "@Recording": { + "recording": "録音中", + "@recording": { "type": "text", "placeholders": {} }, @@ -1036,6 +1064,11 @@ "username": {} } }, + "reject": "拒否", + "@reject": { + "type": "text", + "placeholders": {} + }, "rejectedTheInvitation": "{username}は招待を拒否しました", "@rejectedTheInvitation": { "type": "text", @@ -1043,8 +1076,18 @@ "username": {} } }, - "Remove all other devices": "他のデバイスをすべて削除", - "@Remove all other devices": { + "rejoin": "再参加", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "消去", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "他のデバイスをすべて削除", + "@removeAllOtherDevices": { "type": "text", "placeholders": {} }, @@ -1055,75 +1098,58 @@ "username": {} } }, - "Remove device": "デバイスの削除", - "@Remove device": { + "removeDevice": "デバイスの削除", + "@removeDevice": { "type": "text", "placeholders": {} }, - "Remove exile": "追放を取り消し", - "@Remove exile": { + "removeExile": "追放を取り消し", + "@removeExile": { "type": "text", "placeholders": {} }, - "Revoke all permissions": "すべての権限を取り消す", - "@Revoke all permissions": { + "removeMessage": "メッセージを削除", + "@removeMessage": { "type": "text", "placeholders": {} }, - "Remove": "消去", - "@Remove": { + "renderRichContent": "リッチメッセージをレンダリングする", + "@renderRichContent": { "type": "text", "placeholders": {} }, - "Remove message": "メッセージを削除", - "@Remove message": { + "reply": "返信", + "@reply": { "type": "text", "placeholders": {} }, - "Reply": "返信", - "@Reply": { + "requestPermission": "権限を要求する", + "@requestPermission": { "type": "text", "placeholders": {} }, - "Request permission": "権限を要求する", - "@Request permission": { + "requestToReadOlderMessages": "過去のメッセージを読む権限を要求する", + "@requestToReadOlderMessages": { "type": "text", "placeholders": {} }, - "Request to read older messages": "過去のメッセージを読む権限を要求する", - "@Request to read older messages": { + "revokeAllPermissions": "すべての権限を取り消す", + "@revokeAllPermissions": { "type": "text", "placeholders": {} }, - "Room has been upgraded": "部屋はアップグレードされました", - "@Room has been upgraded": { + "roomHasBeenUpgraded": "部屋はアップグレードされました", + "@roomHasBeenUpgraded": { "type": "text", "placeholders": {} }, - "Saturday": "土曜日", - "@Saturday": { + "saturday": "土曜日", + "@saturday": { "type": "text", "placeholders": {} }, - "Share": "共有", - "@Share": { - "type": "text", - "placeholders": {} - }, - "sharedTheLocation": "{username}は現在地を共有しました", - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "Search for a chat": "チャットを検索する", - "@Search for a chat": { - "type": "text", - "placeholders": {} - }, - "Seen a long time ago": "ずいぶん前", - "@Seen a long time ago": { + "searchForAChat": "チャットを検索する", + "@searchForAChat": { "type": "text", "placeholders": {} }, @@ -1134,14 +1160,6 @@ "username": {} } }, - "seenByUserAndUser": "{username}と{username2}が既読", - "@seenByUserAndUser": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, "seenByUserAndCountOthers": "{username}と他{count}名が既読", "@seenByUserAndCountOthers": { "type": "text", @@ -1150,23 +1168,31 @@ "count": {} } }, - "Send": "送信", - "@Send": { + "seenByUserAndUser": "{username}と{username2}が既読", + "@seenByUserAndUser": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "send": "送信", + "@send": { "type": "text", "placeholders": {} }, - "Send a message": "メッセージを送信", - "@Send a message": { + "sendAMessage": "メッセージを送信", + "@sendAMessage": { "type": "text", "placeholders": {} }, - "Send file": "ファイルを送信", - "@Send file": { + "sendFile": "ファイルを送信", + "@sendFile": { "type": "text", "placeholders": {} }, - "Send image": "画像の送信", - "@Send image": { + "sendImage": "画像の送信", + "@sendImage": { "type": "text", "placeholders": {} }, @@ -1205,123 +1231,124 @@ "username": {} } }, + "sentCallInformations": "{senderName}は通話情報を送信しました", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, "sessionVerified": "セッションは確認済みです", "@sessionVerified": { "type": "text", "placeholders": {} }, - "Set a profile picture": "プロフィール画像を設定する", - "@Set a profile picture": { + "setAProfilePicture": "プロフィール画像を設定する", + "@setAProfilePicture": { "type": "text", "placeholders": {} }, - "Set group description": "グループの説明を設定する", - "@Set group description": { + "setGroupDescription": "グループの説明を設定する", + "@setGroupDescription": { "type": "text", "placeholders": {} }, - "Set invitation link": "招待リンクを設定する", - "@Set invitation link": { + "setInvitationLink": "招待リンクを設定する", + "@setInvitationLink": { "type": "text", "placeholders": {} }, - "Set status": "ステータスの設定", - "@Set status": { + "setStatus": "ステータスの設定", + "@setStatus": { "type": "text", "placeholders": {} }, - "Settings": "設定", - "@Settings": { + "settings": "設定", + "@settings": { "type": "text", "placeholders": {} }, - "Sign up": "サインアップ", - "@Sign up": { + "share": "共有", + "@share": { "type": "text", "placeholders": {} }, - "Skip": "スキップ", - "@Skip": { + "sharedTheLocation": "{username}は現在地を共有しました", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "signUp": "サインアップ", + "@signUp": { "type": "text", "placeholders": {} }, - "Change your style": "スタイルを変更する", - "@Change your style": { + "skip": "スキップ", + "@skip": { "type": "text", "placeholders": {} }, - "System": "システム", - "@System": { + "sourceCode": "ソースコード", + "@sourceCode": { "type": "text", "placeholders": {} }, - "How are you today?": "お元気ですか?", - "@How are you today?": { + "startedACall": "{senderName}は通話を開始しました", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "startYourFirstChat": "初めてのチャットを開始してください(^_^)", + "@startYourFirstChat": { "type": "text", "placeholders": {} }, - "Light": "ライト", - "@Light": { + "statusExampleMessage": "お元気ですか?", + "@statusExampleMessage": { "type": "text", "placeholders": {} }, - "Dark": "ダーク", - "@Dark": { + "submit": "送信", + "@submit": { "type": "text", "placeholders": {} }, - "Use Amoled compatible colors?": "有機EL(Amoled)対応の色にしますか?", - "@Use Amoled compatible colors?": { + "sunday": "日曜日", + "@sunday": { "type": "text", "placeholders": {} }, - "Source code": "ソースコード", - "@Source code": { + "systemTheme": "システム", + "@systemTheme": { "type": "text", "placeholders": {} }, - "Start your first chat :-)": "初めてのチャットを開始してください(^_^)", - "@Start your first chat :-)": { + "tapToShowMenu": "メニューを表示するにはタップしてください", + "@tapToShowMenu": { "type": "text", "placeholders": {} }, - "Submit": "送信", - "@Submit": { + "theyDontMatch": "違います", + "@theyDontMatch": { "type": "text", "placeholders": {} }, - "Sunday": "日曜日", - "@Sunday": { + "theyMatch": "一致しています", + "@theyMatch": { "type": "text", "placeholders": {} }, - "Donate": "寄付する", - "@Donate": { + "thisRoomHasBeenArchived": "この部屋はアーカイブされています。", + "@thisRoomHasBeenArchived": { "type": "text", "placeholders": {} }, - "Tap to show menu": "メニューを表示するにはタップしてください", - "@Tap to show menu": { - "type": "text", - "placeholders": {} - }, - "They Don't Match": "違います", - "@They Don't Match": { - "type": "text", - "placeholders": {} - }, - "They Match": "一致しています", - "@They Match": { - "type": "text", - "placeholders": {} - }, - "This room has been archived.": "この部屋はアーカイブされています。", - "@This room has been archived.": { - "type": "text", - "placeholders": {} - }, - "Thursday": "木曜日", - "@Thursday": { + "thursday": "木曜日", + "@thursday": { "type": "text", "placeholders": {} }, @@ -1341,13 +1368,13 @@ "type": "text", "placeholders": {} }, - "Try to send again": "送信し直してみる", - "@Try to send again": { + "tryToSendAgain": "送信し直してみる", + "@tryToSendAgain": { "type": "text", "placeholders": {} }, - "Tuesday": "火曜日", - "@Tuesday": { + "tuesday": "火曜日", + "@tuesday": { "type": "text", "placeholders": {} }, @@ -1359,28 +1386,18 @@ "targetName": {} } }, - "Unblock Device": "デバイスをブロック解除する", - "@Unblock Device": { + "unblockDevice": "デバイスをブロック解除する", + "@unblockDevice": { "type": "text", "placeholders": {} }, - "Unmute chat": "チャットをミュート解除する", - "@Unmute chat": { + "unknownDevice": "未知デバイス", + "@unknownDevice": { "type": "text", "placeholders": {} }, - "Unknown device": "未知デバイス", - "@Unknown device": { - "type": "text", - "placeholders": {} - }, - "Unknown encryption algorithm": "未知の暗号化アルゴリズム", - "@Unknown encryption algorithm": { - "type": "text", - "placeholders": {} - }, - "unknownSessionVerify": "未知のセッションです。確認してください。", - "@unknownSessionVerify": { + "unknownEncryptionAlgorithm": "未知の暗号化アルゴリズム", + "@unknownEncryptionAlgorithm": { "type": "text", "placeholders": {} }, @@ -1391,6 +1408,21 @@ "type": {} } }, + "unknownSessionVerify": "未知のセッションです。確認してください。", + "@unknownSessionVerify": { + "type": "text", + "placeholders": {} + }, + "unmuteChat": "チャットをミュート解除する", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unpin": "ピンを外す", + "@unpin": { + "type": "text", + "placeholders": {} + }, "unreadChats": "{unreadCount}の未読メッセージ", "@unreadChats": { "type": "text", @@ -1413,6 +1445,11 @@ "unreadChats": {} } }, + "useAmoledTheme": "有機EL(Amoled)対応の色にしますか?", + "@useAmoledTheme": { + "type": "text", + "placeholders": {} + }, "userAndOthersAreTyping": "{username}と他{count}名が入力しています...", "@userAndOthersAreTyping": { "type": "text", @@ -1429,11 +1466,6 @@ "username2": {} } }, - "Username": "ユーザー名", - "@Username": { - "type": "text", - "placeholders": {} - }, "userIsTyping": "{username}が入力しています...", "@userIsTyping": { "type": "text", @@ -1441,6 +1473,18 @@ "username": {} } }, + "userLeftTheChat": "{username}は退室しました", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "ユーザー名", + "@username": { + "type": "text", + "placeholders": {} + }, "userSentUnknownEvent": "{username}は{type}イベントを送信しました", "@userSentUnknownEvent": { "type": "text", @@ -1449,8 +1493,13 @@ "type": {} } }, - "Verify": "確認", - "@Verify": { + "verifiedSession": "セッションの確認ができました!", + "@verifiedSession": { + "type": "text", + "placeholders": {} + }, + "verify": "確認", + "@verify": { "type": "text", "placeholders": {} }, @@ -1459,11 +1508,6 @@ "type": "text", "placeholders": {} }, - "verifiedSession": "セッションの確認ができました!", - "@verifiedSession": { - "type": "text", - "placeholders": {} - }, "verifyStart": "確認を始める", "@verifyStart": { "type": "text", @@ -1479,33 +1523,33 @@ "type": "text", "placeholders": {} }, - "Verify User": "ユーザーの認証", - "@Verify User": { + "verifyUser": "ユーザーの認証", + "@verifyUser": { "type": "text", "placeholders": {} }, - "Video call": "音声通話", - "@Video call": { + "videoCall": "音声通話", + "@videoCall": { "type": "text", "placeholders": {} }, - "Visible for all participants": "すべての参加者が閲覧可能", - "@Visible for all participants": { + "visibilityOfTheChatHistory": "チャット履歴の表示", + "@visibilityOfTheChatHistory": { "type": "text", "placeholders": {} }, - "Visible for everyone": "すべての人が閲覧可能", - "@Visible for everyone": { + "visibleForAllParticipants": "すべての参加者が閲覧可能", + "@visibleForAllParticipants": { "type": "text", "placeholders": {} }, - "Visibility of the chat history": "チャット履歴の表示", - "@Visibility of the chat history": { + "visibleForEveryone": "すべての人が閲覧可能", + "@visibleForEveryone": { "type": "text", "placeholders": {} }, - "Voice message": "ボイスメッセージ", - "@Voice message": { + "voiceMessage": "ボイスメッセージ", + "@voiceMessage": { "type": "text", "placeholders": {} }, @@ -1524,69 +1568,69 @@ "type": "text", "placeholders": {} }, - "Wallpaper": "壁紙", - "@Wallpaper": { + "wallpaper": "壁紙", + "@wallpaper": { "type": "text", "placeholders": {} }, - "End to end encryption is currently in Beta! Use at your own risk!": "エンドツーエンド暗号化は現在ベータ版です!これは自分自身の責任で行ってください!", - "@End to end encryption is currently in Beta! Use at your own risk!": { + "warningEncryptionInBeta": "エンドツーエンド暗号化は現在ベータ版です!これは自分自身の責任で行ってください!", + "@warningEncryptionInBeta": { "type": "text", "placeholders": {} }, - "Wednesday": "水曜日", - "@Wednesday": { + "wednesday": "水曜日", + "@wednesday": { "type": "text", "placeholders": {} }, - "Welcome to the cutest instant messenger in the matrix network.": "Matrixネットワークで一番かわいいチャットアプリへようこそ。", - "@Welcome to the cutest instant messenger in the matrix network.": { + "welcomeText": "matrixネットワークで一番かわいいチャットアプリへようこそ。", + "@welcomeText": { "type": "text", "placeholders": {} }, - "Who is allowed to join this group": "誰がこのチャットに入れますか", - "@Who is allowed to join this group": { + "whoIsAllowedToJoinThisGroup": "誰がこのチャットに入れますか", + "@whoIsAllowedToJoinThisGroup": { "type": "text", "placeholders": {} }, - "Write a message...": "メッセージを入力してください...", - "@Write a message...": { + "writeAMessage": "メッセージを入力してください...", + "@writeAMessage": { "type": "text", "placeholders": {} }, - "Yes": "はい", - "@Yes": { + "yes": "はい", + "@yes": { "type": "text", "placeholders": {} }, - "You": "あなた", - "@You": { + "you": "あなた", + "@you": { "type": "text", "placeholders": {} }, - "You are invited to this chat": "チャットに招待されています", - "@You are invited to this chat": { + "youAreInvitedToThisChat": "チャットに招待されています", + "@youAreInvitedToThisChat": { "type": "text", "placeholders": {} }, - "You are no longer participating in this chat": "あなたはもうこのチャットの参加者ではありません", - "@You are no longer participating in this chat": { + "youAreNoLongerParticipatingInThisChat": "あなたはもうこのチャットの参加者ではありません", + "@youAreNoLongerParticipatingInThisChat": { "type": "text", "placeholders": {} }, - "You cannot invite yourself": "自分自身を招待することはできません", - "@You cannot invite yourself": { + "youCannotInviteYourself": "自分自身を招待することはできません", + "@youCannotInviteYourself": { "type": "text", "placeholders": {} }, - "You have been banned from this chat": "チャットからBANされてしまいました", - "@You have been banned from this chat": { + "youHaveBeenBannedFromThisChat": "チャットからBANされてしまいました", + "@youHaveBeenBannedFromThisChat": { "type": "text", "placeholders": {} }, - "Your own username": "あなたのユーザー名", - "@Your own username": { + "yourOwnUsername": "あなたのユーザー名", + "@yourOwnUsername": { "type": "text", "placeholders": {} } -} +} \ No newline at end of file diff --git a/lib/l10n/intl_pl.arb b/lib/l10n/intl_pl.arb index 748c04c..2d9c474 100644 --- a/lib/l10n/intl_pl.arb +++ b/lib/l10n/intl_pl.arb @@ -1,7 +1,8 @@ { - "@@last_modified": "2020-05-07T16:53:12.100694", - "About": "O nas", - "@About": { + "@@locale": "pl", + "@@last_modified": "2020-09-23 11:46:02.094481", + "about": "O nas", + "@about": { "type": "text", "placeholders": {} }, @@ -12,13 +13,13 @@ "username": {} } }, - "Account": "Konto", - "@Account": { + "account": "Konto", + "@account": { "type": "text", "placeholders": {} }, - "Account informations": "Informacje o koncie", - "@Account informations": { + "accountInformation": "Informacje o koncie", + "@accountInformation": { "type": "text", "placeholders": {} }, @@ -29,13 +30,13 @@ "username": {} } }, - "Add a group description": "Dodaj opis grupy", - "@Add a group description": { + "addGroupDescription": "Dodaj opis grupy", + "@addGroupDescription": { "type": "text", "placeholders": {} }, - "Admin": "Admin", - "@Admin": { + "admin": "Admin", + "@admin": { "type": "text", "placeholders": {} }, @@ -44,53 +45,53 @@ "type": "text", "placeholders": {} }, - "Already have an account?": "Masz już konto?", - "@Already have an account?": { + "alreadyHaveAnAccount": "Masz już konto?", + "@alreadyHaveAnAccount": { "type": "text", "placeholders": {} }, - "Anyone can join": "Każdy może dołączyć", - "@Anyone can join": { + "anyoneCanJoin": "Każdy może dołączyć", + "@anyoneCanJoin": { "type": "text", "placeholders": {} }, - "Archive": "Archiwum", - "@Archive": { + "archive": "Archiwum", + "@archive": { "type": "text", "placeholders": {} }, - "Archived Room": "Zarchiwizowane pokoje", - "@Archived Room": { + "archivedRoom": "Zarchiwizowane pokoje", + "@archivedRoom": { "type": "text", "placeholders": {} }, - "Are guest users allowed to join": "Czy użytkownicy-goście mogą dołączyć", - "@Are guest users allowed to join": { + "areGuestsAllowedToJoin": "Czy użytkownicy-goście mogą dołączyć", + "@areGuestsAllowedToJoin": { "type": "text", "placeholders": {} }, - "Are you sure?": "Jesteś pewny/-a?", - "@Are you sure?": { + "areYouSure": "Jesteś pewny/-a?", + "@areYouSure": { "type": "text", "placeholders": {} }, - "Authentication": "Autoryzacja", - "@Authentication": { + "authentication": "Autoryzacja", + "@authentication": { "type": "text", "placeholders": {} }, - "Avatar has been changed": "Zdjęcie profilowe zostało zmienione", - "@Avatar has been changed": { + "avatarHasBeenChanged": "Zdjęcie profilowe zostało zmienione", + "@avatarHasBeenChanged": { "type": "text", "placeholders": {} }, - "Ban from chat": "Ban na czacie", - "@Ban from chat": { + "banFromChat": "Ban na czacie", + "@banFromChat": { "type": "text", "placeholders": {} }, - "Banned": "Zbanowany/-a", - "@Banned": { + "banned": "Zbanowany/-a", + "@banned": { "type": "text", "placeholders": {} }, @@ -109,8 +110,8 @@ "homeserver": {} } }, - "Cancel": "Anuluj", - "@Cancel": { + "cancel": "Anuluj", + "@cancel": { "type": "text", "placeholders": {} }, @@ -121,14 +122,6 @@ "username": {} } }, - "changedTheChatNameTo": "{username} zmienił/-a nick na: '{chatname}'", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, "changedTheChatDescriptionTo": "{username} zmienił/-a opis czatu na: '{description}'", "@changedTheChatDescriptionTo": { "type": "text", @@ -137,6 +130,14 @@ "description": {} } }, + "changedTheChatNameTo": "{username} zmienił/-a nick na: '{chatname}'", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, "changedTheChatPermissions": "{username} zmienił/-a uprawnienia czatu", "@changedTheChatPermissions": { "type": "text", @@ -152,11 +153,6 @@ "displayname": {} } }, - "Change the homeserver": "Zmień serwer domyślny", - "@Change the homeserver": { - "type": "text", - "placeholders": {} - }, "changedTheGuestAccessRules": "{username} zmienił/-a zasady dostępu dla gości", "@changedTheGuestAccessRules": { "type": "text", @@ -223,83 +219,93 @@ "username": {} } }, - "Changelog": "Dziennik zmian", - "@Changelog": { + "changelog": "Dziennik zmian", + "@changelog": { "type": "text", "placeholders": {} }, - "Change the name of the group": "Zmień nazwę grupy", - "@Change the name of the group": { + "changeTheHomeserver": "Zmień serwer domyślny", + "@changeTheHomeserver": { "type": "text", "placeholders": {} }, - "Change wallpaper": "Zmień tapetę", - "@Change wallpaper": { + "changeTheme": "Zmień swój styl", + "@changeTheme": { "type": "text", "placeholders": {} }, - "Change the server": "Zmień tapetę", - "@Change the server": { + "changeTheNameOfTheGroup": "Zmień nazwę grupy", + "@changeTheNameOfTheGroup": { "type": "text", "placeholders": {} }, - "The encryption has been corrupted": "Szyfrowanie zostało uszkodzone", - "@The encryption has been corrupted": { + "changeTheServer": "Zmień tapetę", + "@changeTheServer": { "type": "text", "placeholders": {} }, - "Chat details": "Szczegóły czatu", - "@Chat details": { + "changeWallpaper": "Zmień tapetę", + "@changeWallpaper": { "type": "text", "placeholders": {} }, - "Choose a strong password": "Wybierz silne hasło", - "@Choose a strong password": { + "channelCorruptedDecryptError": "Szyfrowanie zostało uszkodzone", + "@channelCorruptedDecryptError": { "type": "text", "placeholders": {} }, - "Choose a username": "Wybierz nick", - "@Choose a username": { + "chatDetails": "Szczegóły czatu", + "@chatDetails": { "type": "text", "placeholders": {} }, - "Close": "Zamknij", - "@Close": { + "chooseAStrongPassword": "Wybierz silne hasło", + "@chooseAStrongPassword": { "type": "text", "placeholders": {} }, - "Confirm": "Potwierdź", - "@Confirm": { + "chooseAUsername": "Wybierz nick", + "@chooseAUsername": { "type": "text", "placeholders": {} }, - "Connect": "Połącz", - "@Connect": { + "close": "Zamknij", + "@close": { "type": "text", "placeholders": {} }, - "Connection attempt failed": "Próba połączenia nie powiodła się", - "@Connection attempt failed": { + "confirm": "Potwierdź", + "@confirm": { "type": "text", "placeholders": {} }, - "Contact has been invited to the group": "Kontakt został zaproszony do grupy", - "@Contact has been invited to the group": { + "connect": "Połącz", + "@connect": { "type": "text", "placeholders": {} }, - "Content viewer": "Przeglądarka treści", - "@Content viewer": { + "connectionAttemptFailed": "Próba połączenia nie powiodła się", + "@connectionAttemptFailed": { "type": "text", "placeholders": {} }, - "Copied to clipboard": "Skopiowano do schowka", - "@Copied to clipboard": { + "contactHasBeenInvitedToTheGroup": "Kontakt został zaproszony do grupy", + "@contactHasBeenInvitedToTheGroup": { "type": "text", "placeholders": {} }, - "Copy": "Kopiuj", - "@Copy": { + "contentViewer": "Przeglądarka treści", + "@contentViewer": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "Skopiowano do schowka", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "copy": "Kopiuj", + "@copy": { "type": "text", "placeholders": {} }, @@ -308,15 +314,15 @@ "type": "text", "placeholders": { "error": {} - } + } }, - "Could not set avatar": "Nie można ustawić zdjęcia profilowego", - "@Could not set avatar": { + "couldNotSetAvatar": "Nie można ustawić zdjęcia profilowego", + "@couldNotSetAvatar": { "type": "text", "placeholders": {} }, - "Could not set displayname": "Nie można ustawić wyświetlanego nicku", - "@Could not set displayname": { + "couldNotSetDisplayname": "Nie można ustawić wyświetlanego nicku", + "@couldNotSetDisplayname": { "type": "text", "placeholders": {} }, @@ -327,13 +333,13 @@ "count": {} } }, - "Create": "Stwórz", - "@Create": { + "create": "Stwórz", + "@create": { "type": "text", "placeholders": {} }, - "Create account now": "Stwórz konto teraz", - "@Create account now": { + "createAccountNow": "Stwórz konto teraz", + "@createAccountNow": { "type": "text", "placeholders": {} }, @@ -344,8 +350,13 @@ "username": {} } }, - "Create new group": "Stwórz nową grupę", - "@Create new group": { + "createNewGroup": "Stwórz nową grupę", + "@createNewGroup": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "Ciemny", + "@darkTheme": { "type": "text", "placeholders": {} }, @@ -374,143 +385,153 @@ "day": {} } }, - "Delete": "Usuń", - "@Delete": { + "delete": "Usuń", + "@delete": { "type": "text", "placeholders": {} }, - "Delete message": "Usuń wiadomość", - "@Delete message": { + "deleteMessage": "Usuń wiadomość", + "@deleteMessage": { "type": "text", "placeholders": {} }, - "Deny": "Odrzuć", - "@Deny": { + "deny": "Odrzuć", + "@deny": { "type": "text", "placeholders": {} }, - "Device": "Urządzenie", - "@Device": { + "device": "Urządzenie", + "@device": { "type": "text", "placeholders": {} }, - "Devices": "Urządzenia", - "@Devices": { + "devices": "Urządzenia", + "@devices": { "type": "text", "placeholders": {} }, - "Discard picture": "Odrzuć zdjęcie", - "@Discard picture": { + "discardPicture": "Odrzuć zdjęcie", + "@discardPicture": { "type": "text", "placeholders": {} }, - "Displayname has been changed": "Wyświetlany nick został zmieniony", - "@Displayname has been changed": { + "displaynameHasBeenChanged": "Wyświetlany nick został zmieniony", + "@displaynameHasBeenChanged": { "type": "text", "placeholders": {} }, - "Download file": "Pobierz plik", - "@Download file": { + "donate": "Wsparcie", + "@donate": { "type": "text", "placeholders": {} }, - "Edit displayname": "Edytuj wyświetlany nick", - "@Edit displayname": { + "downloadFile": "Pobierz plik", + "@downloadFile": { "type": "text", "placeholders": {} }, - "Empty chat": "Pusty czat", - "@Empty chat": { + "editDisplayname": "Edytuj wyświetlany nick", + "@editDisplayname": { "type": "text", "placeholders": {} }, - "You won't be able to disable the encryption anymore. Are you sure?": "Nie będziesz już mógł wyłączyć szyfrowania. Jesteś pewny?", - "@You won't be able to disable the encryption anymore. Are you sure?": { + "editJitsiInstance": "Edytuj instancje Jitsi", + "@editJitsiInstance": { "type": "text", "placeholders": {} }, - "Encryption algorithm": "Algorytm szyfrowania", - "@Encryption algorithm": { + "emptyChat": "Pusty czat", + "@emptyChat": { "type": "text", "placeholders": {} }, - "Encryption is not enabled": "Szyfrowanie nie jest włączone", - "@Encryption is not enabled": { + "enableEncryptionWarning": "Nie będziesz już mógł wyłączyć szyfrowania. Jesteś pewny?", + "@enableEncryptionWarning": { "type": "text", "placeholders": {} }, - "End-to-end encryption settings": "Ustawienia szyfrowania end-to-end", - "@End-to-end encryption settings": { + "encryptionAlgorithm": "Algorytm szyfrowania", + "@encryptionAlgorithm": { "type": "text", "placeholders": {} }, - "Enter a group name": "Wpisz nazwę grupy", - "@Enter a group name": { + "encryptionNotEnabled": "Szyfrowanie nie jest włączone", + "@encryptionNotEnabled": { "type": "text", "placeholders": {} }, - "Enter a username": "Wpisz nick", - "@Enter a username": { + "end2endEncryptionSettings": "Ustawienia szyfrowania end-to-end", + "@end2endEncryptionSettings": { "type": "text", "placeholders": {} }, - "Enter your homeserver": "Wpisz swój serwer domowy", - "@Enter your homeserver": { + "enterAGroupName": "Wpisz nazwę grupy", + "@enterAGroupName": { "type": "text", "placeholders": {} }, - "File name": "Nazwa pliku", - "@File name": { + "enterAUsername": "Wpisz nick", + "@enterAUsername": { "type": "text", "placeholders": {} }, - "File size": "Rozmiar pliku", - "@File size": { + "enterYourHomeserver": "Wpisz swój serwer domowy", + "@enterYourHomeserver": { "type": "text", "placeholders": {} }, - "FluffyChat": "FluffyChat", - "@FluffyChat": { + "fileName": "Nazwa pliku", + "@fileName": { "type": "text", "placeholders": {} }, - "Forward": "Przekaż", - "@Forward": { + "fileSize": "Rozmiar pliku", + "@fileSize": { "type": "text", "placeholders": {} }, - "Friday": "Piątek", - "@Friday": { + "fluffychat": "FluffyChat", + "@fluffychat": { "type": "text", "placeholders": {} }, - "From joining": "Od dołączenia", - "@From joining": { + "forward": "Przekaż", + "@forward": { "type": "text", "placeholders": {} }, - "From the invitation": "Od zaproszenia", - "@From the invitation": { + "friday": "Piątek", + "@friday": { "type": "text", "placeholders": {} }, - "Group": "Grupa", - "@Group": { + "fromJoining": "Od dołączenia", + "@fromJoining": { "type": "text", "placeholders": {} }, - "Group description": "Opis grupy", - "@Group description": { + "fromTheInvitation": "Od zaproszenia", + "@fromTheInvitation": { "type": "text", "placeholders": {} }, - "Group description has been changed": "Opis grupy został zmieniony", - "@Group description has been changed": { + "group": "Grupa", + "@group": { "type": "text", "placeholders": {} }, - "Group is public": "Grupa jest publiczna", - "@Group is public": { + "groupDescription": "Opis grupy", + "@groupDescription": { + "type": "text", + "placeholders": {} + }, + "groupDescriptionHasBeenChanged": "Opis grupy został zmieniony", + "@groupDescriptionHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "Grupa jest publiczna", + "@groupIsPublic": { "type": "text", "placeholders": {} }, @@ -521,13 +542,13 @@ "displayname": {} } }, - "Guests are forbidden": "Goście są zabronieni", - "@Guests are forbidden": { + "guestsAreForbidden": "Goście są zabronieni", + "@guestsAreForbidden": { "type": "text", "placeholders": {} }, - "Guests can join": "Goście mogą dołączyć", - "@Guests can join": { + "guestsCanJoin": "Goście mogą dołączyć", + "@guestsCanJoin": { "type": "text", "placeholders": {} }, @@ -539,28 +560,28 @@ "targetName": {} } }, - "Help": "Pomoc", - "@Help": { + "help": "Pomoc", + "@help": { "type": "text", "placeholders": {} }, - "Homeserver is not compatible": "Serwer domowy nie jest kompatybilny", - "@Homeserver is not compatible": { + "homeserverIsNotCompatible": "Serwer domowy nie jest kompatybilny", + "@homeserverIsNotCompatible": { "type": "text", "placeholders": {} }, - "ID": "ID", - "@ID": { + "id": "ID", + "@id": { "type": "text", "placeholders": {} }, - "Identity": "Tożsamość", - "@Identity": { + "identity": "Tożsamość", + "@identity": { "type": "text", "placeholders": {} }, - "Invite contact": "Zaproś kontakty", - "@Invite contact": { + "inviteContact": "Zaproś kontakty", + "@inviteContact": { "type": "text", "placeholders": {} }, @@ -571,19 +592,11 @@ "groupName": {} } }, - "Invited": "Zaproszono", - "@Invited": { + "invited": "Zaproszono", + "@invited": { "type": "text", "placeholders": {} }, - "inviteText": "{username} zaprosił/-a cię do FluffyChat. \n1. Zainstaluj FluffyChat: http://fluffy.chat \n2. Zarejestuj się lub zaloguj \n3. Otwórz link zaproszenia: {link}", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, "invitedUser": "{username} zaprosił/-a {targetName}", "@invitedUser": { "type": "text", @@ -592,18 +605,21 @@ "targetName": {} } }, - "Invited users only": "Tylko zaproszeni użytkownicy", - "@Invited users only": { + "invitedUsersOnly": "Tylko zaproszeni użytkownicy", + "@invitedUsersOnly": { "type": "text", "placeholders": {} }, - "is typing...": "pisze...", - "@is typing...": { + "inviteText": "{username} zaprosił/-a cię do FluffyChat. \n1. Zainstaluj FluffyChat: https://fluffychat.im \n2. Zarejestuj się lub zaloguj \n3. Otwórz link zaproszenia: {link}", + "@inviteText": { "type": "text", - "placeholders": {} + "placeholders": { + "username": {}, + "link": {} + } }, - "Edit Jitsi instance": "Edytuj instancje Jitsi", - "@Edit Jitsi instance": { + "isTyping": "pisze...", + "@isTyping": { "type": "text", "placeholders": {} }, @@ -630,33 +646,11 @@ "targetName": {} } }, - "Kick from chat": "Wyrzuć z czatu", - "@Kick from chat": { + "kickFromChat": "Wyrzuć z czatu", + "@kickFromChat": { "type": "text", "placeholders": {} }, - "Leave": "wyjdź", - "@Leave": { - "type": "text", - "placeholders": {} - }, - "Left the chat": "Opuścił/-a czat", - "@Left the chat": { - "type": "text", - "placeholders": {} - }, - "Logout": "Wyloguj", - "@Logout": { - "type": "text", - "placeholders": {} - }, - "userLeftTheChat": "{username} opuścił/-a czat", - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, "lastActiveAgo": "Ostatnio widziano: {localizedTimeShort}", "@lastActiveAgo": { "type": "text", @@ -664,30 +658,45 @@ "localizedTimeShort": {} } }, - "Last seen IP": "Ostatnie widziane IP", - "@Last seen IP": { + "lastSeenIp": "Ostatnie widziane IP", + "@lastSeenIp": { "type": "text", "placeholders": {} }, - "License": "Licencja", - "@License": { + "leave": "Wyjdź", + "@leave": { "type": "text", "placeholders": {} }, - "Loading... Please wait": "Ładowanie... Proszę czekąć", - "@Loading... Please wait": { + "leftTheChat": "Opuścił/-a czat", + "@leftTheChat": { "type": "text", "placeholders": {} }, - "loadCountMoreParticipants": "Załaduj {count} uczestników więcej", + "license": "Licencja", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "Jasny", + "@lightTheme": { + "type": "text", + "placeholders": {} + }, + "loadCountMoreParticipants": "Załaduj jeszcze {count} uczestników", "@loadCountMoreParticipants": { "type": "text", "placeholders": { "count": {} } }, - "Login": "Zaloguj", - "@Login": { + "loadingPleaseWait": "Ładowanie… Proszę czekać", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "login": "Zaloguj", + "@login": { "type": "text", "placeholders": {} }, @@ -698,78 +707,83 @@ "homeserver": {} } }, - "Make a moderator": "Uczyń moderatorem", - "@Make a moderator": { + "logout": "Wyloguj", + "@logout": { "type": "text", "placeholders": {} }, - "Make an admin": "Uczyń adminem", - "@Make an admin": { + "makeAModerator": "Uczyń moderatorem", + "@makeAModerator": { "type": "text", "placeholders": {} }, - "Make sure the identifier is valid": "Upewnij się, że identyfikator jest prawidłowy", - "@Make sure the identifier is valid": { + "makeAnAdmin": "Uczyń adminem", + "@makeAnAdmin": { "type": "text", "placeholders": {} }, - "Message will be removed for all participants": "Wiadomość zostanie usunięta dla wszystkich użytkowników", - "@Message will be removed for all participants": { + "makeSureTheIdentifierIsValid": "Upewnij się, że identyfikator jest prawidłowy", + "@makeSureTheIdentifierIsValid": { "type": "text", "placeholders": {} }, - "Moderator": "Moderator", - "@Moderator": { + "messageWillBeRemovedWarning": "Wiadomość zostanie usunięta dla wszystkich użytkowników", + "@messageWillBeRemovedWarning": { "type": "text", "placeholders": {} }, - "Monday": "Poniedziałek", - "@Monday": { + "moderator": "Moderator", + "@moderator": { "type": "text", "placeholders": {} }, - "Mute chat": "Wycisz czat", - "@Mute chat": { + "monday": "Poniedziałek", + "@monday": { "type": "text", "placeholders": {} }, - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": "Należy pamiętać, że Pantalaimon wymaga na razie szyfrowania end-to-end.", - "@Please be aware that you need Pantalaimon to use end-to-end encryption for now.": { + "muteChat": "Wycisz czat", + "@muteChat": { "type": "text", "placeholders": {} }, - "New message in FluffyChat": "Nowa wiadomość w FluffyChat", - "@New message in FluffyChat": { + "needPantalaimonWarning": "Należy pamiętać, że Pantalaimon wymaga na razie szyfrowania end-to-end.", + "@needPantalaimonWarning": { "type": "text", "placeholders": {} }, - "New private chat": "Nowy prywatny czat", - "@New private chat": { + "newMessageInFluffyChat": "Nowa wiadomość w FluffyChat", + "@newMessageInFluffyChat": { "type": "text", "placeholders": {} }, - "It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": "Wygląda na to, że nie masz usług Google w swoim telefonie. To dobra decyzja dla twojej prywatności! Aby otrzymywać powiadomienia wysyłane w FluffyChat, zalecamy korzystanie z microG: https://microg.org/", - "@It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": { + "newPrivateChat": "Nowy prywatny czat", + "@newPrivateChat": { "type": "text", "placeholders": {} }, - "None": "Brak", - "@None": { + "noGoogleServicesWarning": "Wygląda na to, że nie masz usług Google w swoim telefonie. To dobra decyzja dla twojej prywatności! Aby otrzymywać powiadomienia wysyłane w FluffyChat, zalecamy korzystanie z microG: https://microg.org/", + "@noGoogleServicesWarning": { "type": "text", "placeholders": {} }, - "No permission": "Brak uprawnień", - "@No permission": { + "none": "Brak", + "@none": { "type": "text", "placeholders": {} }, - "No rooms found...": "Nie znaleziono pokoi...", - "@No rooms found...": { + "noPermission": "Brak uprawnień", + "@noPermission": { "type": "text", "placeholders": {} }, - "Not supported in web": "Nie obsługiwane w sieci", - "@Not supported in web": { + "noRoomsFound": "Nie znaleziono pokoi...", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "notSupportedInWeb": "Nie obsługiwane w sieci", + "@notSupportedInWeb": { "type": "text", "placeholders": {} }, @@ -780,33 +794,33 @@ "number": {} } }, - "Oops something went wrong...": "Ups! Coś poszło nie tak...", - "@Oops something went wrong...": { + "oopsSomethingWentWrong": "Ups! Coś poszło nie tak...", + "@oopsSomethingWentWrong": { "type": "text", "placeholders": {} }, - "Open app to read messages": "Otwórz aplikację by odczytać wiadomości", - "@Open app to read messages": { + "openAppToReadMessages": "Otwórz aplikację by odczytać wiadomości", + "@openAppToReadMessages": { "type": "text", "placeholders": {} }, - "Open camera": "Otwarta kamera", - "@Open camera": { + "openCamera": "Otwórz aparat", + "@openCamera": { "type": "text", "placeholders": {} }, - "(Optional) Group name": "(Opcjonalnie) Nazwa grupy", - "@(Optional) Group name": { + "optionalGroupName": "(Opcjonalnie) Nazwa grupy", + "@optionalGroupName": { "type": "text", "placeholders": {} }, - "Participating user devices": "Urządzenia użytkowników", - "@Participating user devices": { + "participatingUserDevices": "Urządzenia użytkowników", + "@participatingUserDevices": { "type": "text", "placeholders": {} }, - "Password": "Hasło", - "@Password": { + "password": "Hasło", + "@password": { "type": "text", "placeholders": {} }, @@ -817,38 +831,33 @@ "fileName": {} } }, - "Please choose a username": "Wybierz nick", - "@Please choose a username": { + "pleaseChooseAUsername": "Wybierz nick", + "@pleaseChooseAUsername": { "type": "text", "placeholders": {} }, - "Please enter a matrix identifier": "Wprowadź proszę identyfikator matrix", - "@Please enter a matrix identifier": { + "pleaseEnterAMatrixIdentifier": "Wprowadź proszę identyfikator matrix", + "@pleaseEnterAMatrixIdentifier": { "type": "text", "placeholders": {} }, - "Please enter your password": "Wpisz swoje hasło", - "@Please enter your password": { + "pleaseEnterYourPassword": "Wpisz swoje hasło", + "@pleaseEnterYourPassword": { "type": "text", "placeholders": {} }, - "Please enter your username": "Wpisz swój nick", - "@Please enter your username": { + "pleaseEnterYourUsername": "Wpisz swój nick", + "@pleaseEnterYourUsername": { "type": "text", "placeholders": {} }, - "Public Rooms": "Publiczne pokoje", - "@Public Rooms": { + "publicRooms": "Publiczne pokoje", + "@publicRooms": { "type": "text", "placeholders": {} }, - "Rejoin": "Dołącz ponownie", - "@Rejoin": { - "type": "text", - "placeholders": {} - }, - "Recording": "Nagranie", - "@Recording": { + "recording": "Nagranie", + "@recording": { "type": "text", "placeholders": {} }, @@ -866,8 +875,18 @@ "username": {} } }, - "Remove all other devices": "Usuń wszystkie inne urządzenia", - "@Remove all other devices": { + "rejoin": "Dołącz ponownie", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "Usuń", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "Usuń wszystkie inne urządzenia", + "@removeAllOtherDevices": { "type": "text", "placeholders": {} }, @@ -878,65 +897,48 @@ "username": {} } }, - "Remove device": "Usuń urządzenie", - "@Remove device": { + "removeDevice": "Usuń urządzenie", + "@removeDevice": { "type": "text", "placeholders": {} }, - "Remove exile": "Usuń blokadę", - "@Remove exile": { + "removeExile": "Usuń blokadę", + "@removeExile": { "type": "text", "placeholders": {} }, - "Revoke all permissions": "Odwołaj wszystkie uprawnienia", - "@Revoke all permissions": { + "removeMessage": "Usuń wiadomość", + "@removeMessage": { "type": "text", "placeholders": {} }, - "Remove": "Usuń", - "@Remove": { + "reply": "Odpisz", + "@reply": { "type": "text", "placeholders": {} }, - "Remove message": "Usuń wiadomość", - "@Remove message": { + "requestPermission": "Prośba o pozwolenie", + "@requestPermission": { "type": "text", "placeholders": {} }, - "Reply": "Odpisz", - "@Reply": { + "requestToReadOlderMessages": "Poproś o przeczytanie starszych wiadomości", + "@requestToReadOlderMessages": { "type": "text", "placeholders": {} }, - "Request permission": "Prośba o pozwolenie", - "@Request permission": { + "revokeAllPermissions": "Odwołaj wszystkie uprawnienia", + "@revokeAllPermissions": { "type": "text", "placeholders": {} }, - "Request to read older messages": "Poproś o przeczytanie starszych wiadomości", - "@Request to read older messages": { + "saturday": "Sobota", + "@saturday": { "type": "text", "placeholders": {} }, - "Saturday": "Sobota", - "@Saturday": { - "type": "text", - "placeholders": {} - }, - "Share": "Udostępnij", - "@Share": { - "type": "text", - "placeholders": {} - }, - "sharedTheLocation": "{username} udostępnił/-a lokalizacje", - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "Search for a chat": "Przeszukaj czat", - "@Search for a chat": { + "searchForAChat": "Przeszukaj czat", + "@searchForAChat": { "type": "text", "placeholders": {} }, @@ -947,14 +949,6 @@ "username": {} } }, - "seenByUserAndUser": "Zobaczone przez {username} oraz {username2}", - "@seenByUserAndUser": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, "seenByUserAndCountOthers": "Zobaczone przez {username} oraz {count} innych", "@seenByUserAndCountOthers": { "type": "text", @@ -963,23 +957,31 @@ "count": {} } }, - "Send": "Wyślij", - "@Send": { + "seenByUserAndUser": "Zobaczone przez {username} oraz {username2}", + "@seenByUserAndUser": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "send": "Wyślij", + "@send": { "type": "text", "placeholders": {} }, - "Send a message": "Wyślij wiadomość", - "@Send a message": { + "sendAMessage": "Wyślij wiadomość", + "@sendAMessage": { "type": "text", "placeholders": {} }, - "Send file": "Wyślij plik", - "@Send file": { + "sendFile": "Wyślij plik", + "@sendFile": { "type": "text", "placeholders": {} }, - "Send image": "Wyślij obraz", - "@Send image": { + "sendImage": "Wyślij obraz", + "@sendImage": { "type": "text", "placeholders": {} }, @@ -1018,98 +1020,85 @@ "username": {} } }, - "Set a profile picture": "Ustaw zdjęcie profilowe", - "@Set a profile picture": { + "setAProfilePicture": "Ustaw zdjęcie profilowe", + "@setAProfilePicture": { "type": "text", "placeholders": {} }, - "Set group description": "Ustaw opis grupy", - "@Set group description": { + "setGroupDescription": "Ustaw opis grupy", + "@setGroupDescription": { "type": "text", "placeholders": {} }, - "Set invitation link": "Ustaw link zaproszeniowy", - "@Set invitation link": { + "setInvitationLink": "Ustaw link zaproszeniowy", + "@setInvitationLink": { "type": "text", "placeholders": {} }, - "Set status": "Ustaw status", - "@Set status": { + "setStatus": "Ustaw status", + "@setStatus": { "type": "text", "placeholders": {} }, - "Settings": "Ustawienia", - "@Settings": { + "settings": "Ustawienia", + "@settings": { "type": "text", "placeholders": {} }, - "Sign up": "Zarejesturuj się", - "@Sign up": { + "share": "Udostępnij", + "@share": { "type": "text", "placeholders": {} }, - "Change your style": "Zmień swój styl", - "@Change your style": { + "sharedTheLocation": "{username} udostępnił/-a lokalizacje", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "signUp": "Zarejesturuj się", + "@signUp": { "type": "text", "placeholders": {} }, - "System": "System", - "@System": { + "sourceCode": "Kod żródłowy", + "@sourceCode": { "type": "text", "placeholders": {} }, - "How are you today?": "Jak się masz dziś?", - "@How are you today?": { + "startYourFirstChat": "Rozpocznij swój pierwszy czat :-)", + "@startYourFirstChat": { "type": "text", "placeholders": {} }, - "Light": "Jasny", - "@Light": { + "statusExampleMessage": "Jak się masz dziś?", + "@statusExampleMessage": { "type": "text", "placeholders": {} }, - "Dark": "Ciemny", - "@Dark": { + "sunday": "Niedziela", + "@sunday": { "type": "text", "placeholders": {} }, - "Use Amoled compatible colors?": "Użyć kolorów kompatybilnych z ekranami Amoled?", - "@Use Amoled compatible colors?": { + "systemTheme": "System", + "@systemTheme": { "type": "text", "placeholders": {} }, - "Source code": "Kod żródłowy", - "@Source code": { + "tapToShowMenu": "Kliknij by zobaczyć menu", + "@tapToShowMenu": { "type": "text", "placeholders": {} }, - "Start your first chat :-)": "Rozpocznij swój pierwszy czat :-)", - "@Start your first chat :-)": { + "thisRoomHasBeenArchived": "Ten pokój został przeniesiony do archiwum.", + "@thisRoomHasBeenArchived": { "type": "text", "placeholders": {} }, - "Sunday": "Niedziela", - "@Sunday": { - "type": "text", - "placeholders": {} - }, - "Donate": "Wsparcie", - "@Donate": { - "type": "text", - "placeholders": {} - }, - "Tap to show menu": "Kliknij by zobaczyć menu", - "@Tap to show menu": { - "type": "text", - "placeholders": {} - }, - "This room has been archived.": "Ten pokój został przeniesiony do archiwum.", - "@This room has been archived.": { - "type": "text", - "placeholders": {} - }, - "Thursday": "Czwartek", - "@Thursday": { + "thursday": "Czwartek", + "@thursday": { "type": "text", "placeholders": {} }, @@ -1129,13 +1118,13 @@ "type": "text", "placeholders": {} }, - "Try to send again": "Spróbuj wysłać ponownie", - "@Try to send again": { + "tryToSendAgain": "Spróbuj wysłać ponownie", + "@tryToSendAgain": { "type": "text", "placeholders": {} }, - "Tuesday": "Wtorek", - "@Tuesday": { + "tuesday": "Wtorek", + "@tuesday": { "type": "text", "placeholders": {} }, @@ -1147,18 +1136,13 @@ "targetName": {} } }, - "Unmute chat": "Wyłącz wyciszenie", - "@Unmute chat": { + "unknownDevice": "Nieznane urządzenie", + "@unknownDevice": { "type": "text", "placeholders": {} }, - "Unknown device": "Nieznane urządzenie", - "@Unknown device": { - "type": "text", - "placeholders": {} - }, - "Unknown encryption algorithm": "Nieznany algorytm szyfrowania", - "@Unknown encryption algorithm": { + "unknownEncryptionAlgorithm": "Nieznany algorytm szyfrowania", + "@unknownEncryptionAlgorithm": { "type": "text", "placeholders": {} }, @@ -1169,6 +1153,11 @@ "type": {} } }, + "unmuteChat": "Wyłącz wyciszenie", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, "unreadChats": "{unreadCount} nieprzeczytanych czatów", "@unreadChats": { "type": "text", @@ -1191,6 +1180,11 @@ "unreadChats": {} } }, + "useAmoledTheme": "Użyć kolorów kompatybilnych z ekranami Amoled?", + "@useAmoledTheme": { + "type": "text", + "placeholders": {} + }, "userAndOthersAreTyping": "{username} oraz {count} innych pisze...", "@userAndOthersAreTyping": { "type": "text", @@ -1207,11 +1201,6 @@ "username2": {} } }, - "Username": "Nick", - "@Username": { - "type": "text", - "placeholders": {} - }, "userIsTyping": "{username} pisze...", "@userIsTyping": { "type": "text", @@ -1219,6 +1208,18 @@ "username": {} } }, + "userLeftTheChat": "{username} opuścił/-a czat", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "Nick", + "@username": { + "type": "text", + "placeholders": {} + }, "userSentUnknownEvent": "{username} wysłał/-a wydarzenie {type}", "@userSentUnknownEvent": { "type": "text", @@ -1227,98 +1228,153 @@ "type": {} } }, - "Verify": "zweryfikuj", - "@Verify": { + "verify": "zweryfikuj", + "@verify": { "type": "text", "placeholders": {} }, - "Video call": "Rozmowa wideo", - "@Video call": { + "videoCall": "Rozmowa wideo", + "@videoCall": { "type": "text", "placeholders": {} }, - "Visible for all participants": "Widoczny dla wszystkich użytkowników", - "@Visible for all participants": { + "visibilityOfTheChatHistory": "Widoczność historii czatu", + "@visibilityOfTheChatHistory": { "type": "text", "placeholders": {} }, - "Visible for everyone": "Widoczny dla każdego", - "@Visible for everyone": { + "visibleForAllParticipants": "Widoczny dla wszystkich użytkowników", + "@visibleForAllParticipants": { "type": "text", "placeholders": {} }, - "Visibility of the chat history": "Widoczność historii czatu", - "@Visibility of the chat history": { + "visibleForEveryone": "Widoczny dla każdego", + "@visibleForEveryone": { "type": "text", "placeholders": {} }, - "Voice message": "Wiadomość głosowa", - "@Voice message": { + "voiceMessage": "Wiadomość głosowa", + "@voiceMessage": { "type": "text", "placeholders": {} }, - "Wallpaper": "Tapeta", - "@Wallpaper": { + "wallpaper": "Tapeta", + "@wallpaper": { "type": "text", "placeholders": {} }, - "End to end encryption is currently in Beta! Use at your own risk!": "Szyfrowanie end-to-end jest obecnie w fazie beta! Używaj na własne ryzyko!", - "@End to end encryption is currently in Beta! Use at your own risk!": { + "warningEncryptionInBeta": "Szyfrowanie end-to-end jest obecnie w fazie beta! Używaj na własne ryzyko!", + "@warningEncryptionInBeta": { "type": "text", "placeholders": {} }, - "Wednesday": "Środa", - "@Wednesday": { + "wednesday": "Środa", + "@wednesday": { "type": "text", "placeholders": {} }, - "Welcome to the cutest instant messenger in the matrix network.": "Witamy w najładniejszym komunikatorze w sieci matrix.", - "@Welcome to the cutest instant messenger in the matrix network.": { + "welcomeText": "Witamy w najładniejszym komunikatorze w sieci matrix.", + "@welcomeText": { "type": "text", "placeholders": {} }, - "Who is allowed to join this group": "Kto może dołączyć do tej grupy", - "@Who is allowed to join this group": { + "whoIsAllowedToJoinThisGroup": "Kto może dołączyć do tej grupy", + "@whoIsAllowedToJoinThisGroup": { "type": "text", "placeholders": {} }, - "Write a message...": "Pisze wiadomość...", - "@Write a message...": { + "writeAMessage": "Napisz wiadomość…", + "@writeAMessage": { "type": "text", "placeholders": {} }, - "Yes": "Tak", - "@Yes": { + "yes": "Tak", + "@yes": { "type": "text", "placeholders": {} }, - "You": "Ty", - "@You": { + "you": "Ty", + "@you": { "type": "text", "placeholders": {} }, - "You are invited to this chat": "Dostałeś/-aś zaproszenie do tego czatu", - "@You are invited to this chat": { + "youAreInvitedToThisChat": "Dostałeś/-aś zaproszenie do tego czatu", + "@youAreInvitedToThisChat": { "type": "text", "placeholders": {} }, - "You are no longer participating in this chat": "Nie uczestniczysz już w tym czacie", - "@You are no longer participating in this chat": { + "youAreNoLongerParticipatingInThisChat": "Nie uczestniczysz już w tym czacie", + "@youAreNoLongerParticipatingInThisChat": { "type": "text", "placeholders": {} }, - "You cannot invite yourself": "Nie możesz zaprosić siebie", - "@You cannot invite yourself": { + "youCannotInviteYourself": "Nie możesz zaprosić siebie", + "@youCannotInviteYourself": { "type": "text", "placeholders": {} }, - "You have been banned from this chat": "Zostałeś zbanowany na tym czacie", - "@You have been banned from this chat": { + "youHaveBeenBannedFromThisChat": "Zostałeś zbanowany na tym czacie", + "@youHaveBeenBannedFromThisChat": { "type": "text", "placeholders": {} }, - "Your own username": "Twój nick", - "@Your own username": { + "yourOwnUsername": "Twój nick", + "@yourOwnUsername": { + "type": "text", + "placeholders": {} + }, + "no": "Nie", + "@no": { + "type": "text", + "placeholders": {} + }, + "loadMore": "Załaduj więcej…", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "accept": "Akceptuj", + "@accept": { + "type": "text", + "placeholders": {} + }, + "lastSeenLongTimeAgo": "Widziany/-a dawno temu", + "@lastSeenLongTimeAgo": { + "type": "text", + "placeholders": {} + }, + "currentlyActive": "Obecnie aktywny/-a", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "encryption": "Szyfrowanie", + "@encryption": { + "type": "text", + "placeholders": {} + }, + "deleteAccount": "Usuń konto", + "@deleteAccount": { + "type": "text", + "placeholders": {} + }, + "passwordHasBeenChanged": "Hasło zostało zmienione", + "@passwordHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "ignoredUsers": "Ignorowani użytkownicy", + "@ignoredUsers": { + "type": "text", + "placeholders": {} + }, + "unpin": "Odepnij", + "@unpin": { + "type": "text", + "placeholders": {} + }, + "pin": "Przypnij", + "@pin": { "type": "text", "placeholders": {} } diff --git a/lib/l10n/intl_ru.arb b/lib/l10n/intl_ru.arb index b78197b..6d7fbdb 100644 --- a/lib/l10n/intl_ru.arb +++ b/lib/l10n/intl_ru.arb @@ -1,29 +1,30 @@ { - "@@last_modified": "2020-06-25T16:02:16.297192", - "About": "О приложении", - "@About": { + "@@locale": "ru", + "@@last_modified": "2020-09-23 11:46:01.991897", + "about": "О приложении", + "@about": { "type": "text", "placeholders": {} }, - "Accept": "Принять", - "@Accept": { + "accept": "Принять", + "@accept": { "type": "text", "placeholders": {} }, - "acceptedTheInvitation": "{username} принял(а) приглашение", + "acceptedTheInvitation": "{username} принял(а) приглашение войти в чат", "@acceptedTheInvitation": { "type": "text", "placeholders": { "username": {} } }, - "Account": "Учётная запись", - "@Account": { + "account": "Учётная запись", + "@account": { "type": "text", "placeholders": {} }, - "Account informations": "Сведения об учётной записи", - "@Account informations": { + "accountInformation": "Сведения об учётной записи", + "@accountInformation": { "type": "text", "placeholders": {} }, @@ -34,13 +35,13 @@ "username": {} } }, - "Add a group description": "Добавить описание группы", - "@Add a group description": { + "addGroupDescription": "Добавить описание группы", + "@addGroupDescription": { "type": "text", "placeholders": {} }, - "Admin": "Администратор", - "@Admin": { + "admin": "Администратор", + "@admin": { "type": "text", "placeholders": {} }, @@ -49,47 +50,54 @@ "type": "text", "placeholders": {} }, - "Already have an account?": "Уже есть учётная запись?", - "@Already have an account?": { + "alreadyHaveAnAccount": "Уже есть учётная запись?", + "@alreadyHaveAnAccount": { "type": "text", "placeholders": {} }, - "Anyone can join": "Каждый может присоединиться", - "@Anyone can join": { + "answeredTheCall": "{senderName} ответил(а) на звонок", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "Каждый может присоединиться", + "@anyoneCanJoin": { "type": "text", "placeholders": {} }, - "Archive": "Архив", - "@Archive": { + "archive": "Архив", + "@archive": { "type": "text", "placeholders": {} }, - "Archived Room": "Архивированная комната", - "@Archived Room": { + "archivedRoom": "Архивированная комната", + "@archivedRoom": { "type": "text", "placeholders": {} }, - "Are guest users allowed to join": "Разрешено ли гостям присоединяться", - "@Are guest users allowed to join": { + "areGuestsAllowedToJoin": "Разрешено ли гостям присоединяться", + "@areGuestsAllowedToJoin": { "type": "text", "placeholders": {} }, - "Are you sure?": "Вы уверены?", - "@Are you sure?": { + "areYouSure": "Вы уверены?", + "@areYouSure": { "type": "text", "placeholders": {} }, - "askSSSSCache": "Пожалуйста, введите секретную фразу безопасного хранилища или ключ восстановления для кеширования ключей.", + "askSSSSCache": "Пожалуйста, введите вашу парольную фразу или ключ восстановления для кэширования ключей.", "@askSSSSCache": { "type": "text", "placeholders": {} }, - "askSSSSSign": "Чтобы иметь возможность подписать другое лицо, пожалуйста, введите пароль или ключ восстановления вашего безопасного хранилища.", + "askSSSSSign": "Для подписи ключа другого пользователя, пожалуйста, введите вашу парольную фразу или ключ восстановления.", "@askSSSSSign": { "type": "text", "placeholders": {} }, - "askSSSSVerify": "Пожалуйста, введите вашу безопасную парольную фразу или ключ восстановления, чтобы подтвердить ваш сеанс.", + "askSSSSVerify": "Пожалуйста, введите вашу парольную фразу или ключ восстановления для подтвердждения сессии.", "@askSSSSVerify": { "type": "text", "placeholders": {} @@ -101,27 +109,27 @@ "username": {} } }, - "Authentication": "Аутентификация", - "@Authentication": { + "authentication": "Аутентификация", + "@authentication": { "type": "text", "placeholders": {} }, - "Avatar has been changed": "Аватар был изменен", - "@Avatar has been changed": { + "avatarHasBeenChanged": "Аватар был изменён", + "@avatarHasBeenChanged": { "type": "text", "placeholders": {} }, - "Ban from chat": "Бан чата", - "@Ban from chat": { + "banFromChat": "Заблокировать в чате", + "@banFromChat": { "type": "text", "placeholders": {} }, - "Banned": "Забанен", - "@Banned": { + "banned": "Заблокирован(а)", + "@banned": { "type": "text", "placeholders": {} }, - "bannedUser": "{username} забанил(а) {targetName}", + "bannedUser": "{username} заблокировал(а) {targetName}", "@bannedUser": { "type": "text", "placeholders": { @@ -129,8 +137,8 @@ "targetName": {} } }, - "Block Device": "Заблокировать устройство", - "@Block Device": { + "blockDevice": "Заблокировать устройство", + "@blockDevice": { "type": "text", "placeholders": {} }, @@ -141,13 +149,13 @@ "homeserver": {} } }, - "cachedKeys": "Ключи успешно кэшированы!", + "cachedKeys": "Ключи успешно кэшированы", "@cachedKeys": { "type": "text", "placeholders": {} }, - "Cancel": "Отмена", - "@Cancel": { + "cancel": "Отмена", + "@cancel": { "type": "text", "placeholders": {} }, @@ -158,15 +166,7 @@ "username": {} } }, - "changedTheChatNameTo": "{username} изменил(а) имя чата на: '{chatname}'", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, - "changedTheChatDescriptionTo": "{username} изменил(а) описание чата на: '{description}'", + "changedTheChatDescriptionTo": "{username} изменил(а) описание чата на: \"{description}\"", "@changedTheChatDescriptionTo": { "type": "text", "placeholders": { @@ -174,7 +174,15 @@ "description": {} } }, - "changedTheChatPermissions": "{username} изменил(а) права чата", + "changedTheChatNameTo": "{username} изменил(а) имя чата на: \"{chatname}\"", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, + "changedTheChatPermissions": "{username} изменил(а) права доступа к чату", "@changedTheChatPermissions": { "type": "text", "placeholders": { @@ -189,11 +197,6 @@ "displayname": {} } }, - "Change the homeserver": "Изменить домашний сервер", - "@Change the homeserver": { - "type": "text", - "placeholders": {} - }, "changedTheGuestAccessRules": "{username} изменил(а) правила гостевого доступа", "@changedTheGuestAccessRules": { "type": "text", @@ -239,7 +242,7 @@ "joinRules": {} } }, - "changedTheProfileAvatar": "{username} сменил(а) свой аватар", + "changedTheProfileAvatar": "{username} изменил(а) аватар", "@changedTheProfileAvatar": { "type": "text", "placeholders": { @@ -253,64 +256,79 @@ "username": {} } }, - "changedTheRoomInvitationLink": "{username} изменил(а) ссылку приглашения", + "changedTheRoomInvitationLink": "{username} изменил(а) ссылку для приглашения", "@changedTheRoomInvitationLink": { "type": "text", "placeholders": { "username": {} } }, - "Changelog": "Изменения", - "@Changelog": { + "changelog": "Журнал изменений", + "@changelog": { "type": "text", "placeholders": {} }, - "Change the name of the group": "Изменить название группы", - "@Change the name of the group": { + "changesHaveBeenSaved": "Изменения были сохранены", + "@changesHaveBeenSaved": { "type": "text", "placeholders": {} }, - "Change wallpaper": "Сменить обои", - "@Change wallpaper": { + "changeTheHomeserver": "Изменить сервер Matrix", + "@changeTheHomeserver": { "type": "text", "placeholders": {} }, - "Change the server": "Сменить сервер", - "@Change the server": { + "changeTheme": "Тема", + "@changeTheme": { "type": "text", "placeholders": {} }, - "The encryption has been corrupted": "Шифрование было повреждено", - "@The encryption has been corrupted": { + "changeTheNameOfTheGroup": "Изменить название группы", + "@changeTheNameOfTheGroup": { "type": "text", "placeholders": {} }, - "Chat": "Чат", - "@Chat": { + "changeTheServer": "Изменить сервер", + "@changeTheServer": { "type": "text", "placeholders": {} }, - "Chat details": "Детали чата", - "@Chat details": { + "changeWallpaper": "Изменить фон чатов", + "@changeWallpaper": { "type": "text", "placeholders": {} }, - "Choose a strong password": "Выберите надёжный пароль", - "@Choose a strong password": { + "channelCorruptedDecryptError": "Шифрование было повреждено", + "@channelCorruptedDecryptError": { "type": "text", "placeholders": {} }, - "Choose a username": "Выберете имя пользователя", - "@Choose a username": { + "chat": "Чат", + "@chat": { "type": "text", "placeholders": {} }, - "Close": "Закрыть", - "@Close": { + "chatDetails": "Детали чата", + "@chatDetails": { "type": "text", "placeholders": {} }, - "compareEmojiMatch": "Сравните и убедитесь, что следующие эмодзи соответствуют таковым на другом устройстве:", + "chooseAStrongPassword": "Выберите надёжный пароль", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "chooseAUsername": "Выберите имя пользователя", + "@chooseAUsername": { + "type": "text", + "placeholders": {} + }, + "close": "Закрыть", + "@close": { + "type": "text", + "placeholders": {} + }, + "compareEmojiMatch": "Сравните и убедитесь, что следующие эмодзи соответствуют эмодзи на другом устройстве:", "@compareEmojiMatch": { "type": "text", "placeholders": {} @@ -320,38 +338,38 @@ "type": "text", "placeholders": {} }, - "Confirm": "Подтвердить", - "@Confirm": { + "confirm": "Подтвердить", + "@confirm": { "type": "text", "placeholders": {} }, - "Connect": "Присоединиться", - "@Connect": { + "connect": "Присоединиться", + "@connect": { "type": "text", "placeholders": {} }, - "Connection attempt failed": "Попытка подключения не удалась", - "@Connection attempt failed": { + "connectionAttemptFailed": "Попытка подключения не удалась", + "@connectionAttemptFailed": { "type": "text", "placeholders": {} }, - "Contact has been invited to the group": "Контакт был приглашен в группу", - "@Contact has been invited to the group": { + "contactHasBeenInvitedToTheGroup": "Контакт был приглашен в группу", + "@contactHasBeenInvitedToTheGroup": { "type": "text", "placeholders": {} }, - "Content viewer": "Просмотр содержимого", - "@Content viewer": { + "contentViewer": "Просмотр содержимого", + "@contentViewer": { "type": "text", "placeholders": {} }, - "Copied to clipboard": "Скопировано в буфер обмена", - "@Copied to clipboard": { + "copiedToClipboard": "Скопировано в буфер обмена", + "@copiedToClipboard": { "type": "text", "placeholders": {} }, - "Copy": "Скопировать", - "@Copy": { + "copy": "Копировать", + "@copy": { "type": "text", "placeholders": {} }, @@ -362,30 +380,30 @@ "error": {} } }, - "Could not set avatar": "Не удалось установить аватар", - "@Could not set avatar": { + "couldNotSetAvatar": "Не удалось установить аватар", + "@couldNotSetAvatar": { "type": "text", "placeholders": {} }, - "Could not set displayname": "Не удалось установить отображаемое имя", - "@Could not set displayname": { + "couldNotSetDisplayname": "Не удалось установить отображаемое имя", + "@couldNotSetDisplayname": { "type": "text", "placeholders": {} }, - "countParticipants": "{count} участника(-ов)", + "countParticipants": "{count} участника(ов)", "@countParticipants": { "type": "text", "placeholders": { "count": {} } }, - "Create": "Создать", - "@Create": { + "create": "Создать", + "@create": { "type": "text", "placeholders": {} }, - "Create account now": "Создать учётную запись сейчас", - "@Create account now": { + "createAccountNow": "Создать учётную запись сейчас", + "@createAccountNow": { "type": "text", "placeholders": {} }, @@ -396,8 +414,8 @@ "username": {} } }, - "Create new group": "Создать новую группу", - "@Create new group": { + "createNewGroup": "Новая группа", + "@createNewGroup": { "type": "text", "placeholders": {} }, @@ -411,8 +429,13 @@ "type": "text", "placeholders": {} }, - "Currently active": "В настоящее время активен", - "@Currently active": { + "currentlyActive": "В настоящее время активен(а)", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "Тёмная", + "@darkTheme": { "type": "text", "placeholders": {} }, @@ -424,7 +447,7 @@ "timeOfDay": {} } }, - "dateWithoutYear": "{day}. {month}", + "dateWithoutYear": "{day}.{month}", "@dateWithoutYear": { "type": "text", "placeholders": { @@ -432,7 +455,7 @@ "day": {} } }, - "dateWithYear": "{day}. {month}. {year}", + "dateWithYear": "{day}.{month}.{year}", "@dateWithYear": { "type": "text", "placeholders": { @@ -441,173 +464,190 @@ "day": {} } }, - "Delete": "Удалить", - "@Delete": { + "delete": "Удалить", + "@delete": { "type": "text", "placeholders": {} }, - "Delete message": "Удалить сообщение", - "@Delete message": { + "deleteMessage": "Удалить сообщение", + "@deleteMessage": { "type": "text", "placeholders": {} }, - "Deny": "Отклонить", - "@Deny": { + "deny": "Отклонить", + "@deny": { "type": "text", "placeholders": {} }, - "Device": "Устройство", - "@Device": { + "device": "Устройство", + "@device": { "type": "text", "placeholders": {} }, - "Devices": "Устройства", - "@Devices": { + "devices": "Устройства", + "@devices": { "type": "text", "placeholders": {} }, - "Discard picture": "Сбросить картинку", - "@Discard picture": { + "discardPicture": "Удалить изображение", + "@discardPicture": { "type": "text", "placeholders": {} }, - "Displayname has been changed": "Отображаемое имя было изменено", - "@Displayname has been changed": { + "displaynameHasBeenChanged": "Отображаемое имя было изменено", + "@displaynameHasBeenChanged": { "type": "text", "placeholders": {} }, - "Download file": "Скачать файл", - "@Download file": { + "donate": "Пожертвовать", + "@donate": { "type": "text", "placeholders": {} }, - "Edit displayname": "Изменить отображаемое имя", - "@Edit displayname": { + "downloadFile": "Скачать файл", + "@downloadFile": { "type": "text", "placeholders": {} }, - "Emote Settings": "Настройки смайликов", - "@Emote Settings": { + "editDisplayname": "Отображаемое имя", + "@editDisplayname": { "type": "text", "placeholders": {} }, - "Emote shortcode": "Краткий код для смайлика", - "@Emote shortcode": { + "editJitsiInstance": "Сервер Jitsi", + "@editJitsiInstance": { "type": "text", "placeholders": {} }, - "emoteWarnNeedToPick": "Вам нужно выбрать краткий код смайлика и картинку!", - "@emoteWarnNeedToPick": { - "type": "text", - "placeholders": {} - }, - "emoteExists": "Смайлик уже существует!", + "emoteExists": "Эмодзи уже существует", "@emoteExists": { "type": "text", "placeholders": {} }, - "emoteInvalid": "Недопустимый краткий код смайлика!", + "emoteInvalid": "Недопустимый краткий код эмодзи", "@emoteInvalid": { "type": "text", "placeholders": {} }, - "Empty chat": "Пустой чат", - "@Empty chat": { + "emoteSettings": "Настройки эмодзи", + "@emoteSettings": { "type": "text", "placeholders": {} }, - "You won't be able to disable the encryption anymore. Are you sure?": "Вы больше не сможете отключить шифрование. Вы уверены?", - "@You won't be able to disable the encryption anymore. Are you sure?": { + "emoteShortcode": "Краткий код для эмодзи", + "@emoteShortcode": { "type": "text", "placeholders": {} }, - "Encryption": "Шифрование", - "@Encryption": { + "emoteWarnNeedToPick": "Выберите краткий код эмодзи и изображение", + "@emoteWarnNeedToPick": { "type": "text", "placeholders": {} }, - "Encryption algorithm": "Алгоритм шифрования", - "@Encryption algorithm": { + "emptyChat": "Пустой чат", + "@emptyChat": { "type": "text", "placeholders": {} }, - "Encryption is not enabled": "Шифрование не включено", - "@Encryption is not enabled": { + "enableEncryptionWarning": "Вы больше не сможете отключить шифрование. Вы уверены?", + "@enableEncryptionWarning": { "type": "text", "placeholders": {} }, - "End-to-end encryption settings": "Сквозные настройки шифрования", - "@End-to-end encryption settings": { + "encryption": "Шифрование", + "@encryption": { "type": "text", "placeholders": {} }, - "Enter a group name": "Введите название группы", - "@Enter a group name": { + "encryptionAlgorithm": "Алгоритм шифрования", + "@encryptionAlgorithm": { "type": "text", "placeholders": {} }, - "Enter a username": "Введите имя пользователя", - "@Enter a username": { + "encryptionNotEnabled": "Шифрование не включено", + "@encryptionNotEnabled": { "type": "text", "placeholders": {} }, - "Enter your homeserver": "Введите ваш домашний сервер", - "@Enter your homeserver": { + "end2endEncryptionSettings": "Настройки сквозного шифрования", + "@end2endEncryptionSettings": { "type": "text", "placeholders": {} }, - "File name": "Имя файла", - "@File name": { + "endedTheCall": "{senderName} завершил(а) звонок", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterAGroupName": "Введите название группы", + "@enterAGroupName": { "type": "text", "placeholders": {} }, - "File size": "Размер файла", - "@File size": { + "enterAUsername": "Введите имя пользователя", + "@enterAUsername": { "type": "text", "placeholders": {} }, - "FluffyChat": "FluffyChat", - "@FluffyChat": { + "enterYourHomeserver": "Введите адрес вашего сервера Matrix", + "@enterYourHomeserver": { "type": "text", "placeholders": {} }, - "Forward": "Переслать", - "@Forward": { + "fileName": "Имя файла", + "@fileName": { "type": "text", "placeholders": {} }, - "Friday": "Пятница", - "@Friday": { + "fileSize": "Размер файла", + "@fileSize": { "type": "text", "placeholders": {} }, - "From joining": "С момента присоединения", - "@From joining": { + "fluffychat": "FluffyChat", + "@fluffychat": { "type": "text", "placeholders": {} }, - "From the invitation": "С момента приглашения", - "@From the invitation": { + "forward": "Переслать", + "@forward": { "type": "text", "placeholders": {} }, - "Group": "Группа", - "@Group": { + "friday": "Пятница", + "@friday": { "type": "text", "placeholders": {} }, - "Group description": "Описание группы", - "@Group description": { + "fromJoining": "С момента присоединения", + "@fromJoining": { "type": "text", "placeholders": {} }, - "Group description has been changed": "Описание группы было изменено", - "@Group description has been changed": { + "fromTheInvitation": "С момента приглашения", + "@fromTheInvitation": { "type": "text", "placeholders": {} }, - "Group is public": "Публичная группа", - "@Group is public": { + "group": "Группа", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupDescription": "Описание группы", + "@groupDescription": { + "type": "text", + "placeholders": {} + }, + "groupDescriptionHasBeenChanged": "Описание группы было изменено", + "@groupDescriptionHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "Публичная группа", + "@groupIsPublic": { "type": "text", "placeholders": {} }, @@ -618,13 +658,13 @@ "displayname": {} } }, - "Guests are forbidden": "Гости запрещены", - "@Guests are forbidden": { + "guestsAreForbidden": "Гости не могут присоединиться", + "@guestsAreForbidden": { "type": "text", "placeholders": {} }, - "Guests can join": "Гости могут присоединиться", - "@Guests can join": { + "guestsCanJoin": "Гости могут присоединиться", + "@guestsCanJoin": { "type": "text", "placeholders": {} }, @@ -636,23 +676,38 @@ "targetName": {} } }, - "Help": "Помощь", - "@Help": { + "help": "Помощь", + "@help": { "type": "text", "placeholders": {} }, - "Homeserver is not compatible": "Домашний сервер не совместим", - "@Homeserver is not compatible": { + "homeserverIsNotCompatible": "Несовместимый сервер Matrix", + "@homeserverIsNotCompatible": { "type": "text", "placeholders": {} }, - "ID": "ID", - "@ID": { + "id": "ID", + "@id": { "type": "text", "placeholders": {} }, - "Identity": "Идентификация", - "@Identity": { + "identity": "Идентификация", + "@identity": { + "type": "text", + "placeholders": {} + }, + "ignoredUsers": "Игнорируемые пользователи", + "@ignoredUsers": { + "type": "text", + "placeholders": {} + }, + "ignoreListDescription": "Вы можете игнорировать пользователей, которые вам мешают. Вы не сможете получать сообщения или приглашения в комнату от пользователей из вашего личного списка игнорирования.", + "@ignoreListDescription": { + "type": "text", + "placeholders": {} + }, + "ignoreUsername": "Игнорировать имя пользователя", + "@ignoreUsername": { "type": "text", "placeholders": {} }, @@ -661,8 +716,8 @@ "type": "text", "placeholders": {} }, - "Invite contact": "Пригласить контакт", - "@Invite contact": { + "inviteContact": "Пригласить контакт", + "@inviteContact": { "type": "text", "placeholders": {} }, @@ -673,19 +728,11 @@ "groupName": {} } }, - "Invited": "Приглашён", - "@Invited": { + "invited": "Приглашён", + "@invited": { "type": "text", "placeholders": {} }, - "inviteText": "{username} пригласил(а) вас в FluffyChat. \n1. Установите FluffyChat: http://fluffy.chat \n2. Зарегистрируйтесь или войдите \n3. Откройте ссылку приглашения: {link}", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, "invitedUser": "{username} пригласил(а) {targetName}", "@invitedUser": { "type": "text", @@ -694,34 +741,42 @@ "targetName": {} } }, - "Invited users only": "Только приглашённым пользователям", - "@Invited users only": { + "invitedUsersOnly": "Только приглашённым пользователям", + "@invitedUsersOnly": { "type": "text", "placeholders": {} }, + "inviteText": "{username} пригласил(а) вас в FluffyChat. \n1. Установите FluffyChat: https://fluffychat.im \n2. Зарегистрируйтесь или войдите \n3. Откройте ссылку приглашения: {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, "isDeviceKeyCorrect": "Правильно ли указан следующий ключ устройства?", "@isDeviceKeyCorrect": { "type": "text", "placeholders": {} }, - "is typing...": "Печатает...", - "@is typing...": { + "isTyping": "Печатает...", + "@isTyping": { "type": "text", "placeholders": {} }, - "Edit Jitsi instance": "Изменить экземпляр Jitsi", - "@Edit Jitsi instance": { - "type": "text", - "placeholders": {} - }, - "joinedTheChat": "{username} присоединился(-ась) к чату", + "joinedTheChat": "{username} присоединился(ась) к чату", "@joinedTheChat": { "type": "text", "placeholders": { "username": {} } }, - "keysCached": "Ключи кэшированы", + "joinRoom": "Присоединиться к комнате", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, + "keysCached": "Ключи сохранены в кэше", "@keysCached": { "type": "text", "placeholders": {} @@ -739,7 +794,7 @@ "targetName": {} } }, - "kickedAndBanned": "{username} исключил(а) и забанил(а) {targetName}", + "kickedAndBanned": "{username} исключил(а) и заблокировал(а) {targetName}", "@kickedAndBanned": { "type": "text", "placeholders": { @@ -747,33 +802,11 @@ "targetName": {} } }, - "Kick from chat": "Исключить из чата", - "@Kick from chat": { + "kickFromChat": "Исключить из чата", + "@kickFromChat": { "type": "text", "placeholders": {} }, - "Leave": "Покинуть", - "@Leave": { - "type": "text", - "placeholders": {} - }, - "Left the chat": "Покинуть чат", - "@Left the chat": { - "type": "text", - "placeholders": {} - }, - "Logout": "Выйти", - "@Logout": { - "type": "text", - "placeholders": {} - }, - "userLeftTheChat": "{username} покинул(а) чат", - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, "lastActiveAgo": "Последнее посещение: {localizedTimeShort}", "@lastActiveAgo": { "type": "text", @@ -781,35 +814,55 @@ "localizedTimeShort": {} } }, - "Last seen IP": "Последний увиденный IP", - "@Last seen IP": { + "lastSeenIp": "Последний IP, с которого заходили", + "@lastSeenIp": { "type": "text", "placeholders": {} }, - "License": "Лицензия", - "@License": { + "lastSeenLongTimeAgo": "был(а) в сети давно", + "@lastSeenLongTimeAgo": { "type": "text", "placeholders": {} }, - "Loading... Please wait": "Загрузка... Пожалуйста подождите", - "@Loading... Please wait": { + "leave": "Покинуть", + "@leave": { "type": "text", "placeholders": {} }, - "Load more...": "Загрузить больше...", - "@Load more...": { + "leftTheChat": "Покинуть чат", + "@leftTheChat": { "type": "text", "placeholders": {} }, - "loadCountMoreParticipants": "Загрузить еще {count} участников", + "license": "Лицензия", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "Светлая", + "@lightTheme": { + "type": "text", + "placeholders": {} + }, + "loadCountMoreParticipants": "Загрузить еще {count} участника(ов)", "@loadCountMoreParticipants": { "type": "text", "placeholders": { "count": {} } }, - "Login": "Вход", - "@Login": { + "loadingPleaseWait": "Пожалуйста, подождите...", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "Загрузить больше...", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "login": "Вход", + "@login": { "type": "text", "placeholders": {} }, @@ -820,102 +873,112 @@ "homeserver": {} } }, - "Make a moderator": "Сделать модератором", - "@Make a moderator": { + "logout": "Выйти", + "@logout": { "type": "text", "placeholders": {} }, - "Make an admin": "Сделать администратором", - "@Make an admin": { + "makeAModerator": "Сделать модератором", + "@makeAModerator": { "type": "text", "placeholders": {} }, - "Make sure the identifier is valid": "Убедитесь, что идентификатор действителен", - "@Make sure the identifier is valid": { + "makeAnAdmin": "Сделать администратором", + "@makeAnAdmin": { "type": "text", "placeholders": {} }, - "Message will be removed for all participants": "Сообщение будет удалено для всех участников", - "@Message will be removed for all participants": { + "makeSureTheIdentifierIsValid": "Убедитесь, что идентификатор действителен", + "@makeSureTheIdentifierIsValid": { "type": "text", "placeholders": {} }, - "Moderator": "Модератор", - "@Moderator": { + "messageWillBeRemovedWarning": "Сообщение будет удалено для всех участников", + "@messageWillBeRemovedWarning": { "type": "text", "placeholders": {} }, - "Monday": "Понедельник", - "@Monday": { + "moderator": "Модератор", + "@moderator": { "type": "text", "placeholders": {} }, - "Mute chat": "Отключить уведомления", - "@Mute chat": { + "monday": "Понедельник", + "@monday": { "type": "text", "placeholders": {} }, - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": "Помните, что вам нужен Pantalaimon для использования сквозного шифрования.", - "@Please be aware that you need Pantalaimon to use end-to-end encryption for now.": { + "muteChat": "Отключить уведомления", + "@muteChat": { "type": "text", "placeholders": {} }, - "New message in FluffyChat": "Новое сообщение в FluffyChat", - "@New message in FluffyChat": { + "needPantalaimonWarning": "Помните, что вам нужен Pantalaimon для использования сквозного шифрования.", + "@needPantalaimonWarning": { "type": "text", "placeholders": {} }, - "New private chat": "Новый приватный чат", - "@New private chat": { + "newMessageInFluffyChat": "Новое сообщение во FluffyChat", + "@newMessageInFluffyChat": { "type": "text", "placeholders": {} }, - "newVerificationRequest": "Новый запрос на подтверждение!", + "newPrivateChat": "Новый приватный чат", + "@newPrivateChat": { + "type": "text", + "placeholders": {} + }, + "newVerificationRequest": "Новый запрос на подтверждение", "@newVerificationRequest": { "type": "text", "placeholders": {} }, - "noCrossSignBootstrap": "Fluffychat в настоящее время не поддерживает включение кросс-подписи. Пожалуйста, включите его в Element.", + "no": "Нет", + "@no": { + "type": "text", + "placeholders": {} + }, + "noCrossSignBootstrap": "FluffyChat в настоящее время не поддерживает включение кросс-подписи. Пожалуйста, включите его в Element.", "@noCrossSignBootstrap": { "type": "text", "placeholders": {} }, - "noMegolmBootstrap": "В настоящее время Fluffychat не поддерживает функцию резервного копирования онлайн-ключей. Пожалуйста, включите его из Element.", + "noEmotesFound": "Эмодзи не найдены 😕", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "Похоже, у вас нет служб Google на вашем телефоне. Это хорошее решение для вашей конфиденциальности! Для получения push-уведомлений во FluffyChat мы рекомендуем использовать microG: https://microg.org/", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "noMegolmBootstrap": "В настоящее время FluffyChat не поддерживает функцию резервного копирования онлайн-ключей. Пожалуйста, включите её в Element.", "@noMegolmBootstrap": { "type": "text", "placeholders": {} }, - "It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": "Похоже, у вас нет служб Google на вашем телефоне. Это хорошее решение для вашей конфиденциальности! Для получения push-уведомлений в FluffyChat мы рекомендуем использовать microG: https://microg.org/", - "@It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": { + "none": "Ничего", + "@none": { "type": "text", "placeholders": {} }, - "None": "Ничего", - "@None": { + "noPermission": "Нет прав доступа", + "@noPermission": { "type": "text", "placeholders": {} }, - "No emotes found. 😕": "Смайликов не найдено. 😕", - "@No emotes found. 😕": { + "noRoomsFound": "Комнаты не найдены...", + "@noRoomsFound": { "type": "text", "placeholders": {} }, - "No permission": "Нет разрешений", - "@No permission": { + "notSupportedInWeb": "Не поддерживается в веб-версии", + "@notSupportedInWeb": { "type": "text", "placeholders": {} }, - "No rooms found...": "Комнаты не найдены...", - "@No rooms found...": { - "type": "text", - "placeholders": {} - }, - "Not supported in web": "Не поддерживается в веб-версии", - "@Not supported in web": { - "type": "text", - "placeholders": {} - }, - "numberSelected": "{number} выбрано", + "numberSelected": "{number} выбран(о)", "@numberSelected": { "type": "text", "placeholders": { @@ -927,38 +990,38 @@ "type": "text", "placeholders": {} }, - "onlineKeyBackupDisabled": "Резервное копирование онлайн-ключей отключено", + "onlineKeyBackupDisabled": "Резервное копирование ключей на сервере отключено", "@onlineKeyBackupDisabled": { "type": "text", "placeholders": {} }, - "onlineKeyBackupEnabled": "Резервное копирование онлайн ключей включено", + "onlineKeyBackupEnabled": "Резервное копирование ключей на сервере включено", "@onlineKeyBackupEnabled": { "type": "text", "placeholders": {} }, - "Oops something went wrong...": "Упс! Что-то пошло не так...", - "@Oops something went wrong...": { + "oopsSomethingWentWrong": "Упс! Что-то пошло не так...", + "@oopsSomethingWentWrong": { "type": "text", "placeholders": {} }, - "Open app to read messages": "Откройте приложение для чтения сообщений", - "@Open app to read messages": { + "openAppToReadMessages": "Откройте приложение для чтения сообщений", + "@openAppToReadMessages": { "type": "text", "placeholders": {} }, - "Open camera": "Открыть камеру", - "@Open camera": { + "openCamera": "Открыть камеру", + "@openCamera": { "type": "text", "placeholders": {} }, - "(Optional) Group name": "(Необязательно) Название группы", - "@(Optional) Group name": { + "optionalGroupName": "(необязательно) Название группы", + "@optionalGroupName": { "type": "text", "placeholders": {} }, - "Participating user devices": "Участвующие устройства", - "@Participating user devices": { + "participatingUserDevices": "Участвующие устройства", + "@participatingUserDevices": { "type": "text", "placeholders": {} }, @@ -967,65 +1030,55 @@ "type": "text", "placeholders": {} }, - "Password": "Пароль", - "@Password": { + "password": "Пароль", + "@password": { "type": "text", "placeholders": {} }, - "Pick image": "Выбрать картинку", - "@Pick image": { + "pickImage": "Выбрать изображение", + "@pickImage": { "type": "text", "placeholders": {} }, - "play": "Играть {fileName}", + "pin": "Закрепить", + "@pin": { + "type": "text", + "placeholders": {} + }, + "play": "Проиграть {fileName}", "@play": { "type": "text", "placeholders": { "fileName": {} } }, - "Please choose a username": "Пожалуйста, выберите имя пользователя", - "@Please choose a username": { + "pleaseChooseAUsername": "Пожалуйста, выберите имя пользователя", + "@pleaseChooseAUsername": { "type": "text", "placeholders": {} }, - "Please enter a matrix identifier": "Пожалуйста, введите matrix идентификатор", - "@Please enter a matrix identifier": { + "pleaseEnterAMatrixIdentifier": "Пожалуйста, введите идентификатор Matrix", + "@pleaseEnterAMatrixIdentifier": { "type": "text", "placeholders": {} }, - "Please enter your password": "Пожалуйста введите ваш пароль", - "@Please enter your password": { + "pleaseEnterYourPassword": "Пожалуйста, введите ваш пароль", + "@pleaseEnterYourPassword": { "type": "text", "placeholders": {} }, - "Please enter your username": "Пожалуйста, введите имя пользователя", - "@Please enter your username": { + "pleaseEnterYourUsername": "Пожалуйста, введите имя пользователя", + "@pleaseEnterYourUsername": { "type": "text", "placeholders": {} }, - "Public Rooms": "Публичные комнаты", - "@Public Rooms": { + "publicRooms": "Публичные комнаты", + "@publicRooms": { "type": "text", "placeholders": {} }, - "Reject": "Отклонить", - "@Reject": { - "type": "text", - "placeholders": {} - }, - "Rejoin": "Перезайти", - "@Rejoin": { - "type": "text", - "placeholders": {} - }, - "Render rich message content": "Показать отформатированные сообщения", - "@Render rich message content": { - "type": "text", - "placeholders": {} - }, - "Recording": "Запись", - "@Recording": { + "recording": "Запись", + "@recording": { "type": "text", "placeholders": {} }, @@ -1036,6 +1089,11 @@ "username": {} } }, + "reject": "Отклонить", + "@reject": { + "type": "text", + "placeholders": {} + }, "rejectedTheInvitation": "{username} отклонил(а) приглашение", "@rejectedTheInvitation": { "type": "text", @@ -1043,8 +1101,18 @@ "username": {} } }, - "Remove all other devices": "Удалить все другие устройства", - "@Remove all other devices": { + "rejoin": "Зайти повторно", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "Удалить", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "Удалить все другие устройства", + "@removeAllOtherDevices": { "type": "text", "placeholders": {} }, @@ -1055,75 +1123,58 @@ "username": {} } }, - "Remove device": "Удалить устройство", - "@Remove device": { + "removeDevice": "Удалить устройство", + "@removeDevice": { "type": "text", "placeholders": {} }, - "Remove exile": "Удалить ссылку", - "@Remove exile": { + "removeExile": "Разблокировать в чате", + "@removeExile": { "type": "text", "placeholders": {} }, - "Revoke all permissions": "Отменить все разрешения", - "@Revoke all permissions": { + "removeMessage": "Удалить сообщение", + "@removeMessage": { "type": "text", "placeholders": {} }, - "Remove": "Удалить", - "@Remove": { + "renderRichContent": "Показывать текст с форматированием", + "@renderRichContent": { "type": "text", "placeholders": {} }, - "Remove message": "Удалить сообщение", - "@Remove message": { + "reply": "Ответить", + "@reply": { "type": "text", "placeholders": {} }, - "Reply": "Ответить", - "@Reply": { + "requestPermission": "Запросить разрешение", + "@requestPermission": { "type": "text", "placeholders": {} }, - "Request permission": "Запросить разрешение", - "@Request permission": { + "requestToReadOlderMessages": "Запросить доступ к предыдущим сообщениям", + "@requestToReadOlderMessages": { "type": "text", "placeholders": {} }, - "Request to read older messages": "Запросить доступ к предыдущим сообщениям", - "@Request to read older messages": { + "revokeAllPermissions": "Отменить все права доступа", + "@revokeAllPermissions": { "type": "text", "placeholders": {} }, - "Room has been upgraded": "Комната обновлена", - "@Room has been upgraded": { + "roomHasBeenUpgraded": "Комната обновлена", + "@roomHasBeenUpgraded": { "type": "text", "placeholders": {} }, - "Saturday": "Суббота", - "@Saturday": { + "saturday": "Суббота", + "@saturday": { "type": "text", "placeholders": {} }, - "Share": "Поделиться", - "@Share": { - "type": "text", - "placeholders": {} - }, - "sharedTheLocation": "{username} поделился(-ась) местоположением", - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "Search for a chat": "Поиск чата", - "@Search for a chat": { - "type": "text", - "placeholders": {} - }, - "Seen a long time ago": "Просматривали давно", - "@Seen a long time ago": { + "searchForAChat": "Поиск чата", + "@searchForAChat": { "type": "text", "placeholders": {} }, @@ -1134,14 +1185,6 @@ "username": {} } }, - "seenByUserAndUser": "Просмотрено пользователями {username} и {username2}", - "@seenByUserAndUser": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, "seenByUserAndCountOthers": "Просмотрено пользователями {username} и {count} другими", "@seenByUserAndCountOthers": { "type": "text", @@ -1150,23 +1193,51 @@ "count": {} } }, - "Send": "Отправить", - "@Send": { + "seenByUserAndUser": "Просмотрено пользователями {username} и {username2}", + "@seenByUserAndUser": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "send": "Отправить", + "@send": { "type": "text", "placeholders": {} }, - "Send a message": "Отправить сообщение", - "@Send a message": { + "sendAMessage": "Отправить сообщение", + "@sendAMessage": { "type": "text", "placeholders": {} }, - "Send file": "Отправить файл", - "@Send file": { + "sendAudio": "Отправить аудио", + "@sendAudio": { "type": "text", "placeholders": {} }, - "Send image": "Отправить картинку", - "@Send image": { + "sendBugReports": "Разрешить отправку отчетов об ошибках в sentry.io", + "@sendBugReports": { + "type": "text", + "placeholders": {} + }, + "sendFile": "Отправить файл", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "Отправить изображение", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sendOriginal": "Отправить оригинал", + "@sendOriginal": { + "type": "text", + "placeholders": {} + }, + "sendVideo": "Отправить видео", + "@sendVideo": { "type": "text", "placeholders": {} }, @@ -1184,7 +1255,7 @@ "username": {} } }, - "sentAPicture": "{username} отправил(а) картинку", + "sentAPicture": "{username} отправил(а) изображение", "@sentAPicture": { "type": "text", "placeholders": { @@ -1205,123 +1276,129 @@ "username": {} } }, + "sentCallInformations": "{senderName} отправил(а) информацию о звонке", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "sentryInfo": "Информация о вашей конфиденциальности: https://sentry.io/security/", + "@sentryInfo": { + "type": "text", + "placeholders": {} + }, "sessionVerified": "Сессия подтверждена", "@sessionVerified": { "type": "text", "placeholders": {} }, - "Set a profile picture": "Установить изображение профиля", - "@Set a profile picture": { + "setAProfilePicture": "Установить изображение профиля", + "@setAProfilePicture": { "type": "text", "placeholders": {} }, - "Set group description": "Задать описание группы", - "@Set group description": { + "setGroupDescription": "Задать описание группы", + "@setGroupDescription": { "type": "text", "placeholders": {} }, - "Set invitation link": "Установить ссылку для приглашения", - "@Set invitation link": { + "setInvitationLink": "Установить ссылку для приглашения", + "@setInvitationLink": { "type": "text", "placeholders": {} }, - "Set status": "Задать статус", - "@Set status": { + "setStatus": "Задать статус", + "@setStatus": { "type": "text", "placeholders": {} }, - "Settings": "Настройки", - "@Settings": { + "settings": "Настройки", + "@settings": { "type": "text", "placeholders": {} }, - "Sign up": "Зарегистрироваться", - "@Sign up": { + "share": "Поделиться", + "@share": { "type": "text", "placeholders": {} }, - "Skip": "Пропустить", - "@Skip": { + "sharedTheLocation": "{username} поделился(ась) местоположением", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "signUp": "Зарегистрироваться", + "@signUp": { "type": "text", "placeholders": {} }, - "Change your style": "Изменить свой стиль", - "@Change your style": { + "skip": "Пропустить", + "@skip": { "type": "text", "placeholders": {} }, - "System": "Системный", - "@System": { + "sourceCode": "Исходный код", + "@sourceCode": { "type": "text", "placeholders": {} }, - "How are you today?": "Как у вас сегодня дела?", - "@How are you today?": { + "startedACall": "{senderName} начал(а) звонок", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "startYourFirstChat": "Начните свой первый чат :-)", + "@startYourFirstChat": { "type": "text", "placeholders": {} }, - "Light": "Светлый", - "@Light": { + "statusExampleMessage": "Как у вас сегодня дела?", + "@statusExampleMessage": { "type": "text", "placeholders": {} }, - "Dark": "Тёмный", - "@Dark": { + "submit": "Отправить", + "@submit": { "type": "text", "placeholders": {} }, - "Use Amoled compatible colors?": "Использовать Amoled совместимые цвета?", - "@Use Amoled compatible colors?": { + "sunday": "Воскресенье", + "@sunday": { "type": "text", "placeholders": {} }, - "Source code": "Исходный код", - "@Source code": { + "systemTheme": "Системная", + "@systemTheme": { "type": "text", "placeholders": {} }, - "Start your first chat :-)": "Начни свой первый чат :-)", - "@Start your first chat :-)": { + "tapToShowMenu": "Нажмите, чтобы показать меню", + "@tapToShowMenu": { "type": "text", "placeholders": {} }, - "Submit": "Отправить", - "@Submit": { + "theyDontMatch": "Они не совпадают", + "@theyDontMatch": { "type": "text", "placeholders": {} }, - "Sunday": "Воскресенье", - "@Sunday": { + "theyMatch": "Они совпадают", + "@theyMatch": { "type": "text", "placeholders": {} }, - "Donate": "Пожертвовать", - "@Donate": { + "thisRoomHasBeenArchived": "Эта комната была заархивирована.", + "@thisRoomHasBeenArchived": { "type": "text", "placeholders": {} }, - "Tap to show menu": "Нажмите, чтобы показать меню", - "@Tap to show menu": { - "type": "text", - "placeholders": {} - }, - "They Don't Match": "Они не совпадают", - "@They Don't Match": { - "type": "text", - "placeholders": {} - }, - "They Match": "Они совпадают", - "@They Match": { - "type": "text", - "placeholders": {} - }, - "This room has been archived.": "Эта комната была заархивирована.", - "@This room has been archived.": { - "type": "text", - "placeholders": {} - }, - "Thursday": "Четверг", - "@Thursday": { + "thursday": "Четверг", + "@thursday": { "type": "text", "placeholders": {} }, @@ -1341,17 +1418,17 @@ "type": "text", "placeholders": {} }, - "Try to send again": "Попробуйте отправить еще раз", - "@Try to send again": { + "tryToSendAgain": "Попробуйте отправить ещё раз", + "@tryToSendAgain": { "type": "text", "placeholders": {} }, - "Tuesday": "Вторник", - "@Tuesday": { + "tuesday": "Вторник", + "@tuesday": { "type": "text", "placeholders": {} }, - "unbannedUser": "{username} разбанил(а) {targetName}", + "unbannedUser": "{username} разблокировал(а) {targetName}", "@unbannedUser": { "type": "text", "placeholders": { @@ -1359,53 +1436,58 @@ "targetName": {} } }, - "Unblock Device": "Разблокировать устройство", - "@Unblock Device": { + "unblockDevice": "Разблокировать устройство", + "@unblockDevice": { "type": "text", "placeholders": {} }, - "Unmute chat": "Включить уведомления", - "@Unmute chat": { + "unknownDevice": "Неизвестное устройство", + "@unknownDevice": { "type": "text", "placeholders": {} }, - "Unknown device": "Неизвестное устройство", - "@Unknown device": { + "unknownEncryptionAlgorithm": "Неизвестный алгоритм шифрования", + "@unknownEncryptionAlgorithm": { "type": "text", "placeholders": {} }, - "Unknown encryption algorithm": "Неизвестный алгоритм шифрования", - "@Unknown encryption algorithm": { - "type": "text", - "placeholders": {} - }, - "unknownSessionVerify": "Неизвестная сессия, пожалуйста, проверьте", - "@unknownSessionVerify": { - "type": "text", - "placeholders": {} - }, - "unknownEvent": "Неизвестное событие '{type}'", + "unknownEvent": "Неизвестное событие \"{type}\"", "@unknownEvent": { "type": "text", "placeholders": { "type": {} } }, - "unreadChats": "{unreadCount} непрочитанных чатов", + "unknownSessionVerify": "Неизвестная сессия, пожалуйста, проверьте", + "@unknownSessionVerify": { + "type": "text", + "placeholders": {} + }, + "unmuteChat": "Включить уведомления", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unpin": "Открепить", + "@unpin": { + "type": "text", + "placeholders": {} + }, + "unreadChats": "{unreadCount} непрочитанных чата(ов)", "@unreadChats": { "type": "text", "placeholders": { "unreadCount": {} } }, - "unreadMessages": "{unreadEvents} непрочитанных сообщений", + "unreadMessages": "{unreadEvents} непрочитанных сообщения(ий)", "@unreadMessages": { "type": "text", "placeholders": { "unreadEvents": {} } }, - "unreadMessagesInChats": "{unreadEvents} непрочитанных сообщений в {unreadChats} чатах", + "unreadMessagesInChats": "{unreadEvents} непрочитанное(ых) сообщение(ий) в {unreadChats} чате(ах)", "@unreadMessagesInChats": { "type": "text", "placeholders": { @@ -1413,6 +1495,11 @@ "unreadChats": {} } }, + "useAmoledTheme": "AMOLED-совместимые цвета", + "@useAmoledTheme": { + "type": "text", + "placeholders": {} + }, "userAndOthersAreTyping": "{username} и {count} других участников печатают...", "@userAndOthersAreTyping": { "type": "text", @@ -1429,11 +1516,6 @@ "username2": {} } }, - "Username": "Имя пользователя", - "@Username": { - "type": "text", - "placeholders": {} - }, "userIsTyping": "{username} печатает...", "@userIsTyping": { "type": "text", @@ -1441,7 +1523,19 @@ "username": {} } }, - "userSentUnknownEvent": "{username} отправил(а) событие типа {type}", + "userLeftTheChat": "{username} покинул(а) чат", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "Имя пользователя", + "@username": { + "type": "text", + "placeholders": {} + }, + "userSentUnknownEvent": "{username} отправил(а) событие типа \"{type}\"", "@userSentUnknownEvent": { "type": "text", "placeholders": { @@ -1449,8 +1543,13 @@ "type": {} } }, - "Verify": "Проверить", - "@Verify": { + "verifiedSession": "Сессия успешно проверена", + "@verifiedSession": { + "type": "text", + "placeholders": {} + }, + "verify": "Проверить", + "@verify": { "type": "text", "placeholders": {} }, @@ -1459,17 +1558,12 @@ "type": "text", "placeholders": {} }, - "verifiedSession": "Успешно проверенная сессия!", - "@verifiedSession": { - "type": "text", - "placeholders": {} - }, "verifyStart": "Начать проверку", "@verifyStart": { "type": "text", "placeholders": {} }, - "verifySuccess": "Вы успешно проверили!", + "verifySuccess": "Проверка успешно завершена", "@verifySuccess": { "type": "text", "placeholders": {} @@ -1479,33 +1573,33 @@ "type": "text", "placeholders": {} }, - "Verify User": "Проверить пользователя", - "@Verify User": { + "verifyUser": "Проверить пользователя", + "@verifyUser": { "type": "text", "placeholders": {} }, - "Video call": "Видеозвонок", - "@Video call": { + "videoCall": "Видеозвонок", + "@videoCall": { "type": "text", "placeholders": {} }, - "Visible for all participants": "Видима для всех участников", - "@Visible for all participants": { + "visibilityOfTheChatHistory": "Видимость истории чата", + "@visibilityOfTheChatHistory": { "type": "text", "placeholders": {} }, - "Visible for everyone": "Видна всем", - "@Visible for everyone": { + "visibleForAllParticipants": "Видима для всех участников", + "@visibleForAllParticipants": { "type": "text", "placeholders": {} }, - "Visibility of the chat history": "Видимость истории чата", - "@Visibility of the chat history": { + "visibleForEveryone": "Видна всем", + "@visibleForEveryone": { "type": "text", "placeholders": {} }, - "Voice message": "Голосовое сообщение", - "@Voice message": { + "voiceMessage": "Отправить голосовое сообщение", + "@voiceMessage": { "type": "text", "placeholders": {} }, @@ -1514,7 +1608,7 @@ "type": "text", "placeholders": {} }, - "waitingPartnerEmoji": "В ожидании партнёра, чтобы принять смайлики...", + "waitingPartnerEmoji": "В ожидании партнёра, чтобы принять эмодзи...", "@waitingPartnerEmoji": { "type": "text", "placeholders": {} @@ -1524,68 +1618,88 @@ "type": "text", "placeholders": {} }, - "Wallpaper": "Обои", - "@Wallpaper": { + "wallpaper": "Обои", + "@wallpaper": { "type": "text", "placeholders": {} }, - "End to end encryption is currently in Beta! Use at your own risk!": "Сквозное шифрование в настоящее время в бета-версии! Используйте на свой риск!", - "@End to end encryption is currently in Beta! Use at your own risk!": { + "warningEncryptionInBeta": "Сквозное шифрование в настоящее время в бета-версии! Используйте на свой риск!", + "@warningEncryptionInBeta": { "type": "text", "placeholders": {} }, - "Wednesday": "Среда", - "@Wednesday": { + "wednesday": "Среда", + "@wednesday": { "type": "text", "placeholders": {} }, - "Welcome to the cutest instant messenger in the matrix network.": "Добро пожаловать в самый симпатичный мессенджер в сети Matrix.", - "@Welcome to the cutest instant messenger in the matrix network.": { + "welcomeText": "Добро пожаловать в самый симпатичный мессенджер в сети Matrix.", + "@welcomeText": { "type": "text", "placeholders": {} }, - "Who is allowed to join this group": "Кому разрешено вступать в эту группу", - "@Who is allowed to join this group": { + "whoIsAllowedToJoinThisGroup": "Кому разрешено вступать в эту группу", + "@whoIsAllowedToJoinThisGroup": { "type": "text", "placeholders": {} }, - "Write a message...": "Напишите сообщение...", - "@Write a message...": { + "writeAMessage": "Напишите сообщение...", + "@writeAMessage": { "type": "text", "placeholders": {} }, - "Yes": "Да", - "@Yes": { + "yes": "Да", + "@yes": { "type": "text", "placeholders": {} }, - "You": "Вы", - "@You": { + "you": "Вы", + "@you": { "type": "text", "placeholders": {} }, - "You are invited to this chat": "Вы приглашены в этот чат", - "@You are invited to this chat": { + "youAreInvitedToThisChat": "Вы приглашены в этот чат", + "@youAreInvitedToThisChat": { "type": "text", "placeholders": {} }, - "You are no longer participating in this chat": "Вы больше не участвуете в этом чате", - "@You are no longer participating in this chat": { + "youAreNoLongerParticipatingInThisChat": "Вы больше не участвуете в этом чате", + "@youAreNoLongerParticipatingInThisChat": { "type": "text", "placeholders": {} }, - "You cannot invite yourself": "Вы не можете пригласить себя", - "@You cannot invite yourself": { + "youCannotInviteYourself": "Вы не можете пригласить себя", + "@youCannotInviteYourself": { "type": "text", "placeholders": {} }, - "You have been banned from this chat": "Вы были забанены в этом чате", - "@You have been banned from this chat": { + "youHaveBeenBannedFromThisChat": "Вы были заблокированы в этом чате", + "@youHaveBeenBannedFromThisChat": { "type": "text", "placeholders": {} }, - "Your own username": "Ваше имя пользователя", - "@Your own username": { + "yourOwnUsername": "Ваше имя пользователя", + "@yourOwnUsername": { + "type": "text", + "placeholders": {} + }, + "warning": "Предупреждение!", + "@warning": { + "type": "text", + "placeholders": {} + }, + "passwordHasBeenChanged": "Пароль был изменён", + "@passwordHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "deleteAccount": "Удалить аккаунт", + "@deleteAccount": { + "type": "text", + "placeholders": {} + }, + "deactivateAccountWarning": "Это деактивирует вашу учётную запись пользователя. Это не может быть отменено! Вы уверены?", + "@deactivateAccountWarning": { "type": "text", "placeholders": {} } diff --git a/lib/l10n/intl_sk.arb b/lib/l10n/intl_sk.arb index 179b569..65a8680 100644 --- a/lib/l10n/intl_sk.arb +++ b/lib/l10n/intl_sk.arb @@ -1,12 +1,13 @@ { - "@@last_modified": "2020-06-25T16:02:16.297192", - "About": "O aplikácii", - "@About": { + "@@locale": "sk", + "@@last_modified": "2020-09-23 11:46:01.877200", + "about": "O aplikácii", + "@about": { "type": "text", "placeholders": {} }, - "Accept": "Prijať", - "@Accept": { + "accept": "Prijať", + "@accept": { "type": "text", "placeholders": {} }, @@ -17,13 +18,13 @@ "username": {} } }, - "Account": "Účet", - "@Account": { + "account": "Účet", + "@account": { "type": "text", "placeholders": {} }, - "Account informations": "Informácie o účte", - "@Account informations": { + "accountInformation": "Informácie o účte", + "@accountInformation": { "type": "text", "placeholders": {} }, @@ -34,13 +35,13 @@ "username": {} } }, - "Add a group description": "Pridať popis skupiny", - "@Add a group description": { + "addGroupDescription": "Pridať popis skupiny", + "@addGroupDescription": { "type": "text", "placeholders": {} }, - "Admin": "Administrátor", - "@Admin": { + "admin": "Administrátor", + "@admin": { "type": "text", "placeholders": {} }, @@ -49,33 +50,33 @@ "type": "text", "placeholders": {} }, - "Already have an account?": "Máte už účet?", - "@Already have an account?": { + "alreadyHaveAnAccount": "Máte už účet?", + "@alreadyHaveAnAccount": { "type": "text", "placeholders": {} }, - "Anyone can join": "Ktokoľvek sa môže pripojiť", - "@Anyone can join": { + "anyoneCanJoin": "Ktokoľvek sa môže pripojiť", + "@anyoneCanJoin": { "type": "text", "placeholders": {} }, - "Archive": "Archivovať", - "@Archive": { + "archive": "Archivovať", + "@archive": { "type": "text", "placeholders": {} }, - "Archived Room": "Archivovaná miestnosť", - "@Archived Room": { + "archivedRoom": "Archivovaná miestnosť", + "@archivedRoom": { "type": "text", "placeholders": {} }, - "Are guest users allowed to join": "Môžu sa pripojiť hostia", - "@Are guest users allowed to join": { + "areGuestsAllowedToJoin": "Môžu sa pripojiť hostia", + "@areGuestsAllowedToJoin": { "type": "text", "placeholders": {} }, - "Are you sure?": "Ste si istí?", - "@Are you sure?": { + "areYouSure": "Ste si istí?", + "@areYouSure": { "type": "text", "placeholders": {} }, @@ -101,23 +102,23 @@ "username": {} } }, - "Authentication": "Autentifikácia", - "@Authentication": { + "authentication": "Autentifikácia", + "@authentication": { "type": "text", "placeholders": {} }, - "Avatar has been changed": "Avatar bol zmenený", - "@Avatar has been changed": { + "avatarHasBeenChanged": "Avatar bol zmenený", + "@avatarHasBeenChanged": { "type": "text", "placeholders": {} }, - "Ban from chat": "Zabanovať z chatu", - "@Ban from chat": { + "banFromChat": "Zabanovať z chatu", + "@banFromChat": { "type": "text", "placeholders": {} }, - "Banned": "Zabanovaný", - "@Banned": { + "banned": "Zabanovaný", + "@banned": { "type": "text", "placeholders": {} }, @@ -129,8 +130,8 @@ "targetName": {} } }, - "Block Device": "Zakázať zariadenie", - "@Block Device": { + "blockDevice": "Zakázať zariadenie", + "@blockDevice": { "type": "text", "placeholders": {} }, @@ -146,8 +147,8 @@ "type": "text", "placeholders": {} }, - "Cancel": "Zrušiť", - "@Cancel": { + "cancel": "Zrušiť", + "@cancel": { "type": "text", "placeholders": {} }, @@ -158,14 +159,6 @@ "username": {} } }, - "changedTheChatNameTo": "{username} zmenili meno chatu na: „{chatname}“", - "@changedTheChatNameTo": { - "type": "text", - "placeholders": { - "username": {}, - "chatname": {} - } - }, "changedTheChatDescriptionTo": "{username} zmenili popis chatu na: „{description}“", "@changedTheChatDescriptionTo": { "type": "text", @@ -174,6 +167,14 @@ "description": {} } }, + "changedTheChatNameTo": "{username} zmenili meno chatu na: „{chatname}“", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, "changedTheChatPermissions": "{username} zmenili nastavenie oprávnení chatu", "@changedTheChatPermissions": { "type": "text", @@ -189,11 +190,6 @@ "displayname": {} } }, - "Change the homeserver": "Zmeniť použitý server", - "@Change the homeserver": { - "type": "text", - "placeholders": {} - }, "changedTheGuestAccessRules": "{username} zmenili prístupové práva pre hosťov", "@changedTheGuestAccessRules": { "type": "text", @@ -260,53 +256,63 @@ "username": {} } }, - "Changelog": "História zmien", - "@Changelog": { + "changelog": "História zmien", + "@changelog": { "type": "text", "placeholders": {} }, - "Change the name of the group": "Zmeniť názov skupiny", - "@Change the name of the group": { + "changeTheHomeserver": "Zmeniť použitý server", + "@changeTheHomeserver": { "type": "text", "placeholders": {} }, - "Change wallpaper": "Zmeniť pozadie", - "@Change wallpaper": { + "changeTheme": "Zmena štýlu", + "@changeTheme": { "type": "text", "placeholders": {} }, - "Change the server": "Zmeniť server", - "@Change the server": { + "changeTheNameOfTheGroup": "Zmeniť názov skupiny", + "@changeTheNameOfTheGroup": { "type": "text", "placeholders": {} }, - "The encryption has been corrupted": "Šifrovanie bolo poškodené", - "@The encryption has been corrupted": { + "changeTheServer": "Zmeniť server", + "@changeTheServer": { "type": "text", "placeholders": {} }, - "Chat": "Chat", - "@Chat": { + "changeWallpaper": "Zmeniť pozadie", + "@changeWallpaper": { "type": "text", "placeholders": {} }, - "Chat details": "Podrobnosti o chate", - "@Chat details": { + "channelCorruptedDecryptError": "Šifrovanie bolo poškodené", + "@channelCorruptedDecryptError": { "type": "text", "placeholders": {} }, - "Choose a strong password": "Vyberte si silné heslo", - "@Choose a strong password": { + "chat": "Chat", + "@chat": { "type": "text", "placeholders": {} }, - "Choose a username": "Vyberte si užívateľské meno", - "@Choose a username": { + "chatDetails": "Podrobnosti o chate", + "@chatDetails": { "type": "text", "placeholders": {} }, - "Close": "Zavrieť", - "@Close": { + "chooseAStrongPassword": "Vyberte si silné heslo", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "chooseAUsername": "Vyberte si užívateľské meno", + "@chooseAUsername": { + "type": "text", + "placeholders": {} + }, + "close": "Zavrieť", + "@close": { "type": "text", "placeholders": {} }, @@ -320,38 +326,38 @@ "type": "text", "placeholders": {} }, - "Confirm": "Potvrdiť", - "@Confirm": { + "confirm": "Potvrdiť", + "@confirm": { "type": "text", "placeholders": {} }, - "Connect": "Pripojiť", - "@Connect": { + "connect": "Pripojiť", + "@connect": { "type": "text", "placeholders": {} }, - "Connection attempt failed": "Pokus o pripojenie zlyhal", - "@Connection attempt failed": { + "connectionAttemptFailed": "Pokus o pripojenie zlyhal", + "@connectionAttemptFailed": { "type": "text", "placeholders": {} }, - "Contact has been invited to the group": "Kontakt bol pozvaný do skupiny", - "@Contact has been invited to the group": { + "contactHasBeenInvitedToTheGroup": "Kontakt bol pozvaný do skupiny", + "@contactHasBeenInvitedToTheGroup": { "type": "text", "placeholders": {} }, - "Content viewer": "Prehliadač obsahu", - "@Content viewer": { + "contentViewer": "Prehliadač obsahu", + "@contentViewer": { "type": "text", "placeholders": {} }, - "Copied to clipboard": "Skopírované do schránky", - "@Copied to clipboard": { + "copiedToClipboard": "Skopírované do schránky", + "@copiedToClipboard": { "type": "text", "placeholders": {} }, - "Copy": "Kopírovať", - "@Copy": { + "copy": "Kopírovať", + "@copy": { "type": "text", "placeholders": {} }, @@ -362,13 +368,13 @@ "error": {} } }, - "Could not set avatar": "Nepodarilo sa nastaviť avatar", - "@Could not set avatar": { + "couldNotSetAvatar": "Nepodarilo sa nastaviť avatar", + "@couldNotSetAvatar": { "type": "text", "placeholders": {} }, - "Could not set displayname": "Nepodarilo sa nastaviť prezývku užívateľa", - "@Could not set displayname": { + "couldNotSetDisplayname": "Nepodarilo sa nastaviť prezývku užívateľa", + "@couldNotSetDisplayname": { "type": "text", "placeholders": {} }, @@ -379,13 +385,13 @@ "count": {} } }, - "Create": "Vytvoriť", - "@Create": { + "create": "Vytvoriť", + "@create": { "type": "text", "placeholders": {} }, - "Create account now": "Vytvoriť účet teraz", - "@Create account now": { + "createAccountNow": "Vytvoriť účet teraz", + "@createAccountNow": { "type": "text", "placeholders": {} }, @@ -396,8 +402,8 @@ "username": {} } }, - "Create new group": "Vytvoriť novú skupinu", - "@Create new group": { + "createNewGroup": "Vytvoriť novú skupinu", + "@createNewGroup": { "type": "text", "placeholders": {} }, @@ -411,8 +417,13 @@ "type": "text", "placeholders": {} }, - "Currently active": "Momentálne prítomní", - "@Currently active": { + "currentlyActive": "Momentálne prítomní", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "Tmavá", + "@darkTheme": { "type": "text", "placeholders": {} }, @@ -441,63 +452,58 @@ "day": {} } }, - "Delete": "Odstrániť", - "@Delete": { + "delete": "Odstrániť", + "@delete": { "type": "text", "placeholders": {} }, - "Delete message": "Odstrániť správu", - "@Delete message": { + "deleteMessage": "Odstrániť správu", + "@deleteMessage": { "type": "text", "placeholders": {} }, - "Deny": "Zamietnuť", - "@Deny": { + "deny": "Zamietnuť", + "@deny": { "type": "text", "placeholders": {} }, - "Device": "Zariadenie", - "@Device": { + "device": "Zariadenie", + "@device": { "type": "text", "placeholders": {} }, - "Devices": "Zariadenia", - "@Devices": { + "devices": "Zariadenia", + "@devices": { "type": "text", "placeholders": {} }, - "Discard picture": "Zahodiť obrázok", - "@Discard picture": { + "discardPicture": "Zahodiť obrázok", + "@discardPicture": { "type": "text", "placeholders": {} }, - "Displayname has been changed": "Prezývka bola zmenená", - "@Displayname has been changed": { + "displaynameHasBeenChanged": "Prezývka bola zmenená", + "@displaynameHasBeenChanged": { "type": "text", "placeholders": {} }, - "Download file": "Stiahnuť súbor", - "@Download file": { + "donate": "Prispejte", + "@donate": { "type": "text", "placeholders": {} }, - "Edit displayname": "Zmeniť prezývku", - "@Edit displayname": { + "downloadFile": "Stiahnuť súbor", + "@downloadFile": { "type": "text", "placeholders": {} }, - "Emote Settings": "Nastavenie emotikonov", - "@Emote Settings": { + "editDisplayname": "Zmeniť prezývku", + "@editDisplayname": { "type": "text", "placeholders": {} }, - "Emote shortcode": "Kód emotikonu", - "@Emote shortcode": { - "type": "text", - "placeholders": {} - }, - "emoteWarnNeedToPick": "Musíte zvoliť kód emotikonu a obrázok", - "@emoteWarnNeedToPick": { + "editJitsiInstance": "Nastavenie inštancie Jitsi", + "@editJitsiInstance": { "type": "text", "placeholders": {} }, @@ -511,103 +517,118 @@ "type": "text", "placeholders": {} }, - "Empty chat": "Prázdny chat", - "@Empty chat": { + "emoteSettings": "Nastavenie emotikonov", + "@emoteSettings": { "type": "text", "placeholders": {} }, - "You won't be able to disable the encryption anymore. Are you sure?": "Šifrovanie už nebude možné vypnúť. Ste si tým istí?", - "@You won't be able to disable the encryption anymore. Are you sure?": { + "emoteShortcode": "Kód emotikonu", + "@emoteShortcode": { "type": "text", "placeholders": {} }, - "Encryption": "Šifrovanie", - "@Encryption": { + "emoteWarnNeedToPick": "Musíte zvoliť kód emotikonu a obrázok", + "@emoteWarnNeedToPick": { "type": "text", "placeholders": {} }, - "Encryption algorithm": "Šifrovací algoritmus", - "@Encryption algorithm": { + "emptyChat": "Prázdny chat", + "@emptyChat": { "type": "text", "placeholders": {} }, - "Encryption is not enabled": "Šifrovanie nie je aktívne", - "@Encryption is not enabled": { + "enableEncryptionWarning": "Šifrovanie už nebude možné vypnúť. Ste si tým istí?", + "@enableEncryptionWarning": { "type": "text", "placeholders": {} }, - "End-to-end encryption settings": "Nastavenie koncového šifrovania", - "@End-to-end encryption settings": { + "encryption": "Šifrovanie", + "@encryption": { "type": "text", "placeholders": {} }, - "Enter a group name": "Zadajte názov skupiny", - "@Enter a group name": { + "encryptionAlgorithm": "Šifrovací algoritmus", + "@encryptionAlgorithm": { "type": "text", "placeholders": {} }, - "Enter a username": "Zadajte uživateľské meno", - "@Enter a username": { + "encryptionNotEnabled": "Šifrovanie nie je aktívne", + "@encryptionNotEnabled": { "type": "text", "placeholders": {} }, - "Enter your homeserver": "Zadajte svoj homeserver", - "@Enter your homeserver": { + "end2endEncryptionSettings": "Nastavenie koncového šifrovania", + "@end2endEncryptionSettings": { "type": "text", "placeholders": {} }, - "File name": "Názov súboru", - "@File name": { + "enterAGroupName": "Zadajte názov skupiny", + "@enterAGroupName": { "type": "text", "placeholders": {} }, - "File size": "Veľkosť súboru", - "@File size": { + "enterAUsername": "Zadajte uživateľské meno", + "@enterAUsername": { "type": "text", "placeholders": {} }, - "FluffyChat": "FluffyChat", - "@FluffyChat": { + "enterYourHomeserver": "Zadajte svoj homeserver", + "@enterYourHomeserver": { "type": "text", "placeholders": {} }, - "Forward": "Preposlať", - "@Forward": { + "fileName": "Názov súboru", + "@fileName": { "type": "text", "placeholders": {} }, - "Friday": "Piatok", - "@Friday": { + "fileSize": "Veľkosť súboru", + "@fileSize": { "type": "text", "placeholders": {} }, - "From joining": "Od pripojenia", - "@From joining": { + "fluffychat": "FluffyChat", + "@fluffychat": { "type": "text", "placeholders": {} }, - "From the invitation": "Od pozvania", - "@From the invitation": { + "forward": "Preposlať", + "@forward": { "type": "text", "placeholders": {} }, - "Group": "Skupina", - "@Group": { + "friday": "Piatok", + "@friday": { "type": "text", "placeholders": {} }, - "Group description": "Popis skupiny", - "@Group description": { + "fromJoining": "Od pripojenia", + "@fromJoining": { "type": "text", "placeholders": {} }, - "Group description has been changed": "Popis skupiny bol zmenený", - "@Group description has been changed": { + "fromTheInvitation": "Od pozvania", + "@fromTheInvitation": { "type": "text", "placeholders": {} }, - "Group is public": "Skupina je verejná", - "@Group is public": { + "group": "Skupina", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupDescription": "Popis skupiny", + "@groupDescription": { + "type": "text", + "placeholders": {} + }, + "groupDescriptionHasBeenChanged": "Popis skupiny bol zmenený", + "@groupDescriptionHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "Skupina je verejná", + "@groupIsPublic": { "type": "text", "placeholders": {} }, @@ -618,13 +639,13 @@ "displayname": {} } }, - "Guests are forbidden": "Hostia sú zakázaní", - "@Guests are forbidden": { + "guestsAreForbidden": "Hostia sú zakázaní", + "@guestsAreForbidden": { "type": "text", "placeholders": {} }, - "Guests can join": "Hostia sa môžu pripojiť", - "@Guests can join": { + "guestsCanJoin": "Hostia sa môžu pripojiť", + "@guestsCanJoin": { "type": "text", "placeholders": {} }, @@ -636,23 +657,23 @@ "targetName": {} } }, - "Help": "Pomoc", - "@Help": { + "help": "Pomoc", + "@help": { "type": "text", "placeholders": {} }, - "Homeserver is not compatible": "Homeserver nie je kompatibilný", - "@Homeserver is not compatible": { + "homeserverIsNotCompatible": "Homeserver nie je kompatibilný", + "@homeserverIsNotCompatible": { "type": "text", "placeholders": {} }, - "ID": "ID", - "@ID": { + "id": "ID", + "@id": { "type": "text", "placeholders": {} }, - "Identity": "Identita", - "@Identity": { + "identity": "Identita", + "@identity": { "type": "text", "placeholders": {} }, @@ -661,8 +682,8 @@ "type": "text", "placeholders": {} }, - "Invite contact": "Pozvať kontakt", - "@Invite contact": { + "inviteContact": "Pozvať kontakt", + "@inviteContact": { "type": "text", "placeholders": {} }, @@ -673,19 +694,11 @@ "groupName": {} } }, - "Invited": "Pozvanie", - "@Invited": { + "invited": "Pozvanie", + "@invited": { "type": "text", "placeholders": {} }, - "inviteText": "{username} vás pozval na FluffyChat.\n1. Nainštalujte si FluffyChat: http://fluffy.chat\n2. Zaregistrujte sa alebo sa prihláste\n3. Otvorte odkaz na pozvánku: {link}", - "@inviteText": { - "type": "text", - "placeholders": { - "username": {}, - "link": {} - } - }, "invitedUser": "{username} pozvali {targetName}", "@invitedUser": { "type": "text", @@ -694,23 +707,26 @@ "targetName": {} } }, - "Invited users only": "Len pozvaní používatelia", - "@Invited users only": { + "invitedUsersOnly": "Len pozvaní používatelia", + "@invitedUsersOnly": { "type": "text", "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": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, "isDeviceKeyCorrect": "Je nasledujúci kód zariadenia správny?", "@isDeviceKeyCorrect": { "type": "text", "placeholders": {} }, - "is typing...": "píše...", - "@is typing...": { - "type": "text", - "placeholders": {} - }, - "Edit Jitsi instance": "Nastavenie inštancie Jitsi", - "@Edit Jitsi instance": { + "isTyping": "píše...", + "@isTyping": { "type": "text", "placeholders": {} }, @@ -747,33 +763,11 @@ "targetName": {} } }, - "Kick from chat": "Vyhodiť z chatu", - "@Kick from chat": { + "kickFromChat": "Vyhodiť z chatu", + "@kickFromChat": { "type": "text", "placeholders": {} }, - "Leave": "Opustiť", - "@Leave": { - "type": "text", - "placeholders": {} - }, - "Left the chat": "Opustili chat", - "@Left the chat": { - "type": "text", - "placeholders": {} - }, - "Logout": "Odhlásiť sa", - "@Logout": { - "type": "text", - "placeholders": {} - }, - "userLeftTheChat": "{username} opustili chat", - "@userLeftTheChat": { - "type": "text", - "placeholders": { - "username": {} - } - }, "lastActiveAgo": "Naposledy prítomní: {localizedTimeShort}", "@lastActiveAgo": { "type": "text", @@ -781,23 +775,33 @@ "localizedTimeShort": {} } }, - "Last seen IP": "Naposledy zaznamenaná IP adresa", - "@Last seen IP": { + "lastSeenIp": "Naposledy zaznamenaná IP adresa", + "@lastSeenIp": { "type": "text", "placeholders": {} }, - "License": "Licencia", - "@License": { + "lastSeenLongTimeAgo": "Videný veľmi dávno", + "@lastSeenLongTimeAgo": { "type": "text", "placeholders": {} }, - "Loading... Please wait": "Načítava sa... Čakajte prosím", - "@Loading... Please wait": { + "leave": "Opustiť", + "@leave": { "type": "text", "placeholders": {} }, - "Load more...": "Načítať viac...", - "@Load more...": { + "leftTheChat": "Opustili chat", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "Licencia", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "Svetlá", + "@lightTheme": { "type": "text", "placeholders": {} }, @@ -808,8 +812,18 @@ "count": {} } }, - "Login": "Prihlásiť sa", - "@Login": { + "loadingPleaseWait": "Načítava sa... Čakajte prosím", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "Načítať viac...", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "login": "Prihlásiť sa", + "@login": { "type": "text", "placeholders": {} }, @@ -820,53 +834,58 @@ "homeserver": {} } }, - "Make a moderator": "Pridať práva moderátora", - "@Make a moderator": { + "logout": "Odhlásiť sa", + "@logout": { "type": "text", "placeholders": {} }, - "Make an admin": "Pridať práva administrátora", - "@Make an admin": { + "makeAModerator": "Pridať práva moderátora", + "@makeAModerator": { "type": "text", "placeholders": {} }, - "Make sure the identifier is valid": "Skontrolujte, či je identifikátor platný", - "@Make sure the identifier is valid": { + "makeAnAdmin": "Pridať práva administrátora", + "@makeAnAdmin": { "type": "text", "placeholders": {} }, - "Message will be removed for all participants": "Správa bude odstránená pre všetkých účastníkov", - "@Message will be removed for all participants": { + "makeSureTheIdentifierIsValid": "Skontrolujte, či je identifikátor platný", + "@makeSureTheIdentifierIsValid": { "type": "text", "placeholders": {} }, - "Moderator": "Moderátor", - "@Moderator": { + "messageWillBeRemovedWarning": "Správa bude odstránená pre všetkých účastníkov", + "@messageWillBeRemovedWarning": { "type": "text", "placeholders": {} }, - "Monday": "Pondelok", - "@Monday": { + "moderator": "Moderátor", + "@moderator": { "type": "text", "placeholders": {} }, - "Mute chat": "Stlmiť chat", - "@Mute chat": { + "monday": "Pondelok", + "@monday": { "type": "text", "placeholders": {} }, - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": "Prosím berte na vedomie, že na koncové šifrovanie zatiaľ potrebujete Pantalaimon.", - "@Please be aware that you need Pantalaimon to use end-to-end encryption for now.": { + "muteChat": "Stlmiť chat", + "@muteChat": { "type": "text", "placeholders": {} }, - "New message in FluffyChat": "Nová správa v FluffyChate", - "@New message in FluffyChat": { + "needPantalaimonWarning": "Prosím berte na vedomie, že na koncové šifrovanie zatiaľ potrebujete Pantalaimon.", + "@needPantalaimonWarning": { "type": "text", "placeholders": {} }, - "New private chat": "Nový súkromný chat", - "@New private chat": { + "newMessageInFluffyChat": "Nová správa v FluffyChate", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "newPrivateChat": "Nový súkromný chat", + "@newPrivateChat": { "type": "text", "placeholders": {} }, @@ -880,38 +899,38 @@ "type": "text", "placeholders": {} }, + "noEmotesFound": "Nenašli sa žiadne emotikony. 😕", + "@noEmotesFound": { + "type": "text", + "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": "text", + "placeholders": {} + }, "noMegolmBootstrap": "Fluffychat v súčasnosti nepodporuje povolenie online zálohu klúčov. Prosím, povoľte ho z Riot.im.", "@noMegolmBootstrap": { "type": "text", "placeholders": {} }, - "It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": "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/", - "@It seems that you have no google services on your phone. That's a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": { + "none": "Žiadne", + "@none": { "type": "text", "placeholders": {} }, - "None": "Žiadne", - "@None": { + "noPermission": "Chýba povolenie", + "@noPermission": { "type": "text", "placeholders": {} }, - "No emotes found. 😕": "Nenašli sa žiadne emotikony. 😕", - "@No emotes found. 😕": { + "noRoomsFound": "Nenašli sa žiadne miestnosti...", + "@noRoomsFound": { "type": "text", "placeholders": {} }, - "No permission": "Chýba povolenie", - "@No permission": { - "type": "text", - "placeholders": {} - }, - "No rooms found...": "Nenašli sa žiadne miestnosti...", - "@No rooms found...": { - "type": "text", - "placeholders": {} - }, - "Not supported in web": "Nepodporované vo webovej verzii", - "@Not supported in web": { + "notSupportedInWeb": "Nepodporované vo webovej verzii", + "@notSupportedInWeb": { "type": "text", "placeholders": {} }, @@ -937,28 +956,28 @@ "type": "text", "placeholders": {} }, - "Oops something went wrong...": "Och! Niečo sa pokazilo...", - "@Oops something went wrong...": { + "oopsSomethingWentWrong": "Och! Niečo sa pokazilo...", + "@oopsSomethingWentWrong": { "type": "text", "placeholders": {} }, - "Open app to read messages": "Na prečítanie správy otvorte aplikáciu", - "@Open app to read messages": { + "openAppToReadMessages": "Na prečítanie správy otvorte aplikáciu", + "@openAppToReadMessages": { "type": "text", "placeholders": {} }, - "Open camera": "Otvoriť fotoaparát", - "@Open camera": { + "openCamera": "Otvoriť fotoaparát", + "@openCamera": { "type": "text", "placeholders": {} }, - "(Optional) Group name": "(Voliteľné) Názov skupiny", - "@(Optional) Group name": { + "optionalGroupName": "(Voliteľné) Názov skupiny", + "@optionalGroupName": { "type": "text", "placeholders": {} }, - "Participating user devices": "Zúčastnené užívateľské zariadenia", - "@Participating user devices": { + "participatingUserDevices": "Zúčastnené užívateľské zariadenia", + "@participatingUserDevices": { "type": "text", "placeholders": {} }, @@ -967,13 +986,13 @@ "type": "text", "placeholders": {} }, - "Password": "Heslo", - "@Password": { + "password": "Heslo", + "@password": { "type": "text", "placeholders": {} }, - "Pick image": "Vybrať obrázok", - "@Pick image": { + "pickImage": "Vybrať obrázok", + "@pickImage": { "type": "text", "placeholders": {} }, @@ -984,48 +1003,33 @@ "fileName": {} } }, - "Please choose a username": "Vyberte si používateľské meno", - "@Please choose a username": { + "pleaseChooseAUsername": "Vyberte si používateľské meno", + "@pleaseChooseAUsername": { "type": "text", "placeholders": {} }, - "Please enter a matrix identifier": "Vyberte si matrix identifkátor", - "@Please enter a matrix identifier": { + "pleaseEnterAMatrixIdentifier": "Vyberte si matrix identifkátor", + "@pleaseEnterAMatrixIdentifier": { "type": "text", "placeholders": {} }, - "Please enter your password": "Prosím zadajte svoje heslo", - "@Please enter your password": { + "pleaseEnterYourPassword": "Prosím zadajte svoje heslo", + "@pleaseEnterYourPassword": { "type": "text", "placeholders": {} }, - "Please enter your username": "Zadajte svoje používateľské meno", - "@Please enter your username": { + "pleaseEnterYourUsername": "Zadajte svoje používateľské meno", + "@pleaseEnterYourUsername": { "type": "text", "placeholders": {} }, - "Public Rooms": "Verejné miestnosti", - "@Public Rooms": { + "publicRooms": "Verejné miestnosti", + "@publicRooms": { "type": "text", "placeholders": {} }, - "Reject": "Odmietnuť", - "@Reject": { - "type": "text", - "placeholders": {} - }, - "Rejoin": "Vrátiť sa", - "@Rejoin": { - "type": "text", - "placeholders": {} - }, - "Render rich message content": "Zobraziť formátovaný obsah", - "@Render rich message content": { - "type": "text", - "placeholders": {} - }, - "Recording": "Nahrávam", - "@Recording": { + "recording": "Nahrávam", + "@recording": { "type": "text", "placeholders": {} }, @@ -1036,6 +1040,11 @@ "username": {} } }, + "reject": "Odmietnuť", + "@reject": { + "type": "text", + "placeholders": {} + }, "rejectedTheInvitation": "{username} odmietli pozvánku", "@rejectedTheInvitation": { "type": "text", @@ -1043,8 +1052,18 @@ "username": {} } }, - "Remove all other devices": "Odstráňiť všetky ostatné zariadenia", - "@Remove all other devices": { + "rejoin": "Vrátiť sa", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "Odstrániť", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "Odstráňiť všetky ostatné zariadenia", + "@removeAllOtherDevices": { "type": "text", "placeholders": {} }, @@ -1055,75 +1074,58 @@ "username": {} } }, - "Remove device": "Odstráňiť zariadenie", - "@Remove device": { + "removeDevice": "Odstráňiť zariadenie", + "@removeDevice": { "type": "text", "placeholders": {} }, - "Remove exile": "Odblokovať", - "@Remove exile": { + "removeExile": "Odblokovať", + "@removeExile": { "type": "text", "placeholders": {} }, - "Revoke all permissions": "Zrušiť všetky povolenia", - "@Revoke all permissions": { + "removeMessage": "Odstrániť správu", + "@removeMessage": { "type": "text", "placeholders": {} }, - "Remove": "Odstrániť", - "@Remove": { + "renderRichContent": "Zobraziť formátovaný obsah", + "@renderRichContent": { "type": "text", "placeholders": {} }, - "Remove message": "Odstrániť správu", - "@Remove message": { + "reply": "Odpovedať", + "@reply": { "type": "text", "placeholders": {} }, - "Reply": "Odpovedať", - "@Reply": { + "requestPermission": "Vyžiadať si povolenie", + "@requestPermission": { "type": "text", "placeholders": {} }, - "Request permission": "Vyžiadať si povolenie", - "@Request permission": { + "requestToReadOlderMessages": "Žiadosť o prečítanie starších správ", + "@requestToReadOlderMessages": { "type": "text", "placeholders": {} }, - "Request to read older messages": "Žiadosť o prečítanie starších správ", - "@Request to read older messages": { + "revokeAllPermissions": "Zrušiť všetky povolenia", + "@revokeAllPermissions": { "type": "text", "placeholders": {} }, - "Room has been upgraded": "Miestnosť bola upgradeovaná", - "@Room has been upgraded": { + "roomHasBeenUpgraded": "Miestnosť bola upgradeovaná", + "@roomHasBeenUpgraded": { "type": "text", "placeholders": {} }, - "Saturday": "Sobota", - "@Saturday": { + "saturday": "Sobota", + "@saturday": { "type": "text", "placeholders": {} }, - "Share": "Zdieľať", - "@Share": { - "type": "text", - "placeholders": {} - }, - "sharedTheLocation": "{username} zdieľa lokáciu", - "@sharedTheLocation": { - "type": "text", - "placeholders": { - "username": {} - } - }, - "Search for a chat": "Vyhladať v chate", - "@Search for a chat": { - "type": "text", - "placeholders": {} - }, - "Seen a long time ago": "Videný veľmi dávno", - "@Seen a long time ago": { + "searchForAChat": "Vyhladať v chate", + "@searchForAChat": { "type": "text", "placeholders": {} }, @@ -1134,14 +1136,6 @@ "username": {} } }, - "seenByUserAndUser": "Videné užívateľmi {username} a {username2}", - "@seenByUserAndUser": { - "type": "text", - "placeholders": { - "username": {}, - "username2": {} - } - }, "seenByUserAndCountOthers": "Videné užívateľom {username} a {count} dalšími", "@seenByUserAndCountOthers": { "type": "text", @@ -1150,23 +1144,31 @@ "count": {} } }, - "Send": "Odoslať", - "@Send": { + "seenByUserAndUser": "Videné užívateľmi {username} a {username2}", + "@seenByUserAndUser": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "send": "Odoslať", + "@send": { "type": "text", "placeholders": {} }, - "Send a message": "Odoslať správu", - "@Send a message": { + "sendAMessage": "Odoslať správu", + "@sendAMessage": { "type": "text", "placeholders": {} }, - "Send file": "Odoslať súbor", - "@Send file": { + "sendFile": "Odoslať súbor", + "@sendFile": { "type": "text", "placeholders": {} }, - "Send image": "Odoslať obrázok", - "@Send image": { + "sendImage": "Odoslať obrázok", + "@sendImage": { "type": "text", "placeholders": {} }, @@ -1210,118 +1212,105 @@ "type": "text", "placeholders": {} }, - "Set a profile picture": "Nastaviť profilový obrázok", - "@Set a profile picture": { + "setAProfilePicture": "Nastaviť profilový obrázok", + "@setAProfilePicture": { "type": "text", "placeholders": {} }, - "Set group description": "Nastaviť popis skupiny", - "@Set group description": { + "setGroupDescription": "Nastaviť popis skupiny", + "@setGroupDescription": { "type": "text", "placeholders": {} }, - "Set invitation link": "Nastaviť odkaz pre pozvánku", - "@Set invitation link": { + "setInvitationLink": "Nastaviť odkaz pre pozvánku", + "@setInvitationLink": { "type": "text", "placeholders": {} }, - "Set status": "Nastaviť status", - "@Set status": { + "setStatus": "Nastaviť status", + "@setStatus": { "type": "text", "placeholders": {} }, - "Settings": "Nastavenia", - "@Settings": { + "settings": "Nastavenia", + "@settings": { "type": "text", "placeholders": {} }, - "Sign up": "Zaregistrovať sa", - "@Sign up": { + "share": "Zdieľať", + "@share": { "type": "text", "placeholders": {} }, - "Skip": "Preskočiť", - "@Skip": { + "sharedTheLocation": "{username} zdieľa lokáciu", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "signUp": "Zaregistrovať sa", + "@signUp": { "type": "text", "placeholders": {} }, - "Change your style": "Zmena štýlu", - "@Change your style": { + "skip": "Preskočiť", + "@skip": { "type": "text", "placeholders": {} }, - "System": "Systémová farba", - "@System": { + "sourceCode": "Zdrojový kód", + "@sourceCode": { "type": "text", "placeholders": {} }, - "How are you today?": "Ako sa dnes máte?", - "@How are you today?": { + "startYourFirstChat": "Začnite svoj prvý chat :-)", + "@startYourFirstChat": { "type": "text", "placeholders": {} }, - "Light": "Svetlá", - "@Light": { + "statusExampleMessage": "Ako sa dnes máte?", + "@statusExampleMessage": { "type": "text", "placeholders": {} }, - "Dark": "Tmavá", - "@Dark": { + "submit": "Odoslať", + "@submit": { "type": "text", "placeholders": {} }, - "Use Amoled compatible colors?": "Použiť Amoled kompatibilné farby?", - "@Use Amoled compatible colors?": { + "sunday": "Nedeľa", + "@sunday": { "type": "text", "placeholders": {} }, - "Source code": "Zdrojový kód", - "@Source code": { + "systemTheme": "Systémová farba", + "@systemTheme": { "type": "text", "placeholders": {} }, - "Start your first chat :-)": "Začnite svoj prvý chat :-)", - "@Start your first chat :-)": { + "tapToShowMenu": "Ťuknutím zobrazíte menu", + "@tapToShowMenu": { "type": "text", "placeholders": {} }, - "Submit": "Odoslať", - "@Submit": { + "theyDontMatch": "Sa nezhodujú", + "@theyDontMatch": { "type": "text", "placeholders": {} }, - "Sunday": "Nedeľa", - "@Sunday": { + "theyMatch": "Zhodujú sa", + "@theyMatch": { "type": "text", "placeholders": {} }, - "Donate": "Prispejte", - "@Donate": { + "thisRoomHasBeenArchived": "Táto miestnosť bola archivovaná.", + "@thisRoomHasBeenArchived": { "type": "text", "placeholders": {} }, - "Tap to show menu": "Ťuknutím zobrazíte menu", - "@Tap to show menu": { - "type": "text", - "placeholders": {} - }, - "They Don't Match": "Sa nezhodujú", - "@They Don't Match": { - "type": "text", - "placeholders": {} - }, - "They Match": "Zhodujú sa", - "@They Match": { - "type": "text", - "placeholders": {} - }, - "This room has been archived.": "Táto miestnosť bola archivovaná.", - "@This room has been archived.": { - "type": "text", - "placeholders": {} - }, - "Thursday": "Štvrtok", - "@Thursday": { + "thursday": "Štvrtok", + "@thursday": { "type": "text", "placeholders": {} }, @@ -1341,13 +1330,13 @@ "type": "text", "placeholders": {} }, - "Try to send again": "Skúsiť znova odoslať", - "@Try to send again": { + "tryToSendAgain": "Skúsiť znova odoslať", + "@tryToSendAgain": { "type": "text", "placeholders": {} }, - "Tuesday": "Utorok", - "@Tuesday": { + "tuesday": "Utorok", + "@tuesday": { "type": "text", "placeholders": {} }, @@ -1359,28 +1348,18 @@ "targetName": {} } }, - "Unblock Device": "Odblokovať zariadenie", - "@Unblock Device": { + "unblockDevice": "Odblokovať zariadenie", + "@unblockDevice": { "type": "text", "placeholders": {} }, - "Unmute chat": "Zrušiť stlmenie chatu", - "@Unmute chat": { + "unknownDevice": "Neznáme zariadenie", + "@unknownDevice": { "type": "text", "placeholders": {} }, - "Unknown device": "Neznáme zariadenie", - "@Unknown device": { - "type": "text", - "placeholders": {} - }, - "Unknown encryption algorithm": "Neznámy šifrovací algoritmus", - "@Unknown encryption algorithm": { - "type": "text", - "placeholders": {} - }, - "unknownSessionVerify": "Neznáma relácia, prosím verifikujte ju", - "@unknownSessionVerify": { + "unknownEncryptionAlgorithm": "Neznámy šifrovací algoritmus", + "@unknownEncryptionAlgorithm": { "type": "text", "placeholders": {} }, @@ -1391,6 +1370,16 @@ "type": {} } }, + "unknownSessionVerify": "Neznáma relácia, prosím verifikujte ju", + "@unknownSessionVerify": { + "type": "text", + "placeholders": {} + }, + "unmuteChat": "Zrušiť stlmenie chatu", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, "unreadChats": "{unreadCount} neprečítaných chatov", "@unreadChats": { "type": "text", @@ -1413,6 +1402,11 @@ "unreadChats": {} } }, + "useAmoledTheme": "Použiť Amoled kompatibilné farby?", + "@useAmoledTheme": { + "type": "text", + "placeholders": {} + }, "userAndOthersAreTyping": "{username} a {count} dalších píšu…", "@userAndOthersAreTyping": { "type": "text", @@ -1429,11 +1423,6 @@ "username2": {} } }, - "Username": "Užívateľské meno", - "@Username": { - "type": "text", - "placeholders": {} - }, "userIsTyping": "{username} píše…", "@userIsTyping": { "type": "text", @@ -1441,6 +1430,18 @@ "username": {} } }, + "userLeftTheChat": "{username} opustili chat", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "Užívateľské meno", + "@username": { + "type": "text", + "placeholders": {} + }, "userSentUnknownEvent": "{username} poslali udalosť {type}", "@userSentUnknownEvent": { "type": "text", @@ -1449,8 +1450,13 @@ "type": {} } }, - "Verify": "Overiť", - "@Verify": { + "verifiedSession": "Úspešne overenie relácie!", + "@verifiedSession": { + "type": "text", + "placeholders": {} + }, + "verify": "Overiť", + "@verify": { "type": "text", "placeholders": {} }, @@ -1459,11 +1465,6 @@ "type": "text", "placeholders": {} }, - "verifiedSession": "Úspešne overenie relácie!", - "@verifiedSession": { - "type": "text", - "placeholders": {} - }, "verifyStart": "Spustiť verifikáciu", "@verifyStart": { "type": "text", @@ -1479,33 +1480,33 @@ "type": "text", "placeholders": {} }, - "Verify User": "Verifikovať používateľa", - "@Verify User": { + "verifyUser": "Verifikovať používateľa", + "@verifyUser": { "type": "text", "placeholders": {} }, - "Video call": "Videohovor", - "@Video call": { + "videoCall": "Videohovor", + "@videoCall": { "type": "text", "placeholders": {} }, - "Visible for all participants": "Viditeľné pre všetkých účastníkov", - "@Visible for all participants": { + "visibilityOfTheChatHistory": "Viditeľnosť histórie chatu", + "@visibilityOfTheChatHistory": { "type": "text", "placeholders": {} }, - "Visible for everyone": "Viditeľné pre každého", - "@Visible for everyone": { + "visibleForAllParticipants": "Viditeľné pre všetkých účastníkov", + "@visibleForAllParticipants": { "type": "text", "placeholders": {} }, - "Visibility of the chat history": "Viditeľnosť histórie chatu", - "@Visibility of the chat history": { + "visibleForEveryone": "Viditeľné pre každého", + "@visibleForEveryone": { "type": "text", "placeholders": {} }, - "Voice message": "Hlasová správa", - "@Voice message": { + "voiceMessage": "Hlasová správa", + "@voiceMessage": { "type": "text", "placeholders": {} }, @@ -1524,69 +1525,69 @@ "type": "text", "placeholders": {} }, - "Wallpaper": "Pozadie", - "@Wallpaper": { + "wallpaper": "Pozadie", + "@wallpaper": { "type": "text", "placeholders": {} }, - "End to end encryption is currently in Beta! Use at your own risk!": "Konečné šifrovanie je momentálne v Beta verzii! Používajte na vlastné riziko!", - "@End to end encryption is currently in Beta! Use at your own risk!": { + "warningEncryptionInBeta": "Konečné šifrovanie je momentálne v Beta verzii! Používajte na vlastné riziko!", + "@warningEncryptionInBeta": { "type": "text", "placeholders": {} }, - "Wednesday": "Streda", - "@Wednesday": { + "wednesday": "Streda", + "@wednesday": { "type": "text", "placeholders": {} }, - "Welcome to the cutest instant messenger in the matrix network.": "Vítajte v najroztomilejšom instant messengeri v sieti matrix.", - "@Welcome to the cutest instant messenger in the matrix network.": { + "welcomeText": "Vítajte v najroztomilejšom instant messengeri v sieti matrix.", + "@welcomeText": { "type": "text", "placeholders": {} }, - "Who is allowed to join this group": "Kto môže vstúpiť do tejto skupiny", - "@Who is allowed to join this group": { + "whoIsAllowedToJoinThisGroup": "Kto môže vstúpiť do tejto skupiny", + "@whoIsAllowedToJoinThisGroup": { "type": "text", "placeholders": {} }, - "Write a message...": "Napísať správu...", - "@Write a message...": { + "writeAMessage": "Napísať správu...", + "@writeAMessage": { "type": "text", "placeholders": {} }, - "Yes": "Áno", - "@Yes": { + "yes": "Áno", + "@yes": { "type": "text", "placeholders": {} }, - "You": "Vy", - "@You": { + "you": "Vy", + "@you": { "type": "text", "placeholders": {} }, - "You are invited to this chat": "Ste pozvaní do tohto chatu", - "@You are invited to this chat": { + "youAreInvitedToThisChat": "Ste pozvaní do tohto chatu", + "@youAreInvitedToThisChat": { "type": "text", "placeholders": {} }, - "You are no longer participating in this chat": "Už sa nezúčastňujete tohto chatu", - "@You are no longer participating in this chat": { + "youAreNoLongerParticipatingInThisChat": "Už sa nezúčastňujete tohto chatu", + "@youAreNoLongerParticipatingInThisChat": { "type": "text", "placeholders": {} }, - "You cannot invite yourself": "Nemôžete pozvať samých seba", - "@You cannot invite yourself": { + "youCannotInviteYourself": "Nemôžete pozvať samých seba", + "@youCannotInviteYourself": { "type": "text", "placeholders": {} }, - "You have been banned from this chat": "Máte zablokovaný prístup k tomuto chatu", - "@You have been banned from this chat": { + "youHaveBeenBannedFromThisChat": "Máte zablokovaný prístup k tomuto chatu", + "@youHaveBeenBannedFromThisChat": { "type": "text", "placeholders": {} }, - "Your own username": "Vaša vlastná prezývka", - "@Your own username": { + "yourOwnUsername": "Vaša vlastná prezývka", + "@yourOwnUsername": { "type": "text", "placeholders": {} } -} +} \ No newline at end of file diff --git a/lib/l10n/intl_tr.arb b/lib/l10n/intl_tr.arb new file mode 100644 index 0000000..22f3ef5 --- /dev/null +++ b/lib/l10n/intl_tr.arb @@ -0,0 +1,1600 @@ +{ + "@@locale": "tr", + "@@last_modified": "2020-09-23 11:46:01.744355", + "about": "Hakkında", + "@about": { + "type": "text", + "placeholders": {} + }, + "accept": "Kabul et", + "@accept": { + "type": "text", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} katılma davetini kabul etti", + "@acceptedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "account": "Hesap", + "@account": { + "type": "text", + "placeholders": {} + }, + "accountInformation": "Hesap bilgileri", + "@accountInformation": { + "type": "text", + "placeholders": {} + }, + "activatedEndToEndEncryption": "{username} uçtan uca şifrelemeyi etkinleştirdi", + "@activatedEndToEndEncryption": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "addGroupDescription": "Grup açıklaması ekle", + "@addGroupDescription": { + "type": "text", + "placeholders": {} + }, + "admin": "Yönetici", + "@admin": { + "type": "text", + "placeholders": {} + }, + "alias": "takma ad", + "@alias": { + "type": "text", + "placeholders": {} + }, + "alreadyHaveAnAccount": "Hesabınız var mı?", + "@alreadyHaveAnAccount": { + "type": "text", + "placeholders": {} + }, + "answeredTheCall": "{senderName} aramayı yanıtladı", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "Herkes katılabilir", + "@anyoneCanJoin": { + "type": "text", + "placeholders": {} + }, + "archive": "Arşiv", + "@archive": { + "type": "text", + "placeholders": {} + }, + "archivedRoom": "Arşiv Odası", + "@archivedRoom": { + "type": "text", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Misafir kullanıcıların katılmasına izin veriliyor mu", + "@areGuestsAllowedToJoin": { + "type": "text", + "placeholders": {} + }, + "areYouSure": "Emin misiniz?", + "@areYouSure": { + "type": "text", + "placeholders": {} + }, + "askSSSSCache": "Anahtarları önbelleğe almak için lütfen güvenli depolama parolanızı veya kurtarma anahtarınızı girin.", + "@askSSSSCache": { + "type": "text", + "placeholders": {} + }, + "askSSSSSign": "Diğer kişiyi imzalayabilmek için lütfen güvenli depolama parolanızı veya kurtarma anahtarınızı girin.", + "@askSSSSSign": { + "type": "text", + "placeholders": {} + }, + "askSSSSVerify": "Lütfen oturumunuzu doğrulamak için güvenli depolama parolanızı veya kurtarma anahtarınızı girin.", + "@askSSSSVerify": { + "type": "text", + "placeholders": {} + }, + "askVerificationRequest": "{username}'den gelen doğrulama talebini kabul etmek istiyor musunuz?", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "authentication": "Doğrulama", + "@authentication": { + "type": "text", + "placeholders": {} + }, + "avatarHasBeenChanged": "Avatar değiştirildi", + "@avatarHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "banFromChat": "Sohbetten engellendiniz", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "banned": "Engellendi", + "@banned": { + "type": "text", + "placeholders": {} + }, + "bannedUser": "{username} engelledi: {targetName}", + "@bannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "blockDevice": "Cihazı Engelle", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, + "byDefaultYouWillBeConnectedTo": "Varsayılan olarak {homeserver} sunucusuna bağlanacaksınız", + "@byDefaultYouWillBeConnectedTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "cachedKeys": "Anahtarlar başarıyla önbelleğe alındı!", + "@cachedKeys": { + "type": "text", + "placeholders": {} + }, + "cancel": "İptal", + "@cancel": { + "type": "text", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} sohbet resmini değiştirdi", + "@changedTheChatAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheChatDescriptionTo": "{username} sohbet açıklamasını değiştirdi: '{description}'", + "@changedTheChatDescriptionTo": { + "type": "text", + "placeholders": { + "username": {}, + "description": {} + } + }, + "changedTheChatNameTo": "{username} sohbet adını değiştirdi: '{chatname}'", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, + "changedTheChatPermissions": "{username} sohbet izinlerini değiştirdi", + "@changedTheChatPermissions": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheDisplaynameTo": "{username} görünen adını {displayname} olarak değiştirdi", + "@changedTheDisplaynameTo": { + "type": "text", + "placeholders": { + "username": {}, + "displayname": {} + } + }, + "changedTheGuestAccessRules": "{username} misafir erişim kurallarını değiştirdi", + "@changedTheGuestAccessRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheGuestAccessRulesTo": "{username} misafir erişim kurallarını değiştirdi: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheHistoryVisibility": "{username} geçmiş görünürlüğünü değiştirdi", + "@changedTheHistoryVisibility": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheHistoryVisibilityTo": "{username} geçmiş görünürlüğünü değiştirdi: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheJoinRules": "{username} katılım kurallarını değiştirdi", + "@changedTheJoinRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheJoinRulesTo": "{username} katılım kurallarını değiştirdi: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "joinRules": {} + } + }, + "changedTheProfileAvatar": "{username} avatarını değiştirdi", + "@changedTheProfileAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomAliases": "", + "@changedTheRoomAliases": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomInvitationLink": "{username} davet bağlantısını değiştirdi", + "@changedTheRoomInvitationLink": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changelog": "Değişiklikler", + "@changelog": { + "type": "text", + "placeholders": {} + }, + "changeTheHomeserver": "", + "@changeTheHomeserver": { + "type": "text", + "placeholders": {} + }, + "changeTheme": "Sitilinizi değiştirin", + "@changeTheme": { + "type": "text", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Grubun adını değiştir", + "@changeTheNameOfTheGroup": { + "type": "text", + "placeholders": {} + }, + "changeTheServer": "Sunucuyu değiştir", + "@changeTheServer": { + "type": "text", + "placeholders": {} + }, + "changeWallpaper": "Duvar kağıdını değiştir", + "@changeWallpaper": { + "type": "text", + "placeholders": {} + }, + "channelCorruptedDecryptError": "", + "@channelCorruptedDecryptError": { + "type": "text", + "placeholders": {} + }, + "chat": "Sohbet", + "@chat": { + "type": "text", + "placeholders": {} + }, + "chatDetails": "Sohbet ayrıntıları", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "chooseAStrongPassword": "Güçlü bir parola seçin", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "chooseAUsername": "Bir kullanıcı adı seçin", + "@chooseAUsername": { + "type": "text", + "placeholders": {} + }, + "close": "Kapat", + "@close": { + "type": "text", + "placeholders": {} + }, + "compareEmojiMatch": "", + "@compareEmojiMatch": { + "type": "text", + "placeholders": {} + }, + "compareNumbersMatch": "", + "@compareNumbersMatch": { + "type": "text", + "placeholders": {} + }, + "confirm": "Onayla", + "@confirm": { + "type": "text", + "placeholders": {} + }, + "connect": "Bağlan", + "@connect": { + "type": "text", + "placeholders": {} + }, + "connectionAttemptFailed": "Bağlantı denemesi başarısız oldu", + "@connectionAttemptFailed": { + "type": "text", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Kişi gruba davet edildi", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "contentViewer": "", + "@contentViewer": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "Panoya kopyalandı", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "copy": "Kopyala", + "@copy": { + "type": "text", + "placeholders": {} + }, + "couldNotDecryptMessage": "Mesajın şifresi çözülemedi: {error}", + "@couldNotDecryptMessage": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "couldNotSetAvatar": "Avatar ayarlanamadı", + "@couldNotSetAvatar": { + "type": "text", + "placeholders": {} + }, + "couldNotSetDisplayname": "", + "@couldNotSetDisplayname": { + "type": "text", + "placeholders": {} + }, + "countParticipants": "{count} katılımcı", + "@countParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "create": "Oluştur", + "@create": { + "type": "text", + "placeholders": {} + }, + "createAccountNow": "Şimdi hesap oluştur", + "@createAccountNow": { + "type": "text", + "placeholders": {} + }, + "createdTheChat": "{username} sohbeti oluşturdu", + "@createdTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "createNewGroup": "Yeni grup oluştur", + "@createNewGroup": { + "type": "text", + "placeholders": {} + }, + "crossSigningDisabled": "", + "@crossSigningDisabled": { + "type": "text", + "placeholders": {} + }, + "crossSigningEnabled": "", + "@crossSigningEnabled": { + "type": "text", + "placeholders": {} + }, + "currentlyActive": "", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "Koyu", + "@darkTheme": { + "type": "text", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "text", + "placeholders": { + "date": {}, + "timeOfDay": {} + } + }, + "dateWithoutYear": "{day} {month}", + "@dateWithoutYear": { + "type": "text", + "placeholders": { + "month": {}, + "day": {} + } + }, + "dateWithYear": "{day}/{month}/{year}", + "@dateWithYear": { + "type": "text", + "placeholders": { + "year": {}, + "month": {}, + "day": {} + } + }, + "delete": "Sil", + "@delete": { + "type": "text", + "placeholders": {} + }, + "deleteMessage": "Mesajı sil", + "@deleteMessage": { + "type": "text", + "placeholders": {} + }, + "deny": "", + "@deny": { + "type": "text", + "placeholders": {} + }, + "device": "Cihaz", + "@device": { + "type": "text", + "placeholders": {} + }, + "devices": "Cihazlar", + "@devices": { + "type": "text", + "placeholders": {} + }, + "discardPicture": "", + "@discardPicture": { + "type": "text", + "placeholders": {} + }, + "displaynameHasBeenChanged": "", + "@displaynameHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "donate": "Bağış", + "@donate": { + "type": "text", + "placeholders": {} + }, + "downloadFile": "", + "@downloadFile": { + "type": "text", + "placeholders": {} + }, + "editDisplayname": "", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "editJitsiInstance": "", + "@editJitsiInstance": { + "type": "text", + "placeholders": {} + }, + "emoteExists": "", + "@emoteExists": { + "type": "text", + "placeholders": {} + }, + "emoteInvalid": "", + "@emoteInvalid": { + "type": "text", + "placeholders": {} + }, + "emoteSettings": "", + "@emoteSettings": { + "type": "text", + "placeholders": {} + }, + "emoteShortcode": "", + "@emoteShortcode": { + "type": "text", + "placeholders": {} + }, + "emoteWarnNeedToPick": "", + "@emoteWarnNeedToPick": { + "type": "text", + "placeholders": {} + }, + "emptyChat": "", + "@emptyChat": { + "type": "text", + "placeholders": {} + }, + "enableEncryptionWarning": "", + "@enableEncryptionWarning": { + "type": "text", + "placeholders": {} + }, + "encryption": "Şifreleme", + "@encryption": { + "type": "text", + "placeholders": {} + }, + "encryptionAlgorithm": "Şifreleme algoritması", + "@encryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "encryptionNotEnabled": "", + "@encryptionNotEnabled": { + "type": "text", + "placeholders": {} + }, + "end2endEncryptionSettings": "Uçtan uca şifreleme ayarları", + "@end2endEncryptionSettings": { + "type": "text", + "placeholders": {} + }, + "enterAGroupName": "Bir grup adı girin", + "@enterAGroupName": { + "type": "text", + "placeholders": {} + }, + "enterAUsername": "Bir kullanıcı adı girin", + "@enterAUsername": { + "type": "text", + "placeholders": {} + }, + "enterYourHomeserver": "", + "@enterYourHomeserver": { + "type": "text", + "placeholders": {} + }, + "fileName": "Dosya adı", + "@fileName": { + "type": "text", + "placeholders": {} + }, + "fileSize": "Dosya boyutu", + "@fileSize": { + "type": "text", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "text", + "placeholders": {} + }, + "forward": "", + "@forward": { + "type": "text", + "placeholders": {} + }, + "friday": "Cuma", + "@friday": { + "type": "text", + "placeholders": {} + }, + "fromJoining": "", + "@fromJoining": { + "type": "text", + "placeholders": {} + }, + "fromTheInvitation": "", + "@fromTheInvitation": { + "type": "text", + "placeholders": {} + }, + "group": "Grup", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupDescription": "Grup açıklaması", + "@groupDescription": { + "type": "text", + "placeholders": {} + }, + "groupDescriptionHasBeenChanged": "Grup açıklaması değiştirildi", + "@groupDescriptionHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "", + "@groupIsPublic": { + "type": "text", + "placeholders": {} + }, + "groupWith": "", + "@groupWith": { + "type": "text", + "placeholders": { + "displayname": {} + } + }, + "guestsAreForbidden": "", + "@guestsAreForbidden": { + "type": "text", + "placeholders": {} + }, + "guestsCanJoin": "Misafirler katılabilir", + "@guestsCanJoin": { + "type": "text", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "", + "@hasWithdrawnTheInvitationFor": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "help": "Yardım", + "@help": { + "type": "text", + "placeholders": {} + }, + "homeserverIsNotCompatible": "", + "@homeserverIsNotCompatible": { + "type": "text", + "placeholders": {} + }, + "id": "", + "@id": { + "type": "text", + "placeholders": {} + }, + "identity": "", + "@identity": { + "type": "text", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "", + "@inviteContact": { + "type": "text", + "placeholders": {} + }, + "inviteContactToGroup": "", + "@inviteContactToGroup": { + "type": "text", + "placeholders": { + "groupName": {} + } + }, + "invited": "", + "@invited": { + "type": "text", + "placeholders": {} + }, + "invitedUser": "", + "@invitedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "invitedUsersOnly": "Sadece davet edilen kullanıcılar", + "@invitedUsersOnly": { + "type": "text", + "placeholders": {} + }, + "inviteText": "", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "isDeviceKeyCorrect": "", + "@isDeviceKeyCorrect": { + "type": "text", + "placeholders": {} + }, + "isTyping": "yazıyor...", + "@isTyping": { + "type": "text", + "placeholders": {} + }, + "joinedTheChat": "{username} sohbete katıldı", + "@joinedTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "keysCached": "", + "@keysCached": { + "type": "text", + "placeholders": {} + }, + "keysMissing": "", + "@keysMissing": { + "type": "text", + "placeholders": {} + }, + "kicked": "", + "@kicked": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickedAndBanned": "", + "@kickedAndBanned": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickFromChat": "", + "@kickFromChat": { + "type": "text", + "placeholders": {} + }, + "lastActiveAgo": "", + "@lastActiveAgo": { + "type": "text", + "placeholders": { + "localizedTimeShort": {} + } + }, + "lastSeenIp": "", + "@lastSeenIp": { + "type": "text", + "placeholders": {} + }, + "lastSeenLongTimeAgo": "Uzun zaman önce görüldü", + "@lastSeenLongTimeAgo": { + "type": "text", + "placeholders": {} + }, + "leave": "Ayrıl", + "@leave": { + "type": "text", + "placeholders": {} + }, + "leftTheChat": "", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "Lisans", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "Açık", + "@lightTheme": { + "type": "text", + "placeholders": {} + }, + "loadCountMoreParticipants": "", + "@loadCountMoreParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "loadingPleaseWait": "Yükleniyor... Lütfen bekleyin", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "Daha fazla yükle...", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "login": "Oturum aç", + "@login": { + "type": "text", + "placeholders": {} + }, + "logInTo": "", + "@logInTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "logout": "Oturumu kapat", + "@logout": { + "type": "text", + "placeholders": {} + }, + "makeAModerator": "", + "@makeAModerator": { + "type": "text", + "placeholders": {} + }, + "makeAnAdmin": "", + "@makeAnAdmin": { + "type": "text", + "placeholders": {} + }, + "makeSureTheIdentifierIsValid": "", + "@makeSureTheIdentifierIsValid": { + "type": "text", + "placeholders": {} + }, + "messageWillBeRemovedWarning": "Mesaj tüm katılımcılar için kaldırılacak", + "@messageWillBeRemovedWarning": { + "type": "text", + "placeholders": {} + }, + "moderator": "", + "@moderator": { + "type": "text", + "placeholders": {} + }, + "monday": "Pazartesi", + "@monday": { + "type": "text", + "placeholders": {} + }, + "muteChat": "", + "@muteChat": { + "type": "text", + "placeholders": {} + }, + "needPantalaimonWarning": "", + "@needPantalaimonWarning": { + "type": "text", + "placeholders": {} + }, + "newMessageInFluffyChat": "", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "newPrivateChat": "", + "@newPrivateChat": { + "type": "text", + "placeholders": {} + }, + "newVerificationRequest": "", + "@newVerificationRequest": { + "type": "text", + "placeholders": {} + }, + "noCrossSignBootstrap": "", + "@noCrossSignBootstrap": { + "type": "text", + "placeholders": {} + }, + "noEmotesFound": "", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "noMegolmBootstrap": "", + "@noMegolmBootstrap": { + "type": "text", + "placeholders": {} + }, + "none": "", + "@none": { + "type": "text", + "placeholders": {} + }, + "noPermission": "", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "notSupportedInWeb": "", + "@notSupportedInWeb": { + "type": "text", + "placeholders": {} + }, + "numberSelected": "", + "@numberSelected": { + "type": "text", + "placeholders": { + "number": {} + } + }, + "ok": "", + "@ok": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupDisabled": "", + "@onlineKeyBackupDisabled": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "", + "@onlineKeyBackupEnabled": { + "type": "text", + "placeholders": {} + }, + "oopsSomethingWentWrong": "", + "@oopsSomethingWentWrong": { + "type": "text", + "placeholders": {} + }, + "openAppToReadMessages": "Mesajları okumak için uygulamayı aç", + "@openAppToReadMessages": { + "type": "text", + "placeholders": {} + }, + "openCamera": "Kamerayı aç", + "@openCamera": { + "type": "text", + "placeholders": {} + }, + "optionalGroupName": "(İsteğe bağlı) Grup adı", + "@optionalGroupName": { + "type": "text", + "placeholders": {} + }, + "participatingUserDevices": "", + "@participatingUserDevices": { + "type": "text", + "placeholders": {} + }, + "passphraseOrKey": "", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "password": "Parola", + "@password": { + "type": "text", + "placeholders": {} + }, + "pickImage": "", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "play": "", + "@play": { + "type": "text", + "placeholders": { + "fileName": {} + } + }, + "pleaseChooseAUsername": "Lütfen bir kullanıcı adı seçin", + "@pleaseChooseAUsername": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterAMatrixIdentifier": "", + "@pleaseEnterAMatrixIdentifier": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPassword": "Lütfen parolanızı girin", + "@pleaseEnterYourPassword": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourUsername": "Lütfen kullanıcı adınızı girin", + "@pleaseEnterYourUsername": { + "type": "text", + "placeholders": {} + }, + "publicRooms": "", + "@publicRooms": { + "type": "text", + "placeholders": {} + }, + "recording": "", + "@recording": { + "type": "text", + "placeholders": {} + }, + "redactedAnEvent": "", + "@redactedAnEvent": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "reject": "Reddet", + "@reject": { + "type": "text", + "placeholders": {} + }, + "rejectedTheInvitation": "{username} daveti reddetti", + "@rejectedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "rejoin": "Yeniden katıl", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "Kaldır", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "Diğer tüm cihazları kaldır", + "@removeAllOtherDevices": { + "type": "text", + "placeholders": {} + }, + "removedBy": "{username} tarafından kaldırıldı", + "@removedBy": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "removeDevice": "Cihazı kaldır", + "@removeDevice": { + "type": "text", + "placeholders": {} + }, + "removeExile": "", + "@removeExile": { + "type": "text", + "placeholders": {} + }, + "removeMessage": "Mesajı kaldır", + "@removeMessage": { + "type": "text", + "placeholders": {} + }, + "renderRichContent": "", + "@renderRichContent": { + "type": "text", + "placeholders": {} + }, + "reply": "", + "@reply": { + "type": "text", + "placeholders": {} + }, + "requestPermission": "İzin iste", + "@requestPermission": { + "type": "text", + "placeholders": {} + }, + "requestToReadOlderMessages": "Eski mesajları okumayı iste", + "@requestToReadOlderMessages": { + "type": "text", + "placeholders": {} + }, + "revokeAllPermissions": "Tüm izinleri iptal et", + "@revokeAllPermissions": { + "type": "text", + "placeholders": {} + }, + "roomHasBeenUpgraded": "", + "@roomHasBeenUpgraded": { + "type": "text", + "placeholders": {} + }, + "saturday": "Cumartesi", + "@saturday": { + "type": "text", + "placeholders": {} + }, + "searchForAChat": "Sohbet ara", + "@searchForAChat": { + "type": "text", + "placeholders": {} + }, + "seenByUser": "{username} tarafından görüldü", + "@seenByUser": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "seenByUserAndCountOthers": "{username} ve {count} diğerleri tarafından görüldü", + "@seenByUserAndCountOthers": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "seenByUserAndUser": "{username} ve {username2} tarafından görüldü", + "@seenByUserAndUser": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "send": "Gönder", + "@send": { + "type": "text", + "placeholders": {} + }, + "sendAMessage": "Bir mesaj gönder", + "@sendAMessage": { + "type": "text", + "placeholders": {} + }, + "sendFile": "Dosya gönder", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sentAFile": "{username} bir dosya gönderdi", + "@sentAFile": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAnAudio": "{username} bir ses gönderdi", + "@sentAnAudio": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAPicture": "{username} bir resim gönderdi", + "@sentAPicture": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentASticker": "{username} bir çıkartma gönderdi", + "@sentASticker": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAVideo": "{username} bir video gönderdi", + "@sentAVideo": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sessionVerified": "Oturum doğrulandı", + "@sessionVerified": { + "type": "text", + "placeholders": {} + }, + "setAProfilePicture": "Profil fotoğrafı ekleyin", + "@setAProfilePicture": { + "type": "text", + "placeholders": {} + }, + "setGroupDescription": "Grup açıklaması ekleyin", + "@setGroupDescription": { + "type": "text", + "placeholders": {} + }, + "setInvitationLink": "Davet bağlantısı ayarlayın", + "@setInvitationLink": { + "type": "text", + "placeholders": {} + }, + "setStatus": "Durumu ayarla", + "@setStatus": { + "type": "text", + "placeholders": {} + }, + "settings": "Ayarlar", + "@settings": { + "type": "text", + "placeholders": {} + }, + "share": "Paylaş", + "@share": { + "type": "text", + "placeholders": {} + }, + "sharedTheLocation": "{username} konumu paylaştı", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "signUp": "Hesap oluştur", + "@signUp": { + "type": "text", + "placeholders": {} + }, + "skip": "Geç", + "@skip": { + "type": "text", + "placeholders": {} + }, + "sourceCode": "Kaynak kod", + "@sourceCode": { + "type": "text", + "placeholders": {} + }, + "startYourFirstChat": "İlk sohbetini başlat :-)", + "@startYourFirstChat": { + "type": "text", + "placeholders": {} + }, + "statusExampleMessage": "Bugün nasılsınız?", + "@statusExampleMessage": { + "type": "text", + "placeholders": {} + }, + "submit": "Gönder", + "@submit": { + "type": "text", + "placeholders": {} + }, + "sunday": "Pazar", + "@sunday": { + "type": "text", + "placeholders": {} + }, + "systemTheme": "Sistem", + "@systemTheme": { + "type": "text", + "placeholders": {} + }, + "tapToShowMenu": "Menüyü açmak için dokunun", + "@tapToShowMenu": { + "type": "text", + "placeholders": {} + }, + "theyDontMatch": "Eşleşme yok", + "@theyDontMatch": { + "type": "text", + "placeholders": {} + }, + "theyMatch": "Eşleştiler", + "@theyMatch": { + "type": "text", + "placeholders": {} + }, + "thisRoomHasBeenArchived": "Bu sohbet arşivlendi.", + "@thisRoomHasBeenArchived": { + "type": "text", + "placeholders": {} + }, + "thursday": "Perşembe", + "@thursday": { + "type": "text", + "placeholders": {} + }, + "timeOfDay": "{hours12}:{minutes} {suffix}", + "@timeOfDay": { + "type": "text", + "placeholders": { + "hours12": {}, + "hours24": {}, + "minutes": {}, + "suffix": {} + } + }, + "title": "FluffyChat", + "@title": { + "description": "Title for the application", + "type": "text", + "placeholders": {} + }, + "tryToSendAgain": "Tekrar göndermeyi deneyin", + "@tryToSendAgain": { + "type": "text", + "placeholders": {} + }, + "tuesday": "Salı", + "@tuesday": { + "type": "text", + "placeholders": {} + }, + "unbannedUser": "{username} engeli kaldırdı: {targetName}", + "@unbannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "unblockDevice": "", + "@unblockDevice": { + "type": "text", + "placeholders": {} + }, + "unknownDevice": "Bilinmeyen cihaz", + "@unknownDevice": { + "type": "text", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "Bilinmeyen şifreleme algoritması", + "@unknownEncryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "unknownEvent": "", + "@unknownEvent": { + "type": "text", + "placeholders": { + "type": {} + } + }, + "unknownSessionVerify": "Bilinmeyen oturum, lütfen doğrulayın", + "@unknownSessionVerify": { + "type": "text", + "placeholders": {} + }, + "unmuteChat": "Sohbeti sessizden çıkart", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unreadChats": "{unreadCount} okunmamış sohbet", + "@unreadChats": { + "type": "text", + "placeholders": { + "unreadCount": {} + } + }, + "unreadMessages": "{unreadEvents} okunmamış mesaj", + "@unreadMessages": { + "type": "text", + "placeholders": { + "unreadEvents": {} + } + }, + "unreadMessagesInChats": "{unreadChats} sohbetten {unreadEvents} okunmamış mesaj", + "@unreadMessagesInChats": { + "type": "text", + "placeholders": { + "unreadEvents": {}, + "unreadChats": {} + } + }, + "useAmoledTheme": "Amolede uyumlu renkler kullanılsın mı?", + "@useAmoledTheme": { + "type": "text", + "placeholders": {} + }, + "userAndOthersAreTyping": "{username} ve {count} diğer kişi yazıyor...", + "@userAndOthersAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "userAndUserAreTyping": "{username} ve {username2} yazıyor...", + "@userAndUserAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "userIsTyping": "{username} yazıyor...", + "@userIsTyping": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "userLeftTheChat": "{username} sohbetten ayrıldı", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "Kullanıcı adı", + "@username": { + "type": "text", + "placeholders": {} + }, + "userSentUnknownEvent": "", + "@userSentUnknownEvent": { + "type": "text", + "placeholders": { + "username": {}, + "type": {} + } + }, + "verifiedSession": "Oturum başarıyla doğrulandı!", + "@verifiedSession": { + "type": "text", + "placeholders": {} + }, + "verify": "Doğrula", + "@verify": { + "type": "text", + "placeholders": {} + }, + "verifyManual": "Manuel Olarak Doğrula", + "@verifyManual": { + "type": "text", + "placeholders": {} + }, + "verifyStart": "Doğrulamayı Başlat", + "@verifyStart": { + "type": "text", + "placeholders": {} + }, + "verifySuccess": "Başarıyla doğrulandı!", + "@verifySuccess": { + "type": "text", + "placeholders": {} + }, + "verifyTitle": "Diğer hesap doğrulanıyor", + "@verifyTitle": { + "type": "text", + "placeholders": {} + }, + "verifyUser": "Kullanıcıyı Doğrula", + "@verifyUser": { + "type": "text", + "placeholders": {} + }, + "videoCall": "Video arama", + "@videoCall": { + "type": "text", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "Sohbet geçmişi görünürlüğü", + "@visibilityOfTheChatHistory": { + "type": "text", + "placeholders": {} + }, + "visibleForAllParticipants": "Tüm katılımcılar için görünür", + "@visibleForAllParticipants": { + "type": "text", + "placeholders": {} + }, + "visibleForEveryone": "Herkes için görünür", + "@visibleForEveryone": { + "type": "text", + "placeholders": {} + }, + "voiceMessage": "Sesli mesaj", + "@voiceMessage": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "İsteği kabul etmesi bekleniyor...", + "@waitingPartnerAcceptRequest": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerEmoji": "Emojiyi kabul etmesi bekleniyor...", + "@waitingPartnerEmoji": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerNumbers": "", + "@waitingPartnerNumbers": { + "type": "text", + "placeholders": {} + }, + "wallpaper": "Duvar kağıdı", + "@wallpaper": { + "type": "text", + "placeholders": {} + }, + "warningEncryptionInBeta": "Uçtan uca şifreleme şimdilik Beta aşamasında! Risk alarak kullanın!", + "@warningEncryptionInBeta": { + "type": "text", + "placeholders": {} + }, + "wednesday": "Çarşamba", + "@wednesday": { + "type": "text", + "placeholders": {} + }, + "welcomeText": "Matrix ağındaki en şirin anlık mesajlaşma uygulamasına hoş geldiniz.", + "@welcomeText": { + "type": "text", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "Bu gruba kimler katılabilir", + "@whoIsAllowedToJoinThisGroup": { + "type": "text", + "placeholders": {} + }, + "writeAMessage": "Mesaj yazın...", + "@writeAMessage": { + "type": "text", + "placeholders": {} + }, + "yes": "Evet", + "@yes": { + "type": "text", + "placeholders": {} + }, + "you": "Sen", + "@you": { + "type": "text", + "placeholders": {} + }, + "youAreInvitedToThisChat": "Sohbete davet edildiniz", + "@youAreInvitedToThisChat": { + "type": "text", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "Artık bu sohbette katılımcı değilsiniz", + "@youAreNoLongerParticipatingInThisChat": { + "type": "text", + "placeholders": {} + }, + "youCannotInviteYourself": "Kendinizi davet edemezsiniz", + "@youCannotInviteYourself": { + "type": "text", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Bu sohbetten engellendiniz", + "@youHaveBeenBannedFromThisChat": { + "type": "text", + "placeholders": {} + }, + "yourOwnUsername": "Kullanıcı adınız", + "@yourOwnUsername": { + "type": "text", + "placeholders": {} + } +} \ No newline at end of file diff --git a/lib/l10n/intl_uk.arb b/lib/l10n/intl_uk.arb new file mode 100644 index 0000000..c0e0f06 --- /dev/null +++ b/lib/l10n/intl_uk.arb @@ -0,0 +1,1607 @@ +{ + "@@locale": "uk", + "@@last_modified": "2020-09-23 11:46:01.661966", + "about": "Про програму", + "@about": { + "type": "text", + "placeholders": {} + }, + "accept": "Прийняти", + "@accept": { + "type": "text", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} прийняв(ла) запрошення увійти в чат", + "@acceptedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "account": "Обліковий запис", + "@account": { + "type": "text", + "placeholders": {} + }, + "accountInformation": "Інформація про обліковий запис", + "@accountInformation": { + "type": "text", + "placeholders": {} + }, + "activatedEndToEndEncryption": "{username} активував(ла) наскрізне шифрування", + "@activatedEndToEndEncryption": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "addGroupDescription": "Додати опис групи", + "@addGroupDescription": { + "type": "text", + "placeholders": {} + }, + "admin": "Адміністратор", + "@admin": { + "type": "text", + "placeholders": {} + }, + "alias": "псевдонім", + "@alias": { + "type": "text", + "placeholders": {} + }, + "alreadyHaveAnAccount": "Вже маєте обліковий запис?", + "@alreadyHaveAnAccount": { + "type": "text", + "placeholders": {} + }, + "answeredTheCall": "{senderName} відповів(ла) на дзвінок", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "Будь-хто може приєднатись", + "@anyoneCanJoin": { + "type": "text", + "placeholders": {} + }, + "archive": "Архів", + "@archive": { + "type": "text", + "placeholders": {} + }, + "archivedRoom": "Заархівована кімната", + "@archivedRoom": { + "type": "text", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "Чи дозволено гостям приєднуватись", + "@areGuestsAllowedToJoin": { + "type": "text", + "placeholders": {} + }, + "areYouSure": "Ви впевнені?", + "@areYouSure": { + "type": "text", + "placeholders": {} + }, + "askSSSSCache": "Будь ласка, введіть вашу парольну фразу або ключ відновлення для кешування ключів.", + "@askSSSSCache": { + "type": "text", + "placeholders": {} + }, + "askSSSSSign": "Для підпису ключа іншого користувача, будь ласка, введіть вашу парольну фразу або ключ відновлення.", + "@askSSSSSign": { + "type": "text", + "placeholders": {} + }, + "askSSSSVerify": "Будь ласка, введіть вашу парольну фразу або ключ відновлення для підтвердження сесії.", + "@askSSSSVerify": { + "type": "text", + "placeholders": {} + }, + "askVerificationRequest": "Прийняти цей запит на підтвердження від {username}?", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "authentication": "Аутентифікація", + "@authentication": { + "type": "text", + "placeholders": {} + }, + "avatarHasBeenChanged": "Аватар був змінений", + "@avatarHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "banFromChat": "Заблокувати в чаті", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "banned": "Заблокований(на)", + "@banned": { + "type": "text", + "placeholders": {} + }, + "bannedUser": "{username} заблокував(ла) {targetName}", + "@bannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "blockDevice": "Заблокувати пристрій", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, + "byDefaultYouWillBeConnectedTo": "За замовчуванням ви будете підключені до {homeserver}", + "@byDefaultYouWillBeConnectedTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "cachedKeys": "Ключі було успішно збережено в кеші", + "@cachedKeys": { + "type": "text", + "placeholders": {} + }, + "cancel": "Скасувати", + "@cancel": { + "type": "text", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} змінив(ла) аватар чату", + "@changedTheChatAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheChatDescriptionTo": "{username} змінив(ла) опис чату на: \"{description}\"", + "@changedTheChatDescriptionTo": { + "type": "text", + "placeholders": { + "username": {}, + "description": {} + } + }, + "changedTheChatNameTo": "{username} змінив(ла) ім'я чату на: \"{chatname}\"", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, + "changedTheChatPermissions": "{username} змінив(ла) права доступу чату", + "@changedTheChatPermissions": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheDisplaynameTo": "{username} змінив(ла) відображуване ім'я на: {displayname}", + "@changedTheDisplaynameTo": { + "type": "text", + "placeholders": { + "username": {}, + "displayname": {} + } + }, + "changedTheGuestAccessRules": "{username} змінив(ла) правила гостьового доступу", + "@changedTheGuestAccessRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheGuestAccessRulesTo": "{username} змінив(ла) правила гостьового доступу на: {rules}", + "@changedTheGuestAccessRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheHistoryVisibility": "{username} змінив(ла) видимість історії", + "@changedTheHistoryVisibility": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheHistoryVisibilityTo": "{username} змінив(ла) видимість історії на: {rules}", + "@changedTheHistoryVisibilityTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheJoinRules": "{username} змінив(ла) правила щодо приєднання", + "@changedTheJoinRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheJoinRulesTo": "{username} змінив(ла) правила щодо приєднання на: {joinRules}", + "@changedTheJoinRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "joinRules": {} + } + }, + "changedTheProfileAvatar": "{username} змінив(ла) аватар", + "@changedTheProfileAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomAliases": "{username} змінив(ла) псевдоніми кімнати", + "@changedTheRoomAliases": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomInvitationLink": "{username} змінив(ла) посилання для запрошення", + "@changedTheRoomInvitationLink": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changelog": "Журнал змін", + "@changelog": { + "type": "text", + "placeholders": {} + }, + "changeTheHomeserver": "Змінити сервер Matrix", + "@changeTheHomeserver": { + "type": "text", + "placeholders": {} + }, + "changeTheme": "", + "@changeTheme": { + "type": "text", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "Змінити назву групи", + "@changeTheNameOfTheGroup": { + "type": "text", + "placeholders": {} + }, + "changeTheServer": "Змінити сервер", + "@changeTheServer": { + "type": "text", + "placeholders": {} + }, + "changeWallpaper": "Змінити фон чатів", + "@changeWallpaper": { + "type": "text", + "placeholders": {} + }, + "channelCorruptedDecryptError": "Шифрування було пошкоджено", + "@channelCorruptedDecryptError": { + "type": "text", + "placeholders": {} + }, + "chat": "Чат", + "@chat": { + "type": "text", + "placeholders": {} + }, + "chatDetails": "Деталі чату", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "chooseAStrongPassword": "Виберіть надійний пароль", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "chooseAUsername": "Виберіть ім'я користувача", + "@chooseAUsername": { + "type": "text", + "placeholders": {} + }, + "close": "Закрити", + "@close": { + "type": "text", + "placeholders": {} + }, + "compareEmojiMatch": "Порівняйте і переконайтесь, що наступні емодзі відповідають емодзі на іншому пристрої:", + "@compareEmojiMatch": { + "type": "text", + "placeholders": {} + }, + "compareNumbersMatch": "Порівняйте і переконайтесь, що наступні числа відповідають числам на іншому пристрої:", + "@compareNumbersMatch": { + "type": "text", + "placeholders": {} + }, + "confirm": "Підтвердити", + "@confirm": { + "type": "text", + "placeholders": {} + }, + "connect": "Приєднатись", + "@connect": { + "type": "text", + "placeholders": {} + }, + "connectionAttemptFailed": "Спроба підключення не вдалась", + "@connectionAttemptFailed": { + "type": "text", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "Контакт був запрошений в групу", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "contentViewer": "Перегляд вмісту", + "@contentViewer": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "Скопійовано в буфер обміну", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "copy": "Копіювати", + "@copy": { + "type": "text", + "placeholders": {} + }, + "couldNotDecryptMessage": "Помилка при розшифруванні повідомлення: {error}", + "@couldNotDecryptMessage": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "couldNotSetAvatar": "Помилка при встановленні аватара", + "@couldNotSetAvatar": { + "type": "text", + "placeholders": {} + }, + "couldNotSetDisplayname": "Помилка при встановленні відображуваного імені", + "@couldNotSetDisplayname": { + "type": "text", + "placeholders": {} + }, + "countParticipants": "{count} учасника(ів)", + "@countParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "create": "Створити", + "@create": { + "type": "text", + "placeholders": {} + }, + "createAccountNow": "Створити обліковий запис зараз", + "@createAccountNow": { + "type": "text", + "placeholders": {} + }, + "createdTheChat": "{username} створив(ла) чат", + "@createdTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "createNewGroup": "Нова група", + "@createNewGroup": { + "type": "text", + "placeholders": {} + }, + "crossSigningDisabled": "Крос-підпис вимкнено", + "@crossSigningDisabled": { + "type": "text", + "placeholders": {} + }, + "crossSigningEnabled": "Крос-підпис ввімкнено", + "@crossSigningEnabled": { + "type": "text", + "placeholders": {} + }, + "currentlyActive": "Зараз активний(на)", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "", + "@darkTheme": { + "type": "text", + "placeholders": {} + }, + "dateAndTimeOfDay": "{date}, {timeOfDay}", + "@dateAndTimeOfDay": { + "type": "text", + "placeholders": { + "date": {}, + "timeOfDay": {} + } + }, + "dateWithoutYear": "{day}.{month}", + "@dateWithoutYear": { + "type": "text", + "placeholders": { + "month": {}, + "day": {} + } + }, + "dateWithYear": "{day}.{month}.{year}", + "@dateWithYear": { + "type": "text", + "placeholders": { + "year": {}, + "month": {}, + "day": {} + } + }, + "delete": "Видалити", + "@delete": { + "type": "text", + "placeholders": {} + }, + "deleteMessage": "Видалити повідомлення", + "@deleteMessage": { + "type": "text", + "placeholders": {} + }, + "deny": "Відхилити", + "@deny": { + "type": "text", + "placeholders": {} + }, + "device": "Пристрій", + "@device": { + "type": "text", + "placeholders": {} + }, + "devices": "Пристрої", + "@devices": { + "type": "text", + "placeholders": {} + }, + "discardPicture": "Видалити зображення", + "@discardPicture": { + "type": "text", + "placeholders": {} + }, + "displaynameHasBeenChanged": "Відображуване ім'я було змінено", + "@displaynameHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "donate": "", + "@donate": { + "type": "text", + "placeholders": {} + }, + "downloadFile": "Завантажити файл", + "@downloadFile": { + "type": "text", + "placeholders": {} + }, + "editDisplayname": "Змінити відображуване ім'я", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "editJitsiInstance": "", + "@editJitsiInstance": { + "type": "text", + "placeholders": {} + }, + "emoteExists": "Емодзі вже існує", + "@emoteExists": { + "type": "text", + "placeholders": {} + }, + "emoteInvalid": "Неприпустимий короткий код емодзі", + "@emoteInvalid": { + "type": "text", + "placeholders": {} + }, + "emoteSettings": "Налаштування емодзі", + "@emoteSettings": { + "type": "text", + "placeholders": {} + }, + "emoteShortcode": "Короткий код для емодзі", + "@emoteShortcode": { + "type": "text", + "placeholders": {} + }, + "emoteWarnNeedToPick": "Виберіть короткий код емодзі і зображення", + "@emoteWarnNeedToPick": { + "type": "text", + "placeholders": {} + }, + "emptyChat": "Пустий чат", + "@emptyChat": { + "type": "text", + "placeholders": {} + }, + "enableEncryptionWarning": "Ви більше не зможете відключити шифрування. Ви впевнені?", + "@enableEncryptionWarning": { + "type": "text", + "placeholders": {} + }, + "encryption": "Шифрування", + "@encryption": { + "type": "text", + "placeholders": {} + }, + "encryptionAlgorithm": "Алгоритм шифрування", + "@encryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "encryptionNotEnabled": "Шифрування вимкнено", + "@encryptionNotEnabled": { + "type": "text", + "placeholders": {} + }, + "end2endEncryptionSettings": "Налаштування наскрізного шифрування", + "@end2endEncryptionSettings": { + "type": "text", + "placeholders": {} + }, + "endedTheCall": "{senderName} завершив(ла) дзвінок", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterAGroupName": "Введіть назву групи", + "@enterAGroupName": { + "type": "text", + "placeholders": {} + }, + "enterAUsername": "Введіть ім'я користувача", + "@enterAUsername": { + "type": "text", + "placeholders": {} + }, + "enterYourHomeserver": "Введіть адресу вашого сервера Matrix", + "@enterYourHomeserver": { + "type": "text", + "placeholders": {} + }, + "fileName": "Ім'я файлу", + "@fileName": { + "type": "text", + "placeholders": {} + }, + "fileSize": "Розмір файлу", + "@fileSize": { + "type": "text", + "placeholders": {} + }, + "fluffychat": "FluffyChat", + "@fluffychat": { + "type": "text", + "placeholders": {} + }, + "forward": "Переслати", + "@forward": { + "type": "text", + "placeholders": {} + }, + "friday": "П'ятниця", + "@friday": { + "type": "text", + "placeholders": {} + }, + "fromJoining": "З моменту приєднання", + "@fromJoining": { + "type": "text", + "placeholders": {} + }, + "fromTheInvitation": "З моменту запрошення", + "@fromTheInvitation": { + "type": "text", + "placeholders": {} + }, + "group": "Група", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupDescription": "Опис групи", + "@groupDescription": { + "type": "text", + "placeholders": {} + }, + "groupDescriptionHasBeenChanged": "Опис групи було змінено", + "@groupDescriptionHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "Публічна група", + "@groupIsPublic": { + "type": "text", + "placeholders": {} + }, + "groupWith": "Група з {displayname}", + "@groupWith": { + "type": "text", + "placeholders": { + "displayname": {} + } + }, + "guestsAreForbidden": "Гості не можуть приєднуватись", + "@guestsAreForbidden": { + "type": "text", + "placeholders": {} + }, + "guestsCanJoin": "Гості можуть приєднуватись", + "@guestsCanJoin": { + "type": "text", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "{username} відкликав(ла) запрошення для {targetName}", + "@hasWithdrawnTheInvitationFor": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "help": "Допомога", + "@help": { + "type": "text", + "placeholders": {} + }, + "homeserverIsNotCompatible": "", + "@homeserverIsNotCompatible": { + "type": "text", + "placeholders": {} + }, + "id": "", + "@id": { + "type": "text", + "placeholders": {} + }, + "identity": "", + "@identity": { + "type": "text", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "", + "@inviteContact": { + "type": "text", + "placeholders": {} + }, + "inviteContactToGroup": "", + "@inviteContactToGroup": { + "type": "text", + "placeholders": { + "groupName": {} + } + }, + "invited": "", + "@invited": { + "type": "text", + "placeholders": {} + }, + "invitedUser": "", + "@invitedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "invitedUsersOnly": "", + "@invitedUsersOnly": { + "type": "text", + "placeholders": {} + }, + "inviteText": "{username} запросив(ла) вас у FluffyChat. \n1. Встановіть FluffyChat: http://fluffychat.im \n2. Зареєструйтесь або увійдіть \n3. Відкрийте посилання для запрошення: {link}", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "isDeviceKeyCorrect": "", + "@isDeviceKeyCorrect": { + "type": "text", + "placeholders": {} + }, + "isTyping": "", + "@isTyping": { + "type": "text", + "placeholders": {} + }, + "joinedTheChat": "", + "@joinedTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "keysCached": "", + "@keysCached": { + "type": "text", + "placeholders": {} + }, + "keysMissing": "", + "@keysMissing": { + "type": "text", + "placeholders": {} + }, + "kicked": "", + "@kicked": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickedAndBanned": "{username} виключив(ла) та заблокував(ла) {targetName}", + "@kickedAndBanned": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickFromChat": "", + "@kickFromChat": { + "type": "text", + "placeholders": {} + }, + "lastActiveAgo": "", + "@lastActiveAgo": { + "type": "text", + "placeholders": { + "localizedTimeShort": {} + } + }, + "lastSeenIp": "", + "@lastSeenIp": { + "type": "text", + "placeholders": {} + }, + "lastSeenLongTimeAgo": "", + "@lastSeenLongTimeAgo": { + "type": "text", + "placeholders": {} + }, + "leave": "", + "@leave": { + "type": "text", + "placeholders": {} + }, + "leftTheChat": "", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "", + "@lightTheme": { + "type": "text", + "placeholders": {} + }, + "loadCountMoreParticipants": "", + "@loadCountMoreParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "loadingPleaseWait": "", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "login": "", + "@login": { + "type": "text", + "placeholders": {} + }, + "logInTo": "", + "@logInTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "logout": "", + "@logout": { + "type": "text", + "placeholders": {} + }, + "makeAModerator": "", + "@makeAModerator": { + "type": "text", + "placeholders": {} + }, + "makeAnAdmin": "", + "@makeAnAdmin": { + "type": "text", + "placeholders": {} + }, + "makeSureTheIdentifierIsValid": "", + "@makeSureTheIdentifierIsValid": { + "type": "text", + "placeholders": {} + }, + "messageWillBeRemovedWarning": "", + "@messageWillBeRemovedWarning": { + "type": "text", + "placeholders": {} + }, + "moderator": "", + "@moderator": { + "type": "text", + "placeholders": {} + }, + "monday": "", + "@monday": { + "type": "text", + "placeholders": {} + }, + "muteChat": "", + "@muteChat": { + "type": "text", + "placeholders": {} + }, + "needPantalaimonWarning": "", + "@needPantalaimonWarning": { + "type": "text", + "placeholders": {} + }, + "newMessageInFluffyChat": "", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "newPrivateChat": "", + "@newPrivateChat": { + "type": "text", + "placeholders": {} + }, + "newVerificationRequest": "", + "@newVerificationRequest": { + "type": "text", + "placeholders": {} + }, + "noCrossSignBootstrap": "", + "@noCrossSignBootstrap": { + "type": "text", + "placeholders": {} + }, + "noEmotesFound": "", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "noMegolmBootstrap": "", + "@noMegolmBootstrap": { + "type": "text", + "placeholders": {} + }, + "none": "", + "@none": { + "type": "text", + "placeholders": {} + }, + "noPermission": "", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "notSupportedInWeb": "", + "@notSupportedInWeb": { + "type": "text", + "placeholders": {} + }, + "numberSelected": "", + "@numberSelected": { + "type": "text", + "placeholders": { + "number": {} + } + }, + "ok": "", + "@ok": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupDisabled": "", + "@onlineKeyBackupDisabled": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "", + "@onlineKeyBackupEnabled": { + "type": "text", + "placeholders": {} + }, + "oopsSomethingWentWrong": "", + "@oopsSomethingWentWrong": { + "type": "text", + "placeholders": {} + }, + "openAppToReadMessages": "", + "@openAppToReadMessages": { + "type": "text", + "placeholders": {} + }, + "openCamera": "", + "@openCamera": { + "type": "text", + "placeholders": {} + }, + "optionalGroupName": "", + "@optionalGroupName": { + "type": "text", + "placeholders": {} + }, + "participatingUserDevices": "", + "@participatingUserDevices": { + "type": "text", + "placeholders": {} + }, + "passphraseOrKey": "", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "password": "", + "@password": { + "type": "text", + "placeholders": {} + }, + "pickImage": "", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "play": "", + "@play": { + "type": "text", + "placeholders": { + "fileName": {} + } + }, + "pleaseChooseAUsername": "", + "@pleaseChooseAUsername": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterAMatrixIdentifier": "", + "@pleaseEnterAMatrixIdentifier": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPassword": "", + "@pleaseEnterYourPassword": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourUsername": "", + "@pleaseEnterYourUsername": { + "type": "text", + "placeholders": {} + }, + "publicRooms": "", + "@publicRooms": { + "type": "text", + "placeholders": {} + }, + "recording": "", + "@recording": { + "type": "text", + "placeholders": {} + }, + "redactedAnEvent": "", + "@redactedAnEvent": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "reject": "", + "@reject": { + "type": "text", + "placeholders": {} + }, + "rejectedTheInvitation": "", + "@rejectedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "rejoin": "", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "", + "@removeAllOtherDevices": { + "type": "text", + "placeholders": {} + }, + "removedBy": "", + "@removedBy": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "removeDevice": "", + "@removeDevice": { + "type": "text", + "placeholders": {} + }, + "removeExile": "", + "@removeExile": { + "type": "text", + "placeholders": {} + }, + "removeMessage": "", + "@removeMessage": { + "type": "text", + "placeholders": {} + }, + "renderRichContent": "", + "@renderRichContent": { + "type": "text", + "placeholders": {} + }, + "reply": "", + "@reply": { + "type": "text", + "placeholders": {} + }, + "requestPermission": "", + "@requestPermission": { + "type": "text", + "placeholders": {} + }, + "requestToReadOlderMessages": "", + "@requestToReadOlderMessages": { + "type": "text", + "placeholders": {} + }, + "revokeAllPermissions": "", + "@revokeAllPermissions": { + "type": "text", + "placeholders": {} + }, + "roomHasBeenUpgraded": "", + "@roomHasBeenUpgraded": { + "type": "text", + "placeholders": {} + }, + "saturday": "", + "@saturday": { + "type": "text", + "placeholders": {} + }, + "searchForAChat": "", + "@searchForAChat": { + "type": "text", + "placeholders": {} + }, + "seenByUser": "", + "@seenByUser": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "seenByUserAndCountOthers": "", + "@seenByUserAndCountOthers": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "seenByUserAndUser": "", + "@seenByUserAndUser": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "send": "", + "@send": { + "type": "text", + "placeholders": {} + }, + "sendAMessage": "", + "@sendAMessage": { + "type": "text", + "placeholders": {} + }, + "sendFile": "", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sentAFile": "", + "@sentAFile": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAnAudio": "", + "@sentAnAudio": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAPicture": "", + "@sentAPicture": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentASticker": "", + "@sentASticker": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAVideo": "", + "@sentAVideo": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sessionVerified": "", + "@sessionVerified": { + "type": "text", + "placeholders": {} + }, + "setAProfilePicture": "", + "@setAProfilePicture": { + "type": "text", + "placeholders": {} + }, + "setGroupDescription": "", + "@setGroupDescription": { + "type": "text", + "placeholders": {} + }, + "setInvitationLink": "", + "@setInvitationLink": { + "type": "text", + "placeholders": {} + }, + "setStatus": "", + "@setStatus": { + "type": "text", + "placeholders": {} + }, + "settings": "", + "@settings": { + "type": "text", + "placeholders": {} + }, + "share": "", + "@share": { + "type": "text", + "placeholders": {} + }, + "sharedTheLocation": "", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "signUp": "", + "@signUp": { + "type": "text", + "placeholders": {} + }, + "skip": "", + "@skip": { + "type": "text", + "placeholders": {} + }, + "sourceCode": "", + "@sourceCode": { + "type": "text", + "placeholders": {} + }, + "startYourFirstChat": "", + "@startYourFirstChat": { + "type": "text", + "placeholders": {} + }, + "statusExampleMessage": "", + "@statusExampleMessage": { + "type": "text", + "placeholders": {} + }, + "submit": "", + "@submit": { + "type": "text", + "placeholders": {} + }, + "sunday": "", + "@sunday": { + "type": "text", + "placeholders": {} + }, + "systemTheme": "", + "@systemTheme": { + "type": "text", + "placeholders": {} + }, + "tapToShowMenu": "", + "@tapToShowMenu": { + "type": "text", + "placeholders": {} + }, + "theyDontMatch": "", + "@theyDontMatch": { + "type": "text", + "placeholders": {} + }, + "theyMatch": "", + "@theyMatch": { + "type": "text", + "placeholders": {} + }, + "thisRoomHasBeenArchived": "", + "@thisRoomHasBeenArchived": { + "type": "text", + "placeholders": {} + }, + "thursday": "", + "@thursday": { + "type": "text", + "placeholders": {} + }, + "timeOfDay": "{hours24}:{minutes}", + "@timeOfDay": { + "type": "text", + "placeholders": { + "hours12": {}, + "hours24": {}, + "minutes": {}, + "suffix": {} + } + }, + "title": "", + "@title": { + "description": "Title for the application", + "type": "text", + "placeholders": {} + }, + "tryToSendAgain": "", + "@tryToSendAgain": { + "type": "text", + "placeholders": {} + }, + "tuesday": "", + "@tuesday": { + "type": "text", + "placeholders": {} + }, + "unbannedUser": "{username} розблокував(ла) {targetName}", + "@unbannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "unblockDevice": "", + "@unblockDevice": { + "type": "text", + "placeholders": {} + }, + "unknownDevice": "", + "@unknownDevice": { + "type": "text", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "", + "@unknownEncryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "unknownEvent": "", + "@unknownEvent": { + "type": "text", + "placeholders": { + "type": {} + } + }, + "unknownSessionVerify": "", + "@unknownSessionVerify": { + "type": "text", + "placeholders": {} + }, + "unmuteChat": "", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unreadChats": "", + "@unreadChats": { + "type": "text", + "placeholders": { + "unreadCount": {} + } + }, + "unreadMessages": "", + "@unreadMessages": { + "type": "text", + "placeholders": { + "unreadEvents": {} + } + }, + "unreadMessagesInChats": "", + "@unreadMessagesInChats": { + "type": "text", + "placeholders": { + "unreadEvents": {}, + "unreadChats": {} + } + }, + "useAmoledTheme": "", + "@useAmoledTheme": { + "type": "text", + "placeholders": {} + }, + "userAndOthersAreTyping": "", + "@userAndOthersAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "userAndUserAreTyping": "", + "@userAndUserAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "userIsTyping": "", + "@userIsTyping": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "userLeftTheChat": "", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "", + "@username": { + "type": "text", + "placeholders": {} + }, + "userSentUnknownEvent": "", + "@userSentUnknownEvent": { + "type": "text", + "placeholders": { + "username": {}, + "type": {} + } + }, + "verifiedSession": "", + "@verifiedSession": { + "type": "text", + "placeholders": {} + }, + "verify": "", + "@verify": { + "type": "text", + "placeholders": {} + }, + "verifyManual": "", + "@verifyManual": { + "type": "text", + "placeholders": {} + }, + "verifyStart": "", + "@verifyStart": { + "type": "text", + "placeholders": {} + }, + "verifySuccess": "", + "@verifySuccess": { + "type": "text", + "placeholders": {} + }, + "verifyTitle": "", + "@verifyTitle": { + "type": "text", + "placeholders": {} + }, + "verifyUser": "", + "@verifyUser": { + "type": "text", + "placeholders": {} + }, + "videoCall": "", + "@videoCall": { + "type": "text", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "", + "@visibilityOfTheChatHistory": { + "type": "text", + "placeholders": {} + }, + "visibleForAllParticipants": "", + "@visibleForAllParticipants": { + "type": "text", + "placeholders": {} + }, + "visibleForEveryone": "", + "@visibleForEveryone": { + "type": "text", + "placeholders": {} + }, + "voiceMessage": "", + "@voiceMessage": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "", + "@waitingPartnerAcceptRequest": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerEmoji": "", + "@waitingPartnerEmoji": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerNumbers": "", + "@waitingPartnerNumbers": { + "type": "text", + "placeholders": {} + }, + "wallpaper": "", + "@wallpaper": { + "type": "text", + "placeholders": {} + }, + "warningEncryptionInBeta": "", + "@warningEncryptionInBeta": { + "type": "text", + "placeholders": {} + }, + "wednesday": "", + "@wednesday": { + "type": "text", + "placeholders": {} + }, + "welcomeText": "", + "@welcomeText": { + "type": "text", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "", + "@whoIsAllowedToJoinThisGroup": { + "type": "text", + "placeholders": {} + }, + "writeAMessage": "", + "@writeAMessage": { + "type": "text", + "placeholders": {} + }, + "yes": "", + "@yes": { + "type": "text", + "placeholders": {} + }, + "you": "", + "@you": { + "type": "text", + "placeholders": {} + }, + "youAreInvitedToThisChat": "", + "@youAreInvitedToThisChat": { + "type": "text", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "", + "@youAreNoLongerParticipatingInThisChat": { + "type": "text", + "placeholders": {} + }, + "youCannotInviteYourself": "", + "@youCannotInviteYourself": { + "type": "text", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "Ви були заблоковані в цьому чаті", + "@youHaveBeenBannedFromThisChat": { + "type": "text", + "placeholders": {} + }, + "yourOwnUsername": "", + "@yourOwnUsername": { + "type": "text", + "placeholders": {} + } +} \ No newline at end of file diff --git a/lib/l10n/intl_zh.arb b/lib/l10n/intl_zh.arb new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/lib/l10n/intl_zh.arb @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/lib/l10n/intl_zh_Hans.arb b/lib/l10n/intl_zh_Hans.arb new file mode 100644 index 0000000..068d542 --- /dev/null +++ b/lib/l10n/intl_zh_Hans.arb @@ -0,0 +1,1636 @@ +{ + "@@locale": "zh_Hans", + "@@last_modified": "2020-09-23 11:46:01.529862", + "about": "关于", + "@about": { + "type": "text", + "placeholders": {} + }, + "accept": "接受", + "@accept": { + "type": "text", + "placeholders": {} + }, + "acceptedTheInvitation": "{username} 已接受邀请", + "@acceptedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "account": "账户", + "@account": { + "type": "text", + "placeholders": {} + }, + "accountInformation": "账户信息", + "@accountInformation": { + "type": "text", + "placeholders": {} + }, + "activatedEndToEndEncryption": "{username}已激活端到端加密", + "@activatedEndToEndEncryption": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "addGroupDescription": "添加一条群组介绍", + "@addGroupDescription": { + "type": "text", + "placeholders": {} + }, + "admin": "管理员", + "@admin": { + "type": "text", + "placeholders": {} + }, + "alias": "别称", + "@alias": { + "type": "text", + "placeholders": {} + }, + "alreadyHaveAnAccount": "已经有账户了?", + "@alreadyHaveAnAccount": { + "type": "text", + "placeholders": {} + }, + "answeredTheCall": "{senderName} 已开始通话", + "@answeredTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "anyoneCanJoin": "任何人可以加入", + "@anyoneCanJoin": { + "type": "text", + "placeholders": {} + }, + "archive": "存档", + "@archive": { + "type": "text", + "placeholders": {} + }, + "archivedRoom": "已存档的会话", + "@archivedRoom": { + "type": "text", + "placeholders": {} + }, + "areGuestsAllowedToJoin": "是否允许游客用户加入", + "@areGuestsAllowedToJoin": { + "type": "text", + "placeholders": {} + }, + "areYouSure": "你确定吗?", + "@areYouSure": { + "type": "text", + "placeholders": {} + }, + "askSSSSCache": "请输入您的安全存储密码或恢复密钥以存储密钥。", + "@askSSSSCache": { + "type": "text", + "placeholders": {} + }, + "askSSSSSign": "", + "@askSSSSSign": { + "type": "text", + "placeholders": {} + }, + "askSSSSVerify": "请输入安全存储密码或恢复密钥以验证您的会话。", + "@askSSSSVerify": { + "type": "text", + "placeholders": {} + }, + "askVerificationRequest": "是否接受来自{username}的验证申请?", + "@askVerificationRequest": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "authentication": "身份验证", + "@authentication": { + "type": "text", + "placeholders": {} + }, + "avatarHasBeenChanged": "头像已更改", + "@avatarHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "banFromChat": "已被从对话中禁止", + "@banFromChat": { + "type": "text", + "placeholders": {} + }, + "banned": "已被禁止", + "@banned": { + "type": "text", + "placeholders": {} + }, + "bannedUser": "{username}禁止了{targetName}", + "@bannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "blockDevice": "屏蔽设备", + "@blockDevice": { + "type": "text", + "placeholders": {} + }, + "byDefaultYouWillBeConnectedTo": "您将会默认连接到{homeserver}", + "@byDefaultYouWillBeConnectedTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "cachedKeys": "成功保存了密钥!", + "@cachedKeys": { + "type": "text", + "placeholders": {} + }, + "cancel": "取消", + "@cancel": { + "type": "text", + "placeholders": {} + }, + "changedTheChatAvatar": "{username} 更改了会话头像", + "@changedTheChatAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheChatDescriptionTo": "{username} 更改了会话介绍为:“{description}”", + "@changedTheChatDescriptionTo": { + "type": "text", + "placeholders": { + "username": {}, + "description": {} + } + }, + "changedTheChatNameTo": "{username} 更改了昵称为:“{chatname}”", + "@changedTheChatNameTo": { + "type": "text", + "placeholders": { + "username": {}, + "chatname": {} + } + }, + "changedTheChatPermissions": "{username} 更改了会话权限", + "@changedTheChatPermissions": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheDisplaynameTo": "{username} 更改了展示名称为:“{displayname}”", + "@changedTheDisplaynameTo": { + "type": "text", + "placeholders": { + "username": {}, + "displayname": {} + } + }, + "changedTheGuestAccessRules": "{username} 更改了游客访问规则", + "@changedTheGuestAccessRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheGuestAccessRulesTo": "{username} 更改了游客访问规则为:{rules}", + "@changedTheGuestAccessRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheHistoryVisibility": "{username} 更改了历史记录观察状态", + "@changedTheHistoryVisibility": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheHistoryVisibilityTo": "{username} 更改了历史记录观察状态到:{rules}", + "@changedTheHistoryVisibilityTo": { + "type": "text", + "placeholders": { + "username": {}, + "rules": {} + } + }, + "changedTheJoinRules": "{username} 更改了加入的规则", + "@changedTheJoinRules": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheJoinRulesTo": "{username} 更改了加入的规则为:{joinRules}", + "@changedTheJoinRulesTo": { + "type": "text", + "placeholders": { + "username": {}, + "joinRules": {} + } + }, + "changedTheProfileAvatar": "{username} 更改了他们的头像", + "@changedTheProfileAvatar": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomAliases": "{username} 更改了房间名", + "@changedTheRoomAliases": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changedTheRoomInvitationLink": "{username} 更改了邀请链接", + "@changedTheRoomInvitationLink": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "changelog": "更改记录", + "@changelog": { + "type": "text", + "placeholders": {} + }, + "changeTheHomeserver": "更改主机地址", + "@changeTheHomeserver": { + "type": "text", + "placeholders": {} + }, + "changeTheme": "", + "@changeTheme": { + "type": "text", + "placeholders": {} + }, + "changeTheNameOfTheGroup": "更改了群组名称", + "@changeTheNameOfTheGroup": { + "type": "text", + "placeholders": {} + }, + "changeTheServer": "更改服务器", + "@changeTheServer": { + "type": "text", + "placeholders": {} + }, + "changeWallpaper": "更改会话壁纸", + "@changeWallpaper": { + "type": "text", + "placeholders": {} + }, + "channelCorruptedDecryptError": "加密已被破坏", + "@channelCorruptedDecryptError": { + "type": "text", + "placeholders": {} + }, + "chat": "会话", + "@chat": { + "type": "text", + "placeholders": {} + }, + "chatDetails": "会话详情", + "@chatDetails": { + "type": "text", + "placeholders": {} + }, + "chooseAStrongPassword": "输入一个强密码", + "@chooseAStrongPassword": { + "type": "text", + "placeholders": {} + }, + "chooseAUsername": "输入一个昵称", + "@chooseAUsername": { + "type": "text", + "placeholders": {} + }, + "close": "关闭", + "@close": { + "type": "text", + "placeholders": {} + }, + "compareEmojiMatch": "对比并确认这些表情匹配其他那些设备", + "@compareEmojiMatch": { + "type": "text", + "placeholders": {} + }, + "compareNumbersMatch": "", + "@compareNumbersMatch": { + "type": "text", + "placeholders": {} + }, + "confirm": "", + "@confirm": { + "type": "text", + "placeholders": {} + }, + "connect": "", + "@connect": { + "type": "text", + "placeholders": {} + }, + "connectionAttemptFailed": "", + "@connectionAttemptFailed": { + "type": "text", + "placeholders": {} + }, + "contactHasBeenInvitedToTheGroup": "", + "@contactHasBeenInvitedToTheGroup": { + "type": "text", + "placeholders": {} + }, + "contentViewer": "", + "@contentViewer": { + "type": "text", + "placeholders": {} + }, + "copiedToClipboard": "", + "@copiedToClipboard": { + "type": "text", + "placeholders": {} + }, + "copy": "", + "@copy": { + "type": "text", + "placeholders": {} + }, + "couldNotDecryptMessage": "", + "@couldNotDecryptMessage": { + "type": "text", + "placeholders": { + "error": {} + } + }, + "couldNotSetAvatar": "", + "@couldNotSetAvatar": { + "type": "text", + "placeholders": {} + }, + "couldNotSetDisplayname": "", + "@couldNotSetDisplayname": { + "type": "text", + "placeholders": {} + }, + "countParticipants": "", + "@countParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "create": "", + "@create": { + "type": "text", + "placeholders": {} + }, + "createAccountNow": "", + "@createAccountNow": { + "type": "text", + "placeholders": {} + }, + "createdTheChat": "", + "@createdTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "createNewGroup": "", + "@createNewGroup": { + "type": "text", + "placeholders": {} + }, + "crossSigningDisabled": "", + "@crossSigningDisabled": { + "type": "text", + "placeholders": {} + }, + "crossSigningEnabled": "", + "@crossSigningEnabled": { + "type": "text", + "placeholders": {} + }, + "currentlyActive": "", + "@currentlyActive": { + "type": "text", + "placeholders": {} + }, + "darkTheme": "", + "@darkTheme": { + "type": "text", + "placeholders": {} + }, + "dateAndTimeOfDay": "", + "@dateAndTimeOfDay": { + "type": "text", + "placeholders": { + "date": {}, + "timeOfDay": {} + } + }, + "dateWithoutYear": "", + "@dateWithoutYear": { + "type": "text", + "placeholders": { + "month": {}, + "day": {} + } + }, + "dateWithYear": "", + "@dateWithYear": { + "type": "text", + "placeholders": { + "year": {}, + "month": {}, + "day": {} + } + }, + "delete": "", + "@delete": { + "type": "text", + "placeholders": {} + }, + "deleteMessage": "", + "@deleteMessage": { + "type": "text", + "placeholders": {} + }, + "deny": "", + "@deny": { + "type": "text", + "placeholders": {} + }, + "device": "", + "@device": { + "type": "text", + "placeholders": {} + }, + "devices": "", + "@devices": { + "type": "text", + "placeholders": {} + }, + "discardPicture": "", + "@discardPicture": { + "type": "text", + "placeholders": {} + }, + "displaynameHasBeenChanged": "", + "@displaynameHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "donate": "", + "@donate": { + "type": "text", + "placeholders": {} + }, + "downloadFile": "", + "@downloadFile": { + "type": "text", + "placeholders": {} + }, + "editDisplayname": "", + "@editDisplayname": { + "type": "text", + "placeholders": {} + }, + "editJitsiInstance": "", + "@editJitsiInstance": { + "type": "text", + "placeholders": {} + }, + "emoteExists": "", + "@emoteExists": { + "type": "text", + "placeholders": {} + }, + "emoteInvalid": "", + "@emoteInvalid": { + "type": "text", + "placeholders": {} + }, + "emoteSettings": "", + "@emoteSettings": { + "type": "text", + "placeholders": {} + }, + "emoteShortcode": "", + "@emoteShortcode": { + "type": "text", + "placeholders": {} + }, + "emoteWarnNeedToPick": "", + "@emoteWarnNeedToPick": { + "type": "text", + "placeholders": {} + }, + "emptyChat": "", + "@emptyChat": { + "type": "text", + "placeholders": {} + }, + "enableEncryptionWarning": "", + "@enableEncryptionWarning": { + "type": "text", + "placeholders": {} + }, + "encryption": "", + "@encryption": { + "type": "text", + "placeholders": {} + }, + "encryptionAlgorithm": "", + "@encryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "encryptionNotEnabled": "", + "@encryptionNotEnabled": { + "type": "text", + "placeholders": {} + }, + "end2endEncryptionSettings": "", + "@end2endEncryptionSettings": { + "type": "text", + "placeholders": {} + }, + "endedTheCall": "", + "@endedTheCall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "enterAGroupName": "", + "@enterAGroupName": { + "type": "text", + "placeholders": {} + }, + "enterAUsername": "", + "@enterAUsername": { + "type": "text", + "placeholders": {} + }, + "enterYourHomeserver": "", + "@enterYourHomeserver": { + "type": "text", + "placeholders": {} + }, + "fileName": "", + "@fileName": { + "type": "text", + "placeholders": {} + }, + "fileSize": "", + "@fileSize": { + "type": "text", + "placeholders": {} + }, + "fluffychat": "", + "@fluffychat": { + "type": "text", + "placeholders": {} + }, + "forward": "", + "@forward": { + "type": "text", + "placeholders": {} + }, + "friday": "", + "@friday": { + "type": "text", + "placeholders": {} + }, + "fromJoining": "", + "@fromJoining": { + "type": "text", + "placeholders": {} + }, + "fromTheInvitation": "", + "@fromTheInvitation": { + "type": "text", + "placeholders": {} + }, + "group": "", + "@group": { + "type": "text", + "placeholders": {} + }, + "groupDescription": "", + "@groupDescription": { + "type": "text", + "placeholders": {} + }, + "groupDescriptionHasBeenChanged": "", + "@groupDescriptionHasBeenChanged": { + "type": "text", + "placeholders": {} + }, + "groupIsPublic": "", + "@groupIsPublic": { + "type": "text", + "placeholders": {} + }, + "groupWith": "", + "@groupWith": { + "type": "text", + "placeholders": { + "displayname": {} + } + }, + "guestsAreForbidden": "", + "@guestsAreForbidden": { + "type": "text", + "placeholders": {} + }, + "guestsCanJoin": "", + "@guestsCanJoin": { + "type": "text", + "placeholders": {} + }, + "hasWithdrawnTheInvitationFor": "", + "@hasWithdrawnTheInvitationFor": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "help": "", + "@help": { + "type": "text", + "placeholders": {} + }, + "homeserverIsNotCompatible": "", + "@homeserverIsNotCompatible": { + "type": "text", + "placeholders": {} + }, + "id": "", + "@id": { + "type": "text", + "placeholders": {} + }, + "identity": "", + "@identity": { + "type": "text", + "placeholders": {} + }, + "incorrectPassphraseOrKey": "", + "@incorrectPassphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "inviteContact": "", + "@inviteContact": { + "type": "text", + "placeholders": {} + }, + "inviteContactToGroup": "", + "@inviteContactToGroup": { + "type": "text", + "placeholders": { + "groupName": {} + } + }, + "invited": "", + "@invited": { + "type": "text", + "placeholders": {} + }, + "invitedUser": "", + "@invitedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "invitedUsersOnly": "", + "@invitedUsersOnly": { + "type": "text", + "placeholders": {} + }, + "inviteText": "", + "@inviteText": { + "type": "text", + "placeholders": { + "username": {}, + "link": {} + } + }, + "isDeviceKeyCorrect": "", + "@isDeviceKeyCorrect": { + "type": "text", + "placeholders": {} + }, + "isTyping": "", + "@isTyping": { + "type": "text", + "placeholders": {} + }, + "joinedTheChat": "", + "@joinedTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "joinRoom": "", + "@joinRoom": { + "type": "text", + "placeholders": {} + }, + "keysCached": "", + "@keysCached": { + "type": "text", + "placeholders": {} + }, + "keysMissing": "", + "@keysMissing": { + "type": "text", + "placeholders": {} + }, + "kicked": "", + "@kicked": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickedAndBanned": "", + "@kickedAndBanned": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "kickFromChat": "", + "@kickFromChat": { + "type": "text", + "placeholders": {} + }, + "lastActiveAgo": "", + "@lastActiveAgo": { + "type": "text", + "placeholders": { + "localizedTimeShort": {} + } + }, + "lastSeenIp": "", + "@lastSeenIp": { + "type": "text", + "placeholders": {} + }, + "lastSeenLongTimeAgo": "", + "@lastSeenLongTimeAgo": { + "type": "text", + "placeholders": {} + }, + "leave": "", + "@leave": { + "type": "text", + "placeholders": {} + }, + "leftTheChat": "", + "@leftTheChat": { + "type": "text", + "placeholders": {} + }, + "license": "", + "@license": { + "type": "text", + "placeholders": {} + }, + "lightTheme": "", + "@lightTheme": { + "type": "text", + "placeholders": {} + }, + "loadCountMoreParticipants": "", + "@loadCountMoreParticipants": { + "type": "text", + "placeholders": { + "count": {} + } + }, + "loadingPleaseWait": "", + "@loadingPleaseWait": { + "type": "text", + "placeholders": {} + }, + "loadMore": "", + "@loadMore": { + "type": "text", + "placeholders": {} + }, + "login": "", + "@login": { + "type": "text", + "placeholders": {} + }, + "logInTo": "", + "@logInTo": { + "type": "text", + "placeholders": { + "homeserver": {} + } + }, + "logout": "", + "@logout": { + "type": "text", + "placeholders": {} + }, + "makeAModerator": "", + "@makeAModerator": { + "type": "text", + "placeholders": {} + }, + "makeAnAdmin": "", + "@makeAnAdmin": { + "type": "text", + "placeholders": {} + }, + "makeSureTheIdentifierIsValid": "", + "@makeSureTheIdentifierIsValid": { + "type": "text", + "placeholders": {} + }, + "messageWillBeRemovedWarning": "", + "@messageWillBeRemovedWarning": { + "type": "text", + "placeholders": {} + }, + "moderator": "", + "@moderator": { + "type": "text", + "placeholders": {} + }, + "monday": "", + "@monday": { + "type": "text", + "placeholders": {} + }, + "muteChat": "", + "@muteChat": { + "type": "text", + "placeholders": {} + }, + "needPantalaimonWarning": "", + "@needPantalaimonWarning": { + "type": "text", + "placeholders": {} + }, + "newMessageInFluffyChat": "", + "@newMessageInFluffyChat": { + "type": "text", + "placeholders": {} + }, + "newPrivateChat": "", + "@newPrivateChat": { + "type": "text", + "placeholders": {} + }, + "newVerificationRequest": "", + "@newVerificationRequest": { + "type": "text", + "placeholders": {} + }, + "noCrossSignBootstrap": "", + "@noCrossSignBootstrap": { + "type": "text", + "placeholders": {} + }, + "noEmotesFound": "", + "@noEmotesFound": { + "type": "text", + "placeholders": {} + }, + "noGoogleServicesWarning": "", + "@noGoogleServicesWarning": { + "type": "text", + "placeholders": {} + }, + "noMegolmBootstrap": "", + "@noMegolmBootstrap": { + "type": "text", + "placeholders": {} + }, + "none": "", + "@none": { + "type": "text", + "placeholders": {} + }, + "noPermission": "", + "@noPermission": { + "type": "text", + "placeholders": {} + }, + "noRoomsFound": "", + "@noRoomsFound": { + "type": "text", + "placeholders": {} + }, + "notSupportedInWeb": "", + "@notSupportedInWeb": { + "type": "text", + "placeholders": {} + }, + "numberSelected": "", + "@numberSelected": { + "type": "text", + "placeholders": { + "number": {} + } + }, + "ok": "", + "@ok": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupDisabled": "", + "@onlineKeyBackupDisabled": { + "type": "text", + "placeholders": {} + }, + "onlineKeyBackupEnabled": "", + "@onlineKeyBackupEnabled": { + "type": "text", + "placeholders": {} + }, + "oopsSomethingWentWrong": "", + "@oopsSomethingWentWrong": { + "type": "text", + "placeholders": {} + }, + "openAppToReadMessages": "", + "@openAppToReadMessages": { + "type": "text", + "placeholders": {} + }, + "openCamera": "", + "@openCamera": { + "type": "text", + "placeholders": {} + }, + "optionalGroupName": "", + "@optionalGroupName": { + "type": "text", + "placeholders": {} + }, + "participatingUserDevices": "", + "@participatingUserDevices": { + "type": "text", + "placeholders": {} + }, + "passphraseOrKey": "", + "@passphraseOrKey": { + "type": "text", + "placeholders": {} + }, + "password": "", + "@password": { + "type": "text", + "placeholders": {} + }, + "pickImage": "", + "@pickImage": { + "type": "text", + "placeholders": {} + }, + "pin": "", + "@pin": { + "type": "text", + "placeholders": {} + }, + "play": "", + "@play": { + "type": "text", + "placeholders": { + "fileName": {} + } + }, + "pleaseChooseAUsername": "", + "@pleaseChooseAUsername": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterAMatrixIdentifier": "", + "@pleaseEnterAMatrixIdentifier": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourPassword": "", + "@pleaseEnterYourPassword": { + "type": "text", + "placeholders": {} + }, + "pleaseEnterYourUsername": "", + "@pleaseEnterYourUsername": { + "type": "text", + "placeholders": {} + }, + "publicRooms": "", + "@publicRooms": { + "type": "text", + "placeholders": {} + }, + "recording": "", + "@recording": { + "type": "text", + "placeholders": {} + }, + "redactedAnEvent": "", + "@redactedAnEvent": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "reject": "", + "@reject": { + "type": "text", + "placeholders": {} + }, + "rejectedTheInvitation": "", + "@rejectedTheInvitation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "rejoin": "", + "@rejoin": { + "type": "text", + "placeholders": {} + }, + "remove": "", + "@remove": { + "type": "text", + "placeholders": {} + }, + "removeAllOtherDevices": "", + "@removeAllOtherDevices": { + "type": "text", + "placeholders": {} + }, + "removedBy": "", + "@removedBy": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "removeDevice": "", + "@removeDevice": { + "type": "text", + "placeholders": {} + }, + "removeExile": "", + "@removeExile": { + "type": "text", + "placeholders": {} + }, + "removeMessage": "", + "@removeMessage": { + "type": "text", + "placeholders": {} + }, + "renderRichContent": "", + "@renderRichContent": { + "type": "text", + "placeholders": {} + }, + "reply": "", + "@reply": { + "type": "text", + "placeholders": {} + }, + "requestPermission": "", + "@requestPermission": { + "type": "text", + "placeholders": {} + }, + "requestToReadOlderMessages": "", + "@requestToReadOlderMessages": { + "type": "text", + "placeholders": {} + }, + "revokeAllPermissions": "", + "@revokeAllPermissions": { + "type": "text", + "placeholders": {} + }, + "roomHasBeenUpgraded": "", + "@roomHasBeenUpgraded": { + "type": "text", + "placeholders": {} + }, + "saturday": "", + "@saturday": { + "type": "text", + "placeholders": {} + }, + "searchForAChat": "", + "@searchForAChat": { + "type": "text", + "placeholders": {} + }, + "seenByUser": "", + "@seenByUser": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "seenByUserAndCountOthers": "", + "@seenByUserAndCountOthers": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "seenByUserAndUser": "", + "@seenByUserAndUser": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "send": "", + "@send": { + "type": "text", + "placeholders": {} + }, + "sendAMessage": "", + "@sendAMessage": { + "type": "text", + "placeholders": {} + }, + "sendFile": "", + "@sendFile": { + "type": "text", + "placeholders": {} + }, + "sendImage": "", + "@sendImage": { + "type": "text", + "placeholders": {} + }, + "sentAFile": "", + "@sentAFile": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAnAudio": "", + "@sentAnAudio": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAPicture": "", + "@sentAPicture": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentASticker": "", + "@sentASticker": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentAVideo": "", + "@sentAVideo": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "sentCallInformations": "", + "@sentCallInformations": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "sessionVerified": "", + "@sessionVerified": { + "type": "text", + "placeholders": {} + }, + "setAProfilePicture": "", + "@setAProfilePicture": { + "type": "text", + "placeholders": {} + }, + "setGroupDescription": "", + "@setGroupDescription": { + "type": "text", + "placeholders": {} + }, + "setInvitationLink": "", + "@setInvitationLink": { + "type": "text", + "placeholders": {} + }, + "setStatus": "", + "@setStatus": { + "type": "text", + "placeholders": {} + }, + "settings": "", + "@settings": { + "type": "text", + "placeholders": {} + }, + "share": "", + "@share": { + "type": "text", + "placeholders": {} + }, + "sharedTheLocation": "", + "@sharedTheLocation": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "signUp": "", + "@signUp": { + "type": "text", + "placeholders": {} + }, + "skip": "", + "@skip": { + "type": "text", + "placeholders": {} + }, + "sourceCode": "", + "@sourceCode": { + "type": "text", + "placeholders": {} + }, + "startedACall": "", + "@startedACall": { + "type": "text", + "placeholders": { + "senderName": {} + } + }, + "startYourFirstChat": "", + "@startYourFirstChat": { + "type": "text", + "placeholders": {} + }, + "statusExampleMessage": "", + "@statusExampleMessage": { + "type": "text", + "placeholders": {} + }, + "submit": "", + "@submit": { + "type": "text", + "placeholders": {} + }, + "sunday": "", + "@sunday": { + "type": "text", + "placeholders": {} + }, + "systemTheme": "", + "@systemTheme": { + "type": "text", + "placeholders": {} + }, + "tapToShowMenu": "", + "@tapToShowMenu": { + "type": "text", + "placeholders": {} + }, + "theyDontMatch": "", + "@theyDontMatch": { + "type": "text", + "placeholders": {} + }, + "theyMatch": "", + "@theyMatch": { + "type": "text", + "placeholders": {} + }, + "thisRoomHasBeenArchived": "", + "@thisRoomHasBeenArchived": { + "type": "text", + "placeholders": {} + }, + "thursday": "", + "@thursday": { + "type": "text", + "placeholders": {} + }, + "timeOfDay": "", + "@timeOfDay": { + "type": "text", + "placeholders": { + "hours12": {}, + "hours24": {}, + "minutes": {}, + "suffix": {} + } + }, + "title": "", + "@title": { + "description": "Title for the application", + "type": "text", + "placeholders": {} + }, + "tryToSendAgain": "", + "@tryToSendAgain": { + "type": "text", + "placeholders": {} + }, + "tuesday": "", + "@tuesday": { + "type": "text", + "placeholders": {} + }, + "unbannedUser": "", + "@unbannedUser": { + "type": "text", + "placeholders": { + "username": {}, + "targetName": {} + } + }, + "unblockDevice": "", + "@unblockDevice": { + "type": "text", + "placeholders": {} + }, + "unknownDevice": "", + "@unknownDevice": { + "type": "text", + "placeholders": {} + }, + "unknownEncryptionAlgorithm": "", + "@unknownEncryptionAlgorithm": { + "type": "text", + "placeholders": {} + }, + "unknownEvent": "", + "@unknownEvent": { + "type": "text", + "placeholders": { + "type": {} + } + }, + "unknownSessionVerify": "", + "@unknownSessionVerify": { + "type": "text", + "placeholders": {} + }, + "unmuteChat": "", + "@unmuteChat": { + "type": "text", + "placeholders": {} + }, + "unpin": "", + "@unpin": { + "type": "text", + "placeholders": {} + }, + "unreadChats": "", + "@unreadChats": { + "type": "text", + "placeholders": { + "unreadCount": {} + } + }, + "unreadMessages": "", + "@unreadMessages": { + "type": "text", + "placeholders": { + "unreadEvents": {} + } + }, + "unreadMessagesInChats": "", + "@unreadMessagesInChats": { + "type": "text", + "placeholders": { + "unreadEvents": {}, + "unreadChats": {} + } + }, + "useAmoledTheme": "", + "@useAmoledTheme": { + "type": "text", + "placeholders": {} + }, + "userAndOthersAreTyping": "", + "@userAndOthersAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "count": {} + } + }, + "userAndUserAreTyping": "", + "@userAndUserAreTyping": { + "type": "text", + "placeholders": { + "username": {}, + "username2": {} + } + }, + "userIsTyping": "", + "@userIsTyping": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "userLeftTheChat": "", + "@userLeftTheChat": { + "type": "text", + "placeholders": { + "username": {} + } + }, + "username": "", + "@username": { + "type": "text", + "placeholders": {} + }, + "userSentUnknownEvent": "", + "@userSentUnknownEvent": { + "type": "text", + "placeholders": { + "username": {}, + "type": {} + } + }, + "verifiedSession": "", + "@verifiedSession": { + "type": "text", + "placeholders": {} + }, + "verify": "", + "@verify": { + "type": "text", + "placeholders": {} + }, + "verifyManual": "", + "@verifyManual": { + "type": "text", + "placeholders": {} + }, + "verifyStart": "", + "@verifyStart": { + "type": "text", + "placeholders": {} + }, + "verifySuccess": "", + "@verifySuccess": { + "type": "text", + "placeholders": {} + }, + "verifyTitle": "", + "@verifyTitle": { + "type": "text", + "placeholders": {} + }, + "verifyUser": "", + "@verifyUser": { + "type": "text", + "placeholders": {} + }, + "videoCall": "", + "@videoCall": { + "type": "text", + "placeholders": {} + }, + "visibilityOfTheChatHistory": "", + "@visibilityOfTheChatHistory": { + "type": "text", + "placeholders": {} + }, + "visibleForAllParticipants": "", + "@visibleForAllParticipants": { + "type": "text", + "placeholders": {} + }, + "visibleForEveryone": "", + "@visibleForEveryone": { + "type": "text", + "placeholders": {} + }, + "voiceMessage": "", + "@voiceMessage": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerAcceptRequest": "", + "@waitingPartnerAcceptRequest": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerEmoji": "", + "@waitingPartnerEmoji": { + "type": "text", + "placeholders": {} + }, + "waitingPartnerNumbers": "", + "@waitingPartnerNumbers": { + "type": "text", + "placeholders": {} + }, + "wallpaper": "", + "@wallpaper": { + "type": "text", + "placeholders": {} + }, + "warningEncryptionInBeta": "", + "@warningEncryptionInBeta": { + "type": "text", + "placeholders": {} + }, + "wednesday": "", + "@wednesday": { + "type": "text", + "placeholders": {} + }, + "welcomeText": "", + "@welcomeText": { + "type": "text", + "placeholders": {} + }, + "whoIsAllowedToJoinThisGroup": "", + "@whoIsAllowedToJoinThisGroup": { + "type": "text", + "placeholders": {} + }, + "writeAMessage": "", + "@writeAMessage": { + "type": "text", + "placeholders": {} + }, + "yes": "", + "@yes": { + "type": "text", + "placeholders": {} + }, + "you": "", + "@you": { + "type": "text", + "placeholders": {} + }, + "youAreInvitedToThisChat": "", + "@youAreInvitedToThisChat": { + "type": "text", + "placeholders": {} + }, + "youAreNoLongerParticipatingInThisChat": "", + "@youAreNoLongerParticipatingInThisChat": { + "type": "text", + "placeholders": {} + }, + "youCannotInviteYourself": "", + "@youCannotInviteYourself": { + "type": "text", + "placeholders": {} + }, + "youHaveBeenBannedFromThisChat": "", + "@youHaveBeenBannedFromThisChat": { + "type": "text", + "placeholders": {} + }, + "yourOwnUsername": "", + "@yourOwnUsername": { + "type": "text", + "placeholders": {} + } +} \ No newline at end of file diff --git a/lib/l10n/messages_all.dart b/lib/l10n/messages_all.dart deleted file mode 100644 index 2e2bc57..0000000 --- a/lib/l10n/messages_all.dart +++ /dev/null @@ -1,106 +0,0 @@ -// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart -// This is a library that looks up messages for specific locales by -// delegating to the appropriate library. - -// Ignore issues from commonly used lints in this file. -// ignore_for_file:implementation_imports, file_names, unnecessary_new -// ignore_for_file:unnecessary_brace_in_string_interps, directives_ordering -// ignore_for_file:argument_type_not_assignable, invalid_assignment -// ignore_for_file:prefer_single_quotes, prefer_generic_function_type_aliases -// ignore_for_file:comment_references - -import 'dart:async'; - -import 'package:intl/intl.dart'; -import 'package:intl/message_lookup_by_library.dart'; -import 'package:intl/src/intl_helpers.dart'; - -import 'messages_cs.dart' as messages_cs; -import 'messages_de.dart' as messages_de; -import 'messages_es.dart' as messages_es; -import 'messages_fr.dart' as messages_fr; -import 'messages_gl.dart' as messages_gl; -import 'messages_hr.dart' as messages_hr; -import 'messages_hu.dart' as messages_hu; -import 'messages_ja.dart' as messages_ja; -import 'messages_messages.dart' as messages_messages; -import 'messages_pl.dart' as messages_pl; -import 'messages_ru.dart' as messages_ru; -import 'messages_sk.dart' as messages_sk; - -typedef Future LibraryLoader(); -Map _deferredLibraries = { - 'cs': () => new Future.value(null), - 'de': () => new Future.value(null), - 'es': () => new Future.value(null), - 'fr': () => new Future.value(null), - 'gl': () => new Future.value(null), - 'hr': () => new Future.value(null), - 'hu': () => new Future.value(null), - 'ja': () => new Future.value(null), - 'messages': () => new Future.value(null), - 'pl': () => new Future.value(null), - 'ru': () => new Future.value(null), - 'sk': () => new Future.value(null), -}; - -MessageLookupByLibrary _findExact(String localeName) { - switch (localeName) { - case 'cs': - return messages_cs.messages; - case 'de': - return messages_de.messages; - case 'es': - return messages_es.messages; - case 'fr': - return messages_fr.messages; - case 'gl': - return messages_gl.messages; - case 'hr': - return messages_hr.messages; - case 'hu': - return messages_hu.messages; - case 'ja': - return messages_ja.messages; - case 'messages': - return messages_messages.messages; - case 'pl': - return messages_pl.messages; - case 'ru': - return messages_ru.messages; - case 'sk': - return messages_sk.messages; - default: - return null; - } -} - -/// User programs should call this before using [localeName] for messages. -Future initializeMessages(String localeName) async { - var availableLocale = Intl.verifiedLocale( - localeName, (locale) => _deferredLibraries[locale] != null, - onFailure: (_) => null); - if (availableLocale == null) { - return new Future.value(false); - } - var lib = _deferredLibraries[availableLocale]; - await (lib == null ? new Future.value(false) : lib()); - initializeInternalMessageLookup(() => new CompositeMessageLookup()); - messageLookup.addLocale(availableLocale, _findGeneratedMessagesFor); - return new Future.value(true); -} - -bool _messagesExistFor(String locale) { - try { - return _findExact(locale) != null; - } catch (e) { - return false; - } -} - -MessageLookupByLibrary _findGeneratedMessagesFor(String locale) { - var actualLocale = - Intl.verifiedLocale(locale, _messagesExistFor, onFailure: (_) => null); - if (actualLocale == null) return null; - return _findExact(actualLocale); -} diff --git a/lib/l10n/messages_cs.dart b/lib/l10n/messages_cs.dart deleted file mode 100644 index 8b172a0..0000000 --- a/lib/l10n/messages_cs.dart +++ /dev/null @@ -1,525 +0,0 @@ -// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart -// This is a library that provides messages for a cs locale. All the -// messages from the main program should be duplicated here with the same -// function name. - -// Ignore issues from commonly used lints in this file. -// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new -// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering -// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases -// ignore_for_file:unused_import, file_names - -import 'package:intl/intl.dart'; -import 'package:intl/message_lookup_by_library.dart'; - -final messages = new MessageLookup(); - -typedef String MessageIfAbsent(String messageStr, List args); - -class MessageLookup extends MessageLookupByLibrary { - String get localeName => 'cs'; - - static m0(username) => "${username} přijali pozvání"; - - static m1(username) => "${username} aktivoval koncové šifrování"; - - static m2(username, targetName) => "${username} zabanoval ${targetName}"; - - static m3(homeserver) => - "V základním nastavení budete připojeni do ${homeserver}"; - - static m4(username) => "${username} změnili svůj avatar"; - - static m5(username, description) => - "${username} změnili popis diskuze na: „${description}“"; - - static m6(username, chatname) => - "${username} změnili jméno diskuze na: „${chatname}“"; - - static m7(username) => "${username} změnili nastavení oprávnění v diskuzi"; - - static m8(username, displayname) => - "${username} změnili přezdívku na: ${displayname}"; - - static m9(username) => "${username} změnili přístupová práva pro hosty"; - - static m10(username, rules) => - "${username} změnili přístupová práva pro hosty na: ${rules}"; - - static m11(username) => - "${username} změnili nastavení viditelnosti historie diskuze"; - - static m12(username, rules) => - "${username} změnili nastavení viditelnosti historie diskuze na: ${rules}"; - - static m13(username) => "${username} změnili nastavení pravidel připojení"; - - static m14(username, joinRules) => - "${username} změnili nastavení pravidel připojení na: ${joinRules}"; - - static m15(username) => "${username} změnili nastavení profilového avataru"; - - static m16(username) => "${username} změnili nastavení aliasů místnosti"; - - static m17(username) => "${username} změnili odkaz k pozvání do místnosti"; - - static m18(error) => "Nebylo možné dešifrovat zprávu: ${error}"; - - static m19(count) => "${count} účastníků"; - - static m20(username) => "${username} založil diskuzi"; - - static m21(date, timeOfDay) => "${date}, ${timeOfDay}"; - - static m22(year, month, day) => "${day}. ${month}. ${year}"; - - static m23(month, day) => "${day}.${month}"; - - static m24(displayname) => "Skupina s ${displayname}"; - - static m25(username, targetName) => - "${username} vzal zpět pozvání pro ${targetName}"; - - static m26(groupName) => "Pozvat kontakt do ${groupName}"; - - static m27(username, link) => ""; - - static m28(username, targetName) => "${username} pozvali ${targetName}"; - - static m29(username) => "${username} se připojili do diskuze"; - - static m30(username, targetName) => "${username} vyhodil ${targetName}"; - - static m31(username, targetName) => - "${username} vyhodil a zabanoval ${targetName}"; - - static m32(localizedTimeShort) => "Naposledy aktivní: ${localizedTimeShort}"; - - static m33(count) => "Načíst dalších ${count} účastníků"; - - static m34(homeserver) => "Přihlášení k ${homeserver}"; - - static m35(number) => "${number} vybráno"; - - static m36(fileName) => "Přehrát (fileName}"; - - static m37(username) => "${username} odstranili událost"; - - static m38(username) => "${username} odmítli pozvání"; - - static m39(username) => "Odstraněno ${username}"; - - static m40(username) => "Viděno uživatelem ${username}"; - - static m41(username, count) => - "Viděno uživateli ${username} a ${count} dalšími"; - - static m42(username, username2) => - "Viděno uživateli ${username} a ${username2}"; - - static m43(username) => "${username} poslali soubor"; - - static m44(username) => "${username} poslali obrázek"; - - static m45(username) => "${username} poslali samolepku"; - - static m46(username) => "${username} poslali video"; - - static m47(username) => "${username} poslali zvukovou nahrávku"; - - static m48(username) => "${username} nasdíleli lokaci"; - - static m49(hours12, hours24, minutes, suffix) => "${hours24}:${minutes}"; - - static m50(username, targetName) => ""; - - static m51(type) => "Neznámá událost „${type}“"; - - static m52(unreadCount) => "${unreadCount} nepřečtených diskuzí"; - - static m53(unreadEvents) => "${unreadEvents} nepřečtených zpráv"; - - static m54(unreadEvents, unreadChats) => - "${unreadEvents} nepřečtených zpráv v ${unreadChats}"; - - static m55(username, count) => "${username} a ${count} dalších píší…"; - - static m56(username, username2) => "${username} a ${username2} píší…"; - - static m57(username) => "${username} píše…"; - - static m58(username) => "${username} opustili diskuzi"; - - static m59(username, type) => "${username} poslal událost ${type}"; - - final messages = _notInlinedMessages(_notInlinedMessages); - static _notInlinedMessages(_) => { - "(Optional) Group name": - MessageLookupByLibrary.simpleMessage("(Volitelné) Název skupiny"), - "About": MessageLookupByLibrary.simpleMessage("O aplikaci"), - "Accept": MessageLookupByLibrary.simpleMessage("Přijmout"), - "Account": MessageLookupByLibrary.simpleMessage("Účet"), - "Account informations": - MessageLookupByLibrary.simpleMessage("Informace o účtu"), - "Add a group description": - MessageLookupByLibrary.simpleMessage("Přidat popis skupiny"), - "Admin": MessageLookupByLibrary.simpleMessage("Administrátor"), - "Already have an account?": - MessageLookupByLibrary.simpleMessage("Máte již účet?"), - "Anyone can join": - MessageLookupByLibrary.simpleMessage("Kdokoliv se může připojit"), - "Archive": MessageLookupByLibrary.simpleMessage("Archiv"), - "Archived Room": - MessageLookupByLibrary.simpleMessage("Archivované místnosti"), - "Are guest users allowed to join": - MessageLookupByLibrary.simpleMessage("Mohou se připojit hosté"), - "Are you sure?": MessageLookupByLibrary.simpleMessage("Jste si jisti?"), - "Authentication": MessageLookupByLibrary.simpleMessage("Autentizace"), - "Avatar has been changed": - MessageLookupByLibrary.simpleMessage("Avatar byl změněn"), - "Ban from chat": - MessageLookupByLibrary.simpleMessage("Zabanovat z diskuze"), - "Banned": MessageLookupByLibrary.simpleMessage("Zabanován"), - "Cancel": MessageLookupByLibrary.simpleMessage("Zrušit"), - "Change the homeserver": - MessageLookupByLibrary.simpleMessage("Změnit použitý server"), - "Change the name of the group": - MessageLookupByLibrary.simpleMessage("Změnit název skupiny"), - "Change the server": - MessageLookupByLibrary.simpleMessage("Změnit server"), - "Change wallpaper": - MessageLookupByLibrary.simpleMessage("Změnit pozadí"), - "Change your style": - MessageLookupByLibrary.simpleMessage("Nastavte svůj styl"), - "Changelog": MessageLookupByLibrary.simpleMessage("Historie změn"), - "Chat": MessageLookupByLibrary.simpleMessage("Diskuze"), - "Chat details": MessageLookupByLibrary.simpleMessage("Detail diskuze"), - "Choose a strong password": - MessageLookupByLibrary.simpleMessage("Vyberte silné heslo"), - "Choose a username": - MessageLookupByLibrary.simpleMessage("Vyberte uživatelské jméno"), - "Close": MessageLookupByLibrary.simpleMessage("Zavřít"), - "Confirm": MessageLookupByLibrary.simpleMessage("Potvrdit"), - "Connect": MessageLookupByLibrary.simpleMessage("Připojit"), - "Connection attempt failed": - MessageLookupByLibrary.simpleMessage("Pokus o připojení selhal"), - "Contact has been invited to the group": - MessageLookupByLibrary.simpleMessage( - "Kontakt byl pozván do skupiny"), - "Content viewer": - MessageLookupByLibrary.simpleMessage("Prohlížeč obsahu"), - "Copied to clipboard": - MessageLookupByLibrary.simpleMessage("Zkopírováno do schránky"), - "Copy": MessageLookupByLibrary.simpleMessage("Kopírovat"), - "Could not set avatar": MessageLookupByLibrary.simpleMessage( - "Nebylo možné nastavit avatar"), - "Could not set displayname": MessageLookupByLibrary.simpleMessage( - "Nebylo možné nastavit přezdívku uživatele"), - "Create": MessageLookupByLibrary.simpleMessage("Vytvořit"), - "Create account now": - MessageLookupByLibrary.simpleMessage("Vytvořit účet teď"), - "Create new group": - MessageLookupByLibrary.simpleMessage("Založit skupinu"), - "Currently active": - MessageLookupByLibrary.simpleMessage("Momentálně aktivní"), - "Dark": MessageLookupByLibrary.simpleMessage("Tmavý"), - "Delete": MessageLookupByLibrary.simpleMessage("Smazat"), - "Delete message": MessageLookupByLibrary.simpleMessage("Smazat zprávu"), - "Deny": MessageLookupByLibrary.simpleMessage("Zakázat"), - "Device": MessageLookupByLibrary.simpleMessage("Zařízení"), - "Devices": MessageLookupByLibrary.simpleMessage("Zařízení"), - "Discard picture": - MessageLookupByLibrary.simpleMessage("Vyřadit obrázek"), - "Displayname has been changed": - MessageLookupByLibrary.simpleMessage("Přezdívka byla změněna"), - "Donate": MessageLookupByLibrary.simpleMessage("Přispějte"), - "Download file": - MessageLookupByLibrary.simpleMessage("Stáhnout soubor"), - "Edit Jitsi instance": - MessageLookupByLibrary.simpleMessage("Nastavení instance Jitsi"), - "Edit displayname": - MessageLookupByLibrary.simpleMessage("Změnit přezdívku"), - "Emote Settings": - MessageLookupByLibrary.simpleMessage("Nastavení emotikon"), - "Emote shortcode": - MessageLookupByLibrary.simpleMessage("Označení emotikony"), - "Empty chat": MessageLookupByLibrary.simpleMessage("Prázdná diskuze"), - "Encryption algorithm": - MessageLookupByLibrary.simpleMessage("Šifrovací algoritmus"), - "Encryption is not enabled": - MessageLookupByLibrary.simpleMessage("Šifrování není aktivní"), - "End to end encryption is currently in Beta! Use at your own risk!": - MessageLookupByLibrary.simpleMessage( - "Koncové šifrování je momentálně v Beta verzi! Používejte na vlastní nebezpečí!"), - "End-to-end encryption settings": MessageLookupByLibrary.simpleMessage( - "Nastavení koncového šifrování"), - "Enter a group name": - MessageLookupByLibrary.simpleMessage("Zadejte jméno skupiny"), - "Enter a username": - MessageLookupByLibrary.simpleMessage("Zadejte uživatelské jméno"), - "Enter your homeserver": - MessageLookupByLibrary.simpleMessage("Zadejte adresu serveru"), - "File name": MessageLookupByLibrary.simpleMessage("Název souboru"), - "File size": MessageLookupByLibrary.simpleMessage("Velikost souboru"), - "FluffyChat": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "Forward": MessageLookupByLibrary.simpleMessage("Přeposlat"), - "Friday": MessageLookupByLibrary.simpleMessage("Pátek"), - "From joining": MessageLookupByLibrary.simpleMessage("Od připojení"), - "From the invitation": - MessageLookupByLibrary.simpleMessage("Od pozvání"), - "Group": MessageLookupByLibrary.simpleMessage("Skupina"), - "Group description": - MessageLookupByLibrary.simpleMessage("Popis skupiny"), - "Group description has been changed": - MessageLookupByLibrary.simpleMessage("Popis skupiny byl změněn"), - "Group is public": - MessageLookupByLibrary.simpleMessage("Skupina je veřejná"), - "Guests are forbidden": - MessageLookupByLibrary.simpleMessage("Hosté jsou zakázáni"), - "Guests can join": - MessageLookupByLibrary.simpleMessage("Hosté se mohou připojit"), - "Help": MessageLookupByLibrary.simpleMessage("Pomoc"), - "Homeserver is not compatible": - MessageLookupByLibrary.simpleMessage("Server není kompatibilní"), - "How are you today?": - MessageLookupByLibrary.simpleMessage("Jak se máte?"), - "ID": MessageLookupByLibrary.simpleMessage("ID"), - "Identity": MessageLookupByLibrary.simpleMessage("Identita"), - "Invite contact": - MessageLookupByLibrary.simpleMessage("Pozvat kontakt"), - "Invited": MessageLookupByLibrary.simpleMessage("Pozváni"), - "Invited users only": - MessageLookupByLibrary.simpleMessage("Pouze pozvaní uživatelé"), - "It seems that you have no google services on your phone. That\'s a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": - MessageLookupByLibrary.simpleMessage( - "Vypadá to, že váš telefon nemá nainstalovány google services. Dobré rozhodnutí pro vaši bezpečnost! Pro příjem notifikací doporučujeme použít miocroG: https://microg.org/"), - "Kick from chat": - MessageLookupByLibrary.simpleMessage("Vyhodit z diskuze"), - "Last seen IP": - MessageLookupByLibrary.simpleMessage("Naposledy viděná IP"), - "Leave": MessageLookupByLibrary.simpleMessage("Odejít"), - "Left the chat": - MessageLookupByLibrary.simpleMessage("Odešel z diskuze"), - "License": MessageLookupByLibrary.simpleMessage("Licence"), - "Light": MessageLookupByLibrary.simpleMessage("Světlý"), - "Load more...": MessageLookupByLibrary.simpleMessage("Načíst další…"), - "Loading... Please wait": - MessageLookupByLibrary.simpleMessage("Načítání… Prosíme počkejte"), - "Login": MessageLookupByLibrary.simpleMessage("Přihlášení"), - "Logout": MessageLookupByLibrary.simpleMessage("Odhlásit"), - "Make a moderator": - MessageLookupByLibrary.simpleMessage("Učiň moderátorem"), - "Make an admin": MessageLookupByLibrary.simpleMessage("Učiň adminem"), - "Make sure the identifier is valid": - MessageLookupByLibrary.simpleMessage( - "Ujistěte se, že je identifikátor validní"), - "Message will be removed for all participants": - MessageLookupByLibrary.simpleMessage( - "Zpráva bude odstraněna pro všechny účastníky"), - "Moderator": MessageLookupByLibrary.simpleMessage("Moderátor"), - "Monday": MessageLookupByLibrary.simpleMessage("Pondělí"), - "Mute chat": MessageLookupByLibrary.simpleMessage("Ztišit diskuzi"), - "New message in FluffyChat": - MessageLookupByLibrary.simpleMessage("Nová zpráva ve FluffyChatu"), - "New private chat": - MessageLookupByLibrary.simpleMessage("Nová soukromá diskuze"), - "No emotes found. 😕": MessageLookupByLibrary.simpleMessage( - "Žádné emotikony nebyly nalezeny. 😕"), - "No permission": - MessageLookupByLibrary.simpleMessage("Chybí oprávnění"), - "No rooms found...": MessageLookupByLibrary.simpleMessage( - "Žádné místnosti nebyly nalezeny…"), - "None": MessageLookupByLibrary.simpleMessage("Nic"), - "Not supported in web": - MessageLookupByLibrary.simpleMessage("Nepodporováno na webu"), - "Oops something went wrong...": - MessageLookupByLibrary.simpleMessage("Ups! Něco se pokazilo…"), - "Open app to read messages": MessageLookupByLibrary.simpleMessage( - "Otevřete aplikaci pro přečtení zpráv"), - "Open camera": - MessageLookupByLibrary.simpleMessage("Otevřít fotoaparát"), - "Participating user devices": MessageLookupByLibrary.simpleMessage( - "Zúčastněná zařízení uživatele"), - "Password": MessageLookupByLibrary.simpleMessage("Heslo"), - "Pick image": MessageLookupByLibrary.simpleMessage("Zvolit obrázek"), - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": - MessageLookupByLibrary.simpleMessage(""), - "Please choose a username": MessageLookupByLibrary.simpleMessage( - "Prosíme zvolte si uživatelské jméno"), - "Please enter a matrix identifier": - MessageLookupByLibrary.simpleMessage( - "Prosíme zadejte identifikátor sítě matrix"), - "Please enter your password": - MessageLookupByLibrary.simpleMessage("Prosíme zadejte heslo"), - "Please enter your username": MessageLookupByLibrary.simpleMessage( - "Prosíme zadejte uživateslké jméno"), - "Public Rooms": - MessageLookupByLibrary.simpleMessage("Veřejné místnosti"), - "Recording": MessageLookupByLibrary.simpleMessage("Nahrávání"), - "Rejoin": MessageLookupByLibrary.simpleMessage("Připojit znovu"), - "Remove": MessageLookupByLibrary.simpleMessage("Odstranit"), - "Remove all other devices": MessageLookupByLibrary.simpleMessage( - "Odstranit všechna další zařízení"), - "Remove device": - MessageLookupByLibrary.simpleMessage("Odstraň zařízení"), - "Remove exile": MessageLookupByLibrary.simpleMessage(""), - "Remove message": - MessageLookupByLibrary.simpleMessage("Odstranit zprávu"), - "Render rich message content": - MessageLookupByLibrary.simpleMessage("Zobrazit formátovaný obsah"), - "Reply": MessageLookupByLibrary.simpleMessage("Odpovědět"), - "Request permission": - MessageLookupByLibrary.simpleMessage("Vyžádat oprávnění"), - "Request to read older messages": MessageLookupByLibrary.simpleMessage( - "Vyžádat přečtení starších zpráv"), - "Revoke all permissions": MessageLookupByLibrary.simpleMessage( - "Vezmi zpět všechna oprávnění"), - "Saturday": MessageLookupByLibrary.simpleMessage("Sobota"), - "Search for a chat": - MessageLookupByLibrary.simpleMessage("Hledej diskuzi"), - "Seen a long time ago": MessageLookupByLibrary.simpleMessage(""), - "Send": MessageLookupByLibrary.simpleMessage("Odeslat"), - "Send a message": - MessageLookupByLibrary.simpleMessage("Odeslat zprávu"), - "Send file": MessageLookupByLibrary.simpleMessage("Odeslat soubor"), - "Send image": MessageLookupByLibrary.simpleMessage("Odeslat obrázek"), - "Set a profile picture": - MessageLookupByLibrary.simpleMessage("Nastavit profilový obrázek"), - "Set group description": - MessageLookupByLibrary.simpleMessage("Nastavit popis skupiny"), - "Set invitation link": - MessageLookupByLibrary.simpleMessage("Nastavit zvací odkaz"), - "Set status": MessageLookupByLibrary.simpleMessage("Nastavit status"), - "Settings": MessageLookupByLibrary.simpleMessage("Nastavení"), - "Share": MessageLookupByLibrary.simpleMessage("Sdílet"), - "Sign up": MessageLookupByLibrary.simpleMessage("Registrovat se"), - "Source code": MessageLookupByLibrary.simpleMessage("Zdrojové kódy"), - "Start your first chat :-)": MessageLookupByLibrary.simpleMessage( - "Začněte svou první diskuzi :)"), - "Sunday": MessageLookupByLibrary.simpleMessage("Neděle"), - "System": MessageLookupByLibrary.simpleMessage("Systém"), - "Tap to show menu": - MessageLookupByLibrary.simpleMessage("Klepněte pro zobrazení menu"), - "The encryption has been corrupted": - MessageLookupByLibrary.simpleMessage("Šifrování bylo poškozeno"), - "This room has been archived.": MessageLookupByLibrary.simpleMessage( - "Tato místnost byla archivována."), - "Thursday": MessageLookupByLibrary.simpleMessage("Čtvrtek"), - "Try to send again": MessageLookupByLibrary.simpleMessage(""), - "Tuesday": MessageLookupByLibrary.simpleMessage(""), - "Unknown device": - MessageLookupByLibrary.simpleMessage("Neznámé zařízení"), - "Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage( - "Neznámý šifrovací algoritmus"), - "Unmute chat": MessageLookupByLibrary.simpleMessage("Zrušit ztišení"), - "Use Amoled compatible colors?": MessageLookupByLibrary.simpleMessage( - "Použít barvy kompatibilní s Amoled displayem?"), - "Username": MessageLookupByLibrary.simpleMessage("Uživatelské jméno"), - "Verify": MessageLookupByLibrary.simpleMessage("Ověř"), - "Video call": MessageLookupByLibrary.simpleMessage("Video hovor"), - "Visibility of the chat history": MessageLookupByLibrary.simpleMessage( - "Viditelnost historie diskuze"), - "Visible for all participants": MessageLookupByLibrary.simpleMessage( - "Viditelné pro všechny účastníky"), - "Visible for everyone": - MessageLookupByLibrary.simpleMessage("Viditelné pro všechny"), - "Voice message": MessageLookupByLibrary.simpleMessage("Hlasová zpráva"), - "Wallpaper": MessageLookupByLibrary.simpleMessage("Pozadí"), - "Wednesday": MessageLookupByLibrary.simpleMessage("Středa"), - "Welcome to the cutest instant messenger in the matrix network.": - MessageLookupByLibrary.simpleMessage( - "Vítejte v nejroztomilejší diskuzní aplikaci pro síť matrix."), - "Who is allowed to join this group": - MessageLookupByLibrary.simpleMessage( - "Kdo se může připojit do této skupiny"), - "Write a message...": - MessageLookupByLibrary.simpleMessage("Napište zprávu…"), - "Yes": MessageLookupByLibrary.simpleMessage("Ano"), - "You": MessageLookupByLibrary.simpleMessage("Ty"), - "You are invited to this chat": - MessageLookupByLibrary.simpleMessage("Jste zváni do této diskuze"), - "You are no longer participating in this chat": - MessageLookupByLibrary.simpleMessage( - "Této diskuze se nadále neúčastníte"), - "You cannot invite yourself": - MessageLookupByLibrary.simpleMessage("Nemůžete pozvat sami sebe"), - "You have been banned from this chat": - MessageLookupByLibrary.simpleMessage( - "Byli jste zabanováni z této diskuze"), - "You won\'t be able to disable the encryption anymore. Are you sure?": - MessageLookupByLibrary.simpleMessage( - "Šifrování jiš nebude možné vypnout. Jste si tím jisti?"), - "Your own username": MessageLookupByLibrary.simpleMessage( - "Vaše vlastní uživatelské jméno"), - "acceptedTheInvitation": m0, - "activatedEndToEndEncryption": m1, - "alias": MessageLookupByLibrary.simpleMessage("alias"), - "bannedUser": m2, - "byDefaultYouWillBeConnectedTo": m3, - "changedTheChatAvatar": m4, - "changedTheChatDescriptionTo": m5, - "changedTheChatNameTo": m6, - "changedTheChatPermissions": m7, - "changedTheDisplaynameTo": m8, - "changedTheGuestAccessRules": m9, - "changedTheGuestAccessRulesTo": m10, - "changedTheHistoryVisibility": m11, - "changedTheHistoryVisibilityTo": m12, - "changedTheJoinRules": m13, - "changedTheJoinRulesTo": m14, - "changedTheProfileAvatar": m15, - "changedTheRoomAliases": m16, - "changedTheRoomInvitationLink": m17, - "couldNotDecryptMessage": m18, - "countParticipants": m19, - "createdTheChat": m20, - "dateAndTimeOfDay": m21, - "dateWithYear": m22, - "dateWithoutYear": m23, - "emoteExists": - MessageLookupByLibrary.simpleMessage("Emotikona již existuje"), - "emoteInvalid": MessageLookupByLibrary.simpleMessage( - "Nesprávné označení emotikony"), - "emoteWarnNeedToPick": MessageLookupByLibrary.simpleMessage( - "Musíte zvolit označení emotikony a obrázek"), - "groupWith": m24, - "hasWithdrawnTheInvitationFor": m25, - "inviteContactToGroup": m26, - "inviteText": m27, - "invitedUser": m28, - "is typing...": MessageLookupByLibrary.simpleMessage("píše…"), - "joinedTheChat": m29, - "kicked": m30, - "kickedAndBanned": m31, - "lastActiveAgo": m32, - "loadCountMoreParticipants": m33, - "logInTo": m34, - "numberSelected": m35, - "ok": MessageLookupByLibrary.simpleMessage("ok"), - "play": m36, - "redactedAnEvent": m37, - "rejectedTheInvitation": m38, - "removedBy": m39, - "seenByUser": m40, - "seenByUserAndCountOthers": m41, - "seenByUserAndUser": m42, - "sentAFile": m43, - "sentAPicture": m44, - "sentASticker": m45, - "sentAVideo": m46, - "sentAnAudio": m47, - "sharedTheLocation": m48, - "timeOfDay": m49, - "title": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "unbannedUser": m50, - "unknownEvent": m51, - "unreadChats": m52, - "unreadMessages": m53, - "unreadMessagesInChats": m54, - "userAndOthersAreTyping": m55, - "userAndUserAreTyping": m56, - "userIsTyping": m57, - "userLeftTheChat": m58, - "userSentUnknownEvent": m59 - }; -} diff --git a/lib/l10n/messages_de.dart b/lib/l10n/messages_de.dart deleted file mode 100644 index af1406d..0000000 --- a/lib/l10n/messages_de.dart +++ /dev/null @@ -1,610 +0,0 @@ -// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart -// This is a library that provides messages for a de locale. All the -// messages from the main program should be duplicated here with the same -// function name. - -// Ignore issues from commonly used lints in this file. -// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new -// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering -// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases -// ignore_for_file:unused_import, file_names - -import 'package:intl/intl.dart'; -import 'package:intl/message_lookup_by_library.dart'; - -final messages = new MessageLookup(); - -typedef String MessageIfAbsent(String messageStr, List args); - -class MessageLookup extends MessageLookupByLibrary { - String get localeName => 'de'; - - static m0(username) => "${username} hat die Einladung akzeptiert"; - - static m1(username) => - "${username} hat Ende-zu-Ende Verschlüsselung aktiviert"; - - static m60(username) => "Diese Bestätigungsanfrage von ${username} annehmen?"; - - static m2(username, targetName) => "${username} hat ${targetName} verbannt"; - - static m3(homeserver) => "Standardmäßig wirst Du mit ${homeserver} verbunden"; - - static m4(username) => "${username} hat den Chat-Avatar geändert"; - - static m5(username, description) => - "${username} hat die Beschreibung vom Chat geändert zu: \'${description}\'"; - - static m6(username, chatname) => - "${username} hat den Chat-Namen geändert zu: \'${chatname}\'"; - - static m7(username) => "${username} hat die Berechtigungen vom Chat geändert"; - - static m8(username, displayname) => - "${username} hat den Nicknamen geändert zu: ${displayname}"; - - static m9(username) => "${username} hat Gast-Zugangsregeln geändert"; - - static m10(username, rules) => - "${username} hat Gast-Zugangsregeln geändert zu: ${rules}"; - - static m11(username) => - "${username} hat die Sichtbarkeit des Chat-Verlaufs geändert"; - - static m12(username, rules) => - "${username} hat die Sichtbarkeit des Chat-Verlaufs geändert zu: ${rules}"; - - static m13(username) => "${username} hat die Zugangsregeln geändert"; - - static m14(username, joinRules) => - "${username} hat die Zugangsregeln geändert zu: ${joinRules}"; - - static m15(username) => "${username} hat das Profilbild geändert"; - - static m16(username) => "${username} hat die Raum-Aliase geändert"; - - static m17(username) => "${username} hat den Einladungslink geändert"; - - static m18(error) => "Nachricht konnte nicht entschlüsselt werden: ${error}"; - - static m19(count) => "${count} Teilnehmer*innen"; - - static m20(username) => "${username} hat den Chat erstellt"; - - static m21(date, timeOfDay) => "${date}, ${timeOfDay}"; - - static m22(year, month, day) => "${day}. ${month}. ${year}"; - - static m23(month, day) => "${day}. ${month}"; - - static m24(displayname) => "Gruppe mit ${displayname}"; - - static m25(username, targetName) => - "${username} hat die Einladung für ${targetName} zurückgezogen"; - - static m26(groupName) => "Kontakt in die Gruppe ${groupName} einladen"; - - static m27(username, link) => - "${username} hat Dich zu FluffyChat eingeladen. \n1. Installiere FluffyChat: http://fluffy.chat \n2. Melde Dich in der App an \n3. Öffne den Einladungslink: ${link}"; - - static m28(username, targetName) => - "${username} hat ${targetName} eingeladen"; - - static m29(username) => "${username} ist dem Chat beigetreten"; - - static m30(username, targetName) => - "${username} hat ${targetName} hinausgeworfen"; - - static m31(username, targetName) => - "${username} hat ${targetName} hinausgeworfen und verbannt"; - - static m32(localizedTimeShort) => "Zuletzt aktiv: ${localizedTimeShort}"; - - static m33(count) => "${count} weitere Teilnehmer*innen laden"; - - static m34(homeserver) => "Bei ${homeserver} anmelden"; - - static m35(number) => "${number} ausgewählt"; - - static m36(fileName) => "${fileName} abspielen"; - - static m37(username) => "${username} hat ein Event enternt"; - - static m38(username) => "${username} hat die Einladung abgelehnt"; - - static m39(username) => "Entfernt von ${username}"; - - static m40(username) => "Gelesen von ${username}"; - - static m41(username, count) => "Gelesen von ${username} und ${count} anderen"; - - static m42(username, username2) => "Gelesen von ${username} und ${username2}"; - - static m43(username) => "${username} hat eine Datei gesendet"; - - static m44(username) => "${username} hat ein Bild gesendet"; - - static m45(username) => "${username} hat einen Sticker gesendet"; - - static m46(username) => "${username} hat ein Video gesendet"; - - static m47(username) => "${username} hat eine Audio-Datei gesendet"; - - static m48(username) => "${username} hat den Standort geteilt"; - - static m49(hours12, hours24, minutes, suffix) => "${hours24}:${minutes}"; - - static m50(username, targetName) => - "${username} hat die Verbannung von ${targetName} aufgehoben"; - - static m51(type) => "Unbekanntes Ereignis \'${type}\'"; - - static m52(unreadCount) => "${unreadCount} ungelesene Unterhaltungen"; - - static m53(unreadEvents) => "${unreadEvents} ungelesene Nachrichten"; - - static m54(unreadEvents, unreadChats) => - "${unreadEvents} ungelesene Nachrichten in ${unreadChats} Chats"; - - static m55(username, count) => - "${username} und ${count} andere schreiben ..."; - - static m56(username, username2) => - "${username} und ${username2} schreiben ..."; - - static m57(username) => "${username} schreibt ..."; - - static m58(username) => "${username} hat den Chat verlassen"; - - static m59(username, type) => "${username} hat ${type} Event gesendet"; - - final messages = _notInlinedMessages(_notInlinedMessages); - static _notInlinedMessages(_) => { - "(Optional) Group name": MessageLookupByLibrary.simpleMessage( - "(Optional) Name für die Gruppe"), - "About": MessageLookupByLibrary.simpleMessage("Über"), - "Accept": MessageLookupByLibrary.simpleMessage("Annehmen"), - "Account": MessageLookupByLibrary.simpleMessage("Konto"), - "Account informations": - MessageLookupByLibrary.simpleMessage("Kontoinformationen"), - "Add a group description": MessageLookupByLibrary.simpleMessage( - "Eine Beschreibung für die Gruppe hinzufügen"), - "Admin": MessageLookupByLibrary.simpleMessage("Admin"), - "Already have an account?": MessageLookupByLibrary.simpleMessage( - "Hast du schon einen Account?"), - "Anyone can join": - MessageLookupByLibrary.simpleMessage("Jeder darf beitreten"), - "Archive": MessageLookupByLibrary.simpleMessage("Archiv"), - "Archived Room": - MessageLookupByLibrary.simpleMessage("Archivierter Raum"), - "Are guest users allowed to join": MessageLookupByLibrary.simpleMessage( - "Dürfen Gast-Benutzer beitreten"), - "Are you sure?": - MessageLookupByLibrary.simpleMessage("Bist Du sicher?"), - "Authentication": - MessageLookupByLibrary.simpleMessage("Authentifizierung"), - "Avatar has been changed": - MessageLookupByLibrary.simpleMessage("Avatar wurde geändert"), - "Ban from chat": - MessageLookupByLibrary.simpleMessage("Aus dem Chat verbannen"), - "Banned": MessageLookupByLibrary.simpleMessage("Verbannt"), - "Block Device": MessageLookupByLibrary.simpleMessage("Blockiere Gerät"), - "Cancel": MessageLookupByLibrary.simpleMessage("Abbrechen"), - "Change the homeserver": MessageLookupByLibrary.simpleMessage( - "Anderen Homeserver verwenden"), - "Change the name of the group": - MessageLookupByLibrary.simpleMessage("Gruppenname ändern"), - "Change the server": - MessageLookupByLibrary.simpleMessage("Ändere den Server"), - "Change wallpaper": - MessageLookupByLibrary.simpleMessage("Hintergrund ändern"), - "Change your style": - MessageLookupByLibrary.simpleMessage("Ändere Deinen Style"), - "Changelog": - MessageLookupByLibrary.simpleMessage("Protokoll der Änderungen"), - "Chat": MessageLookupByLibrary.simpleMessage("Chat"), - "Chat details": MessageLookupByLibrary.simpleMessage("Gruppeninfo"), - "Choose a strong password": - MessageLookupByLibrary.simpleMessage("Wähle ein sicheres Passwort"), - "Choose a username": - MessageLookupByLibrary.simpleMessage("Wähle einen Benutzernamen"), - "Close": MessageLookupByLibrary.simpleMessage("Schließen"), - "Confirm": MessageLookupByLibrary.simpleMessage("Bestätigen"), - "Connect": MessageLookupByLibrary.simpleMessage("Verbinden"), - "Connection attempt failed": MessageLookupByLibrary.simpleMessage( - "Verbindungsversuch fehlgeschlagen"), - "Contact has been invited to the group": - MessageLookupByLibrary.simpleMessage( - "Kontakt wurde in die Gruppe eingeladen"), - "Content viewer": - MessageLookupByLibrary.simpleMessage("Content Viewer"), - "Copied to clipboard": MessageLookupByLibrary.simpleMessage( - "Wurde in die Zwischenablage kopiert"), - "Copy": MessageLookupByLibrary.simpleMessage("Kopieren"), - "Could not set avatar": MessageLookupByLibrary.simpleMessage( - "Profilbild konnte nicht gesetzt werden"), - "Could not set displayname": MessageLookupByLibrary.simpleMessage( - "Anzeigename konnte nicht gesetzt werden"), - "Create": MessageLookupByLibrary.simpleMessage("Erstellen"), - "Create account now": - MessageLookupByLibrary.simpleMessage("Account jetzt erstellen"), - "Create new group": MessageLookupByLibrary.simpleMessage("Neue Gruppe"), - "Currently active": - MessageLookupByLibrary.simpleMessage("Jetzt gerade online"), - "Dark": MessageLookupByLibrary.simpleMessage("Dunkel"), - "Delete": MessageLookupByLibrary.simpleMessage("Löschen"), - "Delete message": - MessageLookupByLibrary.simpleMessage("Nachricht löschen"), - "Deny": MessageLookupByLibrary.simpleMessage("Ablehnen"), - "Device": MessageLookupByLibrary.simpleMessage("Gerät"), - "Devices": MessageLookupByLibrary.simpleMessage("Geräte"), - "Discard picture": - MessageLookupByLibrary.simpleMessage("Bild verwerfen"), - "Displayname has been changed": - MessageLookupByLibrary.simpleMessage("Anzeigename wurde geändert"), - "Donate": MessageLookupByLibrary.simpleMessage("Spenden"), - "Download file": - MessageLookupByLibrary.simpleMessage("Datei herunterladen"), - "Edit Jitsi instance": - MessageLookupByLibrary.simpleMessage("Jitsi Instanz ändern"), - "Edit displayname": - MessageLookupByLibrary.simpleMessage("Anzeigename ändern"), - "Emote Settings": - MessageLookupByLibrary.simpleMessage("Emote Einstellungen"), - "Emote shortcode": MessageLookupByLibrary.simpleMessage("Emote kürzel"), - "Empty chat": MessageLookupByLibrary.simpleMessage("Leerer Chat"), - "Encryption": MessageLookupByLibrary.simpleMessage("Verschlüsselung"), - "Encryption algorithm": - MessageLookupByLibrary.simpleMessage("Verschlüsselungsalgorithmus"), - "Encryption is not enabled": MessageLookupByLibrary.simpleMessage( - "Verschlüsselung ist nicht aktiviert"), - "End to end encryption is currently in Beta! Use at your own risk!": - MessageLookupByLibrary.simpleMessage( - "Ende-zu-Ende-Verschlüsselung ist im Beta-Status. Benutzung auf eigene Gefahr!"), - "End-to-end encryption settings": MessageLookupByLibrary.simpleMessage( - "Ende-zu-Ende-Verschlüsselung"), - "Enter a group name": - MessageLookupByLibrary.simpleMessage("Gib einen Gruppennamen ein"), - "Enter a username": - MessageLookupByLibrary.simpleMessage("Gib einen Benutzernamen ein"), - "Enter your homeserver": - MessageLookupByLibrary.simpleMessage("Gib Deinen Homeserver ein"), - "File name": MessageLookupByLibrary.simpleMessage("Dateiname"), - "File size": MessageLookupByLibrary.simpleMessage("Dateigröße"), - "FluffyChat": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "Forward": MessageLookupByLibrary.simpleMessage("Weiterleiten"), - "Friday": MessageLookupByLibrary.simpleMessage("Freitag"), - "From joining": MessageLookupByLibrary.simpleMessage("Ab dem Beitritt"), - "From the invitation": - MessageLookupByLibrary.simpleMessage("Ab der Einladung"), - "Group": MessageLookupByLibrary.simpleMessage("Gruppe"), - "Group description": - MessageLookupByLibrary.simpleMessage("Gruppenbeschreibung"), - "Group description has been changed": - MessageLookupByLibrary.simpleMessage( - "Gruppenbeschreibung wurde geändert"), - "Group is public": - MessageLookupByLibrary.simpleMessage("Öffentliche Gruppe"), - "Guests are forbidden": - MessageLookupByLibrary.simpleMessage("Gäste sind verboten"), - "Guests can join": - MessageLookupByLibrary.simpleMessage("Gäste dürfen beitreten"), - "Help": MessageLookupByLibrary.simpleMessage("Hilfe"), - "Homeserver is not compatible": MessageLookupByLibrary.simpleMessage( - "Homeserver ist nicht kompatibel"), - "How are you today?": - MessageLookupByLibrary.simpleMessage("Wie geht es dir heute?"), - "ID": MessageLookupByLibrary.simpleMessage("ID"), - "Identity": MessageLookupByLibrary.simpleMessage("Identität"), - "Invite contact": - MessageLookupByLibrary.simpleMessage("Kontakt einladen"), - "Invited": MessageLookupByLibrary.simpleMessage("Eingeladen"), - "Invited users only": - MessageLookupByLibrary.simpleMessage("Nur eingeladene Benutzer"), - "It seems that you have no google services on your phone. That\'s a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": - MessageLookupByLibrary.simpleMessage( - "Es sieht so aus als hättest du keine Google Dienste auf deinem Gerät. Das ist eine gute Entscheidung für deine Privatsphäre. Um Push Benachrichtigungen in FluffyChat zu erhalten, empfehlen wir die Verwendung von microG: https://microg.org/"), - "Kick from chat": - MessageLookupByLibrary.simpleMessage("Aus dem Chat hinauswerfen"), - "Last seen IP": - MessageLookupByLibrary.simpleMessage("Zuletzt bekannte IP"), - "Leave": MessageLookupByLibrary.simpleMessage("Verlassen"), - "Left the chat": - MessageLookupByLibrary.simpleMessage("Hat den Chat verlassen"), - "License": MessageLookupByLibrary.simpleMessage("Lizenz"), - "Light": MessageLookupByLibrary.simpleMessage("Hell"), - "Load more...": MessageLookupByLibrary.simpleMessage("Lade mehr ..."), - "Loading... Please wait": - MessageLookupByLibrary.simpleMessage("Lade ... Bitte warten"), - "Login": MessageLookupByLibrary.simpleMessage("Login"), - "Logout": MessageLookupByLibrary.simpleMessage("Abmelden"), - "Make a moderator": - MessageLookupByLibrary.simpleMessage("Zum Moderator ernennen"), - "Make an admin": - MessageLookupByLibrary.simpleMessage("Zum Admin ernennen"), - "Make sure the identifier is valid": - MessageLookupByLibrary.simpleMessage( - "Gib bitte einen richtigen Benutzernamen ein"), - "Message will be removed for all participants": - MessageLookupByLibrary.simpleMessage( - "Nachricht wird für alle Teilnehmer*innen entfernt"), - "Moderator": MessageLookupByLibrary.simpleMessage("Moderator"), - "Monday": MessageLookupByLibrary.simpleMessage("Montag"), - "Mute chat": MessageLookupByLibrary.simpleMessage("Stummschalten"), - "New message in FluffyChat": MessageLookupByLibrary.simpleMessage( - "Neue Nachricht in FluffyChat"), - "New private chat": - MessageLookupByLibrary.simpleMessage("Neuer privater Chat"), - "No emotes found. 😕": - MessageLookupByLibrary.simpleMessage("Keine Emotes gefunden. 😕"), - "No permission": - MessageLookupByLibrary.simpleMessage("Keine Berechtigung"), - "No rooms found...": - MessageLookupByLibrary.simpleMessage("Keine Räume gefunden ..."), - "None": MessageLookupByLibrary.simpleMessage("Keiner"), - "Not supported in web": MessageLookupByLibrary.simpleMessage( - "Wird in der Web-Version nicht unterstützt"), - "Oops something went wrong...": MessageLookupByLibrary.simpleMessage( - "Hoppla! Da ist etwas schief gelaufen ..."), - "Open app to read messages": MessageLookupByLibrary.simpleMessage( - "Öffne app, um Nachrichten zu lesen"), - "Open camera": MessageLookupByLibrary.simpleMessage("Kamera öffnen"), - "Participating user devices": - MessageLookupByLibrary.simpleMessage("Teilnehmende Geräte"), - "Password": MessageLookupByLibrary.simpleMessage("Passwort"), - "Pick image": MessageLookupByLibrary.simpleMessage("Wähle Bild"), - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": - MessageLookupByLibrary.simpleMessage( - "Bitte beachte, dass du Pantalaimon brauchst, um Ende-zu-Ende-Verschlüsselung benutzen zu können."), - "Please choose a username": MessageLookupByLibrary.simpleMessage( - "Bitte wähle einen Benutzernamen"), - "Please enter a matrix identifier": - MessageLookupByLibrary.simpleMessage( - "Bitte eine Matrix ID eingeben"), - "Please enter your password": MessageLookupByLibrary.simpleMessage( - "Bitte dein Passwort eingeben"), - "Please enter your username": MessageLookupByLibrary.simpleMessage( - "Bitte deinen Benutzernamen eingeben"), - "Public Rooms": - MessageLookupByLibrary.simpleMessage("Öffentliche Räume"), - "Recording": MessageLookupByLibrary.simpleMessage("Aufnahme"), - "Reject": MessageLookupByLibrary.simpleMessage("Ablehnen"), - "Rejoin": MessageLookupByLibrary.simpleMessage("Wieder beitreten"), - "Remove": MessageLookupByLibrary.simpleMessage("Entfernen"), - "Remove all other devices": MessageLookupByLibrary.simpleMessage( - "Alle anderen Geräte entfernen"), - "Remove device": - MessageLookupByLibrary.simpleMessage("Gerät entfernen"), - "Remove exile": - MessageLookupByLibrary.simpleMessage("Verbannung aufheben"), - "Remove message": - MessageLookupByLibrary.simpleMessage("Nachricht entfernen"), - "Render rich message content": MessageLookupByLibrary.simpleMessage( - "Zeige Nachrichtenformatierungen an"), - "Reply": MessageLookupByLibrary.simpleMessage("Antworten"), - "Request permission": - MessageLookupByLibrary.simpleMessage("Berechtigung anfragen"), - "Request to read older messages": MessageLookupByLibrary.simpleMessage( - "Anfrage um ältere Nachrichten zu lesen"), - "Revoke all permissions": MessageLookupByLibrary.simpleMessage( - "Alle Berechtigungen zurücknehmen"), - "Room has been upgraded": - MessageLookupByLibrary.simpleMessage("Der Raum wurde ge-upgraded"), - "Saturday": MessageLookupByLibrary.simpleMessage("Samstag"), - "Search for a chat": - MessageLookupByLibrary.simpleMessage("Chat suchen"), - "Seen a long time ago": MessageLookupByLibrary.simpleMessage( - "Vor sehr langer Zeit gesehen"), - "Send": MessageLookupByLibrary.simpleMessage("Senden"), - "Send a message": - MessageLookupByLibrary.simpleMessage("Nachricht schreiben"), - "Send file": MessageLookupByLibrary.simpleMessage("Datei senden"), - "Send image": MessageLookupByLibrary.simpleMessage("Bild senden"), - "Set a profile picture": - MessageLookupByLibrary.simpleMessage("Ein Profilbild festlegen"), - "Set group description": MessageLookupByLibrary.simpleMessage( - "Gruppenbeschreibung festlegen"), - "Set invitation link": - MessageLookupByLibrary.simpleMessage("Einladungslink festlegen"), - "Set status": MessageLookupByLibrary.simpleMessage("Status ändern"), - "Settings": MessageLookupByLibrary.simpleMessage("Einstellungen"), - "Share": MessageLookupByLibrary.simpleMessage("Teilen"), - "Sign up": MessageLookupByLibrary.simpleMessage("Registrieren"), - "Skip": MessageLookupByLibrary.simpleMessage("Überspringe"), - "Source code": MessageLookupByLibrary.simpleMessage("Quellcode"), - "Start your first chat :-)": MessageLookupByLibrary.simpleMessage( - "Starte deinen ersten Chat :-)"), - "Submit": MessageLookupByLibrary.simpleMessage("Absenden"), - "Sunday": MessageLookupByLibrary.simpleMessage("Sonntag"), - "System": MessageLookupByLibrary.simpleMessage("System"), - "Tap to show menu": MessageLookupByLibrary.simpleMessage( - "Tippen, um das Menü anzuzeigen"), - "The encryption has been corrupted": - MessageLookupByLibrary.simpleMessage( - "Die Verschlüsselung wurde korrumpiert"), - "They Don\'t Match": - MessageLookupByLibrary.simpleMessage("Stimmen nicht überein"), - "They Match": MessageLookupByLibrary.simpleMessage("Stimmen überein"), - "This room has been archived.": MessageLookupByLibrary.simpleMessage( - "Dieser Raum wurde archiviert."), - "Thursday": MessageLookupByLibrary.simpleMessage("Donnerstag"), - "Try to send again": - MessageLookupByLibrary.simpleMessage("Nochmal versuchen zu senden"), - "Tuesday": MessageLookupByLibrary.simpleMessage("Dienstag"), - "Unblock Device": - MessageLookupByLibrary.simpleMessage("Geräteblockierung aufheben"), - "Unknown device": - MessageLookupByLibrary.simpleMessage("Unbekanntes Gerät"), - "Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage( - "Unbekannter Verschlüsselungsalgorithmus"), - "Unmute chat": MessageLookupByLibrary.simpleMessage("Stumm aus"), - "Use Amoled compatible colors?": MessageLookupByLibrary.simpleMessage( - "Amoled optimierte Farben verwenden?"), - "Username": MessageLookupByLibrary.simpleMessage("Benutzername"), - "Verify": MessageLookupByLibrary.simpleMessage("Bestätigen"), - "Verify User": - MessageLookupByLibrary.simpleMessage("Verifiziere Benutzer"), - "Video call": MessageLookupByLibrary.simpleMessage("Videoanruf"), - "Visibility of the chat history": MessageLookupByLibrary.simpleMessage( - "Sichtbarkeit des Chat-Verlaufs"), - "Visible for all participants": MessageLookupByLibrary.simpleMessage( - "Sichtbar für alle Teilnehmer*innen"), - "Visible for everyone": - MessageLookupByLibrary.simpleMessage("Für jeden sichtbar"), - "Voice message": - MessageLookupByLibrary.simpleMessage("Sprachnachricht"), - "Wallpaper": MessageLookupByLibrary.simpleMessage("Hintergrund"), - "Wednesday": MessageLookupByLibrary.simpleMessage("Mittwoch"), - "Welcome to the cutest instant messenger in the matrix network.": - MessageLookupByLibrary.simpleMessage( - "Herzlich willkommen beim knuffigsten Instant Messenger im Matrix-Netwerk."), - "Who is allowed to join this group": - MessageLookupByLibrary.simpleMessage( - "Wer darf der Gruppe beitreten"), - "Write a message...": - MessageLookupByLibrary.simpleMessage("Schreibe eine Nachricht ..."), - "Yes": MessageLookupByLibrary.simpleMessage("Ja"), - "You": MessageLookupByLibrary.simpleMessage("Du"), - "You are invited to this chat": MessageLookupByLibrary.simpleMessage( - "Du wurdest eingeladen in diesen Chat"), - "You are no longer participating in this chat": - MessageLookupByLibrary.simpleMessage( - "Du bist kein Mitglied mehr in diesem Chat"), - "You cannot invite yourself": MessageLookupByLibrary.simpleMessage( - "Du kannst dich nicht selbst einladen"), - "You have been banned from this chat": - MessageLookupByLibrary.simpleMessage( - "Du wurdest aus dem Chat verbannt"), - "You won\'t be able to disable the encryption anymore. Are you sure?": - MessageLookupByLibrary.simpleMessage( - "Du wirst die Verschlüsselung nicht mehr ausstellen können. Bist Du sicher?"), - "Your own username": - MessageLookupByLibrary.simpleMessage("Dein eigener Benutzername"), - "acceptedTheInvitation": m0, - "activatedEndToEndEncryption": m1, - "alias": MessageLookupByLibrary.simpleMessage("Alias"), - "askSSSSCache": MessageLookupByLibrary.simpleMessage( - "Bitte gib dein Secure-Store Passwort oder Wiederherstellungsschlüssel ein, um die Keys zu cachen."), - "askSSSSSign": MessageLookupByLibrary.simpleMessage( - "Bitte gebe um die andere Person signieren zu können dein Secure-Store Passwort oder Wiederherstellungsschlüssel ein."), - "askSSSSVerify": MessageLookupByLibrary.simpleMessage( - "Bitte gebe um deine Session zu verifizieren dein Secure-Store Passwort oder Wiederherstellungsschlüssel ein."), - "askVerificationRequest": m60, - "bannedUser": m2, - "byDefaultYouWillBeConnectedTo": m3, - "cachedKeys": - MessageLookupByLibrary.simpleMessage("Keys erfolgreich gecached!"), - "changedTheChatAvatar": m4, - "changedTheChatDescriptionTo": m5, - "changedTheChatNameTo": m6, - "changedTheChatPermissions": m7, - "changedTheDisplaynameTo": m8, - "changedTheGuestAccessRules": m9, - "changedTheGuestAccessRulesTo": m10, - "changedTheHistoryVisibility": m11, - "changedTheHistoryVisibilityTo": m12, - "changedTheJoinRules": m13, - "changedTheJoinRulesTo": m14, - "changedTheProfileAvatar": m15, - "changedTheRoomAliases": m16, - "changedTheRoomInvitationLink": m17, - "compareEmojiMatch": MessageLookupByLibrary.simpleMessage( - "Vergleiche und stelle sicher, dass die folgenden Emoji mit denen des anderen Gerätes übereinstimmen:"), - "compareNumbersMatch": MessageLookupByLibrary.simpleMessage( - "Vergleiche und stelle sicher, dass die folgenden Zahlen mit denen des anderen Gerätes übereinstimmen:"), - "couldNotDecryptMessage": m18, - "countParticipants": m19, - "createdTheChat": m20, - "crossSigningDisabled": MessageLookupByLibrary.simpleMessage( - "Cross-Signing ist deaktiviert"), - "crossSigningEnabled": - MessageLookupByLibrary.simpleMessage("Cross-Signing ist aktiviert"), - "dateAndTimeOfDay": m21, - "dateWithYear": m22, - "dateWithoutYear": m23, - "emoteExists": - MessageLookupByLibrary.simpleMessage("Emote existiert bereits!"), - "emoteInvalid": - MessageLookupByLibrary.simpleMessage("Ungültiges Emote-kürzel!"), - "emoteWarnNeedToPick": MessageLookupByLibrary.simpleMessage( - "Wähle ein Emote-kürzel und ein Bild!"), - "groupWith": m24, - "hasWithdrawnTheInvitationFor": m25, - "incorrectPassphraseOrKey": MessageLookupByLibrary.simpleMessage( - "Falsches Passwort oder Wiederherstellungsschlüssel"), - "inviteContactToGroup": m26, - "inviteText": m27, - "invitedUser": m28, - "is typing...": MessageLookupByLibrary.simpleMessage("schreibt..."), - "isDeviceKeyCorrect": MessageLookupByLibrary.simpleMessage( - "Ist der folgende Geräteschlüssel korrekt?"), - "joinedTheChat": m29, - "keysCached": - MessageLookupByLibrary.simpleMessage("Keys sind gecached"), - "keysMissing": MessageLookupByLibrary.simpleMessage("Keys fehlen"), - "kicked": m30, - "kickedAndBanned": m31, - "lastActiveAgo": m32, - "loadCountMoreParticipants": m33, - "logInTo": m34, - "newVerificationRequest": - MessageLookupByLibrary.simpleMessage("Neue Verifikationsanfrage!"), - "noCrossSignBootstrap": MessageLookupByLibrary.simpleMessage( - "Fluffychat unterstützt noch nicht das Einschalten von Cross-Signing. Bitte schalte es innerhalb Riot an."), - "noMegolmBootstrap": MessageLookupByLibrary.simpleMessage( - "Fluffychat unterstützt noch nicht das Einschalten vom Online Key Backup. Bitte schalte es innerhalb Riot an."), - "numberSelected": m35, - "ok": MessageLookupByLibrary.simpleMessage("ok"), - "onlineKeyBackupDisabled": MessageLookupByLibrary.simpleMessage( - "Online Key Backup ist deaktiviert"), - "onlineKeyBackupEnabled": MessageLookupByLibrary.simpleMessage( - "Online Key Backup ist aktiviert"), - "passphraseOrKey": MessageLookupByLibrary.simpleMessage( - "Passwort oder Wiederherstellungsschlüssel"), - "play": m36, - "redactedAnEvent": m37, - "rejectedTheInvitation": m38, - "removedBy": m39, - "seenByUser": m40, - "seenByUserAndCountOthers": m41, - "seenByUserAndUser": m42, - "sentAFile": m43, - "sentAPicture": m44, - "sentASticker": m45, - "sentAVideo": m46, - "sentAnAudio": m47, - "sessionVerified": - MessageLookupByLibrary.simpleMessage("Sitzung ist verifiziert"), - "sharedTheLocation": m48, - "timeOfDay": m49, - "title": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "unbannedUser": m50, - "unknownEvent": m51, - "unknownSessionVerify": MessageLookupByLibrary.simpleMessage( - "Unbekannte Sitzung, bitte verifiziere diese"), - "unreadChats": m52, - "unreadMessages": m53, - "unreadMessagesInChats": m54, - "userAndOthersAreTyping": m55, - "userAndUserAreTyping": m56, - "userIsTyping": m57, - "userLeftTheChat": m58, - "userSentUnknownEvent": m59, - "verifiedSession": MessageLookupByLibrary.simpleMessage( - "Sitzung erfolgreich verifiziert!"), - "verifyManual": - MessageLookupByLibrary.simpleMessage("Verifiziere manuell"), - "verifyStart": - MessageLookupByLibrary.simpleMessage("Starte Verifikation"), - "verifySuccess": - MessageLookupByLibrary.simpleMessage("Erfolgreich verifiziert!"), - "verifyTitle": MessageLookupByLibrary.simpleMessage( - "Verifiziere anderen Benutzer"), - "waitingPartnerAcceptRequest": MessageLookupByLibrary.simpleMessage( - "Warte darauf, dass der Partner die Verifikationsanfrage annimmt..."), - "waitingPartnerEmoji": MessageLookupByLibrary.simpleMessage( - "Warte darauf, dass der Partner die Emoji annimmt..."), - "waitingPartnerNumbers": MessageLookupByLibrary.simpleMessage( - "Warte darauf, dass der Partner die Zahlen annimmt...") - }; -} diff --git a/lib/l10n/messages_es.dart b/lib/l10n/messages_es.dart deleted file mode 100644 index d68d547..0000000 --- a/lib/l10n/messages_es.dart +++ /dev/null @@ -1,609 +0,0 @@ -// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart -// This is a library that provides messages for a es locale. All the -// messages from the main program should be duplicated here with the same -// function name. - -// Ignore issues from commonly used lints in this file. -// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new -// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering -// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases -// ignore_for_file:unused_import, file_names - -import 'package:intl/intl.dart'; -import 'package:intl/message_lookup_by_library.dart'; - -final messages = new MessageLookup(); - -typedef String MessageIfAbsent(String messageStr, List args); - -class MessageLookup extends MessageLookupByLibrary { - String get localeName => 'es'; - - static m0(username) => "${username} aceptó la invitación"; - - static m1(username) => "${username} activó el cifrado de extremo a extremo"; - - static m60(username) => - "¿Aceptar esta solicitud de verificación de ${username}?"; - - static m2(username, targetName) => "${username} vetó a ${targetName}"; - - static m3(homeserver) => - "De forma predeterminada estará conectado a ${homeserver}"; - - static m4(username) => "${username} cambió el icono del chat"; - - static m5(username, description) => - "${username} cambió la descripción del chat a: \'${description}\'"; - - static m6(username, chatname) => - "${username} cambió el nombre del chat a: \'${chatname}\'"; - - static m7(username) => "${username} cambió los permisos del chat"; - - static m8(username, displayname) => - "${username} cambió su nombre visible a: ${displayname}"; - - static m9(username) => - "${username} cambió las reglas de acceso de visitantes"; - - static m10(username, rules) => - "${username} cambió las reglas de acceso de visitantes a: ${rules}"; - - static m11(username) => "${username} cambió la visibilidad del historial"; - - static m12(username, rules) => - "${username} cambió la visibilidad del historial a: ${rules}"; - - static m13(username) => "${username} cambió las reglas de ingreso"; - - static m14(username, joinRules) => - "${username} cambió las reglas de ingreso a ${joinRules}"; - - static m15(username) => "${username} cambió su imagen de perfil"; - - static m16(username) => "${username} cambió el alias de la sala"; - - static m17(username) => "${username} cambió el enlace de invitación"; - - static m18(error) => "No se pudo descifrar el mensaje: ${error}"; - - static m19(count) => "${count} participantes"; - - static m20(username) => "${username} creó el chat"; - - static m21(date, timeOfDay) => "${date}, ${timeOfDay}"; - - static m22(year, month, day) => "${day}/${month}/${year}"; - - static m23(month, day) => "${day}/${month}"; - - static m24(displayname) => "Grupo con ${displayname}"; - - static m25(username, targetName) => - "${username} ha retirado la invitación para ${targetName}"; - - static m26(groupName) => "Invitar contacto a ${groupName}"; - - static m27(username, link) => - "${username} te invitó a FluffyChat.\n1. Instale FluffyChat: http://fluffy.chat\n2. Regístrate o inicia sesión \n3. Abra el enlace de invitación: ${link}"; - - static m28(username, targetName) => "${username} invitó a ${targetName}"; - - static m29(username) => "${username} se unió al chat"; - - static m30(username, targetName) => "${username} echó a ${targetName}"; - - static m31(username, targetName) => "${username} echó y vetó a ${targetName}"; - - static m32(localizedTimeShort) => "Última vez activo: ${localizedTimeShort}"; - - static m33(count) => "Mostrar ${count} participantes más"; - - static m34(homeserver) => "Iniciar sesión en ${homeserver}"; - - static m35(number) => "${number} seleccionado(s)"; - - static m36(fileName) => "Reproducir ${fileName}"; - - static m37(username) => "${username} redactó un evento"; - - static m38(username) => "${username} rechazó la invitación"; - - static m39(username) => "Eliminado por ${username}"; - - static m40(username) => "Visto por ${username}"; - - static m41(username, count) => "Visto por ${username} y ${count} más"; - - static m42(username, username2) => "Visto por ${username} y ${username2}"; - - static m43(username) => "${username} envió un archivo"; - - static m44(username) => "${username} envió una imagen"; - - static m45(username) => "${username} envió un sticker"; - - static m46(username) => "${username} envió un video"; - - static m47(username) => "${username} envió un audio"; - - static m48(username) => "${username} compartió la ubicación"; - - static m49(hours12, hours24, minutes, suffix) => "${hours24}:${minutes}"; - - static m50(username, targetName) => - "${username} admitió a ${targetName} nuevamente"; - - static m51(type) => "Evento desconocido \'${type}\'"; - - static m52(unreadCount) => "${unreadCount} chats no leídos"; - - static m53(unreadEvents) => "${unreadEvents} mensajes no leídos"; - - static m54(unreadEvents, unreadChats) => - "${unreadEvents} mensajes no leídos en ${unreadChats} chats"; - - static m55(username, count) => - "${username} y ${count} más están escribiendo..."; - - static m56(username, username2) => - "${username} y ${username2} están escribiendo..."; - - static m57(username) => "${username} está escribiendo..."; - - static m58(username) => "${username} abandonó el chat"; - - static m59(username, type) => "${username} envió un evento ${type}"; - - final messages = _notInlinedMessages(_notInlinedMessages); - static _notInlinedMessages(_) => { - "(Optional) Group name": - MessageLookupByLibrary.simpleMessage("(Opcional) Nombre del grupo"), - "About": MessageLookupByLibrary.simpleMessage("Acerca de"), - "Accept": MessageLookupByLibrary.simpleMessage("Aceptar"), - "Account": MessageLookupByLibrary.simpleMessage("Cuenta"), - "Account informations": - MessageLookupByLibrary.simpleMessage("Información de la cuenta"), - "Add a group description": MessageLookupByLibrary.simpleMessage( - "Agregar una descripción al grupo"), - "Admin": MessageLookupByLibrary.simpleMessage("Administrador"), - "Already have an account?": - MessageLookupByLibrary.simpleMessage("¿Ya tienes una cuenta?"), - "Anyone can join": - MessageLookupByLibrary.simpleMessage("Cualquiera puede unirse"), - "Archive": MessageLookupByLibrary.simpleMessage("Archivo"), - "Archived Room": MessageLookupByLibrary.simpleMessage("Sala archivada"), - "Are guest users allowed to join": MessageLookupByLibrary.simpleMessage( - "¿Pueden unirse los usuarios visitantes?"), - "Are you sure?": MessageLookupByLibrary.simpleMessage("¿Estás seguro?"), - "Authentication": MessageLookupByLibrary.simpleMessage("Autenticación"), - "Avatar has been changed": MessageLookupByLibrary.simpleMessage( - "La imagen de perfil ha sido cambiada"), - "Ban from chat": MessageLookupByLibrary.simpleMessage("Vetar del chat"), - "Banned": MessageLookupByLibrary.simpleMessage("Vetado"), - "Block Device": - MessageLookupByLibrary.simpleMessage("Bloquear dispositivo"), - "Cancel": MessageLookupByLibrary.simpleMessage("Cancelar"), - "Change the homeserver": - MessageLookupByLibrary.simpleMessage("Cambiar el servidor"), - "Change the name of the group": - MessageLookupByLibrary.simpleMessage("Cambiar el nombre del grupo"), - "Change the server": - MessageLookupByLibrary.simpleMessage("Cambiar el servidor"), - "Change wallpaper": MessageLookupByLibrary.simpleMessage( - "Cambiar el fondo de pantalla"), - "Change your style": - MessageLookupByLibrary.simpleMessage("Cambia tu estilo"), - "Changelog": - MessageLookupByLibrary.simpleMessage("Registro de cambios"), - "Chat": MessageLookupByLibrary.simpleMessage("Chat"), - "Chat details": - MessageLookupByLibrary.simpleMessage("Detalles del chat"), - "Choose a strong password": - MessageLookupByLibrary.simpleMessage("Elija una contraseña segura"), - "Choose a username": - MessageLookupByLibrary.simpleMessage("Elija un nombre de usuario"), - "Close": MessageLookupByLibrary.simpleMessage("Cerrar"), - "Confirm": MessageLookupByLibrary.simpleMessage("Confirmar"), - "Connect": MessageLookupByLibrary.simpleMessage("Conectar"), - "Connection attempt failed": MessageLookupByLibrary.simpleMessage( - "Falló el intento de conexión"), - "Contact has been invited to the group": - MessageLookupByLibrary.simpleMessage( - "El contacto ha sido invitado al grupo"), - "Content viewer": - MessageLookupByLibrary.simpleMessage("Visor de contenido"), - "Copied to clipboard": - MessageLookupByLibrary.simpleMessage("Copiado al portapapeles"), - "Copy": MessageLookupByLibrary.simpleMessage("Copiar"), - "Could not set avatar": MessageLookupByLibrary.simpleMessage( - "No se pudo establecer la imagen de perfil"), - "Could not set displayname": MessageLookupByLibrary.simpleMessage( - "No se pudo establecer el nombre visible"), - "Create": MessageLookupByLibrary.simpleMessage("Crear"), - "Create account now": - MessageLookupByLibrary.simpleMessage("Crear cuenta ahora"), - "Create new group": - MessageLookupByLibrary.simpleMessage("Crear grupo nuevo"), - "Currently active": - MessageLookupByLibrary.simpleMessage("Actualmente activo"), - "Dark": MessageLookupByLibrary.simpleMessage("Oscuro"), - "Delete": MessageLookupByLibrary.simpleMessage("Eliminar"), - "Delete message": - MessageLookupByLibrary.simpleMessage("Eliminar mensaje"), - "Deny": MessageLookupByLibrary.simpleMessage("Rechazar"), - "Device": MessageLookupByLibrary.simpleMessage("Dispositivo"), - "Devices": MessageLookupByLibrary.simpleMessage("Dispositivos"), - "Discard picture": - MessageLookupByLibrary.simpleMessage("Descartar imagen"), - "Displayname has been changed": MessageLookupByLibrary.simpleMessage( - "El nombre visible ha cambiado"), - "Donate": MessageLookupByLibrary.simpleMessage("Donar"), - "Download file": - MessageLookupByLibrary.simpleMessage("Descargar archivo"), - "Edit Jitsi instance": MessageLookupByLibrary.simpleMessage( - "Cambiar la instancia de Jitsi"), - "Edit displayname": - MessageLookupByLibrary.simpleMessage("Editar nombre visible"), - "Emote Settings": - MessageLookupByLibrary.simpleMessage("Configuración de emotes"), - "Emote shortcode": - MessageLookupByLibrary.simpleMessage("Atajo de emote"), - "Empty chat": MessageLookupByLibrary.simpleMessage("Chat vacío"), - "Encryption": MessageLookupByLibrary.simpleMessage("Cifrado"), - "Encryption algorithm": - MessageLookupByLibrary.simpleMessage("Algoritmo de cifrado"), - "Encryption is not enabled": MessageLookupByLibrary.simpleMessage( - "El cifrado no está habilitado"), - "End to end encryption is currently in Beta! Use at your own risk!": - MessageLookupByLibrary.simpleMessage( - "¡El cifrado de extremo a extremo está actualmente en período de prueba! ¡Úselo bajo su propio riesgo!"), - "End-to-end encryption settings": MessageLookupByLibrary.simpleMessage( - "Configuración del cifrado de extremo a extremo"), - "Enter a group name": - MessageLookupByLibrary.simpleMessage("Ingrese un nombre de grupo"), - "Enter a username": MessageLookupByLibrary.simpleMessage( - "Ingrese un nombre de usuario"), - "Enter your homeserver": - MessageLookupByLibrary.simpleMessage("Ingrese su servidor"), - "File name": MessageLookupByLibrary.simpleMessage("Nombre del archivo"), - "File size": MessageLookupByLibrary.simpleMessage("Tamaño del archivo"), - "FluffyChat": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "Forward": MessageLookupByLibrary.simpleMessage("Reenviar"), - "Friday": MessageLookupByLibrary.simpleMessage("Viernes"), - "From joining": - MessageLookupByLibrary.simpleMessage("Desde que se unió"), - "From the invitation": - MessageLookupByLibrary.simpleMessage("Desde la invitación"), - "Group": MessageLookupByLibrary.simpleMessage("Grupo"), - "Group description": - MessageLookupByLibrary.simpleMessage("Descripción del grupo"), - "Group description has been changed": - MessageLookupByLibrary.simpleMessage( - "La descripción del grupo ha sido cambiada"), - "Group is public": - MessageLookupByLibrary.simpleMessage("El grupo es público"), - "Guests are forbidden": MessageLookupByLibrary.simpleMessage( - "Los visitantes están prohibidos"), - "Guests can join": MessageLookupByLibrary.simpleMessage( - "Los visitantes pueden unirse"), - "Help": MessageLookupByLibrary.simpleMessage("Ayuda"), - "Homeserver is not compatible": MessageLookupByLibrary.simpleMessage( - "El servidor no es compatible"), - "How are you today?": - MessageLookupByLibrary.simpleMessage("¿Cómo estás hoy?"), - "ID": MessageLookupByLibrary.simpleMessage("Identificación"), - "Identity": MessageLookupByLibrary.simpleMessage("Identidad"), - "Invite contact": - MessageLookupByLibrary.simpleMessage("Invitar contacto"), - "Invited": MessageLookupByLibrary.simpleMessage("Invitado"), - "Invited users only": - MessageLookupByLibrary.simpleMessage("Sólo usuarios invitados"), - "It seems that you have no google services on your phone. That\'s a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": - MessageLookupByLibrary.simpleMessage( - "Parece que no tienes servicios de Google en tu teléfono. ¡Esa es una buena decisión para tu privacidad! Para recibir notificaciones instantáneas en FluffyChat, recomendamos usar microG: https://microg.org/"), - "Kick from chat": - MessageLookupByLibrary.simpleMessage("Echar del chat"), - "Last seen IP": - MessageLookupByLibrary.simpleMessage("Última dirección IP vista"), - "Leave": MessageLookupByLibrary.simpleMessage("Abandonar"), - "Left the chat": - MessageLookupByLibrary.simpleMessage("Abandonó el chat"), - "License": MessageLookupByLibrary.simpleMessage("Licencia"), - "Light": MessageLookupByLibrary.simpleMessage("Claro"), - "Load more...": MessageLookupByLibrary.simpleMessage("Mostrar más..."), - "Loading... Please wait": MessageLookupByLibrary.simpleMessage( - "Cargando... Por favor espere"), - "Login": MessageLookupByLibrary.simpleMessage("Iniciar sesión"), - "Logout": MessageLookupByLibrary.simpleMessage("Cerrar sesión"), - "Make a moderator": - MessageLookupByLibrary.simpleMessage("Hacer un moderador/a"), - "Make an admin": - MessageLookupByLibrary.simpleMessage("Hacer un administrador/a"), - "Make sure the identifier is valid": - MessageLookupByLibrary.simpleMessage( - "Asegúrese de que el identificador es válido"), - "Message will be removed for all participants": - MessageLookupByLibrary.simpleMessage( - "El mensaje será eliminado para todos los participantes"), - "Moderator": MessageLookupByLibrary.simpleMessage("Moderador"), - "Monday": MessageLookupByLibrary.simpleMessage("Lunes"), - "Mute chat": MessageLookupByLibrary.simpleMessage("Silenciar chat"), - "New message in FluffyChat": - MessageLookupByLibrary.simpleMessage("Nuevo mensaje en FluffyChat"), - "New private chat": - MessageLookupByLibrary.simpleMessage("Nuevo chat privado"), - "No emotes found. 😕": - MessageLookupByLibrary.simpleMessage("Ningún emote encontrado. 😕"), - "No permission": - MessageLookupByLibrary.simpleMessage("Sin autorización"), - "No rooms found...": - MessageLookupByLibrary.simpleMessage("Ninguna sala encontrada..."), - "None": MessageLookupByLibrary.simpleMessage("Ninguno"), - "Not supported in web": MessageLookupByLibrary.simpleMessage( - "No es compatible con la versión web"), - "Oops something went wrong...": - MessageLookupByLibrary.simpleMessage("Ups, algo salió mal..."), - "Open app to read messages": MessageLookupByLibrary.simpleMessage( - "Abrir la aplicación para leer los mensajes"), - "Open camera": MessageLookupByLibrary.simpleMessage("Abrir la cámara"), - "Participating user devices": MessageLookupByLibrary.simpleMessage( - "Dispositivos de usuario participantes"), - "Password": MessageLookupByLibrary.simpleMessage("Contraseña"), - "Pick image": MessageLookupByLibrary.simpleMessage("Elegir imagen"), - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": - MessageLookupByLibrary.simpleMessage( - "Tenga en cuenta que necesita Pantalaimon para utilizar el cifrado de extremo a extremo por ahora."), - "Please choose a username": MessageLookupByLibrary.simpleMessage( - "Por favor, elija un nombre de usuario"), - "Please enter a matrix identifier": - MessageLookupByLibrary.simpleMessage( - "Por favor, ingrese un identificador matrix"), - "Please enter your password": MessageLookupByLibrary.simpleMessage( - "Por favor ingrese su contraseña"), - "Please enter your username": MessageLookupByLibrary.simpleMessage( - "Por favor ingrese su nombre de usuario"), - "Public Rooms": MessageLookupByLibrary.simpleMessage("Salas públicas"), - "Recording": MessageLookupByLibrary.simpleMessage("Grabando"), - "Reject": MessageLookupByLibrary.simpleMessage("Rechazar"), - "Rejoin": MessageLookupByLibrary.simpleMessage("Volver a unirse"), - "Remove": MessageLookupByLibrary.simpleMessage("Eliminar"), - "Remove all other devices": MessageLookupByLibrary.simpleMessage( - "Eliminar todos los otros dispositivos"), - "Remove device": - MessageLookupByLibrary.simpleMessage("Eliminar dispositivo"), - "Remove exile": - MessageLookupByLibrary.simpleMessage("Eliminar la expulsión"), - "Remove message": - MessageLookupByLibrary.simpleMessage("Eliminar mensaje"), - "Render rich message content": MessageLookupByLibrary.simpleMessage( - "Mostrar el contenido con mensajes enriquecidos"), - "Reply": MessageLookupByLibrary.simpleMessage("Responder"), - "Request permission": - MessageLookupByLibrary.simpleMessage("Solicitar permiso"), - "Request to read older messages": MessageLookupByLibrary.simpleMessage( - "Solicitar poder leer mensajes antiguos"), - "Revoke all permissions": - MessageLookupByLibrary.simpleMessage("Revocar todos los permisos"), - "Room has been upgraded": MessageLookupByLibrary.simpleMessage( - "La sala ha subido de categoría"), - "Saturday": MessageLookupByLibrary.simpleMessage("Sábado"), - "Search for a chat": - MessageLookupByLibrary.simpleMessage("Buscar un chat"), - "Seen a long time ago": - MessageLookupByLibrary.simpleMessage("Visto hace mucho tiempo"), - "Send": MessageLookupByLibrary.simpleMessage("Enviar"), - "Send a message": - MessageLookupByLibrary.simpleMessage("Enviar un mensaje"), - "Send file": MessageLookupByLibrary.simpleMessage("Enviar un archivo"), - "Send image": MessageLookupByLibrary.simpleMessage("Enviar una imagen"), - "Set a profile picture": MessageLookupByLibrary.simpleMessage( - "Establecer una foto de perfil"), - "Set group description": MessageLookupByLibrary.simpleMessage( - "Establecer descripción del grupo"), - "Set invitation link": MessageLookupByLibrary.simpleMessage( - "Establecer enlace de invitación"), - "Set status": MessageLookupByLibrary.simpleMessage("Establecer estado"), - "Settings": MessageLookupByLibrary.simpleMessage("Ajustes"), - "Share": MessageLookupByLibrary.simpleMessage("Compartir"), - "Sign up": MessageLookupByLibrary.simpleMessage("Registrarse"), - "Skip": MessageLookupByLibrary.simpleMessage("Omitir"), - "Source code": MessageLookupByLibrary.simpleMessage("Código fuente"), - "Start your first chat :-)": - MessageLookupByLibrary.simpleMessage("Comience su primer chat :-)"), - "Submit": MessageLookupByLibrary.simpleMessage("Enviar"), - "Sunday": MessageLookupByLibrary.simpleMessage("Domingo"), - "System": MessageLookupByLibrary.simpleMessage("Sistema"), - "Tap to show menu": - MessageLookupByLibrary.simpleMessage("Toca para mostrar el menú"), - "The encryption has been corrupted": - MessageLookupByLibrary.simpleMessage("El cifrado se ha corrompido"), - "They Don\'t Match": - MessageLookupByLibrary.simpleMessage("No coinciden"), - "They Match": MessageLookupByLibrary.simpleMessage("Coinciden"), - "This room has been archived.": MessageLookupByLibrary.simpleMessage( - "Esta sala ha sido archivada."), - "Thursday": MessageLookupByLibrary.simpleMessage("Jueves"), - "Try to send again": - MessageLookupByLibrary.simpleMessage("Intentar enviar nuevamente"), - "Tuesday": MessageLookupByLibrary.simpleMessage("Martes"), - "Unblock Device": - MessageLookupByLibrary.simpleMessage("Desbloquear dispositivo"), - "Unknown device": - MessageLookupByLibrary.simpleMessage("Dispositivo desconocido"), - "Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage( - "Algoritmo de cifrado desconocido"), - "Unmute chat": - MessageLookupByLibrary.simpleMessage("Dejar de silenciar el chat"), - "Use Amoled compatible colors?": MessageLookupByLibrary.simpleMessage( - "¿Usar colores compatibles con AMOLED?"), - "Username": MessageLookupByLibrary.simpleMessage("Nombre de usuario"), - "Verify": MessageLookupByLibrary.simpleMessage("Verificar"), - "Verify User": - MessageLookupByLibrary.simpleMessage("Verificar usuario"), - "Video call": MessageLookupByLibrary.simpleMessage("Video llamada"), - "Visibility of the chat history": MessageLookupByLibrary.simpleMessage( - "Visibilidad del historial del chat"), - "Visible for all participants": MessageLookupByLibrary.simpleMessage( - "Visible para todos los participantes"), - "Visible for everyone": - MessageLookupByLibrary.simpleMessage("Visible para todo el mundo"), - "Voice message": MessageLookupByLibrary.simpleMessage("Mensaje de voz"), - "Wallpaper": MessageLookupByLibrary.simpleMessage("Fondo de pantalla"), - "Wednesday": MessageLookupByLibrary.simpleMessage("Miércoles"), - "Welcome to the cutest instant messenger in the matrix network.": - MessageLookupByLibrary.simpleMessage( - "Bienvenido al mensajero instantáneo más tierno de la red Matrix."), - "Who is allowed to join this group": - MessageLookupByLibrary.simpleMessage( - "Quién tiene permitido unirse al grupo"), - "Write a message...": - MessageLookupByLibrary.simpleMessage("Escribe un mensaje..."), - "Yes": MessageLookupByLibrary.simpleMessage("Sí"), - "You": MessageLookupByLibrary.simpleMessage("Tú"), - "You are invited to this chat": - MessageLookupByLibrary.simpleMessage("Estás invitado a este chat"), - "You are no longer participating in this chat": - MessageLookupByLibrary.simpleMessage( - "Ya no estás participando en este chat"), - "You cannot invite yourself": MessageLookupByLibrary.simpleMessage( - "No puedes invitarte a tí mismo"), - "You have been banned from this chat": - MessageLookupByLibrary.simpleMessage( - "Has sido vetado de este chat"), - "You won\'t be able to disable the encryption anymore. Are you sure?": - MessageLookupByLibrary.simpleMessage( - "Ya no podrá deshabilitar el cifrado. ¿Estás seguro?"), - "Your own username": - MessageLookupByLibrary.simpleMessage("Tu nombre de usuario"), - "acceptedTheInvitation": m0, - "activatedEndToEndEncryption": m1, - "alias": MessageLookupByLibrary.simpleMessage("alias"), - "askSSSSCache": MessageLookupByLibrary.simpleMessage( - "Ingrese su contraseña de almacenamiento segura (SSSS) o la clave de recuperación para almacenar en caché las claves."), - "askSSSSSign": MessageLookupByLibrary.simpleMessage( - "Para poder confirmar a la otra persona, ingrese su contraseña de almacenamiento segura o la clave de recuperación."), - "askSSSSVerify": MessageLookupByLibrary.simpleMessage( - "Por favor, ingrese su contraseña de almacenamiento seguro (SSSS) o la clave de recuperación para verificar su sesión."), - "askVerificationRequest": m60, - "bannedUser": m2, - "byDefaultYouWillBeConnectedTo": m3, - "cachedKeys": MessageLookupByLibrary.simpleMessage( - "¡Las claves se han almacenado exitosamente!"), - "changedTheChatAvatar": m4, - "changedTheChatDescriptionTo": m5, - "changedTheChatNameTo": m6, - "changedTheChatPermissions": m7, - "changedTheDisplaynameTo": m8, - "changedTheGuestAccessRules": m9, - "changedTheGuestAccessRulesTo": m10, - "changedTheHistoryVisibility": m11, - "changedTheHistoryVisibilityTo": m12, - "changedTheJoinRules": m13, - "changedTheJoinRulesTo": m14, - "changedTheProfileAvatar": m15, - "changedTheRoomAliases": m16, - "changedTheRoomInvitationLink": m17, - "compareEmojiMatch": MessageLookupByLibrary.simpleMessage( - "Compare y asegúrese de que los siguientes emoji coincidan con los del otro dispositivo:"), - "compareNumbersMatch": MessageLookupByLibrary.simpleMessage( - "Compare y asegúrese de que los siguientes números coincidan con los del otro dispositivo:"), - "couldNotDecryptMessage": m18, - "countParticipants": m19, - "createdTheChat": m20, - "crossSigningDisabled": MessageLookupByLibrary.simpleMessage( - "La confirmación cruzada está deshabilitada"), - "crossSigningEnabled": MessageLookupByLibrary.simpleMessage( - "La confirmación cruzada está habilitada"), - "dateAndTimeOfDay": m21, - "dateWithYear": m22, - "dateWithoutYear": m23, - "emoteExists": - MessageLookupByLibrary.simpleMessage("¡El emote ya existe!"), - "emoteInvalid": MessageLookupByLibrary.simpleMessage( - "¡El atajo del emote es inválido!"), - "emoteWarnNeedToPick": MessageLookupByLibrary.simpleMessage( - "¡Debes elegir un atajo de emote y una imagen!"), - "groupWith": m24, - "hasWithdrawnTheInvitationFor": m25, - "incorrectPassphraseOrKey": MessageLookupByLibrary.simpleMessage( - "Frase de contraseña o clave de recuperación incorrecta"), - "inviteContactToGroup": m26, - "inviteText": m27, - "invitedUser": m28, - "is typing...": - MessageLookupByLibrary.simpleMessage("está escribiendo..."), - "isDeviceKeyCorrect": MessageLookupByLibrary.simpleMessage( - "¿Es correcta la siguiente clave de dispositivo?"), - "joinedTheChat": m29, - "keysCached": - MessageLookupByLibrary.simpleMessage("Las claves están en caché"), - "keysMissing": - MessageLookupByLibrary.simpleMessage("Faltan las claves"), - "kicked": m30, - "kickedAndBanned": m31, - "lastActiveAgo": m32, - "loadCountMoreParticipants": m33, - "logInTo": m34, - "newVerificationRequest": MessageLookupByLibrary.simpleMessage( - "¡Nueva solicitud de verificación!"), - "noCrossSignBootstrap": MessageLookupByLibrary.simpleMessage( - "Fluffychat actualmente no admite habilitar confirmación cruzada. Por favor habilítela desde Element."), - "noMegolmBootstrap": MessageLookupByLibrary.simpleMessage( - "Fluffychat actualmente no admite habilitar la Copia de seguridad de clave en línea. Por favor habilítela desde Element."), - "numberSelected": m35, - "ok": MessageLookupByLibrary.simpleMessage("ok"), - "onlineKeyBackupDisabled": MessageLookupByLibrary.simpleMessage( - "La copia de seguridad de la clave en línea está deshabilitada"), - "onlineKeyBackupEnabled": MessageLookupByLibrary.simpleMessage( - "La copia de seguridad de la clave en línea está habilitada"), - "passphraseOrKey": MessageLookupByLibrary.simpleMessage( - "contraseña o clave de recuperación"), - "play": m36, - "redactedAnEvent": m37, - "rejectedTheInvitation": m38, - "removedBy": m39, - "seenByUser": m40, - "seenByUserAndCountOthers": m41, - "seenByUserAndUser": m42, - "sentAFile": m43, - "sentAPicture": m44, - "sentASticker": m45, - "sentAVideo": m46, - "sentAnAudio": m47, - "sessionVerified": - MessageLookupByLibrary.simpleMessage("La sesión está verificada"), - "sharedTheLocation": m48, - "timeOfDay": m49, - "title": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "unbannedUser": m50, - "unknownEvent": m51, - "unknownSessionVerify": MessageLookupByLibrary.simpleMessage( - "Sesión desconocida, por favor verifíquela"), - "unreadChats": m52, - "unreadMessages": m53, - "unreadMessagesInChats": m54, - "userAndOthersAreTyping": m55, - "userAndUserAreTyping": m56, - "userIsTyping": m57, - "userLeftTheChat": m58, - "userSentUnknownEvent": m59, - "verifiedSession": MessageLookupByLibrary.simpleMessage( - "¡Sesión verificada exitosamente!"), - "verifyManual": - MessageLookupByLibrary.simpleMessage("Verificar manualmente"), - "verifyStart": - MessageLookupByLibrary.simpleMessage("Comenzar verificación"), - "verifySuccess": MessageLookupByLibrary.simpleMessage( - "¡Has verificado exitosamente!"), - "verifyTitle": - MessageLookupByLibrary.simpleMessage("Verificando la otra cuenta"), - "waitingPartnerAcceptRequest": MessageLookupByLibrary.simpleMessage( - "Esperando a que el socio acepte la solicitud..."), - "waitingPartnerEmoji": MessageLookupByLibrary.simpleMessage( - "Esperando a que el socio acepte los emojis..."), - "waitingPartnerNumbers": MessageLookupByLibrary.simpleMessage( - "Esperando a que el socio acepte los números...") - }; -} diff --git a/lib/l10n/messages_fr.dart b/lib/l10n/messages_fr.dart deleted file mode 100644 index a051d87..0000000 --- a/lib/l10n/messages_fr.dart +++ /dev/null @@ -1,620 +0,0 @@ -// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart -// This is a library that provides messages for a fr locale. All the -// messages from the main program should be duplicated here with the same -// function name. - -// Ignore issues from commonly used lints in this file. -// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new -// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering -// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases -// ignore_for_file:unused_import, file_names - -import 'package:intl/intl.dart'; -import 'package:intl/message_lookup_by_library.dart'; - -final messages = new MessageLookup(); - -typedef String MessageIfAbsent(String messageStr, List args); - -class MessageLookup extends MessageLookupByLibrary { - String get localeName => 'fr'; - - static m0(username) => "${username} a accepté l\'invitation"; - - static m1(username) => "${username} a activé le chiffrement de bout en bout"; - - static m60(username) => - "Accepter cette demande de vérification de ${username} ?"; - - static m2(username, targetName) => "${username} a banni ${targetName}"; - - static m3(homeserver) => "Par défaut, vous serez connecté à ${homeserver}"; - - static m4(username) => "${username} a changé l\'image de la discussion"; - - static m5(username, description) => - "${username} a changé la description de la discussion en : \'${description}\'"; - - static m6(username, chatname) => - "${username} a renommé la discussion en : \'${chatname}\'"; - - static m7(username) => - "${username} a changé les permissions de la discussion"; - - static m8(username, displayname) => - "${username} s\'est renommé en : ${displayname}"; - - static m9(username) => - "${username} a changé les règles d\'accès à la discussion pour les invités"; - - static m10(username, rules) => - "${username} a changé les règles d\'accès à la discussion pour les invités en : ${rules}"; - - static m11(username) => - "${username} a changé la visibilité de l\'historique de la discussion"; - - static m12(username, rules) => - "${username} a changé la visibilité de l\'historique de la discussion en : ${rules}"; - - static m13(username) => - "${username} a changé les règles d\'accès à la discussion"; - - static m14(username, joinRules) => - "${username} a changé les règles d\'accès à la discussion en : ${joinRules}"; - - static m15(username) => "${username} a changé son image de profil"; - - static m16(username) => "${username} a changé les adresses du salon"; - - static m17(username) => "${username} a changé le lien d\'invitation"; - - static m18(error) => "Impossible de déchiffrer le message : ${error}"; - - static m19(count) => "${count} participant(s)"; - - static m20(username) => "${username} a créé la discussion"; - - static m21(date, timeOfDay) => "${date}, ${timeOfDay}"; - - static m22(year, month, day) => "${day}/${month}/${year}"; - - static m23(month, day) => "${day}/${month}"; - - static m24(displayname) => "Groupe avec ${displayname}"; - - static m25(username, targetName) => - "${username} a retiré l\'invitation de ${targetName}"; - - static m26(groupName) => "Inviter un contact dans ${groupName}"; - - static m27(username, link) => - "${username} vous a invité sur FluffyChat. \n1. Installez FluffyChat : http://fluffy.chat \n2. Inscrivez-vous ou connectez-vous \n3. Ouvrez le lien d\'invitation : ${link}"; - - static m28(username, targetName) => "${username} a invité ${targetName}"; - - static m29(username) => "${username} a rejoint la discussion"; - - static m30(username, targetName) => "${username} a expulsé ${targetName}"; - - static m31(username, targetName) => - "${username} a expulsé et banni ${targetName}"; - - static m32(localizedTimeShort) => - "Vu pour la dernière fois : ${localizedTimeShort}"; - - static m33(count) => "Charger ${count} participants de plus"; - - static m34(homeserver) => "Se connecter à ${homeserver}"; - - static m35(number) => "${number} selectionné(s)"; - - static m36(fileName) => "Lire ${fileName}"; - - static m37(username) => "${username} a supprimé un message"; - - static m38(username) => "${username} a refusé l\'invitation"; - - static m39(username) => "Supprimé par ${username}"; - - static m40(username) => "Vu par ${username}"; - - static m41(username, count) => "Vu par ${username} et ${count} autres"; - - static m42(username, username2) => "Vu par ${username} et ${username2}"; - - static m43(username) => "${username} a envoyé un fichier"; - - static m44(username) => "${username} a envoyé une image"; - - static m45(username) => "${username} a envoyé un sticker"; - - static m46(username) => "${username} a envoyé une vidéo"; - - static m47(username) => "${username} a envoyé un fichier audio"; - - static m48(username) => "${username} a partagé une localisation"; - - static m49(hours12, hours24, minutes, suffix) => "${hours24}:${minutes}"; - - static m50(username, targetName) => "${username} a dé-banni ${targetName}"; - - static m51(type) => "Événement de type inconnu \'${type}\'"; - - static m52(unreadCount) => "${unreadCount} discussions non lues"; - - static m53(unreadEvents) => "${unreadEvents} messages non lus"; - - static m54(unreadEvents, unreadChats) => - "${unreadEvents} messages non lus dans ${unreadChats} discussions"; - - static m55(username, count) => - "${username} et ${count} autres sont en train d\'écrire..."; - - static m56(username, username2) => - "${username} et ${username2} sont en train d\'écrire..."; - - static m57(username) => "${username} est en train d\'écrire..."; - - static m58(username) => "${username} a quitté la discussion"; - - static m59(username, type) => - "${username} a envoyé un événement de type ${type}"; - - final messages = _notInlinedMessages(_notInlinedMessages); - static _notInlinedMessages(_) => { - "(Optional) Group name": - MessageLookupByLibrary.simpleMessage("(Optionnel) Nom du groupe"), - "About": MessageLookupByLibrary.simpleMessage("À propos"), - "Accept": MessageLookupByLibrary.simpleMessage("Accepter"), - "Account": MessageLookupByLibrary.simpleMessage("Compte"), - "Account informations": - MessageLookupByLibrary.simpleMessage("Informations du compte"), - "Add a group description": MessageLookupByLibrary.simpleMessage( - "Ajouter une description au groupe"), - "Admin": MessageLookupByLibrary.simpleMessage("Administrateur"), - "Already have an account?": - MessageLookupByLibrary.simpleMessage("Vous avez déjà un compte ?"), - "Anyone can join": MessageLookupByLibrary.simpleMessage( - "Tout le monde peut rejoindre"), - "Archive": MessageLookupByLibrary.simpleMessage("Archiver"), - "Archived Room": MessageLookupByLibrary.simpleMessage("Salon achivé"), - "Are guest users allowed to join": MessageLookupByLibrary.simpleMessage( - "Est-ce que les invités peuvent rejoindre"), - "Are you sure?": - MessageLookupByLibrary.simpleMessage("Êtes-vous sûr ?"), - "Authentication": - MessageLookupByLibrary.simpleMessage("Authentification"), - "Avatar has been changed": MessageLookupByLibrary.simpleMessage( - "L\'image de profil a été changée"), - "Ban from chat": - MessageLookupByLibrary.simpleMessage("Bannir de la discussion"), - "Banned": MessageLookupByLibrary.simpleMessage("Banni"), - "Block Device": - MessageLookupByLibrary.simpleMessage("Bloquer l\'appareil"), - "Cancel": MessageLookupByLibrary.simpleMessage("Annuler"), - "Change the homeserver": MessageLookupByLibrary.simpleMessage( - "Changer le serveur d\'accueil"), - "Change the name of the group": - MessageLookupByLibrary.simpleMessage("Changer le nom du groupe"), - "Change the server": - MessageLookupByLibrary.simpleMessage("Changer de serveur"), - "Change wallpaper": - MessageLookupByLibrary.simpleMessage("Changer d\'image de fond"), - "Change your style": - MessageLookupByLibrary.simpleMessage("Changez votre style"), - "Changelog": - MessageLookupByLibrary.simpleMessage("Journal des changements"), - "Chat": MessageLookupByLibrary.simpleMessage("Discussion"), - "Chat details": - MessageLookupByLibrary.simpleMessage("Détails de la discussion"), - "Choose a strong password": MessageLookupByLibrary.simpleMessage( - "Choisissez un mot de passe fort"), - "Choose a username": MessageLookupByLibrary.simpleMessage( - "Choisissez un nom d\'utilisateur"), - "Close": MessageLookupByLibrary.simpleMessage("Fermer"), - "Confirm": MessageLookupByLibrary.simpleMessage("Confirmer"), - "Connect": MessageLookupByLibrary.simpleMessage("Se connecter"), - "Connection attempt failed": MessageLookupByLibrary.simpleMessage( - "Tentative de connexion echouée"), - "Contact has been invited to the group": - MessageLookupByLibrary.simpleMessage( - "Le contact a été invité au groupe"), - "Content viewer": - MessageLookupByLibrary.simpleMessage("Visionneuse de contenu"), - "Copied to clipboard": - MessageLookupByLibrary.simpleMessage("Copié dans le presse-papier"), - "Copy": MessageLookupByLibrary.simpleMessage("Copier"), - "Could not set avatar": MessageLookupByLibrary.simpleMessage( - "Impossible de changer d\'image de profil"), - "Could not set displayname": MessageLookupByLibrary.simpleMessage( - "Impossible de changer de nom"), - "Create": MessageLookupByLibrary.simpleMessage("Créer"), - "Create account now": - MessageLookupByLibrary.simpleMessage("Créer un compte"), - "Create new group": - MessageLookupByLibrary.simpleMessage("Créer un nouveau groupe"), - "Currently active": - MessageLookupByLibrary.simpleMessage("Actif en ce moment"), - "Dark": MessageLookupByLibrary.simpleMessage("Sombre"), - "Delete": MessageLookupByLibrary.simpleMessage("Supprimer"), - "Delete message": - MessageLookupByLibrary.simpleMessage("Supprimer le message"), - "Deny": MessageLookupByLibrary.simpleMessage("Refuser"), - "Device": MessageLookupByLibrary.simpleMessage("Périphérique"), - "Devices": MessageLookupByLibrary.simpleMessage("Périphériques"), - "Discard picture": - MessageLookupByLibrary.simpleMessage("Abandonner l\'image"), - "Displayname has been changed": - MessageLookupByLibrary.simpleMessage("Renommage effectué"), - "Donate": MessageLookupByLibrary.simpleMessage("Faire un don"), - "Download file": - MessageLookupByLibrary.simpleMessage("Télécharger le fichier"), - "Edit Jitsi instance": - MessageLookupByLibrary.simpleMessage("Changer l\'instance Jitsi"), - "Edit displayname": - MessageLookupByLibrary.simpleMessage("Changer de nom"), - "Emote Settings": - MessageLookupByLibrary.simpleMessage("Paramètre des émoticônes"), - "Emote shortcode": - MessageLookupByLibrary.simpleMessage("Raccourci d\'émoticône"), - "Empty chat": MessageLookupByLibrary.simpleMessage("Discussion vide"), - "Encryption": MessageLookupByLibrary.simpleMessage("Chiffrement"), - "Encryption algorithm": - MessageLookupByLibrary.simpleMessage("Algorithme de chiffrement"), - "Encryption is not enabled": MessageLookupByLibrary.simpleMessage( - "Le chiffrement n\'est pas actif"), - "End to end encryption is currently in Beta! Use at your own risk!": - MessageLookupByLibrary.simpleMessage( - "Le chiffrement de bout en bout est actuellement en béta ! Utilisez cette fonctionnalité à vos propres risques !"), - "End-to-end encryption settings": MessageLookupByLibrary.simpleMessage( - "Paramètres du chiffrement de bout en bout"), - "Enter a group name": - MessageLookupByLibrary.simpleMessage("Entrez un nom de groupe"), - "Enter a username": MessageLookupByLibrary.simpleMessage( - "Entrez un nom d\'utilisateur"), - "Enter your homeserver": MessageLookupByLibrary.simpleMessage( - "Renseignez votre serveur d\'accueil"), - "File name": MessageLookupByLibrary.simpleMessage("Nom du ficher"), - "File size": MessageLookupByLibrary.simpleMessage("Taille du fichier"), - "FluffyChat": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "Forward": MessageLookupByLibrary.simpleMessage("Transférer"), - "Friday": MessageLookupByLibrary.simpleMessage("Vendredi"), - "From joining": MessageLookupByLibrary.simpleMessage( - "À partir de l\'entrée dans le salon"), - "From the invitation": - MessageLookupByLibrary.simpleMessage("À partir de l\'invitation"), - "Group": MessageLookupByLibrary.simpleMessage("Groupe"), - "Group description": - MessageLookupByLibrary.simpleMessage("Description du groupe"), - "Group description has been changed": - MessageLookupByLibrary.simpleMessage( - "La description du groupe a été changée"), - "Group is public": - MessageLookupByLibrary.simpleMessage("Le groupe est public"), - "Guests are forbidden": MessageLookupByLibrary.simpleMessage( - "Les invités ne peuvent pas rejoindre"), - "Guests can join": MessageLookupByLibrary.simpleMessage( - "Les invités peuvent rejoindre"), - "Help": MessageLookupByLibrary.simpleMessage("Aide"), - "Homeserver is not compatible": MessageLookupByLibrary.simpleMessage( - "Le serveur d\'accueil n\'est pas compatible"), - "How are you today?": MessageLookupByLibrary.simpleMessage( - "Comment allez-vous aujourd\'hui ?"), - "ID": MessageLookupByLibrary.simpleMessage("Identifiant"), - "Identity": MessageLookupByLibrary.simpleMessage("Identité"), - "Invite contact": - MessageLookupByLibrary.simpleMessage("Inviter un contact"), - "Invited": MessageLookupByLibrary.simpleMessage("Invité"), - "Invited users only": MessageLookupByLibrary.simpleMessage( - "Uniquement les utilisateurs invités"), - "It seems that you have no google services on your phone. That\'s a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": - MessageLookupByLibrary.simpleMessage( - "On dirait que vous n\'avez pas installé les services Google sur votre téléphone. C\'est une bonne décision pour votre vie privée ! Pour recevoir les notifications de FluffyChat, nous vous recommendons d\'utiliser microG : https://microg.org/"), - "Kick from chat": - MessageLookupByLibrary.simpleMessage("Expulser de la discussion"), - "Last seen IP": MessageLookupByLibrary.simpleMessage( - "Dernière addresse IP utilisée"), - "Leave": MessageLookupByLibrary.simpleMessage("Partir"), - "Left the chat": - MessageLookupByLibrary.simpleMessage("A quitté la discussion"), - "License": MessageLookupByLibrary.simpleMessage("Licence"), - "Light": MessageLookupByLibrary.simpleMessage("Clair"), - "Load more...": MessageLookupByLibrary.simpleMessage("Charger plus..."), - "Loading... Please wait": MessageLookupByLibrary.simpleMessage( - "Chargement... Merci de patienter"), - "Login": MessageLookupByLibrary.simpleMessage("Connexion"), - "Logout": MessageLookupByLibrary.simpleMessage("Se déconnecter"), - "Make a moderator": - MessageLookupByLibrary.simpleMessage("Promouvoir comme modérateur"), - "Make an admin": MessageLookupByLibrary.simpleMessage( - "Promouvoir comme administrateur"), - "Make sure the identifier is valid": - MessageLookupByLibrary.simpleMessage( - "Vérifiez que l\'identifiant est valide"), - "Message will be removed for all participants": - MessageLookupByLibrary.simpleMessage( - "Le message sera supprimé pour tous les participants"), - "Moderator": MessageLookupByLibrary.simpleMessage("Moderateur"), - "Monday": MessageLookupByLibrary.simpleMessage("Lundi"), - "Mute chat": MessageLookupByLibrary.simpleMessage( - "Mettre la discussion en sourdine"), - "New message in FluffyChat": MessageLookupByLibrary.simpleMessage( - "Nouveau message dans FluffyChat"), - "New private chat": - MessageLookupByLibrary.simpleMessage("Nouvelle discussion privée"), - "No emotes found. 😕": MessageLookupByLibrary.simpleMessage( - "Aucune émoticône trouvée. 😕"), - "No permission": - MessageLookupByLibrary.simpleMessage("Aucune permission"), - "No rooms found...": - MessageLookupByLibrary.simpleMessage("Aucun salon trouvé..."), - "None": MessageLookupByLibrary.simpleMessage("Aucun"), - "Not supported in web": MessageLookupByLibrary.simpleMessage( - "Non supporté par l\'application web"), - "Oops something went wrong...": MessageLookupByLibrary.simpleMessage( - "Oups, quelque chose s\'est mal passé..."), - "Open app to read messages": MessageLookupByLibrary.simpleMessage( - "Ouvrez l\'application pour lire le message"), - "Open camera": - MessageLookupByLibrary.simpleMessage("Ouvrir l\'appareil photo"), - "Participating user devices": - MessageLookupByLibrary.simpleMessage("Périphériques participants"), - "Password": MessageLookupByLibrary.simpleMessage("Mot de passe"), - "Pick image": MessageLookupByLibrary.simpleMessage("Choisir une image"), - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": - MessageLookupByLibrary.simpleMessage( - "Vous devez installer Pantalaimon pour utiliser le chiffrement de bout en bout pour l\'instant."), - "Please choose a username": MessageLookupByLibrary.simpleMessage( - "Choisissez un nom d\'utilisateur"), - "Please enter a matrix identifier": - MessageLookupByLibrary.simpleMessage( - "Renseignez un identifiant Matrix"), - "Please enter your password": MessageLookupByLibrary.simpleMessage( - "Renseignez votre mot de passe"), - "Please enter your username": MessageLookupByLibrary.simpleMessage( - "Renseignez votre nom d\'utilisateur"), - "Public Rooms": MessageLookupByLibrary.simpleMessage("Salons publics"), - "Recording": MessageLookupByLibrary.simpleMessage("Enregistrement"), - "Reject": MessageLookupByLibrary.simpleMessage("Refuser"), - "Rejoin": MessageLookupByLibrary.simpleMessage("Rejoindre de nouveau"), - "Remove": MessageLookupByLibrary.simpleMessage("Supprimer"), - "Remove all other devices": MessageLookupByLibrary.simpleMessage( - "Supprimer tous les autres périphériques"), - "Remove device": - MessageLookupByLibrary.simpleMessage("Supprimer le périphérique"), - "Remove exile": - MessageLookupByLibrary.simpleMessage("Retirer le bannissement"), - "Remove message": - MessageLookupByLibrary.simpleMessage("Supprimer le message"), - "Render rich message content": MessageLookupByLibrary.simpleMessage( - "Afficher les contenus riches des messages"), - "Reply": MessageLookupByLibrary.simpleMessage("Répondre"), - "Request permission": - MessageLookupByLibrary.simpleMessage("Demander la permission"), - "Request to read older messages": MessageLookupByLibrary.simpleMessage( - "Demander à lire les anciens messages"), - "Revoke all permissions": MessageLookupByLibrary.simpleMessage( - "Révoquer toutes les permissions"), - "Room has been upgraded": - MessageLookupByLibrary.simpleMessage("Le salon a été mis à niveau"), - "Saturday": MessageLookupByLibrary.simpleMessage("Samedi"), - "Search for a chat": - MessageLookupByLibrary.simpleMessage("Rechercher une discussion"), - "Seen a long time ago": MessageLookupByLibrary.simpleMessage( - "Vu pour la dernière fois il y a longtemps"), - "Send": MessageLookupByLibrary.simpleMessage("Envoyer"), - "Send a message": - MessageLookupByLibrary.simpleMessage("Envoyer un message"), - "Send file": MessageLookupByLibrary.simpleMessage("Envoyer un fichier"), - "Send image": MessageLookupByLibrary.simpleMessage("Envoyer une image"), - "Set a profile picture": - MessageLookupByLibrary.simpleMessage("Définir une image de profil"), - "Set group description": MessageLookupByLibrary.simpleMessage( - "Définir une description du groupe"), - "Set invitation link": - MessageLookupByLibrary.simpleMessage("Créer un lien d\'invitation"), - "Set status": MessageLookupByLibrary.simpleMessage("Définir un statut"), - "Settings": MessageLookupByLibrary.simpleMessage("Paramètres"), - "Share": MessageLookupByLibrary.simpleMessage("Partager"), - "Sign up": MessageLookupByLibrary.simpleMessage("S\'inscrire"), - "Skip": MessageLookupByLibrary.simpleMessage("Ignorer"), - "Source code": MessageLookupByLibrary.simpleMessage("Code source"), - "Start your first chat :-)": MessageLookupByLibrary.simpleMessage( - "Démarrez votre première discussion :-)"), - "Submit": MessageLookupByLibrary.simpleMessage("Soumettre"), - "Sunday": MessageLookupByLibrary.simpleMessage("Dimanche"), - "System": MessageLookupByLibrary.simpleMessage("Système"), - "Tap to show menu": MessageLookupByLibrary.simpleMessage( - "Tappez pour afficher le menu"), - "The encryption has been corrupted": - MessageLookupByLibrary.simpleMessage( - "Le chiffrement a été corrompu"), - "They Don\'t Match": - MessageLookupByLibrary.simpleMessage("Elles ne correspondent pas"), - "They Match": - MessageLookupByLibrary.simpleMessage("Elles correspondent"), - "This room has been archived.": - MessageLookupByLibrary.simpleMessage("Ce salon a été archivé."), - "Thursday": MessageLookupByLibrary.simpleMessage("Jeudi"), - "Try to send again": - MessageLookupByLibrary.simpleMessage("Retenter l\'envoi"), - "Tuesday": MessageLookupByLibrary.simpleMessage("Mardi"), - "Unblock Device": - MessageLookupByLibrary.simpleMessage("Débloquer l\'appareil"), - "Unknown device": - MessageLookupByLibrary.simpleMessage("Périphérique inconnu"), - "Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage( - "Algorithme de chiffrement inconnu"), - "Unmute chat": - MessageLookupByLibrary.simpleMessage("Retirer la sourdine"), - "Use Amoled compatible colors?": MessageLookupByLibrary.simpleMessage( - "Utiliser des couleurs compatibles Amoled ?"), - "Username": MessageLookupByLibrary.simpleMessage("Nom d\'utilisateur"), - "Verify": MessageLookupByLibrary.simpleMessage("Vérifier"), - "Verify User": MessageLookupByLibrary.simpleMessage( - "Vérifier l\'utilisateur/trice"), - "Video call": MessageLookupByLibrary.simpleMessage("Appel vidéo"), - "Visibility of the chat history": MessageLookupByLibrary.simpleMessage( - "Visibilité de l\'historique de la discussion"), - "Visible for all participants": MessageLookupByLibrary.simpleMessage( - "Visible pour tous les participants"), - "Visible for everyone": - MessageLookupByLibrary.simpleMessage("Visible pour tout le monde"), - "Voice message": MessageLookupByLibrary.simpleMessage("Message vocal"), - "Wallpaper": MessageLookupByLibrary.simpleMessage("Image de fond"), - "Wednesday": MessageLookupByLibrary.simpleMessage("Mercredi"), - "Welcome to the cutest instant messenger in the matrix network.": - MessageLookupByLibrary.simpleMessage( - "Bienvenue dans la messagerie la plus mignonne du réseau Matrix."), - "Who is allowed to join this group": - MessageLookupByLibrary.simpleMessage( - "Qui est autorisé à rejoindre ce groupe"), - "Write a message...": - MessageLookupByLibrary.simpleMessage("Écrivez un message..."), - "Yes": MessageLookupByLibrary.simpleMessage("Oui"), - "You": MessageLookupByLibrary.simpleMessage("Vous"), - "You are invited to this chat": MessageLookupByLibrary.simpleMessage( - "Vous êtes invité à cette discussion"), - "You are no longer participating in this chat": - MessageLookupByLibrary.simpleMessage( - "Vous ne participez plus à cette discussion"), - "You cannot invite yourself": MessageLookupByLibrary.simpleMessage( - "Vous ne pouvez pas vous inviter vous-même"), - "You have been banned from this chat": - MessageLookupByLibrary.simpleMessage( - "Vous avez été banni de cette discussion"), - "You won\'t be able to disable the encryption anymore. Are you sure?": - MessageLookupByLibrary.simpleMessage( - "Vous ne pourrez plus désactiver le chiffrement. Êtez-vous sûr ?"), - "Your own username": MessageLookupByLibrary.simpleMessage( - "Votre propre nom d\'utilisateur"), - "acceptedTheInvitation": m0, - "activatedEndToEndEncryption": m1, - "alias": MessageLookupByLibrary.simpleMessage("adresse"), - "askSSSSCache": MessageLookupByLibrary.simpleMessage( - "Veuillez saisir votre phrase de passe stockée de manière sécurisée ou votre clé de récupération pour mettre les clés en cache."), - "askSSSSSign": MessageLookupByLibrary.simpleMessage( - "Pour pouvoir faire signer l\'autre personne, veuillez entrer votre phrase de passe stockée de manière sécurisée ou votre clé de récupération."), - "askSSSSVerify": MessageLookupByLibrary.simpleMessage( - "Veuillez saisir votre phrase de passe stockée de manière sécurisée ou votre clé de récupération pour vérifier votre session."), - "askVerificationRequest": m60, - "bannedUser": m2, - "byDefaultYouWillBeConnectedTo": m3, - "cachedKeys": MessageLookupByLibrary.simpleMessage( - "Clés mises en cache avec succès !"), - "changedTheChatAvatar": m4, - "changedTheChatDescriptionTo": m5, - "changedTheChatNameTo": m6, - "changedTheChatPermissions": m7, - "changedTheDisplaynameTo": m8, - "changedTheGuestAccessRules": m9, - "changedTheGuestAccessRulesTo": m10, - "changedTheHistoryVisibility": m11, - "changedTheHistoryVisibilityTo": m12, - "changedTheJoinRules": m13, - "changedTheJoinRulesTo": m14, - "changedTheProfileAvatar": m15, - "changedTheRoomAliases": m16, - "changedTheRoomInvitationLink": m17, - "compareEmojiMatch": MessageLookupByLibrary.simpleMessage( - "Comparez et assurez-vous que les emojis suivants correspondent à ceux de l\'autre appareil :"), - "compareNumbersMatch": MessageLookupByLibrary.simpleMessage( - "Comparez et assurez-vous que les chiffres suivants correspondent à ceux de l\'autre appareil :"), - "couldNotDecryptMessage": m18, - "countParticipants": m19, - "createdTheChat": m20, - "crossSigningDisabled": MessageLookupByLibrary.simpleMessage( - "La signature croisée est désactivée"), - "crossSigningEnabled": MessageLookupByLibrary.simpleMessage( - "La signature croisée est activée"), - "dateAndTimeOfDay": m21, - "dateWithYear": m22, - "dateWithoutYear": m23, - "emoteExists": MessageLookupByLibrary.simpleMessage( - "Cette émoticône existe déjà !"), - "emoteInvalid": MessageLookupByLibrary.simpleMessage( - "Raccourci d\'émoticône invalide !"), - "emoteWarnNeedToPick": MessageLookupByLibrary.simpleMessage( - "Vous devez sélectionner un raccourci d\'émoticône et une image !"), - "groupWith": m24, - "hasWithdrawnTheInvitationFor": m25, - "incorrectPassphraseOrKey": MessageLookupByLibrary.simpleMessage( - "Phrase de passe ou clé de récupération incorrecte"), - "inviteContactToGroup": m26, - "inviteText": m27, - "invitedUser": m28, - "is typing...": - MessageLookupByLibrary.simpleMessage("est en train d\'écrire..."), - "isDeviceKeyCorrect": MessageLookupByLibrary.simpleMessage( - "La clé de l\'appareil ci-dessous est-elle correcte ?"), - "joinedTheChat": m29, - "keysCached": MessageLookupByLibrary.simpleMessage( - "Les clés sont mises en cache"), - "keysMissing": - MessageLookupByLibrary.simpleMessage("Les clés sont manquantes"), - "kicked": m30, - "kickedAndBanned": m31, - "lastActiveAgo": m32, - "loadCountMoreParticipants": m33, - "logInTo": m34, - "newVerificationRequest": MessageLookupByLibrary.simpleMessage( - "Nouvelle demande de vérification !"), - "noCrossSignBootstrap": MessageLookupByLibrary.simpleMessage( - "Fluffychat ne permet pas actuellement d\'activer la signature croisée. Veuillez l\'activer à partir de Element."), - "noMegolmBootstrap": MessageLookupByLibrary.simpleMessage( - "Fluffychat ne prend pas actuellement en charge l\'activation de la sauvegarde des clés en ligne. Veuillez l\'activer à partir de Element."), - "numberSelected": m35, - "ok": MessageLookupByLibrary.simpleMessage("ok"), - "onlineKeyBackupDisabled": MessageLookupByLibrary.simpleMessage( - "La sauvegarde en ligne des clés est désactivée"), - "onlineKeyBackupEnabled": MessageLookupByLibrary.simpleMessage( - "La sauvegarde en ligne des clés est activée"), - "passphraseOrKey": MessageLookupByLibrary.simpleMessage( - "Phrase de passe ou clé de récupération"), - "play": m36, - "redactedAnEvent": m37, - "rejectedTheInvitation": m38, - "removedBy": m39, - "seenByUser": m40, - "seenByUserAndCountOthers": m41, - "seenByUserAndUser": m42, - "sentAFile": m43, - "sentAPicture": m44, - "sentASticker": m45, - "sentAVideo": m46, - "sentAnAudio": m47, - "sessionVerified": - MessageLookupByLibrary.simpleMessage("La session est vérifiée"), - "sharedTheLocation": m48, - "timeOfDay": m49, - "title": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "unbannedUser": m50, - "unknownEvent": m51, - "unknownSessionVerify": MessageLookupByLibrary.simpleMessage( - "Session inconnue, veuillez vérifier"), - "unreadChats": m52, - "unreadMessages": m53, - "unreadMessagesInChats": m54, - "userAndOthersAreTyping": m55, - "userAndUserAreTyping": m56, - "userIsTyping": m57, - "userLeftTheChat": m58, - "userSentUnknownEvent": m59, - "verifiedSession": MessageLookupByLibrary.simpleMessage( - "Session vérifiée avec succès !"), - "verifyManual": - MessageLookupByLibrary.simpleMessage("Vérifier manuellement"), - "verifyStart": - MessageLookupByLibrary.simpleMessage("Commencer la vérification"), - "verifySuccess": MessageLookupByLibrary.simpleMessage( - "Vous avez vérifié avec succès !"), - "verifyTitle": MessageLookupByLibrary.simpleMessage( - "Vérification de l\'autre compte"), - "waitingPartnerAcceptRequest": MessageLookupByLibrary.simpleMessage( - "En attente de la vérification de la demande par le partenaire..."), - "waitingPartnerEmoji": MessageLookupByLibrary.simpleMessage( - "En attente de l\'acceptation de l\'émoji par le partenaire..."), - "waitingPartnerNumbers": MessageLookupByLibrary.simpleMessage( - "En attente de l\'acceptation des nombres par le partenaire...") - }; -} diff --git a/lib/l10n/messages_gl.dart b/lib/l10n/messages_gl.dart deleted file mode 100644 index 4cb2c81..0000000 --- a/lib/l10n/messages_gl.dart +++ /dev/null @@ -1,606 +0,0 @@ -// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart -// This is a library that provides messages for a gl locale. All the -// messages from the main program should be duplicated here with the same -// function name. - -// Ignore issues from commonly used lints in this file. -// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new -// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering -// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases -// ignore_for_file:unused_import, file_names - -import 'package:intl/intl.dart'; -import 'package:intl/message_lookup_by_library.dart'; - -final messages = new MessageLookup(); - -typedef String MessageIfAbsent(String messageStr, List args); - -class MessageLookup extends MessageLookupByLibrary { - String get localeName => 'gl'; - - static m0(username) => "${username} aceptou o convite"; - - static m1(username) => "${username} activou o cifrado extremo-a-extremo"; - - static m60(username) => - "¿Aceptar a solicitude de verificación de ${username}?"; - - static m2(username, targetName) => "${username} vetou a ${targetName}"; - - static m3(homeserver) => "Por omisión vas conectar con ${homeserver}"; - - static m4(username) => "${username} cambiou o avatar do chat"; - - static m5(username, description) => - "${username} mudou a descrición da conversa a: \'${description}\'"; - - static m6(username, chatname) => - "${username} mudou o nome da conversa a: \'${chatname}\'"; - - static m7(username) => "${username} mudou os permisos da conversa"; - - static m8(username, displayname) => - "${username} cambiou o nome público a: ${displayname}"; - - static m9(username) => - "${username} mudou as regras de acceso para convidadas"; - - static m10(username, rules) => - "${username} mudou as regras de acceso para convidadas a: ${rules}"; - - static m11(username) => "${username} mudou a visibilidade do historial"; - - static m12(username, rules) => - "${username} mudou a visibilidade do historial a: ${rules}"; - - static m13(username) => "${username} mudou as regras de acceso"; - - static m14(username, joinRules) => - "${username} mudou as regras de acceso a: ${joinRules}"; - - static m15(username) => "${username} mudou o avatar do perfil"; - - static m16(username) => "${username} mudou os alias da sala"; - - static m17(username) => "${username} mudou a ligazón de convite"; - - static m18(error) => "Non se descifrou a mensaxe: ${error}"; - - static m19(count) => "${count} participantes"; - - static m20(username) => "${username} creou a conversa"; - - static m21(date, timeOfDay) => "${date}, ${timeOfDay}"; - - static m22(year, month, day) => "${day}-${month}-${year}"; - - static m23(month, day) => "${day}-${month}"; - - static m24(displayname) => "Grupo con ${displayname}"; - - static m25(username, targetName) => - "${username} retirou o convite para ${targetName}"; - - static m26(groupName) => "Convidar contacto a ${groupName}"; - - static m27(username, link) => - "${username} convidoute a FluffyChat.\n1. instala FluffyChat: http://fluffy.chat \n2. Rexístrate ou conéctate\n3. Abre a ligazón do convite: ${link}"; - - static m28(username, targetName) => "${username} convidou a ${targetName}"; - - static m29(username) => "${username} uníuse ó chat"; - - static m30(username, targetName) => "${username} expulsou a ${targetName}"; - - static m31(username, targetName) => - "${username} expulsou e vetou a ${targetName}"; - - static m32(localizedTimeShort) => "Última actividade: ${localizedTimeShort}"; - - static m33(count) => "Cargar ${count} participantes máis"; - - static m34(homeserver) => "Conectar con ${homeserver}"; - - static m35(number) => "${number} seleccionados"; - - static m36(fileName) => "Reproducir ${fileName}"; - - static m37(username) => "${username} publicou un evento"; - - static m38(username) => "${username} rexeitou o convite"; - - static m39(username) => "Eliminado por ${username}"; - - static m40(username) => "Visto por ${username}"; - - static m41(username, count) => "Visto por ${username} e ${count} outras"; - - static m42(username, username2) => "Visto por ${username} e ${username2}"; - - static m43(username) => "${username} enviou un ficheiro"; - - static m44(username) => "${username} enviou unha imaxe"; - - static m45(username) => "${username} enviou un adhesivo"; - - static m46(username) => "${username} enviou un vídeo"; - - static m47(username) => "${username} enviou un audio"; - - static m48(username) => "${username} compartiu a localización"; - - static m49(hours12, hours24, minutes, suffix) => - "${hours12}:${minutes} ${suffix}"; - - static m50(username, targetName) => - "${username} retirou o veto a ${targetName}"; - - static m51(type) => "Evento descoñecido \'${type}\'"; - - static m52(unreadCount) => "${unreadCount} chats non lidos"; - - static m53(unreadEvents) => "${unreadEvents} mensaxes non lidas"; - - static m54(unreadEvents, unreadChats) => - "${unreadEvents} mensaxes non lidas en ${unreadChats} conversas"; - - static m55(username, count) => - "${username} e ${count} máis están escribindo..."; - - static m56(username, username2) => - "${username} e ${username2} están escribindo..."; - - static m57(username) => "${username} está escribindo..."; - - static m58(username) => "${username} deixou a conversa"; - - static m59(username, type) => "${username} enviou un evento {type]"; - - final messages = _notInlinedMessages(_notInlinedMessages); - static _notInlinedMessages(_) => { - "(Optional) Group name": - MessageLookupByLibrary.simpleMessage("(Optativo) Nome do grupo"), - "About": MessageLookupByLibrary.simpleMessage("Acerca de"), - "Accept": MessageLookupByLibrary.simpleMessage("Aceptar"), - "Account": MessageLookupByLibrary.simpleMessage("Conta"), - "Account informations": - MessageLookupByLibrary.simpleMessage("Información da conta"), - "Add a group description": MessageLookupByLibrary.simpleMessage( - "Engade a descrición do grupo"), - "Admin": MessageLookupByLibrary.simpleMessage("Admin"), - "Already have an account?": - MessageLookupByLibrary.simpleMessage("¿xa tes unha conta?"), - "Anyone can join": - MessageLookupByLibrary.simpleMessage("Calquera pode unirse"), - "Archive": MessageLookupByLibrary.simpleMessage("Arquivo"), - "Archived Room": MessageLookupByLibrary.simpleMessage("Sala arquivada"), - "Are guest users allowed to join": MessageLookupByLibrary.simpleMessage( - "Teñen permitido as convidadas o acceso"), - "Are you sure?": MessageLookupByLibrary.simpleMessage("¿estás certo?"), - "Authentication": MessageLookupByLibrary.simpleMessage("Autenticación"), - "Avatar has been changed": - MessageLookupByLibrary.simpleMessage("O avatar cambiou"), - "Ban from chat": - MessageLookupByLibrary.simpleMessage("Expulsar da conversa"), - "Banned": MessageLookupByLibrary.simpleMessage("Vetada"), - "Block Device": - MessageLookupByLibrary.simpleMessage("Bloquear dispositivo"), - "Cancel": MessageLookupByLibrary.simpleMessage("Cancelar"), - "Change the homeserver": - MessageLookupByLibrary.simpleMessage("Mudar de servidor de inicio"), - "Change the name of the group": - MessageLookupByLibrary.simpleMessage("Mudar o nome do grupo"), - "Change the server": - MessageLookupByLibrary.simpleMessage("Mudar de servidor"), - "Change wallpaper": - MessageLookupByLibrary.simpleMessage("Mudar fondo do chat"), - "Change your style": - MessageLookupByLibrary.simpleMessage("Cambiar o estilo"), - "Changelog": - MessageLookupByLibrary.simpleMessage("Rexistro de cambios"), - "Chat": MessageLookupByLibrary.simpleMessage("Chat"), - "Chat details": - MessageLookupByLibrary.simpleMessage("Detalles do chat"), - "Choose a strong password": MessageLookupByLibrary.simpleMessage( - "Escolle un contrasinal forte"), - "Choose a username": - MessageLookupByLibrary.simpleMessage("Escolle un nome de usuaria"), - "Close": MessageLookupByLibrary.simpleMessage("Pechar"), - "Confirm": MessageLookupByLibrary.simpleMessage("Confirmar"), - "Connect": MessageLookupByLibrary.simpleMessage("Conectar"), - "Connection attempt failed": MessageLookupByLibrary.simpleMessage( - "Fallou o intento de conexión"), - "Contact has been invited to the group": - MessageLookupByLibrary.simpleMessage( - "O contacto foi convidado ó grupo"), - "Content viewer": - MessageLookupByLibrary.simpleMessage("Visor de contido"), - "Copied to clipboard": - MessageLookupByLibrary.simpleMessage("Copiado ó portapapeis"), - "Copy": MessageLookupByLibrary.simpleMessage("Copiar"), - "Could not set avatar": - MessageLookupByLibrary.simpleMessage("Non se estableceu o avatar"), - "Could not set displayname": MessageLookupByLibrary.simpleMessage( - "Non se estableceu o nome público"), - "Create": MessageLookupByLibrary.simpleMessage("Crear"), - "Create account now": - MessageLookupByLibrary.simpleMessage("Crear unha conta"), - "Create new group": - MessageLookupByLibrary.simpleMessage("Crear novo grupo"), - "Currently active": - MessageLookupByLibrary.simpleMessage("Actualmente activo"), - "Dark": MessageLookupByLibrary.simpleMessage("Escuro"), - "Delete": MessageLookupByLibrary.simpleMessage("Eliminar"), - "Delete message": - MessageLookupByLibrary.simpleMessage("Eliminar mensaxe"), - "Deny": MessageLookupByLibrary.simpleMessage("Denegar"), - "Device": MessageLookupByLibrary.simpleMessage("Dispositivo"), - "Devices": MessageLookupByLibrary.simpleMessage("Dispositivos"), - "Discard picture": - MessageLookupByLibrary.simpleMessage("Desbotar imaxe"), - "Displayname has been changed": - MessageLookupByLibrary.simpleMessage("O nome público mudou"), - "Donate": MessageLookupByLibrary.simpleMessage("Doar"), - "Download file": - MessageLookupByLibrary.simpleMessage("Descargar ficheiro"), - "Edit Jitsi instance": - MessageLookupByLibrary.simpleMessage("Editar instancia Jitsi"), - "Edit displayname": - MessageLookupByLibrary.simpleMessage("Editar nome público"), - "Emote Settings": - MessageLookupByLibrary.simpleMessage("Axustes de Emote"), - "Emote shortcode": - MessageLookupByLibrary.simpleMessage("Atallo de Emote"), - "Empty chat": MessageLookupByLibrary.simpleMessage("Chat baleiro"), - "Encryption": MessageLookupByLibrary.simpleMessage("Cifrado"), - "Encryption algorithm": - MessageLookupByLibrary.simpleMessage("Algoritmo do cifrado"), - "Encryption is not enabled": - MessageLookupByLibrary.simpleMessage("Cifrado desactivado"), - "End to end encryption is currently in Beta! Use at your own risk!": - MessageLookupByLibrary.simpleMessage( - "O cifrado extremo-a-extremo está en Beta! Úsao baixo a túa responsabilidade!"), - "End-to-end encryption settings": MessageLookupByLibrary.simpleMessage( - "Axustes do cifrado extremo-a-extremo"), - "Enter a group name": MessageLookupByLibrary.simpleMessage( - "Escribe un nome para o grupo"), - "Enter a username": - MessageLookupByLibrary.simpleMessage("Escribe un nome de usuaria"), - "Enter your homeserver": MessageLookupByLibrary.simpleMessage( - "Escribe o teu servidor de inicio"), - "File name": MessageLookupByLibrary.simpleMessage("Nome do ficheiro"), - "File size": MessageLookupByLibrary.simpleMessage("Tamaño do ficheiro"), - "FluffyChat": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "Forward": MessageLookupByLibrary.simpleMessage("Reenviar"), - "Friday": MessageLookupByLibrary.simpleMessage("Venres"), - "From joining": - MessageLookupByLibrary.simpleMessage("Desde que se una"), - "From the invitation": - MessageLookupByLibrary.simpleMessage("Desde o convite"), - "Group": MessageLookupByLibrary.simpleMessage("Grupo"), - "Group description": - MessageLookupByLibrary.simpleMessage("Descrición do grupo"), - "Group description has been changed": - MessageLookupByLibrary.simpleMessage("Mudou a descrición do grupo"), - "Group is public": - MessageLookupByLibrary.simpleMessage("O grupo é público"), - "Guests are forbidden": - MessageLookupByLibrary.simpleMessage("Non se permiten convidadas"), - "Guests can join": - MessageLookupByLibrary.simpleMessage("Permítense convidadas"), - "Help": MessageLookupByLibrary.simpleMessage("Axuda"), - "Homeserver is not compatible": MessageLookupByLibrary.simpleMessage( - "Servidor de inicio non compatible"), - "How are you today?": - MessageLookupByLibrary.simpleMessage("¿Que tal estás hoxe?"), - "ID": MessageLookupByLibrary.simpleMessage("ID"), - "Identity": MessageLookupByLibrary.simpleMessage("Identidade"), - "Invite contact": - MessageLookupByLibrary.simpleMessage("Convidar contacto"), - "Invited": MessageLookupByLibrary.simpleMessage("Convidado"), - "Invited users only": - MessageLookupByLibrary.simpleMessage("Só usuarias convidadas"), - "It seems that you have no google services on your phone. That\'s a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": - MessageLookupByLibrary.simpleMessage( - "Semella que non tes os servizos de google no teu dispositivo. Ben feito! a túa privacidade agradécecho! Para recibir notificacións push en FluffyChat recomendamos usar microG: https://microg.org/"), - "Kick from chat": - MessageLookupByLibrary.simpleMessage("Expulsar da conversa"), - "Last seen IP": MessageLookupByLibrary.simpleMessage("Última IP vista"), - "Leave": MessageLookupByLibrary.simpleMessage("Saír"), - "Left the chat": - MessageLookupByLibrary.simpleMessage("Deixar a conversa"), - "License": MessageLookupByLibrary.simpleMessage("Licenza"), - "Light": MessageLookupByLibrary.simpleMessage("Claro"), - "Load more...": MessageLookupByLibrary.simpleMessage("Cargar máis..."), - "Loading... Please wait": - MessageLookupByLibrary.simpleMessage("Cargando... Agarda"), - "Login": MessageLookupByLibrary.simpleMessage("Conexión"), - "Logout": MessageLookupByLibrary.simpleMessage("Desconectar"), - "Make a moderator": - MessageLookupByLibrary.simpleMessage("Converter en moderadora"), - "Make an admin": - MessageLookupByLibrary.simpleMessage("Converter en administradora"), - "Make sure the identifier is valid": - MessageLookupByLibrary.simpleMessage( - "Asegúrate de que o identificador é válido"), - "Message will be removed for all participants": - MessageLookupByLibrary.simpleMessage( - "A mensaxe eliminarase para todas as participantes"), - "Moderator": MessageLookupByLibrary.simpleMessage("Moderadora"), - "Monday": MessageLookupByLibrary.simpleMessage("Luns"), - "Mute chat": MessageLookupByLibrary.simpleMessage("Acalar conversa"), - "New message in FluffyChat": - MessageLookupByLibrary.simpleMessage("Nova mensaxe en FluffyChat"), - "New private chat": - MessageLookupByLibrary.simpleMessage("Nova conversa privada"), - "No emotes found. 😕": - MessageLookupByLibrary.simpleMessage("Non hai emotes. 😕"), - "No permission": MessageLookupByLibrary.simpleMessage("Sen permiso"), - "No rooms found...": - MessageLookupByLibrary.simpleMessage("Non se atoparon salas..."), - "None": MessageLookupByLibrary.simpleMessage("Ningún"), - "Not supported in web": - MessageLookupByLibrary.simpleMessage("Non soportado na web"), - "Oops something went wrong...": - MessageLookupByLibrary.simpleMessage("Ooooi, algo fallou..."), - "Open app to read messages": - MessageLookupByLibrary.simpleMessage("Abrir a app e ler mensaxes"), - "Open camera": MessageLookupByLibrary.simpleMessage("Abrir cámara"), - "Participating user devices": MessageLookupByLibrary.simpleMessage( - "Dispositivos das usuarias participantes"), - "Password": MessageLookupByLibrary.simpleMessage("Contrasinal"), - "Pick image": - MessageLookupByLibrary.simpleMessage("Escolle unha imaxe"), - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": - MessageLookupByLibrary.simpleMessage( - "Ten en conta que polo de agora precisas Pantalaimon para o cifrado extremo-a-extremo."), - "Please choose a username": - MessageLookupByLibrary.simpleMessage("Escolle un nome de usuaria"), - "Please enter a matrix identifier": - MessageLookupByLibrary.simpleMessage( - "Escribe un identificador matrix"), - "Please enter your password": - MessageLookupByLibrary.simpleMessage("Escribe o teu contrasinal"), - "Please enter your username": MessageLookupByLibrary.simpleMessage( - "Escribe o teu nome de usuaria"), - "Public Rooms": MessageLookupByLibrary.simpleMessage("Salas públicas"), - "Recording": MessageLookupByLibrary.simpleMessage("Gravando"), - "Reject": MessageLookupByLibrary.simpleMessage("Rexeitar"), - "Rejoin": MessageLookupByLibrary.simpleMessage("Volta a unirte"), - "Remove": MessageLookupByLibrary.simpleMessage("Eliminar"), - "Remove all other devices": MessageLookupByLibrary.simpleMessage( - "Quitar todos os outros dispositivos"), - "Remove device": - MessageLookupByLibrary.simpleMessage("Quitar dispositivo"), - "Remove exile": MessageLookupByLibrary.simpleMessage("Quitar o veto"), - "Remove message": - MessageLookupByLibrary.simpleMessage("Eliminar mensaxe"), - "Render rich message content": MessageLookupByLibrary.simpleMessage( - "Mostrar contido enriquecido da mensaxe"), - "Reply": MessageLookupByLibrary.simpleMessage("Responder"), - "Request permission": - MessageLookupByLibrary.simpleMessage("Solicitar permiso"), - "Request to read older messages": MessageLookupByLibrary.simpleMessage( - "Solicitar ler mensaxes antigas"), - "Revoke all permissions": - MessageLookupByLibrary.simpleMessage("Revogar tódolos permisos"), - "Room has been upgraded": - MessageLookupByLibrary.simpleMessage("A sala foi actualizada"), - "Saturday": MessageLookupByLibrary.simpleMessage("Sábado"), - "Search for a chat": - MessageLookupByLibrary.simpleMessage("Buscar un chat"), - "Seen a long time ago": - MessageLookupByLibrary.simpleMessage("Hai moito que non aparece"), - "Send": MessageLookupByLibrary.simpleMessage("Enviar"), - "Send a message": - MessageLookupByLibrary.simpleMessage("Enviar unha mensaxe"), - "Send file": MessageLookupByLibrary.simpleMessage("Enviar ficheiro"), - "Send image": MessageLookupByLibrary.simpleMessage("Enviar imaxe"), - "Set a profile picture": - MessageLookupByLibrary.simpleMessage("Establecer foto do perfil"), - "Set group description": MessageLookupByLibrary.simpleMessage( - "Establecer descrición do grupo"), - "Set invitation link": MessageLookupByLibrary.simpleMessage( - "Establecer ligazón do convite"), - "Set status": MessageLookupByLibrary.simpleMessage("Establecer estado"), - "Settings": MessageLookupByLibrary.simpleMessage("Axustes"), - "Share": MessageLookupByLibrary.simpleMessage("Compartir"), - "Sign up": MessageLookupByLibrary.simpleMessage("Rexistro"), - "Skip": MessageLookupByLibrary.simpleMessage("Saltar"), - "Source code": MessageLookupByLibrary.simpleMessage("Código fonte"), - "Start your first chat :-)": MessageLookupByLibrary.simpleMessage( - "Abre a primeira conversa :-)"), - "Submit": MessageLookupByLibrary.simpleMessage("Enviar"), - "Sunday": MessageLookupByLibrary.simpleMessage("Domingo"), - "System": MessageLookupByLibrary.simpleMessage("Sistema"), - "Tap to show menu": - MessageLookupByLibrary.simpleMessage("Toca para mostrar menú"), - "The encryption has been corrupted": - MessageLookupByLibrary.simpleMessage("O cifrado está corrompido"), - "They Don\'t Match": - MessageLookupByLibrary.simpleMessage("Non concordan"), - "They Match": MessageLookupByLibrary.simpleMessage("Concordan"), - "This room has been archived.": - MessageLookupByLibrary.simpleMessage("A sala foi arquivada."), - "Thursday": MessageLookupByLibrary.simpleMessage("Xoves"), - "Try to send again": - MessageLookupByLibrary.simpleMessage("Inténtao outra vez"), - "Tuesday": MessageLookupByLibrary.simpleMessage("Martes"), - "Unblock Device": - MessageLookupByLibrary.simpleMessage("Desbloquear dispositivo"), - "Unknown device": - MessageLookupByLibrary.simpleMessage("Dispositivo descoñecido"), - "Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage( - "Algoritmo de cifrado descoñecido"), - "Unmute chat": MessageLookupByLibrary.simpleMessage("Reactivar chat"), - "Use Amoled compatible colors?": MessageLookupByLibrary.simpleMessage( - "¿Usar cores compatibles con Amoled?"), - "Username": MessageLookupByLibrary.simpleMessage("Nome de usuaria"), - "Verify": MessageLookupByLibrary.simpleMessage("Verificar"), - "Verify User": - MessageLookupByLibrary.simpleMessage("Verificar usuaria"), - "Video call": MessageLookupByLibrary.simpleMessage("Chamada de vídeo"), - "Visibility of the chat history": MessageLookupByLibrary.simpleMessage( - "Visibilidade do historial da conversa"), - "Visible for all participants": MessageLookupByLibrary.simpleMessage( - "Visible para todas as participantes"), - "Visible for everyone": - MessageLookupByLibrary.simpleMessage("Visible para todas"), - "Voice message": MessageLookupByLibrary.simpleMessage("Mensaxe de voz"), - "Wallpaper": MessageLookupByLibrary.simpleMessage("Fondo da conversa"), - "Wednesday": MessageLookupByLibrary.simpleMessage("Mércores"), - "Welcome to the cutest instant messenger in the matrix network.": - MessageLookupByLibrary.simpleMessage( - "Benvida a mensaxería instantánea más cuquiña da rede matrix."), - "Who is allowed to join this group": - MessageLookupByLibrary.simpleMessage( - "Quen se pode unir a este grupo"), - "Write a message...": - MessageLookupByLibrary.simpleMessage("Escribe unha mensaxe..."), - "Yes": MessageLookupByLibrary.simpleMessage("Si"), - "You": MessageLookupByLibrary.simpleMessage("Ti"), - "You are invited to this chat": - MessageLookupByLibrary.simpleMessage("Estás convidada a este chat"), - "You are no longer participating in this chat": - MessageLookupByLibrary.simpleMessage( - "Xa non participas desta conversa"), - "You cannot invite yourself": - MessageLookupByLibrary.simpleMessage("Non podes autoconvidarte"), - "You have been banned from this chat": - MessageLookupByLibrary.simpleMessage( - "Foches vetada nesta conversa"), - "You won\'t be able to disable the encryption anymore. Are you sure?": - MessageLookupByLibrary.simpleMessage( - "Non poderás desactivar o cifrado posteriormente, ¿estás certo?"), - "Your own username": - MessageLookupByLibrary.simpleMessage("O teu nome de usuaria"), - "acceptedTheInvitation": m0, - "activatedEndToEndEncryption": m1, - "alias": MessageLookupByLibrary.simpleMessage("alias"), - "askSSSSCache": MessageLookupByLibrary.simpleMessage( - "Escribe a frase de paso de seguridade ou chave de recuperación para almacenar as chaves."), - "askSSSSSign": MessageLookupByLibrary.simpleMessage( - "Para poder conectar a outra persoa, escribe a túa frase de paso ou chave de recuperación."), - "askSSSSVerify": MessageLookupByLibrary.simpleMessage( - "Escribe frase de paso de almacenaxe segura ou chave de recuperación para verificar a túa sesión."), - "askVerificationRequest": m60, - "bannedUser": m2, - "byDefaultYouWillBeConnectedTo": m3, - "cachedKeys": MessageLookupByLibrary.simpleMessage( - "Almacenaches as chaves correctamente!"), - "changedTheChatAvatar": m4, - "changedTheChatDescriptionTo": m5, - "changedTheChatNameTo": m6, - "changedTheChatPermissions": m7, - "changedTheDisplaynameTo": m8, - "changedTheGuestAccessRules": m9, - "changedTheGuestAccessRulesTo": m10, - "changedTheHistoryVisibility": m11, - "changedTheHistoryVisibilityTo": m12, - "changedTheJoinRules": m13, - "changedTheJoinRulesTo": m14, - "changedTheProfileAvatar": m15, - "changedTheRoomAliases": m16, - "changedTheRoomInvitationLink": m17, - "compareEmojiMatch": MessageLookupByLibrary.simpleMessage( - "Comparar e asegurarse de que estas emoticonas concordan no outro dispositivo:"), - "compareNumbersMatch": MessageLookupByLibrary.simpleMessage( - "Compara e asegúrate de que os seguintes números concordan cos do outro dispositivo:"), - "couldNotDecryptMessage": m18, - "countParticipants": m19, - "createdTheChat": m20, - "crossSigningDisabled": MessageLookupByLibrary.simpleMessage( - "A Sinatura-Cruzada está desactivada"), - "crossSigningEnabled": - MessageLookupByLibrary.simpleMessage("Sinatura-Cruzada activada"), - "dateAndTimeOfDay": m21, - "dateWithYear": m22, - "dateWithoutYear": m23, - "emoteExists": - MessageLookupByLibrary.simpleMessage("Xa existe ese emote!"), - "emoteInvalid": MessageLookupByLibrary.simpleMessage( - "Atallo do emote non é válido!"), - "emoteWarnNeedToPick": MessageLookupByLibrary.simpleMessage( - "Escribe un atallo e asocialle unha imaxe!"), - "groupWith": m24, - "hasWithdrawnTheInvitationFor": m25, - "incorrectPassphraseOrKey": MessageLookupByLibrary.simpleMessage( - "Frase de paso ou chave de recuperación incorrecta"), - "inviteContactToGroup": m26, - "inviteText": m27, - "invitedUser": m28, - "is typing...": - MessageLookupByLibrary.simpleMessage("está escribindo..."), - "isDeviceKeyCorrect": MessageLookupByLibrary.simpleMessage( - "¿É correcta esta chave do dispositivo?"), - "joinedTheChat": m29, - "keysCached": - MessageLookupByLibrary.simpleMessage("Chaves almacenadas"), - "keysMissing": MessageLookupByLibrary.simpleMessage("Faltan as chaves"), - "kicked": m30, - "kickedAndBanned": m31, - "lastActiveAgo": m32, - "loadCountMoreParticipants": m33, - "logInTo": m34, - "newVerificationRequest": MessageLookupByLibrary.simpleMessage( - "Nova solicitude de verificación!"), - "noCrossSignBootstrap": MessageLookupByLibrary.simpleMessage( - "Polo momento FluffyChat non soporta a activación da Sinatura-Cruzada. Actívaa desde Element."), - "noMegolmBootstrap": MessageLookupByLibrary.simpleMessage( - "Actualmente Fluffychat non soporta a activación da Copia En Liña das Chaves. Actívaa desde Element."), - "numberSelected": m35, - "ok": MessageLookupByLibrary.simpleMessage("OK"), - "onlineKeyBackupDisabled": MessageLookupByLibrary.simpleMessage( - "Copia de apoio En liña das Chaves desactivada"), - "onlineKeyBackupEnabled": MessageLookupByLibrary.simpleMessage( - "Copia de Apoio das Chaves activada"), - "passphraseOrKey": MessageLookupByLibrary.simpleMessage( - "frase de paso ou chave de recuperación"), - "play": m36, - "redactedAnEvent": m37, - "rejectedTheInvitation": m38, - "removedBy": m39, - "seenByUser": m40, - "seenByUserAndCountOthers": m41, - "seenByUserAndUser": m42, - "sentAFile": m43, - "sentAPicture": m44, - "sentASticker": m45, - "sentAVideo": m46, - "sentAnAudio": m47, - "sessionVerified": - MessageLookupByLibrary.simpleMessage("Sesión verificada"), - "sharedTheLocation": m48, - "timeOfDay": m49, - "title": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "unbannedUser": m50, - "unknownEvent": m51, - "unknownSessionVerify": MessageLookupByLibrary.simpleMessage( - "Sesión descoñecida, por favor verifícaa"), - "unreadChats": m52, - "unreadMessages": m53, - "unreadMessagesInChats": m54, - "userAndOthersAreTyping": m55, - "userAndUserAreTyping": m56, - "userIsTyping": m57, - "userLeftTheChat": m58, - "userSentUnknownEvent": m59, - "verifiedSession": MessageLookupByLibrary.simpleMessage( - "Sesión verificada correctamente!"), - "verifyManual": - MessageLookupByLibrary.simpleMessage("Verificar manualmente"), - "verifyStart": - MessageLookupByLibrary.simpleMessage("Comezar verificación"), - "verifySuccess": - MessageLookupByLibrary.simpleMessage("Verificaches correctamente!"), - "verifyTitle": - MessageLookupByLibrary.simpleMessage("Verificando a outra conta"), - "waitingPartnerAcceptRequest": MessageLookupByLibrary.simpleMessage( - "Agardando a que a outra parte acepte a solicitude..."), - "waitingPartnerEmoji": MessageLookupByLibrary.simpleMessage( - "Agardando a que a outra parte acepte as emoticonas..."), - "waitingPartnerNumbers": MessageLookupByLibrary.simpleMessage( - "Agardando a que a outra parte acepte os números...") - }; -} diff --git a/lib/l10n/messages_hr.dart b/lib/l10n/messages_hr.dart deleted file mode 100644 index c88c607..0000000 --- a/lib/l10n/messages_hr.dart +++ /dev/null @@ -1,599 +0,0 @@ -// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart -// This is a library that provides messages for a hr locale. All the -// messages from the main program should be duplicated here with the same -// function name. - -// Ignore issues from commonly used lints in this file. -// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new -// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering -// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases -// ignore_for_file:unused_import, file_names - -import 'package:intl/intl.dart'; -import 'package:intl/message_lookup_by_library.dart'; - -final messages = new MessageLookup(); - -typedef String MessageIfAbsent(String messageStr, List args); - -class MessageLookup extends MessageLookupByLibrary { - String get localeName => 'hr'; - - static m0(username) => "${username} je prihvatio/la poziv"; - - static m1(username) => "${username} je aktivirao/la obostrano šifriranje"; - - static m60(username) => - "Prihvatiti ovaj zahtjev za potvrđivanje od ${username}?"; - - static m2(username, targetName) => - "${username} je isključio/la ${targetName}"; - - static m3(homeserver) => "Standardno ćeš biti povezan/a s ${homeserver}"; - - static m4(username) => "${username} je promijenio/la avatar chata"; - - static m5(username, description) => - "${username} je promijenio/la opis chata u: „${description}”"; - - static m6(username, chatname) => - "${username} je promijenio/la ime chata u: „${chatname}”"; - - static m7(username) => "${username} je promijenio/la dozvole chata"; - - static m8(username, displayname) => - "${username} je promijenio/la prikazano ime u: ${displayname}"; - - static m9(username) => - "${username} je promijenio/la pravila pristupa za goste"; - - static m10(username, rules) => - "${username} je promijenio/la pravila pristupa za goste u: ${rules}"; - - static m11(username) => "${username} je promijenio/la vidljivost kronologije"; - - static m12(username, rules) => - "${username} je promijenio/la vidljivost kronologije u: ${rules}"; - - static m13(username) => "${username} je promijenio/la pravila pridruživanja"; - - static m14(username, joinRules) => - "${username} je promijenio/la pravila pridruživanja u: ${joinRules}"; - - static m15(username) => "${username} je promijenio/la avatar profila"; - - static m16(username) => "${username} je promijenio/la pseudonime soba"; - - static m17(username) => "${username} je promijenio/la poveznicu poziva"; - - static m18(error) => "Neuspjelo dešifriranje poruke: ${error}"; - - static m19(count) => "${count} sudionika"; - - static m20(username) => "${username} je stvorio/la chat"; - - static m21(date, timeOfDay) => "${date}, ${timeOfDay}"; - - static m22(year, month, day) => "${day}. ${month}. ${year}."; - - static m23(month, day) => "${day}. ${month}."; - - static m24(displayname) => "Grupa s ${displayname}"; - - static m25(username, targetName) => - "${username} je povukao/la poziv za ${targetName}"; - - static m26(groupName) => "Pozovi kontakt u ${groupName}"; - - static m27(username, link) => - "${username} te je pozvao/la u FluffyChat. \n1. Instaliraj FluffyChat: http://fluffy.chat \n2. Registriraj ili prijavi se \n3. Otvori poveznicu poziva: ${link}"; - - static m28(username, targetName) => "${username} je pozvao/la ${targetName}"; - - static m29(username) => "${username} se pridružio/la chatu"; - - static m30(username, targetName) => "${username} je izbacio/la ${targetName}"; - - static m31(username, targetName) => - "${username} je izbacio/la i isključio/la ${targetName}"; - - static m32(localizedTimeShort) => "Zadnja aktivnost: ${localizedTimeShort}"; - - static m33(count) => "Učitaj još ${count} sudionika"; - - static m34(homeserver) => "Prijavi se na ${homeserver}"; - - static m35(number) => "${number} odabrano"; - - static m36(fileName) => "Sviraj ${fileName}"; - - static m37(username) => "${username} je preuredio/la događaj"; - - static m38(username) => "${username} je odbio/la poziv"; - - static m39(username) => "Uklonjeno od ${username}"; - - static m40(username) => "Viđeno od ${username}"; - - static m41(username, count) => - "Viđeno od ${username} i još ${count} korisnika"; - - static m42(username, username2) => "Viđeno od ${username} i ${username2}"; - - static m43(username) => "${username} ja poslao/la datoteku"; - - static m44(username) => "${username} ja poslao/la sliku"; - - static m45(username) => "${username} je poslao/la naljepnicu"; - - static m46(username) => "${username} ja poslao/la video"; - - static m47(username) => "${username} ja poslao/la audio"; - - static m48(username) => "${username} je dijelio/la mjesto"; - - static m49(hours12, hours24, minutes, suffix) => "${hours24}:${minutes}"; - - static m50(username, targetName) => - "${username} je ponovo uključio/la ${targetName}"; - - static m51(type) => "Nepoznata vrsta događaja „${type}”"; - - static m52(unreadCount) => "${unreadCount} nepročitana chata"; - - static m53(unreadEvents) => "${unreadEvents} nepročitane poruke"; - - static m54(unreadEvents, unreadChats) => - "${unreadEvents} nepročitane poruke u ${unreadChats} chata"; - - static m55(username, count) => "${username} i još ${count} korisnika pišu …"; - - static m56(username, username2) => "${username} i ${username2} pišu …"; - - static m57(username) => "${username} piše …"; - - static m58(username) => "${username} je napustio/la chat"; - - static m59(username, type) => "${username} ja poslao/la ${type} događaj"; - - final messages = _notInlinedMessages(_notInlinedMessages); - static _notInlinedMessages(_) => { - "(Optional) Group name": - MessageLookupByLibrary.simpleMessage("(Opcionalno) Ime grupe"), - "About": MessageLookupByLibrary.simpleMessage("Informacije"), - "Accept": MessageLookupByLibrary.simpleMessage("Prihvati"), - "Account": MessageLookupByLibrary.simpleMessage("Račun"), - "Account informations": - MessageLookupByLibrary.simpleMessage("Podaci računa"), - "Add a group description": - MessageLookupByLibrary.simpleMessage("Dodaj opis grupe"), - "Admin": MessageLookupByLibrary.simpleMessage("Administrator"), - "Already have an account?": - MessageLookupByLibrary.simpleMessage("Već imaš račun?"), - "Anyone can join": - MessageLookupByLibrary.simpleMessage("Svatko se može pridružiti"), - "Archive": MessageLookupByLibrary.simpleMessage("Arhiva"), - "Archived Room": - MessageLookupByLibrary.simpleMessage("Arhivirana soba"), - "Are guest users allowed to join": MessageLookupByLibrary.simpleMessage( - "Smiju li se gosti pridružiti grupi"), - "Are you sure?": MessageLookupByLibrary.simpleMessage("Sigurno?"), - "Authentication": - MessageLookupByLibrary.simpleMessage("Autentifikacija"), - "Avatar has been changed": - MessageLookupByLibrary.simpleMessage("Avatar je promijenjen"), - "Ban from chat": - MessageLookupByLibrary.simpleMessage("Isključi iz chata"), - "Banned": MessageLookupByLibrary.simpleMessage("Isključen"), - "Block Device": MessageLookupByLibrary.simpleMessage("Blokiraj uređaj"), - "Cancel": MessageLookupByLibrary.simpleMessage("Odustani"), - "Change the homeserver": MessageLookupByLibrary.simpleMessage( - "Promijeni domaćeg poslužitelja"), - "Change the name of the group": - MessageLookupByLibrary.simpleMessage("Promijeni ime grupe"), - "Change the server": - MessageLookupByLibrary.simpleMessage("Promijeni poslužitelja"), - "Change wallpaper": - MessageLookupByLibrary.simpleMessage("Promijeni sliku pozadine"), - "Change your style": - MessageLookupByLibrary.simpleMessage("Promijeni svoj stil"), - "Changelog": MessageLookupByLibrary.simpleMessage("Zapis promjena"), - "Chat": MessageLookupByLibrary.simpleMessage("Chat"), - "Chat details": MessageLookupByLibrary.simpleMessage("Detalji chata"), - "Choose a strong password": - MessageLookupByLibrary.simpleMessage("Odaberi snažnu lozinku"), - "Choose a username": - MessageLookupByLibrary.simpleMessage("Odaberi korisničko ime"), - "Close": MessageLookupByLibrary.simpleMessage("Zatvori"), - "Confirm": MessageLookupByLibrary.simpleMessage("Potvrdi"), - "Connect": MessageLookupByLibrary.simpleMessage("Spoji"), - "Connection attempt failed": - MessageLookupByLibrary.simpleMessage("Neuspio pokušaj povezivanja"), - "Contact has been invited to the group": - MessageLookupByLibrary.simpleMessage("Kontakt je pozvan u grupu"), - "Content viewer": - MessageLookupByLibrary.simpleMessage("Prikazivač sadržaja"), - "Copied to clipboard": - MessageLookupByLibrary.simpleMessage("Kopirano u međuspremnik"), - "Copy": MessageLookupByLibrary.simpleMessage("Kopiraj"), - "Could not set avatar": MessageLookupByLibrary.simpleMessage( - "Neuspjelo postavljanje avatara"), - "Could not set displayname": MessageLookupByLibrary.simpleMessage( - "Neuspjelo postavljanje prikaznog imena"), - "Create": MessageLookupByLibrary.simpleMessage("Stvori"), - "Create account now": - MessageLookupByLibrary.simpleMessage("Stvori račun sada"), - "Create new group": - MessageLookupByLibrary.simpleMessage("Stvori novu grupu"), - "Currently active": - MessageLookupByLibrary.simpleMessage("Trenutačno aktivni"), - "Dark": MessageLookupByLibrary.simpleMessage("Tamna"), - "Delete": MessageLookupByLibrary.simpleMessage("Izbriži"), - "Delete message": - MessageLookupByLibrary.simpleMessage("Izbriži poruku"), - "Deny": MessageLookupByLibrary.simpleMessage("Odbij"), - "Device": MessageLookupByLibrary.simpleMessage("Uređaj"), - "Devices": MessageLookupByLibrary.simpleMessage("Uređaji"), - "Discard picture": MessageLookupByLibrary.simpleMessage("Odbaci sliku"), - "Displayname has been changed": MessageLookupByLibrary.simpleMessage( - "Prikazno ime je promijenjeno"), - "Donate": MessageLookupByLibrary.simpleMessage("Doniraj"), - "Download file": - MessageLookupByLibrary.simpleMessage("Preuzmi datoteku"), - "Edit Jitsi instance": - MessageLookupByLibrary.simpleMessage("Uredi Jitsi primjerak"), - "Edit displayname": - MessageLookupByLibrary.simpleMessage("Uredi prikazano ime"), - "Emote Settings": - MessageLookupByLibrary.simpleMessage("Postavke emojija"), - "Emote shortcode": - MessageLookupByLibrary.simpleMessage("Kratica emota"), - "Empty chat": MessageLookupByLibrary.simpleMessage("Prazan chat"), - "Encryption": MessageLookupByLibrary.simpleMessage("Šifriranje"), - "Encryption algorithm": - MessageLookupByLibrary.simpleMessage("Algoritam šifriranja"), - "Encryption is not enabled": - MessageLookupByLibrary.simpleMessage("Šifriranje nije aktivirano"), - "End to end encryption is currently in Beta! Use at your own risk!": - MessageLookupByLibrary.simpleMessage( - "Obostrano šifriranje je trenutačno u beta stanju! Koriti na vlastitu odgovornost!"), - "End-to-end encryption settings": MessageLookupByLibrary.simpleMessage( - "Postavke obostranog šifriranja"), - "Enter a group name": - MessageLookupByLibrary.simpleMessage("Upiši ime grupe"), - "Enter a username": - MessageLookupByLibrary.simpleMessage("Upiši korisničko ime"), - "Enter your homeserver": MessageLookupByLibrary.simpleMessage( - "Upiši svog domaćeg poslužitelja"), - "File name": MessageLookupByLibrary.simpleMessage("Ime datoteke"), - "File size": MessageLookupByLibrary.simpleMessage("Veličina datoteke"), - "FluffyChat": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "Forward": MessageLookupByLibrary.simpleMessage("Proslijedi"), - "Friday": MessageLookupByLibrary.simpleMessage("Petak"), - "From joining": - MessageLookupByLibrary.simpleMessage("Od pridruživanja"), - "From the invitation": - MessageLookupByLibrary.simpleMessage("Od poziva"), - "Group": MessageLookupByLibrary.simpleMessage("Grupiraj"), - "Group description": MessageLookupByLibrary.simpleMessage("Opis grupe"), - "Group description has been changed": - MessageLookupByLibrary.simpleMessage("Opis grupe je promijenjen"), - "Group is public": - MessageLookupByLibrary.simpleMessage("Grupa je javna"), - "Guests are forbidden": - MessageLookupByLibrary.simpleMessage("Gosti su zabranjeni"), - "Guests can join": - MessageLookupByLibrary.simpleMessage("Gosti se mogu pridružiti"), - "Help": MessageLookupByLibrary.simpleMessage("Pomoć"), - "Homeserver is not compatible": MessageLookupByLibrary.simpleMessage( - "Domaći poslužitelj nije kompatibilan"), - "How are you today?": - MessageLookupByLibrary.simpleMessage("Kako si danas?"), - "ID": MessageLookupByLibrary.simpleMessage("ID"), - "Identity": MessageLookupByLibrary.simpleMessage("Identitet"), - "Invite contact": - MessageLookupByLibrary.simpleMessage("Pozovi kontakt"), - "Invited": MessageLookupByLibrary.simpleMessage("Pozvan/a"), - "Invited users only": - MessageLookupByLibrary.simpleMessage("Samo pozvani korisnici"), - "It seems that you have no google services on your phone. That\'s a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": - MessageLookupByLibrary.simpleMessage( - "Čini se da na mobitelu nemaš google usluge. To je dobra odluka za tvoju privatnost! Za primanje push obavijesti u FluffyChatu preporučujemo upotrebu microG-a: https://microg.org/"), - "Kick from chat": - MessageLookupByLibrary.simpleMessage("Izbaci iz chata"), - "Last seen IP": - MessageLookupByLibrary.simpleMessage("Zadnji viđeni IP"), - "Leave": MessageLookupByLibrary.simpleMessage("Napusti"), - "Left the chat": - MessageLookupByLibrary.simpleMessage("Napustio/la je chat"), - "License": MessageLookupByLibrary.simpleMessage("Licenca"), - "Light": MessageLookupByLibrary.simpleMessage("Svjetla"), - "Load more...": MessageLookupByLibrary.simpleMessage("Učitaj više …"), - "Loading... Please wait": - MessageLookupByLibrary.simpleMessage("Učitava se … Pričekaj"), - "Login": MessageLookupByLibrary.simpleMessage("Prijava"), - "Logout": MessageLookupByLibrary.simpleMessage("Odjava"), - "Make a moderator": - MessageLookupByLibrary.simpleMessage("Postavi kao voditelja"), - "Make an admin": - MessageLookupByLibrary.simpleMessage("Postavi kao administratora"), - "Make sure the identifier is valid": - MessageLookupByLibrary.simpleMessage( - "Provjeri je li identifikator ispravan"), - "Message will be removed for all participants": - MessageLookupByLibrary.simpleMessage( - "Poruke će se ukloniti za sve sudionike"), - "Moderator": MessageLookupByLibrary.simpleMessage("Voditelj"), - "Monday": MessageLookupByLibrary.simpleMessage("Ponedjeljak"), - "Mute chat": - MessageLookupByLibrary.simpleMessage("Isključi zvuk chata"), - "New message in FluffyChat": - MessageLookupByLibrary.simpleMessage("Nova poruka u FluffyChatu"), - "New private chat": - MessageLookupByLibrary.simpleMessage("Novi privatni chat"), - "No emotes found. 😕": - MessageLookupByLibrary.simpleMessage("Nema emota. 😕"), - "No permission": MessageLookupByLibrary.simpleMessage("Bez dozvole"), - "No rooms found...": - MessageLookupByLibrary.simpleMessage("Nema pronađenih soba …"), - "None": MessageLookupByLibrary.simpleMessage("Ništa"), - "Not supported in web": - MessageLookupByLibrary.simpleMessage("Nije podržano u internetu"), - "Oops something went wrong...": MessageLookupByLibrary.simpleMessage( - "Ups, došlo je do neke greške …"), - "Open app to read messages": MessageLookupByLibrary.simpleMessage( - "Za čitanje poruka, otvori program"), - "Open camera": MessageLookupByLibrary.simpleMessage("Otvori kameru"), - "Participating user devices": MessageLookupByLibrary.simpleMessage( - "Sudjelujući korisnički uređaji"), - "Password": MessageLookupByLibrary.simpleMessage("Lozinka"), - "Pick image": MessageLookupByLibrary.simpleMessage("Odaberi sliku"), - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": - MessageLookupByLibrary.simpleMessage( - "Za sada trebaš Pantalaimon za obostrano šifriranje."), - "Please choose a username": - MessageLookupByLibrary.simpleMessage("Odaberi korisničko ime"), - "Please enter a matrix identifier": - MessageLookupByLibrary.simpleMessage("Upiši identifikator matrice"), - "Please enter your password": - MessageLookupByLibrary.simpleMessage("Upiši svoju lozinku"), - "Please enter your username": - MessageLookupByLibrary.simpleMessage("Upiši svoje korisničko ime"), - "Public Rooms": MessageLookupByLibrary.simpleMessage("Javne sobe"), - "Recording": MessageLookupByLibrary.simpleMessage("Snimanje"), - "Reject": MessageLookupByLibrary.simpleMessage("Odbij"), - "Rejoin": MessageLookupByLibrary.simpleMessage("Ponovo se pridruži"), - "Remove": MessageLookupByLibrary.simpleMessage("Ukloni"), - "Remove all other devices": - MessageLookupByLibrary.simpleMessage("Ukloni sve druge uređaje"), - "Remove device": MessageLookupByLibrary.simpleMessage("Ukloni uređaj"), - "Remove exile": - MessageLookupByLibrary.simpleMessage("Ukloni izbacivanje"), - "Remove message": MessageLookupByLibrary.simpleMessage("Ukloni poruku"), - "Render rich message content": MessageLookupByLibrary.simpleMessage( - "Prikaži formatirani sadržaj poruke"), - "Reply": MessageLookupByLibrary.simpleMessage("Odgovori"), - "Request permission": - MessageLookupByLibrary.simpleMessage("Zatraži dozvolu"), - "Request to read older messages": MessageLookupByLibrary.simpleMessage( - "Zahtjev za čitanje starijih poruka"), - "Revoke all permissions": - MessageLookupByLibrary.simpleMessage("Opozovi sve dozvole"), - "Room has been upgraded": - MessageLookupByLibrary.simpleMessage("Ova soba je nadograđena"), - "Saturday": MessageLookupByLibrary.simpleMessage("Subota"), - "Search for a chat": MessageLookupByLibrary.simpleMessage("Traži chat"), - "Seen a long time ago": - MessageLookupByLibrary.simpleMessage("Viđeno prije dugo vremena"), - "Send": MessageLookupByLibrary.simpleMessage("Pošalji"), - "Send a message": - MessageLookupByLibrary.simpleMessage("Pošalji poruku"), - "Send file": MessageLookupByLibrary.simpleMessage("Pošalji datoteku"), - "Send image": MessageLookupByLibrary.simpleMessage("Pošalji sliku"), - "Set a profile picture": - MessageLookupByLibrary.simpleMessage("Postavi sliku profila"), - "Set group description": - MessageLookupByLibrary.simpleMessage("Postavi opis grupe"), - "Set invitation link": MessageLookupByLibrary.simpleMessage( - "Pošalji poveznicu za pozivnicu"), - "Set status": MessageLookupByLibrary.simpleMessage("Postavi stanje"), - "Settings": MessageLookupByLibrary.simpleMessage("Postavke"), - "Share": MessageLookupByLibrary.simpleMessage("Dijeli"), - "Sign up": MessageLookupByLibrary.simpleMessage("Prijavi se"), - "Skip": MessageLookupByLibrary.simpleMessage("Preskoči"), - "Source code": MessageLookupByLibrary.simpleMessage("Izvorni kȏd"), - "Start your first chat :-)": - MessageLookupByLibrary.simpleMessage("Počni svoj prvi chat :-)"), - "Submit": MessageLookupByLibrary.simpleMessage("Pošalji"), - "Sunday": MessageLookupByLibrary.simpleMessage("Nedjelja"), - "System": MessageLookupByLibrary.simpleMessage("Sustav"), - "Tap to show menu": - MessageLookupByLibrary.simpleMessage("Dodirni za prikaz izbornika"), - "The encryption has been corrupted": - MessageLookupByLibrary.simpleMessage("Šifriranje je oštećeno"), - "They Don\'t Match": - MessageLookupByLibrary.simpleMessage("Ne poklapaju se"), - "They Match": MessageLookupByLibrary.simpleMessage("Poklapaju se"), - "This room has been archived.": - MessageLookupByLibrary.simpleMessage("Ova soba je arhivirana."), - "Thursday": MessageLookupByLibrary.simpleMessage("Četvrtak"), - "Try to send again": - MessageLookupByLibrary.simpleMessage("Pokušaj ponovo poslati"), - "Tuesday": MessageLookupByLibrary.simpleMessage("Utorak"), - "Unblock Device": - MessageLookupByLibrary.simpleMessage("Deblokiraj uređaj"), - "Unknown device": - MessageLookupByLibrary.simpleMessage("Nepoznat uređaj"), - "Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage( - "Nepoznat algoritam šifriranja"), - "Unmute chat": - MessageLookupByLibrary.simpleMessage("Uključi zvuk chata"), - "Use Amoled compatible colors?": MessageLookupByLibrary.simpleMessage( - "Koristiti Amoled kompatibilne boje?"), - "Username": MessageLookupByLibrary.simpleMessage("Korisničko ime"), - "Verify": MessageLookupByLibrary.simpleMessage("Provjeri"), - "Verify User": - MessageLookupByLibrary.simpleMessage("Provjeri korisnika"), - "Video call": MessageLookupByLibrary.simpleMessage("Video poziv"), - "Visibility of the chat history": MessageLookupByLibrary.simpleMessage( - "Vidljivost kronologije chata"), - "Visible for all participants": - MessageLookupByLibrary.simpleMessage("Vidljivo za sve sudionike"), - "Visible for everyone": - MessageLookupByLibrary.simpleMessage("Vidljivo za sve"), - "Voice message": - MessageLookupByLibrary.simpleMessage("Glasovna poruka"), - "Wallpaper": MessageLookupByLibrary.simpleMessage("Slika pozadine"), - "Wednesday": MessageLookupByLibrary.simpleMessage("Srijeda"), - "Welcome to the cutest instant messenger in the matrix network.": - MessageLookupByLibrary.simpleMessage( - "Lijep pozdrav u najslađi program za čavrljanje u matrix-mreži."), - "Who is allowed to join this group": - MessageLookupByLibrary.simpleMessage( - "Tko se smije pridružiti grupi"), - "Write a message...": - MessageLookupByLibrary.simpleMessage("Napiši poruku …"), - "Yes": MessageLookupByLibrary.simpleMessage("Da"), - "You": MessageLookupByLibrary.simpleMessage("Ti"), - "You are invited to this chat": - MessageLookupByLibrary.simpleMessage("Pozvan/a si u ovaj chat"), - "You are no longer participating in this chat": - MessageLookupByLibrary.simpleMessage( - "Više ne sudjeluješ u ovom chatu"), - "You cannot invite yourself": - MessageLookupByLibrary.simpleMessage("Sebe ne možeš pozvati"), - "You have been banned from this chat": - MessageLookupByLibrary.simpleMessage( - "Isključen/a si iz ovog chata"), - "You won\'t be able to disable the encryption anymore. Are you sure?": - MessageLookupByLibrary.simpleMessage( - "Više nećeš moći deaktivirati šifriranje. Sigurno?"), - "Your own username": - MessageLookupByLibrary.simpleMessage("Tvoje korisničko ime"), - "acceptedTheInvitation": m0, - "activatedEndToEndEncryption": m1, - "alias": MessageLookupByLibrary.simpleMessage("pseudonim"), - "askSSSSCache": MessageLookupByLibrary.simpleMessage( - "Upiši svoju sigurnosnu lozinku ili ključ za obnavljanje, kako bi se ključevi spremili u predmemoriju."), - "askSSSSSign": MessageLookupByLibrary.simpleMessage( - "Za potpisivanje druge osobe, upiši svoju sigurnosnu lozinku ili ključ za obnavljanje."), - "askSSSSVerify": MessageLookupByLibrary.simpleMessage( - "Za potvrđivanje tvoje sesije, upiši svoju sigurnosnu lozinku ili ključ za obnavljanje."), - "askVerificationRequest": m60, - "bannedUser": m2, - "byDefaultYouWillBeConnectedTo": m3, - "cachedKeys": MessageLookupByLibrary.simpleMessage( - "Uspješno međuspremljeni ključevi!"), - "changedTheChatAvatar": m4, - "changedTheChatDescriptionTo": m5, - "changedTheChatNameTo": m6, - "changedTheChatPermissions": m7, - "changedTheDisplaynameTo": m8, - "changedTheGuestAccessRules": m9, - "changedTheGuestAccessRulesTo": m10, - "changedTheHistoryVisibility": m11, - "changedTheHistoryVisibilityTo": m12, - "changedTheJoinRules": m13, - "changedTheJoinRulesTo": m14, - "changedTheProfileAvatar": m15, - "changedTheRoomAliases": m16, - "changedTheRoomInvitationLink": m17, - "compareEmojiMatch": MessageLookupByLibrary.simpleMessage( - "Usporedi i provjeri, poklapaju li se sljedeći emojiji s onima drugog uređaja:"), - "compareNumbersMatch": MessageLookupByLibrary.simpleMessage( - "Usporedi i provjeri, poklapaju li se sljedeći brojevi s onima drugog uređaja:"), - "couldNotDecryptMessage": m18, - "countParticipants": m19, - "createdTheChat": m20, - "crossSigningDisabled": MessageLookupByLibrary.simpleMessage( - "Unakrsno potpisivanje je deaktivirano"), - "crossSigningEnabled": MessageLookupByLibrary.simpleMessage( - "Unakrsno potpisivanje je aktivirano"), - "dateAndTimeOfDay": m21, - "dateWithYear": m22, - "dateWithoutYear": m23, - "emoteExists": - MessageLookupByLibrary.simpleMessage("Emot već postoji!"), - "emoteInvalid": - MessageLookupByLibrary.simpleMessage("Neispravna kratica emota!"), - "emoteWarnNeedToPick": MessageLookupByLibrary.simpleMessage( - "Moraš odabrati jednu kraticu emota i sliku!"), - "groupWith": m24, - "hasWithdrawnTheInvitationFor": m25, - "incorrectPassphraseOrKey": MessageLookupByLibrary.simpleMessage( - "Neispravna lozinka ili ključ za obnavljanje"), - "inviteContactToGroup": m26, - "inviteText": m27, - "invitedUser": m28, - "is typing...": MessageLookupByLibrary.simpleMessage("piše …"), - "isDeviceKeyCorrect": MessageLookupByLibrary.simpleMessage( - "Je li sljedeći ključ uređaja ispravan?"), - "joinedTheChat": m29, - "keysCached": MessageLookupByLibrary.simpleMessage( - "Ključevi su spremljeni u predmemoriji"), - "keysMissing": - MessageLookupByLibrary.simpleMessage("Nedostaju ključevi"), - "kicked": m30, - "kickedAndBanned": m31, - "lastActiveAgo": m32, - "loadCountMoreParticipants": m33, - "logInTo": m34, - "newVerificationRequest": - MessageLookupByLibrary.simpleMessage("Novi zahtjev za provjeru!"), - "noCrossSignBootstrap": MessageLookupByLibrary.simpleMessage( - "Fluffychat trenutačno ne podržava unakrsno potpisivanje. Aktiviraj je pomoću Element-a."), - "noMegolmBootstrap": MessageLookupByLibrary.simpleMessage( - "Fluffychat trenutačno ne podržava online sigurnosnu kopiju ključeva. Aktiviraj je pomoću Element-a."), - "numberSelected": m35, - "ok": MessageLookupByLibrary.simpleMessage("u redu"), - "onlineKeyBackupDisabled": MessageLookupByLibrary.simpleMessage( - "Online sigurnosna kopija ključeva je deaktivirana"), - "onlineKeyBackupEnabled": MessageLookupByLibrary.simpleMessage( - "Online sigurnosna kopija ključeva je aktivirana"), - "passphraseOrKey": MessageLookupByLibrary.simpleMessage( - "Lozinka ili ključ za obnavljanje"), - "play": m36, - "redactedAnEvent": m37, - "rejectedTheInvitation": m38, - "removedBy": m39, - "seenByUser": m40, - "seenByUserAndCountOthers": m41, - "seenByUserAndUser": m42, - "sentAFile": m43, - "sentAPicture": m44, - "sentASticker": m45, - "sentAVideo": m46, - "sentAnAudio": m47, - "sessionVerified": - MessageLookupByLibrary.simpleMessage("Sesija je provjerena"), - "sharedTheLocation": m48, - "timeOfDay": m49, - "title": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "unbannedUser": m50, - "unknownEvent": m51, - "unknownSessionVerify": - MessageLookupByLibrary.simpleMessage("Nepoznata sesija, provjeri"), - "unreadChats": m52, - "unreadMessages": m53, - "unreadMessagesInChats": m54, - "userAndOthersAreTyping": m55, - "userAndUserAreTyping": m56, - "userIsTyping": m57, - "userLeftTheChat": m58, - "userSentUnknownEvent": m59, - "verifiedSession": - MessageLookupByLibrary.simpleMessage("Uspješno provjerena sesija!"), - "verifyManual": MessageLookupByLibrary.simpleMessage("Provjeri ručno"), - "verifyStart": MessageLookupByLibrary.simpleMessage("Pokreni provjeru"), - "verifySuccess": - MessageLookupByLibrary.simpleMessage("Uspješno si provjerio/la!"), - "verifyTitle": - MessageLookupByLibrary.simpleMessage("Provjeravanje drugog računa"), - "waitingPartnerAcceptRequest": MessageLookupByLibrary.simpleMessage( - "Čekanje na partnera, da prihvati zahtjeva …"), - "waitingPartnerEmoji": MessageLookupByLibrary.simpleMessage( - "Čekanje na partnera, da prihvati emoji …"), - "waitingPartnerNumbers": MessageLookupByLibrary.simpleMessage( - "Čekanje na partnera, da prihvati brojeve …") - }; -} diff --git a/lib/l10n/messages_hu.dart b/lib/l10n/messages_hu.dart deleted file mode 100644 index 650fdd1..0000000 --- a/lib/l10n/messages_hu.dart +++ /dev/null @@ -1,611 +0,0 @@ -// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart -// This is a library that provides messages for a hu locale. All the -// messages from the main program should be duplicated here with the same -// function name. - -// Ignore issues from commonly used lints in this file. -// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new -// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering -// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases -// ignore_for_file:unused_import, file_names - -import 'package:intl/intl.dart'; -import 'package:intl/message_lookup_by_library.dart'; - -final messages = new MessageLookup(); - -typedef String MessageIfAbsent(String messageStr, List args); - -class MessageLookup extends MessageLookupByLibrary { - String get localeName => 'hu'; - - static m0(username) => "${username} elfogadta a meghívást"; - - static m1(username) => - "${username} aktiválta a végpontól-végpontig titkosítást"; - - static m60(username) => "Elfogadod ${username} hitelesítési kérelmét?"; - - static m2(username, targetName) => "${username} kitiltotta ${targetName}-t"; - - static m3(homeserver) => "Alapértelmezésben ${homeserver}-hoz csatlakozol"; - - static m4(username) => "${username} módosította a csevegés képét"; - - static m5(username, description) => - "${username} módosította a csevegés leírását erre: \'${description}\'"; - - static m6(username, chatname) => - "${username} módosította a csevegés nevét erre: \'${chatname}\'"; - - static m7(username) => "${username} módosította a csevegési enegedélyeket"; - - static m8(username, displayname) => - "${username} módosította a megjenelítési nevét erre: ${displayname}"; - - static m9(username) => - "${username} módosította a vendégek hozzáférési jogait"; - - static m10(username, rules) => - "${username} módosította a vendégek hozzáférési jogait, így: ${rules}"; - - static m11(username) => - "${username} módosította a múltbéli események láthatóságát"; - - static m12(username, rules) => - "${username} módosította a múltbéli események láthatóságát, így: ${rules}"; - - static m13(username) => "${username} módosított a csatlakozási szabályokat"; - - static m14(username, joinRules) => - "${username} módosította a csatlakozási szabályokat, így: ${joinRules}"; - - static m15(username) => "${username} módosította a profil képét"; - - static m16(username) => "${username} módosítottaa szoba álnevét"; - - static m17(username) => "${username} módosította a meghívó linket"; - - static m18(error) => - "Nem sikerült visszafejteni a titkosított üzenetet: ${error}"; - - static m19(count) => "${count} résztvevő"; - - static m20(username) => "${username} létrehozta a csevegést"; - - static m21(date, timeOfDay) => "${date}, ${timeOfDay}"; - - static m22(year, month, day) => "${year}-${month}-${day}"; - - static m23(month, day) => "${month}-${day}"; - - static m24(displayname) => "Csoport ${displayname}-vel"; - - static m25(username, targetName) => - "${username} visszavonta ${targetName} meghívását"; - - static m26(groupName) => "Ismerős meghívása a ${groupName} csoportba"; - - static m27(username, link) => - "${username} meghívott a FluffyChatre. \n1. FluffyChat telepítése: http://fluffy.chat \n2. Jelentkezz be vagy regisztrálj. \n3. Nyisd meg a meghívó linket: ${link}"; - - static m28(username, targetName) => "${username} meghívta ${targetName}-t"; - - static m29(username) => "${username} csatalakozott a csevegéshez"; - - static m30(username, targetName) => "${username} kirúgta ${targetName}-t"; - - static m31(username, targetName) => - "${username} kirúgta és kitiltotta ${targetName}-t"; - - static m32(localizedTimeShort) => "Utoljára aktív: ${localizedTimeShort}"; - - static m33(count) => "További ${count} résztvevő betöltése"; - - static m34(homeserver) => "Bejelentkezés ${homeserver} Matrix szerverre"; - - static m35(number) => "${number} kijelölve"; - - static m36(fileName) => "${fileName} lejátszása"; - - static m37(username) => "${username} visszavont egy eseményt"; - - static m38(username) => "${username} elutasította a meghívást"; - - static m39(username) => "Törölve ${username} által"; - - static m40(username) => "${username} látta"; - - static m41(username, count) => - "${username} és ${count} másik résztvevő látta"; - - static m42(username, username2) => "${username} és ${username2} látta"; - - static m43(username) => "${username} fájlt küldött"; - - static m44(username) => "${username} képet küldött"; - - static m45(username) => "${username} matricát küldött"; - - static m46(username) => "${username} videót küldött"; - - static m47(username) => "${username} hangüzenetet küldött"; - - static m48(username) => "${username} megosztotta a pozícióját"; - - static m49(hours12, hours24, minutes, suffix) => "${hours24}:${minutes}"; - - static m50(username, targetName) => - "${username} feloldotta ${targetName} kitiltását"; - - static m51(type) => "Ismeretlen esemény \'${type}\'"; - - static m52(unreadCount) => "${unreadCount} olvasatlan üzenet"; - - static m53(unreadEvents) => "${unreadEvents} olvasatlan üzenet"; - - static m54(unreadEvents, unreadChats) => - "${unreadEvents} olvastlan üzenet van ${unreadChats}-ban"; - - static m55(username, count) => - "${username} és ${count} másik résztvevő gépel..."; - - static m56(username, username2) => "${username} és ${username2} gépel..."; - - static m57(username) => "${username} gépel..."; - - static m58(username) => "${username} elhagyta a csevegést"; - - static m59(username, type) => "${username} ${type} eseményt küldött"; - - final messages = _notInlinedMessages(_notInlinedMessages); - static _notInlinedMessages(_) => { - "(Optional) Group name": - MessageLookupByLibrary.simpleMessage("(Nem kötelező) Csoport név"), - "About": MessageLookupByLibrary.simpleMessage("Névjegy"), - "Accept": MessageLookupByLibrary.simpleMessage("Elfogad"), - "Account": MessageLookupByLibrary.simpleMessage("Fiók"), - "Account informations": - MessageLookupByLibrary.simpleMessage("Fiók információk"), - "Add a group description": - MessageLookupByLibrary.simpleMessage("Csoport leírás hozzáadása"), - "Admin": MessageLookupByLibrary.simpleMessage("Admin"), - "Already have an account?": - MessageLookupByLibrary.simpleMessage("Van már fiókod?"), - "Anyone can join": - MessageLookupByLibrary.simpleMessage("Bárki csatlakozhat"), - "Archive": MessageLookupByLibrary.simpleMessage("Archív"), - "Archived Room": - MessageLookupByLibrary.simpleMessage("Archivált szoba"), - "Are guest users allowed to join": MessageLookupByLibrary.simpleMessage( - "Csatlakozhatnak vendég felhasználók"), - "Are you sure?": MessageLookupByLibrary.simpleMessage("Biztos?"), - "Authentication": MessageLookupByLibrary.simpleMessage("Hitelesítés"), - "Avatar has been changed": - MessageLookupByLibrary.simpleMessage("Az avatar megváltozott"), - "Ban from chat": - MessageLookupByLibrary.simpleMessage("Csevegésből kitiltás"), - "Banned": MessageLookupByLibrary.simpleMessage("Kitiltva"), - "Block Device": - MessageLookupByLibrary.simpleMessage("Eszköz blokkolása"), - "Cancel": MessageLookupByLibrary.simpleMessage("Mégsem"), - "Change the homeserver": - MessageLookupByLibrary.simpleMessage("Matrix szerver váltás"), - "Change the name of the group": - MessageLookupByLibrary.simpleMessage("Csoport nevének módosítása"), - "Change the server": - MessageLookupByLibrary.simpleMessage("Szerver módosítás"), - "Change wallpaper": - MessageLookupByLibrary.simpleMessage("Háttér módosítása"), - "Change your style": - MessageLookupByLibrary.simpleMessage("Stílus módosítása"), - "Changelog": MessageLookupByLibrary.simpleMessage("Változás napló"), - "Chat": MessageLookupByLibrary.simpleMessage("Csevegés"), - "Chat details": - MessageLookupByLibrary.simpleMessage("Csevegés részletei"), - "Choose a strong password": - MessageLookupByLibrary.simpleMessage("Válassz egy erős jelszót"), - "Choose a username": MessageLookupByLibrary.simpleMessage( - "Válassz egy felhasználónevet"), - "Close": MessageLookupByLibrary.simpleMessage("Bezárás"), - "Confirm": MessageLookupByLibrary.simpleMessage("Megerősítés"), - "Connect": MessageLookupByLibrary.simpleMessage("Csatlakozás"), - "Connection attempt failed": MessageLookupByLibrary.simpleMessage( - "Csatlakozási kísérlet meghiusult"), - "Contact has been invited to the group": - MessageLookupByLibrary.simpleMessage( - "Meghívtad ismerősödet a csoportba"), - "Content viewer": - MessageLookupByLibrary.simpleMessage("Tartalom nézegető"), - "Copied to clipboard": - MessageLookupByLibrary.simpleMessage("Vágólapra másolva"), - "Copy": MessageLookupByLibrary.simpleMessage("Másolás"), - "Could not set avatar": MessageLookupByLibrary.simpleMessage( - "Nem sikerült beállítani a képet"), - "Could not set displayname": MessageLookupByLibrary.simpleMessage( - "Nem sikerült beállítani a megjelenítési nevet"), - "Create": MessageLookupByLibrary.simpleMessage("Létrehozás"), - "Create account now": - MessageLookupByLibrary.simpleMessage("Új fiók létrehozása"), - "Create new group": - MessageLookupByLibrary.simpleMessage("Új csoport létrehozása"), - "Currently active": - MessageLookupByLibrary.simpleMessage("Jelenleg aktív"), - "Dark": MessageLookupByLibrary.simpleMessage("Sötét"), - "Delete": MessageLookupByLibrary.simpleMessage("Törlés"), - "Delete message": - MessageLookupByLibrary.simpleMessage("Üzenet törlése"), - "Deny": MessageLookupByLibrary.simpleMessage("Elutasítás"), - "Device": MessageLookupByLibrary.simpleMessage("Eszköz"), - "Devices": MessageLookupByLibrary.simpleMessage("Eszközök"), - "Discard picture": MessageLookupByLibrary.simpleMessage("Kép elvetése"), - "Displayname has been changed": MessageLookupByLibrary.simpleMessage( - "Megjelenítési név megváltozott"), - "Donate": MessageLookupByLibrary.simpleMessage("Támogatom"), - "Download file": MessageLookupByLibrary.simpleMessage("File letöltése"), - "Edit Jitsi instance": - MessageLookupByLibrary.simpleMessage("Jitsi példány módosítása"), - "Edit displayname": MessageLookupByLibrary.simpleMessage( - "Megjelenítési név módosítása"), - "Emote Settings": - MessageLookupByLibrary.simpleMessage("Hangulatjel beállítások"), - "Emote shortcode": - MessageLookupByLibrary.simpleMessage("Rövid kód a hangulatjelhez"), - "Empty chat": MessageLookupByLibrary.simpleMessage("Üres csevegés"), - "Encryption": MessageLookupByLibrary.simpleMessage("Titkosítás"), - "Encryption algorithm": - MessageLookupByLibrary.simpleMessage("Titkosítási algoritmus"), - "Encryption is not enabled": MessageLookupByLibrary.simpleMessage( - "Titkosítás nincs engedélyezve"), - "End to end encryption is currently in Beta! Use at your own risk!": - MessageLookupByLibrary.simpleMessage( - "Végpontól-végpontig titkosítás egyelőre béta! Csak saját felelősségre!"), - "End-to-end encryption settings": MessageLookupByLibrary.simpleMessage( - "Végpontól-végpontig titkosítás beállításai"), - "Enter a group name": - MessageLookupByLibrary.simpleMessage("Adj meg egy csoport nevet"), - "Enter a username": MessageLookupByLibrary.simpleMessage( - "Adj meg egy felhasználónevet"), - "Enter your homeserver": MessageLookupByLibrary.simpleMessage( - "Add meg a Matrix szervered nevét"), - "File name": MessageLookupByLibrary.simpleMessage("Fájl név"), - "File size": MessageLookupByLibrary.simpleMessage("Fájl méret"), - "FluffyChat": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "Forward": MessageLookupByLibrary.simpleMessage("Továbbítás"), - "Friday": MessageLookupByLibrary.simpleMessage("Péntek"), - "From joining": MessageLookupByLibrary.simpleMessage("Belépés óta"), - "From the invitation": - MessageLookupByLibrary.simpleMessage("Meghívás óta"), - "Group": MessageLookupByLibrary.simpleMessage("Csoport"), - "Group description": - MessageLookupByLibrary.simpleMessage("Csoport leírás"), - "Group description has been changed": - MessageLookupByLibrary.simpleMessage( - "Csoport leírása megváltozott"), - "Group is public": - MessageLookupByLibrary.simpleMessage("A csoport publikus"), - "Guests are forbidden": - MessageLookupByLibrary.simpleMessage("Vendégeknek tilos a belépés"), - "Guests can join": - MessageLookupByLibrary.simpleMessage("Vendégek csatlakozhatnak"), - "Help": MessageLookupByLibrary.simpleMessage("Segítség"), - "Homeserver is not compatible": MessageLookupByLibrary.simpleMessage( - "Ez a Matrix szerver nem kompatibilis"), - "How are you today?": - MessageLookupByLibrary.simpleMessage("Hogy vagy?"), - "ID": MessageLookupByLibrary.simpleMessage("ID"), - "Identity": MessageLookupByLibrary.simpleMessage("Azonosság"), - "Invite contact": - MessageLookupByLibrary.simpleMessage("Ismerős meghívása"), - "Invited": MessageLookupByLibrary.simpleMessage("Meghívott"), - "Invited users only": - MessageLookupByLibrary.simpleMessage("Csak meghívottak"), - "It seems that you have no google services on your phone. That\'s a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": - MessageLookupByLibrary.simpleMessage( - "Úgy tűnik ügyelsz a magánszférádra és nincsenek google szolgáltatások telepítve. Hogy így is kapj azonnali értesítéseket javasoljuk a microG-t: https://microg.org/"), - "Kick from chat": - MessageLookupByLibrary.simpleMessage("Csevegésből kirúgás"), - "Last seen IP": - MessageLookupByLibrary.simpleMessage("Utoljára látott IP"), - "Leave": MessageLookupByLibrary.simpleMessage("Csevegés elhagyása"), - "Left the chat": - MessageLookupByLibrary.simpleMessage("Elhagyta a csevegést"), - "License": MessageLookupByLibrary.simpleMessage("Licenc"), - "Light": MessageLookupByLibrary.simpleMessage("Világos"), - "Load more...": - MessageLookupByLibrary.simpleMessage("Továbbiak betöltése..."), - "Loading... Please wait": - MessageLookupByLibrary.simpleMessage("Betöltés... Kérlek várj"), - "Login": MessageLookupByLibrary.simpleMessage("Bejelentkezés"), - "Logout": MessageLookupByLibrary.simpleMessage("Kijelentkezés"), - "Make a moderator": - MessageLookupByLibrary.simpleMessage("Kinevezés moderátorrá"), - "Make an admin": - MessageLookupByLibrary.simpleMessage("Kinevezés adminná"), - "Make sure the identifier is valid": - MessageLookupByLibrary.simpleMessage( - "Bizonyosodj meg az azonosító helyességéről"), - "Message will be removed for all participants": - MessageLookupByLibrary.simpleMessage( - "Az üzenet minden résztvevő számára törlődni fog"), - "Moderator": MessageLookupByLibrary.simpleMessage("Moderátor"), - "Monday": MessageLookupByLibrary.simpleMessage("Hétfő"), - "Mute chat": MessageLookupByLibrary.simpleMessage("Csevegés némítása"), - "New message in FluffyChat": - MessageLookupByLibrary.simpleMessage("Új üzenet a FluffyChaten"), - "New private chat": - MessageLookupByLibrary.simpleMessage("Új privát csevegés"), - "No emotes found. 😕": - MessageLookupByLibrary.simpleMessage("Nincsenek hangulatjelek. 😕"), - "No permission": - MessageLookupByLibrary.simpleMessage("Nincsenek engedélyek"), - "No rooms found...": - MessageLookupByLibrary.simpleMessage("Nem találtam szobákat..."), - "None": MessageLookupByLibrary.simpleMessage("Nincs"), - "Not supported in web": - MessageLookupByLibrary.simpleMessage("Nem támogatott a weben"), - "Oops something went wrong...": MessageLookupByLibrary.simpleMessage( - "Hoppá, valami baj történt..."), - "Open app to read messages": MessageLookupByLibrary.simpleMessage( - "App megnyitása az üzenetek elolvasásához"), - "Open camera": - MessageLookupByLibrary.simpleMessage("Kamera megnyitása"), - "Participating user devices": MessageLookupByLibrary.simpleMessage( - "Résztvevő felhasználók eszközei"), - "Password": MessageLookupByLibrary.simpleMessage("Jelszó"), - "Pick image": MessageLookupByLibrary.simpleMessage("Válassz egy képet"), - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": - MessageLookupByLibrary.simpleMessage( - "Tájékoztatlak, hogy egyelőre szükséged van a Pantalaimon-ra, hogy a végponttól-végpontig titkosítást hasnzáld."), - "Please choose a username": MessageLookupByLibrary.simpleMessage( - "Válassz egy felhasználónevet"), - "Please enter a matrix identifier": - MessageLookupByLibrary.simpleMessage( - "Írj be egy Matrix azonosítót"), - "Please enter your password": - MessageLookupByLibrary.simpleMessage("Add meg a jelszavad"), - "Please enter your username": MessageLookupByLibrary.simpleMessage( - "Add meg a felhasználónevedet"), - "Public Rooms": MessageLookupByLibrary.simpleMessage("Publikus szoba"), - "Recording": MessageLookupByLibrary.simpleMessage("Felvétel"), - "Reject": MessageLookupByLibrary.simpleMessage("Visszautasít"), - "Rejoin": MessageLookupByLibrary.simpleMessage("Újracsatlakozás"), - "Remove": MessageLookupByLibrary.simpleMessage("Eltávolítás"), - "Remove all other devices": MessageLookupByLibrary.simpleMessage( - "Minden más eszköz eltávolítása"), - "Remove device": - MessageLookupByLibrary.simpleMessage("Eszköz eltávolítása"), - "Remove exile": - MessageLookupByLibrary.simpleMessage("Kitiltás feloldása"), - "Remove message": - MessageLookupByLibrary.simpleMessage("Üzenet eltávolítása"), - "Render rich message content": MessageLookupByLibrary.simpleMessage( - "Formázott üzenetek megjelenítése"), - "Reply": MessageLookupByLibrary.simpleMessage("Válasz"), - "Request permission": - MessageLookupByLibrary.simpleMessage("Jogosultság igénylése"), - "Request to read older messages": MessageLookupByLibrary.simpleMessage( - "Korábbi üzenetekhez való hozzáférés igénylése"), - "Revoke all permissions": MessageLookupByLibrary.simpleMessage( - "Minden jogosultság megvonása"), - "Room has been upgraded": - MessageLookupByLibrary.simpleMessage("Szoba frissítve lett"), - "Saturday": MessageLookupByLibrary.simpleMessage("Szombat"), - "Search for a chat": - MessageLookupByLibrary.simpleMessage("Csevegés keresése"), - "Seen a long time ago": - MessageLookupByLibrary.simpleMessage("Már régen látta"), - "Send": MessageLookupByLibrary.simpleMessage("Küldés"), - "Send a message": - MessageLookupByLibrary.simpleMessage("Üzenet küldése"), - "Send file": MessageLookupByLibrary.simpleMessage("Fájl küldése"), - "Send image": MessageLookupByLibrary.simpleMessage("Kép küldése"), - "Set a profile picture": - MessageLookupByLibrary.simpleMessage("Profilkép beállítása"), - "Set group description": - MessageLookupByLibrary.simpleMessage("Csoport leírás beállítása"), - "Set invitation link": - MessageLookupByLibrary.simpleMessage("Meghívó link beállítása"), - "Set status": - MessageLookupByLibrary.simpleMessage("Állapot beállítása"), - "Settings": MessageLookupByLibrary.simpleMessage("Beállítások"), - "Share": MessageLookupByLibrary.simpleMessage("Megosztás"), - "Sign up": MessageLookupByLibrary.simpleMessage("Felíratkozás"), - "Skip": MessageLookupByLibrary.simpleMessage("Kihagy"), - "Source code": MessageLookupByLibrary.simpleMessage("Forráskód"), - "Start your first chat :-)": - MessageLookupByLibrary.simpleMessage("Kezdj el csevegni :-)"), - "Submit": MessageLookupByLibrary.simpleMessage("Mehet"), - "Sunday": MessageLookupByLibrary.simpleMessage("Vasárnap"), - "System": MessageLookupByLibrary.simpleMessage("Rendszer"), - "Tap to show menu": MessageLookupByLibrary.simpleMessage( - "Érintsd meg a menü megnyitásához"), - "The encryption has been corrupted": - MessageLookupByLibrary.simpleMessage( - "A titkosítás sérült és megbízhatatlan"), - "They Don\'t Match": - MessageLookupByLibrary.simpleMessage("Nem egyeznek"), - "They Match": MessageLookupByLibrary.simpleMessage("Megegyeznek"), - "This room has been archived.": - MessageLookupByLibrary.simpleMessage("Ez a szoba archiválva lett."), - "Thursday": MessageLookupByLibrary.simpleMessage("Csütörtök"), - "Try to send again": - MessageLookupByLibrary.simpleMessage("Próbáld újraküldeni"), - "Tuesday": MessageLookupByLibrary.simpleMessage("Kedd"), - "Unblock Device": MessageLookupByLibrary.simpleMessage( - "Eszköz blokkolásának megszüntetése"), - "Unknown device": - MessageLookupByLibrary.simpleMessage("Ismeretlen eszköz"), - "Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage( - "Ismeretlen titkosítási algoritmus"), - "Unmute chat": - MessageLookupByLibrary.simpleMessage("Csevegés felhangosítása"), - "Use Amoled compatible colors?": MessageLookupByLibrary.simpleMessage( - "AmoLED kompatibilis színek használata?"), - "Username": MessageLookupByLibrary.simpleMessage("Felhasználónév"), - "Verify": MessageLookupByLibrary.simpleMessage("Hitelesít"), - "Verify User": - MessageLookupByLibrary.simpleMessage("Felhasználó hitelesítése"), - "Video call": MessageLookupByLibrary.simpleMessage("Videó hívás"), - "Visibility of the chat history": MessageLookupByLibrary.simpleMessage( - "Csevegési előzmény láthatósága"), - "Visible for all participants": MessageLookupByLibrary.simpleMessage( - "Minden résztvevő számára látható"), - "Visible for everyone": - MessageLookupByLibrary.simpleMessage("Bárki számára látható"), - "Voice message": MessageLookupByLibrary.simpleMessage("Hang üzenet"), - "Wallpaper": MessageLookupByLibrary.simpleMessage("Háttér"), - "Wednesday": MessageLookupByLibrary.simpleMessage("Szerda"), - "Welcome to the cutest instant messenger in the matrix network.": - MessageLookupByLibrary.simpleMessage( - "Üdv a legcukibb üzenetküldő alkalmazásban az egész Matrixon!"), - "Who is allowed to join this group": - MessageLookupByLibrary.simpleMessage( - "Ki csatlakozhat a csoporthoz"), - "Write a message...": - MessageLookupByLibrary.simpleMessage("Írj egy üzenetet..."), - "Yes": MessageLookupByLibrary.simpleMessage("Igen"), - "You": MessageLookupByLibrary.simpleMessage("Te"), - "You are invited to this chat": - MessageLookupByLibrary.simpleMessage("Meghívtak ebbe a csevegésbe"), - "You are no longer participating in this chat": - MessageLookupByLibrary.simpleMessage( - "Nem veszel részt ebben a csevegésben"), - "You cannot invite yourself": - MessageLookupByLibrary.simpleMessage("Nem tudod meghívni magadat"), - "You have been banned from this chat": - MessageLookupByLibrary.simpleMessage( - "Kitiltottak ebből a csevegésből"), - "You won\'t be able to disable the encryption anymore. Are you sure?": - MessageLookupByLibrary.simpleMessage( - "Többé nem tudod kikapcsolni a titkosítás. Biztosan folytatod?"), - "Your own username": - MessageLookupByLibrary.simpleMessage("A saját felhasználóneved"), - "acceptedTheInvitation": m0, - "activatedEndToEndEncryption": m1, - "alias": MessageLookupByLibrary.simpleMessage("álnév"), - "askSSSSCache": MessageLookupByLibrary.simpleMessage( - "Add meg a biztonságos tárolóhoz tartozó vagy a visszaállítási jelszavadat, hogy betöltsük a kulcsaidat."), - "askSSSSSign": MessageLookupByLibrary.simpleMessage( - "A másik személy igazolásához, kérlek add meg jelszavadat vagy visszaállítási kulcsodat."), - "askSSSSVerify": MessageLookupByLibrary.simpleMessage( - "Add meg a biztonságos tárolóhoz tartozó vagy a visszaállítási jelszavadat, a munkamenet hitelesítéséhez."), - "askVerificationRequest": m60, - "bannedUser": m2, - "byDefaultYouWillBeConnectedTo": m3, - "cachedKeys": MessageLookupByLibrary.simpleMessage( - "Sikeresen betöltöttük a kulcsokat!"), - "changedTheChatAvatar": m4, - "changedTheChatDescriptionTo": m5, - "changedTheChatNameTo": m6, - "changedTheChatPermissions": m7, - "changedTheDisplaynameTo": m8, - "changedTheGuestAccessRules": m9, - "changedTheGuestAccessRulesTo": m10, - "changedTheHistoryVisibility": m11, - "changedTheHistoryVisibilityTo": m12, - "changedTheJoinRules": m13, - "changedTheJoinRulesTo": m14, - "changedTheProfileAvatar": m15, - "changedTheRoomAliases": m16, - "changedTheRoomInvitationLink": m17, - "compareEmojiMatch": MessageLookupByLibrary.simpleMessage( - "Hasonlítsd össze a hangulatjeleket a másik eszközön lévőkkel:"), - "compareNumbersMatch": MessageLookupByLibrary.simpleMessage( - "Hasonlítsd össze a számokat a másik eszközön lévőkkel:"), - "couldNotDecryptMessage": m18, - "countParticipants": m19, - "createdTheChat": m20, - "crossSigningDisabled": - MessageLookupByLibrary.simpleMessage("Kereszt-Aláírás kikapcsolva"), - "crossSigningEnabled": - MessageLookupByLibrary.simpleMessage("Kereszt-Aláírás bekapcsolva"), - "dateAndTimeOfDay": m21, - "dateWithYear": m22, - "dateWithoutYear": m23, - "emoteExists": - MessageLookupByLibrary.simpleMessage("A hangulatjel már létezik!"), - "emoteInvalid": - MessageLookupByLibrary.simpleMessage("Érvénytelen rövid kód!"), - "emoteWarnNeedToPick": MessageLookupByLibrary.simpleMessage( - "A hangulatjelhez válassz egy képet és egy rövid kód"), - "groupWith": m24, - "hasWithdrawnTheInvitationFor": m25, - "incorrectPassphraseOrKey": MessageLookupByLibrary.simpleMessage( - "Hibás jelszó vagy visszaállítási kulcs"), - "inviteContactToGroup": m26, - "inviteText": m27, - "invitedUser": m28, - "is typing...": MessageLookupByLibrary.simpleMessage("gépel..."), - "isDeviceKeyCorrect": MessageLookupByLibrary.simpleMessage( - "Helyes az alábbi eszköz kulcs?"), - "joinedTheChat": m29, - "keysCached": MessageLookupByLibrary.simpleMessage("Kulcsok betöltve"), - "keysMissing": - MessageLookupByLibrary.simpleMessage("Kulcsok hiányoznak"), - "kicked": m30, - "kickedAndBanned": m31, - "lastActiveAgo": m32, - "loadCountMoreParticipants": m33, - "logInTo": m34, - "newVerificationRequest": - MessageLookupByLibrary.simpleMessage("Új hitelesítési kérelem!"), - "noCrossSignBootstrap": MessageLookupByLibrary.simpleMessage( - "FluffyChat jelenleg nem támogatja a Kereszt-Aláírás bekapcsolását. Kérlek engedélyezd Riot-ból."), - "noMegolmBootstrap": MessageLookupByLibrary.simpleMessage( - "FluffyChat jelenleg nem támogatja az Online Kulcs Archívumot (backup). Kérlek engedélyezd Riot-ból."), - "numberSelected": m35, - "ok": MessageLookupByLibrary.simpleMessage("ok"), - "onlineKeyBackupDisabled": MessageLookupByLibrary.simpleMessage( - "Online Kulcs Archívum letiltva"), - "onlineKeyBackupEnabled": MessageLookupByLibrary.simpleMessage( - "Online Kulcs Archívum engedélyezve"), - "passphraseOrKey": MessageLookupByLibrary.simpleMessage( - "Jelszó vagy visszaállítási kulcs"), - "play": m36, - "redactedAnEvent": m37, - "rejectedTheInvitation": m38, - "removedBy": m39, - "seenByUser": m40, - "seenByUserAndCountOthers": m41, - "seenByUserAndUser": m42, - "sentAFile": m43, - "sentAPicture": m44, - "sentASticker": m45, - "sentAVideo": m46, - "sentAnAudio": m47, - "sessionVerified": - MessageLookupByLibrary.simpleMessage("Munkamenet hitelesítve"), - "sharedTheLocation": m48, - "timeOfDay": m49, - "title": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "unbannedUser": m50, - "unknownEvent": m51, - "unknownSessionVerify": MessageLookupByLibrary.simpleMessage( - "Ismeretlen munkamenet, kérlek hitelesítsd"), - "unreadChats": m52, - "unreadMessages": m53, - "unreadMessagesInChats": m54, - "userAndOthersAreTyping": m55, - "userAndUserAreTyping": m56, - "userIsTyping": m57, - "userLeftTheChat": m58, - "userSentUnknownEvent": m59, - "verifiedSession": MessageLookupByLibrary.simpleMessage( - "Sikeresen hitelesítetted a munkamenetedet!"), - "verifyManual": - MessageLookupByLibrary.simpleMessage("Kézi hitelesítés"), - "verifyStart": - MessageLookupByLibrary.simpleMessage("Hitelesítés megkezdése"), - "verifySuccess": - MessageLookupByLibrary.simpleMessage("Sikeresen hitelesítettél!"), - "verifyTitle": - MessageLookupByLibrary.simpleMessage("Másik fiók hitelesítése"), - "waitingPartnerAcceptRequest": MessageLookupByLibrary.simpleMessage( - "Várakozás partnerre, amíg elfogadja a kérést..."), - "waitingPartnerEmoji": MessageLookupByLibrary.simpleMessage( - "Várakozás partnere, amíg elfogadja a hangulatjeleket..."), - "waitingPartnerNumbers": MessageLookupByLibrary.simpleMessage( - "Várakozás partnere, amíg elfogadja a számokat...") - }; -} diff --git a/lib/l10n/messages_ja.dart b/lib/l10n/messages_ja.dart deleted file mode 100644 index c4300d0..0000000 --- a/lib/l10n/messages_ja.dart +++ /dev/null @@ -1,538 +0,0 @@ -// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart -// This is a library that provides messages for a ja locale. All the -// messages from the main program should be duplicated here with the same -// function name. - -// Ignore issues from commonly used lints in this file. -// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new -// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering -// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases -// ignore_for_file:unused_import, file_names - -import 'package:intl/intl.dart'; -import 'package:intl/message_lookup_by_library.dart'; - -final messages = new MessageLookup(); - -typedef String MessageIfAbsent(String messageStr, List args); - -class MessageLookup extends MessageLookupByLibrary { - String get localeName => 'ja'; - - static m0(username) => "${username} が招待を承諾しました"; - - static m1(username) => "${username} がエンドツーエンド暗号化を有効にしました"; - - static m60(username) => "${username} の検証リクエストを承認しますか?"; - - static m2(username, targetName) => "${username}が${targetName}をBANしました"; - - static m3(homeserver) => "デフォルトで${homeserver}に接続されます"; - - static m4(username) => "${username}がチャットアバターを変更しました"; - - static m5(username, description) => - "${username}がチャットの説明を「${description}」に変更しました"; - - static m6(username, chatname) => "${username}がチャットの名前を「${chatname}」に変更しました"; - - static m7(username) => "${username}がチャットの権限を変更しました"; - - static m8(username, displayname) => "${username}が表示名を「${displayname}」に変更しました"; - - static m9(username) => "${username}がゲストのアクセスルールを変更しました"; - - static m10(username, rules) => "${username}がゲストのアクセスルールを${rules}に変更しました"; - - static m11(username) => "${username}が履歴の表示設定を変更しました"; - - static m12(username, rules) => "${username}が履歴の表示設定を${rules}に変更しました"; - - static m13(username) => "${username}が参加ルールを変更しました"; - - static m14(username, joinRules) => "${username}が参加ルールを${joinRules}に変更しました"; - - static m15(username) => "${username}がプロフィールのアバターを変更しました"; - - static m16(username) => "${username}が部屋のエイリアスを変更しました"; - - static m17(username) => "${username}が招待リンクを変更しました"; - - static m18(error) => "メッセージを解読できませんでした: ${error}"; - - static m19(count) => "${count}名の参加者"; - - static m20(username) => "${username}がチャットを作成しました"; - - static m21(date, timeOfDay) => "${date}, ${timeOfDay}"; - - static m22(year, month, day) => "${year}-${month}-${day}"; - - static m23(month, day) => "${month}-${day}"; - - static m24(displayname) => "${displayname}とグループを作成する"; - - static m25(username, targetName) => "${targetName}の招待を${username}が取り下げました"; - - static m26(groupName) => "連絡先から${groupName}に招待する"; - - static m27(username, link) => - "${username}がFluffyChatにあなたを招待しました. \n1. FluffyChatをインストールしてください: http://fluffy.chat \n2. 新しくアカウントを作成するかサインインしてください\n3. 招待リンクを開いてください: ${link}"; - - static m28(username, targetName) => "${username}が${targetName}を招待しました"; - - static m29(username) => "${username}がチャットに参加しました"; - - static m30(username, targetName) => "${username}は${targetName}をキックしました"; - - static m31(username, targetName) => "${username}は${targetName}をキックしBANしました"; - - static m32(localizedTimeShort) => "最終アクティブ: ${localizedTimeShort}"; - - static m33(count) => "あと${count}名参加者を読み込む"; - - static m34(homeserver) => "${homeserver}にログインする"; - - static m35(number) => "${number}選択されています"; - - static m36(fileName) => "${fileName}を再生する"; - - static m37(username) => "${username}がイベントを編集しました"; - - static m38(username) => "${username}は招待を拒否しました"; - - static m39(username) => "${username}によって削除されました"; - - static m40(username) => "${username}が既読"; - - static m41(username, count) => "${username}と他${count}名が既読"; - - static m42(username, username2) => "${username}と${username2}が既読"; - - static m43(username) => "${username}はファイルを送信しました"; - - static m44(username) => "${username}は画像を送信しました"; - - static m45(username) => "${username}はステッカーを送信しました"; - - static m46(username) => "${username}は動画を送信しました"; - - static m47(username) => "${username}は音声を送信しました"; - - static m48(username) => "${username}は現在地を共有しました"; - - static m49(hours12, hours24, minutes, suffix) => - "${hours24}:${minutes} ${suffix}"; - - static m50(username, targetName) => "${username}が${targetName}のBANを解除しました"; - - static m51(type) => "未知のイベント\'${type}\'"; - - static m52(unreadCount) => "${unreadCount}の未読メッセージ"; - - static m53(unreadEvents) => "${unreadEvents}件の未読メッセージ"; - - static m54(unreadEvents, unreadChats) => - "${unreadChats}で${unreadEvents}件の未読メッセージ"; - - static m55(username, count) => "${username}と他${count}名が入力しています..."; - - static m56(username, username2) => "${username}と${username2}が入力しています..."; - - static m57(username) => "${username}が入力しています..."; - - static m58(username) => "${username}は退室しました"; - - static m59(username, type) => "${username}は${type}イベントを送信しました"; - - final messages = _notInlinedMessages(_notInlinedMessages); - static _notInlinedMessages(_) => { - "(Optional) Group name": - MessageLookupByLibrary.simpleMessage("(任意)グループ名"), - "About": MessageLookupByLibrary.simpleMessage("このアプリについて"), - "Accept": MessageLookupByLibrary.simpleMessage("承諾する"), - "Account": MessageLookupByLibrary.simpleMessage("アカウント"), - "Account informations": MessageLookupByLibrary.simpleMessage("アカウント情報"), - "Add a group description": - MessageLookupByLibrary.simpleMessage("グループの説明を追加する"), - "Admin": MessageLookupByLibrary.simpleMessage("管理者"), - "Already have an account?": - MessageLookupByLibrary.simpleMessage("アカウントをすでにお持ちですか?"), - "Anyone can join": MessageLookupByLibrary.simpleMessage("誰でも参加できます"), - "Archive": MessageLookupByLibrary.simpleMessage("アーカイブ"), - "Archived Room": MessageLookupByLibrary.simpleMessage("アーカイブされた部屋"), - "Are guest users allowed to join": - MessageLookupByLibrary.simpleMessage("ゲストユーザーの参加を許可する"), - "Are you sure?": MessageLookupByLibrary.simpleMessage("これでよろしいですか?"), - "Authentication": MessageLookupByLibrary.simpleMessage("認証"), - "Avatar has been changed": - MessageLookupByLibrary.simpleMessage("アバターが変更されました"), - "Ban from chat": MessageLookupByLibrary.simpleMessage("チャットからBANする"), - "Banned": MessageLookupByLibrary.simpleMessage("BANされています"), - "Block Device": MessageLookupByLibrary.simpleMessage("デバイスをブロックする"), - "Cancel": MessageLookupByLibrary.simpleMessage("キャンセル"), - "Change the homeserver": - MessageLookupByLibrary.simpleMessage("ホームサーバーの変更"), - "Change the name of the group": - MessageLookupByLibrary.simpleMessage("グループの名前を変更する"), - "Change the server": MessageLookupByLibrary.simpleMessage("サーバーを変更する"), - "Change wallpaper": MessageLookupByLibrary.simpleMessage("壁紙を変更する"), - "Change your style": MessageLookupByLibrary.simpleMessage("スタイルを変更する"), - "Changelog": MessageLookupByLibrary.simpleMessage("変更履歴"), - "Chat": MessageLookupByLibrary.simpleMessage("チャット"), - "Chat details": MessageLookupByLibrary.simpleMessage("チャットの詳細"), - "Choose a strong password": - MessageLookupByLibrary.simpleMessage("強いパスワードを選択してください"), - "Choose a username": - MessageLookupByLibrary.simpleMessage("ユーザー名を選択してください"), - "Close": MessageLookupByLibrary.simpleMessage("閉じる"), - "Confirm": MessageLookupByLibrary.simpleMessage("確認しました"), - "Connect": MessageLookupByLibrary.simpleMessage("接続"), - "Connection attempt failed": - MessageLookupByLibrary.simpleMessage("接続が失敗しました"), - "Contact has been invited to the group": - MessageLookupByLibrary.simpleMessage("連絡先に登録された人が招待されました"), - "Content viewer": MessageLookupByLibrary.simpleMessage("コンテンツビューアー"), - "Copied to clipboard": - MessageLookupByLibrary.simpleMessage("クリップボードにコピーされました"), - "Copy": MessageLookupByLibrary.simpleMessage("コピー"), - "Could not set avatar": - MessageLookupByLibrary.simpleMessage("アバターをセットできませんでした"), - "Could not set displayname": - MessageLookupByLibrary.simpleMessage("表示名をセットできませんでした"), - "Create": MessageLookupByLibrary.simpleMessage("作成"), - "Create account now": - MessageLookupByLibrary.simpleMessage("アカウントを作成する"), - "Create new group": - MessageLookupByLibrary.simpleMessage("新しいグループを作成する"), - "Currently active": MessageLookupByLibrary.simpleMessage("現在アクティブです"), - "Dark": MessageLookupByLibrary.simpleMessage("ダーク"), - "Delete": MessageLookupByLibrary.simpleMessage("削除"), - "Delete message": MessageLookupByLibrary.simpleMessage("メッセージの削除"), - "Deny": MessageLookupByLibrary.simpleMessage("拒否"), - "Device": MessageLookupByLibrary.simpleMessage("デバイス"), - "Devices": MessageLookupByLibrary.simpleMessage("デバイス"), - "Discard picture": MessageLookupByLibrary.simpleMessage("画像を無視する"), - "Displayname has been changed": - MessageLookupByLibrary.simpleMessage("表示名が変更されました"), - "Donate": MessageLookupByLibrary.simpleMessage("寄付する"), - "Download file": MessageLookupByLibrary.simpleMessage("ファイルのダウンロード"), - "Edit Jitsi instance": - MessageLookupByLibrary.simpleMessage("Jitsiインスタンスを編集する"), - "Edit displayname": MessageLookupByLibrary.simpleMessage("表示名を編集"), - "Emote Settings": MessageLookupByLibrary.simpleMessage("Emote設定"), - "Emote shortcode": MessageLookupByLibrary.simpleMessage("Emoteショートコード"), - "Empty chat": MessageLookupByLibrary.simpleMessage("空のチャット"), - "Encryption": MessageLookupByLibrary.simpleMessage("暗号化"), - "Encryption algorithm": - MessageLookupByLibrary.simpleMessage("暗号化アルゴリズム"), - "Encryption is not enabled": - MessageLookupByLibrary.simpleMessage("暗号化されていません"), - "End to end encryption is currently in Beta! Use at your own risk!": - MessageLookupByLibrary.simpleMessage( - "エンドツーエンド暗号化は現在ベータ版です!これは自分自身の責任で行ってください!"), - "End-to-end encryption settings": - MessageLookupByLibrary.simpleMessage("エンドツーエンド暗号化設定"), - "Enter a group name": - MessageLookupByLibrary.simpleMessage("グループ名を入力してください"), - "Enter a username": - MessageLookupByLibrary.simpleMessage("ユーザー名を入力してください"), - "Enter your homeserver": - MessageLookupByLibrary.simpleMessage("ホームサーバーを入力してください"), - "File name": MessageLookupByLibrary.simpleMessage("ファイル名"), - "File size": MessageLookupByLibrary.simpleMessage("ファイルサイズ"), - "FluffyChat": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "Forward": MessageLookupByLibrary.simpleMessage("進む"), - "Friday": MessageLookupByLibrary.simpleMessage("金曜日"), - "From joining": MessageLookupByLibrary.simpleMessage("参加から"), - "From the invitation": MessageLookupByLibrary.simpleMessage("招待から"), - "Group": MessageLookupByLibrary.simpleMessage("グループ"), - "Group description": MessageLookupByLibrary.simpleMessage("グループの説明"), - "Group description has been changed": - MessageLookupByLibrary.simpleMessage("グループの説明が変更されました"), - "Group is public": - MessageLookupByLibrary.simpleMessage("グループは公開されています"), - "Guests are forbidden": - MessageLookupByLibrary.simpleMessage("ゲストは許可されていません"), - "Guests can join": MessageLookupByLibrary.simpleMessage("ゲストが許可されています"), - "Help": MessageLookupByLibrary.simpleMessage("ヘルプ"), - "Homeserver is not compatible": - MessageLookupByLibrary.simpleMessage("このホームサーバーは互換性がありません"), - "How are you today?": MessageLookupByLibrary.simpleMessage("お元気ですか?"), - "ID": MessageLookupByLibrary.simpleMessage("ID"), - "Identity": MessageLookupByLibrary.simpleMessage("アイデンティティ"), - "Invite contact": MessageLookupByLibrary.simpleMessage("連絡先から招待する"), - "Invited": MessageLookupByLibrary.simpleMessage("招待されました"), - "Invited users only": - MessageLookupByLibrary.simpleMessage("招待されたユーザーのみ"), - "It seems that you have no google services on your phone. That\'s a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": - MessageLookupByLibrary.simpleMessage( - "あなたのスマホにはグーグルサービスがないようですね。プライバシーを保護するための良い選択です!Push通知を受け取るにはmicroGを使うことを推奨しています: https://microg.org/"), - "Kick from chat": MessageLookupByLibrary.simpleMessage("チャットからキックする"), - "Last seen IP": MessageLookupByLibrary.simpleMessage("最終IP"), - "Leave": MessageLookupByLibrary.simpleMessage("退室する"), - "Left the chat": MessageLookupByLibrary.simpleMessage("退室しました"), - "License": MessageLookupByLibrary.simpleMessage("ライセンス"), - "Light": MessageLookupByLibrary.simpleMessage("ライト"), - "Load more...": MessageLookupByLibrary.simpleMessage("更に読み込む..."), - "Loading... Please wait": - MessageLookupByLibrary.simpleMessage("読み込み中...お待ちください。"), - "Login": MessageLookupByLibrary.simpleMessage("ログイン"), - "Logout": MessageLookupByLibrary.simpleMessage("ログアウト"), - "Make a moderator": MessageLookupByLibrary.simpleMessage("モデレータを作成する"), - "Make an admin": MessageLookupByLibrary.simpleMessage("管理者を作成する"), - "Make sure the identifier is valid": - MessageLookupByLibrary.simpleMessage("識別子が正しいか確認してください"), - "Message will be removed for all participants": - MessageLookupByLibrary.simpleMessage("メッセージはすべての参加者から消去されます"), - "Moderator": MessageLookupByLibrary.simpleMessage("モデレータ"), - "Monday": MessageLookupByLibrary.simpleMessage("月曜日"), - "Mute chat": MessageLookupByLibrary.simpleMessage("チャットのミュート"), - "New message in FluffyChat": - MessageLookupByLibrary.simpleMessage("FluffyChatに新しいメッセージがあります"), - "New private chat": - MessageLookupByLibrary.simpleMessage("新しいプライベートチャット"), - "No emotes found. 😕": - MessageLookupByLibrary.simpleMessage("Emoteは見つかりませんでした😕"), - "No permission": MessageLookupByLibrary.simpleMessage("権限がありません"), - "No rooms found...": - MessageLookupByLibrary.simpleMessage("部屋は見つかりませんでした..."), - "None": MessageLookupByLibrary.simpleMessage("なし"), - "Not supported in web": - MessageLookupByLibrary.simpleMessage("ウェブではサポートされていません"), - "Oops something went wrong...": - MessageLookupByLibrary.simpleMessage("おっと、何かがうまくいきませんでした..."), - "Open app to read messages": - MessageLookupByLibrary.simpleMessage("アプリを開いてメッセージを確認してください"), - "Open camera": MessageLookupByLibrary.simpleMessage("カメラを開く"), - "Participating user devices": - MessageLookupByLibrary.simpleMessage("ユーザーの使用しているデバイス"), - "Password": MessageLookupByLibrary.simpleMessage("パスワード"), - "Pick image": MessageLookupByLibrary.simpleMessage("画像を選択してください"), - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": - MessageLookupByLibrary.simpleMessage( - "現時点では、エンドツーエンドの暗号化を使用するにはPantalaimonが必要であることに注意してください。"), - "Please choose a username": - MessageLookupByLibrary.simpleMessage("ユーザー名を選択してください"), - "Please enter a matrix identifier": - MessageLookupByLibrary.simpleMessage("Matrix識別子を入力してください"), - "Please enter your password": - MessageLookupByLibrary.simpleMessage("パスワードを入力してください"), - "Please enter your username": - MessageLookupByLibrary.simpleMessage("ユーザー名を入力してください"), - "Public Rooms": MessageLookupByLibrary.simpleMessage("公開された部屋"), - "Recording": MessageLookupByLibrary.simpleMessage("録音中"), - "Reject": MessageLookupByLibrary.simpleMessage("拒否"), - "Rejoin": MessageLookupByLibrary.simpleMessage("再参加"), - "Remove": MessageLookupByLibrary.simpleMessage("消去"), - "Remove all other devices": - MessageLookupByLibrary.simpleMessage("他のデバイスをすべて削除"), - "Remove device": MessageLookupByLibrary.simpleMessage("デバイスの削除"), - "Remove exile": MessageLookupByLibrary.simpleMessage("追放を取り消し"), - "Remove message": MessageLookupByLibrary.simpleMessage("メッセージを削除"), - "Render rich message content": - MessageLookupByLibrary.simpleMessage("リッチメッセージをレンダリングする"), - "Reply": MessageLookupByLibrary.simpleMessage("返信"), - "Request permission": MessageLookupByLibrary.simpleMessage("権限を要求する"), - "Request to read older messages": - MessageLookupByLibrary.simpleMessage("過去のメッセージを読む権限を要求する"), - "Revoke all permissions": - MessageLookupByLibrary.simpleMessage("すべての権限を取り消す"), - "Room has been upgraded": - MessageLookupByLibrary.simpleMessage("部屋はアップグレードされました"), - "Saturday": MessageLookupByLibrary.simpleMessage("土曜日"), - "Search for a chat": MessageLookupByLibrary.simpleMessage("チャットを検索する"), - "Seen a long time ago": - MessageLookupByLibrary.simpleMessage("ずいぶん前に既読"), - "Send": MessageLookupByLibrary.simpleMessage("送信"), - "Send a message": MessageLookupByLibrary.simpleMessage("メッセージを送信"), - "Send file": MessageLookupByLibrary.simpleMessage("ファイルを送信"), - "Send image": MessageLookupByLibrary.simpleMessage("画像の送信"), - "Set a profile picture": - MessageLookupByLibrary.simpleMessage("プロフィール画像を設定する"), - "Set group description": - MessageLookupByLibrary.simpleMessage("グループの説明を設定する"), - "Set invitation link": - MessageLookupByLibrary.simpleMessage("招待リンクを設定する"), - "Set status": MessageLookupByLibrary.simpleMessage("ステータスの設定"), - "Settings": MessageLookupByLibrary.simpleMessage("設定"), - "Share": MessageLookupByLibrary.simpleMessage("共有"), - "Sign up": MessageLookupByLibrary.simpleMessage("サインアップ"), - "Skip": MessageLookupByLibrary.simpleMessage("スキップ"), - "Source code": MessageLookupByLibrary.simpleMessage("ソースコード"), - "Start your first chat :-)": - MessageLookupByLibrary.simpleMessage("初めてのチャットを開始してください(^_^)"), - "Submit": MessageLookupByLibrary.simpleMessage("送信"), - "Sunday": MessageLookupByLibrary.simpleMessage("日曜日"), - "System": MessageLookupByLibrary.simpleMessage("システム"), - "Tap to show menu": - MessageLookupByLibrary.simpleMessage("メニューを表示するにはタップしてください"), - "The encryption has been corrupted": - MessageLookupByLibrary.simpleMessage("暗号が破損しています"), - "They Don\'t Match": MessageLookupByLibrary.simpleMessage("違います"), - "They Match": MessageLookupByLibrary.simpleMessage("一致しています"), - "This room has been archived.": - MessageLookupByLibrary.simpleMessage("この部屋はアーカイブされています"), - "Thursday": MessageLookupByLibrary.simpleMessage("木曜日"), - "Try to send again": MessageLookupByLibrary.simpleMessage("送信し直してみる"), - "Tuesday": MessageLookupByLibrary.simpleMessage("火曜日"), - "Unblock Device": MessageLookupByLibrary.simpleMessage("デバイスをブロック解除する"), - "Unknown device": MessageLookupByLibrary.simpleMessage("未知デバイス"), - "Unknown encryption algorithm": - MessageLookupByLibrary.simpleMessage("未知の暗号化アルゴリズム"), - "Unmute chat": MessageLookupByLibrary.simpleMessage("チャットをミュート解除する"), - "Use Amoled compatible colors?": - MessageLookupByLibrary.simpleMessage("有機EL(Amoled)対応の色にしますか?"), - "Username": MessageLookupByLibrary.simpleMessage("ユーザー名"), - "Verify": MessageLookupByLibrary.simpleMessage("確認"), - "Verify User": MessageLookupByLibrary.simpleMessage("ユーザーの認証"), - "Video call": MessageLookupByLibrary.simpleMessage("音声通話"), - "Visibility of the chat history": - MessageLookupByLibrary.simpleMessage("チャット履歴の表示"), - "Visible for all participants": - MessageLookupByLibrary.simpleMessage("すべての参加者が閲覧可能です"), - "Visible for everyone": - MessageLookupByLibrary.simpleMessage("すべての人が閲覧可能です"), - "Voice message": MessageLookupByLibrary.simpleMessage("ボイスメッセージ"), - "Wallpaper": MessageLookupByLibrary.simpleMessage("壁紙"), - "Wednesday": MessageLookupByLibrary.simpleMessage("水曜日"), - "Welcome to the cutest instant messenger in the matrix network.": - MessageLookupByLibrary.simpleMessage( - "Matrixネットワークで一番かわいいチャットアプリへようこそ!"), - "Who is allowed to join this group": - MessageLookupByLibrary.simpleMessage("誰がこのチャットに入れますか"), - "Write a message...": - MessageLookupByLibrary.simpleMessage("メッセージを入力してください..."), - "Yes": MessageLookupByLibrary.simpleMessage("はい"), - "You": MessageLookupByLibrary.simpleMessage("あなた"), - "You are invited to this chat": - MessageLookupByLibrary.simpleMessage("チャットに招待されています"), - "You are no longer participating in this chat": - MessageLookupByLibrary.simpleMessage("あなたはもうこのチャットの参加者ではありません"), - "You cannot invite yourself": - MessageLookupByLibrary.simpleMessage("自分自身を招待することはできません"), - "You have been banned from this chat": - MessageLookupByLibrary.simpleMessage("チャットからBANされてしまいました"), - "You won\'t be able to disable the encryption anymore. Are you sure?": - MessageLookupByLibrary.simpleMessage( - "一度暗号化を有効にするともとに戻せません。よろしいですか?"), - "Your own username": MessageLookupByLibrary.simpleMessage("あなたのユーザー名"), - "acceptedTheInvitation": m0, - "activatedEndToEndEncryption": m1, - "alias": MessageLookupByLibrary.simpleMessage("エイリアス"), - "askSSSSCache": MessageLookupByLibrary.simpleMessage( - "鍵をキャッシュするためにはパスフレーズやリカバリーキーを入力してください。"), - "askSSSSSign": MessageLookupByLibrary.simpleMessage( - "他の人を署名するためにはパスフレーズやリカバリーキーを入力してください。"), - "askSSSSVerify": MessageLookupByLibrary.simpleMessage( - "セッションを検証するためにはパスフレーズやリカバリーキーを入力してください。"), - "askVerificationRequest": m60, - "bannedUser": m2, - "byDefaultYouWillBeConnectedTo": m3, - "cachedKeys": MessageLookupByLibrary.simpleMessage("鍵のキャッシュに成功しました!"), - "changedTheChatAvatar": m4, - "changedTheChatDescriptionTo": m5, - "changedTheChatNameTo": m6, - "changedTheChatPermissions": m7, - "changedTheDisplaynameTo": m8, - "changedTheGuestAccessRules": m9, - "changedTheGuestAccessRulesTo": m10, - "changedTheHistoryVisibility": m11, - "changedTheHistoryVisibilityTo": m12, - "changedTheJoinRules": m13, - "changedTheJoinRulesTo": m14, - "changedTheProfileAvatar": m15, - "changedTheRoomAliases": m16, - "changedTheRoomInvitationLink": m17, - "compareEmojiMatch": MessageLookupByLibrary.simpleMessage( - "表示されている絵文字が他のデバイスで表示されているものと一致するか確認してください"), - "compareNumbersMatch": MessageLookupByLibrary.simpleMessage( - "表示されている数字が他のデバイスで表示されているものと一致するか確認してください"), - "couldNotDecryptMessage": m18, - "countParticipants": m19, - "createdTheChat": m20, - "crossSigningDisabled": - MessageLookupByLibrary.simpleMessage("相互署名は使えません"), - "crossSigningEnabled": - MessageLookupByLibrary.simpleMessage("相互署名が使えます"), - "dateAndTimeOfDay": m21, - "dateWithYear": m22, - "dateWithoutYear": m23, - "emoteExists": MessageLookupByLibrary.simpleMessage("Emoteはすでに存在します!"), - "emoteInvalid": MessageLookupByLibrary.simpleMessage("不正なEmoteショートコード"), - "emoteWarnNeedToPick": - MessageLookupByLibrary.simpleMessage("Emoteショートコードと画像を選択してください!"), - "groupWith": m24, - "hasWithdrawnTheInvitationFor": m25, - "incorrectPassphraseOrKey": - MessageLookupByLibrary.simpleMessage("パスフレーズかリカバリーキーが間違っています"), - "inviteContactToGroup": m26, - "inviteText": m27, - "invitedUser": m28, - "is typing...": MessageLookupByLibrary.simpleMessage("が入力しています..."), - "isDeviceKeyCorrect": - MessageLookupByLibrary.simpleMessage("このデバイスキーは正しいですか?"), - "joinedTheChat": m29, - "keysCached": MessageLookupByLibrary.simpleMessage("鍵はキャッシュされたいます"), - "keysMissing": MessageLookupByLibrary.simpleMessage("鍵がありません"), - "kicked": m30, - "kickedAndBanned": m31, - "lastActiveAgo": m32, - "loadCountMoreParticipants": m33, - "logInTo": m34, - "newVerificationRequest": - MessageLookupByLibrary.simpleMessage("新しい認証リクエスト"), - "noCrossSignBootstrap": MessageLookupByLibrary.simpleMessage( - "FluffyChatは現在相互署名機能をサポートしていません。Elementから有効化してください。"), - "noMegolmBootstrap": MessageLookupByLibrary.simpleMessage( - "FluffyChatは現在鍵のオンラインバックアップの有効化をサポートしていません。Elementから有効化してください。"), - "numberSelected": m35, - "ok": MessageLookupByLibrary.simpleMessage("OK"), - "onlineKeyBackupDisabled": - MessageLookupByLibrary.simpleMessage("オンライン鍵バックアップは使用されていません"), - "onlineKeyBackupEnabled": - MessageLookupByLibrary.simpleMessage("オンライン鍵バックアップは使用されています"), - "passphraseOrKey": - MessageLookupByLibrary.simpleMessage("パスフレーズかリカバリーキー"), - "play": m36, - "redactedAnEvent": m37, - "rejectedTheInvitation": m38, - "removedBy": m39, - "seenByUser": m40, - "seenByUserAndCountOthers": m41, - "seenByUserAndUser": m42, - "sentAFile": m43, - "sentAPicture": m44, - "sentASticker": m45, - "sentAVideo": m46, - "sentAnAudio": m47, - "sessionVerified": MessageLookupByLibrary.simpleMessage("セッションは確認済みです"), - "sharedTheLocation": m48, - "timeOfDay": m49, - "title": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "unbannedUser": m50, - "unknownEvent": m51, - "unknownSessionVerify": - MessageLookupByLibrary.simpleMessage("未知のセッションです。確認してください。"), - "unreadChats": m52, - "unreadMessages": m53, - "unreadMessagesInChats": m54, - "userAndOthersAreTyping": m55, - "userAndUserAreTyping": m56, - "userIsTyping": m57, - "userLeftTheChat": m58, - "userSentUnknownEvent": m59, - "verifiedSession": - MessageLookupByLibrary.simpleMessage("セッションの確認ができました!"), - "verifyManual": MessageLookupByLibrary.simpleMessage("手動で確認"), - "verifyStart": MessageLookupByLibrary.simpleMessage("確認を始める"), - "verifySuccess": MessageLookupByLibrary.simpleMessage("確認が完了しました!"), - "verifyTitle": MessageLookupByLibrary.simpleMessage("他のアカウントを確認中"), - "waitingPartnerAcceptRequest": - MessageLookupByLibrary.simpleMessage("パートナーのリクエスト承諾待ちです"), - "waitingPartnerEmoji": - MessageLookupByLibrary.simpleMessage("パートナーの絵文字承諾待ちです..."), - "waitingPartnerNumbers": - MessageLookupByLibrary.simpleMessage("パートナーの数字承諾待ちです") - }; -} diff --git a/lib/l10n/messages_messages.dart b/lib/l10n/messages_messages.dart deleted file mode 100644 index 07a703e..0000000 --- a/lib/l10n/messages_messages.dart +++ /dev/null @@ -1,592 +0,0 @@ -// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart -// This is a library that provides messages for a messages locale. All the -// messages from the main program should be duplicated here with the same -// function name. - -// Ignore issues from commonly used lints in this file. -// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new -// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering -// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases -// ignore_for_file:unused_import, file_names - -import 'package:intl/intl.dart'; -import 'package:intl/message_lookup_by_library.dart'; - -final messages = new MessageLookup(); - -typedef String MessageIfAbsent(String messageStr, List args); - -class MessageLookup extends MessageLookupByLibrary { - String get localeName => 'messages'; - - static m0(username) => "${username} accepted the invitation"; - - static m1(username) => "${username} activated end to end encryption"; - - static m60(username) => "Accept this verification request from ${username}?"; - - static m2(username, targetName) => "${username} banned ${targetName}"; - - static m3(homeserver) => "By default you will be connected to ${homeserver}"; - - static m4(username) => "${username} changed the chat avatar"; - - static m5(username, description) => - "${username} changed the chat description to: \'${description}\'"; - - static m6(username, chatname) => - "${username} changed the chat name to: \'${chatname}\'"; - - static m7(username) => "${username} changed the chat permissions"; - - static m8(username, displayname) => - "${username} changed the displayname to: ${displayname}"; - - static m9(username) => "${username} changed the guest access rules"; - - static m10(username, rules) => - "${username} changed the guest access rules to: ${rules}"; - - static m11(username) => "${username} changed the history visibility"; - - static m12(username, rules) => - "${username} changed the history visibility to: ${rules}"; - - static m13(username) => "${username} changed the join rules"; - - static m14(username, joinRules) => - "${username} changed the join rules to: ${joinRules}"; - - static m15(username) => "${username} changed their avatar"; - - static m16(username) => "${username} changed the room aliases"; - - static m17(username) => "${username} changed the invitation link"; - - static m18(error) => "Could not decrypt message: ${error}"; - - static m19(count) => "${count} participants"; - - static m20(username) => "${username} created the chat"; - - static m21(date, timeOfDay) => "${date}, ${timeOfDay}"; - - static m22(year, month, day) => "${year}-${month}-${day}"; - - static m23(month, day) => "${month}-${day}"; - - static m24(displayname) => "Group with ${displayname}"; - - static m25(username, targetName) => - "${username} has withdrawn the invitation for ${targetName}"; - - static m26(groupName) => "Invite contact to ${groupName}"; - - static m27(username, link) => - "${username} invited you to FluffyChat. \n1. Install FluffyChat: http://fluffy.chat \n2. Sign up or sign in \n3. Open the invite link: ${link}"; - - static m28(username, targetName) => "${username} invited ${targetName}"; - - static m29(username) => "${username} joined the chat"; - - static m30(username, targetName) => "${username} kicked ${targetName}"; - - static m31(username, targetName) => - "${username} kicked and banned ${targetName}"; - - static m32(localizedTimeShort) => "Last active: ${localizedTimeShort}"; - - static m33(count) => "Load ${count} more participants"; - - static m34(homeserver) => "Log in to ${homeserver}"; - - static m35(number) => "${number} selected"; - - static m36(fileName) => "Play ${fileName}"; - - static m37(username) => "${username} redacted an event"; - - static m38(username) => "${username} rejected the invitation"; - - static m39(username) => "Removed by ${username}"; - - static m40(username) => "Seen by ${username}"; - - static m41(username, count) => "Seen by ${username} and ${count} others"; - - static m42(username, username2) => "Seen by ${username} and ${username2}"; - - static m43(username) => "${username} sent a file"; - - static m44(username) => "${username} sent a picture"; - - static m45(username) => "${username} sent a sticker"; - - static m46(username) => "${username} sent a video"; - - static m47(username) => "${username} sent an audio"; - - static m48(username) => "${username} shared the location"; - - static m49(hours12, hours24, minutes, suffix) => - "${hours12}:${minutes} ${suffix}"; - - static m50(username, targetName) => "${username} unbanned ${targetName}"; - - static m51(type) => "Unknown event \'${type}\'"; - - static m52(unreadCount) => "${unreadCount} unread chats"; - - static m53(unreadEvents) => "${unreadEvents} unread messages"; - - static m54(unreadEvents, unreadChats) => - "${unreadEvents} unread messages in ${unreadChats} chats"; - - static m55(username, count) => - "${username} and ${count} others are typing..."; - - static m56(username, username2) => - "${username} and ${username2} are typing..."; - - static m57(username) => "${username} is typing..."; - - static m58(username) => "${username} left the chat"; - - static m59(username, type) => "${username} sent a ${type} event"; - - final messages = _notInlinedMessages(_notInlinedMessages); - static _notInlinedMessages(_) => { - "(Optional) Group name": - MessageLookupByLibrary.simpleMessage("(Optional) Group name"), - "About": MessageLookupByLibrary.simpleMessage("About"), - "Accept": MessageLookupByLibrary.simpleMessage("Accept"), - "Account": MessageLookupByLibrary.simpleMessage("Account"), - "Account informations": - MessageLookupByLibrary.simpleMessage("Account informations"), - "Add a group description": - MessageLookupByLibrary.simpleMessage("Add a group description"), - "Admin": MessageLookupByLibrary.simpleMessage("Admin"), - "Already have an account?": - MessageLookupByLibrary.simpleMessage("Already have an account?"), - "Anyone can join": - MessageLookupByLibrary.simpleMessage("Anyone can join"), - "Archive": MessageLookupByLibrary.simpleMessage("Archive"), - "Archived Room": MessageLookupByLibrary.simpleMessage("Archived Room"), - "Are guest users allowed to join": MessageLookupByLibrary.simpleMessage( - "Are guest users allowed to join"), - "Are you sure?": MessageLookupByLibrary.simpleMessage("Are you sure?"), - "Authentication": - MessageLookupByLibrary.simpleMessage("Authentication"), - "Avatar has been changed": - MessageLookupByLibrary.simpleMessage("Avatar has been changed"), - "Ban from chat": MessageLookupByLibrary.simpleMessage("Ban from chat"), - "Banned": MessageLookupByLibrary.simpleMessage("Banned"), - "Block Device": MessageLookupByLibrary.simpleMessage("Block Device"), - "Cancel": MessageLookupByLibrary.simpleMessage("Cancel"), - "Change the homeserver": - MessageLookupByLibrary.simpleMessage("Change the homeserver"), - "Change the name of the group": MessageLookupByLibrary.simpleMessage( - "Change the name of the group"), - "Change the server": - MessageLookupByLibrary.simpleMessage("Change the server"), - "Change wallpaper": - MessageLookupByLibrary.simpleMessage("Change wallpaper"), - "Change your style": - MessageLookupByLibrary.simpleMessage("Change your style"), - "Changelog": MessageLookupByLibrary.simpleMessage("Changelog"), - "Chat": MessageLookupByLibrary.simpleMessage("Chat"), - "Chat details": MessageLookupByLibrary.simpleMessage("Chat details"), - "Choose a strong password": - MessageLookupByLibrary.simpleMessage("Choose a strong password"), - "Choose a username": - MessageLookupByLibrary.simpleMessage("Choose a username"), - "Close": MessageLookupByLibrary.simpleMessage("Close"), - "Confirm": MessageLookupByLibrary.simpleMessage("Confirm"), - "Connect": MessageLookupByLibrary.simpleMessage("Connect"), - "Connection attempt failed": - MessageLookupByLibrary.simpleMessage("Connection attempt failed"), - "Contact has been invited to the group": - MessageLookupByLibrary.simpleMessage( - "Contact has been invited to the group"), - "Content viewer": - MessageLookupByLibrary.simpleMessage("Content viewer"), - "Copied to clipboard": - MessageLookupByLibrary.simpleMessage("Copied to clipboard"), - "Copy": MessageLookupByLibrary.simpleMessage("Copy"), - "Could not set avatar": - MessageLookupByLibrary.simpleMessage("Could not set avatar"), - "Could not set displayname": - MessageLookupByLibrary.simpleMessage("Could not set displayname"), - "Create": MessageLookupByLibrary.simpleMessage("Create"), - "Create account now": - MessageLookupByLibrary.simpleMessage("Create account now"), - "Create new group": - MessageLookupByLibrary.simpleMessage("Create new group"), - "Currently active": - MessageLookupByLibrary.simpleMessage("Currently active"), - "Dark": MessageLookupByLibrary.simpleMessage("Dark"), - "Delete": MessageLookupByLibrary.simpleMessage("Delete"), - "Delete message": - MessageLookupByLibrary.simpleMessage("Delete message"), - "Deny": MessageLookupByLibrary.simpleMessage("Deny"), - "Device": MessageLookupByLibrary.simpleMessage("Device"), - "Devices": MessageLookupByLibrary.simpleMessage("Devices"), - "Discard picture": - MessageLookupByLibrary.simpleMessage("Discard picture"), - "Displayname has been changed": MessageLookupByLibrary.simpleMessage( - "Displayname has been changed"), - "Donate": MessageLookupByLibrary.simpleMessage("Donate"), - "Download file": MessageLookupByLibrary.simpleMessage("Download file"), - "Edit Jitsi instance": - MessageLookupByLibrary.simpleMessage("Edit Jitsi instance"), - "Edit displayname": - MessageLookupByLibrary.simpleMessage("Edit displayname"), - "Emote Settings": - MessageLookupByLibrary.simpleMessage("Emote Settings"), - "Emote shortcode": - MessageLookupByLibrary.simpleMessage("Emote shortcode"), - "Empty chat": MessageLookupByLibrary.simpleMessage("Empty chat"), - "Encryption": MessageLookupByLibrary.simpleMessage("Encryption"), - "Encryption algorithm": - MessageLookupByLibrary.simpleMessage("Encryption algorithm"), - "Encryption is not enabled": - MessageLookupByLibrary.simpleMessage("Encryption is not enabled"), - "End to end encryption is currently in Beta! Use at your own risk!": - MessageLookupByLibrary.simpleMessage( - "End to end encryption is currently in Beta! Use at your own risk!"), - "End-to-end encryption settings": MessageLookupByLibrary.simpleMessage( - "End-to-end encryption settings"), - "Enter a group name": - MessageLookupByLibrary.simpleMessage("Enter a group name"), - "Enter a username": - MessageLookupByLibrary.simpleMessage("Enter a username"), - "Enter your homeserver": - MessageLookupByLibrary.simpleMessage("Enter your homeserver"), - "File name": MessageLookupByLibrary.simpleMessage("File name"), - "File size": MessageLookupByLibrary.simpleMessage("File size"), - "FluffyChat": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "Forward": MessageLookupByLibrary.simpleMessage("Forward"), - "Friday": MessageLookupByLibrary.simpleMessage("Friday"), - "From joining": MessageLookupByLibrary.simpleMessage("From joining"), - "From the invitation": - MessageLookupByLibrary.simpleMessage("From the invitation"), - "Group": MessageLookupByLibrary.simpleMessage("Group"), - "Group description": - MessageLookupByLibrary.simpleMessage("Group description"), - "Group description has been changed": - MessageLookupByLibrary.simpleMessage( - "Group description has been changed"), - "Group is public": - MessageLookupByLibrary.simpleMessage("Group is public"), - "Guests are forbidden": - MessageLookupByLibrary.simpleMessage("Guests are forbidden"), - "Guests can join": - MessageLookupByLibrary.simpleMessage("Guests can join"), - "Help": MessageLookupByLibrary.simpleMessage("Help"), - "Homeserver is not compatible": MessageLookupByLibrary.simpleMessage( - "Homeserver is not compatible"), - "How are you today?": - MessageLookupByLibrary.simpleMessage("How are you today?"), - "ID": MessageLookupByLibrary.simpleMessage("ID"), - "Identity": MessageLookupByLibrary.simpleMessage("Identity"), - "Invite contact": - MessageLookupByLibrary.simpleMessage("Invite contact"), - "Invited": MessageLookupByLibrary.simpleMessage("Invited"), - "Invited users only": - MessageLookupByLibrary.simpleMessage("Invited users only"), - "It seems that you have no google services on your phone. That\'s a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": - MessageLookupByLibrary.simpleMessage( - "It seems that you have no google services on your phone. That\'s a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/"), - "Kick from chat": - MessageLookupByLibrary.simpleMessage("Kick from chat"), - "Last seen IP": MessageLookupByLibrary.simpleMessage("Last seen IP"), - "Leave": MessageLookupByLibrary.simpleMessage("Leave"), - "Left the chat": MessageLookupByLibrary.simpleMessage("Left the chat"), - "License": MessageLookupByLibrary.simpleMessage("License"), - "Light": MessageLookupByLibrary.simpleMessage("Light"), - "Load more...": MessageLookupByLibrary.simpleMessage("Load more..."), - "Loading... Please wait": - MessageLookupByLibrary.simpleMessage("Loading... Please wait"), - "Login": MessageLookupByLibrary.simpleMessage("Login"), - "Logout": MessageLookupByLibrary.simpleMessage("Logout"), - "Make a moderator": - MessageLookupByLibrary.simpleMessage("Make a moderator"), - "Make an admin": MessageLookupByLibrary.simpleMessage("Make an admin"), - "Make sure the identifier is valid": - MessageLookupByLibrary.simpleMessage( - "Make sure the identifier is valid"), - "Message will be removed for all participants": - MessageLookupByLibrary.simpleMessage( - "Message will be removed for all participants"), - "Moderator": MessageLookupByLibrary.simpleMessage("Moderator"), - "Monday": MessageLookupByLibrary.simpleMessage("Monday"), - "Mute chat": MessageLookupByLibrary.simpleMessage("Mute chat"), - "New message in FluffyChat": - MessageLookupByLibrary.simpleMessage("New message in FluffyChat"), - "New private chat": - MessageLookupByLibrary.simpleMessage("New private chat"), - "No emotes found. 😕": - MessageLookupByLibrary.simpleMessage("No emotes found. 😕"), - "No permission": MessageLookupByLibrary.simpleMessage("No permission"), - "No rooms found...": - MessageLookupByLibrary.simpleMessage("No rooms found..."), - "None": MessageLookupByLibrary.simpleMessage("None"), - "Not supported in web": - MessageLookupByLibrary.simpleMessage("Not supported in web"), - "Oops something went wrong...": MessageLookupByLibrary.simpleMessage( - "Oops something went wrong..."), - "Open app to read messages": - MessageLookupByLibrary.simpleMessage("Open app to read messages"), - "Open camera": MessageLookupByLibrary.simpleMessage("Open camera"), - "Participating user devices": - MessageLookupByLibrary.simpleMessage("Participating user devices"), - "Password": MessageLookupByLibrary.simpleMessage("Password"), - "Pick image": MessageLookupByLibrary.simpleMessage("Pick image"), - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": - MessageLookupByLibrary.simpleMessage( - "Please be aware that you need Pantalaimon to use end-to-end encryption for now."), - "Please choose a username": - MessageLookupByLibrary.simpleMessage("Please choose a username"), - "Please enter a matrix identifier": - MessageLookupByLibrary.simpleMessage( - "Please enter a matrix identifier"), - "Please enter your password": - MessageLookupByLibrary.simpleMessage("Please enter your password"), - "Please enter your username": - MessageLookupByLibrary.simpleMessage("Please enter your username"), - "Public Rooms": MessageLookupByLibrary.simpleMessage("Public Rooms"), - "Recording": MessageLookupByLibrary.simpleMessage("Recording"), - "Reject": MessageLookupByLibrary.simpleMessage("Reject"), - "Rejoin": MessageLookupByLibrary.simpleMessage("Rejoin"), - "Remove": MessageLookupByLibrary.simpleMessage("Remove"), - "Remove all other devices": - MessageLookupByLibrary.simpleMessage("Remove all other devices"), - "Remove device": MessageLookupByLibrary.simpleMessage("Remove device"), - "Remove exile": MessageLookupByLibrary.simpleMessage("Remove exile"), - "Remove message": - MessageLookupByLibrary.simpleMessage("Remove message"), - "Render rich message content": - MessageLookupByLibrary.simpleMessage("Render rich message content"), - "Reply": MessageLookupByLibrary.simpleMessage("Reply"), - "Request permission": - MessageLookupByLibrary.simpleMessage("Request permission"), - "Request to read older messages": MessageLookupByLibrary.simpleMessage( - "Request to read older messages"), - "Revoke all permissions": - MessageLookupByLibrary.simpleMessage("Revoke all permissions"), - "Room has been upgraded": - MessageLookupByLibrary.simpleMessage("Room has been upgraded"), - "Saturday": MessageLookupByLibrary.simpleMessage("Saturday"), - "Search for a chat": - MessageLookupByLibrary.simpleMessage("Search for a chat"), - "Seen a long time ago": - MessageLookupByLibrary.simpleMessage("Seen a long time ago"), - "Send": MessageLookupByLibrary.simpleMessage("Send"), - "Send a message": - MessageLookupByLibrary.simpleMessage("Send a message"), - "Send file": MessageLookupByLibrary.simpleMessage("Send file"), - "Send image": MessageLookupByLibrary.simpleMessage("Send image"), - "Set a profile picture": - MessageLookupByLibrary.simpleMessage("Set a profile picture"), - "Set group description": - MessageLookupByLibrary.simpleMessage("Set group description"), - "Set invitation link": - MessageLookupByLibrary.simpleMessage("Set invitation link"), - "Set status": MessageLookupByLibrary.simpleMessage("Set status"), - "Settings": MessageLookupByLibrary.simpleMessage("Settings"), - "Share": MessageLookupByLibrary.simpleMessage("Share"), - "Sign up": MessageLookupByLibrary.simpleMessage("Sign up"), - "Skip": MessageLookupByLibrary.simpleMessage("Skip"), - "Source code": MessageLookupByLibrary.simpleMessage("Source code"), - "Start your first chat :-)": - MessageLookupByLibrary.simpleMessage("Start your first chat :-)"), - "Submit": MessageLookupByLibrary.simpleMessage("Submit"), - "Sunday": MessageLookupByLibrary.simpleMessage("Sunday"), - "System": MessageLookupByLibrary.simpleMessage("System"), - "Tap to show menu": - MessageLookupByLibrary.simpleMessage("Tap to show menu"), - "The encryption has been corrupted": - MessageLookupByLibrary.simpleMessage( - "The encryption has been corrupted"), - "They Don\'t Match": - MessageLookupByLibrary.simpleMessage("They Don\'t Match"), - "They Match": MessageLookupByLibrary.simpleMessage("They Match"), - "This room has been archived.": MessageLookupByLibrary.simpleMessage( - "This room has been archived."), - "Thursday": MessageLookupByLibrary.simpleMessage("Thursday"), - "Try to send again": - MessageLookupByLibrary.simpleMessage("Try to send again"), - "Tuesday": MessageLookupByLibrary.simpleMessage("Tuesday"), - "Unblock Device": - MessageLookupByLibrary.simpleMessage("Unblock Device"), - "Unknown device": - MessageLookupByLibrary.simpleMessage("Unknown device"), - "Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage( - "Unknown encryption algorithm"), - "Unmute chat": MessageLookupByLibrary.simpleMessage("Unmute chat"), - "Use Amoled compatible colors?": MessageLookupByLibrary.simpleMessage( - "Use Amoled compatible colors?"), - "Username": MessageLookupByLibrary.simpleMessage("Username"), - "Verify": MessageLookupByLibrary.simpleMessage("Verify"), - "Verify User": MessageLookupByLibrary.simpleMessage("Verify User"), - "Video call": MessageLookupByLibrary.simpleMessage("Video call"), - "Visibility of the chat history": MessageLookupByLibrary.simpleMessage( - "Visibility of the chat history"), - "Visible for all participants": MessageLookupByLibrary.simpleMessage( - "Visible for all participants"), - "Visible for everyone": - MessageLookupByLibrary.simpleMessage("Visible for everyone"), - "Voice message": MessageLookupByLibrary.simpleMessage("Voice message"), - "Wallpaper": MessageLookupByLibrary.simpleMessage("Wallpaper"), - "Wednesday": MessageLookupByLibrary.simpleMessage("Wednesday"), - "Welcome to the cutest instant messenger in the matrix network.": - MessageLookupByLibrary.simpleMessage( - "Welcome to the cutest instant messenger in the matrix network."), - "Who is allowed to join this group": - MessageLookupByLibrary.simpleMessage( - "Who is allowed to join this group"), - "Write a message...": - MessageLookupByLibrary.simpleMessage("Write a message..."), - "Yes": MessageLookupByLibrary.simpleMessage("Yes"), - "You": MessageLookupByLibrary.simpleMessage("You"), - "You are invited to this chat": MessageLookupByLibrary.simpleMessage( - "You are invited to this chat"), - "You are no longer participating in this chat": - MessageLookupByLibrary.simpleMessage( - "You are no longer participating in this chat"), - "You cannot invite yourself": - MessageLookupByLibrary.simpleMessage("You cannot invite yourself"), - "You have been banned from this chat": - MessageLookupByLibrary.simpleMessage( - "You have been banned from this chat"), - "You won\'t be able to disable the encryption anymore. Are you sure?": - MessageLookupByLibrary.simpleMessage( - "You won\'t be able to disable the encryption anymore. Are you sure?"), - "Your own username": - MessageLookupByLibrary.simpleMessage("Your own username"), - "acceptedTheInvitation": m0, - "activatedEndToEndEncryption": m1, - "alias": MessageLookupByLibrary.simpleMessage("alias"), - "askSSSSCache": MessageLookupByLibrary.simpleMessage( - "Please enter your secure store passphrase or recovery key to cache the keys."), - "askSSSSSign": MessageLookupByLibrary.simpleMessage( - "To be able to sign the other person, please enter your secure store passphrase or recovery key."), - "askSSSSVerify": MessageLookupByLibrary.simpleMessage( - "Please enter your secure store passphrase or recovery key to verify your session."), - "askVerificationRequest": m60, - "bannedUser": m2, - "byDefaultYouWillBeConnectedTo": m3, - "cachedKeys": - MessageLookupByLibrary.simpleMessage("Successfully cached keys!"), - "changedTheChatAvatar": m4, - "changedTheChatDescriptionTo": m5, - "changedTheChatNameTo": m6, - "changedTheChatPermissions": m7, - "changedTheDisplaynameTo": m8, - "changedTheGuestAccessRules": m9, - "changedTheGuestAccessRulesTo": m10, - "changedTheHistoryVisibility": m11, - "changedTheHistoryVisibilityTo": m12, - "changedTheJoinRules": m13, - "changedTheJoinRulesTo": m14, - "changedTheProfileAvatar": m15, - "changedTheRoomAliases": m16, - "changedTheRoomInvitationLink": m17, - "compareEmojiMatch": MessageLookupByLibrary.simpleMessage( - "Compare and make sure the following emoji match those of the other device:"), - "compareNumbersMatch": MessageLookupByLibrary.simpleMessage( - "Compare and make sure the following numbers match those of the other device:"), - "couldNotDecryptMessage": m18, - "countParticipants": m19, - "createdTheChat": m20, - "crossSigningDisabled": - MessageLookupByLibrary.simpleMessage("Cross-Signing is disabled"), - "crossSigningEnabled": - MessageLookupByLibrary.simpleMessage("Cross-Signing is enabled"), - "dateAndTimeOfDay": m21, - "dateWithYear": m22, - "dateWithoutYear": m23, - "emoteExists": - MessageLookupByLibrary.simpleMessage("Emote already exists!"), - "emoteInvalid": - MessageLookupByLibrary.simpleMessage("Invalid emote shortcode!"), - "emoteWarnNeedToPick": MessageLookupByLibrary.simpleMessage( - "You need to pick an emote shortcode and an image!"), - "groupWith": m24, - "hasWithdrawnTheInvitationFor": m25, - "incorrectPassphraseOrKey": MessageLookupByLibrary.simpleMessage( - "Incorrect passphrase or recovery key"), - "inviteContactToGroup": m26, - "inviteText": m27, - "invitedUser": m28, - "is typing...": MessageLookupByLibrary.simpleMessage("is typing..."), - "isDeviceKeyCorrect": MessageLookupByLibrary.simpleMessage( - "Is the following device key correct?"), - "joinedTheChat": m29, - "keysCached": MessageLookupByLibrary.simpleMessage("Keys are cached"), - "keysMissing": MessageLookupByLibrary.simpleMessage("Keys are missing"), - "kicked": m30, - "kickedAndBanned": m31, - "lastActiveAgo": m32, - "loadCountMoreParticipants": m33, - "logInTo": m34, - "newVerificationRequest": - MessageLookupByLibrary.simpleMessage("New verification request!"), - "noCrossSignBootstrap": MessageLookupByLibrary.simpleMessage( - "Fluffychat currently does not support enabling Cross-Signing. Please enable it from within Element."), - "noMegolmBootstrap": MessageLookupByLibrary.simpleMessage( - "Fluffychat currently does not support enabling Online Key Backup. Please enable it from within Element."), - "numberSelected": m35, - "ok": MessageLookupByLibrary.simpleMessage("ok"), - "onlineKeyBackupDisabled": MessageLookupByLibrary.simpleMessage( - "Online Key Backup is disabled"), - "onlineKeyBackupEnabled": MessageLookupByLibrary.simpleMessage( - "Online Key Backup is enabled"), - "passphraseOrKey": - MessageLookupByLibrary.simpleMessage("passphrase or recovery key"), - "play": m36, - "redactedAnEvent": m37, - "rejectedTheInvitation": m38, - "removedBy": m39, - "seenByUser": m40, - "seenByUserAndCountOthers": m41, - "seenByUserAndUser": m42, - "sentAFile": m43, - "sentAPicture": m44, - "sentASticker": m45, - "sentAVideo": m46, - "sentAnAudio": m47, - "sessionVerified": - MessageLookupByLibrary.simpleMessage("Session is verified"), - "sharedTheLocation": m48, - "timeOfDay": m49, - "title": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "unbannedUser": m50, - "unknownEvent": m51, - "unknownSessionVerify": MessageLookupByLibrary.simpleMessage( - "Unknown session, please verify"), - "unreadChats": m52, - "unreadMessages": m53, - "unreadMessagesInChats": m54, - "userAndOthersAreTyping": m55, - "userAndUserAreTyping": m56, - "userIsTyping": m57, - "userLeftTheChat": m58, - "userSentUnknownEvent": m59, - "verifiedSession": MessageLookupByLibrary.simpleMessage( - "Successfully verified session!"), - "verifyManual": MessageLookupByLibrary.simpleMessage("Verify Manually"), - "verifyStart": - MessageLookupByLibrary.simpleMessage("Start Verification"), - "verifySuccess": - MessageLookupByLibrary.simpleMessage("You successfully verified!"), - "verifyTitle": - MessageLookupByLibrary.simpleMessage("Verifying other account"), - "waitingPartnerAcceptRequest": MessageLookupByLibrary.simpleMessage( - "Waiting for partner to accept the request..."), - "waitingPartnerEmoji": MessageLookupByLibrary.simpleMessage( - "Waiting for partner to accept the emoji..."), - "waitingPartnerNumbers": MessageLookupByLibrary.simpleMessage( - "Waiting for partner to accept the numbers...") - }; -} diff --git a/lib/l10n/messages_pl.dart b/lib/l10n/messages_pl.dart deleted file mode 100644 index c04b33d..0000000 --- a/lib/l10n/messages_pl.dart +++ /dev/null @@ -1,503 +0,0 @@ -// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart -// This is a library that provides messages for a pl locale. All the -// messages from the main program should be duplicated here with the same -// function name. - -// Ignore issues from commonly used lints in this file. -// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new -// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering -// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases -// ignore_for_file:unused_import, file_names - -import 'package:intl/intl.dart'; -import 'package:intl/message_lookup_by_library.dart'; - -final messages = new MessageLookup(); - -typedef String MessageIfAbsent(String messageStr, List args); - -class MessageLookup extends MessageLookupByLibrary { - String get localeName => 'pl'; - - static m0(username) => "${username} zaakceptował/-a zaproszenie"; - - static m1(username) => "${username} aktywował/-a szyfrowanie end-to-end"; - - static m2(username, targetName) => "${username} zbanował/-a ${targetName}"; - - static m3(homeserver) => "Domyślnie łączy się z ${homeserver}"; - - static m4(username) => "${username} zmienił/-a zdjęcie profilowe"; - - static m5(username, description) => - "${username} zmienił/-a opis czatu na: \'${description}\'"; - - static m6(username, chatname) => - "${username} zmienił/-a nick na: \'${chatname}\'"; - - static m7(username) => "${username} zmienił/-a uprawnienia czatu"; - - static m8(username, displayname) => - "${username} zmienił/-a wyświetlany nick na: ${displayname}"; - - static m9(username) => "${username} zmienił/-a zasady dostępu dla gości"; - - static m10(username, rules) => - "${username} zmienił/-a zasady dostępu dla gości na: ${rules}"; - - static m11(username) => "${username} zmienił/-a widoczność historii"; - - static m12(username, rules) => - "${username} zmienił/-a widoczność historii na: ${rules}"; - - static m13(username) => "${username} zmienił/-a zasady wejścia"; - - static m14(username, joinRules) => - "${username} zmienił/-a zasady wejścia na: ${joinRules}"; - - static m15(username) => "${username} zmienił/-a zdjęcie profilowe"; - - static m16(username) => "${username} zmienił/-a skrót pokoju"; - - static m17(username) => - "${username} zmienił/-a link do zaproszenia do pokoju"; - - static m18(error) => "Nie można odszyfrować wiadomości: ${error}"; - - static m19(count) => "${count} uczestników"; - - static m20(username) => "${username} stworzył/-a czat"; - - static m21(date, timeOfDay) => "${date}, ${timeOfDay}"; - - static m22(year, month, day) => "${day}-${month}-${year}"; - - static m23(month, day) => "${month}-${day}"; - - static m24(displayname) => "Grupa z ${displayname}"; - - static m25(username, targetName) => - "${username} wycofał/-a zaproszenie dla ${targetName}"; - - static m26(groupName) => "Zaproś kontakty do ${groupName}"; - - static m27(username, link) => - "${username} zaprosił/-a cię do FluffyChat. \n1. Zainstaluj FluffyChat: http://fluffy.chat \n2. Zarejestuj się lub zaloguj \n3. Otwórz link zaproszenia: ${link}"; - - static m28(username, targetName) => "${username} zaprosił/-a ${targetName}"; - - static m29(username) => "${username} dołączył/-a do czatu"; - - static m30(username, targetName) => "${username} wyrzucił/-a ${targetName}"; - - static m31(username, targetName) => - "${username} wyrzucił/-a i zbanował/-a ${targetName}"; - - static m32(localizedTimeShort) => "Ostatnio widziano: ${localizedTimeShort}"; - - static m33(count) => "Załaduj ${count} uczestników więcej"; - - static m34(homeserver) => "Zaloguj się do ${homeserver}"; - - static m35(number) => "${number} wybrany"; - - static m36(fileName) => "Otwórz ${fileName}"; - - static m37(username) => "${username} stworzył/-a wydarzenie"; - - static m38(username) => "${username} odrzucił/-a zaproszenie"; - - static m39(username) => "Usunięta przez ${username}"; - - static m40(username) => "Zobaczone przez ${username}"; - - static m41(username, count) => - "Zobaczone przez ${username} oraz ${count} innych"; - - static m42(username, username2) => - "Zobaczone przez ${username} oraz ${username2}"; - - static m43(username) => "${username} wysłał/-a plik"; - - static m44(username) => "${username} wysłał/-a obraz"; - - static m45(username) => "${username} wysłał/-a naklejkę"; - - static m46(username) => "${username} wysłał/-a wideo"; - - static m47(username) => "${username} wysłał/-a plik audio"; - - static m48(username) => "${username} udostępnił/-a lokalizacje"; - - static m49(hours12, hours24, minutes, suffix) => "${hours24}:${minutes}"; - - static m50(username, targetName) => "${username} odbanował/-a ${targetName}"; - - static m51(type) => "Nieznane zdarzenie \'${type}\'"; - - static m52(unreadCount) => "${unreadCount} nieprzeczytanych czatów"; - - static m53(unreadEvents) => "${unreadEvents} nieprzeczytanych wiadomości"; - - static m54(unreadEvents, unreadChats) => - "${unreadEvents} nieprzeczytanych wiadomości w ${unreadChats} czatach"; - - static m55(username, count) => "${username} oraz ${count} innych pisze..."; - - static m56(username, username2) => "${username} oraz ${username2} piszą..."; - - static m57(username) => "${username} pisze..."; - - static m58(username) => "${username} opuścił/-a czat"; - - static m59(username, type) => "${username} wysłał/-a wydarzenie ${type}"; - - final messages = _notInlinedMessages(_notInlinedMessages); - static _notInlinedMessages(_) => { - "(Optional) Group name": - MessageLookupByLibrary.simpleMessage("(Opcjonalnie) Nazwa grupy"), - "About": MessageLookupByLibrary.simpleMessage("O nas"), - "Account": MessageLookupByLibrary.simpleMessage("Konto"), - "Account informations": - MessageLookupByLibrary.simpleMessage("Informacje o koncie"), - "Add a group description": - MessageLookupByLibrary.simpleMessage("Dodaj opis grupy"), - "Admin": MessageLookupByLibrary.simpleMessage("Admin"), - "Already have an account?": - MessageLookupByLibrary.simpleMessage("Masz już konto?"), - "Anyone can join": - MessageLookupByLibrary.simpleMessage("Każdy może dołączyć"), - "Archive": MessageLookupByLibrary.simpleMessage("Archiwum"), - "Archived Room": - MessageLookupByLibrary.simpleMessage("Zarchiwizowane pokoje"), - "Are guest users allowed to join": MessageLookupByLibrary.simpleMessage( - "Czy użytkownicy-goście mogą dołączyć"), - "Are you sure?": - MessageLookupByLibrary.simpleMessage("Jesteś pewny/-a?"), - "Authentication": MessageLookupByLibrary.simpleMessage("Autoryzacja"), - "Avatar has been changed": MessageLookupByLibrary.simpleMessage( - "Zdjęcie profilowe zostało zmienione"), - "Ban from chat": MessageLookupByLibrary.simpleMessage("Ban na czacie"), - "Banned": MessageLookupByLibrary.simpleMessage("Zbanowany/-a"), - "Cancel": MessageLookupByLibrary.simpleMessage("Anuluj"), - "Change the homeserver": - MessageLookupByLibrary.simpleMessage("Zmień serwer domyślny"), - "Change the name of the group": - MessageLookupByLibrary.simpleMessage("Zmień nazwę grupy"), - "Change the server": - MessageLookupByLibrary.simpleMessage("Zmień tapetę"), - "Change wallpaper": - MessageLookupByLibrary.simpleMessage("Zmień tapetę"), - "Change your style": - MessageLookupByLibrary.simpleMessage("Zmień swój styl"), - "Changelog": MessageLookupByLibrary.simpleMessage("Dziennik zmian"), - "Chat details": MessageLookupByLibrary.simpleMessage("Szczegóły czatu"), - "Choose a strong password": - MessageLookupByLibrary.simpleMessage("Wybierz silne hasło"), - "Choose a username": - MessageLookupByLibrary.simpleMessage("Wybierz nick"), - "Close": MessageLookupByLibrary.simpleMessage("Zamknij"), - "Confirm": MessageLookupByLibrary.simpleMessage("Potwierdź"), - "Connect": MessageLookupByLibrary.simpleMessage("Połącz"), - "Connection attempt failed": MessageLookupByLibrary.simpleMessage( - "Próba połączenia nie powiodła się"), - "Contact has been invited to the group": - MessageLookupByLibrary.simpleMessage( - "Kontakt został zaproszony do grupy"), - "Content viewer": - MessageLookupByLibrary.simpleMessage("Przeglądarka treści"), - "Copied to clipboard": - MessageLookupByLibrary.simpleMessage("Skopiowano do schowka"), - "Copy": MessageLookupByLibrary.simpleMessage("Kopiuj"), - "Could not set avatar": MessageLookupByLibrary.simpleMessage( - "Nie można ustawić zdjęcia profilowego"), - "Could not set displayname": MessageLookupByLibrary.simpleMessage( - "Nie można ustawić wyświetlanego nicku"), - "Create": MessageLookupByLibrary.simpleMessage("Stwórz"), - "Create account now": - MessageLookupByLibrary.simpleMessage("Stwórz konto teraz"), - "Create new group": - MessageLookupByLibrary.simpleMessage("Stwórz nową grupę"), - "Dark": MessageLookupByLibrary.simpleMessage("Ciemny"), - "Delete": MessageLookupByLibrary.simpleMessage("Usuń"), - "Delete message": - MessageLookupByLibrary.simpleMessage("Usuń wiadomość"), - "Deny": MessageLookupByLibrary.simpleMessage("Odrzuć"), - "Device": MessageLookupByLibrary.simpleMessage("Urządzenie"), - "Devices": MessageLookupByLibrary.simpleMessage("Urządzenia"), - "Discard picture": - MessageLookupByLibrary.simpleMessage("Odrzuć zdjęcie"), - "Displayname has been changed": MessageLookupByLibrary.simpleMessage( - "Wyświetlany nick został zmieniony"), - "Donate": MessageLookupByLibrary.simpleMessage("Wsparcie"), - "Download file": MessageLookupByLibrary.simpleMessage("Pobierz plik"), - "Edit Jitsi instance": - MessageLookupByLibrary.simpleMessage("Edytuj instancje Jitsi"), - "Edit displayname": - MessageLookupByLibrary.simpleMessage("Edytuj wyświetlany nick"), - "Empty chat": MessageLookupByLibrary.simpleMessage("Pusty czat"), - "Encryption algorithm": - MessageLookupByLibrary.simpleMessage("Algorytm szyfrowania"), - "Encryption is not enabled": MessageLookupByLibrary.simpleMessage( - "Szyfrowanie nie jest włączone"), - "End to end encryption is currently in Beta! Use at your own risk!": - MessageLookupByLibrary.simpleMessage( - "Szyfrowanie end-to-end jest obecnie w fazie beta! Używaj na własne ryzyko!"), - "End-to-end encryption settings": MessageLookupByLibrary.simpleMessage( - "Ustawienia szyfrowania end-to-end"), - "Enter a group name": - MessageLookupByLibrary.simpleMessage("Wpisz nazwę grupy"), - "Enter a username": MessageLookupByLibrary.simpleMessage("Wpisz nick"), - "Enter your homeserver": - MessageLookupByLibrary.simpleMessage("Wpisz swój serwer domowy"), - "File name": MessageLookupByLibrary.simpleMessage("Nazwa pliku"), - "File size": MessageLookupByLibrary.simpleMessage("Rozmiar pliku"), - "FluffyChat": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "Forward": MessageLookupByLibrary.simpleMessage("Przekaż"), - "Friday": MessageLookupByLibrary.simpleMessage("Piątek"), - "From joining": MessageLookupByLibrary.simpleMessage("Od dołączenia"), - "From the invitation": - MessageLookupByLibrary.simpleMessage("Od zaproszenia"), - "Group": MessageLookupByLibrary.simpleMessage("Grupa"), - "Group description": MessageLookupByLibrary.simpleMessage("Opis grupy"), - "Group description has been changed": - MessageLookupByLibrary.simpleMessage("Opis grupy został zmieniony"), - "Group is public": - MessageLookupByLibrary.simpleMessage("Grupa jest publiczna"), - "Guests are forbidden": - MessageLookupByLibrary.simpleMessage("Goście są zabronieni"), - "Guests can join": - MessageLookupByLibrary.simpleMessage("Goście mogą dołączyć"), - "Help": MessageLookupByLibrary.simpleMessage("Pomoc"), - "Homeserver is not compatible": MessageLookupByLibrary.simpleMessage( - "Serwer domowy nie jest kompatybilny"), - "How are you today?": - MessageLookupByLibrary.simpleMessage("Jak się masz dziś?"), - "ID": MessageLookupByLibrary.simpleMessage("ID"), - "Identity": MessageLookupByLibrary.simpleMessage("Tożsamość"), - "Invite contact": - MessageLookupByLibrary.simpleMessage("Zaproś kontakty"), - "Invited": MessageLookupByLibrary.simpleMessage("Zaproszono"), - "Invited users only": MessageLookupByLibrary.simpleMessage( - "Tylko zaproszeni użytkownicy"), - "It seems that you have no google services on your phone. That\'s a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": - MessageLookupByLibrary.simpleMessage( - "Wygląda na to, że nie masz usług Google w swoim telefonie. To dobra decyzja dla twojej prywatności! Aby otrzymywać powiadomienia wysyłane w FluffyChat, zalecamy korzystanie z microG: https://microg.org/"), - "Kick from chat": - MessageLookupByLibrary.simpleMessage("Wyrzuć z czatu"), - "Last seen IP": - MessageLookupByLibrary.simpleMessage("Ostatnie widziane IP"), - "Leave": MessageLookupByLibrary.simpleMessage("wyjdź"), - "Left the chat": - MessageLookupByLibrary.simpleMessage("Opuścił/-a czat"), - "License": MessageLookupByLibrary.simpleMessage("Licencja"), - "Light": MessageLookupByLibrary.simpleMessage("Jasny"), - "Loading... Please wait": - MessageLookupByLibrary.simpleMessage("Ładowanie... Proszę czekąć"), - "Login": MessageLookupByLibrary.simpleMessage("Zaloguj"), - "Logout": MessageLookupByLibrary.simpleMessage("Wyloguj"), - "Make a moderator": - MessageLookupByLibrary.simpleMessage("Uczyń moderatorem"), - "Make an admin": MessageLookupByLibrary.simpleMessage("Uczyń adminem"), - "Make sure the identifier is valid": - MessageLookupByLibrary.simpleMessage( - "Upewnij się, że identyfikator jest prawidłowy"), - "Message will be removed for all participants": - MessageLookupByLibrary.simpleMessage( - "Wiadomość zostanie usunięta dla wszystkich użytkowników"), - "Moderator": MessageLookupByLibrary.simpleMessage("Moderator"), - "Monday": MessageLookupByLibrary.simpleMessage("Poniedziałek"), - "Mute chat": MessageLookupByLibrary.simpleMessage("Wycisz czat"), - "New message in FluffyChat": - MessageLookupByLibrary.simpleMessage("Nowa wiadomość w FluffyChat"), - "New private chat": - MessageLookupByLibrary.simpleMessage("Nowy prywatny czat"), - "No permission": MessageLookupByLibrary.simpleMessage("Brak uprawnień"), - "No rooms found...": - MessageLookupByLibrary.simpleMessage("Nie znaleziono pokoi..."), - "None": MessageLookupByLibrary.simpleMessage("Brak"), - "Not supported in web": - MessageLookupByLibrary.simpleMessage("Nie obsługiwane w sieci"), - "Oops something went wrong...": - MessageLookupByLibrary.simpleMessage("Ups! Coś poszło nie tak..."), - "Open app to read messages": MessageLookupByLibrary.simpleMessage( - "Otwórz aplikację by odczytać wiadomości"), - "Open camera": MessageLookupByLibrary.simpleMessage("Otwarta kamera"), - "Participating user devices": - MessageLookupByLibrary.simpleMessage("Urządzenia użytkowników"), - "Password": MessageLookupByLibrary.simpleMessage("Hasło"), - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": - MessageLookupByLibrary.simpleMessage( - "Należy pamiętać, że Pantalaimon wymaga na razie szyfrowania end-to-end."), - "Please choose a username": - MessageLookupByLibrary.simpleMessage("Wybierz nick"), - "Please enter a matrix identifier": - MessageLookupByLibrary.simpleMessage( - "Wprowadź proszę identyfikator matrix"), - "Please enter your password": - MessageLookupByLibrary.simpleMessage("Wpisz swoje hasło"), - "Please enter your username": - MessageLookupByLibrary.simpleMessage("Wpisz swój nick"), - "Public Rooms": - MessageLookupByLibrary.simpleMessage("Publiczne pokoje"), - "Recording": MessageLookupByLibrary.simpleMessage("Nagranie"), - "Rejoin": MessageLookupByLibrary.simpleMessage("Dołącz ponownie"), - "Remove": MessageLookupByLibrary.simpleMessage("Usuń"), - "Remove all other devices": MessageLookupByLibrary.simpleMessage( - "Usuń wszystkie inne urządzenia"), - "Remove device": - MessageLookupByLibrary.simpleMessage("Usuń urządzenie"), - "Remove exile": MessageLookupByLibrary.simpleMessage("Usuń blokadę"), - "Remove message": - MessageLookupByLibrary.simpleMessage("Usuń wiadomość"), - "Reply": MessageLookupByLibrary.simpleMessage("Odpisz"), - "Request permission": - MessageLookupByLibrary.simpleMessage("Prośba o pozwolenie"), - "Request to read older messages": MessageLookupByLibrary.simpleMessage( - "Poproś o przeczytanie starszych wiadomości"), - "Revoke all permissions": MessageLookupByLibrary.simpleMessage( - "Odwołaj wszystkie uprawnienia"), - "Saturday": MessageLookupByLibrary.simpleMessage("Sobota"), - "Search for a chat": - MessageLookupByLibrary.simpleMessage("Przeszukaj czat"), - "Send": MessageLookupByLibrary.simpleMessage("Wyślij"), - "Send a message": - MessageLookupByLibrary.simpleMessage("Wyślij wiadomość"), - "Send file": MessageLookupByLibrary.simpleMessage("Wyślij plik"), - "Send image": MessageLookupByLibrary.simpleMessage("Wyślij obraz"), - "Set a profile picture": - MessageLookupByLibrary.simpleMessage("Ustaw zdjęcie profilowe"), - "Set group description": - MessageLookupByLibrary.simpleMessage("Ustaw opis grupy"), - "Set invitation link": - MessageLookupByLibrary.simpleMessage("Ustaw link zaproszeniowy"), - "Set status": MessageLookupByLibrary.simpleMessage("Ustaw status"), - "Settings": MessageLookupByLibrary.simpleMessage("Ustawienia"), - "Share": MessageLookupByLibrary.simpleMessage("Udostępnij"), - "Sign up": MessageLookupByLibrary.simpleMessage("Zarejesturuj się"), - "Source code": MessageLookupByLibrary.simpleMessage("Kod żródłowy"), - "Start your first chat :-)": MessageLookupByLibrary.simpleMessage( - "Rozpocznij swój pierwszy czat :-)"), - "Sunday": MessageLookupByLibrary.simpleMessage("Niedziela"), - "System": MessageLookupByLibrary.simpleMessage("System"), - "Tap to show menu": - MessageLookupByLibrary.simpleMessage("Kliknij by zobaczyć menu"), - "The encryption has been corrupted": - MessageLookupByLibrary.simpleMessage( - "Szyfrowanie zostało uszkodzone"), - "This room has been archived.": MessageLookupByLibrary.simpleMessage( - "Ten pokój został przeniesiony do archiwum."), - "Thursday": MessageLookupByLibrary.simpleMessage("Czwartek"), - "Try to send again": - MessageLookupByLibrary.simpleMessage("Spróbuj wysłać ponownie"), - "Tuesday": MessageLookupByLibrary.simpleMessage("Wtorek"), - "Unknown device": - MessageLookupByLibrary.simpleMessage("Nieznane urządzenie"), - "Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage( - "Nieznany algorytm szyfrowania"), - "Unmute chat": - MessageLookupByLibrary.simpleMessage("Wyłącz wyciszenie"), - "Use Amoled compatible colors?": MessageLookupByLibrary.simpleMessage( - "Użyć kolorów kompatybilnych z ekranami Amoled?"), - "Username": MessageLookupByLibrary.simpleMessage("Nick"), - "Verify": MessageLookupByLibrary.simpleMessage("zweryfikuj"), - "Video call": MessageLookupByLibrary.simpleMessage("Rozmowa wideo"), - "Visibility of the chat history": - MessageLookupByLibrary.simpleMessage("Widoczność historii czatu"), - "Visible for all participants": MessageLookupByLibrary.simpleMessage( - "Widoczny dla wszystkich użytkowników"), - "Visible for everyone": - MessageLookupByLibrary.simpleMessage("Widoczny dla każdego"), - "Voice message": - MessageLookupByLibrary.simpleMessage("Wiadomość głosowa"), - "Wallpaper": MessageLookupByLibrary.simpleMessage("Tapeta"), - "Wednesday": MessageLookupByLibrary.simpleMessage("Środa"), - "Welcome to the cutest instant messenger in the matrix network.": - MessageLookupByLibrary.simpleMessage( - "Witamy w najładniejszym komunikatorze w sieci matrix."), - "Who is allowed to join this group": - MessageLookupByLibrary.simpleMessage( - "Kto może dołączyć do tej grupy"), - "Write a message...": - MessageLookupByLibrary.simpleMessage("Pisze wiadomość..."), - "Yes": MessageLookupByLibrary.simpleMessage("Tak"), - "You": MessageLookupByLibrary.simpleMessage("Ty"), - "You are invited to this chat": MessageLookupByLibrary.simpleMessage( - "Dostałeś/-aś zaproszenie do tego czatu"), - "You are no longer participating in this chat": - MessageLookupByLibrary.simpleMessage( - "Nie uczestniczysz już w tym czacie"), - "You cannot invite yourself": - MessageLookupByLibrary.simpleMessage("Nie możesz zaprosić siebie"), - "You have been banned from this chat": - MessageLookupByLibrary.simpleMessage( - "Zostałeś zbanowany na tym czacie"), - "You won\'t be able to disable the encryption anymore. Are you sure?": - MessageLookupByLibrary.simpleMessage( - "Nie będziesz już mógł wyłączyć szyfrowania. Jesteś pewny?"), - "Your own username": MessageLookupByLibrary.simpleMessage("Twój nick"), - "acceptedTheInvitation": m0, - "activatedEndToEndEncryption": m1, - "alias": MessageLookupByLibrary.simpleMessage("alias"), - "bannedUser": m2, - "byDefaultYouWillBeConnectedTo": m3, - "changedTheChatAvatar": m4, - "changedTheChatDescriptionTo": m5, - "changedTheChatNameTo": m6, - "changedTheChatPermissions": m7, - "changedTheDisplaynameTo": m8, - "changedTheGuestAccessRules": m9, - "changedTheGuestAccessRulesTo": m10, - "changedTheHistoryVisibility": m11, - "changedTheHistoryVisibilityTo": m12, - "changedTheJoinRules": m13, - "changedTheJoinRulesTo": m14, - "changedTheProfileAvatar": m15, - "changedTheRoomAliases": m16, - "changedTheRoomInvitationLink": m17, - "couldNotDecryptMessage": m18, - "countParticipants": m19, - "createdTheChat": m20, - "dateAndTimeOfDay": m21, - "dateWithYear": m22, - "dateWithoutYear": m23, - "groupWith": m24, - "hasWithdrawnTheInvitationFor": m25, - "inviteContactToGroup": m26, - "inviteText": m27, - "invitedUser": m28, - "is typing...": MessageLookupByLibrary.simpleMessage("pisze..."), - "joinedTheChat": m29, - "kicked": m30, - "kickedAndBanned": m31, - "lastActiveAgo": m32, - "loadCountMoreParticipants": m33, - "logInTo": m34, - "numberSelected": m35, - "play": m36, - "redactedAnEvent": m37, - "rejectedTheInvitation": m38, - "removedBy": m39, - "seenByUser": m40, - "seenByUserAndCountOthers": m41, - "seenByUserAndUser": m42, - "sentAFile": m43, - "sentAPicture": m44, - "sentASticker": m45, - "sentAVideo": m46, - "sentAnAudio": m47, - "sharedTheLocation": m48, - "timeOfDay": m49, - "title": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "unbannedUser": m50, - "unknownEvent": m51, - "unreadChats": m52, - "unreadMessages": m53, - "unreadMessagesInChats": m54, - "userAndOthersAreTyping": m55, - "userAndUserAreTyping": m56, - "userIsTyping": m57, - "userLeftTheChat": m58, - "userSentUnknownEvent": m59 - }; -} diff --git a/lib/l10n/messages_ru.dart b/lib/l10n/messages_ru.dart deleted file mode 100644 index 1e192a5..0000000 --- a/lib/l10n/messages_ru.dart +++ /dev/null @@ -1,603 +0,0 @@ -// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart -// This is a library that provides messages for a ru locale. All the -// messages from the main program should be duplicated here with the same -// function name. - -// Ignore issues from commonly used lints in this file. -// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new -// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering -// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases -// ignore_for_file:unused_import, file_names - -import 'package:intl/intl.dart'; -import 'package:intl/message_lookup_by_library.dart'; - -final messages = new MessageLookup(); - -typedef String MessageIfAbsent(String messageStr, List args); - -class MessageLookup extends MessageLookupByLibrary { - String get localeName => 'ru'; - - static m0(username) => "${username} принял(а) приглашение"; - - static m1(username) => "${username} активировал(а) сквозное шифрование"; - - static m60(username) => "Принять этот запрос подтверждения от ${username}?"; - - static m2(username, targetName) => "${username} забанил(а) ${targetName}"; - - static m3(homeserver) => "По умолчанию вы будете подключены к ${homeserver}"; - - static m4(username) => "${username} изменил(а) аватар чата"; - - static m5(username, description) => - "${username} изменил(а) описание чата на: \'${description}\'"; - - static m6(username, chatname) => - "${username} изменил(а) имя чата на: \'${chatname}\'"; - - static m7(username) => "${username} изменил(а) права чата"; - - static m8(username, displayname) => - "${username} изменил(а) отображаемое имя на: ${displayname}"; - - static m9(username) => "${username} изменил(а) правила гостевого доступа"; - - static m10(username, rules) => - "${username} изменил(а) правила гостевого доступа на: ${rules}"; - - static m11(username) => "${username} изменил(а) видимость истории"; - - static m12(username, rules) => - "${username} изменил(а) видимость истории на: ${rules}"; - - static m13(username) => "${username} изменил(а) правила присоединения"; - - static m14(username, joinRules) => - "${username} изменил(а) правила присоединения на: ${joinRules}"; - - static m15(username) => "${username} сменил(а) аватар профиля"; - - static m16(username) => "${username} изменил(а) псевдонимы комнаты"; - - static m17(username) => "${username} изменил(а) ссылку приглашения"; - - static m18(error) => "Не удалось расшифровать сообщение: ${error}"; - - static m19(count) => "${count} участника(-ов)"; - - static m20(username) => "${username} создал(а) чат"; - - static m21(date, timeOfDay) => "${date}, ${timeOfDay}"; - - static m22(year, month, day) => "${day}. ${month}. ${year}"; - - static m23(month, day) => "${day}. ${month}"; - - static m24(displayname) => "Группа с ${displayname}"; - - static m25(username, targetName) => - "${username} отозвал(а) приглашение для ${targetName}"; - - static m26(groupName) => "Пригласить контакт в ${groupName}"; - - static m27(username, link) => - "${username} пригласил(а) вас в FluffyChat. \n1. Установите FluffyChat: http://fluffy.chat \n2. Зарегистрируйтесь или войдите \n3. Откройте ссылку приглашения: ${link}"; - - static m28(username, targetName) => "${username} пригласил(а) ${targetName}"; - - static m29(username) => "${username} присоединился(-ась) к чату"; - - static m30(username, targetName) => "${username} исключил(а) ${targetName}"; - - static m31(username, targetName) => - "${username} исключил(а) и забанил(а) ${targetName}"; - - static m32(localizedTimeShort) => - "Последнее посещение: ${localizedTimeShort}"; - - static m33(count) => "Загрузить еще ${count} участников"; - - static m34(homeserver) => "Войти в ${homeserver}"; - - static m35(number) => "${number} выбрано"; - - static m36(fileName) => "Играть ${fileName}"; - - static m37(username) => "${username} отредактировал(а) событие"; - - static m38(username) => "${username} отклонил(а) приглашение"; - - static m39(username) => "Удалено пользователем ${username}"; - - static m40(username) => "Просмотрено пользователем ${username}"; - - static m41(username, count) => - "Просмотрено пользователями ${username} и ${count} другими"; - - static m42(username, username2) => - "Просмотрено пользователями ${username} и ${username2}"; - - static m43(username) => "${username} отправил(а) файл"; - - static m44(username) => "${username} отправил(а) картинку"; - - static m45(username) => "${username} отправил(а) стикер"; - - static m46(username) => "${username} отправил(а) видео"; - - static m47(username) => "${username} отправил(а) аудио"; - - static m48(username) => "${username} поделился(-ась) местоположением"; - - static m49(hours12, hours24, minutes, suffix) => "${hours24}:${minutes}"; - - static m50(username, targetName) => "${username} разбанил(а) ${targetName}"; - - static m51(type) => "Неизвестное событие \'${type}\'"; - - static m52(unreadCount) => "${unreadCount} непрочитанных чатов"; - - static m53(unreadEvents) => "${unreadEvents} непрочитанных сообщений"; - - static m54(unreadEvents, unreadChats) => - "${unreadEvents} непрочитанных сообщений в ${unreadChats} чатах"; - - static m55(username, count) => - "${username} и ${count} других участников печатают..."; - - static m56(username, username2) => "${username} и ${username2} печатают..."; - - static m57(username) => "${username} печатает..."; - - static m58(username) => "${username} покинул(а) чат"; - - static m59(username, type) => "${username} отправил(а) событие типа ${type}"; - - final messages = _notInlinedMessages(_notInlinedMessages); - static _notInlinedMessages(_) => { - "(Optional) Group name": MessageLookupByLibrary.simpleMessage( - "(Необязательно) Название группы"), - "About": MessageLookupByLibrary.simpleMessage("О приложении"), - "Accept": MessageLookupByLibrary.simpleMessage("Принять"), - "Account": MessageLookupByLibrary.simpleMessage("Учётная запись"), - "Account informations": - MessageLookupByLibrary.simpleMessage("Сведения об учётной записи"), - "Add a group description": - MessageLookupByLibrary.simpleMessage("Добавить описание группы"), - "Admin": MessageLookupByLibrary.simpleMessage("Админ"), - "Already have an account?": - MessageLookupByLibrary.simpleMessage("Уже есть учётная запись?"), - "Anyone can join": - MessageLookupByLibrary.simpleMessage("Каждый может присоединиться"), - "Archive": MessageLookupByLibrary.simpleMessage("Архив"), - "Archived Room": - MessageLookupByLibrary.simpleMessage("Архивированная комната"), - "Are guest users allowed to join": MessageLookupByLibrary.simpleMessage( - "Разрешено ли гостям присоединяться"), - "Are you sure?": MessageLookupByLibrary.simpleMessage("Вы уверены?"), - "Authentication": - MessageLookupByLibrary.simpleMessage("Аутентификация"), - "Avatar has been changed": - MessageLookupByLibrary.simpleMessage("Аватар был изменен"), - "Ban from chat": MessageLookupByLibrary.simpleMessage("Бан чата"), - "Banned": MessageLookupByLibrary.simpleMessage("Забанен"), - "Block Device": - MessageLookupByLibrary.simpleMessage("Заблокировать устройство"), - "Cancel": MessageLookupByLibrary.simpleMessage("Отмена"), - "Change the homeserver": - MessageLookupByLibrary.simpleMessage("Изменить домашний сервер"), - "Change the name of the group": - MessageLookupByLibrary.simpleMessage("Изменить название группы"), - "Change the server": - MessageLookupByLibrary.simpleMessage("Сменить сервер"), - "Change wallpaper": - MessageLookupByLibrary.simpleMessage("Сменить обои"), - "Change your style": - MessageLookupByLibrary.simpleMessage("Изменить свой стиль"), - "Changelog": MessageLookupByLibrary.simpleMessage("Изменения"), - "Chat": MessageLookupByLibrary.simpleMessage("Чат"), - "Chat details": MessageLookupByLibrary.simpleMessage("Детали чата"), - "Choose a strong password": - MessageLookupByLibrary.simpleMessage("Выберите надёжный пароль"), - "Choose a username": - MessageLookupByLibrary.simpleMessage("Выберете имя пользователя"), - "Close": MessageLookupByLibrary.simpleMessage("Закрыть"), - "Confirm": MessageLookupByLibrary.simpleMessage("Подтвердить"), - "Connect": MessageLookupByLibrary.simpleMessage("Присоединиться"), - "Connection attempt failed": MessageLookupByLibrary.simpleMessage( - "Попытка подключения не удалась"), - "Contact has been invited to the group": - MessageLookupByLibrary.simpleMessage( - "Контакт был приглашен в группу"), - "Content viewer": - MessageLookupByLibrary.simpleMessage("Просмотр содержимого"), - "Copied to clipboard": - MessageLookupByLibrary.simpleMessage("Скопировано в буфер обмена"), - "Copy": MessageLookupByLibrary.simpleMessage("Скопировать"), - "Could not set avatar": MessageLookupByLibrary.simpleMessage( - "Не удалось установить аватар"), - "Could not set displayname": MessageLookupByLibrary.simpleMessage( - "Не удалось установить отображаемое имя"), - "Create": MessageLookupByLibrary.simpleMessage("Создать"), - "Create account now": MessageLookupByLibrary.simpleMessage( - "Создать учётную запись сейчас"), - "Create new group": - MessageLookupByLibrary.simpleMessage("Создать новую группу"), - "Currently active": - MessageLookupByLibrary.simpleMessage("В настоящее время активен"), - "Dark": MessageLookupByLibrary.simpleMessage("Тёмный"), - "Delete": MessageLookupByLibrary.simpleMessage("Удалить"), - "Delete message": - MessageLookupByLibrary.simpleMessage("Удалить сообщение"), - "Deny": MessageLookupByLibrary.simpleMessage("Отклонить"), - "Device": MessageLookupByLibrary.simpleMessage("Устройство"), - "Devices": MessageLookupByLibrary.simpleMessage("Устройства"), - "Discard picture": - MessageLookupByLibrary.simpleMessage("Сбросить картинку"), - "Displayname has been changed": MessageLookupByLibrary.simpleMessage( - "Отображаемое имя было изменено"), - "Donate": MessageLookupByLibrary.simpleMessage("Пожертвовать"), - "Download file": MessageLookupByLibrary.simpleMessage("Скачать файл"), - "Edit Jitsi instance": - MessageLookupByLibrary.simpleMessage("Изменить экземпляр Jitsi"), - "Edit displayname": - MessageLookupByLibrary.simpleMessage("Изменить отображаемое имя"), - "Emote Settings": - MessageLookupByLibrary.simpleMessage("Настройки смайликов"), - "Emote shortcode": - MessageLookupByLibrary.simpleMessage("Краткий код для смайлика"), - "Empty chat": MessageLookupByLibrary.simpleMessage("Пустой чат"), - "Encryption": MessageLookupByLibrary.simpleMessage("Шифрование"), - "Encryption algorithm": - MessageLookupByLibrary.simpleMessage("Алгоритм шифрования"), - "Encryption is not enabled": - MessageLookupByLibrary.simpleMessage("Шифрование не включено"), - "End to end encryption is currently in Beta! Use at your own risk!": - MessageLookupByLibrary.simpleMessage( - "Сквозное шифрование в настоящее время в бета-версии! Используйте на свой риск!"), - "End-to-end encryption settings": MessageLookupByLibrary.simpleMessage( - "Сквозные настройки шифрования"), - "Enter a group name": - MessageLookupByLibrary.simpleMessage("Введите название группы"), - "Enter a username": - MessageLookupByLibrary.simpleMessage("Введите имя пользователя"), - "Enter your homeserver": - MessageLookupByLibrary.simpleMessage("Введите ваш домашний сервер"), - "File name": MessageLookupByLibrary.simpleMessage("Имя файла"), - "File size": MessageLookupByLibrary.simpleMessage("Размер файла"), - "FluffyChat": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "Forward": MessageLookupByLibrary.simpleMessage("Переслать"), - "Friday": MessageLookupByLibrary.simpleMessage("Пятница"), - "From joining": - MessageLookupByLibrary.simpleMessage("С момента присоединения"), - "From the invitation": - MessageLookupByLibrary.simpleMessage("С момента приглашения"), - "Group": MessageLookupByLibrary.simpleMessage("Группа"), - "Group description": - MessageLookupByLibrary.simpleMessage("Описание группы"), - "Group description has been changed": - MessageLookupByLibrary.simpleMessage( - "Описание группы было изменено"), - "Group is public": - MessageLookupByLibrary.simpleMessage("Публичная группа"), - "Guests are forbidden": - MessageLookupByLibrary.simpleMessage("Гости запрещены"), - "Guests can join": - MessageLookupByLibrary.simpleMessage("Гости могут присоединиться"), - "Help": MessageLookupByLibrary.simpleMessage("Помощь"), - "Homeserver is not compatible": MessageLookupByLibrary.simpleMessage( - "Домашний сервер не совместим"), - "How are you today?": - MessageLookupByLibrary.simpleMessage("Как у вас сегодня дела?"), - "ID": MessageLookupByLibrary.simpleMessage("ID"), - "Identity": MessageLookupByLibrary.simpleMessage("Идентификация"), - "Invite contact": - MessageLookupByLibrary.simpleMessage("Пригласить контакт"), - "Invited": MessageLookupByLibrary.simpleMessage("Приглашён"), - "Invited users only": MessageLookupByLibrary.simpleMessage( - "Только приглашённым пользователям"), - "It seems that you have no google services on your phone. That\'s a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": - MessageLookupByLibrary.simpleMessage( - "Похоже, у вас нет служб Google на вашем телефоне. Это хорошее решение для вашей конфиденциальности! Для получения push-уведомлений в FluffyChat мы рекомендуем использовать microG: https://microg.org/"), - "Kick from chat": - MessageLookupByLibrary.simpleMessage("Исключить из чата"), - "Last seen IP": - MessageLookupByLibrary.simpleMessage("Последний увиденный IP"), - "Leave": MessageLookupByLibrary.simpleMessage("Покинуть"), - "Left the chat": MessageLookupByLibrary.simpleMessage("Покинуть чат"), - "License": MessageLookupByLibrary.simpleMessage("Лицензия"), - "Light": MessageLookupByLibrary.simpleMessage("Светлый"), - "Load more...": - MessageLookupByLibrary.simpleMessage("Загрузить больше..."), - "Loading... Please wait": MessageLookupByLibrary.simpleMessage( - "Загрузка... Пожалуйста подождите"), - "Login": MessageLookupByLibrary.simpleMessage("Вход"), - "Logout": MessageLookupByLibrary.simpleMessage("Выйти"), - "Make a moderator": - MessageLookupByLibrary.simpleMessage("Сделать модератором"), - "Make an admin": - MessageLookupByLibrary.simpleMessage("Сделать админом"), - "Make sure the identifier is valid": - MessageLookupByLibrary.simpleMessage( - "Убедитесь, что идентификатор действителен"), - "Message will be removed for all participants": - MessageLookupByLibrary.simpleMessage( - "Сообщение будет удалено для всех участников"), - "Moderator": MessageLookupByLibrary.simpleMessage("Модератор"), - "Monday": MessageLookupByLibrary.simpleMessage("Понедельник"), - "Mute chat": MessageLookupByLibrary.simpleMessage("Замутить чат"), - "New message in FluffyChat": MessageLookupByLibrary.simpleMessage( - "Новое сообщение в FluffyChat"), - "New private chat": - MessageLookupByLibrary.simpleMessage("Новый приватный чат"), - "No emotes found. 😕": - MessageLookupByLibrary.simpleMessage("Смайликов не найдено. 😕"), - "No permission": MessageLookupByLibrary.simpleMessage("Нет разрешений"), - "No rooms found...": - MessageLookupByLibrary.simpleMessage("Комнаты не найдены..."), - "None": MessageLookupByLibrary.simpleMessage("Ничего"), - "Not supported in web": MessageLookupByLibrary.simpleMessage( - "Не поддерживается в веб-версии"), - "Oops something went wrong...": - MessageLookupByLibrary.simpleMessage("Упс! Что-то пошло не так..."), - "Open app to read messages": MessageLookupByLibrary.simpleMessage( - "Откройте приложение для чтения сообщений"), - "Open camera": MessageLookupByLibrary.simpleMessage("Открыть камеру"), - "Participating user devices": - MessageLookupByLibrary.simpleMessage("Участвующие устройства"), - "Password": MessageLookupByLibrary.simpleMessage("Пароль"), - "Pick image": MessageLookupByLibrary.simpleMessage("Выбрать картинку"), - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": - MessageLookupByLibrary.simpleMessage( - "Помните, что вам нужен Pantalaimon для использования сквозного шифрования."), - "Please choose a username": MessageLookupByLibrary.simpleMessage( - "Пожалуйста, выберите имя пользователя"), - "Please enter a matrix identifier": - MessageLookupByLibrary.simpleMessage( - "Пожалуйста, введите matrix идентификатор"), - "Please enter your password": MessageLookupByLibrary.simpleMessage( - "Пожалуйста введите ваш пароль"), - "Please enter your username": MessageLookupByLibrary.simpleMessage( - "Пожалуйста, введите имя пользователя"), - "Public Rooms": - MessageLookupByLibrary.simpleMessage("Публичные комнаты"), - "Recording": MessageLookupByLibrary.simpleMessage("Запись"), - "Reject": MessageLookupByLibrary.simpleMessage("Отклонить"), - "Rejoin": MessageLookupByLibrary.simpleMessage("Перезайти"), - "Remove": MessageLookupByLibrary.simpleMessage("Удалить"), - "Remove all other devices": MessageLookupByLibrary.simpleMessage( - "Удалить все другие устройства"), - "Remove device": - MessageLookupByLibrary.simpleMessage("Удалить устройство"), - "Remove exile": MessageLookupByLibrary.simpleMessage("Удалить ссылку"), - "Remove message": - MessageLookupByLibrary.simpleMessage("Удалить сообщение"), - "Render rich message content": MessageLookupByLibrary.simpleMessage( - "Показать отформатированные сообщения"), - "Reply": MessageLookupByLibrary.simpleMessage("Ответить"), - "Request permission": - MessageLookupByLibrary.simpleMessage("Запросить разрешение"), - "Request to read older messages": MessageLookupByLibrary.simpleMessage( - "Запросить доступ к предыдущим сообщениям"), - "Revoke all permissions": - MessageLookupByLibrary.simpleMessage("Отменить все разрешения"), - "Room has been upgraded": - MessageLookupByLibrary.simpleMessage("Комната обновлена"), - "Saturday": MessageLookupByLibrary.simpleMessage("Суббота"), - "Search for a chat": MessageLookupByLibrary.simpleMessage("Поиск чата"), - "Seen a long time ago": - MessageLookupByLibrary.simpleMessage("Просматривали давно"), - "Send": MessageLookupByLibrary.simpleMessage("Отправить"), - "Send a message": - MessageLookupByLibrary.simpleMessage("Отправить сообщение"), - "Send file": MessageLookupByLibrary.simpleMessage("Отправить файл"), - "Send image": - MessageLookupByLibrary.simpleMessage("Отправить картинку"), - "Set a profile picture": MessageLookupByLibrary.simpleMessage( - "Установить изображение профиля"), - "Set group description": - MessageLookupByLibrary.simpleMessage("Задать описание группы"), - "Set invitation link": MessageLookupByLibrary.simpleMessage( - "Установить ссылку для приглашения"), - "Set status": MessageLookupByLibrary.simpleMessage("Задать статус"), - "Settings": MessageLookupByLibrary.simpleMessage("Настройки"), - "Share": MessageLookupByLibrary.simpleMessage("Поделиться"), - "Sign up": MessageLookupByLibrary.simpleMessage("Зарегистрироваться"), - "Skip": MessageLookupByLibrary.simpleMessage("Пропустить"), - "Source code": MessageLookupByLibrary.simpleMessage("Исходный код"), - "Start your first chat :-)": - MessageLookupByLibrary.simpleMessage("Начни свой первый чат :-)"), - "Submit": MessageLookupByLibrary.simpleMessage("Отправить"), - "Sunday": MessageLookupByLibrary.simpleMessage("Воскресенье"), - "System": MessageLookupByLibrary.simpleMessage("Системный"), - "Tap to show menu": MessageLookupByLibrary.simpleMessage( - "Нажмите, чтобы показать меню"), - "The encryption has been corrupted": - MessageLookupByLibrary.simpleMessage("Шифрование было повреждено"), - "They Don\'t Match": - MessageLookupByLibrary.simpleMessage("Они не совпадают"), - "They Match": MessageLookupByLibrary.simpleMessage("Они совпадают"), - "This room has been archived.": MessageLookupByLibrary.simpleMessage( - "Эта комната была заархивирована."), - "Thursday": MessageLookupByLibrary.simpleMessage("Четверг"), - "Try to send again": MessageLookupByLibrary.simpleMessage( - "Попробуйте отправить еще раз"), - "Tuesday": MessageLookupByLibrary.simpleMessage("Вторник"), - "Unblock Device": - MessageLookupByLibrary.simpleMessage("Разблокировать устройство"), - "Unknown device": - MessageLookupByLibrary.simpleMessage("Неизвестное устройство"), - "Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage( - "Неизвестный алгоритм шифрования"), - "Unmute chat": MessageLookupByLibrary.simpleMessage("Размутить чат"), - "Use Amoled compatible colors?": MessageLookupByLibrary.simpleMessage( - "Использовать Amoled совместимые цвета?"), - "Username": MessageLookupByLibrary.simpleMessage("Имя пользователя"), - "Verify": MessageLookupByLibrary.simpleMessage("Проверить"), - "Verify User": - MessageLookupByLibrary.simpleMessage("Проверить пользователя"), - "Video call": MessageLookupByLibrary.simpleMessage("Видеозвонок"), - "Visibility of the chat history": - MessageLookupByLibrary.simpleMessage("Видимость истории чата"), - "Visible for all participants": - MessageLookupByLibrary.simpleMessage("Видима для всех участников"), - "Visible for everyone": - MessageLookupByLibrary.simpleMessage("Видна всем"), - "Voice message": - MessageLookupByLibrary.simpleMessage("Голосовое сообщение"), - "Wallpaper": MessageLookupByLibrary.simpleMessage("Обои"), - "Wednesday": MessageLookupByLibrary.simpleMessage("Среда"), - "Welcome to the cutest instant messenger in the matrix network.": - MessageLookupByLibrary.simpleMessage( - "Добро пожаловать в самый симпатичный мессенджер в сети matrix."), - "Who is allowed to join this group": - MessageLookupByLibrary.simpleMessage( - "Кому разрешено вступать в эту группу"), - "Write a message...": - MessageLookupByLibrary.simpleMessage("Напишите сообщение..."), - "Yes": MessageLookupByLibrary.simpleMessage("Да"), - "You": MessageLookupByLibrary.simpleMessage("Вы"), - "You are invited to this chat": - MessageLookupByLibrary.simpleMessage("Вы приглашены в этот чат"), - "You are no longer participating in this chat": - MessageLookupByLibrary.simpleMessage( - "Вы больше не участвуете в этом чате"), - "You cannot invite yourself": MessageLookupByLibrary.simpleMessage( - "Вы не можете пригласить себя"), - "You have been banned from this chat": - MessageLookupByLibrary.simpleMessage( - "Вы были забанены в этом чате"), - "You won\'t be able to disable the encryption anymore. Are you sure?": - MessageLookupByLibrary.simpleMessage( - "Вы больше не сможете отключить шифрование. Вы уверены?"), - "Your own username": - MessageLookupByLibrary.simpleMessage("Ваше имя пользователя"), - "acceptedTheInvitation": m0, - "activatedEndToEndEncryption": m1, - "alias": MessageLookupByLibrary.simpleMessage("псевдоним"), - "askSSSSCache": MessageLookupByLibrary.simpleMessage( - "Пожалуйста, введите секретную фразу безопасного хранилища или ключ восстановления для кеширования ключей."), - "askSSSSSign": MessageLookupByLibrary.simpleMessage( - "Чтобы иметь возможность подписать другое лицо, пожалуйста, введите пароль или ключ восстановления вашего безопасного хранилища."), - "askSSSSVerify": MessageLookupByLibrary.simpleMessage( - "Пожалуйста, введите вашу безопасную парольную фразу или ключ восстановления, чтобы подтвердить ваш сеанс."), - "askVerificationRequest": m60, - "bannedUser": m2, - "byDefaultYouWillBeConnectedTo": m3, - "cachedKeys": - MessageLookupByLibrary.simpleMessage("Ключи успешно кэшированы!"), - "changedTheChatAvatar": m4, - "changedTheChatDescriptionTo": m5, - "changedTheChatNameTo": m6, - "changedTheChatPermissions": m7, - "changedTheDisplaynameTo": m8, - "changedTheGuestAccessRules": m9, - "changedTheGuestAccessRulesTo": m10, - "changedTheHistoryVisibility": m11, - "changedTheHistoryVisibilityTo": m12, - "changedTheJoinRules": m13, - "changedTheJoinRulesTo": m14, - "changedTheProfileAvatar": m15, - "changedTheRoomAliases": m16, - "changedTheRoomInvitationLink": m17, - "compareEmojiMatch": MessageLookupByLibrary.simpleMessage( - "Сравните и убедитесь, что следующие эмодзи соответствуют таковым на другом устройстве:"), - "compareNumbersMatch": MessageLookupByLibrary.simpleMessage( - "Сравните и убедитесь, что следующие числа соответствуют числам на другом устройстве:"), - "couldNotDecryptMessage": m18, - "countParticipants": m19, - "createdTheChat": m20, - "crossSigningDisabled": - MessageLookupByLibrary.simpleMessage("Кросс-подпись отключена"), - "crossSigningEnabled": - MessageLookupByLibrary.simpleMessage("Кросс-подпись включена"), - "dateAndTimeOfDay": m21, - "dateWithYear": m22, - "dateWithoutYear": m23, - "emoteExists": - MessageLookupByLibrary.simpleMessage("Смайлик уже существует!"), - "emoteInvalid": MessageLookupByLibrary.simpleMessage( - "Недопустимый краткий код смайлика!"), - "emoteWarnNeedToPick": MessageLookupByLibrary.simpleMessage( - "Вам нужно выбрать краткий код смайлика и картинку!"), - "groupWith": m24, - "hasWithdrawnTheInvitationFor": m25, - "incorrectPassphraseOrKey": MessageLookupByLibrary.simpleMessage( - "Неверный пароль или ключ восстановления"), - "inviteContactToGroup": m26, - "inviteText": m27, - "invitedUser": m28, - "is typing...": MessageLookupByLibrary.simpleMessage("Печатает..."), - "isDeviceKeyCorrect": MessageLookupByLibrary.simpleMessage( - "Правильно ли указан следующий ключ устройства?"), - "joinedTheChat": m29, - "keysCached": MessageLookupByLibrary.simpleMessage("Ключи кэшированы"), - "keysMissing": - MessageLookupByLibrary.simpleMessage("Ключи отсутствуют"), - "kicked": m30, - "kickedAndBanned": m31, - "lastActiveAgo": m32, - "loadCountMoreParticipants": m33, - "logInTo": m34, - "newVerificationRequest": MessageLookupByLibrary.simpleMessage( - "Новый запрос на подтверждение!"), - "noCrossSignBootstrap": MessageLookupByLibrary.simpleMessage( - "Fluffychat в настоящее время не поддерживает включение кросс-подписи. Пожалуйста, включите его в Element."), - "noMegolmBootstrap": MessageLookupByLibrary.simpleMessage( - "В настоящее время Fluffychat не поддерживает функцию резервного копирования онлайн-ключей. Пожалуйста, включите его из Element."), - "numberSelected": m35, - "ok": MessageLookupByLibrary.simpleMessage("ok"), - "onlineKeyBackupDisabled": MessageLookupByLibrary.simpleMessage( - "Резервное копирование онлайн-ключей отключено"), - "onlineKeyBackupEnabled": MessageLookupByLibrary.simpleMessage( - "Резервное копирование онлайн ключей включено"), - "passphraseOrKey": MessageLookupByLibrary.simpleMessage( - "пароль или ключ восстановления"), - "play": m36, - "redactedAnEvent": m37, - "rejectedTheInvitation": m38, - "removedBy": m39, - "seenByUser": m40, - "seenByUserAndCountOthers": m41, - "seenByUserAndUser": m42, - "sentAFile": m43, - "sentAPicture": m44, - "sentASticker": m45, - "sentAVideo": m46, - "sentAnAudio": m47, - "sessionVerified": - MessageLookupByLibrary.simpleMessage("Сессия подтверждена"), - "sharedTheLocation": m48, - "timeOfDay": m49, - "title": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "unbannedUser": m50, - "unknownEvent": m51, - "unknownSessionVerify": MessageLookupByLibrary.simpleMessage( - "Неизвестная сессия, пожалуйста, проверьте"), - "unreadChats": m52, - "unreadMessages": m53, - "unreadMessagesInChats": m54, - "userAndOthersAreTyping": m55, - "userAndUserAreTyping": m56, - "userIsTyping": m57, - "userLeftTheChat": m58, - "userSentUnknownEvent": m59, - "verifiedSession": - MessageLookupByLibrary.simpleMessage("Успешно проверенная сессия!"), - "verifyManual": - MessageLookupByLibrary.simpleMessage("Проверить вручную"), - "verifyStart": MessageLookupByLibrary.simpleMessage("Начать проверку"), - "verifySuccess": - MessageLookupByLibrary.simpleMessage("Вы успешно проверили!"), - "verifyTitle": MessageLookupByLibrary.simpleMessage( - "Проверка другой учётной записи"), - "waitingPartnerAcceptRequest": MessageLookupByLibrary.simpleMessage( - "В ожидании партнера, чтобы принять запрос..."), - "waitingPartnerEmoji": MessageLookupByLibrary.simpleMessage( - "В ожидании партнера, чтобы принять смайлики..."), - "waitingPartnerNumbers": MessageLookupByLibrary.simpleMessage( - "В ожидании партнера, чтобы принять числа...") - }; -} diff --git a/lib/l10n/messages_sk.dart b/lib/l10n/messages_sk.dart deleted file mode 100644 index dd9bf7c..0000000 --- a/lib/l10n/messages_sk.dart +++ /dev/null @@ -1,604 +0,0 @@ -// DO NOT EDIT. This is code generated via package:intl/generate_localized.dart -// This is a library that provides messages for a sk locale. All the -// messages from the main program should be duplicated here with the same -// function name. - -// Ignore issues from commonly used lints in this file. -// ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new -// ignore_for_file:prefer_single_quotes,comment_references, directives_ordering -// ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases -// ignore_for_file:unused_import, file_names - -import 'package:intl/intl.dart'; -import 'package:intl/message_lookup_by_library.dart'; - -final messages = new MessageLookup(); - -typedef String MessageIfAbsent(String messageStr, List args); - -class MessageLookup extends MessageLookupByLibrary { - String get localeName => 'sk'; - - static m0(username) => "${username} prijali pozvánku"; - - static m1(username) => "${username} aktivovali koncové šifrovanie"; - - static m60(username) => "Akcepovať žiadosť o verifikáciu od ${username}?"; - - static m2(username, targetName) => "${username} zabanoval ${targetName}"; - - static m3(homeserver) => - "V základnom nastavení budete pripojený k ${homeserver}"; - - static m4(username) => "${username} si zmenili svôj avatar"; - - static m5(username, description) => - "${username} zmenili popis chatu na: „${description}“"; - - static m6(username, chatname) => - "${username} zmenili meno chatu na: „${chatname}“"; - - static m7(username) => "${username} zmenili nastavenie oprávnení chatu"; - - static m8(username, displayname) => - "${username} si zmenili prezývku na: ${displayname}"; - - static m9(username) => "${username} zmenili prístupové práva pre hosťov"; - - static m10(username, rules) => - "${username} zmenili prístupové práva pro hosťov na: ${rules}"; - - static m11(username) => - "${username} zmenili nastavenie viditelnosti histórie chatu"; - - static m12(username, rules) => - "${username} zmenili nastavenie viditelnosti histórie chatu na: ${rules}"; - - static m13(username) => "${username} zmenili nastavenie pravidiel pripojenia"; - - static m14(username, joinRules) => - "${username} zmenili nastavenie pravidiel pripojenia na: ${joinRules}"; - - static m15(username) => "${username} si zmenili profilový obrázok"; - - static m16(username) => "${username} zmenili nastavenie aliasov chatu"; - - static m17(username) => "${username} zmenili odkaz k pozvánke do miestnosti"; - - static m18(error) => "Nebolo možné dešifrovať správu: ${error}"; - - static m19(count) => "${count} účastníkov"; - - static m20(username) => "${username} založili chat"; - - static m21(date, timeOfDay) => "${date}, ${timeOfDay}"; - - static m22(year, month, day) => "${day}.${month}.${year}"; - - static m23(month, day) => "${day}.${month}."; - - static m24(displayname) => "Skupina s ${displayname}"; - - static m25(username, targetName) => - "${username} vzal späť pozvánku pre ${targetName}"; - - static m26(groupName) => "Pozvať kontakt do ${groupName}"; - - static m27(username, link) => - "${username} vás pozval na FluffyChat.\n1. Nainštalujte si FluffyChat: http://fluffy.chat\n2. Zaregistrujte sa alebo sa prihláste\n3. Otvorte odkaz na pozvánku: ${link}"; - - static m28(username, targetName) => "${username} pozvali ${targetName}"; - - static m29(username) => "${username} sa pripojili do chatu"; - - static m30(username, targetName) => "${username} vyhodili ${targetName}"; - - static m31(username, targetName) => - "${username} vyhodili a zabanovali ${targetName}"; - - static m32(localizedTimeShort) => "Naposledy prítomní: ${localizedTimeShort}"; - - static m33(count) => "Načítať ďalších ${count} účastníkov"; - - static m34(homeserver) => "Prihlásenie k ${homeserver}"; - - static m35(number) => "${number} označených správ"; - - static m36(fileName) => "Prehrať (fileName}"; - - static m37(username) => "${username} odstránili udalosť"; - - static m38(username) => "${username} odmietli pozvánku"; - - static m39(username) => "Odstánené užívateľom ${username}"; - - static m40(username) => "Videné užívateľom ${username}"; - - static m41(username, count) => - "Videné užívateľom ${username} a ${count} dalšími"; - - static m42(username, username2) => - "Videné užívateľmi ${username} a ${username2}"; - - static m43(username) => "${username} poslali súbor"; - - static m44(username) => "${username} poslali obrázok"; - - static m45(username) => "${username} poslali nálepku"; - - static m46(username) => "${username} poslali video"; - - static m47(username) => "${username} poslali zvukovú nahrávku"; - - static m48(username) => "${username} zdieľa lokáciu"; - - static m49(hours12, hours24, minutes, suffix) => "${hours24}:${minutes}"; - - static m50(username, targetName) => "${username} odbanovali ${targetName}"; - - static m51(type) => "Neznáma udalosť „${type}“"; - - static m52(unreadCount) => "${unreadCount} neprečítaných chatov"; - - static m53(unreadEvents) => "${unreadEvents} neprečítaných správ"; - - static m54(unreadEvents, unreadChats) => - "${unreadEvents} neprečítaných správ v ${unreadChats} chatoch"; - - static m55(username, count) => "${username} a ${count} dalších píšu…"; - - static m56(username, username2) => "${username} a ${username2} píšu…"; - - static m57(username) => "${username} píše…"; - - static m58(username) => "${username} opustili chat"; - - static m59(username, type) => "${username} poslali udalosť ${type}"; - - final messages = _notInlinedMessages(_notInlinedMessages); - static _notInlinedMessages(_) => { - "(Optional) Group name": - MessageLookupByLibrary.simpleMessage("(Voliteľné) Názov skupiny"), - "About": MessageLookupByLibrary.simpleMessage("O aplikácii"), - "Accept": MessageLookupByLibrary.simpleMessage("Prijať"), - "Account": MessageLookupByLibrary.simpleMessage("Účet"), - "Account informations": - MessageLookupByLibrary.simpleMessage("Informácie o účte"), - "Add a group description": - MessageLookupByLibrary.simpleMessage("Pridať popis skupiny"), - "Admin": MessageLookupByLibrary.simpleMessage("Administrátor"), - "Already have an account?": - MessageLookupByLibrary.simpleMessage("Máte už účet?"), - "Anyone can join": - MessageLookupByLibrary.simpleMessage("Ktokoľvek sa môže pripojiť"), - "Archive": MessageLookupByLibrary.simpleMessage("Archivovať"), - "Archived Room": - MessageLookupByLibrary.simpleMessage("Archivovaná miestnosť"), - "Are guest users allowed to join": - MessageLookupByLibrary.simpleMessage("Môžu sa pripojiť hostia"), - "Are you sure?": MessageLookupByLibrary.simpleMessage("Ste si istí?"), - "Authentication": - MessageLookupByLibrary.simpleMessage("Autentifikácia"), - "Avatar has been changed": - MessageLookupByLibrary.simpleMessage("Avatar bol zmenený"), - "Ban from chat": - MessageLookupByLibrary.simpleMessage("Zabanovať z chatu"), - "Banned": MessageLookupByLibrary.simpleMessage("Zabanovaný"), - "Block Device": - MessageLookupByLibrary.simpleMessage("Zakázať zariadenie"), - "Cancel": MessageLookupByLibrary.simpleMessage("Zrušiť"), - "Change the homeserver": - MessageLookupByLibrary.simpleMessage("Zmeniť použitý server"), - "Change the name of the group": - MessageLookupByLibrary.simpleMessage("Zmeniť názov skupiny"), - "Change the server": - MessageLookupByLibrary.simpleMessage("Zmeniť server"), - "Change wallpaper": - MessageLookupByLibrary.simpleMessage("Zmeniť pozadie"), - "Change your style": - MessageLookupByLibrary.simpleMessage("Zmena štýlu"), - "Changelog": MessageLookupByLibrary.simpleMessage("História zmien"), - "Chat": MessageLookupByLibrary.simpleMessage("Chat"), - "Chat details": - MessageLookupByLibrary.simpleMessage("Podrobnosti o chate"), - "Choose a strong password": - MessageLookupByLibrary.simpleMessage("Vyberte si silné heslo"), - "Choose a username": - MessageLookupByLibrary.simpleMessage("Vyberte si užívateľské meno"), - "Close": MessageLookupByLibrary.simpleMessage("Zavrieť"), - "Confirm": MessageLookupByLibrary.simpleMessage("Potvrdiť"), - "Connect": MessageLookupByLibrary.simpleMessage("Pripojiť"), - "Connection attempt failed": - MessageLookupByLibrary.simpleMessage("Pokus o pripojenie zlyhal"), - "Contact has been invited to the group": - MessageLookupByLibrary.simpleMessage( - "Kontakt bol pozvaný do skupiny"), - "Content viewer": - MessageLookupByLibrary.simpleMessage("Prehliadač obsahu"), - "Copied to clipboard": - MessageLookupByLibrary.simpleMessage("Skopírované do schránky"), - "Copy": MessageLookupByLibrary.simpleMessage("Kopírovať"), - "Could not set avatar": MessageLookupByLibrary.simpleMessage( - "Nepodarilo sa nastaviť avatar"), - "Could not set displayname": MessageLookupByLibrary.simpleMessage( - "Nepodarilo sa nastaviť prezývku užívateľa"), - "Create": MessageLookupByLibrary.simpleMessage("Vytvoriť"), - "Create account now": - MessageLookupByLibrary.simpleMessage("Vytvoriť účet teraz"), - "Create new group": - MessageLookupByLibrary.simpleMessage("Vytvoriť novú skupinu"), - "Currently active": - MessageLookupByLibrary.simpleMessage("Momentálne prítomní"), - "Dark": MessageLookupByLibrary.simpleMessage("Tmavá"), - "Delete": MessageLookupByLibrary.simpleMessage("Odstrániť"), - "Delete message": - MessageLookupByLibrary.simpleMessage("Odstrániť správu"), - "Deny": MessageLookupByLibrary.simpleMessage("Zamietnuť"), - "Device": MessageLookupByLibrary.simpleMessage("Zariadenie"), - "Devices": MessageLookupByLibrary.simpleMessage("Zariadenia"), - "Discard picture": - MessageLookupByLibrary.simpleMessage("Zahodiť obrázok"), - "Displayname has been changed": - MessageLookupByLibrary.simpleMessage("Prezývka bola zmenená"), - "Donate": MessageLookupByLibrary.simpleMessage("Prispejte"), - "Download file": MessageLookupByLibrary.simpleMessage("Stiahnuť súbor"), - "Edit Jitsi instance": - MessageLookupByLibrary.simpleMessage("Nastavenie inštancie Jitsi"), - "Edit displayname": - MessageLookupByLibrary.simpleMessage("Zmeniť prezývku"), - "Emote Settings": - MessageLookupByLibrary.simpleMessage("Nastavenie emotikonov"), - "Emote shortcode": - MessageLookupByLibrary.simpleMessage("Kód emotikonu"), - "Empty chat": MessageLookupByLibrary.simpleMessage("Prázdny chat"), - "Encryption": MessageLookupByLibrary.simpleMessage("Šifrovanie"), - "Encryption algorithm": - MessageLookupByLibrary.simpleMessage("Šifrovací algoritmus"), - "Encryption is not enabled": - MessageLookupByLibrary.simpleMessage("Šifrovanie nie je aktívne"), - "End to end encryption is currently in Beta! Use at your own risk!": - MessageLookupByLibrary.simpleMessage( - "Konečné šifrovanie je momentálne v Beta verzii! Používajte na vlastné riziko!"), - "End-to-end encryption settings": MessageLookupByLibrary.simpleMessage( - "Nastavenie koncového šifrovania"), - "Enter a group name": - MessageLookupByLibrary.simpleMessage("Zadajte názov skupiny"), - "Enter a username": - MessageLookupByLibrary.simpleMessage("Zadajte uživateľské meno"), - "Enter your homeserver": - MessageLookupByLibrary.simpleMessage("Zadajte svoj homeserver"), - "File name": MessageLookupByLibrary.simpleMessage("Názov súboru"), - "File size": MessageLookupByLibrary.simpleMessage("Veľkosť súboru"), - "FluffyChat": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "Forward": MessageLookupByLibrary.simpleMessage("Preposlať"), - "Friday": MessageLookupByLibrary.simpleMessage("Piatok"), - "From joining": MessageLookupByLibrary.simpleMessage("Od pripojenia"), - "From the invitation": - MessageLookupByLibrary.simpleMessage("Od pozvania"), - "Group": MessageLookupByLibrary.simpleMessage("Skupina"), - "Group description": - MessageLookupByLibrary.simpleMessage("Popis skupiny"), - "Group description has been changed": - MessageLookupByLibrary.simpleMessage("Popis skupiny bol zmenený"), - "Group is public": - MessageLookupByLibrary.simpleMessage("Skupina je verejná"), - "Guests are forbidden": - MessageLookupByLibrary.simpleMessage("Hostia sú zakázaní"), - "Guests can join": - MessageLookupByLibrary.simpleMessage("Hostia sa môžu pripojiť"), - "Help": MessageLookupByLibrary.simpleMessage("Pomoc"), - "Homeserver is not compatible": MessageLookupByLibrary.simpleMessage( - "Homeserver nie je kompatibilný"), - "How are you today?": - MessageLookupByLibrary.simpleMessage("Ako sa dnes máte?"), - "ID": MessageLookupByLibrary.simpleMessage("ID"), - "Identity": MessageLookupByLibrary.simpleMessage("Identita"), - "Invite contact": - MessageLookupByLibrary.simpleMessage("Pozvať kontakt"), - "Invited": MessageLookupByLibrary.simpleMessage("Pozvanie"), - "Invited users only": - MessageLookupByLibrary.simpleMessage("Len pozvaní používatelia"), - "It seems that you have no google services on your phone. That\'s a good decision for your privacy! To receive push notifications in FluffyChat we recommend using microG: https://microg.org/": - MessageLookupByLibrary.simpleMessage( - "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/"), - "Kick from chat": - MessageLookupByLibrary.simpleMessage("Vyhodiť z chatu"), - "Last seen IP": MessageLookupByLibrary.simpleMessage( - "Naposledy zaznamenaná IP adresa"), - "Leave": MessageLookupByLibrary.simpleMessage("Opustiť"), - "Left the chat": MessageLookupByLibrary.simpleMessage("Opustili chat"), - "License": MessageLookupByLibrary.simpleMessage("Licencia"), - "Light": MessageLookupByLibrary.simpleMessage("Svetlá"), - "Load more...": MessageLookupByLibrary.simpleMessage("Načítať viac..."), - "Loading... Please wait": MessageLookupByLibrary.simpleMessage( - "Načítava sa... Čakajte prosím"), - "Login": MessageLookupByLibrary.simpleMessage("Prihlásiť sa"), - "Logout": MessageLookupByLibrary.simpleMessage("Odhlásiť sa"), - "Make a moderator": - MessageLookupByLibrary.simpleMessage("Pridať práva moderátora"), - "Make an admin": - MessageLookupByLibrary.simpleMessage("Pridať práva administrátora"), - "Make sure the identifier is valid": - MessageLookupByLibrary.simpleMessage( - "Skontrolujte, či je identifikátor platný"), - "Message will be removed for all participants": - MessageLookupByLibrary.simpleMessage( - "Správa bude odstránená pre všetkých účastníkov"), - "Moderator": MessageLookupByLibrary.simpleMessage("Moderátor"), - "Monday": MessageLookupByLibrary.simpleMessage("Pondelok"), - "Mute chat": MessageLookupByLibrary.simpleMessage("Stlmiť chat"), - "New message in FluffyChat": - MessageLookupByLibrary.simpleMessage("Nová správa v FluffyChate"), - "New private chat": - MessageLookupByLibrary.simpleMessage("Nový súkromný chat"), - "No emotes found. 😕": MessageLookupByLibrary.simpleMessage( - "Nenašli sa žiadne emotikony. 😕"), - "No permission": - MessageLookupByLibrary.simpleMessage("Chýba povolenie"), - "No rooms found...": MessageLookupByLibrary.simpleMessage( - "Nenašli sa žiadne miestnosti..."), - "None": MessageLookupByLibrary.simpleMessage("Žiadne"), - "Not supported in web": MessageLookupByLibrary.simpleMessage( - "Nepodporované vo webovej verzii"), - "Oops something went wrong...": - MessageLookupByLibrary.simpleMessage("Och! Niečo sa pokazilo..."), - "Open app to read messages": MessageLookupByLibrary.simpleMessage( - "Na prečítanie správy otvorte aplikáciu"), - "Open camera": - MessageLookupByLibrary.simpleMessage("Otvoriť fotoaparát"), - "Participating user devices": MessageLookupByLibrary.simpleMessage( - "Zúčastnené užívateľské zariadenia"), - "Password": MessageLookupByLibrary.simpleMessage("Heslo"), - "Pick image": MessageLookupByLibrary.simpleMessage("Vybrať obrázok"), - "Please be aware that you need Pantalaimon to use end-to-end encryption for now.": - MessageLookupByLibrary.simpleMessage( - "Prosím berte na vedomie, že na koncové šifrovanie zatiaľ potrebujete Pantalaimon."), - "Please choose a username": MessageLookupByLibrary.simpleMessage( - "Vyberte si používateľské meno"), - "Please enter a matrix identifier": - MessageLookupByLibrary.simpleMessage( - "Vyberte si matrix identifkátor"), - "Please enter your password": - MessageLookupByLibrary.simpleMessage("Prosím zadajte svoje heslo"), - "Please enter your username": MessageLookupByLibrary.simpleMessage( - "Zadajte svoje používateľské meno"), - "Public Rooms": - MessageLookupByLibrary.simpleMessage("Verejné miestnosti"), - "Recording": MessageLookupByLibrary.simpleMessage("Nahrávam"), - "Reject": MessageLookupByLibrary.simpleMessage("Odmietnuť"), - "Rejoin": MessageLookupByLibrary.simpleMessage("Vrátiť sa"), - "Remove": MessageLookupByLibrary.simpleMessage("Odstrániť"), - "Remove all other devices": MessageLookupByLibrary.simpleMessage( - "Odstráňiť všetky ostatné zariadenia"), - "Remove device": - MessageLookupByLibrary.simpleMessage("Odstráňiť zariadenie"), - "Remove exile": MessageLookupByLibrary.simpleMessage("Odblokovať"), - "Remove message": - MessageLookupByLibrary.simpleMessage("Odstrániť správu"), - "Render rich message content": - MessageLookupByLibrary.simpleMessage("Zobraziť formátovaný obsah"), - "Reply": MessageLookupByLibrary.simpleMessage("Odpovedať"), - "Request permission": - MessageLookupByLibrary.simpleMessage("Vyžiadať si povolenie"), - "Request to read older messages": MessageLookupByLibrary.simpleMessage( - "Žiadosť o prečítanie starších správ"), - "Revoke all permissions": - MessageLookupByLibrary.simpleMessage("Zrušiť všetky povolenia"), - "Room has been upgraded": - MessageLookupByLibrary.simpleMessage("Miestnosť bola upgradeovaná"), - "Saturday": MessageLookupByLibrary.simpleMessage("Sobota"), - "Search for a chat": - MessageLookupByLibrary.simpleMessage("Vyhladať v chate"), - "Seen a long time ago": - MessageLookupByLibrary.simpleMessage("Videný veľmi dávno"), - "Send": MessageLookupByLibrary.simpleMessage("Odoslať"), - "Send a message": - MessageLookupByLibrary.simpleMessage("Odoslať správu"), - "Send file": MessageLookupByLibrary.simpleMessage("Odoslať súbor"), - "Send image": MessageLookupByLibrary.simpleMessage("Odoslať obrázok"), - "Set a profile picture": - MessageLookupByLibrary.simpleMessage("Nastaviť profilový obrázok"), - "Set group description": - MessageLookupByLibrary.simpleMessage("Nastaviť popis skupiny"), - "Set invitation link": - MessageLookupByLibrary.simpleMessage("Nastaviť odkaz pre pozvánku"), - "Set status": MessageLookupByLibrary.simpleMessage("Nastaviť status"), - "Settings": MessageLookupByLibrary.simpleMessage("Nastavenia"), - "Share": MessageLookupByLibrary.simpleMessage("Zdieľať"), - "Sign up": MessageLookupByLibrary.simpleMessage("Zaregistrovať sa"), - "Skip": MessageLookupByLibrary.simpleMessage("Preskočiť"), - "Source code": MessageLookupByLibrary.simpleMessage("Zdrojový kód"), - "Start your first chat :-)": - MessageLookupByLibrary.simpleMessage("Začnite svoj prvý chat :-)"), - "Submit": MessageLookupByLibrary.simpleMessage("Odoslať"), - "Sunday": MessageLookupByLibrary.simpleMessage("Nedeľa"), - "System": MessageLookupByLibrary.simpleMessage("Systémová farba"), - "Tap to show menu": - MessageLookupByLibrary.simpleMessage("Ťuknutím zobrazíte menu"), - "The encryption has been corrupted": - MessageLookupByLibrary.simpleMessage("Šifrovanie bolo poškodené"), - "They Don\'t Match": - MessageLookupByLibrary.simpleMessage("Sa nezhodujú"), - "They Match": MessageLookupByLibrary.simpleMessage("Zhodujú sa"), - "This room has been archived.": MessageLookupByLibrary.simpleMessage( - "Táto miestnosť bola archivovaná."), - "Thursday": MessageLookupByLibrary.simpleMessage("Štvrtok"), - "Try to send again": - MessageLookupByLibrary.simpleMessage("Skúsiť znova odoslať"), - "Tuesday": MessageLookupByLibrary.simpleMessage("Utorok"), - "Unblock Device": - MessageLookupByLibrary.simpleMessage("Odblokovať zariadenie"), - "Unknown device": - MessageLookupByLibrary.simpleMessage("Neznáme zariadenie"), - "Unknown encryption algorithm": MessageLookupByLibrary.simpleMessage( - "Neznámy šifrovací algoritmus"), - "Unmute chat": - MessageLookupByLibrary.simpleMessage("Zrušiť stlmenie chatu"), - "Use Amoled compatible colors?": MessageLookupByLibrary.simpleMessage( - "Použiť Amoled kompatibilné farby?"), - "Username": MessageLookupByLibrary.simpleMessage("Užívateľské meno"), - "Verify": MessageLookupByLibrary.simpleMessage("Overiť"), - "Verify User": - MessageLookupByLibrary.simpleMessage("Verifikovať používateľa"), - "Video call": MessageLookupByLibrary.simpleMessage("Videohovor"), - "Visibility of the chat history": - MessageLookupByLibrary.simpleMessage("Viditeľnosť histórie chatu"), - "Visible for all participants": MessageLookupByLibrary.simpleMessage( - "Viditeľné pre všetkých účastníkov"), - "Visible for everyone": - MessageLookupByLibrary.simpleMessage("Viditeľné pre každého"), - "Voice message": MessageLookupByLibrary.simpleMessage("Hlasová správa"), - "Wallpaper": MessageLookupByLibrary.simpleMessage("Pozadie"), - "Wednesday": MessageLookupByLibrary.simpleMessage("Streda"), - "Welcome to the cutest instant messenger in the matrix network.": - MessageLookupByLibrary.simpleMessage( - "Vítajte v najroztomilejšom instant messengeri v sieti matrix."), - "Who is allowed to join this group": - MessageLookupByLibrary.simpleMessage( - "Kto môže vstúpiť do tejto skupiny"), - "Write a message...": - MessageLookupByLibrary.simpleMessage("Napísať správu..."), - "Yes": MessageLookupByLibrary.simpleMessage("Áno"), - "You": MessageLookupByLibrary.simpleMessage("Vy"), - "You are invited to this chat": - MessageLookupByLibrary.simpleMessage("Ste pozvaní do tohto chatu"), - "You are no longer participating in this chat": - MessageLookupByLibrary.simpleMessage( - "Už sa nezúčastňujete tohto chatu"), - "You cannot invite yourself": - MessageLookupByLibrary.simpleMessage("Nemôžete pozvať samých seba"), - "You have been banned from this chat": - MessageLookupByLibrary.simpleMessage( - "Máte zablokovaný prístup k tomuto chatu"), - "You won\'t be able to disable the encryption anymore. Are you sure?": - MessageLookupByLibrary.simpleMessage( - "Šifrovanie už nebude možné vypnúť. Ste si tým istí?"), - "Your own username": - MessageLookupByLibrary.simpleMessage("Vaša vlastná prezývka"), - "acceptedTheInvitation": m0, - "activatedEndToEndEncryption": m1, - "alias": MessageLookupByLibrary.simpleMessage("alias"), - "askSSSSCache": MessageLookupByLibrary.simpleMessage( - "Prosím zadajte vašu prístupovu frázu k \"bezpečému úložisku\" alebo \"kľúč na obnovu\" pre uloženie kľúčov."), - "askSSSSSign": MessageLookupByLibrary.simpleMessage( - "Na overenie tejto osoby, prosím zadajte prístupovu frázu k \"bezpečému úložisku\" alebo \"klúč na obnovu\"."), - "askSSSSVerify": MessageLookupByLibrary.simpleMessage( - "Prosím zadajte vašu prístupovú frázu k \"bezpečnému úložisku\" alebo \"kľúč na obnovu\" pre overenie vašej relácie."), - "askVerificationRequest": m60, - "bannedUser": m2, - "byDefaultYouWillBeConnectedTo": m3, - "cachedKeys": - MessageLookupByLibrary.simpleMessage("Klúče sa úspešne uložili!"), - "changedTheChatAvatar": m4, - "changedTheChatDescriptionTo": m5, - "changedTheChatNameTo": m6, - "changedTheChatPermissions": m7, - "changedTheDisplaynameTo": m8, - "changedTheGuestAccessRules": m9, - "changedTheGuestAccessRulesTo": m10, - "changedTheHistoryVisibility": m11, - "changedTheHistoryVisibilityTo": m12, - "changedTheJoinRules": m13, - "changedTheJoinRulesTo": m14, - "changedTheProfileAvatar": m15, - "changedTheRoomAliases": m16, - "changedTheRoomInvitationLink": m17, - "compareEmojiMatch": MessageLookupByLibrary.simpleMessage( - "Porovnajte a uistite sa, že nasledujúce emotikony sa zhodujú na oboch zariadeniach:"), - "compareNumbersMatch": MessageLookupByLibrary.simpleMessage( - "Porovnajte a uistite sa, že nasledujúce čísla sa zhodujú na oboch zariadeniach:"), - "couldNotDecryptMessage": m18, - "countParticipants": m19, - "createdTheChat": m20, - "crossSigningDisabled": MessageLookupByLibrary.simpleMessage( - "Vzájomné overenie je vypnuté"), - "crossSigningEnabled": MessageLookupByLibrary.simpleMessage( - "Vzájomné overenie je zapnuté"), - "dateAndTimeOfDay": m21, - "dateWithYear": m22, - "dateWithoutYear": m23, - "emoteExists": - MessageLookupByLibrary.simpleMessage("Emotikon už existuje"), - "emoteInvalid": MessageLookupByLibrary.simpleMessage( - "Nesprávné označenie emotikonu"), - "emoteWarnNeedToPick": MessageLookupByLibrary.simpleMessage( - "Musíte zvoliť kód emotikonu a obrázok"), - "groupWith": m24, - "hasWithdrawnTheInvitationFor": m25, - "incorrectPassphraseOrKey": MessageLookupByLibrary.simpleMessage( - "Nesprávna prístupová fráza alebo kľúč na obnovenie"), - "inviteContactToGroup": m26, - "inviteText": m27, - "invitedUser": m28, - "is typing...": MessageLookupByLibrary.simpleMessage("píše..."), - "isDeviceKeyCorrect": MessageLookupByLibrary.simpleMessage( - "Je nasledujúci kód zariadenia správny?"), - "joinedTheChat": m29, - "keysCached": MessageLookupByLibrary.simpleMessage("Kľúče sú uložené"), - "keysMissing": MessageLookupByLibrary.simpleMessage("Kľúče chýbaju"), - "kicked": m30, - "kickedAndBanned": m31, - "lastActiveAgo": m32, - "loadCountMoreParticipants": m33, - "logInTo": m34, - "newVerificationRequest": - MessageLookupByLibrary.simpleMessage("Nová žiadosť o verifikáciu!"), - "noCrossSignBootstrap": MessageLookupByLibrary.simpleMessage( - "Fluffychat v súčasnosti nepodporuje povolenie krížového podpisu. Prosím, povoľte ho z Riot.im."), - "noMegolmBootstrap": MessageLookupByLibrary.simpleMessage( - "Fluffychat v súčasnosti nepodporuje povolenie online zálohu klúčov. Prosím, povoľte ho z Riot.im."), - "numberSelected": m35, - "ok": MessageLookupByLibrary.simpleMessage("ok"), - "onlineKeyBackupDisabled": MessageLookupByLibrary.simpleMessage( - "Online záloha kľúčov je vypnutá"), - "onlineKeyBackupEnabled": MessageLookupByLibrary.simpleMessage( - "Online záloha kľúčov je zapnutá"), - "passphraseOrKey": MessageLookupByLibrary.simpleMessage( - "prístupová fráza alebo kľúč na obnovenie"), - "play": m36, - "redactedAnEvent": m37, - "rejectedTheInvitation": m38, - "removedBy": m39, - "seenByUser": m40, - "seenByUserAndCountOthers": m41, - "seenByUserAndUser": m42, - "sentAFile": m43, - "sentAPicture": m44, - "sentASticker": m45, - "sentAVideo": m46, - "sentAnAudio": m47, - "sessionVerified": - MessageLookupByLibrary.simpleMessage("Relácia je overená"), - "sharedTheLocation": m48, - "timeOfDay": m49, - "title": MessageLookupByLibrary.simpleMessage("FluffyChat"), - "unbannedUser": m50, - "unknownEvent": m51, - "unknownSessionVerify": MessageLookupByLibrary.simpleMessage( - "Neznáma relácia, prosím verifikujte ju"), - "unreadChats": m52, - "unreadMessages": m53, - "unreadMessagesInChats": m54, - "userAndOthersAreTyping": m55, - "userAndUserAreTyping": m56, - "userIsTyping": m57, - "userLeftTheChat": m58, - "userSentUnknownEvent": m59, - "verifiedSession": - MessageLookupByLibrary.simpleMessage("Úspešne overenie relácie!"), - "verifyManual": - MessageLookupByLibrary.simpleMessage("Verifikovať manuálne"), - "verifyStart": - MessageLookupByLibrary.simpleMessage("Spustiť verifikáciu"), - "verifySuccess": - MessageLookupByLibrary.simpleMessage("Verifikácia bola úspešná!"), - "verifyTitle": - MessageLookupByLibrary.simpleMessage("Verifikujem protiľahlý účet"), - "waitingPartnerAcceptRequest": MessageLookupByLibrary.simpleMessage( - "Čaká sa, kým partner prijme požiadavku..."), - "waitingPartnerEmoji": MessageLookupByLibrary.simpleMessage( - "Čaká sa, kým partner prijme emotikon..."), - "waitingPartnerNumbers": MessageLookupByLibrary.simpleMessage( - "Čaká sa na to, kým partner prijme čísla...") - }; -} diff --git a/lib/main.dart b/lib/main.dart index 7bb69d2..8a28a69 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,23 +1,41 @@ +import 'dart:async'; import 'dart:io'; +import 'package:bot_toast/bot_toast.dart'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/views/homeserver_picker.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:bot_toast/bot_toast.dart'; - -import 'l10n/l10n.dart'; -import 'components/theme_switcher.dart'; -import 'components/matrix.dart'; -import 'views/chat_list.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:localstorage/localstorage.dart'; +import 'package:sentry/sentry.dart'; import 'package:universal_html/prefer_universal/html.dart' as html; +import 'components/matrix.dart'; +import 'components/theme_switcher.dart'; +import 'views/chat_list.dart'; + +final sentry = SentryClient(dsn: '8591d0d863b646feb4f3dda7e5dcab38'); + void main() { SystemChrome.setSystemUIOverlayStyle( SystemUiOverlayStyle(statusBarColor: Colors.transparent)); - runApp(App()); + runZonedGuarded( + () => runApp(App()), + (error, stackTrace) async { + final storage = LocalStorage('LocalStorage'); + await storage.ready; + debugPrint(error.toString()); + debugPrint(stackTrace.toString()); + if (storage.getItem('sentry') == true) { + await sentry.captureException( + exception: error, + stackTrace: stackTrace, + ); + } + }, + ); } class App extends StatelessWidget { @@ -34,26 +52,8 @@ class App extends StatelessWidget { builder: BotToastInit(), navigatorObservers: [BotToastNavigatorObserver()], theme: ThemeSwitcherWidget.of(context).themeData, - localizationsDelegates: [ - AppLocalizationsDelegate(), - GlobalMaterialLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - ], - supportedLocales: [ - const Locale('en'), // English - const Locale('de'), // German - const Locale('hu'), // Hungarian - const Locale('pl'), // Polish - const Locale('fr'), // French - const Locale('cs'), // Czech - const Locale('es'), // Spanish - const Locale('sk'), // Slovakian - const Locale('gl'), // Galician - const Locale('hr'), // Croatian - const Locale('ja'), // Japanese - const Locale('ru'), // Russian - ], + localizationsDelegates: L10n.localizationsDelegates, + supportedLocales: L10n.supportedLocales, locale: kIsWeb ? Locale(html.window.navigator.language.split('-').first) : null, diff --git a/lib/utils/client_presence_extension.dart b/lib/utils/client_presence_extension.dart index 65f1885..39e7519 100644 --- a/lib/utils/client_presence_extension.dart +++ b/lib/utils/client_presence_extension.dart @@ -1,10 +1,7 @@ import 'package:famedlysdk/famedlysdk.dart'; extension ClientPresenceExtension on Client { - static final Map presencesCache = {}; - - Future requestProfileCached(String senderId) async { - presencesCache[senderId] ??= await getProfileFromUserId(senderId); - return presencesCache[senderId]; - } + List get statuses => presences.values + .where((p) => p.presence.statusMsg?.isNotEmpty ?? false) + .toList(); } diff --git a/lib/utils/database/cipher_db.dart b/lib/utils/database/cipher_db.dart index 11b54f0..66863f0 100644 --- a/lib/utils/database/cipher_db.dart +++ b/lib/utils/database/cipher_db.dart @@ -6,9 +6,9 @@ import 'dart:io'; import 'dart:math'; import 'package:moor/backends.dart'; +import 'package:moor/ffi.dart'; import 'package:moor/moor.dart'; -import 'package:moor_ffi/moor_ffi.dart'; -import 'package:moor_ffi/open_helper.dart'; +import 'package:sqlite3/open.dart'; /// Tells `moor_ffi` to use `sqlcipher` instead of the regular `sqlite3`. /// diff --git a/lib/utils/database/mobile.dart b/lib/utils/database/mobile.dart index 8108659..d424e5f 100644 --- a/lib/utils/database/mobile.dart +++ b/lib/utils/database/mobile.dart @@ -1,3 +1,4 @@ +import 'dart:ffi'; import 'dart:io'; import 'dart:isolate'; import 'package:famedlysdk/famedlysdk.dart'; @@ -6,7 +7,10 @@ import 'package:path/path.dart' as p; import 'package:flutter/material.dart'; import 'package:moor/moor.dart'; import 'package:moor/isolate.dart'; +import '../platform_infos.dart'; import 'cipher_db.dart' as cipher; +import 'package:moor/ffi.dart' as moor; +import 'package:sqlite3/open.dart'; bool _inited = false; @@ -47,17 +51,39 @@ Future constructDb( {bool logStatements = false, String filename = 'database.sqlite', String password = ''}) async { - debugPrint('[Moor] using encrypted moor'); - final dbFolder = await getDatabasesPath(); - final targetPath = p.join(dbFolder, filename); - final receivePort = ReceivePort(); - await Isolate.spawn( - _startBackground, - _IsolateStartRequest( - receivePort.sendPort, targetPath, password, logStatements), - ); - final isolate = (await receivePort.first as MoorIsolate); - return Database.connect(await isolate.connect()); + if (PlatformInfos.isMobile || Platform.isMacOS) { + debugPrint('[Moor] using encrypted moor'); + final dbFolder = await getDatabasesPath(); + final targetPath = p.join(dbFolder, filename); + final receivePort = ReceivePort(); + await Isolate.spawn( + _startBackground, + _IsolateStartRequest( + receivePort.sendPort, targetPath, password, logStatements), + ); + final isolate = (await receivePort.first as MoorIsolate); + return Database.connect(await isolate.connect()); + } else if (Platform.isLinux) { + debugPrint('[Moor] using desktop moor'); + open.overrideFor(OperatingSystem.linux, _openOnLinux); + return Database(moor.VmDatabase.memory()); + } else if (Platform.isWindows) { + debugPrint('[Moor] using desktop moor'); + open.overrideFor(OperatingSystem.linux, _openOnWindows); + return Database(moor.VmDatabase.memory()); + } + throw Exception('Platform not supported'); +} + +DynamicLibrary _openOnLinux() { + final libraryNextToScript = File('/usr/lib/x86_64-linux-gnu/libsqlite3.so'); + return DynamicLibrary.open(libraryNextToScript.path); +} + +DynamicLibrary _openOnWindows() { + final script = File(Platform.script.toFilePath()); + final libraryNextToScript = File('${script.path}/sqlite3.dll'); + return DynamicLibrary.open(libraryNextToScript.path); } Future getLocalstorage(String key) async { diff --git a/lib/utils/date_time_extension.dart b/lib/utils/date_time_extension.dart index 5d94346..1257644 100644 --- a/lib/utils/date_time_extension.dart +++ b/lib/utils/date_time_extension.dart @@ -1,5 +1,5 @@ -import 'package:fluffychat/l10n/l10n.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; /// Provides extra functionality for formatting the time. extension DateTimeExtension on DateTime { @@ -34,8 +34,11 @@ extension DateTimeExtension on DateTime { /// Returns a simple time String. /// TODO: Add localization String localizedTimeOfDay(BuildContext context) { - return L10n.of(context).timeOfDay(_z(hour % 12 == 0 ? 12 : hour % 12), - _z(hour), _z(minute), hour > 11 ? 'pm' : 'am'); + if (MediaQuery.of(context).alwaysUse24HourFormat) { + return '${_z(hour)}:${_z(minute)}'; + } else { + return '${_z(hour % 12 == 0 ? 12 : hour % 12)}:${_z(minute)} ${hour > 11 ? "pm" : "am"}'; + } } /// Returns [localizedTimeOfDay()] if the ChatTime is today, the name of the week diff --git a/lib/utils/event_extension.dart b/lib/utils/event_extension.dart index 8392950..b7a60b3 100644 --- a/lib/utils/event_extension.dart +++ b/lib/utils/event_extension.dart @@ -3,9 +3,20 @@ import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'matrix_file_extension.dart'; +import 'app_route.dart'; +import '../views/image_view.dart'; extension LocalizedBody on Event { - void openFile(BuildContext context) async { + void openFile(BuildContext context, {bool downloadOnly = false}) async { + if (!downloadOnly && + [MessageTypes.Image, MessageTypes.Sticker].contains(messageType)) { + await Navigator.of(context).push( + AppRoute( + ImageView(this), + ), + ); + return; + } final MatrixFile matrixFile = await SimpleDialogs(context).tryRequestWithLoadingDialog( downloadAndDecryptAttachment(), @@ -32,7 +43,14 @@ extension LocalizedBody on Event { [MessageTypes.Image, MessageTypes.Sticker].contains(messageType) && (kIsWeb || (content['info'] is Map && - content['info']['size'] < room.client.database.maxFileSize)); + content['info']['size'] is int && + content['info']['size'] < room.client.database.maxFileSize) || + (hasThumbnail && + content['info']['thumbnail_info'] is Map && + content['info']['thumbnail_info']['size'] is int && + content['info']['thumbnail_info']['size'] < + room.client.database.maxFileSize) || + (content['url'] is String)); String get sizeString { if (content['info'] is Map && diff --git a/lib/utils/famedlysdk_store.dart b/lib/utils/famedlysdk_store.dart index 0dc906c..5752ce7 100644 --- a/lib/utils/famedlysdk_store.dart +++ b/lib/utils/famedlysdk_store.dart @@ -1,6 +1,7 @@ import 'dart:convert'; import 'package:famedlysdk/famedlysdk.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; import 'package:flutter/material.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; @@ -186,7 +187,9 @@ Future migrate(String clientName, Database db, Store store) async { entry.key, entry.value['inboundGroupSession'], json.encode(entry.value['content']), - json.encode(entry.value['indexes'])); + json.encode(entry.value['indexes']), + null, + null); } } } @@ -199,10 +202,10 @@ class Store { Store() : storage = LocalStorage('LocalStorage'), - secureStorage = kIsWeb ? null : FlutterSecureStorage(); + secureStorage = PlatformInfos.isMobile ? FlutterSecureStorage() : null; Future getItem(String key) async { - if (kIsWeb) { + if (!PlatformInfos.isMobile) { await storage.ready; try { return await storage.getItem(key); @@ -218,7 +221,7 @@ class Store { } Future setItem(String key, String value) async { - if (kIsWeb) { + if (!PlatformInfos.isMobile) { await storage.ready; return await storage.setItem(key, value); } @@ -230,7 +233,7 @@ class Store { } Future> getAllItems() async { - if (kIsWeb) { + if (!PlatformInfos.isMobile) { try { final rawStorage = await getLocalstorage('LocalStorage'); return json.decode(rawStorage); diff --git a/lib/utils/firebase_controller.dart b/lib/utils/firebase_controller.dart index efd8b99..9c20f03 100644 --- a/lib/utils/firebase_controller.dart +++ b/lib/utils/firebase_controller.dart @@ -1,19 +1,22 @@ import 'dart:convert'; import 'dart:io'; +import 'package:bot_toast/bot_toast.dart'; +import 'package:famedlysdk/famedlysdk.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:fluffychat/components/matrix.dart'; -import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/utils/app_route.dart'; import 'package:fluffychat/views/chat.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:flutter_gen/gen_l10n/l10n_en.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; -import 'package:bot_toast/bot_toast.dart'; import 'package:path_provider/path_provider.dart'; -import 'package:famedlysdk/famedlysdk.dart'; -import 'famedlysdk_store.dart'; + import '../components/matrix.dart'; +import 'famedlysdk_store.dart'; +import 'matrix_locals.dart'; abstract class FirebaseController { static final FirebaseMessaging _firebaseMessaging = FirebaseMessaging(); @@ -53,7 +56,10 @@ abstract class FirebaseController { } return; } - final pushers = await client.api.requestPushers(); + final pushers = await client.requestPushers().catchError((e) { + debugPrint('[Push] Unable to request pushers: ${e.toString()}'); + return []; + }); final currentPushers = pushers.where((pusher) => pusher.pushkey == token); if (currentPushers.length == 1 && currentPushers.first.kind == 'http' && @@ -69,14 +75,15 @@ abstract class FirebaseController { for (final currentPusher in currentPushers) { currentPusher.pushkey = token; currentPusher.kind = 'null'; - await client.api.setPusher( + await client.setPusher( currentPusher, append: true, ); debugPrint('[Push] Remove legacy pusher for this device'); } } - await client.api.setPusher( + await client + .setPusher( Pusher( token, APP_ID, @@ -90,7 +97,11 @@ abstract class FirebaseController { kind: 'http', ), append: false, - ); + ) + .catchError((e) { + debugPrint('[Push] Unable to set pushers: ${e.toString()}'); + return []; + }); } Function goToRoom = (dynamic message) async { @@ -149,21 +160,30 @@ abstract class FirebaseController { return null; } if (context != null && Matrix.of(context).activeRoomId == roomId) { + debugPrint('[Push] New clearing push'); return null; } - final i18n = - context == null ? L10n(Platform.localeName) : L10n.of(context); + debugPrint('[Push] New message received'); + // FIXME unable to init without context currently https://github.com/flutter/flutter/issues/67092 + // Locked on EN until issue resolved + final i18n = context == null ? L10nEn() : L10n.of(context); // Get the client Client client; - if (context != null) { + var tempClient = false; + try { client = Matrix.of(context).client; - } else { + } catch (_) { + client = null; + } + if (client == null) { + tempClient = true; final platform = kIsWeb ? 'Web' : Platform.operatingSystem; final clientName = 'FluffyChat $platform'; - client = Client(clientName, debug: false); + client = Client(clientName); client.database = await getDatabase(client); client.connect(); + debugPrint('[Push] Use a temp client'); await client.onLoginStateChanged.stream .firstWhere((l) => l == LoginState.logged) .timeout( @@ -174,10 +194,12 @@ abstract class FirebaseController { // Get the room var room = client.getRoomById(roomId); if (room == null) { + debugPrint('[Push] Wait for the room'); await client.onRoomUpdate.stream .where((u) => u.id == roomId) .first .timeout(Duration(seconds: 5)); + debugPrint('[Push] Room found'); room = client.getRoomById(roomId); if (room == null) return null; } @@ -185,10 +207,12 @@ abstract class FirebaseController { // Get the event var event = await client.database.getEventById(client.id, eventId, room); if (event == null) { + debugPrint('[Push] Wait for the event'); final eventUpdate = await client.onEvent.stream .where((u) => u.content['event_id'] == eventId) .first .timeout(Duration(seconds: 5)); + debugPrint('[Push] Event found'); event = Event.fromJson(eventUpdate.content, room); if (room == null) return null; } @@ -206,14 +230,14 @@ abstract class FirebaseController { // Calculate the body final body = event.getLocalizedBody( - i18n, + MatrixLocals(i18n), withSenderNamePrefix: true, hideReply: true, ); // The person object for the android message style notification final person = Person( - name: room.getLocalizedDisplayname(i18n), + name: room.getLocalizedDisplayname(MatrixLocals(i18n)), icon: room.avatar == null ? null : BitmapFilePathAndroidIcon( @@ -247,8 +271,17 @@ abstract class FirebaseController { var platformChannelSpecifics = NotificationDetails( androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics); await _flutterLocalNotificationsPlugin.show( - 0, room.getLocalizedDisplayname(i18n), body, platformChannelSpecifics, + 0, + room.getLocalizedDisplayname(MatrixLocals(i18n)), + body, + platformChannelSpecifics, payload: roomId); + + if (tempClient) { + await client.dispose(); + client = null; + debugPrint('[Push] Temp client disposed'); + } } catch (exception) { debugPrint('[Push] Error while processing notification: ' + exception.toString()); @@ -268,7 +301,11 @@ abstract class FirebaseController { var initializationSettings = InitializationSettings( initializationSettingsAndroid, initializationSettingsIOS); await flutterLocalNotificationsPlugin.initialize(initializationSettings); - final l10n = L10n(Platform.localeName); + + // FIXME unable to init without context currently https://github.com/flutter/flutter/issues/67092 + // Locked on en for now + //final l10n = L10n(Platform.localeName); + final l10n = L10nEn(); // Notification data and matrix data Map data = message['data'] ?? message; diff --git a/lib/utils/matrix_file_extension.dart b/lib/utils/matrix_file_extension.dart index f2c92b9..2f1dc44 100644 --- a/lib/utils/matrix_file_extension.dart +++ b/lib/utils/matrix_file_extension.dart @@ -24,11 +24,44 @@ extension MatrixFileExtension on MatrixFile { element.click(); element.remove(); } else { - var tempDir = await getTemporaryDirectory(); - final file = File(tempDir.path + '/' + name.split('/').last); + final downloadsDir = Platform.isAndroid + ? (await getExternalStorageDirectory()) + : (await getApplicationDocumentsDirectory()); + + final file = File(downloadsDir.path + '/' + name.split('/').last); file.writeAsBytesSync(bytes); await OpenFile.open(file.path); } 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 { + var size = this.size.toDouble(); + if (size < 1000000) { + size = size / 1000; + size = (size * 10).round() / 10; + return '${size.toString()} KB'; + } else if (size < 1000000000) { + size = size / 1000000; + size = (size * 10).round() / 10; + return '${size.toString()} MB'; + } else { + size = size / 1000000000; + size = (size * 10).round() / 10; + return '${size.toString()} GB'; + } + } } diff --git a/lib/utils/matrix_identifier_string_extension.dart b/lib/utils/matrix_identifier_string_extension.dart new file mode 100644 index 0000000..140be06 --- /dev/null +++ b/lib/utils/matrix_identifier_string_extension.dart @@ -0,0 +1,24 @@ +extension MatrixIdentifierStringExtension on String { + /// Separates room identifiers with an event id and possibly a query parameter into its components. + MatrixIdentifierStringExtensionResults parseIdentifierIntoParts() { + final match = RegExp(r'^([#!][^:]*:[^\/?]*)(?:\/(\$[^?]*))?(?:\?(.*))?$') + .firstMatch(this); + if (match == null) { + return null; + } + return MatrixIdentifierStringExtensionResults( + roomIdOrAlias: match.group(1), + eventId: match.group(2), + queryString: match.group(3), + ); + } +} + +class MatrixIdentifierStringExtensionResults { + final String roomIdOrAlias; + final String eventId; + final String queryString; + + MatrixIdentifierStringExtensionResults( + {this.roomIdOrAlias, this.eventId, this.queryString}); +} diff --git a/lib/utils/matrix_locals.dart b/lib/utils/matrix_locals.dart new file mode 100644 index 0000000..fe79cf5 --- /dev/null +++ b/lib/utils/matrix_locals.dart @@ -0,0 +1,264 @@ +import 'package:famedlysdk/famedlysdk.dart'; +import 'package:flutter_gen/gen_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.needPantalaimonWarning; + + @override + String get noPermission => l10n.noPermission; + + @override + String redactedAnEvent(String senderName) { + return l10n.redactedAnEvent(senderName); + } + + @override + String rejectedTheInvitation(String targetName) { + return l10n.rejectedTheInvitation(targetName); + } + + @override + String removedBy(String calcDisplayname) { + return l10n.removedBy(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.unknownEvent(typeKey); + } + + @override + String userLeftTheChat(String targetName) { + return l10n.userLeftTheChat(userLeftTheChat); + } + + @override + String get visibleForAllParticipants => l10n.visibleForAllParticipants; + + @override + String get visibleForEveryone => l10n.visibleForEveryone; + + @override + String get you => l10n.you; +} diff --git a/lib/utils/platform_infos.dart b/lib/utils/platform_infos.dart new file mode 100644 index 0000000..4c072b1 --- /dev/null +++ b/lib/utils/platform_infos.dart @@ -0,0 +1,9 @@ +import 'dart:io'; + +import 'package:flutter/foundation.dart'; + +abstract class PlatformInfos { + static bool get isWeb => kIsWeb; + static bool get isMobile => !kIsWeb && (Platform.isAndroid || Platform.isIOS); + static bool get usesTouchscreen => !isMobile; +} diff --git a/lib/utils/presence_extension.dart b/lib/utils/presence_extension.dart index c127cd3..bfbd032 100644 --- a/lib/utils/presence_extension.dart +++ b/lib/utils/presence_extension.dart @@ -1,18 +1,24 @@ import 'package:famedlysdk/famedlysdk.dart'; -import 'package:fluffychat/l10n/l10n.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; + import 'date_time_extension.dart'; extension PresenceExtension on Presence { + bool get isUserStatus => presence?.statusMsg?.isNotEmpty ?? false; + String getLocalizedStatusMessage(BuildContext context) { if (presence.statusMsg?.isNotEmpty ?? false) { return presence.statusMsg; } - if (presence.lastActiveAgo != null) { + if (presence.lastActiveAgo != null ?? presence.lastActiveAgo != 0) { return L10n.of(context).lastActiveAgo( DateTime.fromMillisecondsSinceEpoch(presence.lastActiveAgo) .localizedTimeShort(context)); } + if (presence.currentlyActive) { + return L10n.of(context).currentlyActive; + } return L10n.of(context).lastSeenLongTimeAgo; } } diff --git a/lib/utils/room_send_file_extension.dart b/lib/utils/room_send_file_extension.dart new file mode 100644 index 0000000..04ab707 --- /dev/null +++ b/lib/utils/room_send_file_extension.dart @@ -0,0 +1,98 @@ +/* + * Famedly App + * Copyright (C) 2020 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:typed_data'; +import 'dart:ui'; + +import 'package:famedlysdk/famedlysdk.dart'; +import 'package:native_imaging/native_imaging.dart' as native; + +extension RoomSendFileExtension on Room { + Future sendFileEventWithThumbnail( + MatrixFile file, { + String txid, + Event inReplyTo, + String editEventId, + bool waitUntilSent, + }) async { + MatrixFile thumbnail; + try { + if (file is MatrixImageFile) { + await native.init(); + var nativeImg = native.Image(); + try { + await nativeImg.loadEncoded(file.bytes); + file.width = nativeImg.width(); + file.height = nativeImg.height(); + } on UnsupportedError { + final dartCodec = await instantiateImageCodec(file.bytes); + final dartFrame = await dartCodec.getNextFrame(); + file.width = dartFrame.image.width; + file.height = dartFrame.image.height; + final rgbaData = await dartFrame.image.toByteData(); + final rgba = Uint8List.view( + rgbaData.buffer, rgbaData.offsetInBytes, rgbaData.lengthInBytes); + dartFrame.image.dispose(); + dartCodec.dispose(); + nativeImg.loadRGBA(file.width, file.height, rgba); + } + + const max = 800; + if (file.width > max || file.height > max) { + var w = max, h = max; + if (file.width > file.height) { + h = max * file.height ~/ file.width; + } else { + w = max * file.width ~/ file.height; + } + + final scaledImg = nativeImg.resample(w, h, native.Transform.lanczos); + nativeImg.free(); + nativeImg = scaledImg; + } + final jpegBytes = await nativeImg.toJpeg(75); + file.blurhash = nativeImg.toBlurhash(3, 3); + + thumbnail = MatrixImageFile( + bytes: jpegBytes, + name: 'thumbnail.jpg', + mimeType: 'image/jpeg', + width: nativeImg.width(), + height: nativeImg.height(), + ); + + nativeImg.free(); + + if (thumbnail.size > file.size ~/ 2) { + thumbnail = null; + } + } + } catch (e) { + // send no thumbnail + } + + return sendFileEvent( + file, + txid: txid, + inReplyTo: inReplyTo, + editEventId: editEventId, + waitUntilSent: waitUntilSent ?? false, + thumbnail: thumbnail, + ); + } +} diff --git a/lib/utils/room_status_extension.dart b/lib/utils/room_status_extension.dart index da86e9f..04e8040 100644 --- a/lib/utils/room_status_extension.dart +++ b/lib/utils/room_status_extension.dart @@ -1,6 +1,6 @@ import 'package:famedlysdk/famedlysdk.dart'; -import 'package:fluffychat/l10n/l10n.dart'; import 'package:flutter/widgets.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'date_time_extension.dart'; diff --git a/lib/utils/sentry_controller.dart b/lib/utils/sentry_controller.dart new file mode 100644 index 0000000..1557262 --- /dev/null +++ b/lib/utils/sentry_controller.dart @@ -0,0 +1,26 @@ +import 'package:bot_toast/bot_toast.dart'; +import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:localstorage/localstorage.dart'; + +abstract class SentryController { + static LocalStorage storage = LocalStorage('LocalStorage'); + static Future toggleSentryAction(BuildContext context) async { + final enableSentry = await SimpleDialogs(context).askConfirmation( + titleText: L10n.of(context).sendBugReports, + contentText: L10n.of(context).sentryInfo, + confirmText: L10n.of(context).ok, + cancelText: L10n.of(context).no, + ); + await storage.ready; + await storage.setItem('sentry', enableSentry); + BotToast.showText(text: L10n.of(context).changesHaveBeenSaved); + return; + } + + static Future getSentryStatus() async { + await storage.ready; + return storage.getItem('sentry') as bool; + } +} diff --git a/lib/utils/ui_fake.dart b/lib/utils/ui_fake.dart new file mode 100644 index 0000000..46c8a74 --- /dev/null +++ b/lib/utils/ui_fake.dart @@ -0,0 +1,4 @@ +// ignore: camel_case_types +class platformViewRegistry { + static void registerViewFactory(String viewId, dynamic cb) {} +} diff --git a/lib/utils/url_launcher.dart b/lib/utils/url_launcher.dart index b7b4928..1f99d65 100644 --- a/lib/utils/url_launcher.dart +++ b/lib/utils/url_launcher.dart @@ -5,6 +5,7 @@ import 'package:fluffychat/utils/app_route.dart'; import 'package:fluffychat/views/chat.dart'; import 'package:flutter/material.dart'; import 'package:url_launcher/url_launcher.dart'; +import 'matrix_identifier_string_extension.dart'; class UrlLauncher { final String url; @@ -12,7 +13,8 @@ class UrlLauncher { const UrlLauncher(this.context, this.url); void launchUrl() { - if (url.startsWith('https://matrix.to/#/')) { + if (url.startsWith('https://matrix.to/#/') || + {'#', '@', '!', '+', '\$'}.contains(url[0])) { return openMatrixToUrl(); } launch(url); @@ -21,33 +23,110 @@ class UrlLauncher { void openMatrixToUrl() async { final matrix = Matrix.of(context); final identifier = url.replaceAll('https://matrix.to/#/', ''); - if (identifier.substring(0, 1) == '#') { - final response = await SimpleDialogs(context).tryRequestWithLoadingDialog( - matrix.client.api.joinRoom( - Uri.encodeComponent(identifier), - ), - ); - if (response == false) return; - await Navigator.pushAndRemoveUntil( - context, - AppRoute.defaultRoute(context, ChatView(response['room_id'])), - (r) => r.isFirst, - ); - } else if (identifier.substring(0, 1) == '@') { + if (identifier[0] == '#' || identifier[0] == '!') { + // sometimes we have identifiers which have an event id and additional query parameters + // we want to separate those. + final identityParts = identifier.parseIdentifierIntoParts(); + if (identityParts == null) { + return; // no match, nothing to do + } + final roomIdOrAlias = identityParts.roomIdOrAlias; + final event = identityParts.eventId; + final query = identityParts.queryString; + 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 + var servers = {}; + if (room == null && roomIdOrAlias.startsWith('#')) { + // we were unable to find the room locally...so resolve it + final response = + await SimpleDialogs(context).tryRequestWithLoadingDialog( + matrix.client.requestRoomAliasInformations(roomIdOrAlias), + ); + if (response != false) { + roomId = response.roomId; + servers.addAll(response.servers); + room = matrix.client.getRoomById(roomId); + } + } + if (query != null) { + // the query information might hold additional servers to try, so let's try them! + // as there might be multiple "via" tags we can't just use Uri.splitQueryString, we need to do our own thing + for (final parameter in query.split('&')) { + final index = parameter.indexOf('='); + if (index == -1) { + continue; + } + if (Uri.decodeQueryComponent(parameter.substring(0, index)) != + 'via') { + continue; + } + servers.add(Uri.decodeQueryComponent(parameter.substring(index + 1))); + } + } + if (room != null) { + // we have the room, so....just open it! + await Navigator.pushAndRemoveUntil( + context, + AppRoute.defaultRoute( + context, ChatView(room.id, scrollToEventId: event)), + (r) => r.isFirst, + ); + return; + } + if (roomIdOrAlias[0] == '!') { + roomId = roomIdOrAlias; + } + if (await SimpleDialogs(context) + .askConfirmation(titleText: 'Join room $roomIdOrAlias')) { + final response = + await SimpleDialogs(context).tryRequestWithLoadingDialog( + matrix.client.joinRoomOrAlias( + roomIdOrAlias, + servers: servers.isNotEmpty ? servers.toList() : null, + ), + ); + if (response == false) return; + // wait for two seconds so that it probably came down /sync + await SimpleDialogs(context).tryRequestWithLoadingDialog( + Future.delayed(const Duration(seconds: 2))); + await Navigator.pushAndRemoveUntil( + context, + AppRoute.defaultRoute( + context, ChatView(response, scrollToEventId: event)), + (r) => r.isFirst, + ); + } + } else if (identifier[0] == '@') { final user = User( identifier, room: Room(id: '', client: matrix.client), ); - final String roomID = await SimpleDialogs(context) - .tryRequestWithLoadingDialog(user.startDirectChat()); - Navigator.of(context).pop(); - - if (roomID != null) { + var roomId = matrix.client.getDirectChatFromUserId(identifier); + if (roomId != null) { await Navigator.pushAndRemoveUntil( context, - AppRoute.defaultRoute(context, ChatView(roomID)), + AppRoute.defaultRoute(context, ChatView(roomId)), (r) => r.isFirst, ); + return; + } + + if (await SimpleDialogs(context) + .askConfirmation(titleText: 'Message user $identifier')) { + roomId = await SimpleDialogs(context) + .tryRequestWithLoadingDialog(user.startDirectChat()); + Navigator.of(context).pop(); + + if (roomId != null) { + await Navigator.pushAndRemoveUntil( + context, + AppRoute.defaultRoute(context, ChatView(roomId)), + (r) => r.isFirst, + ); + } } } } diff --git a/lib/utils/user_status.dart b/lib/utils/user_status.dart new file mode 100644 index 0000000..dadfb3f --- /dev/null +++ b/lib/utils/user_status.dart @@ -0,0 +1,21 @@ +class UserStatus { + String statusMsg; + String userId; + int receivedAt; + + UserStatus(); + + UserStatus.fromJson(Map json) { + statusMsg = json['status_msg']; + userId = json['user_id']; + receivedAt = json['received_at']; + } + + Map toJson() { + final data = {}; + data['status_msg'] = statusMsg; + data['user_id'] = userId; + data['received_at'] = receivedAt; + return data; + } +} diff --git a/lib/views/app_info.dart b/lib/views/app_info.dart index b0d6031..462be7e 100644 --- a/lib/views/app_info.dart +++ b/lib/views/app_info.dart @@ -1,10 +1,10 @@ import 'package:fluffychat/components/adaptive_page_layout.dart'; import 'package:fluffychat/components/matrix.dart'; -import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/utils/beautify_string_extension.dart'; import 'package:fluffychat/views/chat_list.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:olm/olm.dart' as olm; -import 'package:fluffychat/utils/beautify_string_extension.dart'; class AppInfoView extends StatelessWidget { @override @@ -23,7 +23,7 @@ class AppInfo extends StatelessWidget { var client = Matrix.of(context).client; return Scaffold( appBar: AppBar( - title: Text(L10n.of(context).accountInformations), + title: Text(L10n.of(context).accountInformation), ), body: ListView( children: [ @@ -33,7 +33,7 @@ class AppInfo extends StatelessWidget { ), ListTile( title: Text('Homeserver:'), - subtitle: Text(client.api.homeserver.toString()), + subtitle: Text(client.homeserver.toString()), ), ListTile( title: Text('Device name:'), diff --git a/lib/views/archive.dart b/lib/views/archive.dart index 03a1fd5..c4fad9c 100644 --- a/lib/views/archive.dart +++ b/lib/views/archive.dart @@ -2,8 +2,8 @@ import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/components/adaptive_page_layout.dart'; import 'package:fluffychat/components/list_items/chat_list_item.dart'; import 'package:fluffychat/components/matrix.dart'; -import 'package:fluffychat/l10n/l10n.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; class Archive extends StatefulWidget { @override diff --git a/lib/views/auth_web_view.dart b/lib/views/auth_web_view.dart index ad51573..ec5ba7d 100644 --- a/lib/views/auth_web_view.dart +++ b/lib/views/auth_web_view.dart @@ -1,7 +1,7 @@ import 'package:fluffychat/components/matrix.dart'; -import 'package:fluffychat/l10n/l10n.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:url_launcher/url_launcher.dart'; import 'package:webview_flutter/webview_flutter.dart'; @@ -14,7 +14,7 @@ class AuthWebView extends StatelessWidget { @override Widget build(BuildContext context) { - final url = Matrix.of(context).client.api.homeserver.toString() + + final url = Matrix.of(context).client.homeserver.toString() + '/_matrix/client/r0/auth/$authType/fallback/web?session=$session'; if (kIsWeb) launch(url); return Scaffold( diff --git a/lib/views/chat.dart b/lib/views/chat.dart index e364bc8..ad726c4 100644 --- a/lib/views/chat.dart +++ b/lib/views/chat.dart @@ -3,35 +3,42 @@ import 'dart:io'; import 'dart:math'; import 'package:famedlysdk/famedlysdk.dart'; +import 'package:file_picker_platform_interface/file_picker_platform_interface.dart'; import 'package:fluffychat/components/adaptive_page_layout.dart'; import 'package:fluffychat/components/avatar.dart'; import 'package:fluffychat/components/chat_settings_popup_menu.dart'; import 'package:fluffychat/components/connection_status_header.dart'; -import 'package:fluffychat/components/dialogs/presence_dialog.dart'; import 'package:fluffychat/components/dialogs/recording_dialog.dart'; import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; import 'package:fluffychat/components/encryption_button.dart'; import 'package:fluffychat/components/list_items/message.dart'; import 'package:fluffychat/components/matrix.dart'; import 'package:fluffychat/components/reply_content.dart'; -import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/config/app_emojis.dart'; import 'package:fluffychat/utils/app_route.dart'; +import 'package:fluffychat/utils/matrix_locals.dart'; import 'package:fluffychat/utils/room_status_extension.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/scheduler.dart'; import 'package:flutter/services.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:image_picker/image_picker.dart'; import 'package:memoryfilepicker/memoryfilepicker.dart'; import 'package:pedantic/pedantic.dart'; -import 'package:image_picker/image_picker.dart'; +import 'package:scroll_to_index/scroll_to_index.dart'; +import '../components/dialogs/send_file_dialog.dart'; +import '../components/input_bar.dart'; +import '../utils/matrix_file_extension.dart'; import 'chat_details.dart'; import 'chat_list.dart'; -import '../components/input_bar.dart'; class ChatView extends StatelessWidget { final String id; + final String scrollToEventId; - const ChatView(this.id, {Key key}) : super(key: key); + const ChatView(this.id, {Key key, this.scrollToEventId}) : super(key: key); @override Widget build(BuildContext context) { @@ -41,15 +48,16 @@ class ChatView extends StatelessWidget { firstScaffold: ChatList( activeChat: id, ), - secondScaffold: _Chat(id), + secondScaffold: _Chat(id, scrollToEventId: scrollToEventId), ); } } class _Chat extends StatefulWidget { final String id; + final String scrollToEventId; - const _Chat(this.id, {Key key}) : super(key: key); + const _Chat(this.id, {Key key, this.scrollToEventId}) : super(key: key); @override _ChatState createState() => _ChatState(); @@ -64,7 +72,7 @@ class _ChatState extends State<_Chat> { String seenByText = ''; - final ScrollController _scrollController = ScrollController(); + final AutoScrollController _scrollController = AutoScrollController(); FocusNode inputFocus = FocusNode(); @@ -76,6 +84,8 @@ class _ChatState extends State<_Chat> { Event replyEvent; + Event editEvent; + bool showScrollDownButton = false; bool get selectMode => selectedEvents.isNotEmpty; @@ -96,28 +106,33 @@ class _ChatState extends State<_Chat> { timeline.requestHistory(historyCount: _loadHistoryCount), ); - if (mounted) setState(() => _loadingHistory = false); + // we do NOT setState() here as then the event order will be wrong. + // instead, we just set our variable to false, and rely on timeline update to set the + // new state, thus triggering a re-render, for us + _loadingHistory = false; + } + } + + void _updateScrollController() { + if (_scrollController.position.pixels == + _scrollController.position.maxScrollExtent && + timeline.events.isNotEmpty && + timeline.events[timeline.events.length - 1].type != + EventTypes.RoomCreate) { + requestHistory(); + } + if (_scrollController.position.pixels > 0 && + showScrollDownButton == false) { + setState(() => showScrollDownButton = true); + } else if (_scrollController.position.pixels == 0 && + showScrollDownButton == true) { + setState(() => showScrollDownButton = false); } } @override void initState() { - _scrollController.addListener(() async { - if (_scrollController.position.pixels == - _scrollController.position.maxScrollExtent && - timeline.events.isNotEmpty && - timeline.events[timeline.events.length - 1].type != - EventTypes.RoomCreate) { - requestHistory(); - } - if (_scrollController.position.pixels > 0 && - showScrollDownButton == false) { - setState(() => showScrollDownButton = true); - } else if (_scrollController.position.pixels == 0 && - showScrollDownButton == true) { - setState(() => showScrollDownButton = false); - } - }); + _scrollController.addListener(_updateScrollController); super.initState(); } @@ -151,12 +166,22 @@ class _ChatState extends State<_Chat> { } } - Future getTimeline() async { + Future getTimeline(BuildContext context) async { if (timeline == null) { timeline = await room.getTimeline(onUpdate: updateView); if (timeline.events.isNotEmpty) { unawaited(room.sendReadReceipt(timeline.events.first.eventId)); } + + // when the scroll controller is attached we want to scroll to an event id, if specified + // and update the scroll controller...which will trigger a request history, if the + // "load more" button is visible on the screen + SchedulerBinding.instance.addPostFrameCallback((_) async { + if (widget.scrollToEventId != null) { + _scrollToEventId(widget.scrollToEventId, context: context); + } + _updateScrollController(); + }); } updateView(); return true; @@ -174,51 +199,50 @@ class _ChatState extends State<_Chat> { void send() { if (sendController.text.isEmpty) return; - room.sendTextEvent(sendController.text, inReplyTo: replyEvent); + room.sendTextEvent(sendController.text, + inReplyTo: replyEvent, editEventId: editEvent?.eventId); sendController.text = ''; - if (replyEvent != null) { - setState(() => replyEvent = null); - } - setState(() => inputText = ''); + setState(() { + inputText = ''; + replyEvent = null; + editEvent = null; + }); } void sendFileAction(BuildContext context) async { var file = await MemoryFilePicker.getFile(); if (file == null) return; - await SimpleDialogs(context).tryRequestWithLoadingDialog( - room.sendFileEvent( - MatrixFile(bytes: file.bytes, name: file.path), - ), - ); + await showDialog( + context: context, + builder: (context) => SendFileDialog( + file: + MatrixFile(bytes: file.bytes, name: file.path).detectFileType, + room: room, + )); } void sendImageAction(BuildContext context) async { - var file = await MemoryFilePicker.getImage( - source: ImageSource.gallery, - imageQuality: 50, - maxWidth: 1600, - maxHeight: 1600); + var file = await MemoryFilePicker.getFile(type: FileType.image); if (file == null) return; - await SimpleDialogs(context).tryRequestWithLoadingDialog( - room.sendFileEvent( - MatrixImageFile(bytes: await file.bytes, name: file.path), - ), - ); + final bytes = await file.bytes; + await showDialog( + context: context, + builder: (context) => SendFileDialog( + file: MatrixImageFile(bytes: bytes, name: file.path), + room: room, + )); } void openCameraAction(BuildContext context) async { - var file = await MemoryFilePicker.getImage( - source: ImageSource.camera, - imageQuality: 50, - maxWidth: 1600, - maxHeight: 1600); + var file = await MemoryFilePicker.getImage(source: ImageSource.camera); if (file == null) return; - await SimpleDialogs(context).tryRequestWithLoadingDialog( - room.sendFileEvent( - MatrixImageFile(bytes: file.bytes, name: file.path), - ), - ); + await showDialog( + context: context, + builder: (context) => SendFileDialog( + file: MatrixImageFile(bytes: file.bytes, name: file.path), + room: room, + )); } void voiceMessageAction(BuildContext context) async { @@ -230,6 +254,8 @@ class _ChatState extends State<_Chat> { )); if (result == null) return; final audioFile = File(result); + // as we already explicitly say send in the recording dialog, + // we do not need the send file dialog anymore. We can just send this straight away. await SimpleDialogs(context).tryRequestWithLoadingDialog( room.sendFileEvent( MatrixAudioFile( @@ -241,12 +267,13 @@ class _ChatState extends State<_Chat> { String _getSelectedEventString(BuildContext context) { var copyString = ''; if (selectedEvents.length == 1) { - return selectedEvents.first.getLocalizedBody(L10n.of(context)); + return selectedEvents.first + .getLocalizedBody(MatrixLocals(L10n.of(context))); } for (var event in selectedEvents) { if (copyString.isNotEmpty) copyString += '\n\n'; - copyString += - event.getLocalizedBody(L10n.of(context), withSenderNamePrefix: true); + copyString += event.getLocalizedBody(MatrixLocals(L10n.of(context)), + withSenderNamePrefix: true); } return copyString; } @@ -289,8 +316,17 @@ class _ChatState extends State<_Chat> { Navigator.of(context).popUntil((r) => r.isFirst); } - void sendAgainAction() { - selectedEvents.first.sendAgain(); + void sendAgainAction(Timeline timeline) { + final event = selectedEvents.first; + if (event.status == -1) { + event.sendAgain(); + } + final allEditEvents = event + .aggregatedEvents(timeline, RelationshipTypes.Edit) + .where((e) => e.status == -1); + for (final e in allEditEvents) { + e.sendAgain(); + } setState(() => selectedEvents.clear()); } @@ -302,6 +338,66 @@ class _ChatState extends State<_Chat> { inputFocus.requestFocus(); } + void _scrollToEventId(String eventId, {BuildContext context}) async { + var eventIndex = + getFilteredEvents().indexWhere((e) => e.eventId == eventId); + if (eventIndex == -1) { + // event id not found...maybe we can fetch it? + // the try...finally is here to start and close the loading dialog reliably + try { + if (context != null) { + SimpleDialogs(context).showLoadingDialog(context); + } + // okay, we first have to fetch if the event is in the room + try { + final event = await timeline.getEventById(eventId); + if (event == null) { + // event is null...meaning something is off + return; + } + } catch (err) { + if (err is MatrixException && err.errcode == 'M_NOT_FOUND') { + // event wasn't found, as the server gave a 404 or something + return; + } + rethrow; + } + // okay, we know that the event *is* in the room + while (eventIndex == -1) { + if (!_canLoadMore) { + // we can't load any more events but still haven't found ours yet...better stop here + return; + } + try { + await timeline.requestHistory(historyCount: _loadHistoryCount); + } catch (err) { + if (err is TimeoutException) { + // loading the history timed out...so let's do nothing + return; + } + rethrow; + } + eventIndex = + getFilteredEvents().indexWhere((e) => e.eventId == eventId); + } + } finally { + if (context != null) { + Navigator.of(context)?.pop(); + } + } + } + await _scrollController.scrollToIndex(eventIndex, + preferPosition: AutoScrollPosition.middle); + _updateScrollController(); + } + + List getFilteredEvents() => timeline.events + .where((e) => + ![RelationshipTypes.Edit, RelationshipTypes.Reaction] + .contains(e.relationshipType) && + e.type != 'm.reaction') + .toList(); + @override Widget build(BuildContext context) { matrix = Matrix.of(context); @@ -363,25 +459,19 @@ class _ChatState extends State<_Chat> { return ListTile( leading: Avatar(room.avatar, room.displayname), contentPadding: EdgeInsets.zero, - onTap: () => - room.isDirectChat && room.directChatPresence == null + onTap: room.isDirectChat && room.directChatPresence == null + ? null + : room.isDirectChat ? null - : room.isDirectChat - ? showDialog( - context: context, - builder: (c) => PresenceDialog( - room.directChatPresence, - avatarUrl: room.avatar, - displayname: room.displayname, - ), - ) - : Navigator.of(context).push( - AppRoute.defaultRoute( - context, - ChatDetails(room), - ), + : () => Navigator.of(context).push( + AppRoute.defaultRoute( + context, + ChatDetails(room), ), - title: Text(room.getLocalizedDisplayname(L10n.of(context)), + ), + title: Text( + room.getLocalizedDisplayname( + MatrixLocals(L10n.of(context))), maxLines: 1), subtitle: typingText.isEmpty ? Text( @@ -411,6 +501,23 @@ class _ChatState extends State<_Chat> { .numberSelected(selectedEvents.length.toString())), actions: selectMode ? [ + if (selectedEvents.length == 1 && + selectedEvents.first.status > 0 && + selectedEvents.first.senderId == client.userID) + IconButton( + icon: Icon(Icons.edit), + onPressed: () { + setState(() { + editEvent = selectedEvents.first; + sendController.text = editEvent + .getDisplayEvent(timeline) + .getLocalizedBody(MatrixLocals(L10n.of(context)), + withSenderNamePrefix: false, hideReply: true); + selectedEvents.clear(); + }); + inputFocus.requestFocus(); + }, + ), IconButton( icon: Icon(Icons.content_copy), onPressed: () => copyEventsAction(context), @@ -450,9 +557,10 @@ class _ChatState extends State<_Chat> { ), Column( children: [ + ConnectionStatusHeader(), Expanded( child: FutureBuilder( - future: getTimeline(), + future: getTimeline(context), builder: (BuildContext context, snapshot) { if (!snapshot.hasData) { return Center( @@ -463,11 +571,12 @@ class _ChatState extends State<_Chat> { if (room.notificationCount != null && room.notificationCount > 0 && timeline != null && - timeline.events.isNotEmpty) { + timeline.events.isNotEmpty && + Matrix.of(context).webHasFocus) { room.sendReadReceipt(timeline.events.first.eventId); } - if (timeline.events.isEmpty) return Container(); + final filteredEvents = getFilteredEvents(); return ListView.builder( padding: EdgeInsets.symmetric( @@ -479,10 +588,10 @@ class _ChatState extends State<_Chat> { 2), ), reverse: true, - itemCount: timeline.events.length + 2, + itemCount: filteredEvents.length + 2, controller: _scrollController, itemBuilder: (BuildContext context, int i) { - return i == timeline.events.length + 1 + return i == filteredEvents.length + 1 ? _loadingHistory ? Container( height: 50, @@ -512,16 +621,28 @@ class _ChatState extends State<_Chat> { ? Duration(milliseconds: 0) : Duration(milliseconds: 500), alignment: - timeline.events.first.senderId == + filteredEvents.first.senderId == client.userID ? Alignment.topRight : Alignment.topLeft, - child: Text( - seenByText, - maxLines: 1, - overflow: TextOverflow.ellipsis, - style: TextStyle( - color: Theme.of(context).primaryColor, + child: Container( + padding: + EdgeInsets.symmetric(horizontal: 4), + decoration: BoxDecoration( + color: Theme.of(context) + .scaffoldBackgroundColor + .withOpacity(0.8), + borderRadius: + BorderRadius.circular(4), + ), + child: Text( + seenByText, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: TextStyle( + color: + Theme.of(context).primaryColor, + ), ), ), padding: EdgeInsets.only( @@ -530,52 +651,126 @@ class _ChatState extends State<_Chat> { bottom: 8, ), ) - : Message(timeline.events[i - 1], - onAvatarTab: (Event event) { - sendController.text += - ' ${event.senderId}'; - }, onSelect: (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), - ); - } - }, - longPressSelect: selectedEvents.isEmpty, - selected: selectedEvents - .contains(timeline.events[i - 1]), - timeline: timeline, - nextEvent: i >= 2 - ? timeline.events[i - 2] - : null); + : AutoScrollTag( + key: ValueKey(i - 1), + index: i - 1, + controller: _scrollController, + child: Message(filteredEvents[i - 1], + onAvatarTab: (Event event) { + sendController.text += + ' ${event.senderId}'; + }, + onSelect: (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), + ); + } + }, + scrollToEventId: (String eventId) => + _scrollToEventId(eventId, + context: context), + longPressSelect: + selectedEvents.isEmpty, + selected: selectedEvents + .contains(filteredEvents[i - 1]), + timeline: timeline, + nextEvent: i >= 2 + ? filteredEvents[i - 2] + : null), + ); }); }, ), ), - ConnectionStatusHeader(), AnimatedContainer( duration: Duration(milliseconds: 300), - height: replyEvent != null ? 56 : 0, + height: (editEvent == null && + replyEvent == null && + selectedEvents.length == 1) + ? 56 + : 0, + child: Material( + color: Theme.of(context).secondaryHeaderColor, + child: Builder(builder: (context) { + if (!(editEvent == null && + replyEvent == null && + selectedEvents.length == 1)) { + return Container(); + } + var emojis = List.from(AppEmojis.emojis); + final allReactionEvents = selectedEvents.first + .aggregatedEvents(timeline, RelationshipTypes.Reaction) + ?.where((event) => + event.senderId == event.room.client.userID && + event.type == 'm.reaction'); + + allReactionEvents.forEach((event) { + try { + emojis.remove(event.content['m.relates_to']['key']); + } catch (_) {} + }); + return ListView.builder( + scrollDirection: Axis.horizontal, + itemCount: emojis.length, + itemBuilder: (c, i) => InkWell( + borderRadius: BorderRadius.circular(8), + onTap: () { + SimpleDialogs(context).tryRequestWithLoadingDialog( + room.sendReaction( + selectedEvents.first.eventId, + emojis[i], + ), + ); + setState(() => selectedEvents.clear()); + }, + child: Container( + width: 56, + height: 56, + alignment: Alignment.center, + child: Text( + emojis[i], + style: TextStyle(fontSize: 30), + ), + ), + ), + ); + }), + ), + ), + AnimatedContainer( + duration: Duration(milliseconds: 300), + height: editEvent != null || replyEvent != null ? 56 : 0, child: Material( color: Theme.of(context).secondaryHeaderColor, child: Row( children: [ IconButton( icon: Icon(Icons.close), - onPressed: () => setState(() => replyEvent = null), + onPressed: () => setState(() { + replyEvent = null; + editEvent = null; + }), ), Expanded( - child: ReplyContent(replyEvent), + child: replyEvent != null + ? ReplyContent(replyEvent, timeline: timeline) + : _EditContent( + editEvent?.getDisplayEvent(timeline)), ), ], ), @@ -611,7 +806,10 @@ class _ChatState extends State<_Chat> { ), ), selectedEvents.length == 1 - ? selectedEvents.first.status > 0 + ? selectedEvents.first + .getDisplayEvent(timeline) + .status > + 0 ? Container( height: 56, child: FlatButton( @@ -629,7 +827,7 @@ class _ChatState extends State<_Chat> { height: 56, child: FlatButton( onPressed: () => - sendAgainAction(), + sendAgainAction(timeline), child: Row( children: [ Text(L10n.of(context) @@ -804,3 +1002,38 @@ class _ChatState extends State<_Chat> { ); } } + +class _EditContent extends StatelessWidget { + final Event event; + + _EditContent(this.event); + + @override + Widget build(BuildContext context) { + if (event == null) { + return Container(); + } + return Row( + children: [ + Icon( + Icons.edit, + color: Theme.of(context).primaryColor, + ), + Container(width: 15.0), + Text( + event?.getLocalizedBody( + MatrixLocals(L10n.of(context)), + withSenderNamePrefix: false, + hideReply: true, + ) ?? + '', + overflow: TextOverflow.ellipsis, + maxLines: 1, + style: TextStyle( + color: Theme.of(context).textTheme.bodyText2.color, + ), + ), + ], + ); + } +} diff --git a/lib/views/chat_details.dart b/lib/views/chat_details.dart index cf062e9..fd4e423 100644 --- a/lib/views/chat_details.dart +++ b/lib/views/chat_details.dart @@ -1,3 +1,4 @@ +import 'package:bot_toast/bot_toast.dart'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:famedlysdk/matrix_api.dart'; import 'package:fluffychat/components/adaptive_page_layout.dart'; @@ -5,18 +6,21 @@ import 'package:fluffychat/components/chat_settings_popup_menu.dart'; import 'package:fluffychat/components/content_banner.dart'; import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; import 'package:fluffychat/components/list_items/participant_list_item.dart'; -import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/utils/app_route.dart'; +import 'package:fluffychat/utils/matrix_locals.dart'; import 'package:fluffychat/views/chat_list.dart'; import 'package:fluffychat/views/invitation_selection.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:bot_toast/bot_toast.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:image_picker/image_picker.dart'; -import 'package:link_text/link_text.dart'; +import 'package:matrix_link_text/link_text.dart'; import 'package:memoryfilepicker/memoryfilepicker.dart'; + import './settings_emotes.dart'; +import './settings_multiple_emotes.dart'; +import '../utils/url_launcher.dart'; class ChatDetails extends StatefulWidget { final Room room; @@ -33,7 +37,8 @@ class _ChatDetailsState extends State { var enterText = SimpleDialogs(context).enterText( titleText: L10n.of(context).changeTheNameOfTheGroup, labelText: L10n.of(context).changeTheNameOfTheGroup, - hintText: widget.room.getLocalizedDisplayname(L10n.of(context)), + hintText: + widget.room.getLocalizedDisplayname(MatrixLocals(L10n.of(context))), ); final displayname = await enterText; if (displayname == null) return; @@ -63,20 +68,18 @@ class _ChatDetailsState extends State { var newAliases = List.from(aliases); newAliases.add(canonicalAlias); final response = await SimpleDialogs(context).tryRequestWithLoadingDialog( - widget.room.client.api.requestRoomAliasInformations(canonicalAlias), + widget.room.client.requestRoomAliasInformations(canonicalAlias), ); if (response == false) { final success = await SimpleDialogs(context).tryRequestWithLoadingDialog( - widget.room.client.api - .createRoomAlias(canonicalAlias, widget.room.id), + widget.room.client.createRoomAlias(canonicalAlias, widget.room.id), ); if (success == false) return; } } await SimpleDialogs(context).tryRequestWithLoadingDialog( - widget.room.client.api - .sendState(widget.room.id, 'm.room.canonical_alias', { + widget.room.client.sendState(widget.room.id, 'm.room.canonical_alias', { 'alias': '#$s:$domain', }), ); @@ -174,7 +177,8 @@ class _ChatDetailsState extends State { ChatSettingsPopupMenu(widget.room, false) ], title: Text( - widget.room.getLocalizedDisplayname(L10n.of(context)), + widget.room.getLocalizedDisplayname( + MatrixLocals(L10n.of(context))), style: TextStyle( color: Theme.of(context) .appBarTheme @@ -224,6 +228,8 @@ class _ChatDetailsState extends State { .bodyText2 .color, ), + onLinkTap: (url) => + UrlLauncher(context, url).launchUrl(), ), onTap: widget.room.canSendEvent('m.room.topic') ? () => setTopicAction(context) @@ -250,7 +256,8 @@ class _ChatDetailsState extends State { title: Text( L10n.of(context).changeTheNameOfTheGroup), subtitle: Text(widget.room - .getLocalizedDisplayname(L10n.of(context))), + .getLocalizedDisplayname( + MatrixLocals(L10n.of(context)))), onTap: () => setDisplaynameAction(context), ), if (widget.room @@ -279,13 +286,31 @@ class _ChatDetailsState extends State { child: Icon(Icons.insert_emoticon), ), title: Text(L10n.of(context).emoteSettings), - onTap: () async => + onTap: () async { + // 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 ((widget.room.states + .states['im.ponies.room_emotes'] ?? + {}) + .keys + .any((String s) => s.isNotEmpty)) { await Navigator.of(context).push( - AppRoute.defaultRoute( - context, - EmotesSettingsView(room: widget.room), - ), - ), + AppRoute.defaultRoute( + context, + MultipleEmotesSettingsView( + room: widget.room), + ), + ); + } else { + await Navigator.of(context).push( + AppRoute.defaultRoute( + context, + EmotesSettingsView(room: widget.room), + ), + ); + } + }, ), PopupMenuButton( child: ListTile( @@ -297,8 +322,8 @@ class _ChatDetailsState extends State { title: Text(L10n.of(context) .whoIsAllowedToJoinThisGroup), subtitle: Text( - widget.room.joinRules - .getLocalizedString(L10n.of(context)), + widget.room.joinRules.getLocalizedString( + MatrixLocals(L10n.of(context))), ), ), onSelected: (JoinRules joinRule) => @@ -312,13 +337,15 @@ class _ChatDetailsState extends State { PopupMenuItem( value: JoinRules.public, child: Text(JoinRules.public - .getLocalizedString(L10n.of(context))), + .getLocalizedString( + MatrixLocals(L10n.of(context)))), ), if (widget.room.canChangeJoinRules) PopupMenuItem( value: JoinRules.invite, child: Text(JoinRules.invite - .getLocalizedString(L10n.of(context))), + .getLocalizedString( + MatrixLocals(L10n.of(context)))), ), ], ), @@ -334,7 +361,8 @@ class _ChatDetailsState extends State { .visibilityOfTheChatHistory), subtitle: Text( widget.room.historyVisibility - .getLocalizedString(L10n.of(context)), + .getLocalizedString( + MatrixLocals(L10n.of(context))), ), ), onSelected: @@ -350,25 +378,29 @@ class _ChatDetailsState extends State { PopupMenuItem( value: HistoryVisibility.invited, child: Text(HistoryVisibility.invited - .getLocalizedString(L10n.of(context))), + .getLocalizedString( + MatrixLocals(L10n.of(context)))), ), if (widget.room.canChangeHistoryVisibility) PopupMenuItem( value: HistoryVisibility.joined, child: Text(HistoryVisibility.joined - .getLocalizedString(L10n.of(context))), + .getLocalizedString( + MatrixLocals(L10n.of(context)))), ), if (widget.room.canChangeHistoryVisibility) PopupMenuItem( value: HistoryVisibility.shared, child: Text(HistoryVisibility.shared - .getLocalizedString(L10n.of(context))), + .getLocalizedString( + MatrixLocals(L10n.of(context)))), ), if (widget.room.canChangeHistoryVisibility) PopupMenuItem( value: HistoryVisibility.world_readable, child: Text(HistoryVisibility.world_readable - .getLocalizedString(L10n.of(context))), + .getLocalizedString( + MatrixLocals(L10n.of(context)))), ), ], ), @@ -384,8 +416,8 @@ class _ChatDetailsState extends State { title: Text( L10n.of(context).areGuestsAllowedToJoin), subtitle: Text( - widget.room.guestAccess - .getLocalizedString(L10n.of(context)), + widget.room.guestAccess.getLocalizedString( + MatrixLocals(L10n.of(context))), ), ), onSelected: (GuestAccess guestAccess) => @@ -400,7 +432,7 @@ class _ChatDetailsState extends State { value: GuestAccess.can_join, child: Text( GuestAccess.can_join.getLocalizedString( - L10n.of(context)), + MatrixLocals(L10n.of(context))), ), ), if (widget.room.canChangeGuestAccess) @@ -409,7 +441,7 @@ class _ChatDetailsState extends State { child: Text( GuestAccess.forbidden .getLocalizedString( - L10n.of(context)), + MatrixLocals(L10n.of(context))), ), ), ], diff --git a/lib/views/chat_encryption_settings.dart b/lib/views/chat_encryption_settings.dart index 1f44f00..84de318 100644 --- a/lib/views/chat_encryption_settings.dart +++ b/lib/views/chat_encryption_settings.dart @@ -1,15 +1,16 @@ -import 'package:famedlysdk/famedlysdk.dart'; import 'package:famedlysdk/encryption.dart'; +import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/components/adaptive_page_layout.dart'; import 'package:fluffychat/components/avatar.dart'; import 'package:fluffychat/components/matrix.dart'; import 'package:fluffychat/utils/beautify_string_extension.dart'; -import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/views/chat_list.dart'; import 'package:flutter/material.dart'; -import 'key_verification.dart'; -import '../utils/app_route.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; + import '../components/dialogs/simple_dialogs.dart'; +import '../utils/app_route.dart'; +import 'key_verification.dart'; class ChatEncryptionSettingsView extends StatelessWidget { final String id; diff --git a/lib/views/chat_list.dart b/lib/views/chat_list.dart index 93a78ab..8c94933 100644 --- a/lib/views/chat_list.dart +++ b/lib/views/chat_list.dart @@ -3,19 +3,24 @@ import 'dart:io'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:famedlysdk/matrix_api.dart'; +import 'package:fluffychat/components/avatar.dart'; import 'package:fluffychat/components/connection_status_header.dart'; import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; -import 'package:fluffychat/components/list_items/presence_list_item.dart'; +import 'package:fluffychat/components/list_items/status_list_item.dart'; import 'package:fluffychat/components/list_items/public_room_list_item.dart'; +import 'package:fluffychat/utils/platform_infos.dart'; +import 'package:fluffychat/views/status_view.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:receive_sharing_intent/receive_sharing_intent.dart'; import 'package:share/share.dart'; + import '../components/adaptive_page_layout.dart'; import '../components/list_items/chat_list_item.dart'; import '../components/matrix.dart'; -import '../l10n/l10n.dart'; import '../utils/app_route.dart'; +import '../utils/matrix_file_extension.dart'; import '../utils/url_launcher.dart'; import 'archive.dart'; import 'homeserver_picker.dart'; @@ -23,7 +28,7 @@ import 'new_group.dart'; import 'new_private_chat.dart'; import 'settings.dart'; -enum SelectMode { normal, share } +enum SelectMode { normal, share, select } class ChatListView extends StatelessWidget { @override @@ -57,9 +62,15 @@ class _ChatListState extends State { PublicRoomsResponse publicRoomsResponse; bool loadingPublicRooms = false; String searchServer; + final _selectedRoomIds = {}; final ScrollController _scrollController = ScrollController(); + void _toggleSelection(String roomId) => + setState(() => _selectedRoomIds.contains(roomId) + ? _selectedRoomIds.remove(roomId) + : _selectedRoomIds.add(roomId)); + Future waitForFirstSync(BuildContext context) async { var client = Matrix.of(context).client; if (client.prevBatch?.isEmpty ?? true) { @@ -92,7 +103,7 @@ class _ChatListState extends State { setState(() => loadingPublicRooms = true); final newPublicRoomsResponse = await SimpleDialogs(context).tryRequestWithErrorToast( - Matrix.of(context).client.api.searchPublicRooms( + Matrix.of(context).client.searchPublicRooms( limit: 30, includeAllNetworks: true, genericSearchTerm: searchController.text, @@ -119,7 +130,7 @@ class _ChatListState extends State { }); setState(() => null); }); - _initReceiveSharingINtent(); + _initReceiveSharingIntent(); super.initState(); } @@ -139,7 +150,7 @@ class _ChatListState extends State { 'file': MatrixFile( bytes: file.readAsBytesSync(), name: file.path, - ), + ).detectFileType, }; } @@ -158,8 +169,8 @@ class _ChatListState extends State { }; } - void _initReceiveSharingINtent() { - if (kIsWeb) return; + void _initReceiveSharingIntent() { + if (!PlatformInfos.isMobile) return; // For sharing images coming from outside the app while the app is in the memory _intentFileStreamSubscription = ReceiveSharingIntent.getMediaStream() @@ -187,20 +198,30 @@ class _ChatListState extends State { ); } - void _setStatus(BuildContext context) async { - Navigator.of(context).pop(); - final status = await SimpleDialogs(context).enterText( - multiLine: true, - titleText: L10n.of(context).setStatus, - labelText: L10n.of(context).setStatus, - hintText: L10n.of(context).statusExampleMessage, - ); - if (status?.isEmpty ?? true) return; - await SimpleDialogs(context).tryRequestWithLoadingDialog( - Matrix.of(context).client.api.sendPresence( - Matrix.of(context).client.userID, PresenceType.online, - statusMsg: status), - ); + void _setStatus(BuildContext context, {bool fromDrawer = false}) async { + if (fromDrawer) Navigator.of(context).pop(); + final ownProfile = await SimpleDialogs(context) + .tryRequestWithLoadingDialog(Matrix.of(context).client.ownProfile); + String composeText; + if (Matrix.of(context).shareContent != null && + Matrix.of(context).shareContent['msgtype'] == 'm.text') { + composeText = Matrix.of(context).shareContent['body']; + Matrix.of(context).shareContent = null; + } + if (ownProfile is Profile) { + await Navigator.of(context).push( + MaterialPageRoute( + builder: (_) => StatusView( + composeMode: true, + avatarUrl: ownProfile.avatarUrl, + displayname: ownProfile.displayname ?? + Matrix.of(context).client.userID.localpart, + composeText: composeText, + ), + ), + ); + } + return; } @override @@ -213,6 +234,39 @@ class _ChatListState extends State { super.dispose(); } + Future _toggleFavouriteRoom(BuildContext context) { + final room = Matrix.of(context).client.getRoomById(_selectedRoomIds.single); + return SimpleDialogs(context).tryRequestWithLoadingDialog( + room.setFavourite(!room.isFavourite), + ); + } + + Future _toggleMuted(BuildContext context) { + final room = Matrix.of(context).client.getRoomById(_selectedRoomIds.single); + return SimpleDialogs(context).tryRequestWithLoadingDialog( + room.setPushRuleState(room.pushRuleState == PushRuleState.notify + ? PushRuleState.mentions_only + : PushRuleState.notify), + ); + } + + Future _archiveAction(BuildContext context) async { + final confirmed = await SimpleDialogs(context).askConfirmation(); + if (!confirmed) return; + await SimpleDialogs(context) + .tryRequestWithLoadingDialog(_archiveSelectedRooms(context)); + setState(() => null); + } + + Future _archiveSelectedRooms(BuildContext context) async { + final client = Matrix.of(context).client; + while (_selectedRoomIds.isNotEmpty) { + final roomId = _selectedRoomIds.first; + await client.getRoomById(roomId).leave(); + _selectedRoomIds.remove(roomId); + } + } + @override Widget build(BuildContext context) { return StreamBuilder( @@ -230,10 +284,15 @@ class _ChatListState extends State { stream: Matrix.of(context).onShareContentChanged.stream, builder: (context, snapshot) { final selectMode = Matrix.of(context).shareContent == null - ? SelectMode.normal + ? _selectedRoomIds.isEmpty + ? SelectMode.normal + : SelectMode.select : SelectMode.share; + if (selectMode == SelectMode.share) { + _selectedRoomIds.clear(); + } return Scaffold( - drawer: selectMode == SelectMode.share + drawer: selectMode != SelectMode.normal ? null : Drawer( child: SafeArea( @@ -243,7 +302,8 @@ class _ChatListState extends State { ListTile( leading: Icon(Icons.edit), title: Text(L10n.of(context).setStatus), - onTap: () => _setStatus(context), + onTap: () => + _setStatus(context, fromDrawer: true), ), Divider(height: 1), ListTile( @@ -288,174 +348,288 @@ class _ChatListState extends State { ), ), appBar: AppBar( - //elevation: _scrolledToTop ? 0 : null, - leading: selectMode != SelectMode.share - ? null - : IconButton( + centerTitle: false, + elevation: _scrolledToTop ? 0 : null, + leading: selectMode == SelectMode.share + ? IconButton( icon: Icon(Icons.close), onPressed: () => Matrix.of(context).shareContent = null, - ), + ) + : selectMode == SelectMode.select + ? IconButton( + icon: Icon(Icons.close), + onPressed: () => + setState(_selectedRoomIds.clear), + ) + : null, titleSpacing: 0, + actions: selectMode != SelectMode.select + ? null + : [ + if (_selectedRoomIds.length == 1) + IconButton( + icon: Icon(Icons.favorite_border_outlined), + onPressed: () => _toggleFavouriteRoom(context), + ), + if (_selectedRoomIds.length == 1) + IconButton( + icon: Icon(Icons.notifications_none), + onPressed: () => _toggleMuted(context), + ), + IconButton( + icon: Icon(Icons.archive), + onPressed: () => _archiveAction(context), + ), + ], title: selectMode == SelectMode.share ? Text(L10n.of(context).share) - : Padding( - padding: - EdgeInsets.only(top: 8, bottom: 8, right: 8), - child: TextField( - autocorrect: false, - controller: searchController, - focusNode: _searchFocusNode, - decoration: InputDecoration( - contentPadding: EdgeInsets.all(9), - border: InputBorder.none, - hintText: L10n.of(context).searchForAChat, - suffixIcon: searchMode - ? IconButton( - icon: Icon(Icons.backspace), - onPressed: () => setState(() { - searchController.clear(); - _searchFocusNode.unfocus(); - }), - ) - : null, + : selectMode == SelectMode.select + ? Text(_selectedRoomIds.length.toString()) + : Container( + height: 40, + padding: EdgeInsets.only(right: 8), + child: Material( + color: Theme.of(context).secondaryHeaderColor, + borderRadius: BorderRadius.circular(32), + child: TextField( + autocorrect: false, + controller: searchController, + focusNode: _searchFocusNode, + decoration: InputDecoration( + contentPadding: EdgeInsets.only( + top: 8, + bottom: 8, + left: 16, + ), + border: OutlineInputBorder( + borderRadius: BorderRadius.circular(32), + ), + hintText: L10n.of(context).searchForAChat, + suffixIcon: searchMode + ? IconButton( + icon: Icon(Icons.backspace), + onPressed: () => setState(() { + searchController.clear(); + _searchFocusNode.unfocus(); + }), + ) + : null, + ), + ), + ), ), - ), - ), ), floatingActionButton: (AdaptivePageLayout.columnMode(context) || - selectMode == SelectMode.share) + selectMode != SelectMode.normal) ? null - : FloatingActionButton( - child: Icon(Icons.add), - backgroundColor: Theme.of(context).primaryColor, - onPressed: () => Navigator.of(context) - .pushAndRemoveUntil( - AppRoute.defaultRoute( - context, NewPrivateChatView()), - (r) => r.isFirst), - ), - body: StreamBuilder( - stream: Matrix.of(context).client.onSync.stream, - builder: (context, snapshot) { - return FutureBuilder( - future: waitForFirstSync(context), - builder: (BuildContext context, snapshot) { - if (snapshot.hasData) { - var rooms = List.from( - Matrix.of(context).client.rooms); - rooms.removeWhere((Room room) => - room.lastEvent == null || - (searchMode && - !room.displayname.toLowerCase().contains( - searchController.text.toLowerCase() ?? - ''))); - if (rooms.isEmpty && - (!searchMode || - publicRoomsResponse == null)) { - return Center( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - Icon( - searchMode - ? Icons.search - : Icons.chat_bubble_outline, - size: 80, - color: Colors.grey, - ), - Text(searchMode - ? L10n.of(context).noRoomsFound - : L10n.of(context) - .startYourFirstChat), - ], + : Column( + mainAxisSize: MainAxisSize.min, + children: [ + FloatingActionButton( + heroTag: null, + child: Icon( + Icons.edit, + color: Theme.of(context).primaryColor, ), - ); - } - final publicRoomsCount = - (publicRoomsResponse?.chunk?.length ?? 0); - final totalCount = - rooms.length + publicRoomsCount; - final directChats = - rooms.where((r) => r.isDirectChat).toList(); - final presences = - Matrix.of(context).client.presences; - directChats.sort((a, b) => - presences[b.directChatMatrixID] - ?.presence - ?.statusMsg != - null - ? 1 - : b.lastEvent.originServerTs.compareTo( - a.lastEvent.originServerTs)); - return ListView.separated( - controller: _scrollController, - separatorBuilder: (BuildContext context, - int i) => - i == totalCount - publicRoomsCount - ? ListTile( - title: Text( - L10n.of(context).publicRooms + - ':', - style: TextStyle( - fontWeight: FontWeight.bold, - color: Theme.of(context) - .primaryColor, - ), - ), - ) - : Container(), - itemCount: totalCount + 1, - itemBuilder: (BuildContext context, int i) { - if (i == 0) { - return Column( - mainAxisSize: MainAxisSize.min, - children: [ - ConnectionStatusHeader(), - (directChats.isEmpty || - selectMode == - SelectMode.share) - ? Container() - : PreferredSize( - preferredSize: - Size.fromHeight(90), - child: Container( - height: 82, - child: ListView.builder( - scrollDirection: - Axis.horizontal, - itemCount: - directChats.length, - itemBuilder: (BuildContext - context, - int i) => - PresenceListItem( - directChats[i]), - ), - ), - ), - ], + elevation: 1, + backgroundColor: + Theme.of(context).secondaryHeaderColor, + onPressed: () => _setStatus(context), + ), + SizedBox(height: 16.0), + FloatingActionButton( + child: Icon(Icons.add), + backgroundColor: + Theme.of(context).primaryColor, + onPressed: () => Navigator.of(context) + .pushAndRemoveUntil( + AppRoute.defaultRoute( + context, NewPrivateChatView()), + (r) => r.isFirst), + ), + ], + ), + body: Column( + children: [ + ConnectionStatusHeader(), + Expanded( + child: StreamBuilder( + stream: Matrix.of(context) + .client + .onSync + .stream + .where((s) => + s.hasRoomUpdate || s.hasPresenceUpdate), + builder: (context, snapshot) { + return FutureBuilder( + future: waitForFirstSync(context), + builder: (BuildContext context, snapshot) { + if (snapshot.hasData) { + var rooms = List.from( + Matrix.of(context).client.rooms); + rooms.removeWhere((Room room) => + room.lastEvent == null || + (searchMode && + !room.displayname + .toLowerCase() + .contains(searchController.text + .toLowerCase() ?? + ''))); + if (rooms.isEmpty && + (!searchMode || + publicRoomsResponse == null)) { + return Center( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + searchMode + ? Icons.search + : Icons.chat_bubble_outline, + size: 80, + color: Colors.grey, + ), + Text(searchMode + ? L10n.of(context).noRoomsFound + : L10n.of(context) + .startYourFirstChat), + ], + ), ); } - i--; - return i < rooms.length - ? ChatListItem( - rooms[i], - activeChat: widget.activeChat == - rooms[i].id, - ) - : PublicRoomListItem(publicRoomsResponse - .chunk[i - rooms.length]); - }); - } else { - return Center( - child: CircularProgressIndicator(), + final publicRoomsCount = + (publicRoomsResponse?.chunk?.length ?? + 0); + final totalCount = + rooms.length + publicRoomsCount; + return ListView.separated( + controller: _scrollController, + separatorBuilder: (BuildContext context, + int i) => + i == totalCount - publicRoomsCount + ? ListTile( + title: Text( + L10n.of(context) + .publicRooms + + ':', + style: TextStyle( + fontWeight: + FontWeight.bold, + color: Theme.of(context) + .primaryColor, + ), + ), + ) + : Container(), + itemCount: totalCount + 1, + itemBuilder: + (BuildContext context, int i) { + if (i == 0) { + final displayPresences = + Matrix.of(context) + .userStatuses + .isNotEmpty && + selectMode == + SelectMode.normal; + final displayShareStatus = + selectMode == + SelectMode.share && + Matrix.of(context) + .shareContent[ + 'msgtype'] == + 'm.text'; + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + AnimatedContainer( + duration: Duration( + milliseconds: 500), + height: displayPresences + ? 78 + : displayShareStatus + ? 56 + : 0, + child: displayPresences + ? ListView.builder( + scrollDirection: + Axis.horizontal, + itemCount: + Matrix.of(context) + .userStatuses + .length, + itemBuilder: (BuildContext + context, + int i) => + StatusListItem(Matrix + .of(context) + .userStatuses[i]), + ) + : displayShareStatus + ? ListTile( + leading: + CircleAvatar( + radius: Avatar + .defaultSize / + 2, + backgroundColor: + Theme.of( + context) + .secondaryHeaderColor, + child: Icon( + Icons.edit, + color: Theme.of( + context) + .primaryColor, + ), + ), + title: Text(L10n.of( + context) + .setStatus), + onTap: () => + _setStatus( + context)) + : null, + ), + ], + ); + } + i--; + return i < rooms.length + ? ChatListItem( + rooms[i], + selected: _selectedRoomIds + .contains(rooms[i].id), + onTap: selectMode == + SelectMode.select + ? () => _toggleSelection( + rooms[i].id) + : null, + onLongPress: selectMode != + SelectMode.share + ? () => _toggleSelection( + rooms[i].id) + : null, + activeChat: + widget.activeChat == + rooms[i].id, + ) + : PublicRoomListItem( + publicRoomsResponse + .chunk[i - rooms.length]); + }); + } else { + return Center( + child: CircularProgressIndicator(), + ); + } + }, ); - } - }, - ); - }), + }), + ), + ], + ), ); }); }); diff --git a/lib/views/homeserver_picker.dart b/lib/views/homeserver_picker.dart index 63df5fa..091a5ca 100644 --- a/lib/views/homeserver_picker.dart +++ b/lib/views/homeserver_picker.dart @@ -3,11 +3,13 @@ import 'dart:math'; import 'package:famedlysdk/matrix_api/model/well_known_informations.dart'; import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; import 'package:fluffychat/components/matrix.dart'; -import 'package:fluffychat/l10n/l10n.dart'; +import 'package:fluffychat/config/app_config.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:fluffychat/utils/app_route.dart'; import 'package:fluffychat/views/login.dart'; import 'package:fluffychat/views/sign_up.dart'; import 'package:flutter/material.dart'; +import 'package:url_launcher/url_launcher.dart'; class HomeserverPicker extends StatefulWidget { @override @@ -18,7 +20,7 @@ class _HomeserverPickerState extends State { Future _setHomeserverAction(BuildContext context) async { final homeserver = await SimpleDialogs(context).enterText( titleText: L10n.of(context).enterYourHomeserver, - hintText: Matrix.defaultHomeserver, + hintText: AppConfig.defaultHomeserver, prefixText: 'https://', keyboardType: TextInputType.url); if (homeserver?.isEmpty ?? true) return; diff --git a/lib/views/image_view.dart b/lib/views/image_view.dart index 5da00f4..72d2fbf 100644 --- a/lib/views/image_view.dart +++ b/lib/views/image_view.dart @@ -2,7 +2,7 @@ import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/components/image_bubble.dart'; import 'package:fluffychat/components/matrix.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_advanced_networkimage/zoomable.dart'; +import 'package:photo_view/photo_view.dart'; import '../utils/event_extension.dart'; class ImageView extends StatelessWidget { @@ -36,12 +36,12 @@ class ImageView extends StatelessWidget { ), IconButton( icon: Icon(Icons.file_download), - onPressed: () => event.openFile(context), + onPressed: () => event.openFile(context, downloadOnly: true), color: Colors.white, ), ], ), - body: ZoomableWidget( + body: PhotoView.customChild( minScale: 1.0, maxScale: 10.0, child: ImageBubble( @@ -51,6 +51,7 @@ class ImageView extends StatelessWidget { backgroundColor: Colors.black, maxSize: false, radius: 0.0, + thumbnailOnly: false, ), ), ); diff --git a/lib/views/invitation_selection.dart b/lib/views/invitation_selection.dart index 37d4437..6952520 100644 --- a/lib/views/invitation_selection.dart +++ b/lib/views/invitation_selection.dart @@ -1,14 +1,14 @@ import 'dart:async'; +import 'package:bot_toast/bot_toast.dart'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:famedlysdk/matrix_api.dart'; import 'package:fluffychat/components/adaptive_page_layout.dart'; import 'package:fluffychat/components/avatar.dart'; import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; import 'package:fluffychat/components/matrix.dart'; -import 'package:fluffychat/l10n/l10n.dart'; import 'package:flutter/material.dart'; -import 'package:bot_toast/bot_toast.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'chat_list.dart'; @@ -85,7 +85,7 @@ class _InvitationSelectionState extends State { setState(() => loading = true); final matrix = Matrix.of(context); final response = await SimpleDialogs(context).tryRequestWithErrorToast( - matrix.client.api.searchUser(text, limit: 10), + matrix.client.searchUser(text, limit: 10), ); setState(() => loading = false); if (response == false || (response?.results == null)) return; @@ -98,11 +98,13 @@ class _InvitationSelectionState extends State { Profile.fromJson({'user_id': '@$text'}), ]); } + final participants = widget.room + .getParticipants() + .where((user) => + [Membership.join, Membership.invite].contains(user.membership)) + .toList(); foundProfiles.removeWhere((profile) => - widget.room - .getParticipants() - .indexWhere((u) => u.id == profile.userId) != - -1); + participants.indexWhere((u) => u.id == profile.userId) != -1); }); } diff --git a/lib/views/key_verification.dart b/lib/views/key_verification.dart index d7b6c8b..59585cd 100644 --- a/lib/views/key_verification.dart +++ b/lib/views/key_verification.dart @@ -1,11 +1,12 @@ -import 'package:flutter/material.dart'; import 'package:famedlysdk/encryption.dart'; import 'package:famedlysdk/matrix_api.dart'; -import 'chat_list.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; + import '../components/adaptive_page_layout.dart'; import '../components/avatar.dart'; import '../components/dialogs/simple_dialogs.dart'; -import '../l10n/l10n.dart'; +import 'chat_list.dart'; class KeyVerificationView extends StatelessWidget { final KeyVerification request; diff --git a/lib/views/login.dart b/lib/views/login.dart index b4691f7..97d4d80 100644 --- a/lib/views/login.dart +++ b/lib/views/login.dart @@ -4,11 +4,11 @@ import 'dart:math'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; import 'package:fluffychat/components/matrix.dart'; -import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/utils/app_route.dart'; import 'package:fluffychat/utils/firebase_controller.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'chat_list.dart'; @@ -55,7 +55,8 @@ class _LoginState extends State { setState(() => loading = true); try { await matrix.client.login( - usernameController.text, passwordController.text, + user: usernameController.text, + password: passwordController.text, initialDeviceDisplayName: matrix.widget.clientName); } on MatrixException catch (exception) { setState(() => passwordError = exception.errorMessage); @@ -124,7 +125,7 @@ class _LoginState extends State { .getWellKnownInformationsByUserId(userId); final newDomain = wellKnownInformations.mHomeserver?.baseUrl; if ((newDomain?.isNotEmpty ?? false) && - newDomain != Matrix.of(context).client.api.homeserver.toString()) { + newDomain != Matrix.of(context).client.homeserver.toString()) { await SimpleDialogs(context).tryRequestWithErrorToast( Matrix.of(context).client.checkServer(newDomain)); setState(() => usernameError = null); @@ -158,7 +159,6 @@ class _LoginState extends State { title: Text( L10n.of(context).logInTo(Matrix.of(context) .client - .api .homeserver .toString() .replaceFirst('https://', '')), diff --git a/lib/views/new_group.dart b/lib/views/new_group.dart index 2edb904..b02d27d 100644 --- a/lib/views/new_group.dart +++ b/lib/views/new_group.dart @@ -2,9 +2,9 @@ import 'package:famedlysdk/matrix_api.dart' as api; import 'package:fluffychat/components/adaptive_page_layout.dart'; import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; import 'package:fluffychat/components/matrix.dart'; -import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/utils/app_route.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:pedantic/pedantic.dart'; import 'chat.dart'; @@ -35,7 +35,7 @@ class _NewGroupState extends State<_NewGroup> { final matrix = Matrix.of(context); final String roomID = await SimpleDialogs(context).tryRequestWithLoadingDialog( - matrix.client.api.createRoom( + matrix.client.createRoom( preset: publicGroup ? api.CreateRoomPreset.public_chat : api.CreateRoomPreset.private_chat, diff --git a/lib/views/new_private_chat.dart b/lib/views/new_private_chat.dart index ea07d92..46e9fd3 100644 --- a/lib/views/new_private_chat.dart +++ b/lib/views/new_private_chat.dart @@ -6,9 +6,9 @@ import 'package:fluffychat/components/adaptive_page_layout.dart'; import 'package:fluffychat/components/avatar.dart'; import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; import 'package:fluffychat/components/matrix.dart'; -import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/utils/app_route.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:share/share.dart'; import 'chat.dart'; @@ -90,7 +90,7 @@ class _NewPrivateChatState extends State<_NewPrivateChat> { setState(() => loading = true); final matrix = Matrix.of(context); final response = await SimpleDialogs(context).tryRequestWithErrorToast( - matrix.client.api.searchUser(text, limit: 10), + matrix.client.searchUser(text, limit: 10), ); setState(() => loading = false); if (response == false || (response?.results?.isEmpty ?? true)) return; diff --git a/lib/views/settings.dart b/lib/views/settings.dart index af100fd..20bee60 100644 --- a/lib/views/settings.dart +++ b/lib/views/settings.dart @@ -1,22 +1,26 @@ import 'dart:io'; +import 'package:bot_toast/bot_toast.dart'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/components/settings_themes.dart'; +import 'package:fluffychat/config/app_config.dart'; +import 'package:fluffychat/utils/sentry_controller.dart'; import 'package:fluffychat/views/settings_devices.dart'; +import 'package:fluffychat/views/settings_ignore_list.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:image_picker/image_picker.dart'; import 'package:memoryfilepicker/memoryfilepicker.dart'; import 'package:url_launcher/url_launcher.dart'; +import '../components/adaptive_page_layout.dart'; +import '../components/content_banner.dart'; +import '../components/dialogs/simple_dialogs.dart'; +import '../components/matrix.dart'; +import '../utils/app_route.dart'; import 'app_info.dart'; import 'chat_list.dart'; -import '../components/adaptive_page_layout.dart'; -import '../components/dialogs/simple_dialogs.dart'; -import '../components/content_banner.dart'; -import '../components/matrix.dart'; -import '../l10n/l10n.dart'; -import '../utils/app_route.dart'; import 'settings_emotes.dart'; class SettingsView extends StatelessWidget { @@ -52,6 +56,52 @@ class _SettingsState extends State { .tryRequestWithLoadingDialog(matrix.client.logout()); } + void _changePasswordAccountAction(BuildContext context) async { + final oldPassword = await SimpleDialogs(context).enterText( + password: true, + titleText: L10n.of(context).pleaseEnterYourPassword, + ); + if (oldPassword == null) return; + final newPassword = await SimpleDialogs(context).enterText( + password: true, + titleText: L10n.of(context).chooseAStrongPassword, + ); + if (newPassword == null) return; + await SimpleDialogs(context).tryRequestWithLoadingDialog( + Matrix.of(context) + .client + .changePassword(newPassword, oldPassword: oldPassword), + ); + BotToast.showText(text: L10n.of(context).passwordHasBeenChanged); + } + + void _deleteAccountAction(BuildContext context) async { + if (await SimpleDialogs(context).askConfirmation( + titleText: L10n.of(context).warning, + contentText: L10n.of(context).deactivateAccountWarning, + dangerous: true, + ) == + false) { + return; + } + if (await SimpleDialogs(context).askConfirmation(dangerous: true) == + false) { + return; + } + final password = await SimpleDialogs(context).enterText( + password: true, + titleText: L10n.of(context).pleaseEnterYourPassword, + ); + if (password == null) return; + await SimpleDialogs(context).tryRequestWithLoadingDialog( + Matrix.of(context).client.deactivateAccount(auth: { + 'type': 'm.login.password', + 'user': Matrix.of(context).client.userID, + 'password': password, + }), + ); + } + void setJitsiInstanceAction(BuildContext context) async { var jitsi = await SimpleDialogs(context).enterText( titleText: L10n.of(context).editJitsiInstance, @@ -77,7 +127,7 @@ class _SettingsState extends State { if (displayname == null) return; final matrix = Matrix.of(context); final success = await SimpleDialogs(context).tryRequestWithLoadingDialog( - matrix.client.setDisplayname(displayname), + matrix.client.setDisplayname(matrix.client.userID, displayname), ); if (success != false) { setState(() { @@ -142,11 +192,15 @@ class _SettingsState extends State { try { handle.unlock(recoveryKey: str); valid = true; - } catch (_) { + } catch (e, s) { + debugPrint('Couldn\'t use recovery key: ' + e.toString()); + debugPrint(s.toString()); try { handle.unlock(passphrase: str); valid = true; - } catch (_) { + } catch (e, s) { + debugPrint('Couldn\'t use recovery passphrase: ' + e.toString()); + debugPrint(s.toString()); valid = false; } } @@ -327,9 +381,19 @@ class _SettingsState extends State { ), ), ), + ListTile( + trailing: Icon(Icons.block), + title: Text(L10n.of(context).ignoredUsers), + onTap: () async => await Navigator.of(context).push( + AppRoute.defaultRoute( + context, + SettingsIgnoreListView(), + ), + ), + ), ListTile( trailing: Icon(Icons.account_circle), - title: Text(L10n.of(context).accountInformations), + title: Text(L10n.of(context).accountInformation), onTap: () => Navigator.of(context).push( AppRoute.defaultRoute( context, @@ -337,11 +401,32 @@ class _SettingsState extends State { ), ), ), + ListTile( + trailing: Icon(Icons.bug_report), + title: Text(L10n.of(context).sendBugReports), + onTap: () => SentryController.toggleSentryAction(context), + ), + Divider(thickness: 1), + ListTile( + trailing: Icon(Icons.vpn_key), + title: Text( + 'Change password', + ), + onTap: () => _changePasswordAccountAction(context), + ), ListTile( trailing: Icon(Icons.exit_to_app), title: Text(L10n.of(context).logout), onTap: () => logoutAction(context), ), + ListTile( + trailing: Icon(Icons.delete_forever), + title: Text( + L10n.of(context).deleteAccount, + style: TextStyle(color: Colors.red), + ), + onTap: () => _deleteAccountAction(context), + ), Divider(thickness: 1), ListTile( title: Text( @@ -459,20 +544,27 @@ class _SettingsState extends State { ListTile( trailing: Icon(Icons.help), title: Text(L10n.of(context).help), - onTap: () => launch( - 'https://gitlab.com/ChristianPauly/fluffychat-flutter/issues'), + onTap: () => launch(AppConfig.supportUrl), + ), + ListTile( + trailing: Icon(Icons.privacy_tip_rounded), + title: Text(L10n.of(context).privacy), + onTap: () => launch(AppConfig.privacyUrl), ), ListTile( trailing: Icon(Icons.link), title: Text(L10n.of(context).license), - onTap: () => launch( - 'https://gitlab.com/ChristianPauly/fluffychat-flutter/raw/master/LICENSE'), + onTap: () => showLicensePage( + context: context, + applicationIcon: + Image.asset('assets/logo.png', width: 100, height: 100), + applicationName: AppConfig.applicationName, + ), ), ListTile( trailing: Icon(Icons.code), title: Text(L10n.of(context).sourceCode), - onTap: () => launch( - 'https://gitlab.com/ChristianPauly/fluffychat-flutter'), + onTap: () => launch(AppConfig.sourceCodeUrl), ), ], ), diff --git a/lib/views/settings_devices.dart b/lib/views/settings_devices.dart index ffcaa73..1894b13 100644 --- a/lib/views/settings_devices.dart +++ b/lib/views/settings_devices.dart @@ -1,11 +1,11 @@ import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; -import '../utils/date_time_extension.dart'; import '../components/adaptive_page_layout.dart'; import '../components/matrix.dart'; -import '../l10n/l10n.dart'; +import '../utils/date_time_extension.dart'; import 'chat_list.dart'; class DevicesSettingsView extends StatelessWidget { @@ -28,7 +28,7 @@ class DevicesSettingsState extends State { List devices; Future _loadUserDevices(BuildContext context) async { if (devices != null) return true; - devices = await Matrix.of(context).client.api.requestDevices(); + devices = await Matrix.of(context).client.requestDevices(); return true; } @@ -49,7 +49,7 @@ class DevicesSettingsState extends State { if (password == null) return; final success = await SimpleDialogs(context).tryRequestWithLoadingDialog( - matrix.client.api.deleteDevices(deviceIds, + matrix.client.deleteDevices(deviceIds, auth: matrix.getAuthByPassword(password))); if (success != false) { reload(); diff --git a/lib/views/settings_emotes.dart b/lib/views/settings_emotes.dart index 8568385..1f088e1 100644 --- a/lib/views/settings_emotes.dart +++ b/lib/views/settings_emotes.dart @@ -1,36 +1,38 @@ -import 'package:flutter/material.dart'; -import 'package:flutter/foundation.dart'; -import 'package:flutter_advanced_networkimage/provider.dart'; -import 'package:famedlysdk/famedlysdk.dart'; -import 'package:image_picker/image_picker.dart'; import 'package:bot_toast/bot_toast.dart'; +import 'package:cached_network_image/cached_network_image.dart'; +import 'package:famedlysdk/famedlysdk.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:image_picker/image_picker.dart'; import 'package:memoryfilepicker/memoryfilepicker.dart'; -import 'chat_list.dart'; import '../components/adaptive_page_layout.dart'; -import '../components/matrix.dart'; import '../components/dialogs/simple_dialogs.dart'; -import '../l10n/l10n.dart'; +import '../components/matrix.dart'; +import 'chat_list.dart'; class EmotesSettingsView extends StatelessWidget { final Room room; + final String stateKey; - EmotesSettingsView({this.room}); + EmotesSettingsView({this.room, this.stateKey}); @override Widget build(BuildContext context) { return AdaptivePageLayout( primaryPage: FocusPage.SECOND, firstScaffold: ChatList(), - secondScaffold: EmotesSettings(room: room), + secondScaffold: EmotesSettings(room: room, stateKey: stateKey), ); } } class EmotesSettings extends StatefulWidget { final Room room; + final String stateKey; - EmotesSettings({this.room}); + EmotesSettings({this.room, this.stateKey}); @override _EmotesSettingsState createState() => _EmotesSettingsState(); @@ -59,30 +61,87 @@ class _EmotesSettingsState extends State { // be sure to preserve any data not in "short" Map content; if (widget.room != null) { - content = widget.room.getState('im.ponies.room_emotes')?.content ?? + content = widget.room + .getState('im.ponies.room_emotes', widget.stateKey ?? '') + ?.content ?? {}; } else { content = client.accountData['im.ponies.user_emotes']?.content ?? {}; } debugPrint(content.toString()); - content['short'] = {}; - for (final emote in emotes) { - content['short'][emote.emote] = emote.mxc; + if (!(content['emoticons'] is Map)) { + content['emoticons'] = {}; } + // add / update changed emotes + final allowedShortcodes = {}; + for (final emote in emotes) { + allowedShortcodes.add(emote.emote); + if (!(content['emoticons'][emote.emote] is Map)) { + content['emoticons'][emote.emote] = {}; + } + content['emoticons'][emote.emote]['url'] = emote.mxc; + } + // remove emotes no more needed + // we make the iterator .toList() here so that we don't get into trouble modifying the very + // thing we are iterating over + for (final shortcode in content['emoticons'].keys.toList()) { + if (!allowedShortcodes.contains(shortcode)) { + content['emoticons'].remove(shortcode); + } + } + // remove the old "short" key + content.remove('short'); debugPrint(content.toString()); if (widget.room != null) { await SimpleDialogs(context).tryRequestWithLoadingDialog( - client.api.sendState(widget.room.id, 'im.ponies.room_emotes', content), + client.sendState(widget.room.id, 'im.ponies.room_emotes', content, + widget.stateKey ?? ''), ); } else { await SimpleDialogs(context).tryRequestWithLoadingDialog( - client.api - .setAccountData(client.userID, 'im.ponies.user_emotes', content), + client.setAccountData(client.userID, 'im.ponies.user_emotes', content), ); } } + Future _setIsGloballyActive(BuildContext context, bool active) async { + if (widget.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'][widget.room.id] is Map)) { + content['rooms'][widget.room.id] = {}; + } + if (!(content['rooms'][widget.room.id][widget.stateKey ?? ''] is Map)) { + content['rooms'][widget.room.id] + [widget.stateKey ?? ''] = {}; + } + } else if (content['rooms'] is Map && + content['rooms'][widget.room.id] is Map) { + content['rooms'][widget.room.id].remove(widget.stateKey ?? ''); + } + // and save + await SimpleDialogs(context).tryRequestWithLoadingDialog( + client.setAccountData(client.userID, 'im.ponies.emote_rooms', content), + ); + } + + bool isGloballyActive(Client client) => + widget.room != null && + client.accountData['im.ponies.emote_rooms']?.content is Map && + client.accountData['im.ponies.emote_rooms'].content['rooms'] is Map && + client.accountData['im.ponies.emote_rooms'].content['rooms'] + [widget.room.id] is Map && + client.accountData['im.ponies.emote_rooms'].content['rooms'] + [widget.room.id][widget.stateKey ?? ''] is Map; + bool get readonly => widget.room == null ? false : !(widget.room.canSendEvent('im.ponies.room_emotes')); @@ -94,16 +153,31 @@ class _EmotesSettingsState extends State { emotes = <_EmoteEntry>[]; Map emoteSource; if (widget.room != null) { - emoteSource = widget.room.getState('im.ponies.room_emotes')?.content; + emoteSource = widget.room + .getState('im.ponies.room_emotes', widget.stateKey ?? '') + ?.content; } else { emoteSource = client.accountData['im.ponies.user_emotes']?.content; } - if (emoteSource != null && emoteSource['short'] is Map) { - emoteSource['short'].forEach((key, value) { - if (key is String && value is String && value.startsWith('mxc://')) { - emotes.add(_EmoteEntry(emote: key, mxc: value)); - } - }); + if (emoteSource != null) { + if (emoteSource['emoticons'] is Map) { + emoteSource['emoticons'].forEach((key, value) { + if (key is String && + value is Map && + value['url'] is String && + value['url'].startsWith('mxc://')) { + emotes.add(_EmoteEntry(emote: key, mxc: value['url'])); + } + }); + } else if (emoteSource['short'] is Map) { + emoteSource['short'].forEach((key, value) { + if (key is String && + value is String && + value.startsWith('mxc://')) { + emotes.add(_EmoteEntry(emote: key, mxc: value)); + } + }); + } } } return Scaffold( @@ -167,7 +241,6 @@ class _EmotesSettingsState extends State { size: 32.0, ), onTap: () async { - debugPrint('blah'); if (newEmoteController.text == null || newEmoteController.text.isEmpty || newMxcController.text == null || @@ -205,7 +278,19 @@ class _EmotesSettingsState extends State { vertical: 8.0, ), ), - if (!readonly) + if (widget.room != null) + ListTile( + title: Text(L10n.of(context).enableEmotesGlobally), + trailing: Switch( + value: isGloballyActive(client), + activeColor: Theme.of(context).primaryColor, + onChanged: (bool newValue) async { + await _setIsGloballyActive(context, newValue); + setState(() => null); + }, + ), + ), + if (!readonly || widget.room != null) Divider( height: 2, thickness: 2, @@ -330,11 +415,8 @@ class _EmoteImage extends StatelessWidget { height: size * devicePixelRatio, method: ThumbnailMethod.scale, ); - return Image( - image: AdvancedNetworkImage( - url, - useDiskCache: !kIsWeb, - ), + return CachedNetworkImage( + imageUrl: url, fit: BoxFit.contain, width: size, height: size, @@ -377,10 +459,7 @@ class _EmoteImagePickerState extends State<_EmoteImagePicker> { final matrixFile = MatrixFile(bytes: file.bytes, name: file.path); final uploadResp = await SimpleDialogs(context).tryRequestWithLoadingDialog( - Matrix.of(context) - .client - .api - .upload(matrixFile.bytes, matrixFile.name), + Matrix.of(context).client.upload(matrixFile.bytes, matrixFile.name), ); setState(() { widget.controller.text = uploadResp; diff --git a/lib/views/settings_ignore_list.dart b/lib/views/settings_ignore_list.dart new file mode 100644 index 0000000..1acf778 --- /dev/null +++ b/lib/views/settings_ignore_list.dart @@ -0,0 +1,103 @@ +import 'package:famedlysdk/famedlysdk.dart'; +import 'package:fluffychat/components/adaptive_page_layout.dart'; +import 'package:fluffychat/components/avatar.dart'; +import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; + +import '../components/matrix.dart'; +import 'chat_list.dart'; + +class SettingsIgnoreListView extends StatelessWidget { + @override + Widget build(BuildContext context) { + return AdaptivePageLayout( + primaryPage: FocusPage.SECOND, + firstScaffold: ChatList(), + secondScaffold: SettingsIgnoreList(), + ); + } +} + +class SettingsIgnoreList extends StatelessWidget { + final controller = TextEditingController(); + + void _ignoreUser(BuildContext context) { + if (controller.text.isEmpty) return; + SimpleDialogs(context).tryRequestWithLoadingDialog( + Matrix.of(context).client.ignoreUser('@${controller.text}'), + ); + controller.clear(); + } + + @override + Widget build(BuildContext context) { + final client = Matrix.of(context).client; + return Scaffold( + appBar: AppBar(title: Text(L10n.of(context).ignoredUsers)), + body: Column( + children: [ + Padding( + padding: const EdgeInsets.all(16.0), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + TextField( + controller: controller, + autocorrect: false, + textInputAction: TextInputAction.done, + onSubmitted: (_) => _ignoreUser(context), + decoration: InputDecoration( + border: OutlineInputBorder(), + hintText: 'bad_guy:domain.abc', + prefixText: '@', + labelText: L10n.of(context).ignoreUsername, + suffixIcon: IconButton( + icon: Icon(Icons.done), + onPressed: () => _ignoreUser(context), + ), + ), + ), + SizedBox(height: 16), + Text( + L10n.of(context).ignoreListDescription, + style: TextStyle(color: Colors.orange), + ), + ], + ), + ), + Divider(height: 1), + Expanded( + child: StreamBuilder( + stream: client.onAccountData.stream + .where((a) => a.type == 'm.ignored_user_list'), + builder: (context, snapshot) { + return ListView.builder( + itemCount: client.ignoredUsers.length, + itemBuilder: (c, i) => FutureBuilder( + future: + client.getProfileFromUserId(client.ignoredUsers[i]), + builder: (c, s) => ListTile( + leading: Avatar( + s.data?.avatarUrl ?? Uri.parse(''), + s.data?.displayname ?? client.ignoredUsers[i], + ), + title: + Text(s.data?.displayname ?? client.ignoredUsers[i]), + trailing: IconButton( + icon: Icon(Icons.delete_forever), + onPressed: () => SimpleDialogs(context) + .tryRequestWithLoadingDialog( + client.unignoreUser(client.ignoredUsers[i]), + ), + ), + ), + ), + ); + }), + ), + ], + ), + ); + } +} diff --git a/lib/views/settings_multiple_emotes.dart b/lib/views/settings_multiple_emotes.dart new file mode 100644 index 0000000..76aa358 --- /dev/null +++ b/lib/views/settings_multiple_emotes.dart @@ -0,0 +1,74 @@ +import 'package:flutter/material.dart'; +import 'package:famedlysdk/famedlysdk.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import '../components/adaptive_page_layout.dart'; +import '../utils/app_route.dart'; +import 'chat_list.dart'; +import 'settings_emotes.dart'; + +class MultipleEmotesSettingsView extends StatelessWidget { + final Room room; + + MultipleEmotesSettingsView({this.room}); + + @override + Widget build(BuildContext context) { + return AdaptivePageLayout( + primaryPage: FocusPage.SECOND, + firstScaffold: ChatList(), + secondScaffold: MultipleEmotesSettings(room: room), + ); + } +} + +class MultipleEmotesSettings extends StatelessWidget { + final Room room; + + MultipleEmotesSettings({this.room}); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(L10n.of(context).emotePacks), + ), + body: StreamBuilder( + stream: room.onUpdate.stream, + builder: (context, snapshot) { + final packs = + room.states.states['im.ponies.room_emotes'] ?? {}; + if (!packs.containsKey('')) { + packs[''] = null; + } + final keys = packs.keys.toList(); + keys.sort(); + return ListView.separated( + separatorBuilder: (BuildContext context, int i) => Container(), + itemCount: keys.length, + itemBuilder: (BuildContext context, int i) { + final event = packs[keys[i]]; + var packName = keys[i].isNotEmpty ? keys[i] : 'Default Pack'; + if (event != null && event.content['pack'] is Map) { + if (event.content['pack']['displayname'] is String) { + packName = event.content['pack']['displayname']; + } else if (event.content['pack']['name'] is String) { + packName = event.content['pack']['name']; + } + } + return ListTile( + title: Text(packName), + onTap: () async { + await Navigator.of(context).push( + AppRoute.defaultRoute( + context, + EmotesSettingsView(room: room, stateKey: keys[i]), + ), + ); + }, + ); + }); + }, + ), + ); + } +} diff --git a/lib/views/sign_up.dart b/lib/views/sign_up.dart index 1ee2d5f..cf8e199 100644 --- a/lib/views/sign_up.dart +++ b/lib/views/sign_up.dart @@ -2,12 +2,12 @@ import 'dart:math'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/components/matrix.dart'; -import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/utils/app_route.dart'; import 'package:fluffychat/views/login.dart'; import 'package:fluffychat/views/sign_up_password.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:image_picker/image_picker.dart'; import 'package:memoryfilepicker/memoryfilepicker.dart'; @@ -54,7 +54,7 @@ class _SignUpState extends State { usernameController.text.toLowerCase().replaceAll(' ', '-'); try { - await matrix.client.api.usernameAvailable(preferredUsername); + await matrix.client.usernameAvailable(preferredUsername); } on MatrixException catch (exception) { setState(() => usernameError = exception.errorMessage); return setState(() => loading = false); @@ -84,7 +84,6 @@ class _SignUpState extends State { title: Text( Matrix.of(context) .client - .api .homeserver .toString() .replaceFirst('https://', ''), diff --git a/lib/views/sign_up_password.dart b/lib/views/sign_up_password.dart index ed71d1e..84cebb6 100644 --- a/lib/views/sign_up_password.dart +++ b/lib/views/sign_up_password.dart @@ -1,12 +1,12 @@ import 'dart:math'; +import 'package:bot_toast/bot_toast.dart'; import 'package:famedlysdk/famedlysdk.dart'; import 'package:fluffychat/components/matrix.dart'; -import 'package:fluffychat/l10n/l10n.dart'; import 'package:fluffychat/utils/app_route.dart'; import 'package:fluffychat/views/auth_web_view.dart'; import 'package:flutter/material.dart'; -import 'package:bot_toast/bot_toast.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; import 'package:memoryfilepicker/memoryfilepicker.dart'; import 'chat_list.dart'; @@ -94,7 +94,8 @@ class _SignUpPasswordState extends State { await matrix.client.onLoginStateChanged.stream .firstWhere((l) => l == LoginState.logged); try { - await matrix.client.setDisplayname(widget.displayname); + await matrix.client + .setDisplayname(matrix.client.userID, widget.displayname); } catch (exception) { BotToast.showText(text: L10n.of(context).couldNotSetDisplayname); } diff --git a/lib/views/status_view.dart b/lib/views/status_view.dart new file mode 100644 index 0000000..d2b0bea --- /dev/null +++ b/lib/views/status_view.dart @@ -0,0 +1,184 @@ +import 'package:famedlysdk/famedlysdk.dart'; +import 'package:fluffychat/components/avatar.dart'; +import 'package:fluffychat/components/dialogs/simple_dialogs.dart'; +import 'package:fluffychat/components/matrix.dart'; +import 'package:fluffychat/utils/url_launcher.dart'; +import 'package:fluffychat/utils/user_status.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; +import 'package:fluffychat/utils/app_route.dart'; +import 'package:fluffychat/utils/string_color.dart'; +import 'package:flutter/material.dart'; +import 'package:matrix_link_text/link_text.dart'; + +import 'chat.dart'; + +class StatusView extends StatelessWidget { + final Uri avatarUrl; + final String displayname; + final UserStatus status; + final bool composeMode; + final String composeText; + final TextEditingController _composeController; + + StatusView({ + this.composeMode = false, + this.status, + this.avatarUrl, + this.displayname, + this.composeText, + Key key, + }) : _composeController = TextEditingController(text: composeText), + super(key: key); + + void _sendMessageAction(BuildContext context) async { + final roomId = await User( + status.userId, + room: Room(id: '', client: Matrix.of(context).client), + ).startDirectChat(); + await Navigator.of(context).pushAndRemoveUntil( + AppRoute.defaultRoute( + context, + ChatView(roomId), + ), + (Route r) => r.isFirst); + } + + void _setStatusAction(BuildContext context) async { + if (_composeController.text.isEmpty) return; + await SimpleDialogs(context).tryRequestWithLoadingDialog( + Matrix.of(context).client.sendPresence( + Matrix.of(context).client.userID, PresenceType.online, + statusMsg: _composeController.text), + ); + await Navigator.of(context).popUntil((Route r) => r.isFirst); + } + + void _removeStatusAction(BuildContext context) async { + final success = await SimpleDialogs(context).tryRequestWithLoadingDialog( + Matrix.of(context).client.sendPresence( + Matrix.of(context).client.userID, + PresenceType.online, + statusMsg: + ' ', // Send this empty String make sure that all other devices will get an update + ), + ); + if (success == false) return; + await Navigator.of(context).popUntil((Route r) => r.isFirst); + } + + @override + Widget build(BuildContext context) { + if (composeMode == false && status == null) { + throw ('If composeMode is null then the presence must be not null!'); + } + final padding = const EdgeInsets.only( + top: 16.0, + right: 16.0, + left: 16.0, + bottom: 64.0, + ); + return Scaffold( + backgroundColor: displayname.color, + extendBody: true, + appBar: AppBar( + brightness: Brightness.dark, + leading: IconButton( + icon: Icon( + Icons.close, + color: Colors.white, + ), + onPressed: Navigator.of(context).pop, + ), + backgroundColor: Colors.transparent, + elevation: 1, + title: ListTile( + contentPadding: EdgeInsets.zero, + leading: Avatar(avatarUrl, displayname), + title: Text( + displayname, + style: TextStyle(color: Colors.white), + ), + subtitle: Text( + status?.userId ?? Matrix.of(context).client.userID, + style: TextStyle(color: Colors.white), + ), + ), + actions: + !composeMode && status.userId == Matrix.of(context).client.userID + ? [ + IconButton( + icon: Icon(Icons.archive), + onPressed: () => _removeStatusAction(context), + color: Colors.white, + ), + ] + : null, + ), + body: Container( + alignment: Alignment.center, + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topLeft, + end: Alignment.bottomRight, + colors: [ + displayname.color, + Theme.of(context).primaryColor, + displayname.color, + ], + ), + ), + child: composeMode + ? Padding( + padding: padding, + child: TextField( + controller: _composeController, + autofocus: true, + minLines: 1, + maxLines: 20, + style: TextStyle( + fontSize: 30, + color: Colors.white, + ), + textAlign: TextAlign.center, + decoration: InputDecoration( + border: InputBorder.none, + ), + ), + ) + : ListView( + shrinkWrap: true, + padding: padding, + children: [ + LinkText( + text: status.statusMsg, + textAlign: TextAlign.center, + textStyle: TextStyle( + fontSize: 30, + color: Colors.white, + ), + linkStyle: TextStyle( + fontSize: 30, + color: Colors.white70, + decoration: TextDecoration.underline, + ), + onLinkTap: (url) => UrlLauncher(context, url).launchUrl(), + ), + ], + ), + ), + floatingActionButton: + !composeMode && status.userId == Matrix.of(context).client.userID + ? null + : FloatingActionButton.extended( + backgroundColor: Theme.of(context).primaryColor, + icon: Icon(composeMode ? Icons.edit : Icons.message_outlined), + label: Text(composeMode + ? L10n.of(context).setStatus + : L10n.of(context).sendAMessage), + onPressed: () => composeMode + ? _setStatusAction(context) + : _sendMessageAction(context), + ), + ); + } +} 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..34af8c5 --- /dev/null +++ b/linux/CMakeLists.txt @@ -0,0 +1,98 @@ +cmake_minimum_required(VERSION 3.10) +project(runner LANGUAGES CXX) + +set(BINARY_NAME "fluffychat") +set(APPLICATION_ID "chat.fluffy.fluffychat") + +cmake_policy(SET CMP0063 NEW) + +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") + +# Configure build 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. +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() + +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") + +# Flutter library and tool build rules. +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}") + +# Application build +add_executable(${BINARY_NAME} + "main.cc" + "my_application.cc" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" +) +apply_standard_settings(${BINARY_NAME}) +target_link_libraries(${BINARY_NAME} PRIVATE flutter) +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) +add_dependencies(${BINARY_NAME} flutter_assemble) + +# 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) + +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. +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..4f48a7c --- /dev/null +++ b/linux/flutter/CMakeLists.txt @@ -0,0 +1,88 @@ +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) +pkg_check_modules(BLKID REQUIRED IMPORTED_TARGET blkid) + +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 + PkgConfig::BLKID +) +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" + linux-x64 ${CMAKE_BUILD_TYPE} +) +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..026851f --- /dev/null +++ b/linux/flutter/generated_plugin_registrant.cc @@ -0,0 +1,13 @@ +// +// Generated file. Do not edit. +// + +#include "generated_plugin_registrant.h" + +#include + +void fl_register_plugins(FlPluginRegistry* registry) { + 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); +} diff --git a/linux/flutter/generated_plugin_registrant.h b/linux/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..9bf7478 --- /dev/null +++ b/linux/flutter/generated_plugin_registrant.h @@ -0,0 +1,13 @@ +// +// Generated file. Do not edit. +// + +#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..1fc8ed3 --- /dev/null +++ b/linux/flutter/generated_plugins.cmake @@ -0,0 +1,16 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + url_launcher_linux +) + +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) diff --git a/linux/main.cc b/linux/main.cc new file mode 100644 index 0000000..058e617 --- /dev/null +++ b/linux/main.cc @@ -0,0 +1,10 @@ +#include "my_application.h" + +int main(int argc, char** argv) { + // Only X11 is currently supported. + // Wayland support is being developed: https://github.com/flutter/flutter/issues/57932. + gdk_set_allowed_backends("x11"); + + 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..2111adc --- /dev/null +++ b/linux/my_application.cc @@ -0,0 +1,46 @@ +#include "my_application.h" + +#include + +#include "flutter/generated_plugin_registrant.h" + +struct _MyApplication { + GtkApplication parent_instance; +}; + +G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION) + +// Implements GApplication::activate. +static void my_application_activate(GApplication* application) { + GtkWindow* window = + GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application))); + 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)); + gtk_window_set_default_size(window, 1280, 720); + gtk_widget_show(GTK_WIDGET(window)); + + g_autoptr(FlDartProject) project = fl_dart_project_new(); + + FlView* view = fl_view_new(project); + gtk_widget_show(GTK_WIDGET(view)); + gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view)); + + fl_register_plugins(FL_PLUGIN_REGISTRY(view)); + + gtk_widget_grab_focus(GTK_WIDGET(view)); +} + +static void my_application_class_init(MyApplicationClass* klass) { + G_APPLICATION_CLASS(klass)->activate = my_application_activate; +} + +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, + 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..d2fd377 --- /dev/null +++ b/macos/.gitignore @@ -0,0 +1,6 @@ +# Flutter-related +**/Flutter/ephemeral/ +**/Pods/ + +# Xcode-related +**/xcuserdata/ diff --git a/macos/Flutter/Flutter-Debug.xcconfig b/macos/Flutter/Flutter-Debug.xcconfig new file mode 100644 index 0000000..785633d --- /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..5fba960 --- /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..d632614 --- /dev/null +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,18 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import firebase_core +import path_provider_macos +import sqflite +import url_launcher_macos + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) + PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) + SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) + UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) +} diff --git a/macos/Podfile b/macos/Podfile new file mode 100644 index 0000000..d60ec71 --- /dev/null +++ b/macos/Podfile @@ -0,0 +1,82 @@ +platform :osx, '10.11' + +# CocoaPods analytics sends network stats synchronously affecting flutter build latency. +ENV['COCOAPODS_DISABLE_STATS'] = 'true' + +project 'Runner', { + 'Debug' => :debug, + 'Profile' => :release, + 'Release' => :release, +} + +def parse_KV_file(file, separator='=') + file_abs_path = File.expand_path(file) + if !File.exists? file_abs_path + return []; + end + pods_ary = [] + skip_line_start_symbols = ["#", "/"] + File.foreach(file_abs_path) { |line| + next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } + plugin = line.split(pattern=separator) + if plugin.length == 2 + podname = plugin[0].strip() + path = plugin[1].strip() + podpath = File.expand_path("#{path}", file_abs_path) + pods_ary.push({:name => podname, :path => podpath}); + else + puts "Invalid plugin specification: #{line}" + end + } + return pods_ary +end + +def pubspec_supports_macos(file) + file_abs_path = File.expand_path(file) + if !File.exists? file_abs_path + return false; + end + File.foreach(file_abs_path) { |line| + return true if line =~ /^\s*macos:/ + } + return false +end + +target 'Runner' do + use_frameworks! + use_modular_headers! + + # Prepare symlinks folder. We use symlinks to avoid having Podfile.lock + # referring to absolute paths on developers' machines. + ephemeral_dir = File.join('Flutter', 'ephemeral') + symlink_dir = File.join(ephemeral_dir, '.symlinks') + symlink_plugins_dir = File.join(symlink_dir, 'plugins') + system("rm -rf #{symlink_dir}") + system("mkdir -p #{symlink_plugins_dir}") + + # Flutter Pods + generated_xcconfig = parse_KV_file(File.join(ephemeral_dir, 'Flutter-Generated.xcconfig')) + if generated_xcconfig.empty? + puts "Flutter-Generated.xcconfig must exist. If you're running pod install manually, make sure flutter packages get is executed first." + end + generated_xcconfig.map { |p| + if p[:name] == 'FLUTTER_FRAMEWORK_DIR' + symlink = File.join(symlink_dir, 'flutter') + File.symlink(File.dirname(p[:path]), symlink) + pod 'FlutterMacOS', :path => File.join(symlink, File.basename(p[:path])) + end + } + + # Plugin Pods + plugin_pods = parse_KV_file('../.flutter-plugins') + plugin_pods.map { |p| + symlink = File.join(symlink_plugins_dir, p[:name]) + File.symlink(p[:path], symlink) + if pubspec_supports_macos(File.join(symlink, 'pubspec.yaml')) + pod p[:name], :path => File.join(symlink, 'macos') + end + } +end + +# Prevent Cocoapods from embedding a second Flutter framework and causing an error with the new Xcode build system. +install! 'cocoapods', :disable_input_output_paths => true diff --git a/macos/Podfile.lock b/macos/Podfile.lock new file mode 100644 index 0000000..23d98eb --- /dev/null +++ b/macos/Podfile.lock @@ -0,0 +1,101 @@ +PODS: + - Firebase/CoreOnly (6.26.0): + - FirebaseCore (= 6.7.2) + - firebase_core (0.5.0): + - Firebase/CoreOnly (~> 6.26.0) + - FlutterMacOS + - FirebaseCore (6.7.2): + - FirebaseCoreDiagnostics (~> 1.3) + - FirebaseCoreDiagnosticsInterop (~> 1.2) + - GoogleUtilities/Environment (~> 6.5) + - GoogleUtilities/Logger (~> 6.5) + - FirebaseCoreDiagnostics (1.7.0): + - GoogleDataTransport (~> 7.4) + - GoogleUtilities/Environment (~> 6.7) + - GoogleUtilities/Logger (~> 6.7) + - nanopb (~> 1.30906.0) + - FirebaseCoreDiagnosticsInterop (1.2.0) + - FlutterMacOS (1.0.0) + - FMDB (2.7.5): + - FMDB/standard (= 2.7.5) + - FMDB/standard (2.7.5) + - GoogleDataTransport (7.4.0): + - nanopb (~> 1.30906.0) + - GoogleUtilities/Environment (6.7.2): + - PromisesObjC (~> 1.2) + - GoogleUtilities/Logger (6.7.2): + - GoogleUtilities/Environment + - nanopb (1.30906.0): + - nanopb/decode (= 1.30906.0) + - nanopb/encode (= 1.30906.0) + - nanopb/decode (1.30906.0) + - nanopb/encode (1.30906.0) + - path_provider (0.0.1) + - path_provider_macos (0.0.1): + - FlutterMacOS + - PromisesObjC (1.2.10) + - sqflite (0.0.1): + - FlutterMacOS + - FMDB (~> 2.7.2) + - url_launcher (0.0.1) + - url_launcher_macos (0.0.1): + - FlutterMacOS + +DEPENDENCIES: + - firebase_core (from `Flutter/ephemeral/.symlinks/plugins/firebase_core/macos`) + - FlutterMacOS (from `Flutter/ephemeral/.symlinks/flutter/darwin-x64-release`) + - path_provider (from `Flutter/ephemeral/.symlinks/plugins/path_provider/macos`) + - path_provider_macos (from `Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos`) + - sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/macos`) + - url_launcher (from `Flutter/ephemeral/.symlinks/plugins/url_launcher/macos`) + - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`) + +SPEC REPOS: + trunk: + - Firebase + - FirebaseCore + - FirebaseCoreDiagnostics + - FirebaseCoreDiagnosticsInterop + - FMDB + - GoogleDataTransport + - GoogleUtilities + - nanopb + - PromisesObjC + +EXTERNAL SOURCES: + firebase_core: + :path: Flutter/ephemeral/.symlinks/plugins/firebase_core/macos + FlutterMacOS: + :path: Flutter/ephemeral/.symlinks/flutter/darwin-x64-release + path_provider: + :path: Flutter/ephemeral/.symlinks/plugins/path_provider/macos + path_provider_macos: + :path: Flutter/ephemeral/.symlinks/plugins/path_provider_macos/macos + sqflite: + :path: Flutter/ephemeral/.symlinks/plugins/sqflite/macos + url_launcher: + :path: Flutter/ephemeral/.symlinks/plugins/url_launcher/macos + url_launcher_macos: + :path: Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos + +SPEC CHECKSUMS: + Firebase: 7cf5f9c67f03cb3b606d1d6535286e1080e57eb6 + firebase_core: dd6486c333f1bceec3f20fc59fd2519ba6eda067 + FirebaseCore: f42e5e5f382cdcf6b617ed737bf6c871a6947b17 + FirebaseCoreDiagnostics: 770ac5958e1372ce67959ae4b4f31d8e127c3ac1 + FirebaseCoreDiagnosticsInterop: 296e2c5f5314500a850ad0b83e9e7c10b011a850 + FlutterMacOS: 15bea8a44d2fa024068daa0140371c020b4b6ff9 + FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a + GoogleDataTransport: b7f406340a291370045a270c599e53c6fa6ec20f + GoogleUtilities: 7f2f5a07f888cdb145101d6042bc4422f57e70b3 + nanopb: 59317e09cf1f1a0af72f12af412d54edf52603fc + path_provider: e0848572d1d38b9a7dd099e79cf83f5b7e2cde9f + path_provider_macos: a0a3fd666cb7cd0448e936fb4abad4052961002b + PromisesObjC: b14b1c6b68e306650688599de8a45e49fae81151 + sqflite: 6c1f07e1d4399d619ea619fea9171251dd24d058 + url_launcher: af78307ef9bafff91273b34f1c6c0c86a0004fd7 + url_launcher_macos: 45af3d61de06997666568a7149c1be98b41c95d4 + +PODFILE CHECKSUM: d8ba9b3e9e93c62c74a660b46c6fcb09f03991a7 + +COCOAPODS: 1.9.3 diff --git a/macos/Runner.xcodeproj/project.pbxproj b/macos/Runner.xcodeproj/project.pbxproj new file mode 100644 index 0000000..8469f42 --- /dev/null +++ b/macos/Runner.xcodeproj/project.pbxproj @@ -0,0 +1,654 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 51; + 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 */; }; + 33D1A10422148B71006C7A3E /* FlutterMacOS.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 33D1A10322148B71006C7A3E /* FlutterMacOS.framework */; }; + 33D1A10522148B93006C7A3E /* FlutterMacOS.framework in Bundle Framework */ = {isa = PBXBuildFile; fileRef = 33D1A10322148B71006C7A3E /* FlutterMacOS.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 9795BB5F91BF4775B6B0D9D5 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F69524ABCBB1D526AF7967B9 /* Pods_Runner.framework */; }; + D73912F022F37F9E000D13A0 /* App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D73912EF22F37F9E000D13A0 /* App.framework */; }; + D73912F222F3801D000D13A0 /* App.framework in Bundle Framework */ = {isa = PBXBuildFile; fileRef = D73912EF22F37F9E000D13A0 /* App.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; +/* 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 = ( + D73912F222F3801D000D13A0 /* App.framework in Bundle Framework */, + 33D1A10522148B93006C7A3E /* FlutterMacOS.framework in Bundle Framework */, + ); + name = "Bundle Framework"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 2D20EFA3D49BBBDA1F07645D /* 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 = ""; }; + 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 = ""; }; + 33D1A10322148B71006C7A3E /* FlutterMacOS.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = FlutterMacOS.framework; path = Flutter/ephemeral/FlutterMacOS.framework; sourceTree = SOURCE_ROOT; }; + 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 = ""; }; + 3CD34DC616BB2AF9B1580285 /* 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 = ""; }; + 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 = ""; }; + 997C663EFCBF8E403128D1D1 /* 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 = ""; }; + D73912EF22F37F9E000D13A0 /* App.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = App.framework; path = Flutter/ephemeral/App.framework; sourceTree = SOURCE_ROOT; }; + F69524ABCBB1D526AF7967B9 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 33CC10EA2044A3C60003C045 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + D73912F022F37F9E000D13A0 /* App.framework in Frameworks */, + 33D1A10422148B71006C7A3E /* FlutterMacOS.framework in Frameworks */, + 9795BB5F91BF4775B6B0D9D5 /* 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 */, + E41DDAA8A3B17F99D7E5251E /* 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 */, + D73912EF22F37F9E000D13A0 /* App.framework */, + 33D1A10322148B71006C7A3E /* FlutterMacOS.framework */, + ); + 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 = ( + F69524ABCBB1D526AF7967B9 /* Pods_Runner.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + E41DDAA8A3B17F99D7E5251E /* Pods */ = { + isa = PBXGroup; + children = ( + 2D20EFA3D49BBBDA1F07645D /* Pods-Runner.debug.xcconfig */, + 997C663EFCBF8E403128D1D1 /* Pods-Runner.release.xcconfig */, + 3CD34DC616BB2AF9B1580285 /* Pods-Runner.profile.xcconfig */, + ); + name = Pods; + path = Pods; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 33CC10EC2044A3C60003C045 /* Runner */ = { + isa = PBXNativeTarget; + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */; + buildPhases = ( + E26D3B733E5CAE51F86A6BE1 /* [CP] Check Pods Manifest.lock */, + 33CC10E92044A3C60003C045 /* Sources */, + 33CC10EA2044A3C60003C045 /* Frameworks */, + 33CC10EB2044A3C60003C045 /* Resources */, + 33CC110E2044A8840003C045 /* Bundle Framework */, + 3399D490228B24CF009A79C7 /* ShellScript */, + 28EE3A13194E86CCA3B8236A /* [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 = 0930; + ORGANIZATIONNAME = "The Flutter Authors"; + TargetAttributes = { + 33CC10EC2044A3C60003C045 = { + CreatedOnToolsVersion = 9.2; + LastSwiftMigration = 1100; + ProvisioningStyle = Automatic; + SystemCapabilities = { + com.apple.Sandbox = { + enabled = 1; + }; + }; + }; + 33CC111A2044C6BA0003C045 = { + CreatedOnToolsVersion = 9.2; + ProvisioningStyle = Manual; + }; + }; + }; + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */; + compatibilityVersion = "Xcode 8.0"; + 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 */ + 28EE3A13194E86CCA3B8236A /* [CP] Embed Pods Frameworks */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + name = "[CP] Embed Pods Frameworks"; + outputFileListPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-frameworks.sh\"\n"; + showEnvVarsInLog = 0; + }; + 3399D490228B24CF009A79C7 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputFileListPaths = ( + ); + inputPaths = ( + ); + outputFileListPaths = ( + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename\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\ntouch Flutter/ephemeral/tripwire\n"; + }; + E26D3B733E5CAE51F86A6BE1 /* [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; + }; +/* 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 = 10.11; + 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_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter/ephemeral", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Profile; + }; + 338D0CEB231458BD00FA5F75 /* Profile */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + 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 = 10.11; + 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 = 10.11; + 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_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter/ephemeral", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + 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_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Flutter/ephemeral", + ); + INFOPLIST_FILE = Runner/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + ); + PROVISIONING_PROFILE_SPECIFIER = ""; + SWIFT_VERSION = 5.0; + }; + name = Release; + }; + 33CC111C2044C6BA0003C045 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Manual; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + 33CC111D2044C6BA0003C045 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + 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..50396d3 --- /dev/null +++ b/macos/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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..d53ef64 --- /dev/null +++ b/macos/Runner/AppDelegate.swift @@ -0,0 +1,9 @@ +import Cocoa +import FlutterMacOS + +@NSApplicationMain +class AppDelegate: FlutterAppDelegate { + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { + return true + } +} diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..a2ec33f --- /dev/null +++ b/macos/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,68 @@ +{ + "images" : [ + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_16.png", + "scale" : "1x" + }, + { + "size" : "16x16", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "2x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_32.png", + "scale" : "1x" + }, + { + "size" : "32x32", + "idiom" : "mac", + "filename" : "app_icon_64.png", + "scale" : "2x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_128.png", + "scale" : "1x" + }, + { + "size" : "128x128", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "2x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_256.png", + "scale" : "1x" + }, + { + "size" : "256x256", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "2x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_512.png", + "scale" : "1x" + }, + { + "size" : "512x512", + "idiom" : "mac", + "filename" : "app_icon_1024.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png new file mode 100644 index 0000000..3c4935a Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_1024.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png new file mode 100644 index 0000000..ed4cc16 Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_128.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png new file mode 100644 index 0000000..483be61 Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_16.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png new file mode 100644 index 0000000..bcbf36d Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_256.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png new file mode 100644 index 0000000..9c0a652 Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_32.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png new file mode 100644 index 0000000..e71a726 Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_512.png differ diff --git a/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png new file mode 100644 index 0000000..8a31fe2 Binary files /dev/null and b/macos/Runner/Assets.xcassets/AppIcon.appiconset/app_icon_64.png differ diff --git a/macos/Runner/Base.lproj/MainMenu.xib b/macos/Runner/Base.lproj/MainMenu.xib new file mode 100644 index 0000000..537341a --- /dev/null +++ b/macos/Runner/Base.lproj/MainMenu.xib @@ -0,0 +1,339 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/macos/Runner/Configs/AppInfo.xcconfig b/macos/Runner/Configs/AppInfo.xcconfig new file mode 100644 index 0000000..362569a --- /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 = chat.fluffy.fluffychat + +// The copyright displayed in application information +PRODUCT_COPYRIGHT = Copyright © 2020 chat.fluffy. 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..3ba6c12 --- /dev/null +++ b/macos/Runner/DebugProfile.entitlements @@ -0,0 +1,14 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.cs.allow-jit + + com.apple.security.network.client + + com.apple.security.network.server + + + 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..2722837 --- /dev/null +++ b/macos/Runner/MainFlutterWindow.swift @@ -0,0 +1,15 @@ +import Cocoa +import FlutterMacOS + +class MainFlutterWindow: NSWindow { + override func awakeFromNib() { + let flutterViewController = FlutterViewController.init() + 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..7a2230d --- /dev/null +++ b/macos/Runner/Release.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.app-sandbox + + com.apple.security.network.client + + com.apple.security.network.server + + + diff --git a/pubspec.lock b/pubspec.lock index 091d9c2..0bd3205 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -7,14 +7,21 @@ packages: name: _fe_analyzer_shared url: "https://pub.dartlang.org" source: hosted - version: "1.0.3" + version: "7.0.0" analyzer: dependency: transitive description: name: analyzer url: "https://pub.dartlang.org" source: hosted - version: "0.39.4" + version: "0.39.17" + ansicolor: + dependency: transitive + description: + name: ansicolor + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.5" archive: dependency: transitive description: @@ -35,14 +42,14 @@ packages: name: asn1lib url: "https://pub.dartlang.org" source: hosted - version: "0.6.4" + version: "0.6.5" async: dependency: transitive description: name: async url: "https://pub.dartlang.org" source: hosted - version: "2.4.1" + version: "2.4.2" base58check: dependency: transitive description: @@ -63,14 +70,14 @@ packages: name: bot_toast url: "https://pub.dartlang.org" source: hosted - version: "3.0.0" - bubble: + version: "3.0.4" + cached_network_image: dependency: "direct main" description: - name: bubble + name: cached_network_image url: "https://pub.dartlang.org" source: hosted - version: "1.1.9+1" + version: "2.3.2+1" canonical_json: dependency: transitive description: @@ -78,6 +85,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.0" + characters: + dependency: transitive + description: + name: characters + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.0" charcode: dependency: transitive description: @@ -85,6 +99,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.3" + cli_util: + dependency: transitive + description: + name: cli_util + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0" clock: dependency: transitive description: @@ -98,7 +119,7 @@ packages: name: collection url: "https://pub.dartlang.org" source: hosted - version: "1.14.12" + version: "1.14.13" convert: dependency: transitive description: @@ -112,21 +133,21 @@ packages: name: coverage url: "https://pub.dartlang.org" source: hosted - version: "0.13.6" + version: "0.14.1" crypto: dependency: transitive description: name: crypto url: "https://pub.dartlang.org" source: hosted - version: "2.1.4" + version: "2.1.5" csslib: dependency: transitive description: name: csslib url: "https://pub.dartlang.org" source: hosted - version: "0.16.1" + version: "0.16.2" cupertino_icons: dependency: "direct main" description: @@ -140,14 +161,14 @@ packages: name: dart_style url: "https://pub.dartlang.org" source: hosted - version: "1.3.3" + version: "1.3.6" encrypt: dependency: transitive description: name: encrypt url: "https://pub.dartlang.org" source: hosted - version: "4.0.2" + version: "4.0.3" fake_async: dependency: transitive description: @@ -169,60 +190,102 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.1.3" + file: + dependency: transitive + description: + name: file + url: "https://pub.dartlang.org" + source: hosted + version: "5.2.1" file_picker: dependency: transitive description: name: file_picker url: "https://pub.dartlang.org" source: hosted - version: "1.12.0" + version: "1.13.3" file_picker_platform_interface: dependency: transitive description: name: file_picker_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.3.1" + firebase: + dependency: transitive + description: + name: firebase + url: "https://pub.dartlang.org" + source: hosted + version: "7.3.0" + firebase_core: + dependency: transitive + description: + name: firebase_core + url: "https://pub.dartlang.org" + source: hosted + version: "0.5.0" + firebase_core_platform_interface: + dependency: transitive + description: + name: firebase_core_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + firebase_core_web: + dependency: transitive + description: + name: firebase_core_web + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0" firebase_messaging: dependency: "direct main" description: name: firebase_messaging url: "https://pub.dartlang.org" source: hosted - version: "6.0.13" + version: "7.0.2" flutter: dependency: "direct main" description: flutter source: sdk version: "0.0.0" - flutter_advanced_networkimage: + flutter_blurhash: dependency: "direct main" description: - name: flutter_advanced_networkimage + name: flutter_blurhash url: "https://pub.dartlang.org" source: hosted - version: "0.6.4" + version: "0.5.0" + flutter_cache_manager: + dependency: transitive + description: + name: flutter_cache_manager + url: "https://pub.dartlang.org" + source: hosted + version: "1.4.2" flutter_keyboard_visibility: dependency: transitive description: name: flutter_keyboard_visibility url: "https://pub.dartlang.org" source: hosted - version: "0.7.0" + version: "3.2.2" flutter_launcher_icons: dependency: "direct dev" description: name: flutter_launcher_icons url: "https://pub.dartlang.org" source: hosted - version: "0.7.4" + version: "0.7.5" flutter_local_notifications: dependency: "direct main" description: name: flutter_local_notifications url: "https://pub.dartlang.org" source: hosted - version: "1.4.3" + version: "1.4.4+4" flutter_local_notifications_platform_interface: dependency: transitive description: @@ -241,7 +304,7 @@ packages: name: flutter_matrix_html url: "https://pub.dartlang.org" source: hosted - version: "0.1.2" + version: "0.1.5" flutter_olm: dependency: "direct main" description: @@ -255,21 +318,21 @@ packages: name: flutter_plugin_android_lifecycle url: "https://pub.dartlang.org" source: hosted - version: "1.0.8" + version: "1.0.11" flutter_secure_storage: dependency: "direct main" description: name: flutter_secure_storage url: "https://pub.dartlang.org" source: hosted - version: "3.3.1+1" + version: "3.3.4" flutter_slidable: dependency: "direct main" description: name: flutter_slidable url: "https://pub.dartlang.org" source: hosted - version: "0.5.4" + version: "0.5.7" flutter_sound: dependency: "direct main" description: @@ -277,13 +340,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.1" - flutter_svg: - dependency: transitive - description: - name: flutter_svg - url: "https://pub.dartlang.org" - source: hosted - version: "0.17.4" flutter_test: dependency: "direct dev" description: flutter @@ -295,7 +351,7 @@ packages: name: flutter_typeahead url: "https://pub.dartlang.org" source: hosted - version: "1.8.1" + version: "1.8.8" flutter_web_plugins: dependency: transitive description: flutter @@ -321,14 +377,14 @@ packages: name: html_unescape url: "https://pub.dartlang.org" source: hosted - version: "1.0.1+3" + version: "1.0.2" http: dependency: "direct main" description: name: http url: "https://pub.dartlang.org" source: hosted - version: "0.12.1" + version: "0.12.2" http_multi_server: dependency: transitive description: @@ -342,28 +398,28 @@ packages: name: http_parser url: "https://pub.dartlang.org" source: hosted - version: "3.1.3" + version: "3.1.4" image: dependency: transitive description: name: image url: "https://pub.dartlang.org" source: hosted - version: "2.1.12" + version: "2.1.18" image_picker: dependency: transitive description: name: image_picker url: "https://pub.dartlang.org" source: hosted - version: "0.6.7+2" + version: "0.6.7+11" image_picker_platform_interface: dependency: transitive description: name: image_picker_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.1.0" + version: "1.1.1" intl: dependency: "direct main" description: @@ -377,35 +433,35 @@ packages: name: intl_translation url: "https://pub.dartlang.org" source: hosted - version: "0.17.9" + version: "0.17.10+1" io: dependency: transitive description: name: io url: "https://pub.dartlang.org" source: hosted - version: "0.3.3" + version: "0.3.4" + isolate: + dependency: transitive + description: + name: isolate + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.3" js: dependency: transitive description: name: js url: "https://pub.dartlang.org" source: hosted - version: "0.6.1+1" - link_text: - dependency: "direct main" - description: - name: link_text - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.1" + version: "0.6.2" localstorage: dependency: "direct main" description: name: localstorage url: "https://pub.dartlang.org" source: hosted - version: "3.0.1+4" + version: "3.0.2+5" logging: dependency: transitive description: @@ -419,14 +475,14 @@ packages: name: markdown url: "https://pub.dartlang.org" source: hosted - version: "2.1.3" + version: "2.1.8" matcher: dependency: transitive description: name: matcher url: "https://pub.dartlang.org" source: hosted - version: "0.12.6" + version: "0.12.8" matrix_file_e2ee: dependency: transitive description: @@ -434,13 +490,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.0.4" + matrix_link_text: + dependency: "direct main" + description: + name: matrix_link_text + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.5" memoryfilepicker: dependency: "direct main" description: name: memoryfilepicker url: "https://pub.dartlang.org" source: hosted - version: "0.1.1" + version: "0.1.3" meta: dependency: transitive description: @@ -454,56 +517,58 @@ packages: name: mime url: "https://pub.dartlang.org" source: hosted - version: "0.9.6+3" + version: "0.9.7" mime_type: dependency: "direct main" description: name: mime_type url: "https://pub.dartlang.org" source: hosted - version: "0.3.0" + version: "0.3.2" moor: dependency: "direct main" description: name: moor url: "https://pub.dartlang.org" source: hosted - version: "3.0.2" - moor_ffi: + version: "3.3.1" + native_imaging: dependency: "direct main" description: - name: moor_ffi - url: "https://pub.dartlang.org" - source: hosted - version: "0.5.0" - multi_server_socket: - dependency: transitive - description: - name: multi_server_socket - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.2" + path: "." + ref: master + resolved-ref: bd24832f96537447174aa34ba78eaed7ff05bb8e + url: "https://gitlab.com/famedly/libraries/native_imaging.git" + source: git + version: "0.0.1" node_interop: dependency: transitive description: name: node_interop url: "https://pub.dartlang.org" source: hosted - version: "1.0.3" + version: "1.1.1" node_io: dependency: transitive description: name: node_io url: "https://pub.dartlang.org" source: hosted - version: "1.0.1+2" + version: "1.1.1" node_preamble: dependency: transitive description: name: node_preamble url: "https://pub.dartlang.org" source: hosted - version: "1.4.8" + version: "1.4.12" + octo_image: + dependency: transitive + description: + name: octo_image + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.0" olm: dependency: transitive description: @@ -525,13 +590,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.9.3" - package_resolver: - dependency: transitive - description: - name: package_resolver - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.10" password_hash: dependency: transitive description: @@ -546,27 +604,41 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.7.0" - path_drawing: - dependency: transitive - description: - name: path_drawing - url: "https://pub.dartlang.org" - source: hosted - version: "0.4.1" - path_parsing: - dependency: transitive - description: - name: path_parsing - url: "https://pub.dartlang.org" - source: hosted - version: "0.1.4" path_provider: dependency: "direct main" description: name: path_provider url: "https://pub.dartlang.org" source: hosted - version: "1.5.1" + version: "1.6.18" + path_provider_linux: + dependency: transitive + description: + name: path_provider_linux + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+2" + path_provider_macos: + dependency: transitive + description: + name: path_provider_macos + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.4+4" + path_provider_platform_interface: + dependency: transitive + description: + name: path_provider_platform_interface + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.3" + path_provider_windows: + dependency: transitive + description: + name: path_provider_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.4+1" pedantic: dependency: "direct dev" description: @@ -580,14 +652,14 @@ packages: name: petitparser url: "https://pub.dartlang.org" source: hosted - version: "2.4.0" + version: "3.0.4" photo_view: dependency: "direct main" description: name: photo_view url: "https://pub.dartlang.org" source: hosted - version: "0.9.2" + version: "0.10.2" platform: dependency: transitive description: @@ -616,48 +688,83 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.4.0" + process: + dependency: transitive + description: + name: process + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.13" pub_semver: dependency: transitive description: name: pub_semver url: "https://pub.dartlang.org" source: hosted - version: "1.4.2" + version: "1.4.4" + quiver: + dependency: transitive + description: + name: quiver + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.3" random_string: dependency: "direct main" description: name: random_string url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.1.0" receive_sharing_intent: dependency: "direct main" description: name: receive_sharing_intent url: "https://pub.dartlang.org" source: hosted - version: "1.3.3" + version: "1.4.1" + rxdart: + dependency: transitive + description: + name: rxdart + url: "https://pub.dartlang.org" + source: hosted + version: "0.24.1" + scroll_to_index: + dependency: "direct main" + description: + name: scroll_to_index + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.6" + sentry: + dependency: "direct main" + description: + name: sentry + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" share: dependency: "direct main" description: name: share url: "https://pub.dartlang.org" source: hosted - version: "0.6.3+5" + version: "0.6.5+2" shelf: dependency: transitive description: name: shelf url: "https://pub.dartlang.org" source: hosted - version: "0.7.5" + version: "0.7.9" shelf_packages_handler: dependency: transitive description: name: shelf_packages_handler url: "https://pub.dartlang.org" source: hosted - version: "1.0.4" + version: "2.0.0" shelf_static: dependency: transitive description: @@ -704,14 +811,35 @@ packages: name: sqflite url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.3.1+1" + sqflite_common: + dependency: transitive + description: + name: sqflite_common + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2+1" + sqlite3: + dependency: "direct main" + description: + name: sqlite3 + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.5" + sqlite3_flutter_libs: + dependency: "direct main" + description: + name: sqlite3_flutter_libs + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0" stack_trace: dependency: transitive description: name: stack_trace url: "https://pub.dartlang.org" source: hosted - version: "1.9.3" + version: "1.9.5" stream_channel: dependency: transitive description: @@ -732,7 +860,7 @@ packages: name: synchronized url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" + version: "2.2.0+2" term_glyph: dependency: transitive description: @@ -746,28 +874,28 @@ packages: name: test url: "https://pub.dartlang.org" source: hosted - version: "1.14.7" + version: "1.15.2" test_api: dependency: transitive description: name: test_api url: "https://pub.dartlang.org" source: hosted - version: "0.2.16" + version: "0.2.17" test_core: dependency: transitive description: name: test_core url: "https://pub.dartlang.org" source: hosted - version: "0.3.7" + version: "0.3.10" typed_data: dependency: transitive description: name: typed_data url: "https://pub.dartlang.org" source: hosted - version: "1.1.6" + version: "1.2.0" universal_html: dependency: "direct main" description: @@ -781,7 +909,7 @@ packages: name: universal_io url: "https://pub.dartlang.org" source: hosted - version: "0.8.6" + version: "1.0.1" unorm_dart: dependency: transitive description: @@ -795,28 +923,56 @@ packages: name: url_launcher url: "https://pub.dartlang.org" source: hosted - version: "5.4.1" + version: "5.7.2" + url_launcher_linux: + dependency: transitive + description: + name: url_launcher_linux + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+1" url_launcher_macos: dependency: transitive description: name: url_launcher_macos url: "https://pub.dartlang.org" source: hosted - version: "0.0.1+2" + version: "0.0.1+8" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "1.0.5" + version: "1.0.8" url_launcher_web: dependency: "direct main" description: name: url_launcher_web url: "https://pub.dartlang.org" source: hosted - version: "0.1.0+2" + version: "0.1.4+1" + url_launcher_windows: + dependency: transitive + description: + name: url_launcher_windows + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.1+1" + usage: + dependency: transitive + description: + name: usage + url: "https://pub.dartlang.org" + source: hosted + version: "3.4.2" + uuid: + dependency: transitive + description: + name: uuid + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.2" vector_math: dependency: transitive description: @@ -830,14 +986,14 @@ packages: name: vm_service url: "https://pub.dartlang.org" source: hosted - version: "2.3.1" + version: "4.2.0" watcher: dependency: transitive description: name: watcher url: "https://pub.dartlang.org" source: hosted - version: "0.9.7+13" + version: "0.9.7+15" web_socket_channel: dependency: transitive description: @@ -851,28 +1007,42 @@ packages: name: webkit_inspection_protocol url: "https://pub.dartlang.org" source: hosted - version: "0.5.3" + version: "0.7.3" webview_flutter: dependency: "direct main" description: name: webview_flutter url: "https://pub.dartlang.org" source: hosted - version: "0.3.19+9" + version: "0.3.24" + win32: + dependency: transitive + description: + name: win32 + url: "https://pub.dartlang.org" + source: hosted + version: "1.7.3" + xdg_directories: + dependency: transitive + description: + name: xdg_directories + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.0" xml: dependency: transitive description: name: xml url: "https://pub.dartlang.org" source: hosted - version: "3.6.1" + version: "4.5.1" yaml: dependency: transitive description: name: yaml url: "https://pub.dartlang.org" source: hosted - version: "2.2.0" + version: "2.2.1" zone_local: dependency: transitive description: @@ -881,5 +1051,5 @@ packages: source: hosted version: "0.1.2" sdks: - dart: ">=2.7.0 <3.0.0" - flutter: ">=1.12.13+hotfix.5 <2.0.0" + dart: ">=2.9.0 <3.0.0" + flutter: ">=1.20.0 <2.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index b6ca7ac..4e77677 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -11,7 +11,7 @@ description: Chat with your friends. # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 0.15.1+42 +version: 0.19.1+46 environment: sdk: ">=2.6.0 <3.0.0" @@ -28,14 +28,13 @@ dependencies: path: ../famedlysdk localstorage: ^3.0.1+4 - bubble: ^1.1.9+1 - memoryfilepicker: ^0.1.1 + memoryfilepicker: ^0.1.3 url_launcher: ^5.4.1 url_launcher_web: ^0.1.0 - flutter_advanced_networkimage: any - firebase_messaging: ^6.0.13 + cached_network_image: ^2.3.1 + firebase_messaging: ^7.0.2 flutter_local_notifications: ^1.4.3 - link_text: ^0.1.1 + matrix_link_text: ^0.1.5 path_provider: ^1.5.1 webview_flutter: ^0.3.19+9 share: ^0.6.3+5 @@ -44,24 +43,30 @@ dependencies: universal_html: ^1.1.12 receive_sharing_intent: ^1.3.3 flutter_slidable: ^0.5.4 - photo_view: ^0.9.2 + photo_view: ^0.10.2 flutter_sound: ^2.1.1 open_file: ^3.0.1 mime_type: ^0.3.0 bot_toast: ^3.0.0 - flutter_matrix_html: ^0.1.1 - moor: ^3.0.2 + flutter_matrix_html: ^0.1.5 + moor: ^3.3.1 + sqlite3_flutter_libs: ^0.2.0 + sqlite3: ^0.1.4 random_string: ^2.0.1 flutter_typeahead: ^1.8.1 flutter_olm: ^1.0.1 - - intl: ^0.16.0 + intl: ^0.16.1 intl_translation: ^0.17.9 flutter_localizations: sdk: flutter - - moor_ffi: ^0.5.0 # 0.6.0 and up have a bug that it doesn't build with --profile, see https://github.com/simolus3/moor/issues/581 sqflite: ^1.1.7 # Still used to obtain the database location + native_imaging: + git: + url: https://gitlab.com/famedly/libraries/native_imaging.git + ref: master + flutter_blurhash: ^0.5.0 + sentry: ">=3.0.0 <4.0.0" + scroll_to_index: ^1.0.6 dev_dependencies: flutter_test: @@ -80,6 +85,9 @@ flutter_icons: # The following section is specific to Flutter. flutter: + # Adds code generation (synthetic package) support + generate: true + # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in diff --git a/test/matrix_identifier_string_extension_test.dart b/test/matrix_identifier_string_extension_test.dart new file mode 100644 index 0000000..06db66d --- /dev/null +++ b/test/matrix_identifier_string_extension_test.dart @@ -0,0 +1,31 @@ +import 'package:flutter_test/flutter_test.dart'; +import 'package:fluffychat/utils/matrix_identifier_string_extension.dart'; + +void main() { + group('Matrix Identifier String Extension', () { + test('parseIdentifierIntoParts', () { + var res = '#alias:beep'.parseIdentifierIntoParts(); + expect(res.roomIdOrAlias, '#alias:beep'); + expect(res.eventId, null); + expect(res.queryString, null); + res = 'blha'.parseIdentifierIntoParts(); + expect(res, null); + res = '#alias:beep/\$event'.parseIdentifierIntoParts(); + expect(res.roomIdOrAlias, '#alias:beep'); + expect(res.eventId, '\$event'); + expect(res.queryString, null); + res = '#alias:beep?blubb'.parseIdentifierIntoParts(); + expect(res.roomIdOrAlias, '#alias:beep'); + expect(res.eventId, null); + expect(res.queryString, 'blubb'); + res = '#alias:beep/\$event?blubb'.parseIdentifierIntoParts(); + expect(res.roomIdOrAlias, '#alias:beep'); + expect(res.eventId, '\$event'); + expect(res.queryString, 'blubb'); + res = '#/\$?:beep/\$event?blubb?b'.parseIdentifierIntoParts(); + expect(res.roomIdOrAlias, '#/\$?:beep'); + expect(res.eventId, '\$event'); + expect(res.queryString, 'blubb?b'); + }); + }); +} 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..a18ebc9 --- /dev/null +++ b/windows/CMakeLists.txt @@ -0,0 +1,95 @@ +cmake_minimum_required(VERSION 3.15) +project(fluffychat LANGUAGES CXX) + +set(BINARY_NAME "fluffychat") + +cmake_policy(SET CMP0063 NEW) + +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") + +# Configure build options. +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() + +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. +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() + +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") + +# Flutter library and tool build rules. +add_subdirectory(${FLUTTER_MANAGED_DIR}) + +# Application build +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/.template_version b/windows/flutter/.template_version new file mode 100644 index 0000000..7ed6ff8 --- /dev/null +++ b/windows/flutter/.template_version @@ -0,0 +1 @@ +5 diff --git a/windows/flutter/CMakeLists.txt b/windows/flutter/CMakeLists.txt new file mode 100644 index 0000000..98bb564 --- /dev/null +++ b/windows/flutter/CMakeLists.txt @@ -0,0 +1,99 @@ +cmake_minimum_required(VERSION 3.15) + +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") + +# === 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" +) +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 + "engine_method_result.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. +add_custom_command( + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} + ${CPP_WRAPPER_SOURCES_CORE} ${CPP_WRAPPER_SOURCES_PLUGIN} + ${CPP_WRAPPER_SOURCES_APP} + ${CMAKE_CURRENT_BINARY_DIR}/_phony_ + COMMAND ${CMAKE_COMMAND} -E env + ${FLUTTER_TOOL_ENVIRONMENT} + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.bat" + windows-x64 $ +) +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..ddfcf7c --- /dev/null +++ b/windows/flutter/generated_plugin_registrant.cc @@ -0,0 +1,12 @@ +// +// Generated file. Do not edit. +// + +#include "generated_plugin_registrant.h" + +#include + +void RegisterPlugins(flutter::PluginRegistry* registry) { + UrlLauncherPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("UrlLauncherPlugin")); +} diff --git a/windows/flutter/generated_plugin_registrant.h b/windows/flutter/generated_plugin_registrant.h new file mode 100644 index 0000000..9846246 --- /dev/null +++ b/windows/flutter/generated_plugin_registrant.h @@ -0,0 +1,13 @@ +// +// Generated file. Do not edit. +// + +#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..411af46 --- /dev/null +++ b/windows/flutter/generated_plugins.cmake @@ -0,0 +1,16 @@ +# +# Generated file, do not edit. +# + +list(APPEND FLUTTER_PLUGIN_LIST + url_launcher_windows +) + +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) diff --git a/windows/runner/CMakeLists.txt b/windows/runner/CMakeLists.txt new file mode 100644 index 0000000..83e5aca --- /dev/null +++ b/windows/runner/CMakeLists.txt @@ -0,0 +1,18 @@ +cmake_minimum_required(VERSION 3.15) +project(runner LANGUAGES CXX) + +add_executable(${BINARY_NAME} WIN32 + "flutter_window.cpp" + "main.cpp" + "run_loop.cpp" + "utils.cpp" + "win32_window.cpp" + "window_configuration.cpp" + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" + "Runner.rc" + "runner.exe.manifest" +) +apply_standard_settings(${BINARY_NAME}) +target_link_libraries(${BINARY_NAME} PRIVATE flutter flutter_wrapper_app) +target_include_directories(${BINARY_NAME} PRIVATE "${CMAKE_SOURCE_DIR}") +add_dependencies(${BINARY_NAME} flutter_assemble) diff --git a/windows/runner/Runner.rc b/windows/runner/Runner.rc new file mode 100644 index 0000000..7d86499 --- /dev/null +++ b/windows/runner/Runner.rc @@ -0,0 +1,70 @@ +// 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" + +#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..fe980cf --- /dev/null +++ b/windows/runner/flutter_window.cpp @@ -0,0 +1,29 @@ +#include "flutter_window.h" + +#include "flutter/generated_plugin_registrant.h" + +FlutterWindow::FlutterWindow(RunLoop* run_loop, + const flutter::DartProject& project) + : run_loop_(run_loop), project_(project) {} + +FlutterWindow::~FlutterWindow() {} + +void FlutterWindow::OnCreate() { + Win32Window::OnCreate(); + + // The size here is arbitrary since SetChildContent will resize it. + flutter_controller_ = + std::make_unique(100, 100, project_); + RegisterPlugins(flutter_controller_.get()); + run_loop_->RegisterFlutterInstance(flutter_controller_.get()); + SetChildContent(flutter_controller_->view()->GetNativeWindow()); +} + +void FlutterWindow::OnDestroy() { + if (flutter_controller_) { + run_loop_->UnregisterFlutterInstance(flutter_controller_.get()); + flutter_controller_ = nullptr; + } + + Win32Window::OnDestroy(); +} diff --git a/windows/runner/flutter_window.h b/windows/runner/flutter_window.h new file mode 100644 index 0000000..4f41e16 --- /dev/null +++ b/windows/runner/flutter_window.h @@ -0,0 +1,37 @@ +#ifndef FLUTTER_WINDOW_H_ +#define FLUTTER_WINDOW_H_ + +#include +#include + +#include "run_loop.h" +#include "win32_window.h" + +#include + +// A window that does nothing but host a Flutter view. +class FlutterWindow : public Win32Window { + public: + // Creates a new FlutterWindow driven by the |run_loop|, hosting a + // Flutter view running |project|. + explicit FlutterWindow(RunLoop* run_loop, + const flutter::DartProject& project); + virtual ~FlutterWindow(); + + protected: + // Win32Window: + void OnCreate() override; + void OnDestroy() override; + + private: + // The run loop driving events for this window. + RunLoop* run_loop_; + + // The project to run. + flutter::DartProject project_; + + // The Flutter instance hosted by this window. + std::unique_ptr flutter_controller_; +}; + +#endif // FLUTTER_WINDOW_H_ diff --git a/windows/runner/main.cpp b/windows/runner/main.cpp new file mode 100644 index 0000000..11b48e9 --- /dev/null +++ b/windows/runner/main.cpp @@ -0,0 +1,37 @@ +#include +#include +#include + +#include "flutter_window.h" +#include "run_loop.h" +#include "utils.h" +#include "window_configuration.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); + + RunLoop run_loop; + + flutter::DartProject project(L"data"); + FlutterWindow window(&run_loop, project); + Win32Window::Point origin(kFlutterWindowOriginX, kFlutterWindowOriginY); + Win32Window::Size size(kFlutterWindowWidth, kFlutterWindowHeight); + if (!window.CreateAndShow(kFlutterWindowTitle, origin, size)) { + return EXIT_FAILURE; + } + window.SetQuitOnClose(true); + + run_loop.Run(); + + ::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 0000000..c04e20c Binary files /dev/null and b/windows/runner/resources/app_icon.ico differ diff --git a/windows/runner/run_loop.cpp b/windows/runner/run_loop.cpp new file mode 100644 index 0000000..f91d6d4 --- /dev/null +++ b/windows/runner/run_loop.cpp @@ -0,0 +1,70 @@ +#include "run_loop.h" + +#include +// Don't stomp std::min/std::max +#undef max +#undef min + +#include + +RunLoop::RunLoop() {} + +RunLoop::~RunLoop() {} + +void RunLoop::Run() { + bool keep_running = true; + TimePoint next_flutter_event_time = TimePoint::clock::now(); + while (keep_running) { + std::chrono::nanoseconds wait_duration = + std::max(std::chrono::nanoseconds(0), + next_flutter_event_time - TimePoint::clock::now()); + ::MsgWaitForMultipleObjects( + 0, nullptr, FALSE, static_cast(wait_duration.count() / 1000), + QS_ALLINPUT); + bool processed_events = false; + MSG message; + // All pending Windows messages must be processed; MsgWaitForMultipleObjects + // won't return again for items left in the queue after PeekMessage. + while (::PeekMessage(&message, nullptr, 0, 0, PM_REMOVE)) { + processed_events = true; + if (message.message == WM_QUIT) { + keep_running = false; + break; + } + ::TranslateMessage(&message); + ::DispatchMessage(&message); + // Allow Flutter to process messages each time a Windows message is + // processed, to prevent starvation. + next_flutter_event_time = + std::min(next_flutter_event_time, ProcessFlutterMessages()); + } + // If the PeekMessage loop didn't run, process Flutter messages. + if (!processed_events) { + next_flutter_event_time = + std::min(next_flutter_event_time, ProcessFlutterMessages()); + } + } +} + +void RunLoop::RegisterFlutterInstance( + flutter::FlutterViewController* flutter_instance) { + flutter_instances_.insert(flutter_instance); +} + +void RunLoop::UnregisterFlutterInstance( + flutter::FlutterViewController* flutter_instance) { + flutter_instances_.erase(flutter_instance); +} + +RunLoop::TimePoint RunLoop::ProcessFlutterMessages() { + TimePoint next_event_time = TimePoint::max(); + for (auto flutter_controller : flutter_instances_) { + std::chrono::nanoseconds wait_duration = + flutter_controller->ProcessMessages(); + if (wait_duration != std::chrono::nanoseconds::max()) { + next_event_time = + std::min(next_event_time, TimePoint::clock::now() + wait_duration); + } + } + return next_event_time; +} diff --git a/windows/runner/run_loop.h b/windows/runner/run_loop.h new file mode 100644 index 0000000..442a58e --- /dev/null +++ b/windows/runner/run_loop.h @@ -0,0 +1,40 @@ +#ifndef RUN_LOOP_H_ +#define RUN_LOOP_H_ + +#include + +#include +#include + +// A runloop that will service events for Flutter instances as well +// as native messages. +class RunLoop { + public: + RunLoop(); + ~RunLoop(); + + // Prevent copying + RunLoop(RunLoop const&) = delete; + RunLoop& operator=(RunLoop const&) = delete; + + // Runs the run loop until the application quits. + void Run(); + + // Registers the given Flutter instance for event servicing. + void RegisterFlutterInstance( + flutter::FlutterViewController* flutter_instance); + + // Unregisters the given Flutter instance from event servicing. + void UnregisterFlutterInstance( + flutter::FlutterViewController* flutter_instance); + + private: + using TimePoint = std::chrono::steady_clock::time_point; + + // Processes all currently pending messages for registered Flutter instances. + TimePoint ProcessFlutterMessages(); + + std::set flutter_instances_; +}; + +#endif // RUN_LOOP_H_ diff --git a/windows/runner/runner.exe.manifest b/windows/runner/runner.exe.manifest new file mode 100644 index 0000000..c977c4a --- /dev/null +++ b/windows/runner/runner.exe.manifest @@ -0,0 +1,20 @@ + + + + + PerMonitorV2 + + + + + + + + + + + + + + + diff --git a/windows/runner/utils.cpp b/windows/runner/utils.cpp new file mode 100644 index 0000000..37501e5 --- /dev/null +++ b/windows/runner/utils.cpp @@ -0,0 +1,22 @@ +#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(); + } +} diff --git a/windows/runner/utils.h b/windows/runner/utils.h new file mode 100644 index 0000000..d247a66 --- /dev/null +++ b/windows/runner/utils.h @@ -0,0 +1,8 @@ +#ifndef CONSOLE_UTILS_H_ +#define CONSOLE_UTILS_H_ + +// Creates a console for the process, and redirects stdout and stderr to +// it for both the runner and the Flutter library. +void CreateAndAttachConsole(); + +#endif // CONSOLE_UTILS_H_ diff --git a/windows/runner/win32_window.cpp b/windows/runner/win32_window.cpp new file mode 100644 index 0000000..677a9a6 --- /dev/null +++ b/windows/runner/win32_window.cpp @@ -0,0 +1,249 @@ +#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); + + OnCreate(); + + return window != nullptr; +} + +// 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 { + auto window = + reinterpret_cast(GetWindowLongPtr(hwnd, GWLP_USERDATA)); + + if (window == nullptr) { + return 0; + } + + 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; + GetClientRect(hwnd, &rect); + 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; + + // Messages that are directly forwarded to embedding. + case WM_FONTCHANGE: + SendMessage(child_content_, WM_FONTCHANGE, NULL, NULL); + 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; + GetClientRect(window_handle_, &frame); + + MoveWindow(content, frame.left, frame.top, frame.right - frame.left, + frame.bottom - frame.top, true); + + SetFocus(child_content_); +} + +HWND Win32Window::GetHandle() { + return window_handle_; +} + +void Win32Window::SetQuitOnClose(bool quit_on_close) { + quit_on_close_ = quit_on_close; +} + +void Win32Window::OnCreate() { + // No-op; provided for subclasses. +} + +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..5cbb5d5 --- /dev/null +++ b/windows/runner/win32_window.h @@ -0,0 +1,96 @@ +#ifndef WIN32_WINDOW_H_ +#define WIN32_WINDOW_H_ + +#include +#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); + + 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. + virtual void 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 // WIN32_WINDOW_H_ diff --git a/windows/runner/window_configuration.cpp b/windows/runner/window_configuration.cpp new file mode 100644 index 0000000..154f85b --- /dev/null +++ b/windows/runner/window_configuration.cpp @@ -0,0 +1,7 @@ +#include "window_configuration.h" + +const wchar_t* kFlutterWindowTitle = L"fluffychat"; +const unsigned int kFlutterWindowOriginX = 10; +const unsigned int kFlutterWindowOriginY = 10; +const unsigned int kFlutterWindowWidth = 1280; +const unsigned int kFlutterWindowHeight = 720; diff --git a/windows/runner/window_configuration.h b/windows/runner/window_configuration.h new file mode 100644 index 0000000..ea5cead --- /dev/null +++ b/windows/runner/window_configuration.h @@ -0,0 +1,18 @@ +#ifndef WINDOW_CONFIGURATION_ +#define WINDOW_CONFIGURATION_ + +// This is a temporary approach to isolate changes that people are likely to +// make to main.cpp, where the APIs are still in flux. This will reduce the +// need to resolve conflicts or re-create changes slightly differently every +// time the Windows Flutter API surface changes. +// +// Longer term there should be simpler configuration options for common +// customizations like this, without requiring native code changes. + +extern const wchar_t* kFlutterWindowTitle; +extern const unsigned int kFlutterWindowOriginX; +extern const unsigned int kFlutterWindowOriginY; +extern const unsigned int kFlutterWindowWidth; +extern const unsigned int kFlutterWindowHeight; + +#endif // WINDOW_CONFIGURATION_