diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 501aa6784a..8fbc5602fe 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -5,6 +5,6 @@
- [ ] Changes has been tested on an Android device or Android emulator with API 21
- [ ] UI change has been tested on both light and dark themes
- [ ] Pull request is based on the develop branch
-- [ ] Pull request includes a new file under ./newsfragment. See https://github.com/vector-im/element-android/blob/develop/CONTRIBUTING.md#changelog
+- [ ] Pull request includes a new file under ./changelog.d. See https://github.com/vector-im/element-android/blob/develop/CONTRIBUTING.md#changelog
- [ ] Pull request includes screenshots or videos if containing UI changes
- [ ] Pull request includes a [sign off](https://github.com/matrix-org/synapse/blob/master/CONTRIBUTING.md#sign-off)
diff --git a/.gitignore b/.gitignore
index 345e13575f..878e9bd84a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,6 +12,8 @@
.externalNativeBuild
/tmp
+/fastlane/private
+/fastlane/report.xml
ktlint
diff --git a/CHANGES.md b/CHANGES.md
index 1849bde397..1f4c680f53 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,3 +1,33 @@
+Changes in Element v1.1.10 (2021-06-18)
+=======================================
+
+Features ✨
+----------
+ - Migrate DefaultTypingService, KeysImporter and KeysExporter to coroutines ([#2449](https://github.com/vector-im/element-android/issues/2449))
+ - Update Message Composer design ([#3182](https://github.com/vector-im/element-android/issues/3182))
+ - Cleanup Epoxy items, and debounce all the clicks ([#3435](https://github.com/vector-im/element-android/issues/3435))
+ - Adds support for receiving MSC3086 Asserted Identity events. ([#3451](https://github.com/vector-im/element-android/issues/3451))
+ - Migrate to new colors and cleanup the style and theme. Now exported in module :library:ui-styles
+ Ref: https://material.io/blog/migrate-android-material-components ([#3459](https://github.com/vector-im/element-android/issues/3459))
+ - Add option to set aliases for public spaces ([#3483](https://github.com/vector-im/element-android/issues/3483))
+ - Add beta warning to private space creation flow ([#3485](https://github.com/vector-im/element-android/issues/3485))
+ - User defined top level spaces ordering ([#3501](https://github.com/vector-im/element-android/issues/3501))
+
+Bugfixes 🐛
+----------
+ - Fix new DMs not always marked as such ([#3333](https://github.com/vector-im/element-android/issues/3333))
+
+SDK API changes ⚠️
+------------------
+ - Splits SessionAccountDataService and RoomAccountDataService and offers to query RoomAccountDataEvent at the session level. ([#3479](https://github.com/vector-im/element-android/issues/3479))
+
+Other changes
+-------------
+ - Move the ability to start a call from dialpad directly to a dedicated tab in the home screen. ([#3457](https://github.com/vector-im/element-android/issues/3457))
+ - VoIP: Change hold direction to send-only. ([#3467](https://github.com/vector-im/element-android/issues/3467))
+ - Some improvements on DialPad (cursor edition, paste number, small fixes). ([#3516](https://github.com/vector-im/element-android/issues/3516))
+
+
Changes in Element v1.1.9 (2021-06-02)
======================================
@@ -44,6 +74,9 @@ Other changes:
- Add documentation on LoginWizard and RegistrationWizard (#3303)
- Setup towncrier tool (#3293)
+ Security:
+ - Element Android shares name of E2EE files with homeserver (#3387)
+
Changes in Element 1.1.7 (2021-05-12)
===================================================
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 7e1758077b..cbff8652cf 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -53,7 +53,7 @@ This project is full Kotlin. Please do not write Java classes.
### Changelog
-Please create at least one file under ./newsfragment containing details about your change. Towncrier will be used when preparing the release.
+Please create at least one file under ./changelog.d containing details about your change. Towncrier will be used when preparing the release.
Towncrier says to use the PR number for the filename, but the issue number is also fine.
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000000..7a118b49be
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,3 @@
+source "https://rubygems.org"
+
+gem "fastlane"
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 0000000000..6045f55496
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,205 @@
+GEM
+ remote: https://rubygems.org/
+ specs:
+ CFPropertyList (3.0.3)
+ addressable (2.7.0)
+ public_suffix (>= 2.0.2, < 5.0)
+ artifactory (3.0.15)
+ atomos (0.1.3)
+ aws-eventstream (1.1.1)
+ aws-partitions (1.462.0)
+ aws-sdk-core (3.114.0)
+ aws-eventstream (~> 1, >= 1.0.2)
+ aws-partitions (~> 1, >= 1.239.0)
+ aws-sigv4 (~> 1.1)
+ jmespath (~> 1.0)
+ aws-sdk-kms (1.43.0)
+ aws-sdk-core (~> 3, >= 3.112.0)
+ aws-sigv4 (~> 1.1)
+ aws-sdk-s3 (1.95.1)
+ aws-sdk-core (~> 3, >= 3.112.0)
+ aws-sdk-kms (~> 1)
+ aws-sigv4 (~> 1.1)
+ aws-sigv4 (1.2.3)
+ aws-eventstream (~> 1, >= 1.0.2)
+ babosa (1.0.4)
+ claide (1.0.3)
+ colored (1.2)
+ colored2 (3.1.2)
+ commander (4.6.0)
+ highline (~> 2.0.0)
+ declarative (0.0.20)
+ digest-crc (0.6.3)
+ rake (>= 12.0.0, < 14.0.0)
+ domain_name (0.5.20190701)
+ unf (>= 0.0.5, < 1.0.0)
+ dotenv (2.7.6)
+ emoji_regex (3.2.2)
+ excon (0.81.0)
+ faraday (1.4.2)
+ faraday-em_http (~> 1.0)
+ faraday-em_synchrony (~> 1.0)
+ faraday-excon (~> 1.1)
+ faraday-net_http (~> 1.0)
+ faraday-net_http_persistent (~> 1.1)
+ multipart-post (>= 1.2, < 3)
+ ruby2_keywords (>= 0.0.4)
+ faraday-cookie_jar (0.0.7)
+ faraday (>= 0.8.0)
+ http-cookie (~> 1.0.0)
+ faraday-em_http (1.0.0)
+ faraday-em_synchrony (1.0.0)
+ faraday-excon (1.1.0)
+ faraday-net_http (1.0.1)
+ faraday-net_http_persistent (1.1.0)
+ faraday_middleware (1.0.0)
+ faraday (~> 1.0)
+ fastimage (2.2.3)
+ fastlane (2.184.0)
+ CFPropertyList (>= 2.3, < 4.0.0)
+ addressable (>= 2.3, < 3.0.0)
+ artifactory (~> 3.0)
+ aws-sdk-s3 (~> 1.0)
+ babosa (>= 1.0.3, < 2.0.0)
+ bundler (>= 1.12.0, < 3.0.0)
+ colored
+ commander (~> 4.6)
+ dotenv (>= 2.1.1, < 3.0.0)
+ emoji_regex (>= 0.1, < 4.0)
+ excon (>= 0.71.0, < 1.0.0)
+ faraday (~> 1.0)
+ faraday-cookie_jar (~> 0.0.6)
+ faraday_middleware (~> 1.0)
+ fastimage (>= 2.1.0, < 3.0.0)
+ gh_inspector (>= 1.1.2, < 2.0.0)
+ google-apis-androidpublisher_v3 (~> 0.1)
+ google-apis-playcustomapp_v1 (~> 0.1)
+ google-cloud-storage (~> 1.31)
+ highline (~> 2.0)
+ json (< 3.0.0)
+ jwt (>= 2.1.0, < 3)
+ mini_magick (>= 4.9.4, < 5.0.0)
+ multipart-post (~> 2.0.0)
+ naturally (~> 2.2)
+ plist (>= 3.1.0, < 4.0.0)
+ rubyzip (>= 2.0.0, < 3.0.0)
+ security (= 0.1.3)
+ simctl (~> 1.6.3)
+ terminal-notifier (>= 2.0.0, < 3.0.0)
+ terminal-table (>= 1.4.5, < 2.0.0)
+ tty-screen (>= 0.6.3, < 1.0.0)
+ tty-spinner (>= 0.8.0, < 1.0.0)
+ word_wrap (~> 1.0.0)
+ xcodeproj (>= 1.13.0, < 2.0.0)
+ xcpretty (~> 0.3.0)
+ xcpretty-travis-formatter (>= 0.0.3)
+ gh_inspector (1.1.3)
+ google-apis-androidpublisher_v3 (0.4.0)
+ google-apis-core (~> 0.1)
+ google-apis-core (0.3.0)
+ addressable (~> 2.5, >= 2.5.1)
+ googleauth (~> 0.14)
+ httpclient (>= 2.8.1, < 3.0)
+ mini_mime (~> 1.0)
+ representable (~> 3.0)
+ retriable (>= 2.0, < 4.0)
+ rexml
+ signet (~> 0.14)
+ webrick
+ google-apis-iamcredentials_v1 (0.4.0)
+ google-apis-core (~> 0.1)
+ google-apis-playcustomapp_v1 (0.3.0)
+ google-apis-core (~> 0.1)
+ google-apis-storage_v1 (0.4.0)
+ google-apis-core (~> 0.1)
+ google-cloud-core (1.6.0)
+ google-cloud-env (~> 1.0)
+ google-cloud-errors (~> 1.0)
+ google-cloud-env (1.5.0)
+ faraday (>= 0.17.3, < 2.0)
+ google-cloud-errors (1.1.0)
+ google-cloud-storage (1.31.1)
+ addressable (~> 2.5)
+ digest-crc (~> 0.4)
+ google-apis-iamcredentials_v1 (~> 0.1)
+ google-apis-storage_v1 (~> 0.1)
+ google-cloud-core (~> 1.2)
+ googleauth (~> 0.9)
+ mini_mime (~> 1.0)
+ googleauth (0.16.2)
+ faraday (>= 0.17.3, < 2.0)
+ jwt (>= 1.4, < 3.0)
+ memoist (~> 0.16)
+ multi_json (~> 1.11)
+ os (>= 0.9, < 2.0)
+ signet (~> 0.14)
+ highline (2.0.3)
+ http-cookie (1.0.3)
+ domain_name (~> 0.5)
+ httpclient (2.8.3)
+ jmespath (1.4.0)
+ json (2.5.1)
+ jwt (2.2.3)
+ memoist (0.16.2)
+ mini_magick (4.11.0)
+ mini_mime (1.1.0)
+ multi_json (1.15.0)
+ multipart-post (2.0.0)
+ nanaimo (0.3.0)
+ naturally (2.2.1)
+ os (1.1.1)
+ plist (3.6.0)
+ public_suffix (4.0.6)
+ rake (13.0.3)
+ representable (3.1.1)
+ declarative (< 0.1.0)
+ trailblazer-option (>= 0.1.1, < 0.2.0)
+ uber (< 0.2.0)
+ retriable (3.1.2)
+ rexml (3.2.5)
+ rouge (2.0.7)
+ ruby2_keywords (0.0.4)
+ rubyzip (2.3.0)
+ security (0.1.3)
+ signet (0.15.0)
+ addressable (~> 2.3)
+ faraday (>= 0.17.3, < 2.0)
+ jwt (>= 1.5, < 3.0)
+ multi_json (~> 1.10)
+ simctl (1.6.8)
+ CFPropertyList
+ naturally
+ terminal-notifier (2.0.0)
+ terminal-table (1.8.0)
+ unicode-display_width (~> 1.1, >= 1.1.1)
+ trailblazer-option (0.1.1)
+ tty-cursor (0.7.1)
+ tty-screen (0.8.1)
+ tty-spinner (0.9.3)
+ tty-cursor (~> 0.7)
+ uber (0.1.0)
+ unf (0.1.4)
+ unf_ext
+ unf_ext (0.0.7.7)
+ unicode-display_width (1.7.0)
+ webrick (1.7.0)
+ word_wrap (1.0.0)
+ xcodeproj (1.19.0)
+ CFPropertyList (>= 2.3.3, < 4.0)
+ atomos (~> 0.1.3)
+ claide (>= 1.0.2, < 2.0)
+ colored2 (~> 3.1)
+ nanaimo (~> 0.3.0)
+ xcpretty (0.3.0)
+ rouge (~> 2.0.7)
+ xcpretty-travis-formatter (1.0.1)
+ xcpretty (~> 0.2, >= 0.0.7)
+
+PLATFORMS
+ x86_64-darwin-20
+
+DEPENDENCIES
+ fastlane
+
+BUNDLED WITH
+ 2.2.15
diff --git a/attachment-viewer/build.gradle b/attachment-viewer/build.gradle
index 0f3817d983..4b95b20029 100644
--- a/attachment-viewer/build.gradle
+++ b/attachment-viewer/build.gradle
@@ -47,6 +47,8 @@ android {
}
dependencies {
+ implementation project(":library:ui-styles")
+
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
implementation 'io.reactivex.rxjava2:rxkotlin:2.4.0'
@@ -55,7 +57,7 @@ dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.5.0'
implementation 'androidx.appcompat:appcompat:1.3.0'
- implementation "androidx.recyclerview:recyclerview:1.2.0"
+ implementation "androidx.recyclerview:recyclerview:1.2.1"
implementation 'com.google.android.material:material:1.3.0'
}
\ No newline at end of file
diff --git a/attachment-viewer/src/main/res/layout/item_image_attachment.xml b/attachment-viewer/src/main/res/layout/item_image_attachment.xml
index 91a009df2a..0f9a90e91c 100644
--- a/attachment-viewer/src/main/res/layout/item_image_attachment.xml
+++ b/attachment-viewer/src/main/res/layout/item_image_attachment.xml
@@ -1,22 +1,18 @@
+ android:layout_height="match_parent">
+ android:layout_height="match_parent" />
+ android:layout_centerInParent="true" />
\ No newline at end of file
diff --git a/attachment-viewer/src/main/res/layout/item_video_attachment.xml b/attachment-viewer/src/main/res/layout/item_video_attachment.xml
index 29f01650fd..7dd13ea460 100644
--- a/attachment-viewer/src/main/res/layout/item_video_attachment.xml
+++ b/attachment-viewer/src/main/res/layout/item_video_attachment.xml
@@ -1,8 +1,8 @@
+ android:layout_height="match_parent">
+ android:layout_centerInParent="true"
+ android:visibility="gone"
+ tools:visibility="visible" />
diff --git a/attachment-viewer/src/main/res/values/colors.xml b/attachment-viewer/src/main/res/values/colors.xml
deleted file mode 100644
index 7ceef40881..0000000000
--- a/attachment-viewer/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
- #80000000
-
-
\ No newline at end of file
diff --git a/build.gradle b/build.gradle
index 881cd340f1..b213066423 100644
--- a/build.gradle
+++ b/build.gradle
@@ -15,7 +15,7 @@ buildscript {
classpath 'com.android.tools.build:gradle:4.2.1'
classpath 'com.google.gms:google-services:4.3.8'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
- classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.2.0'
+ classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:3.3'
classpath 'com.google.android.gms:oss-licenses-plugin:0.10.4'
classpath "com.likethesalad.android:string-reference:1.2.2"
diff --git a/changelog.d/.gitignore b/changelog.d/.gitignore
new file mode 100644
index 0000000000..b722e9e13e
--- /dev/null
+++ b/changelog.d/.gitignore
@@ -0,0 +1 @@
+!.gitignore
\ No newline at end of file
diff --git a/fastlane/Appfile b/fastlane/Appfile
new file mode 100644
index 0000000000..25273b0b09
--- /dev/null
+++ b/fastlane/Appfile
@@ -0,0 +1,2 @@
+json_key_file("./fastlane/private/api-8525453667099313774-565354-aca0e6153603.json")
+package_name("im.vector.app")
diff --git a/fastlane/Fastfile b/fastlane/Fastfile
new file mode 100644
index 0000000000..85e3d777ac
--- /dev/null
+++ b/fastlane/Fastfile
@@ -0,0 +1,60 @@
+# This file contains the fastlane.tools configuration
+# You can find the documentation at https://docs.fastlane.tools
+#
+# For a list of all available actions, check out
+#
+# https://docs.fastlane.tools/actions
+#
+# For a list of all available plugins, check out
+#
+# https://docs.fastlane.tools/plugins/available-plugins
+#
+
+# Uncomment the line if you want fastlane to automatically update itself
+# update_fastlane
+
+default_platform(:android)
+
+platform :android do
+ desc "Runs all the tests"
+ lane :test do
+ gradle(task: "test")
+ end
+
+ desc "Submit a new Beta Build to Crashlytics Beta"
+ lane :beta do
+ gradle(task: "clean assembleRelease")
+ crashlytics
+
+ # sh "your_script.sh"
+ # You can also use other beta testing services here
+ end
+
+ desc "Deploy a new version to the Google Play"
+ lane :deploy do
+ gradle(task: "clean assembleRelease")
+ upload_to_play_store
+ end
+
+ desc "Deploy Google Play metadata"
+ lane :deployMeta do
+ # Doc: https://docs.fastlane.tools/actions/upload_to_play_store/
+ upload_to_play_store(
+ skip_upload_apk: true,
+ skip_upload_aab: true,
+ skip_upload_images: true,
+ skip_upload_screenshots: true,
+ skip_upload_changelogs: true,
+ # Set to true to not update the PlayStore
+ validate_only: false
+ )
+ end
+
+ desc "Get version code"
+ lane :getVersionCode do
+ versions = google_play_track_version_codes(track: "production")
+ puts(versions)
+ version_code = versions[0]
+ puts(version_code)
+ end
+end
diff --git a/fastlane/README.md b/fastlane/README.md
new file mode 100644
index 0000000000..54d3a005a6
--- /dev/null
+++ b/fastlane/README.md
@@ -0,0 +1,49 @@
+fastlane documentation
+================
+# Installation
+
+Make sure you have the latest version of the Xcode command line tools installed:
+
+```
+xcode-select --install
+```
+
+Install _fastlane_ using
+```
+[sudo] gem install fastlane -NV
+```
+or alternatively using `brew install fastlane`
+
+# Available Actions
+## Android
+### android test
+```
+fastlane android test
+```
+Runs all the tests
+### android beta
+```
+fastlane android beta
+```
+Submit a new Beta Build to Crashlytics Beta
+### android deploy
+```
+fastlane android deploy
+```
+Deploy a new version to the Google Play
+### android deployMeta
+```
+fastlane android deployMeta
+```
+Deploy Google Play metadata
+### android getVersionCode
+```
+fastlane android getVersionCode
+```
+Get version code
+
+----
+
+This README.md is auto-generated and will be re-generated every time [fastlane](https://fastlane.tools) is run.
+More information about fastlane can be found on [fastlane.tools](https://fastlane.tools).
+The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools).
diff --git a/fastlane/metadata/android/cs/changelogs/40100100.txt b/fastlane/metadata/android/cs-CZ/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40100100.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40100110.txt b/fastlane/metadata/android/cs-CZ/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40100110.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40100120.txt b/fastlane/metadata/android/cs-CZ/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40100120.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40100130.txt b/fastlane/metadata/android/cs-CZ/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40100130.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40100140.txt b/fastlane/metadata/android/cs-CZ/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40100140.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40100150.txt b/fastlane/metadata/android/cs-CZ/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40100150.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40100160.txt b/fastlane/metadata/android/cs-CZ/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40100160.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40100170.txt b/fastlane/metadata/android/cs-CZ/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40100170.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40101000.txt b/fastlane/metadata/android/cs-CZ/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40101000.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40101010.txt b/fastlane/metadata/android/cs-CZ/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40101010.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40101020.txt b/fastlane/metadata/android/cs-CZ/changelogs/40101020.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40101020.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40101020.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40101030.txt b/fastlane/metadata/android/cs-CZ/changelogs/40101030.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40101030.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40101030.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40101040.txt b/fastlane/metadata/android/cs-CZ/changelogs/40101040.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40101040.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40101040.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40101050.txt b/fastlane/metadata/android/cs-CZ/changelogs/40101050.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40101050.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40101050.txt
diff --git a/fastlane/metadata/android/cs/changelogs/40101060.txt b/fastlane/metadata/android/cs-CZ/changelogs/40101060.txt
similarity index 100%
rename from fastlane/metadata/android/cs/changelogs/40101060.txt
rename to fastlane/metadata/android/cs-CZ/changelogs/40101060.txt
diff --git a/fastlane/metadata/android/cs-CZ/full_description.txt b/fastlane/metadata/android/cs-CZ/full_description.txt
new file mode 100644
index 0000000000..d169c077e1
--- /dev/null
+++ b/fastlane/metadata/android/cs-CZ/full_description.txt
@@ -0,0 +1,39 @@
+Element je zabezpečený komunikátor a zároveň aplikace pro týmovou spolupráci, která je ideální pro skupinové chaty při práci na dálku. Tato chatovací aplikace využívá end-to-end šifrování a poskytuje výkonné videokonference, sdílení souborů a hlasové hovory.
+
+Mezi funkce aplikace Element patří:
+- Pokročilé nástroje pro online komunikaci
+- Plně šifrované zprávy umožňující bezpečnější firemní komunikaci i pro pracovníky na dálku
+- Decentralizovaný chat založený na open source frameworku Matrix
+- Bezpečné sdílení souborů se šifrovanými daty při správě projektů
+- Videochaty s funkcí Voice over IP a sdílením obrazovky
+- Snadná integrace s oblíbenými nástroji pro online spolupráci, nástroji pro správu projektů, službami VoIP a dalšími aplikacemi pro týmovou komunikaci
+
+Element se zcela liší od ostatních aplikací pro zasílání zpráv a spolupráci. Funguje na platformě Matrix, otevřené síti pro bezpečné zasílání zpráv a decentralizovanou komunikaci. Umožňuje vlastní hostování, aby uživatelé měli maximální vlastnictví a kontrolu nad svými daty a zprávami.
+
+Soukromí a šifrované zprávy
+Element vás chrání před nežádoucími reklamami, vytěžováním dat a tzv. walled gardens. Zabezpečuje také všechna vaše data, video a hlasovou komunikaci jeden na jednoho prostřednictvím šifrování end-to-end a křížového ověřování zařízení.
+
+Element vám dává kontrolu nad vaším soukromím a zároveň vám umožňuje bezpečně komunikovat s kýmkoli v síti Matrix nebo s dalšími nástroji pro firemní spolupráci díky integraci s aplikacemi, jako je Slack.
+
+Element lze hostovat samostatně
+Abyste měli větší kontrolu nad svými citlivými daty a konverzacemi, může být Element hostován na vlastním hardwaru nebo si můžete vybrat libovolného hostitele založeného na systému Matrix - standardu pro decentralizovanou komunikaci s otevřeným zdrojovým kódem. Element vám poskytuje soukromí, soulad se zásadami bezpečnosti a flexibilitu integrace.
+
+Vlastněte svá data
+Sami rozhodujete, kde budou vaše data a zprávy uloženy. Bez rizika vytěžování dat nebo přístupu třetích stran.
+
+Element vám dává kontrolu různými způsoby:
+1. Získejte bezplatný účet na veřejném serveru matrix.org, který hostují vývojáři Matrixu, nebo si vyberte z tisíců veřejných serverů hostovaných dobrovolníky.
+2. Vlastní hostování účtu spuštěním serveru na vlastní IT infrastruktuře.
+3. Zaregistrujte si účet na vlastním serveru tak, že si jednoduše předplatíte hostingovou platformu Element Matrix Services.
+
+Otevřené zasílání zpráv a spolupráce
+Můžete chatovat s kýmkoli v síti Matrix, ať už používá aplikaci Element, jinou aplikaci podporující protokol Matrix nebo dokonce i když používá jinou aplikaci pro zasílání zpráv.
+
+Superbezpečné
+Skutečné end-to-end šifrování (zprávy mohou dešifrovat pouze účastníci konverzace) a křížové ověřování zařízení.
+
+Kompletní komunikace a integrace
+Zprávy, hlasové a videohovory, sdílení souborů, sdílení obrazovky a celá řada integrací, botů a widgetů. Vytvářejte místnosti, komunity, zůstaňte v kontaktu a spolupracujte.
+
+Navažte tam, kde jste skončili
+Zůstaňte v kontaktu, ať jste kdekoli, díky plně synchronizované historii zpráv ve všech zařízeních a na webu https://app.element.io
diff --git a/fastlane/metadata/android/cs/short_description.txt b/fastlane/metadata/android/cs-CZ/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/cs/short_description.txt
rename to fastlane/metadata/android/cs-CZ/short_description.txt
diff --git a/fastlane/metadata/android/cs/title.txt b/fastlane/metadata/android/cs-CZ/title.txt
similarity index 100%
rename from fastlane/metadata/android/cs/title.txt
rename to fastlane/metadata/android/cs-CZ/title.txt
diff --git a/fastlane/metadata/android/cs/full_description.txt b/fastlane/metadata/android/cs/full_description.txt
deleted file mode 100644
index f9c1f2ad0c..0000000000
--- a/fastlane/metadata/android/cs/full_description.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-Element je nový typ aplikace pro výměnu zpráv a spolupráci, která:
-
-1. Vám dá kontrolu nad ochranou vašeho soukromí
-2. Umožní vám komunikovat s kýmkoli v síti Matrix a dokonce i mimo ni pomocí integrací s aplikacemi, jako je Slack
-3. Ochrání vás před inzercí, dataminingem a uzavřenými zahradami
-4. Zabezpečí vás end-to-end šifrováním s křížovým podpisem pro ověření ostatních
-
-Element je zcela odlišný od ostatních aplikací pro zasílání zpráv a spolupráci, protože je decentralizovaný a otevřený.
-
-Element vám umožňuje použít vlastní domovský server - nebo si vybrat hostitele - abyste měli soukromí, vlastnictví a kontrolu nad svými daty a konverzacemi. Poskytuje vám přístup k otevřené síti; takže nejste zaseknuti jen při konverzaci s ostatními uživateli Elementu. A je velmi bezpečný.
-
-Element je toho všeho schopen, protože pracuje na Matrixu - standardu otevřené, decentralizované komunikace.
-
-Element vám dává kontrolu nad tím, že si můžete vybrat, kdo bude hostovat vaše konverzace. Z aplikace Element si můžete vybrat hostování různými způsoby:
-
-1. Získejte zdarma účet na veřejném serveru matrix.org hostovaném vývojáři Matrixu, nebo si vyberte z tisíců veřejných serverů hostovaných dobrovolníky
-2. Hostujte svůj účet spuštěním serveru na svém vlastním hardwaru
-3. Zaregistrujte si účet na vlastním serveru jednoduchým přihlášením k hostitelské platformě Element Matrix Services
-
-Proč zvolit Element?
-
-VLASTNĚTE SVÁ DATA: Vy rozhodnete, kde svá data a zprávy ponecháte. Vlastníte je a jsou pod vaší kontrolou, ne nějaký MEGACORP, který těží vaše data nebo poskytuje přístup třetím stranám.
-
-ZPRÁVY A SPOLUPRÁCE: Můžete chatovat s kýmkoli v síti Matrix, ať už používá Element nebo jinou aplikaci, a to i v případě, že používají jiný systém zasílání zpráv, jako je Slack, IRC nebo XMPP.
-
-MAXIMÁLNĚ BEZPEČNÉ: Skutečné šifrování typu end-to-end (pouze ti v konverzaci mohou dešifrovat zprávy) a křížové podepisování k ověření zařízení účastníků konverzace.
-
-KOMPLETNÍ KOMUNIKACE: Zprávy, hlasové hovory a videohovory, sdílení souborů, sdílení obrazovky a celá řada integrací, robotů a widgetů. Budujte místnosti, komunity, zůstaňte v kontaktu a spolupracujte.
-
-KDEKOLIV JSTE: Zůstaňte v kontaktu, ať jste kdekoli, s plně synchronizovanou historií zpráv na všech vašich zařízeních a na webu na adrese https://app.element.io.
diff --git a/fastlane/metadata/android/de/changelogs/40100100.txt b/fastlane/metadata/android/de-DE/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40100100.txt
rename to fastlane/metadata/android/de-DE/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/de/changelogs/40100110.txt b/fastlane/metadata/android/de-DE/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40100110.txt
rename to fastlane/metadata/android/de-DE/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/de/changelogs/40100120.txt b/fastlane/metadata/android/de-DE/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40100120.txt
rename to fastlane/metadata/android/de-DE/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/de/changelogs/40100130.txt b/fastlane/metadata/android/de-DE/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40100130.txt
rename to fastlane/metadata/android/de-DE/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/de/changelogs/40100140.txt b/fastlane/metadata/android/de-DE/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40100140.txt
rename to fastlane/metadata/android/de-DE/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/de/changelogs/40100150.txt b/fastlane/metadata/android/de-DE/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40100150.txt
rename to fastlane/metadata/android/de-DE/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/de/changelogs/40100160.txt b/fastlane/metadata/android/de-DE/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40100160.txt
rename to fastlane/metadata/android/de-DE/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/de/changelogs/40100170.txt b/fastlane/metadata/android/de-DE/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40100170.txt
rename to fastlane/metadata/android/de-DE/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/de/changelogs/40101000.txt b/fastlane/metadata/android/de-DE/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40101000.txt
rename to fastlane/metadata/android/de-DE/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/de/changelogs/40101010.txt b/fastlane/metadata/android/de-DE/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40101010.txt
rename to fastlane/metadata/android/de-DE/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/de/changelogs/40101020.txt b/fastlane/metadata/android/de-DE/changelogs/40101020.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40101020.txt
rename to fastlane/metadata/android/de-DE/changelogs/40101020.txt
diff --git a/fastlane/metadata/android/de/changelogs/40101030.txt b/fastlane/metadata/android/de-DE/changelogs/40101030.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40101030.txt
rename to fastlane/metadata/android/de-DE/changelogs/40101030.txt
diff --git a/fastlane/metadata/android/de/changelogs/40101040.txt b/fastlane/metadata/android/de-DE/changelogs/40101040.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40101040.txt
rename to fastlane/metadata/android/de-DE/changelogs/40101040.txt
diff --git a/fastlane/metadata/android/de/changelogs/40101050.txt b/fastlane/metadata/android/de-DE/changelogs/40101050.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40101050.txt
rename to fastlane/metadata/android/de-DE/changelogs/40101050.txt
diff --git a/fastlane/metadata/android/de/changelogs/40101060.txt b/fastlane/metadata/android/de-DE/changelogs/40101060.txt
similarity index 100%
rename from fastlane/metadata/android/de/changelogs/40101060.txt
rename to fastlane/metadata/android/de-DE/changelogs/40101060.txt
diff --git a/fastlane/metadata/android/de-DE/changelogs/40101070.txt b/fastlane/metadata/android/de-DE/changelogs/40101070.txt
new file mode 100644
index 0000000000..757475a44d
--- /dev/null
+++ b/fastlane/metadata/android/de-DE/changelogs/40101070.txt
@@ -0,0 +1,2 @@
+Hauptänderungen in dieser Version: Mit Spaces kannst du deine Räume gruppieren (Beta). Videos können vor dem Senden komprimiert werden.
+Die vollständige Änderungsliste gibt es hier: https://github.com/vector-im/element-android/releases/tag/v1.1.7
diff --git a/fastlane/metadata/android/de-DE/changelogs/40101080.txt b/fastlane/metadata/android/de-DE/changelogs/40101080.txt
new file mode 100644
index 0000000000..3609fb7078
--- /dev/null
+++ b/fastlane/metadata/android/de-DE/changelogs/40101080.txt
@@ -0,0 +1,2 @@
+Hauptänderung: Verbesserung für Spaces.
+Vollständiges Änderungsprotokoll: https://github.com/vector-im/element-android/releases/tag/v1.1.8
diff --git a/fastlane/metadata/android/de-DE/changelogs/40101090.txt b/fastlane/metadata/android/de-DE/changelogs/40101090.txt
new file mode 100644
index 0000000000..1a957862ab
--- /dev/null
+++ b/fastlane/metadata/android/de-DE/changelogs/40101090.txt
@@ -0,0 +1,2 @@
+Hauptänderung in dieser Version: Füge Unterstützung für gitter.im-Netzwerk hinzu
+Alle Änderungen: https://github.com/vector-im/element-android/releases/tag/v1.1.9
diff --git a/fastlane/metadata/android/de/full_description.txt b/fastlane/metadata/android/de-DE/full_description.txt
similarity index 52%
rename from fastlane/metadata/android/de/full_description.txt
rename to fastlane/metadata/android/de-DE/full_description.txt
index 1334adf554..30eb153ee9 100644
--- a/fastlane/metadata/android/de/full_description.txt
+++ b/fastlane/metadata/android/de-DE/full_description.txt
@@ -1,9 +1,9 @@
-Element ist einerseits ein sicherer Messenger, andererseits ideal geeignet für die produktive Zusammenarbeit mit dem Team im Homeoffice. Mit eingebauter Ende-zu-Ende-Verschlüsselung ermöglicht Element umfangreiche und sichere Videokonferenzen, das Teilen von Dateien sowie Sprachanrufe.
+Element ist ein sicherer Messenger und ideal für die produktive Zusammenarbeit mit Ihrem Team im Homeoffice. Mit eingebauter Ende-zu-Ende-Verschlüsselung ermöglicht Element auch umfangreiche und sichere Videokonferenzen, das Teilen von Dateien, Sprachanrufe und vieles mehr.
Element bietet folgende Funktionen:
- Fortschrittliche Werkzeuge für die Online-Kommunikation
- Vollständig verschlüsselte Nachrichten, um eine sichere Kommunikation innerhalb und außerhalb von Unternehmen zu ermöglichen
-- Dezentralisierte Chats, basierend auf dem quelloffenen Matrix-Framework
+- Dezentralisierte Chats, basierend auf dem quelloffenen Matrix-Protokoll
- Sichere und kontrollierte Dateifreigabe durch verschlüsselte Daten beim Verwalten von Projekten
- Videochats mit VoIP und Bildschirmübertragung
- Einfache Einbindung in Ihre bevorzugten Online-Kollaborations- und Projektverwaltungswerkzeuge, VoIP-Dienste und andere Kommunikationsapps für Ihr Team
@@ -11,29 +11,29 @@ Element ist einerseits ein sicherer Messenger, andererseits ideal geeignet für
Element unterscheidet sich grundlegend von anderen Kommunikations- und Kollaborationsapps. Es läuft auf Matrix, einem offenen Netzwerk für sichere und dezentralisierte Kommunikation. Es erlaubt Nutzern ihre eigene Infrastruktur zu betreiben und gibt ihnen damit vollständige Kontrolle und Besitz über ihre eigenen Daten und Nachrichten.
Privatsphäre/Datenschutz und verschlüsselte Kommunikation
-Element schützt Sie vor unerwünschter Werbung, dem Datenschürfen und abgeschlossenen Plattformen. Auch schützt es all Ihre Daten, Ihre Video- und Sprachkommunikation unter vier Augen, durch Ende-zu-Ende-Verschlüsselung und durch das Quersignieren von Geräten zur Verifizierung.
+Element schützt Sie vor unerwünschter Werbung, dem Datensammeln und geschlossenen Plattformen. Auch schützt es all Ihre Daten, Ihre Video- und Sprachkommunikation mittels Ende-zu-Ende-Verschlüsselung und durch das Quersignieren von Geräten zur Verifizierung.
-Element gibt Ihnen die Kontrolle über Ihre Privatsphäre und ermöglicht es Ihnen zugleich, mit jedem im Matrix-Netzwerk sicher zu kommunizieren - oder auch auf anderen geschäftlichen Kollaborationswerkzeugen, zum Beispiel durch das Einbinden von Apps wie Slack.
+Element gibt Ihnen volle Kontrolle über Ihre Privatsphäre und ermöglicht es Ihnen zugleich, mit jedem im Matrix-Netzwerk sicher zu kommunizieren - oder auch auf anderen geschäftlichen Kollaborationswerkzeugen, zum Beispiel durch das Einbinden von Apps wie Slack.
Element kann man selber betreiben
Um mehr Kontrolle über Ihre sensiblen Daten und Konversationen zu ermöglichen, kann man Element selbst betreiben, oder Sie wählen irgendeinen Matrix-basierten Dienst - der Standard für quelloffene, dezentralisierte Kommunikation. Element gibt Ihnen Privatsphäre, Sicherheitskonformität und Flexibilität für Integrationen.
Besitzen Sie Ihre Daten
-Sie entscheiden, wo Sie Ihre Daten und Nachrichten aufbewahren - ohne das Datenschürfen oder den Zugriff Dritter zu riskieren.
+Sie entscheiden, wo Sie Ihre Daten und Nachrichten aufbewahren - ohne das Datensammeln oder den Zugriff Dritter zu riskieren.
-Element gibt Ihnen auf verschiedene Arten die Kontrolle:
-1. Kostenlos auf dem öffentlichen matrix.org-Server registrieren, der von den Matrix-Entwicklern gehostet wird, oder wählen Sie aus Tausenden von öffentlichen Servern, die von Freiwilligen betrieben werden
-2. Ein Konto auf einem eigenen Server in der eigenen IT-Infrastruktur betreiben
-3. Einen Konto auf einem maßgeschneiderten Server erstellen, zum Beispiel durch ein Abonnement der Element Matrix Services (kurz EMS)
+Element gibt Ihnen auf verschiedene Arten Kontrolle:
+1. Sie können sich kostenlos auf dem öffentlichen matrix.org-Server registrieren, der von den Matrix-Entwicklern gehostet wird, oder einen von Tausenden öffentlichen Servern, die von Freiwilligen betrieben werden, auswählen
+2. Sie haben die Möglichkeit, ein Konto auf einem eigenen Server in der eigenen IT-Infrastruktur betreiben
+3. Außerdem können Sie durch ein Abonnement der Element Matrix Services ein Konto auf einem für Sie maßgeschneiderten Server erstellen
Offene Kommunikation und Zusammenarbeit
Sie können mit jedem im Matrix-Netzwerk chatten, egal ob ihr Kontakt Element, eine andere Matrix-App oder sogar eine völlig andere Anwendung nutzt.
Super sicher
-Echte Ende-zu-Ende-Verschlüsselung (nur die Personen in der Unterhaltung können die Nachrichten entschüsseln), sowie die Quersignierung von Geräten zur Verifizierung.
+Durch Ende-zu-Ende-Verschlüsselung können nur die Personen, die in der Unterhaltung sind, die Nachrichten lesen. Außerdem stellt die Verifizierung mittels Quersignierung sicher, dass Sie wirklich mit dem Chatten, mit dem Sie glauben - und niemand Anderem.
Vollständige Kommunikation und Integration
-Kurznachrichten, Sprach- und Videoanrufe, Dateifreigaben, Bildschirmübertragungen und eine ganze Reihe an Integrationen, Bots and Widgets. Schaffen Sie Räume, Communities, bleiben Sie auf dem Laufenden und erledigen Sie Sachen.
+Kurznachrichten, Sprach- und Videoanrufe, Dateifreigaben, Bildschirmübertragungen und einer Menge an Integrationen, Bots und Widgets. Schaffen Sie Räume und Communities, bleiben Sie auf dem Laufenden und erledigen Sie Sachen.
Da Weitermachen, wo Sie aufgehört haben
Bleiben Sie in Kontakt, egal wo Sie sind, mit vollständig synchronisiertem Nachrichtenverlauf quer über all Ihre Geräte und im Netz auf https://app.element.io
diff --git a/fastlane/metadata/android/de/short_description.txt b/fastlane/metadata/android/de-DE/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/de/short_description.txt
rename to fastlane/metadata/android/de-DE/short_description.txt
diff --git a/fastlane/metadata/android/de/title.txt b/fastlane/metadata/android/de-DE/title.txt
similarity index 100%
rename from fastlane/metadata/android/de/title.txt
rename to fastlane/metadata/android/de-DE/title.txt
diff --git a/fastlane/metadata/android/en-US/changelogs/40101100.txt b/fastlane/metadata/android/en-US/changelogs/40101100.txt
new file mode 100644
index 0000000000..30543cb102
--- /dev/null
+++ b/fastlane/metadata/android/en-US/changelogs/40101100.txt
@@ -0,0 +1,2 @@
+Main changes in this version: theme and style update and new features for spaces.
+Full changelog: https://github.com/vector-im/element-android/releases/tag/v1.1.10
\ No newline at end of file
diff --git a/fastlane/metadata/android/es/changelogs/40100100.txt b/fastlane/metadata/android/es-ES/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/es/changelogs/40100100.txt
rename to fastlane/metadata/android/es-ES/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/es/full_description.txt b/fastlane/metadata/android/es-ES/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/es/full_description.txt
rename to fastlane/metadata/android/es-ES/full_description.txt
diff --git a/fastlane/metadata/android/es/short_description.txt b/fastlane/metadata/android/es-ES/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/es/short_description.txt
rename to fastlane/metadata/android/es-ES/short_description.txt
diff --git a/fastlane/metadata/android/es/title.txt b/fastlane/metadata/android/es-ES/title.txt
similarity index 100%
rename from fastlane/metadata/android/es/title.txt
rename to fastlane/metadata/android/es-ES/title.txt
diff --git a/fastlane/metadata/android/et/changelogs/40101070.txt b/fastlane/metadata/android/et/changelogs/40101070.txt
new file mode 100644
index 0000000000..8ef65a7396
--- /dev/null
+++ b/fastlane/metadata/android/et/changelogs/40101070.txt
@@ -0,0 +1,2 @@
+Põhilised muudatused selles versioonis: beeta-versioon kogukonnakeskustest ja videofailide pakkimine enne üleslaadimist.
+Kogu ingliskeelne muudatuste logi: https://github.com/vector-im/element-android/releases/tag/v1.1.7
diff --git a/fastlane/metadata/android/et/changelogs/40101080.txt b/fastlane/metadata/android/et/changelogs/40101080.txt
new file mode 100644
index 0000000000..6fa09b30a7
--- /dev/null
+++ b/fastlane/metadata/android/et/changelogs/40101080.txt
@@ -0,0 +1,2 @@
+Põhilised muutused selles versioonis: kogukonnakeskuste täiendused
+Kogu ingliskeelne muudatuste logi: https://github.com/vector-im/element-android/releases/tag/v1.1.8
diff --git a/fastlane/metadata/android/et/changelogs/40101090.txt b/fastlane/metadata/android/et/changelogs/40101090.txt
new file mode 100644
index 0000000000..f354f7f320
--- /dev/null
+++ b/fastlane/metadata/android/et/changelogs/40101090.txt
@@ -0,0 +1,2 @@
+Põhilised muutused selles versioonis: liidestus gitter.im võrguga.
+Kogu ingliskeelne muudatuste logi: https://github.com/vector-im/element-android/releases/tag/v1.1.9
diff --git a/fastlane/metadata/android/fa/full_description.txt b/fastlane/metadata/android/fa/full_description.txt
index 0a93676bbf..3051f491ba 100644
--- a/fastlane/metadata/android/fa/full_description.txt
+++ b/fastlane/metadata/android/fa/full_description.txt
@@ -23,7 +23,7 @@
پیامرسانی و همکاری باز: میتوانید با هرکسی در شبکهٔ ماتریکس گپ بزنید، چه از المنت استفاده کنند و چه از هر کارهٔ ماتریکس دیگری؛ و حتا اگر از سامانهٔ پیامرسانی متفاوتی مثل اسلک، آیآرسی یا جبر استفاده کنند.
-فوق امن: رمزنگاری سرتاسری واقعی (فقط کسانی که در گفتوگو هستند،میتوانند پیامها را رمزگشایی کنند) و ورود چندگانه برای تأیید هویت افزارههای شرکتکنندگان در گفتوگو.
+b>فوق امن: رمزنگاری سرتاسری واقعی (فقط کسانی که در گفتوگو هستند،میتوانند پیامها را رمزگشایی کنند) و ورود چندگانه برای تأیید هویت افزارههای شرکتکنندگان در گفتوگو.
ارتباط کامل: پیامرسانی، تماسهای صوتی و تصویری،همرسانی پرونده، همرسانی صفحه و یه عالمه یکپارچگی، بات و ابزارک. اتاق و اجتماع ساخته، در دسترس بوده و کارها را انجام دهید.
diff --git a/fastlane/metadata/android/fa/title.txt b/fastlane/metadata/android/fa/title.txt
index fb4ea4125e..96f2f9a9df 100644
--- a/fastlane/metadata/android/fa/title.txt
+++ b/fastlane/metadata/android/fa/title.txt
@@ -1 +1 @@
-المنت (ریوت سابق)
+المنت - پیامرسان امن
diff --git a/fastlane/metadata/android/fi/changelogs/40100100.txt b/fastlane/metadata/android/fi-FI/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/fi/changelogs/40100100.txt
rename to fastlane/metadata/android/fi-FI/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/fi/changelogs/40100110.txt b/fastlane/metadata/android/fi-FI/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/fi/changelogs/40100110.txt
rename to fastlane/metadata/android/fi-FI/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/fi/changelogs/40100120.txt b/fastlane/metadata/android/fi-FI/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/fi/changelogs/40100120.txt
rename to fastlane/metadata/android/fi-FI/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/fi/changelogs/40100130.txt b/fastlane/metadata/android/fi-FI/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/fi/changelogs/40100130.txt
rename to fastlane/metadata/android/fi-FI/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/fi/changelogs/40100140.txt b/fastlane/metadata/android/fi-FI/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/fi/changelogs/40100140.txt
rename to fastlane/metadata/android/fi-FI/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/fi/changelogs/40100150.txt b/fastlane/metadata/android/fi-FI/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/fi/changelogs/40100150.txt
rename to fastlane/metadata/android/fi-FI/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/fi/changelogs/40100160.txt b/fastlane/metadata/android/fi-FI/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/fi/changelogs/40100160.txt
rename to fastlane/metadata/android/fi-FI/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/fi/changelogs/40100170.txt b/fastlane/metadata/android/fi-FI/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/fi/changelogs/40100170.txt
rename to fastlane/metadata/android/fi-FI/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/fi/changelogs/40101000.txt b/fastlane/metadata/android/fi-FI/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/fi/changelogs/40101000.txt
rename to fastlane/metadata/android/fi-FI/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/fi/changelogs/40101010.txt b/fastlane/metadata/android/fi-FI/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/fi/changelogs/40101010.txt
rename to fastlane/metadata/android/fi-FI/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/fi/full_description.txt b/fastlane/metadata/android/fi-FI/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/fi/full_description.txt
rename to fastlane/metadata/android/fi-FI/full_description.txt
diff --git a/fastlane/metadata/android/fi/short_description.txt b/fastlane/metadata/android/fi-FI/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/fi/short_description.txt
rename to fastlane/metadata/android/fi-FI/short_description.txt
diff --git a/fastlane/metadata/android/fi/title.txt b/fastlane/metadata/android/fi-FI/title.txt
similarity index 100%
rename from fastlane/metadata/android/fi/title.txt
rename to fastlane/metadata/android/fi-FI/title.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40100100.txt b/fastlane/metadata/android/fr-FR/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40100100.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40100110.txt b/fastlane/metadata/android/fr-FR/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40100110.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40100120.txt b/fastlane/metadata/android/fr-FR/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40100120.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40100130.txt b/fastlane/metadata/android/fr-FR/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40100130.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40100140.txt b/fastlane/metadata/android/fr-FR/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40100140.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40100150.txt b/fastlane/metadata/android/fr-FR/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40100150.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40100160.txt b/fastlane/metadata/android/fr-FR/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40100160.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40100170.txt b/fastlane/metadata/android/fr-FR/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40100170.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40101000.txt b/fastlane/metadata/android/fr-FR/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40101000.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40101010.txt b/fastlane/metadata/android/fr-FR/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40101010.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40101020.txt b/fastlane/metadata/android/fr-FR/changelogs/40101020.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40101020.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40101020.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40101030.txt b/fastlane/metadata/android/fr-FR/changelogs/40101030.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40101030.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40101030.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40101040.txt b/fastlane/metadata/android/fr-FR/changelogs/40101040.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40101040.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40101040.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40101050.txt b/fastlane/metadata/android/fr-FR/changelogs/40101050.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40101050.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40101050.txt
diff --git a/fastlane/metadata/android/fr/changelogs/40101060.txt b/fastlane/metadata/android/fr-FR/changelogs/40101060.txt
similarity index 100%
rename from fastlane/metadata/android/fr/changelogs/40101060.txt
rename to fastlane/metadata/android/fr-FR/changelogs/40101060.txt
diff --git a/fastlane/metadata/android/fr/full_description.txt b/fastlane/metadata/android/fr-FR/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/fr/full_description.txt
rename to fastlane/metadata/android/fr-FR/full_description.txt
diff --git a/fastlane/metadata/android/fr/short_description.txt b/fastlane/metadata/android/fr-FR/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/fr/short_description.txt
rename to fastlane/metadata/android/fr-FR/short_description.txt
diff --git a/fastlane/metadata/android/fr/title.txt b/fastlane/metadata/android/fr-FR/title.txt
similarity index 100%
rename from fastlane/metadata/android/fr/title.txt
rename to fastlane/metadata/android/fr-FR/title.txt
diff --git a/fastlane/metadata/android/hu/changelogs/40100100.txt b/fastlane/metadata/android/hu-HU/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/hu/changelogs/40100100.txt
rename to fastlane/metadata/android/hu-HU/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/hu/changelogs/40100110.txt b/fastlane/metadata/android/hu-HU/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/hu/changelogs/40100110.txt
rename to fastlane/metadata/android/hu-HU/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/hu/changelogs/40100120.txt b/fastlane/metadata/android/hu-HU/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/hu/changelogs/40100120.txt
rename to fastlane/metadata/android/hu-HU/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/hu/changelogs/40100130.txt b/fastlane/metadata/android/hu-HU/changelogs/40100130.txt
similarity index 88%
rename from fastlane/metadata/android/hu/changelogs/40100130.txt
rename to fastlane/metadata/android/hu-HU/changelogs/40100130.txt
index e1b044f4e5..47ce2690f4 100644
--- a/fastlane/metadata/android/hu/changelogs/40100130.txt
+++ b/fastlane/metadata/android/hu-HU/changelogs/40100130.txt
@@ -1,2 +1,2 @@
Főbb változtatások ebben a verzióban: URL előnézet, új emoji billentyűzet, új szoba beállitási lehetőségek, és hó karácsonyra!
-Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.0.12
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.0.13
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40100140.txt b/fastlane/metadata/android/hu-HU/changelogs/40100140.txt
new file mode 100644
index 0000000000..1b86da9ab1
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40100140.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: Szoba jogosultságok szerkesztése, automatikus sötét/világos téma és sok hibajavítás.
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.0.14
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40100150.txt b/fastlane/metadata/android/hu-HU/changelogs/40100150.txt
new file mode 100644
index 0000000000..b48fd6a0d7
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40100150.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: Közösségi hálózatos bejelentkezés támogatása
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.0.15
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40100160.txt b/fastlane/metadata/android/hu-HU/changelogs/40100160.txt
new file mode 100644
index 0000000000..bb983ed5e8
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40100160.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: Közösségi hálózatos bejelentkezés
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.0.15 and https://github.com/vector-im/element-android/releases/tag/v1.0.16
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40100170.txt b/fastlane/metadata/android/hu-HU/changelogs/40100170.txt
new file mode 100644
index 0000000000..806470d74e
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40100170.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: Hibajavítás!
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.0.17
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101000.txt b/fastlane/metadata/android/hu-HU/changelogs/40101000.txt
new file mode 100644
index 0000000000..0bc4f5d49f
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40101000.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: VoIP (hang és videóhívás közvetlen beszélgetésekben) fejlesztés és hibajavítás
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.0
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101010.txt b/fastlane/metadata/android/hu-HU/changelogs/40101010.txt
new file mode 100644
index 0000000000..503fc0ab2f
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40101010.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: sebesség javítás és hibajavítás
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.1
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101020.txt b/fastlane/metadata/android/hu-HU/changelogs/40101020.txt
new file mode 100644
index 0000000000..04d67ac5ae
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40101020.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: sebesség javítás és hibajavítás
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.2
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101030.txt b/fastlane/metadata/android/hu-HU/changelogs/40101030.txt
new file mode 100644
index 0000000000..4d0e46739e
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40101030.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: sebesség javítás és hibajavítás
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.3
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101040.txt b/fastlane/metadata/android/hu-HU/changelogs/40101040.txt
new file mode 100644
index 0000000000..1c6921f0d5
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40101040.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: sebesség javítás és hibajavítás
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.4
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101050.txt b/fastlane/metadata/android/hu-HU/changelogs/40101050.txt
new file mode 100644
index 0000000000..c937bb9215
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40101050.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: javítás az 1.1.4 verzióhoz
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.5
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101060.txt b/fastlane/metadata/android/hu-HU/changelogs/40101060.txt
new file mode 100644
index 0000000000..a9b37e66a9
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40101060.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: javítás az 1.1.5 verzióhoz
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.6
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101070.txt b/fastlane/metadata/android/hu-HU/changelogs/40101070.txt
new file mode 100644
index 0000000000..4acfbea1ea
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40101070.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: béta állapotú Tér támogatás. Videó tömörítés küldés előtt.
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.7
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101080.txt b/fastlane/metadata/android/hu-HU/changelogs/40101080.txt
new file mode 100644
index 0000000000..e0f45f09b5
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40101080.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: javítások a Terekhez
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.8
diff --git a/fastlane/metadata/android/hu-HU/changelogs/40101090.txt b/fastlane/metadata/android/hu-HU/changelogs/40101090.txt
new file mode 100644
index 0000000000..b3f3369ed7
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/changelogs/40101090.txt
@@ -0,0 +1,2 @@
+Fő változás ebben a verzióban: támogatás a gitter.im hálózathoz
+Teljes változásnapló: https://github.com/vector-im/element-android/releases/tag/v1.1.9
diff --git a/fastlane/metadata/android/hu-HU/full_description.txt b/fastlane/metadata/android/hu-HU/full_description.txt
new file mode 100644
index 0000000000..032346ccb8
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/full_description.txt
@@ -0,0 +1,40 @@
+Element egy biztonságos üzenetküldő és csapatmunka támogató alkalmazás ami ideális távoli munkavégzés közben csoportos csevegéshez. Az alkalmazás végpontok közötti titkosítást használ videó konferenciához, fájl megosztáshoz és videó hivásokhoz.
+
+Element tulajdonságai:
+- Fejlett online kommunikációs eszköz
+- Teljesen titkosított üzenetküldés biztonságos céges kommunikációt kínál még a távdolgozóknak is
+- Elosztott csevegés a Matrix nyílt forráskódú keretrendszer felhasználásával
+- Bizontságos fájl megosztás titkosítottan projektek kezeléséhez
+- Videó hívás VoIP-pal és képernyőmegosztással
+- Könnyen integrálható a kedvenc online kollaborációs eszközöddel, projekt menedzsment eszközzel, VoIP szolgáltatással vagy más csoport üzenetküldő alkalmazással
+
+Element teljesen más mint a többi üzenetküldő alkalmazás. Matrixot használ, egy nyílt hálózatot a decentralizált biztonságos kommunikációhoz. Lehetőséget ad saját szerver üzemeltetésére ami maximális tulajdont és kontrollt biztosít az adatok fölött.
+
+Magánélet védelme és titkosított üzenetküldés
+Element megóv a kéretlen hirdetésektől, adatbányászattól és a különböző szigetszerű megoldásoktól. Minden adatot biztonságba helyez, egy az egybe videó és hang kommunikáció végpontok között titkosítva ahol az eszközök hitelesítve vannak.
+
+Element a kezedbe adja az adatvédelmi irányítást miközben bárkivel kommunikálhatsz a Matrix hálózatban vagy más üzleti kollaborációs eszközzel ami integrálva van, mint amilyen a Slack.
+
+Element futtatható saját szerveren
+
+Azért, hogy az érzékeny adatok és beszélgetések minnél inkább az irányításod alatt lehessen az Elementet saját magadnak üzemeltetheted vagy választhatsz bármely Matrixon alapuló - szabványos nyílt forráskódú és decentralizált kommunikáció - szoláltató közül. Element adatvédelmet, biztonságot és rugalmas integrációkat biztosít.
+
+A te adatod a tiéd
+Te döntöd el, hogy hol tárolod az adataidat és üzeneteidet. Adatbányászat vagy harmadik fél hozzáférésének kockázata nélkül.
+
+Element többféle képpen adja vissza az irányítást:
+1. Szerezz egy ingyenes hozzáférést a matrix.org nyilvános szerverre amit a Matrix fejlesztők üzemeltetnek vagy válassz a több ezer önkéntesek által üzemeltetett nyilvános szerverből
+2. Üzemeltess szerver magadnak a saját infrastruktúrádon
+3. Iratkozz fel egy egyedi szerverre az Element Matrix Services platformon
+
+Nyílt üzenetküldés és kollaboráció
+Bárkivel beszélgethetsz a Matrix hálózaton, akár az Elementet használja akár egy másik Matrix alkalmazást használ vagy akár egy eltérő üzenetküldőt.
+
+Fantasztikusan biztonságos
+Igazi végpontok között titkosítás (csak a beszélgetésben résztvevők tudják visszafejteni) és hitelesítés eszközök közötti aláírásokkal.
+
+Teljes kommunikáció és integráció
+Üzenetküldés, hang és videóhívás, fájl megosztás, képernyő megosztás és egy csomó integráció, botok és kisalkalmazások. Építs szobákat, közösségeket, maradj kapcsolatban és végezz el dolgokat.
+
+Vedd fel a fonalat
+Maradj kapcsolatban bárhol minden eszközödön a szinkronizált üzenetekkel és a weben a https://app.element.io oldallal
diff --git a/fastlane/metadata/android/hu-HU/short_description.txt b/fastlane/metadata/android/hu-HU/short_description.txt
new file mode 100644
index 0000000000..2dfe14c516
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/short_description.txt
@@ -0,0 +1 @@
+Csoportos üzenetküldő - titkosított üzenetek, videó hívások
diff --git a/fastlane/metadata/android/hu-HU/title.txt b/fastlane/metadata/android/hu-HU/title.txt
new file mode 100644
index 0000000000..c463dea393
--- /dev/null
+++ b/fastlane/metadata/android/hu-HU/title.txt
@@ -0,0 +1 @@
+Element - Biztonságos üzenetküldő
diff --git a/fastlane/metadata/android/hu/full_description.txt b/fastlane/metadata/android/hu/full_description.txt
deleted file mode 100644
index b75f259d02..0000000000
--- a/fastlane/metadata/android/hu/full_description.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-Az Element egy új üzenetküldő, és csapatmunka alkalmazás, amivel
-
-1. A te kezedben van az irányítás a saját adataid fölött, hogy megőrizhesd a magánszférádat
-2. Akárkivel beszélgethetsz a Matrix hálózatban, sőt még azon kívül is, például olyan alkalmazások integrálásával, mint a Slack
-3. Megvédheted magad a hirdetésektől, adatbányászattól, és a nagy cégek megoldásaiba való bezártságtól
-4. Biztonságosan beszélgethetsz, a végpontok közötti titkosításnak köszönhetően, az eszközök megbízhatóságát az eszköz-közti hitelesítéssel garantálva
-
-Az Element teljesen más, mint a többi üzenetküldő és csapatmunka alkalmazás, mert nyílt forráskódú, és decentralizált (nem központilag irányított).
-
-Az Element lehetővé teszi, hogy saját szervert futtass - vagy válassz egy szolgáltatót - így te birtoklod az adataidat, ezáltal megőrizve a magánszférád és a biztonságod. Egy nyitott hálózathoz ad hozzáférést, így nem csak a többi Element felhasználóval tudsz beszélgetni, hanem másokkal is. Ráadásul nagyon biztonságos.
-
-Az Element-tel azért válik mindez lehetővé, mert a Matrix hálózatra épül - egy nyílt, decentralizált kommunikációs szabványra.
-
-Az Element a te kezedbe adja az irányítást azáltal, hogy eldöntheted, ki tárolja a beszélgetéseidet. Az Element alkalmazásból több féle szolgáltatót is választhatsz:
-
-1. Regisztrálhatsz ingyen egy fiókot a matrix.org nyilvános szerveren, amit a Matrix fejlesztői üzemeltetnek, vagy választhatsz a több ezer, ingyenes szerver közül, amit önkéntesek üzemeltetnek
-2. A saját számítógépeden is futtathatsz szervert
-3. Előfizethetsz egy saját szerverre az Element Matrix Szolgáltatások platformon
-
-Miért jó az Element-et választani?
-
-ADATAID MEGVÉDÉSE: Eldöntheted, hol tárold az adataid és üzeneteid. A te tulajdonodban van, nem valami megacégnél, ami bányássza az adataid, vagy továbbadja másoknak.
-
-NYÍLT BESZÉLGETÉS, ÉS CSAPATMUNKA: Akárkivel cseveghetsz a Matrix hálózatban, akár az Element-et használják, akár valamilyen másik Matrix alkalmazást, de még akkor is, ha egy másik csevegő hálózatot használnak, olyat, mint például a Slack, IRC, vagy az XMPP.
-
-SZUPER-BIZTONSÁGOS: Valódi, végpontok közötti titkosítás (csak a beszélgetés résztvevői tudják elolvasni az üzeneteket), és eszköz-közti hitelesítés, hogy ellenőrizhesd a résztvevők eszközeit.
-
-TELJES KOMMUNIKÁCIÓ: Üzenetküldés, hang- és videóhívások, fájlmegosztás, képernyőmegosztás, és egy rakás integráció, bot, és widget. Hozz létre szobákat, közösségeket, maradj elérhető, és végezzétek el a feladatokat.
-
-AKÁRHOL, AHOL CSAK SZÜKSÉG VAN RÁ: Akárhol is vagy, maradj elérhető, a teljes mértékben szinkronizált beszélgetésekkel az összes eszközödön, és a weben a https://app.element.io oldalon.
diff --git a/fastlane/metadata/android/hu/short_description.txt b/fastlane/metadata/android/hu/short_description.txt
deleted file mode 100644
index 89f7c13f54..0000000000
--- a/fastlane/metadata/android/hu/short_description.txt
+++ /dev/null
@@ -1 +0,0 @@
-Biztonságos, decentralizált chat és VoIP. Tartsd az adataid biztonságban.
diff --git a/fastlane/metadata/android/hu/title.txt b/fastlane/metadata/android/hu/title.txt
deleted file mode 100644
index 8e493d2d08..0000000000
--- a/fastlane/metadata/android/hu/title.txt
+++ /dev/null
@@ -1 +0,0 @@
-Element (régebben Riot.im)
diff --git a/fastlane/metadata/android/it/changelogs/40100100.txt b/fastlane/metadata/android/it-IT/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40100100.txt
rename to fastlane/metadata/android/it-IT/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/it/changelogs/40100110.txt b/fastlane/metadata/android/it-IT/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40100110.txt
rename to fastlane/metadata/android/it-IT/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/it/changelogs/40100120.txt b/fastlane/metadata/android/it-IT/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40100120.txt
rename to fastlane/metadata/android/it-IT/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/it/changelogs/40100130.txt b/fastlane/metadata/android/it-IT/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40100130.txt
rename to fastlane/metadata/android/it-IT/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/it/changelogs/40100140.txt b/fastlane/metadata/android/it-IT/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40100140.txt
rename to fastlane/metadata/android/it-IT/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/it/changelogs/40100150.txt b/fastlane/metadata/android/it-IT/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40100150.txt
rename to fastlane/metadata/android/it-IT/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/it/changelogs/40100160.txt b/fastlane/metadata/android/it-IT/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40100160.txt
rename to fastlane/metadata/android/it-IT/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/it/changelogs/40100170.txt b/fastlane/metadata/android/it-IT/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40100170.txt
rename to fastlane/metadata/android/it-IT/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/it/changelogs/40101000.txt b/fastlane/metadata/android/it-IT/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40101000.txt
rename to fastlane/metadata/android/it-IT/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/it/changelogs/40101010.txt b/fastlane/metadata/android/it-IT/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40101010.txt
rename to fastlane/metadata/android/it-IT/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/it/changelogs/40101020.txt b/fastlane/metadata/android/it-IT/changelogs/40101020.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40101020.txt
rename to fastlane/metadata/android/it-IT/changelogs/40101020.txt
diff --git a/fastlane/metadata/android/it/changelogs/40101030.txt b/fastlane/metadata/android/it-IT/changelogs/40101030.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40101030.txt
rename to fastlane/metadata/android/it-IT/changelogs/40101030.txt
diff --git a/fastlane/metadata/android/it/changelogs/40101040.txt b/fastlane/metadata/android/it-IT/changelogs/40101040.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40101040.txt
rename to fastlane/metadata/android/it-IT/changelogs/40101040.txt
diff --git a/fastlane/metadata/android/it/changelogs/40101050.txt b/fastlane/metadata/android/it-IT/changelogs/40101050.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40101050.txt
rename to fastlane/metadata/android/it-IT/changelogs/40101050.txt
diff --git a/fastlane/metadata/android/it/changelogs/40101060.txt b/fastlane/metadata/android/it-IT/changelogs/40101060.txt
similarity index 100%
rename from fastlane/metadata/android/it/changelogs/40101060.txt
rename to fastlane/metadata/android/it-IT/changelogs/40101060.txt
diff --git a/fastlane/metadata/android/it-IT/changelogs/40101070.txt b/fastlane/metadata/android/it-IT/changelogs/40101070.txt
new file mode 100644
index 0000000000..6f7ffcd958
--- /dev/null
+++ b/fastlane/metadata/android/it-IT/changelogs/40101070.txt
@@ -0,0 +1,2 @@
+Modifiche principali in questa versione: supporto beta per gli Spazi. Compressione video prima dell'invio.
+Cronologia completa: https://github.com/vector-im/element-android/releases/tag/v1.1.7
diff --git a/fastlane/metadata/android/it-IT/changelogs/40101080.txt b/fastlane/metadata/android/it-IT/changelogs/40101080.txt
new file mode 100644
index 0000000000..9964245d4d
--- /dev/null
+++ b/fastlane/metadata/android/it-IT/changelogs/40101080.txt
@@ -0,0 +1,2 @@
+Modifiche principali in questa versione: miglioramenti per gli Spazi.
+Cronologia completa: https://github.com/vector-im/element-android/releases/tag/v1.1.8
diff --git a/fastlane/metadata/android/it-IT/changelogs/40101090.txt b/fastlane/metadata/android/it-IT/changelogs/40101090.txt
new file mode 100644
index 0000000000..d1d89c8f41
--- /dev/null
+++ b/fastlane/metadata/android/it-IT/changelogs/40101090.txt
@@ -0,0 +1,2 @@
+Modifiche principali in questa versione: aggiunto supporto per la rete gitter.im .
+Cronologia completa: https://github.com/vector-im/element-android/releases/tag/v1.1.9
diff --git a/fastlane/metadata/android/it/full_description.txt b/fastlane/metadata/android/it-IT/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/it/full_description.txt
rename to fastlane/metadata/android/it-IT/full_description.txt
diff --git a/fastlane/metadata/android/it/short_description.txt b/fastlane/metadata/android/it-IT/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/it/short_description.txt
rename to fastlane/metadata/android/it-IT/short_description.txt
diff --git a/fastlane/metadata/android/it/title.txt b/fastlane/metadata/android/it-IT/title.txt
similarity index 100%
rename from fastlane/metadata/android/it/title.txt
rename to fastlane/metadata/android/it-IT/title.txt
diff --git a/fastlane/metadata/android/he/changelogs/40100100.txt b/fastlane/metadata/android/iw-IL/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/he/changelogs/40100100.txt
rename to fastlane/metadata/android/iw-IL/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/he/changelogs/40100110.txt b/fastlane/metadata/android/iw-IL/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/he/changelogs/40100110.txt
rename to fastlane/metadata/android/iw-IL/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/he/changelogs/40100120.txt b/fastlane/metadata/android/iw-IL/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/he/changelogs/40100120.txt
rename to fastlane/metadata/android/iw-IL/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/he/changelogs/40100130.txt b/fastlane/metadata/android/iw-IL/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/he/changelogs/40100130.txt
rename to fastlane/metadata/android/iw-IL/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/he/full_description.txt b/fastlane/metadata/android/iw-IL/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/he/full_description.txt
rename to fastlane/metadata/android/iw-IL/full_description.txt
diff --git a/fastlane/metadata/android/he/short_description.txt b/fastlane/metadata/android/iw-IL/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/he/short_description.txt
rename to fastlane/metadata/android/iw-IL/short_description.txt
diff --git a/fastlane/metadata/android/he/title.txt b/fastlane/metadata/android/iw-IL/title.txt
similarity index 100%
rename from fastlane/metadata/android/he/title.txt
rename to fastlane/metadata/android/iw-IL/title.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40100100.txt b/fastlane/metadata/android/ja-JP/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40100100.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40100110.txt b/fastlane/metadata/android/ja-JP/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40100110.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40100120.txt b/fastlane/metadata/android/ja-JP/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40100120.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40100130.txt b/fastlane/metadata/android/ja-JP/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40100130.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40100140.txt b/fastlane/metadata/android/ja-JP/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40100140.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40100150.txt b/fastlane/metadata/android/ja-JP/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40100150.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40100160.txt b/fastlane/metadata/android/ja-JP/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40100160.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40100170.txt b/fastlane/metadata/android/ja-JP/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40100170.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40101000.txt b/fastlane/metadata/android/ja-JP/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40101000.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40101010.txt b/fastlane/metadata/android/ja-JP/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40101010.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40101020.txt b/fastlane/metadata/android/ja-JP/changelogs/40101020.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40101020.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40101020.txt
diff --git a/fastlane/metadata/android/ja/changelogs/40101030.txt b/fastlane/metadata/android/ja-JP/changelogs/40101030.txt
similarity index 100%
rename from fastlane/metadata/android/ja/changelogs/40101030.txt
rename to fastlane/metadata/android/ja-JP/changelogs/40101030.txt
diff --git a/fastlane/metadata/android/ja/full_description.txt b/fastlane/metadata/android/ja-JP/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/ja/full_description.txt
rename to fastlane/metadata/android/ja-JP/full_description.txt
diff --git a/fastlane/metadata/android/ja/short_description.txt b/fastlane/metadata/android/ja-JP/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/ja/short_description.txt
rename to fastlane/metadata/android/ja-JP/short_description.txt
diff --git a/fastlane/metadata/android/ja/title.txt b/fastlane/metadata/android/ja-JP/title.txt
similarity index 100%
rename from fastlane/metadata/android/ja/title.txt
rename to fastlane/metadata/android/ja-JP/title.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40100100.txt b/fastlane/metadata/android/no-NO/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40100100.txt
rename to fastlane/metadata/android/no-NO/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40100110.txt b/fastlane/metadata/android/no-NO/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40100110.txt
rename to fastlane/metadata/android/no-NO/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40100120.txt b/fastlane/metadata/android/no-NO/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40100120.txt
rename to fastlane/metadata/android/no-NO/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40100130.txt b/fastlane/metadata/android/no-NO/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40100130.txt
rename to fastlane/metadata/android/no-NO/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40100140.txt b/fastlane/metadata/android/no-NO/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40100140.txt
rename to fastlane/metadata/android/no-NO/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40100150.txt b/fastlane/metadata/android/no-NO/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40100150.txt
rename to fastlane/metadata/android/no-NO/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40100160.txt b/fastlane/metadata/android/no-NO/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40100160.txt
rename to fastlane/metadata/android/no-NO/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40100170.txt b/fastlane/metadata/android/no-NO/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40100170.txt
rename to fastlane/metadata/android/no-NO/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40101000.txt b/fastlane/metadata/android/no-NO/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40101000.txt
rename to fastlane/metadata/android/no-NO/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40101010.txt b/fastlane/metadata/android/no-NO/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40101010.txt
rename to fastlane/metadata/android/no-NO/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40101020.txt b/fastlane/metadata/android/no-NO/changelogs/40101020.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40101020.txt
rename to fastlane/metadata/android/no-NO/changelogs/40101020.txt
diff --git a/fastlane/metadata/android/nb-NO/changelogs/40101030.txt b/fastlane/metadata/android/no-NO/changelogs/40101030.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/changelogs/40101030.txt
rename to fastlane/metadata/android/no-NO/changelogs/40101030.txt
diff --git a/fastlane/metadata/android/nb-NO/full_description.txt b/fastlane/metadata/android/no-NO/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/full_description.txt
rename to fastlane/metadata/android/no-NO/full_description.txt
diff --git a/fastlane/metadata/android/nb-NO/short_description.txt b/fastlane/metadata/android/no-NO/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/short_description.txt
rename to fastlane/metadata/android/no-NO/short_description.txt
diff --git a/fastlane/metadata/android/nb-NO/title.txt b/fastlane/metadata/android/no-NO/title.txt
similarity index 100%
rename from fastlane/metadata/android/nb-NO/title.txt
rename to fastlane/metadata/android/no-NO/title.txt
diff --git a/fastlane/metadata/android/pt-BR/changelogs/40101070.txt b/fastlane/metadata/android/pt-BR/changelogs/40101070.txt
new file mode 100644
index 0000000000..ab403ea4cc
--- /dev/null
+++ b/fastlane/metadata/android/pt-BR/changelogs/40101070.txt
@@ -0,0 +1,2 @@
+Principais mudanças nesta version: suporte beta para Espaços. Comprimir vídeo antes de enviar.
+Changelog completo: https://github.com/vector-im/element-android/releases/tag/v1.1.7
diff --git a/fastlane/metadata/android/pt-BR/changelogs/40101080.txt b/fastlane/metadata/android/pt-BR/changelogs/40101080.txt
new file mode 100644
index 0000000000..25047345ef
--- /dev/null
+++ b/fastlane/metadata/android/pt-BR/changelogs/40101080.txt
@@ -0,0 +1,2 @@
+Principais mudanças nesta version: melhoramento para Espaços.
+Changelog completo: https://github.com/vector-im/element-android/releases/tag/v1.1.8
diff --git a/fastlane/metadata/android/pt-BR/changelogs/40101090.txt b/fastlane/metadata/android/pt-BR/changelogs/40101090.txt
new file mode 100644
index 0000000000..cc5e71cf7f
--- /dev/null
+++ b/fastlane/metadata/android/pt-BR/changelogs/40101090.txt
@@ -0,0 +1,2 @@
+Principais mudanças nesta version: adicionar supporte a rede gitter.im.
+Changelog completo: https://github.com/vector-im/element-android/releases/tag/v1.1.9
diff --git a/fastlane/metadata/android/pt-BR/full_description.txt b/fastlane/metadata/android/pt-BR/full_description.txt
index b4fee53b4d..7bb3d0981d 100644
--- a/fastlane/metadata/android/pt-BR/full_description.txt
+++ b/fastlane/metadata/android/pt-BR/full_description.txt
@@ -11,7 +11,7 @@ Element é tanto um mensageiro seguro como um app de colaboração de time de pr
Element é completamente diferente de outros apps de mensageria e colaboração. Ele opera em Matrix, uma rede aberta para mensageria segura e comunicação descentralizada. Ele permite auto-hospedagem para dar a usuárias(os) máxima propriedade e controle de seus dados e suas mensagens.
Privacidade e mensageria encriptada
-Element protege você de ads não-desejados, minagem de dados e jardins murados. Ele também assegura todos os seus dados, vídeo um-a-um e comunicação de voz através de encriptação ponta-a-ponta e verificação de dispositivo assinada cruzado.
+Element protege você de ads indesejados, datamining e jardins murados. Ele também assegura todos os seus dados, vídeo um-a-um e comunicação de voz através de encriptação ponta-a-ponta e verificação de dispositivo assinada cruzado.
Element dá a você controle sobre sua privacidade enquanto permite a você se comunicar seguramente com qualquer pessoa na rede Matrix, ou outras ferramentas de colaboração ao se integrar com apps tais como Slack.
@@ -19,21 +19,21 @@ Element dá a você controle sobre sua privacidade enquanto permite a você se c
Para permitir mais controle de seus dados e conversas sensíveis, Element pode ser auto-hospedado ou você pode escolher qualquer host baseado em Matrix - o standard para comunicação open source e descentralizada. Element dá a você privacidade, conformidade de segurança e flexibilidade de integração.
Tenha posse de seus dados
-Você decidade onde mannter seus dados e mensagens. Sem o risco de minagem de dados ou acesso de terceiros.
+Você decide onde manter seus dados e mensagens. Sem o risco de data mining ou acesso de terceiros.
Element põe você em controle de diferentes maneiras:
-1. Tenha uma conta grátis no servidor público matrix.org hospedado pelos desenvolvedores Matrix, ou escolha de milhares de servidores públicos hospedados por pessoas se voluntariando
-2. Auto-hospede sua conta ao rodar um servidor em sua própria infraestrutura de TI
-3. Registre-se para uma conta num servidor personalizado ao simplesmente assinar a plataforma de hospedagem Element Matrix Services
+1. Pegar uma conta grátis no servidor público matrix.org hospedado pelos desenvolvedores Matrix, ou escolha de milhares de servidores públicos hospedados por pessoas se voluntariando
+2. Auto-hospedar sua conta ao rodar um servidor em sua própria infraestrutura de TI
+3. Fazer signup para uma conta num servidor personalizado ao simplesmente assinar a plataforma de hospedagem Element Matrix Services
Mensageria e colaboração abertos
-Você pode fazer chat com qualquer pessoa na rede Matrix, caso ela esteja usando Element, um outro app de Matrix ou mesmo se ela estiver usando um app de mensagem diferente.
+Você pode fazer chat com qualquer pessoa na rede Matrix, caso ela esteja usando Element, um outro app de Matrix ou mesmo se ela estiver usando um app de mensageria diferente.
Super seguro
Encriptação ponta-a-ponta real (somente aquelas/es na conversa podem decriptar mensagens), e verificação de dispositivo assinada cuzado.
Comunicação e integração completas
-Messageria, chamas de voz e vídeo, compartilhamento de arquivo, compartilhamento de tela e um monte de integrações, bots e widgets. Construa salas, comunidades, fique em contato e tenha as coisas feitas.
+Messageria, chamadas de voz e vídeo, compartilhamento de arquivo, compartilhamento de tela e um monte de integrações, bots e widgets. Construa salas, comunidades, fique em contato e tenha as coisas feitas.
Continue de onde você parou
Fique em contato onde quer que você esteja com histórico de mensagem completamente sincronizado por todos os seus dispositivos e na web em https://app.element.io
diff --git a/fastlane/metadata/android/pt-BR/short_description.txt b/fastlane/metadata/android/pt-BR/short_description.txt
index f03b5347b9..d5f82d8623 100644
--- a/fastlane/metadata/android/pt-BR/short_description.txt
+++ b/fastlane/metadata/android/pt-BR/short_description.txt
@@ -1 +1 @@
-Mensageiro de grupo - mensagens encriptadas, chat de grupo e chamadas de vídeo
+Mensageiro de grupo - mensageria, chat de grupo e chamadas de vídeo encriptados
diff --git a/fastlane/metadata/android/ru/changelogs/40100100.txt b/fastlane/metadata/android/ru-RU/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40100100.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40100110.txt b/fastlane/metadata/android/ru-RU/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40100110.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40100120.txt b/fastlane/metadata/android/ru-RU/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40100120.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40100130.txt b/fastlane/metadata/android/ru-RU/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40100130.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40100140.txt b/fastlane/metadata/android/ru-RU/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40100140.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40100150.txt b/fastlane/metadata/android/ru-RU/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40100150.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40100160.txt b/fastlane/metadata/android/ru-RU/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40100160.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40100170.txt b/fastlane/metadata/android/ru-RU/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40100170.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40101000.txt b/fastlane/metadata/android/ru-RU/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40101000.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40101010.txt b/fastlane/metadata/android/ru-RU/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40101010.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40101020.txt b/fastlane/metadata/android/ru-RU/changelogs/40101020.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40101020.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40101020.txt
diff --git a/fastlane/metadata/android/ru/changelogs/40101030.txt b/fastlane/metadata/android/ru-RU/changelogs/40101030.txt
similarity index 100%
rename from fastlane/metadata/android/ru/changelogs/40101030.txt
rename to fastlane/metadata/android/ru-RU/changelogs/40101030.txt
diff --git a/fastlane/metadata/android/ru/full_description.txt b/fastlane/metadata/android/ru-RU/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/ru/full_description.txt
rename to fastlane/metadata/android/ru-RU/full_description.txt
diff --git a/fastlane/metadata/android/ru/short_description.txt b/fastlane/metadata/android/ru-RU/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/ru/short_description.txt
rename to fastlane/metadata/android/ru-RU/short_description.txt
diff --git a/fastlane/metadata/android/ru/title.txt b/fastlane/metadata/android/ru-RU/title.txt
similarity index 100%
rename from fastlane/metadata/android/ru/title.txt
rename to fastlane/metadata/android/ru-RU/title.txt
diff --git a/fastlane/metadata/android/si/title.txt b/fastlane/metadata/android/si-LK/title.txt
similarity index 100%
rename from fastlane/metadata/android/si/title.txt
rename to fastlane/metadata/android/si-LK/title.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40100100.txt b/fastlane/metadata/android/sv-SE/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40100100.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40100110.txt b/fastlane/metadata/android/sv-SE/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40100110.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40100120.txt b/fastlane/metadata/android/sv-SE/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40100120.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40100130.txt b/fastlane/metadata/android/sv-SE/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40100130.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40100140.txt b/fastlane/metadata/android/sv-SE/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40100140.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40100150.txt b/fastlane/metadata/android/sv-SE/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40100150.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40100160.txt b/fastlane/metadata/android/sv-SE/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40100160.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40100170.txt b/fastlane/metadata/android/sv-SE/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40100170.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40101000.txt b/fastlane/metadata/android/sv-SE/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40101000.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40101010.txt b/fastlane/metadata/android/sv-SE/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40101010.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40101020.txt b/fastlane/metadata/android/sv-SE/changelogs/40101020.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40101020.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40101020.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40101030.txt b/fastlane/metadata/android/sv-SE/changelogs/40101030.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40101030.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40101030.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40101040.txt b/fastlane/metadata/android/sv-SE/changelogs/40101040.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40101040.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40101040.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40101050.txt b/fastlane/metadata/android/sv-SE/changelogs/40101050.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40101050.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40101050.txt
diff --git a/fastlane/metadata/android/sv/changelogs/40101060.txt b/fastlane/metadata/android/sv-SE/changelogs/40101060.txt
similarity index 100%
rename from fastlane/metadata/android/sv/changelogs/40101060.txt
rename to fastlane/metadata/android/sv-SE/changelogs/40101060.txt
diff --git a/fastlane/metadata/android/sv-SE/changelogs/40101070.txt b/fastlane/metadata/android/sv-SE/changelogs/40101070.txt
new file mode 100644
index 0000000000..4756a2d028
--- /dev/null
+++ b/fastlane/metadata/android/sv-SE/changelogs/40101070.txt
@@ -0,0 +1,2 @@
+Huvudsakliga ändringar i den här versionen: betastöd för utrymmen. Komprimera video innan den skickas.
+Full ändringslogg: https://github.com/vector-im/element-android/releases/tag/v1.1.7
diff --git a/fastlane/metadata/android/sv-SE/changelogs/40101080.txt b/fastlane/metadata/android/sv-SE/changelogs/40101080.txt
new file mode 100644
index 0000000000..38d704f995
--- /dev/null
+++ b/fastlane/metadata/android/sv-SE/changelogs/40101080.txt
@@ -0,0 +1,2 @@
+Huvudsakliga ändringar i den här versionen: förbättringar för utrymmen.
+Full ändringslogg: https://github.com/vector-im/element-android/releases/tag/v1.1.8
diff --git a/fastlane/metadata/android/sv-SE/changelogs/40101090.txt b/fastlane/metadata/android/sv-SE/changelogs/40101090.txt
new file mode 100644
index 0000000000..e1b5900a30
--- /dev/null
+++ b/fastlane/metadata/android/sv-SE/changelogs/40101090.txt
@@ -0,0 +1,2 @@
+Huvudsakliga ändringar i den här versionen: lägg till stöd för gitter.im-nätverket.
+Full ändringslogg: https://github.com/vector-im/element-android/releases/tag/v1.1.9
diff --git a/fastlane/metadata/android/sv/full_description.txt b/fastlane/metadata/android/sv-SE/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/sv/full_description.txt
rename to fastlane/metadata/android/sv-SE/full_description.txt
diff --git a/fastlane/metadata/android/sv/short_description.txt b/fastlane/metadata/android/sv-SE/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/sv/short_description.txt
rename to fastlane/metadata/android/sv-SE/short_description.txt
diff --git a/fastlane/metadata/android/sv/title.txt b/fastlane/metadata/android/sv-SE/title.txt
similarity index 100%
rename from fastlane/metadata/android/sv/title.txt
rename to fastlane/metadata/android/sv-SE/title.txt
diff --git a/fastlane/metadata/android/tr/changelogs/40100100.txt b/fastlane/metadata/android/tr-TR/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/tr/changelogs/40100100.txt
rename to fastlane/metadata/android/tr-TR/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/tr/changelogs/40100110.txt b/fastlane/metadata/android/tr-TR/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/tr/changelogs/40100110.txt
rename to fastlane/metadata/android/tr-TR/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/tr/changelogs/40100120.txt b/fastlane/metadata/android/tr-TR/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/tr/changelogs/40100120.txt
rename to fastlane/metadata/android/tr-TR/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/tr/changelogs/40100130.txt b/fastlane/metadata/android/tr-TR/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/tr/changelogs/40100130.txt
rename to fastlane/metadata/android/tr-TR/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/tr/changelogs/40100140.txt b/fastlane/metadata/android/tr-TR/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/tr/changelogs/40100140.txt
rename to fastlane/metadata/android/tr-TR/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/tr/changelogs/40100170.txt b/fastlane/metadata/android/tr-TR/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/tr/changelogs/40100170.txt
rename to fastlane/metadata/android/tr-TR/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/tr/changelogs/40101000.txt b/fastlane/metadata/android/tr-TR/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/tr/changelogs/40101000.txt
rename to fastlane/metadata/android/tr-TR/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/tr/changelogs/40101010.txt b/fastlane/metadata/android/tr-TR/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/tr/changelogs/40101010.txt
rename to fastlane/metadata/android/tr-TR/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/tr/full_description.txt b/fastlane/metadata/android/tr-TR/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/tr/full_description.txt
rename to fastlane/metadata/android/tr-TR/full_description.txt
diff --git a/fastlane/metadata/android/tr/short_description.txt b/fastlane/metadata/android/tr-TR/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/tr/short_description.txt
rename to fastlane/metadata/android/tr-TR/short_description.txt
diff --git a/fastlane/metadata/android/tr/title.txt b/fastlane/metadata/android/tr-TR/title.txt
similarity index 100%
rename from fastlane/metadata/android/tr/title.txt
rename to fastlane/metadata/android/tr-TR/title.txt
diff --git a/fastlane/metadata/android/uk/changelogs/40101070.txt b/fastlane/metadata/android/uk/changelogs/40101070.txt
new file mode 100644
index 0000000000..4d60bb1704
--- /dev/null
+++ b/fastlane/metadata/android/uk/changelogs/40101070.txt
@@ -0,0 +1,2 @@
+Основні зміни в цій версії: бета-підтримка Spaces. Стиснення відео перед надсиланням.
+Повний журнал змін: https://github.com/vector-im/element-android/releases/tag/v1.1.7
diff --git a/fastlane/metadata/android/uk/changelogs/40101080.txt b/fastlane/metadata/android/uk/changelogs/40101080.txt
new file mode 100644
index 0000000000..c174603258
--- /dev/null
+++ b/fastlane/metadata/android/uk/changelogs/40101080.txt
@@ -0,0 +1,2 @@
+Основні зміни у цій версії: Вдосконалено Простори!
+Вичерпний перелік змін: https://github.com/vector-im/element-android/releases/tag/v1.1.8
diff --git a/fastlane/metadata/android/uk/changelogs/40101090.txt b/fastlane/metadata/android/uk/changelogs/40101090.txt
new file mode 100644
index 0000000000..af822ad291
--- /dev/null
+++ b/fastlane/metadata/android/uk/changelogs/40101090.txt
@@ -0,0 +1,2 @@
+Основні зміни цієї версії: підтримка мережі gitter.im.
+Вичерпний перелік змін: https://github.com/vector-im/element-android/releases/tag/v1.1.9
diff --git a/fastlane/metadata/android/uk/full_description.txt b/fastlane/metadata/android/uk/full_description.txt
index 026ae4162a..df06315754 100644
--- a/fastlane/metadata/android/uk/full_description.txt
+++ b/fastlane/metadata/android/uk/full_description.txt
@@ -1,30 +1,39 @@
-Element — це застосунок для спілкування та співпраці нового типу, який:
+Element — це і безпечний месенджер, і застосунок для співпраці команди, який ідеально підходить для групових бесід під час віддаленої роботи. Цей застосунок для спілкування застосовує наскрізне шифрування для забезпечення відеоконференцій, обміну файлами та голосових викликів.
-1. Надає вам повний контроль за своєю конфіденційністю
-2. Дозволяє спілкування з будь-ким у мережі Matrix та поза нею, інтегруючись із такими застосунками, як Slack
-3. Убезпечує вас від реклами, збору даних та штучних обмежень
-4. Захищає ваше спілкування наскрізним шифруванням із перехресним підписуванням для звірення інших осіб
+Можливості Element включають:
+- Розширені засоби спілкування в Інтернеті
+- Повністю зашифровані повідомлення для надання можливості безпечнішого корпоративного спілкування, навіть для віддалених працівників
+- Децентралізований чат на основі відкритого коду Matrix
+- Безпечний обмін файлами із зашифрованими даними для керування проєктами
+- Відеочати з передачею голосу через IP та показом екрану іншим
+- Проста інтеграція з вашими улюбленими інструментами для онлайн-співпраці, інструментами керування проєктами, послугами VoIP та іншими застосунками обміну повідомленнями для команд
-Element ґрунтовно відрізняється від інших застосунків для спілкування та співпраці тому що він є децентралізованим та відкритоджерельним.
+Element цілковито відрізняється від інших застосунків обміну повідомленнями та спільної роботи. Він працює на Matrix, відкритій мережі для безпечного обміну повідомленнями та децентралізованого зв'язку. Це дозволяє самостійне розгортання, щоб надати користувачам якнайбільше володіння та контролю над їх даними та повідомленнями.
-Element дозволяє вам розміщувати сервер в себе або обирати будь-якого з надавачів послуг, таким чином забезпечуючи вам конфіденційність і можливість володіти власними даними й бесідами та контролювати їх. Він надає вам доступ до відкритої мережі, тож ви не є обмеженими спілкуванням виключно з користувачами Element. І він є дуже надійним та безпечним.
+Приватність та обмін зашифрованими повідомленнями
+Element захищає вас від небажаної реклами, збору даних та обмежень. Він також захищає всі ваші дані, відео та голосовий зв'язок віч-на-віч за допомогою наскрізного шифрування та взаємного підписування пристроїв.
-Element здатен забезпечити усе це завдяки тому, що він заснований на протоколі Matrix — стандарті для відкритого та децентралізованого спілкування.
+Element дає вам можливість контролювати вашу приватність, одночасно дозволяючи вам безпечно спілкуватися з будь-ким у мережі Matrix або через інші інструменти ділової співпраці, інтегрувавшись із такими програмами, як Slack.
-Element надає вам повний контроль, дозволяючи обирати з-поміж надавачів послуг, що обслуговують сервери з вашими бесідами. Ви вільні обрати будь-який спосіб розміщення прямо з застосунку Element:
+Element можна розгортати самостійно
+Щоб забезпечити більше контролю над вашими приватними даними та розмовами, Element можна самостійно розміщувати або ви можете вибрати будь-який вузол на основі Matrix — стандарт для децентралізованого спілкування з відкритим кодом. Element надає вам приватність, відповідність безпеці та гнучкість інтеграції.
-1. Отримати безкоштовний обліковий запис на загальнодоступному сервері matrix.org, який обслуговують розробники Matrix, чи на одному з тисяч публічних серверів, які обслуговують волонтери
-2. Розмістити свій обліковий запис на власному сервері
-3. Зареєструватись на індивідуальному сервері, просто підписавшись на послуги платформи Element Matrix Services
+Ваші дані
+Ви вирішуєте, де зберігати свої дані та повідомлення. Без ризику видобутку даних або стороннього доступу.
-Чому я маю обрати Element?
+Element надає такі можливості на вибір:
+1. Отримайте безплатний обліковий запис на загальнодоступному сервері matrix.org, розміщеному розробниками Matrix, або виберіть серед тисяч загальнодоступних серверів, розміщених волонтерами
+2. Самостійно розмістіть свій обліковий запис, запустивши сервер на власній ІТ-інфраструктурі
+3. Зареєструйте обліковий запис на власному сервері, просто підписавшись на хостинг-платформу Element Matrix Services
-ВОЛОДІЙТЕ ВАШИМИ ДАНИМИ: Ви вирішуєте де тримати ваші дані та повідомлення. Саме ви володієте ними та контролюєте їх, а не якась Мегакорпорація, що збирає ваші дані та надає стороннім особам доступ до них.
+Відкриті обмін повідомленнями та співпраця
+Ви можете спілкуватися з усіма у мережі Matrix, незалежно від того, чи користуються вони Element, іншим застосунком Matrix або навіть якщо іншим застосунком для обміну повідомленнями.
-ВІДКРИТІ ОБМІН ПОВІДОМЛЕННЯМИ ТА СПІВПРАЦЯ: Ви можете балакати з будь-ким у мережі Matrix, хоч вони користуються Element, хоч іншим застосунком для Matrix, і навіть якщо вони користуються іншою системою обміну повідомленнями на кшталт Slack, IRC чи XMPP.
+Надбезпечний
+Справжнє наскрізне шифрування (лише учасники бесіди можуть розшифровувати повідомлення) та взаємне підписування пристроїв.
-НАДБЕЗПЕЧНІСТЬ: Справжнє наскрізне шифрування (лише ваші співрозмовники здатні дешифровувати повідомлення) та перехресне підписування для звірення пристроїв інших учасників бесіди.
+Повноцінні спілкування та інтеграція
+Обмін повідомленнями, голосові та відеовиклики, обмін файлами, спільний доступ до екрана та ціла купа інтеграцій, ботів та віджетів. Створюйте кімнати, спільноти, залишайтеся на зв’язку та виконуйте завдання.
-ДОВЕРШЕНИЙ ЗВʼЯЗОК: Повідомлення, голосові та відеодзвінки, обмін файлами, розподіл екрану та ціла купа інтеграцій, ботів та знадобів. Створюйте кімнати й спільноти, залишайтесь на зв'язку та завершуйте свої справи.
-
-ДЕ Б ВИ НЕ БУЛИ: Залишайтесь на зв'язку де б ви не були, разом з синхронізовною історією листувань на усіх ваших пристроях та в Інтернеті на https://app.element.io.
+Продовжуйте, де зупинилися
+Залишайтеся на зв'язку, де б ви не знаходились, з повністю синхронізованою історією повідомлень на всіх своїх пристроях та в Інтернеті за адресою https://app.element.io
diff --git a/fastlane/metadata/android/zh-Hans/changelogs/40100100.txt b/fastlane/metadata/android/zh-CN/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/changelogs/40100100.txt
rename to fastlane/metadata/android/zh-CN/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/zh-Hans/changelogs/40100110.txt b/fastlane/metadata/android/zh-CN/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/changelogs/40100110.txt
rename to fastlane/metadata/android/zh-CN/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/zh-Hans/changelogs/40100120.txt b/fastlane/metadata/android/zh-CN/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/changelogs/40100120.txt
rename to fastlane/metadata/android/zh-CN/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/zh-Hans/changelogs/40100130.txt b/fastlane/metadata/android/zh-CN/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/changelogs/40100130.txt
rename to fastlane/metadata/android/zh-CN/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/zh-Hans/changelogs/40100140.txt b/fastlane/metadata/android/zh-CN/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/changelogs/40100140.txt
rename to fastlane/metadata/android/zh-CN/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/zh-Hans/changelogs/40100150.txt b/fastlane/metadata/android/zh-CN/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/changelogs/40100150.txt
rename to fastlane/metadata/android/zh-CN/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/zh-Hans/changelogs/40100160.txt b/fastlane/metadata/android/zh-CN/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/changelogs/40100160.txt
rename to fastlane/metadata/android/zh-CN/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/zh-Hans/changelogs/40100170.txt b/fastlane/metadata/android/zh-CN/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/changelogs/40100170.txt
rename to fastlane/metadata/android/zh-CN/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/zh-Hans/changelogs/40101000.txt b/fastlane/metadata/android/zh-CN/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/changelogs/40101000.txt
rename to fastlane/metadata/android/zh-CN/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/zh-Hans/changelogs/40101010.txt b/fastlane/metadata/android/zh-CN/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/changelogs/40101010.txt
rename to fastlane/metadata/android/zh-CN/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/zh-CN/changelogs/40101020.txt b/fastlane/metadata/android/zh-CN/changelogs/40101020.txt
new file mode 100644
index 0000000000..0de3f2aed0
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/changelogs/40101020.txt
@@ -0,0 +1,2 @@
+此版本中的主要更新:改进性能和错误修复!
+完整的更新记录:https://github.com/vector-im/element-android/releases/tag/v1.1.2
diff --git a/fastlane/metadata/android/zh-CN/changelogs/40101030.txt b/fastlane/metadata/android/zh-CN/changelogs/40101030.txt
new file mode 100644
index 0000000000..5a7fae92d5
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/changelogs/40101030.txt
@@ -0,0 +1,2 @@
+此版本中的主要更新:改进性能和修复错误!
+完整的更新记录:https://github.com/vector-im/element-android/releases/tag/v1.1.3
diff --git a/fastlane/metadata/android/zh-CN/changelogs/40101040.txt b/fastlane/metadata/android/zh-CN/changelogs/40101040.txt
new file mode 100644
index 0000000000..44a3547b3e
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/changelogs/40101040.txt
@@ -0,0 +1,2 @@
+此版本中的主要更新:改进性能和修复错误!
+完整的更新记录:https://github.com/vector-im/element-android/releases/tag/v1.1.4
diff --git a/fastlane/metadata/android/zh-CN/changelogs/40101050.txt b/fastlane/metadata/android/zh-CN/changelogs/40101050.txt
new file mode 100644
index 0000000000..c320815a00
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/changelogs/40101050.txt
@@ -0,0 +1,2 @@
+此版本中的主要更新:1.1.4 的热修复
+完整的更新记录:https://github.com/vector-im/element-android/releases/tag/v1.1.5
diff --git a/fastlane/metadata/android/zh-CN/changelogs/40101060.txt b/fastlane/metadata/android/zh-CN/changelogs/40101060.txt
new file mode 100644
index 0000000000..193ef8f48e
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/changelogs/40101060.txt
@@ -0,0 +1,2 @@
+此版本中的主要更新:1.1.5 的热修复
+完整的更新记录:https://github.com/vector-im/element-android/releases/tag/v1.1.6
diff --git a/fastlane/metadata/android/zh-CN/changelogs/40101070.txt b/fastlane/metadata/android/zh-CN/changelogs/40101070.txt
new file mode 100644
index 0000000000..ba8e92be9b
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/changelogs/40101070.txt
@@ -0,0 +1,2 @@
+此版本中的主要更新:对「空间」的测试版支持。发送前压缩视频。
+完整的更新记录:https://github.com/vector-im/element-android/releases/tag/v1.1.7
diff --git a/fastlane/metadata/android/zh-CN/changelogs/40101080.txt b/fastlane/metadata/android/zh-CN/changelogs/40101080.txt
new file mode 100644
index 0000000000..64b6462ad2
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/changelogs/40101080.txt
@@ -0,0 +1,2 @@
+此版本的主要变化:对空间进行改进。
+完整更新日志:https://github.com/vector-im/element-android/releases/tag/v1.1.8
diff --git a/fastlane/metadata/android/zh-CN/changelogs/40101090.txt b/fastlane/metadata/android/zh-CN/changelogs/40101090.txt
new file mode 100644
index 0000000000..c4c6b349c8
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/changelogs/40101090.txt
@@ -0,0 +1,2 @@
+此版本的主要变化:为 gitter.im 网络提供支持。
+完整更新日志:https://github.com/vector-im/element-android/releases/tag/v1.1.9
diff --git a/fastlane/metadata/android/zh-CN/full_description.txt b/fastlane/metadata/android/zh-CN/full_description.txt
new file mode 100644
index 0000000000..fa6b00f1e4
--- /dev/null
+++ b/fastlane/metadata/android/zh-CN/full_description.txt
@@ -0,0 +1,39 @@
+Element 不仅是安全的通讯软件,同时也是生产力团队协作应用,非常适合在远端工作时进行群组聊天。此聊天应用使用了端到端加密来提供强大的视频会议、文件分享与语音通话功能。
+
+Element 的功能包含了:
+- 进阶的线上通讯工具
+- 完全加密的信息,即使对于远端工作者来说,也可以有更安全的公司通讯
+- 以 Matrix 开放源码框架为基础的去中心化的聊天
+- 在管理项目时通过加密资料安全地分享文件
+- 包含了 VoIP 与画面分享的视频聊天
+- 与你最喜欢的协作工具、项目管理工具、VoIP 服务与其他团队信息应用轻松整合
+
+Element 与其他信息传递与协作应用完全不同。它在 Matrix(一个用于安全传递讯息与去中心化通讯的开放网络)上运行。其可以自建,让使用者对他们的资料和信息拥有最大的所有权与控制权。
+
+隐私与加密信息传递
+Element 保护你不受不想要的广告、信息泄露与围城侵扰。其也通过端到端加密与交叉签章装置验证保护了你所有的资料,并提供一对一视频以及语音通讯。
+
+Element 通过与其他商业协作工具,如 Slack 等应用整合,让你可以在控制你的隐私的同时,也可以与 Matrix 网络上的任何人安全地通讯。
+
+Element 可以自建
+为了可以完整控制你的敏感资料与对话,Element 可以自建,你也可以选择任何以 Matrix 为基础的服务提供商,开放源码、去中心化的通讯标准。Element 为你提供隐私、安全合规与整合灵活性。
+
+拥有你的资料
+你可以决定将你的资料与信息储存在何处。没有信息泄露或被第三方爬取的风险。
+
+Element 透过不同的方式让你掌控一切:
+1. 在 Matrix 开发者架设的 matrix.org 公开服务器上取得免费帐号,或是从数千个由志愿者架设的公开服务器中选择
+2. 在你自己的 IT 基础架构上的服务器自行托管你的帐号
+3. 只要订阅 Element Matrix Services 托管平台就可以在自定义的服务器上注册帐号
+
+开放信息传递与协作
+你可以与 Matrix 网络上的任何人聊天,不论他们是使用 Element、其他 Matrix 应用或其他通讯应用。
+
+超级安全
+真正的端到端加密(仅有那些在对话中的可以解密讯息)以及交叉签章装置验证。
+
+完整的通讯与整合
+信息传递、语音与视频通话、文件分享、画面分享与超多的整合、机器人与挂件。建构聊天室、社群、保持联络并完成工作。
+
+从上次离开的地方开始
+无论你身在何处,都可以透过在你所有设备与网页 https://app.element.io 间完全同步的信息历史保持联络
diff --git a/fastlane/metadata/android/zh-Hans/short_description.txt b/fastlane/metadata/android/zh-CN/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/short_description.txt
rename to fastlane/metadata/android/zh-CN/short_description.txt
diff --git a/fastlane/metadata/android/zh-Hans/title.txt b/fastlane/metadata/android/zh-CN/title.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hans/title.txt
rename to fastlane/metadata/android/zh-CN/title.txt
diff --git a/fastlane/metadata/android/zh-Hans/full_description.txt b/fastlane/metadata/android/zh-Hans/full_description.txt
deleted file mode 100644
index 4791c9652b..0000000000
--- a/fastlane/metadata/android/zh-Hans/full_description.txt
+++ /dev/null
@@ -1,30 +0,0 @@
-Element 是一种新型的通讯与协作应用:
-
-1. 使您可以掌控您的隐私
-2. 使您与 Matrix 网络中的任何人交流,甚至可以通过集成功能与如 Slack 之类的其他应用通讯
-3. 保护您免受广告,大数据挖掘和封闭服务的侵害
-4. 通过端到端加密保证安全,通过交叉签名验证其他人
-
-Element 与其他通讯与协作应用完全不同,因为它是去中心化且开源的。
-
-Element 允许您自托管——或者选择托管商——因此,您能拥有数据和会话的隐私权,所有权和控制权。它允许您访问开放网络;因此,您可以与 Element 用户以外的人交流。并且它非常安全。
-
-Element 之所以可以做到这些,是因为它在 Matrix 上运行——开放,去中心化通讯的标准。
-
-通过让您选择由谁来托管您的会话,Element 让您掌控一切。在 Element 应用中,您可以选择不同的托管方式:
-
-1. 在由 Matrix 开发者托管的 matrix.org 公共服务器上获取免费帐户,或从志愿者托管的上千个公共服务器中选择
-2. 在您自己的硬件上运行服务器,自托管您的会话
-3. 通过订阅 Element Matrix Services 托管平台,简单地在自定义服务器上注册账户
-
-为什么选择 Element?
-
-掌控您的数据:您来决定存放您的数据和消息的位置。拥有并控制它的是您,而不是挖掘您的数据或与第三方分享的巨型企业。
-
-开放通讯与协作:您可以与 Matrix 网络中的任何人聊天,不论他们使用 Element 还是其他 Matrix 应用,甚至/即使他们在使用不同的通讯系统,例如 Slack,IRC 或 XMPP。
-
-超级安全:支持真正的端到端加密(仅有会话中的人可以解密消息),还有能够验证会话参与方的设备的交叉签名。
-
-完善的通讯方式:消息,语音和视频通话,文件共享,屏幕共享和大量集成功能,机器人和小挂件。建立房间与社区,保持联系并完成工作。
-
-随时随地:消息历史可在您的全部设备和 https://app.element.io 网页端之间完全同步,无论您在哪里,都可以保持联系。
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40100100.txt b/fastlane/metadata/android/zh-TW/changelogs/40100100.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40100100.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40100100.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40100110.txt b/fastlane/metadata/android/zh-TW/changelogs/40100110.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40100110.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40100110.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40100120.txt b/fastlane/metadata/android/zh-TW/changelogs/40100120.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40100120.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40100120.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40100130.txt b/fastlane/metadata/android/zh-TW/changelogs/40100130.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40100130.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40100130.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40100140.txt b/fastlane/metadata/android/zh-TW/changelogs/40100140.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40100140.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40100140.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40100150.txt b/fastlane/metadata/android/zh-TW/changelogs/40100150.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40100150.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40100150.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40100160.txt b/fastlane/metadata/android/zh-TW/changelogs/40100160.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40100160.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40100160.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40100170.txt b/fastlane/metadata/android/zh-TW/changelogs/40100170.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40100170.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40100170.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40101000.txt b/fastlane/metadata/android/zh-TW/changelogs/40101000.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40101000.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40101000.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40101010.txt b/fastlane/metadata/android/zh-TW/changelogs/40101010.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40101010.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40101010.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40101020.txt b/fastlane/metadata/android/zh-TW/changelogs/40101020.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40101020.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40101020.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40101030.txt b/fastlane/metadata/android/zh-TW/changelogs/40101030.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40101030.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40101030.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40101040.txt b/fastlane/metadata/android/zh-TW/changelogs/40101040.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40101040.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40101040.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40101050.txt b/fastlane/metadata/android/zh-TW/changelogs/40101050.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40101050.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40101050.txt
diff --git a/fastlane/metadata/android/zh-Hant/changelogs/40101060.txt b/fastlane/metadata/android/zh-TW/changelogs/40101060.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/changelogs/40101060.txt
rename to fastlane/metadata/android/zh-TW/changelogs/40101060.txt
diff --git a/fastlane/metadata/android/zh-TW/changelogs/40101070.txt b/fastlane/metadata/android/zh-TW/changelogs/40101070.txt
new file mode 100644
index 0000000000..c62c7d5224
--- /dev/null
+++ b/fastlane/metadata/android/zh-TW/changelogs/40101070.txt
@@ -0,0 +1,2 @@
+此版本中的主要變動:對「空間」的測試版支援。傳送前壓縮影片。
+完整的變更紀錄:https://github.com/vector-im/element-android/releases/tag/v1.1.7
diff --git a/fastlane/metadata/android/zh-TW/changelogs/40101080.txt b/fastlane/metadata/android/zh-TW/changelogs/40101080.txt
new file mode 100644
index 0000000000..4ed232fe70
--- /dev/null
+++ b/fastlane/metadata/android/zh-TW/changelogs/40101080.txt
@@ -0,0 +1,2 @@
+此版本中的主要變動:改善「空間」的功能。
+完整的變更紀錄:https://github.com/vector-im/element-android/releases/tag/v1.1.8
diff --git a/fastlane/metadata/android/zh-TW/changelogs/40101090.txt b/fastlane/metadata/android/zh-TW/changelogs/40101090.txt
new file mode 100644
index 0000000000..84e46bdd76
--- /dev/null
+++ b/fastlane/metadata/android/zh-TW/changelogs/40101090.txt
@@ -0,0 +1,2 @@
+此版本中的主要變動:新增對 gitter.im 網路的支援。
+完整的變更紀錄:https://github.com/vector-im/element-android/releases/tag/v1.1.9
diff --git a/fastlane/metadata/android/zh-Hant/full_description.txt b/fastlane/metadata/android/zh-TW/full_description.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/full_description.txt
rename to fastlane/metadata/android/zh-TW/full_description.txt
diff --git a/fastlane/metadata/android/zh-Hant/short_description.txt b/fastlane/metadata/android/zh-TW/short_description.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/short_description.txt
rename to fastlane/metadata/android/zh-TW/short_description.txt
diff --git a/fastlane/metadata/android/zh-Hant/title.txt b/fastlane/metadata/android/zh-TW/title.txt
similarity index 100%
rename from fastlane/metadata/android/zh-Hant/title.txt
rename to fastlane/metadata/android/zh-TW/title.txt
diff --git a/library/ui-styles/.gitignore b/library/ui-styles/.gitignore
new file mode 100644
index 0000000000..42afabfd2a
--- /dev/null
+++ b/library/ui-styles/.gitignore
@@ -0,0 +1 @@
+/build
\ No newline at end of file
diff --git a/library/ui-styles/build.gradle b/library/ui-styles/build.gradle
new file mode 100644
index 0000000000..47c4664636
--- /dev/null
+++ b/library/ui-styles/build.gradle
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+plugins {
+ id 'com.android.library'
+ id 'kotlin-android'
+}
+
+android {
+ compileSdkVersion 30
+ buildToolsVersion "30.0.3"
+
+ defaultConfig {
+ minSdkVersion 21
+ targetSdkVersion 30
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ consumerProguardFiles "consumer-rules.pro"
+ }
+
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+ kotlinOptions {
+ jvmTarget = '1.8'
+ }
+ buildFeatures {
+ viewBinding true
+ }
+}
+
+dependencies {
+ implementation 'androidx.appcompat:appcompat:1.3.0'
+ implementation 'com.google.android.material:material:1.3.0'
+ // Pref theme
+ implementation 'androidx.preference:preference-ktx:1.1.1'
+ // PFLockScreen attrs
+ implementation 'com.github.vector-im:PFLockScreen-Android:1.0.0-beta12'
+ // dialpad dimen
+ implementation 'im.dlg:android-dialer:1.2.5'
+}
\ No newline at end of file
diff --git a/library/ui-styles/src/debug/AndroidManifest.xml b/library/ui-styles/src/debug/AndroidManifest.xml
new file mode 100644
index 0000000000..e32676136d
--- /dev/null
+++ b/library/ui-styles/src/debug/AndroidManifest.xml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vector/src/debug/java/im/vector/app/features/debug/DebugBottomSheet.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugBottomSheet.kt
similarity index 83%
rename from vector/src/debug/java/im/vector/app/features/debug/DebugBottomSheet.kt
rename to library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugBottomSheet.kt
index 0ac9a894ae..9998fd661f 100644
--- a/vector/src/debug/java/im/vector/app/features/debug/DebugBottomSheet.kt
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugBottomSheet.kt
@@ -14,19 +14,19 @@
* limitations under the License.
*/
-package im.vector.app.features.debug
+package im.vector.lib.ui.styles.debug
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
-import im.vector.app.databinding.ActivityTestMaterialThemeBinding
+import im.vector.lib.ui.styles.databinding.ActivityDebugMaterialThemeBinding
class DebugBottomSheet : BottomSheetDialogFragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
// Reuse tha Activity layout
- val binding = ActivityTestMaterialThemeBinding.inflate(inflater, container, false)
+ val binding = ActivityDebugMaterialThemeBinding.inflate(inflater, container, false)
return binding.root
}
}
diff --git a/vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeActivity.kt
similarity index 74%
rename from vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeActivity.kt
rename to library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeActivity.kt
index de6b981c02..675edde4f2 100644
--- a/vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeActivity.kt
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeActivity.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 New Vector Ltd
+ * Copyright (c) 2021 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,25 +14,31 @@
* limitations under the License.
*/
-package im.vector.app.features.debug
+package im.vector.lib.ui.styles.debug
import android.os.Bundle
import android.view.Menu
+import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar
-import im.vector.app.R
-import im.vector.app.core.utils.toast
-import im.vector.app.databinding.ActivityTestMaterialThemeBinding
+import im.vector.lib.ui.styles.R
+import im.vector.lib.ui.styles.databinding.ActivityDebugMaterialThemeBinding
// Rendering is not the same with VectorBaseActivity
abstract class DebugMaterialThemeActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- val views = ActivityTestMaterialThemeBinding.inflate(layoutInflater)
+ val views = ActivityDebugMaterialThemeBinding.inflate(layoutInflater)
setContentView(views.root)
+ setSupportActionBar(views.debugToolbar)
+ supportActionBar?.let {
+ it.setDisplayShowHomeEnabled(true)
+ it.setDisplayHomeAsUpEnabled(true)
+ }
+
views.debugShowSnackbar.setOnClickListener {
Snackbar.make(views.coordinatorLayout, "Snackbar!", Snackbar.LENGTH_SHORT)
.setAction("Action") { }
@@ -40,14 +46,14 @@ abstract class DebugMaterialThemeActivity : AppCompatActivity() {
}
views.debugShowToast.setOnClickListener {
- toast("Toast")
+ Toast.makeText(this, "Toast", Toast.LENGTH_SHORT).show()
}
views.debugShowDialog.setOnClickListener {
MaterialAlertDialogBuilder(this)
.setTitle("Dialog title")
.setMessage("Dialog content")
- .setIcon(R.drawable.ic_settings_x)
+ .setIcon(R.drawable.ic_debug_icon)
.setPositiveButton("Positive", null)
.setNegativeButton("Negative", null)
.setNeutralButton("Neutral", null)
@@ -60,7 +66,7 @@ abstract class DebugMaterialThemeActivity : AppCompatActivity() {
}
override fun onCreateOptionsMenu(menu: Menu): Boolean {
- menuInflater.inflate(R.menu.home, menu)
+ menuInflater.inflate(R.menu.menu_debug, menu)
return true
}
}
diff --git a/vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeDarkDefaultActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeDarkDefaultActivity.kt
similarity index 89%
rename from vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeDarkDefaultActivity.kt
rename to library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeDarkDefaultActivity.kt
index 7e014577de..d24ceb6ede 100644
--- a/vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeDarkDefaultActivity.kt
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeDarkDefaultActivity.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 New Vector Ltd
+ * Copyright (c) 2021 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,6 +14,6 @@
* limitations under the License.
*/
-package im.vector.app.features.debug
+package im.vector.lib.ui.styles.debug
class DebugMaterialThemeDarkDefaultActivity : DebugMaterialThemeActivity()
diff --git a/vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeDarkTestActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeDarkTestActivity.kt
similarity index 89%
rename from vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeDarkTestActivity.kt
rename to library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeDarkTestActivity.kt
index 4a1ed04f6a..fea1f27dae 100644
--- a/vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeDarkTestActivity.kt
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeDarkTestActivity.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 New Vector Ltd
+ * Copyright (c) 2021 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,6 +14,6 @@
* limitations under the License.
*/
-package im.vector.app.features.debug
+package im.vector.lib.ui.styles.debug
class DebugMaterialThemeDarkTestActivity : DebugMaterialThemeActivity()
diff --git a/vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeDarkVectorActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeDarkVectorActivity.kt
similarity index 89%
rename from vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeDarkVectorActivity.kt
rename to library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeDarkVectorActivity.kt
index 6ac27aed45..379d55d006 100644
--- a/vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeDarkVectorActivity.kt
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeDarkVectorActivity.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 New Vector Ltd
+ * Copyright (c) 2021 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,6 +14,6 @@
* limitations under the License.
*/
-package im.vector.app.features.debug
+package im.vector.lib.ui.styles.debug
class DebugMaterialThemeDarkVectorActivity : DebugMaterialThemeActivity()
diff --git a/vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeLightDefaultActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeLightDefaultActivity.kt
similarity index 89%
rename from vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeLightDefaultActivity.kt
rename to library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeLightDefaultActivity.kt
index f6327e363b..57f172bdc3 100644
--- a/vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeLightDefaultActivity.kt
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeLightDefaultActivity.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 New Vector Ltd
+ * Copyright (c) 2021 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,6 +14,6 @@
* limitations under the License.
*/
-package im.vector.app.features.debug
+package im.vector.lib.ui.styles.debug
class DebugMaterialThemeLightDefaultActivity : DebugMaterialThemeActivity()
diff --git a/vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeLightTestActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeLightTestActivity.kt
similarity index 89%
rename from vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeLightTestActivity.kt
rename to library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeLightTestActivity.kt
index ae6c1dd68c..d3a6c757fb 100644
--- a/vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeLightTestActivity.kt
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeLightTestActivity.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 New Vector Ltd
+ * Copyright (c) 2021 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,6 +14,6 @@
* limitations under the License.
*/
-package im.vector.app.features.debug
+package im.vector.lib.ui.styles.debug
class DebugMaterialThemeLightTestActivity : DebugMaterialThemeActivity()
diff --git a/vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeLightVectorActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeLightVectorActivity.kt
similarity index 89%
rename from vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeLightVectorActivity.kt
rename to library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeLightVectorActivity.kt
index b4fb3c1cc8..3fafa61421 100644
--- a/vector/src/debug/java/im/vector/app/features/debug/DebugMaterialThemeLightVectorActivity.kt
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugMaterialThemeLightVectorActivity.kt
@@ -1,5 +1,5 @@
/*
- * Copyright 2019 New Vector Ltd
+ * Copyright (c) 2021 New Vector Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -14,6 +14,6 @@
* limitations under the License.
*/
-package im.vector.app.features.debug
+package im.vector.lib.ui.styles.debug
class DebugMaterialThemeLightVectorActivity : DebugMaterialThemeActivity()
diff --git a/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorButtonStylesActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorButtonStylesActivity.kt
new file mode 100644
index 0000000000..50d1e344e9
--- /dev/null
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorButtonStylesActivity.kt
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.lib.ui.styles.debug
+
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import im.vector.lib.ui.styles.databinding.ActivityDebugButtonStylesBinding
+
+abstract class DebugVectorButtonStylesActivity : AppCompatActivity() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ val views = ActivityDebugButtonStylesBinding.inflate(layoutInflater)
+ setContentView(views.root)
+ }
+}
diff --git a/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorButtonStylesDarkActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorButtonStylesDarkActivity.kt
new file mode 100644
index 0000000000..102ca53f3c
--- /dev/null
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorButtonStylesDarkActivity.kt
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.lib.ui.styles.debug
+
+class DebugVectorButtonStylesDarkActivity : DebugVectorButtonStylesActivity()
diff --git a/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorButtonStylesLightActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorButtonStylesLightActivity.kt
new file mode 100644
index 0000000000..c1b01dc6a3
--- /dev/null
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorButtonStylesLightActivity.kt
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.lib.ui.styles.debug
+
+class DebugVectorButtonStylesLightActivity : DebugVectorButtonStylesActivity()
diff --git a/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorTextViewActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorTextViewActivity.kt
new file mode 100644
index 0000000000..ac3d4ea696
--- /dev/null
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorTextViewActivity.kt
@@ -0,0 +1,31 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.lib.ui.styles.debug
+
+import android.os.Bundle
+import androidx.appcompat.app.AppCompatActivity
+import im.vector.lib.ui.styles.databinding.ActivityDebugTextViewBinding
+
+// Rendering is not the same with VectorBaseActivity
+abstract class DebugVectorTextViewActivity : AppCompatActivity() {
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ val views = ActivityDebugTextViewBinding.inflate(layoutInflater)
+ setContentView(views.root)
+ }
+}
diff --git a/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorTextViewDarkActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorTextViewDarkActivity.kt
new file mode 100644
index 0000000000..2d95056fef
--- /dev/null
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorTextViewDarkActivity.kt
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.lib.ui.styles.debug
+
+class DebugVectorTextViewDarkActivity : DebugVectorTextViewActivity()
diff --git a/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorTextViewLightActivity.kt b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorTextViewLightActivity.kt
new file mode 100644
index 0000000000..33e4a0f075
--- /dev/null
+++ b/library/ui-styles/src/debug/java/im/vector/lib/ui/styles/debug/DebugVectorTextViewLightActivity.kt
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.lib.ui.styles.debug
+
+class DebugVectorTextViewLightActivity : DebugVectorTextViewActivity()
diff --git a/library/ui-styles/src/debug/res/drawable/ic_debug_icon.xml b/library/ui-styles/src/debug/res/drawable/ic_debug_icon.xml
new file mode 100644
index 0000000000..08af7d6539
--- /dev/null
+++ b/library/ui-styles/src/debug/res/drawable/ic_debug_icon.xml
@@ -0,0 +1,22 @@
+
+
+
+
diff --git a/vector/src/debug/res/drawable/linear_divider.xml b/library/ui-styles/src/debug/res/drawable/linear_divider.xml
similarity index 100%
rename from vector/src/debug/res/drawable/linear_divider.xml
rename to library/ui-styles/src/debug/res/drawable/linear_divider.xml
diff --git a/vector/src/debug/res/layout/activity_debug_button_styles.xml b/library/ui-styles/src/debug/res/layout/activity_debug_button_styles.xml
similarity index 74%
rename from vector/src/debug/res/layout/activity_debug_button_styles.xml
rename to library/ui-styles/src/debug/res/layout/activity_debug_button_styles.xml
index 3973f7cbb6..0f129fb406 100644
--- a/vector/src/debug/res/layout/activity_debug_button_styles.xml
+++ b/library/ui-styles/src/debug/res/layout/activity_debug_button_styles.xml
@@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context=".features.debug.DebugVectorButtonStylesActivity"
+ tools:context=".debug.DebugVectorButtonStylesActivity"
tools:ignore="HardcodedText">
+
+
+
+
+
+
+
+
+
+ android:text="See button dark" />
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vector/src/debug/res/layout/demo_themes.xml b/vector/src/debug/res/layout/demo_themes.xml
index 7cd4a77066..3b2f5acbf0 100644
--- a/vector/src/debug/res/layout/demo_themes.xml
+++ b/vector/src/debug/res/layout/demo_themes.xml
@@ -14,7 +14,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
- android:theme="@style/AppTheme.Light">
+ android:theme="@style/Theme.Vector.Light">
@@ -24,7 +24,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
- android:theme="@style/AppTheme.Dark">
+ android:theme="@style/Theme.Vector.Dark">
@@ -34,7 +34,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
- android:theme="@style/AppTheme.Black">
+ android:theme="@style/Theme.Vector.Black">
diff --git a/vector/src/debug/res/layout/item_sas_emoji.xml b/vector/src/debug/res/layout/item_sas_emoji.xml
index 23d6f3b348..a6a0e28058 100644
--- a/vector/src/debug/res/layout/item_sas_emoji.xml
+++ b/vector/src/debug/res/layout/item_sas_emoji.xml
@@ -12,20 +12,21 @@
diff --git a/vector/src/main/java/im/vector/app/core/di/ScreenComponent.kt b/vector/src/main/java/im/vector/app/core/di/ScreenComponent.kt
index 9dbfa8fe30..3c11bfcd13 100644
--- a/vector/src/main/java/im/vector/app/core/di/ScreenComponent.kt
+++ b/vector/src/main/java/im/vector/app/core/di/ScreenComponent.kt
@@ -32,6 +32,7 @@ import im.vector.app.features.call.conference.VectorJitsiActivity
import im.vector.app.features.call.transfer.CallTransferActivity
import im.vector.app.features.createdirect.CreateDirectRoomActivity
import im.vector.app.features.crypto.keysbackup.settings.KeysBackupManageActivity
+import im.vector.app.features.crypto.keysbackup.setup.KeysBackupSetupActivity
import im.vector.app.features.crypto.quads.SharedSecureStorageActivity
import im.vector.app.features.crypto.recover.BootstrapBottomSheet
import im.vector.app.features.crypto.verification.VerificationBottomSheet
@@ -138,6 +139,7 @@ interface ScreenComponent {
fun inject(activity: LinkHandlerActivity)
fun inject(activity: MainActivity)
fun inject(activity: RoomDirectoryActivity)
+ fun inject(activity: KeysBackupSetupActivity)
fun inject(activity: BugReportActivity)
fun inject(activity: FilteredRoomsActivity)
fun inject(activity: CreateRoomActivity)
diff --git a/vector/src/main/java/im/vector/app/core/error/ErrorFormatter.kt b/vector/src/main/java/im/vector/app/core/error/ErrorFormatter.kt
index b5f45e6586..c0219b26e2 100644
--- a/vector/src/main/java/im/vector/app/core/error/ErrorFormatter.kt
+++ b/vector/src/main/java/im/vector/app/core/error/ErrorFormatter.kt
@@ -116,7 +116,9 @@ class DefaultErrorFormatter @Inject constructor(
throwable.localizedMessage
}
}
- is DialPadLookup.Failure ->
+ is DialPadLookup.Failure.NumberIsYours ->
+ stringProvider.getString(R.string.cannot_call_yourself)
+ is DialPadLookup.Failure.NoResult ->
stringProvider.getString(R.string.call_dial_pad_lookup_error)
else -> throwable.localizedMessage
}
diff --git a/vector/src/main/java/im/vector/app/core/glide/AvatarPlaceholder.kt b/vector/src/main/java/im/vector/app/core/glide/AvatarPlaceholder.kt
new file mode 100644
index 0000000000..32968c4f80
--- /dev/null
+++ b/vector/src/main/java/im/vector/app/core/glide/AvatarPlaceholder.kt
@@ -0,0 +1,82 @@
+/*
+ * Copyright (c) 2021 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.app.core.glide
+
+import android.content.Context
+import android.graphics.drawable.Drawable
+import com.bumptech.glide.Priority
+import com.bumptech.glide.load.DataSource
+import com.bumptech.glide.load.Options
+import com.bumptech.glide.load.data.DataFetcher
+import com.bumptech.glide.load.model.ModelLoader
+import com.bumptech.glide.load.model.ModelLoaderFactory
+import com.bumptech.glide.load.model.MultiModelLoaderFactory
+import com.bumptech.glide.signature.ObjectKey
+import im.vector.app.core.extensions.vectorComponent
+import org.matrix.android.sdk.api.util.MatrixItem
+
+data class AvatarPlaceholder(val matrixItem: MatrixItem)
+
+class AvatarPlaceholderModelLoaderFactory(private val context: Context) : ModelLoaderFactory {
+
+ override fun build(multiFactory: MultiModelLoaderFactory): ModelLoader {
+ return AvatarPlaceholderModelLoader(context)
+ }
+
+ override fun teardown() {
+ // Is there something to do here?
+ }
+}
+
+class AvatarPlaceholderModelLoader(private val context: Context)
+ : ModelLoader {
+
+ override fun buildLoadData(model: AvatarPlaceholder, width: Int, height: Int, options: Options): ModelLoader.LoadData? {
+ return ModelLoader.LoadData(ObjectKey(model), AvatarPlaceholderDataFetcher(context, model))
+ }
+
+ override fun handles(model: AvatarPlaceholder): Boolean {
+ return true
+ }
+}
+
+class AvatarPlaceholderDataFetcher(context: Context, private val data: AvatarPlaceholder)
+ : DataFetcher {
+
+ private val avatarRenderer = context.vectorComponent().avatarRenderer()
+
+ override fun loadData(priority: Priority, callback: DataFetcher.DataCallback) {
+ val avatarPlaceholder = avatarRenderer.getPlaceholderDrawable(data.matrixItem)
+ callback.onDataReady(avatarPlaceholder)
+ }
+
+ override fun cleanup() {
+ // NOOP
+ }
+
+ override fun cancel() {
+ // NOOP
+ }
+
+ override fun getDataClass(): Class {
+ return Drawable::class.java
+ }
+
+ override fun getDataSource(): DataSource {
+ return DataSource.LOCAL
+ }
+}
diff --git a/vector/src/main/java/im/vector/app/core/glide/MyAppGlideModule.kt b/vector/src/main/java/im/vector/app/core/glide/MyAppGlideModule.kt
index 6ded33f823..74c9d4f0f6 100644
--- a/vector/src/main/java/im/vector/app/core/glide/MyAppGlideModule.kt
+++ b/vector/src/main/java/im/vector/app/core/glide/MyAppGlideModule.kt
@@ -17,6 +17,7 @@
package im.vector.app.core.glide
import android.content.Context
+import android.graphics.drawable.Drawable
import android.util.Log
import com.bumptech.glide.Glide
@@ -40,5 +41,10 @@ class MyAppGlideModule : AppGlideModule() {
InputStream::class.java,
VectorGlideModelLoaderFactory(context)
)
+ registry.append(
+ AvatarPlaceholder::class.java,
+ Drawable::class.java,
+ AvatarPlaceholderModelLoaderFactory(context)
+ )
}
}
diff --git a/vector/src/main/java/im/vector/app/core/platform/ToolbarConfigurable.kt b/vector/src/main/java/im/vector/app/core/platform/ToolbarConfigurable.kt
index c42a47c40c..9aca8dd17f 100644
--- a/vector/src/main/java/im/vector/app/core/platform/ToolbarConfigurable.kt
+++ b/vector/src/main/java/im/vector/app/core/platform/ToolbarConfigurable.kt
@@ -16,9 +16,9 @@
package im.vector.app.core.platform
-import androidx.appcompat.widget.Toolbar
+import com.google.android.material.appbar.MaterialToolbar
interface ToolbarConfigurable {
- fun configure(toolbar: Toolbar)
+ fun configure(toolbar: MaterialToolbar)
}
diff --git a/vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt b/vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt
index ddfb578e95..899a99c314 100644
--- a/vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt
+++ b/vector/src/main/java/im/vector/app/core/platform/VectorBaseActivity.kt
@@ -32,7 +32,7 @@ import androidx.annotation.MainThread
import androidx.annotation.MenuRes
import androidx.annotation.StringRes
import androidx.appcompat.app.AppCompatActivity
-import androidx.appcompat.widget.Toolbar
+import com.google.android.material.appbar.MaterialToolbar
import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
@@ -519,7 +519,7 @@ abstract class VectorBaseActivity : AppCompatActivity(), HasScr
/**
* Configure the Toolbar, with default back button.
*/
- protected fun configureToolbar(toolbar: Toolbar, displayBack: Boolean = true) {
+ protected fun configureToolbar(toolbar: MaterialToolbar, displayBack: Boolean = true) {
setSupportActionBar(toolbar)
supportActionBar?.let {
it.setDisplayShowHomeEnabled(displayBack)
diff --git a/vector/src/main/java/im/vector/app/core/platform/VectorBaseFragment.kt b/vector/src/main/java/im/vector/app/core/platform/VectorBaseFragment.kt
index b5b6937aad..c513007c3d 100644
--- a/vector/src/main/java/im/vector/app/core/platform/VectorBaseFragment.kt
+++ b/vector/src/main/java/im/vector/app/core/platform/VectorBaseFragment.kt
@@ -29,7 +29,7 @@ import android.view.View
import android.view.ViewGroup
import androidx.annotation.CallSuper
import androidx.annotation.MainThread
-import androidx.appcompat.widget.Toolbar
+import com.google.android.material.appbar.MaterialToolbar
import androidx.lifecycle.ViewModelProvider
import androidx.viewbinding.ViewBinding
import com.airbnb.mvrx.BaseMvRxFragment
@@ -224,7 +224,7 @@ abstract class VectorBaseFragment : BaseMvRxFragment(), HasScre
/**
* Configure the Toolbar.
*/
- protected fun setupToolbar(toolbar: Toolbar) {
+ protected fun setupToolbar(toolbar: MaterialToolbar) {
val parentActivity = vectorBaseActivity
if (parentActivity is ToolbarConfigurable) {
parentActivity.configure(toolbar)
diff --git a/vector/src/main/java/im/vector/app/core/ui/views/NonScrollingTextView.kt b/vector/src/main/java/im/vector/app/core/ui/views/NonScrollingTextView.kt
index 712432abfd..6c9b3d19fc 100644
--- a/vector/src/main/java/im/vector/app/core/ui/views/NonScrollingTextView.kt
+++ b/vector/src/main/java/im/vector/app/core/ui/views/NonScrollingTextView.kt
@@ -18,9 +18,9 @@ package im.vector.app.core.ui.views
import android.content.Context
import android.util.AttributeSet
-import androidx.appcompat.widget.AppCompatTextView
+import com.google.android.material.textview.MaterialTextView
-class NonScrollingTextView : AppCompatTextView {
+class NonScrollingTextView : MaterialTextView {
constructor(context: Context) : super(context)
constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr)
diff --git a/vector/src/main/java/im/vector/app/features/attachments/preview/AttachmentsPreviewActivity.kt b/vector/src/main/java/im/vector/app/features/attachments/preview/AttachmentsPreviewActivity.kt
index f282cc3358..6c25f688bd 100644
--- a/vector/src/main/java/im/vector/app/features/attachments/preview/AttachmentsPreviewActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/attachments/preview/AttachmentsPreviewActivity.kt
@@ -19,7 +19,7 @@ package im.vector.app.features.attachments.preview
import android.content.Context
import android.content.Intent
-import androidx.appcompat.widget.Toolbar
+import com.google.android.material.appbar.MaterialToolbar
import im.vector.app.R
import im.vector.app.core.extensions.addFragment
import im.vector.app.core.platform.ToolbarConfigurable
@@ -72,7 +72,7 @@ class AttachmentsPreviewActivity : VectorBaseActivity(),
finish()
}
- override fun configure(toolbar: Toolbar) {
+ override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
}
diff --git a/vector/src/main/java/im/vector/app/features/call/VectorCallActivity.kt b/vector/src/main/java/im/vector/app/features/call/VectorCallActivity.kt
index 11b3a51c6f..21939bd42b 100644
--- a/vector/src/main/java/im/vector/app/features/call/VectorCallActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/call/VectorCallActivity.kt
@@ -198,18 +198,7 @@ class VectorCallActivity : VectorBaseActivity(), CallContro
}
is CallState.Connected -> {
if (callState.iceConnectionState == MxPeerConnectionState.CONNECTED) {
- if (state.transferee !is VectorCallViewState.TransfereeState.NoTransferee) {
- val transfereeName = if (state.transferee is VectorCallViewState.TransfereeState.KnownTransferee) {
- state.transferee.name
- } else {
- getString(R.string.call_transfer_unknown_person)
- }
- views.callActionText.text = getString(R.string.call_transfer_transfer_to_title, transfereeName)
- views.callActionText.isVisible = true
- views.callActionText.setOnClickListener { callViewModel.handle(VectorCallViewActions.TransferCall) }
- views.callStatusText.text = state.formattedDuration
- configureCallInfo(state)
- } else if (state.isLocalOnHold || state.isRemoteOnHold) {
+ if (state.isLocalOnHold || state.isRemoteOnHold) {
views.smallIsHeldIcon.isVisible = true
views.callVideoGroup.isInvisible = true
views.callInfoGroup.isVisible = true
@@ -221,10 +210,21 @@ class VectorCallActivity : VectorBaseActivity(), CallContro
views.callStatusText.setText(R.string.call_held_by_you)
} else {
views.callActionText.isInvisible = true
- state.callInfo.otherUserItem?.let {
+ state.callInfo?.opponentUserItem?.let {
views.callStatusText.text = getString(R.string.call_held_by_user, it.getBestName())
}
}
+ } else if (state.transferee !is VectorCallViewState.TransfereeState.NoTransferee) {
+ val transfereeName = if (state.transferee is VectorCallViewState.TransfereeState.KnownTransferee) {
+ state.transferee.name
+ } else {
+ getString(R.string.call_transfer_unknown_person)
+ }
+ views.callActionText.text = getString(R.string.call_transfer_transfer_to_title, transfereeName)
+ views.callActionText.isVisible = true
+ views.callActionText.setOnClickListener { callViewModel.handle(VectorCallViewActions.TransferCall) }
+ views.callStatusText.text = state.formattedDuration
+ configureCallInfo(state)
} else {
views.callStatusText.text = state.formattedDuration
configureCallInfo(state)
@@ -255,31 +255,32 @@ class VectorCallActivity : VectorBaseActivity(), CallContro
}
private fun configureCallInfo(state: VectorCallViewState, blurAvatar: Boolean = false) {
- state.callInfo.otherUserItem?.let {
- val colorFilter = ContextCompat.getColor(this, R.color.bg_call_screen)
- avatarRenderer.renderBlur(it, views.bgCallView, sampling = 20, rounded = false, colorFilter = colorFilter)
+ state.callInfo?.opponentUserItem?.let {
+ val colorFilter = ContextCompat.getColor(this, R.color.bg_call_screen_blur)
+ avatarRenderer.renderBlur(it, views.bgCallView, sampling = 20, rounded = false, colorFilter = colorFilter, addPlaceholder = false)
if (state.transferee is VectorCallViewState.TransfereeState.NoTransferee) {
views.participantNameText.text = it.getBestName()
} else {
views.participantNameText.text = getString(R.string.call_transfer_consulting_with, it.getBestName())
}
if (blurAvatar) {
- avatarRenderer.renderBlur(it, views.otherMemberAvatar, sampling = 2, rounded = true, colorFilter = colorFilter)
+ avatarRenderer.renderBlur(it, views.otherMemberAvatar, sampling = 2, rounded = true, colorFilter = colorFilter, addPlaceholder = true)
} else {
avatarRenderer.render(it, views.otherMemberAvatar)
}
}
- if (state.otherKnownCallInfo?.otherUserItem == null) {
+ if (state.otherKnownCallInfo?.opponentUserItem == null) {
views.otherKnownCallLayout.isVisible = false
} else {
val otherCall = callManager.getCallById(state.otherKnownCallInfo.callId)
- val colorFilter = ContextCompat.getColor(this, R.color.bg_call_screen)
+ val colorFilter = ContextCompat.getColor(this, R.color.bg_call_screen_blur)
avatarRenderer.renderBlur(
- matrixItem = state.otherKnownCallInfo.otherUserItem,
+ matrixItem = state.otherKnownCallInfo.opponentUserItem,
imageView = views.otherKnownCallAvatarView,
sampling = 20,
- rounded = false,
- colorFilter = colorFilter
+ rounded = true,
+ colorFilter = colorFilter,
+ addPlaceholder = true
)
views.otherKnownCallLayout.isVisible = true
views.otherSmallIsHeldIcon.isVisible = otherCall?.let { it.isLocalOnHold || it.remoteOnHold }.orFalse()
@@ -288,7 +289,7 @@ class VectorCallActivity : VectorBaseActivity(), CallContro
private fun configureCallViews() {
views.callControlsView.interactionListener = this
- views.otherKnownCallAvatarView.setOnClickListener {
+ views.otherKnownCallLayout.setOnClickListener {
withState(callViewModel) {
val otherCall = callManager.getCallById(it.otherKnownCallInfo?.callId ?: "") ?: return@withState
startActivity(newIntent(this, otherCall, null))
diff --git a/vector/src/main/java/im/vector/app/features/call/VectorCallViewModel.kt b/vector/src/main/java/im/vector/app/features/call/VectorCallViewModel.kt
index 18eda0fd6f..e7b2b629e1 100644
--- a/vector/src/main/java/im/vector/app/features/call/VectorCallViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/call/VectorCallViewModel.kt
@@ -34,11 +34,13 @@ import im.vector.app.features.call.webrtc.getOpponentAsMatrixItem
import kotlinx.coroutines.Job
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
+import org.matrix.android.sdk.api.MatrixPatterns
import org.matrix.android.sdk.api.session.Session
import org.matrix.android.sdk.api.session.call.CallState
import org.matrix.android.sdk.api.session.call.MxCall
import org.matrix.android.sdk.api.session.call.MxPeerConnectionState
import org.matrix.android.sdk.api.session.room.model.call.supportCallTransfer
+import org.matrix.android.sdk.api.util.MatrixItem
class VectorCallViewModel @AssistedInject constructor(
@Assisted initialState: VectorCallViewState,
@@ -87,6 +89,12 @@ class VectorCallViewModel @AssistedInject constructor(
}
}
+ override fun assertedIdentityChanged() {
+ setState {
+ copy(callInfo = call?.extractCallInfo())
+ }
+ }
+
override fun onStateUpdate(call: MxCall) {
val callState = call.state
if (callState is CallState.Connected && callState.iceConnectionState == MxPeerConnectionState.CONNECTED) {
@@ -160,8 +168,7 @@ class VectorCallViewModel @AssistedInject constructor(
if (otherCall == null) {
copy(otherKnownCallInfo = null)
} else {
- val otherUserItem = otherCall.getOpponentAsMatrixItem(session)
- copy(otherKnownCallInfo = VectorCallViewState.CallInfo(otherCall.callId, otherUserItem))
+ copy(otherKnownCallInfo = otherCall.extractCallInfo())
}
}
}
@@ -175,7 +182,6 @@ class VectorCallViewModel @AssistedInject constructor(
} else {
call = webRtcCall
callManager.addCurrentCallListener(currentCallListener)
- val item = webRtcCall.getOpponentAsMatrixItem(session)
webRtcCall.addListener(callListener)
val currentSoundDevice = callManager.audioManager.selectedDevice
if (currentSoundDevice == CallAudioManager.Device.PHONE) {
@@ -185,7 +191,7 @@ class VectorCallViewModel @AssistedInject constructor(
copy(
isVideoCall = webRtcCall.mxCall.isVideoCall,
callState = Success(webRtcCall.mxCall.state),
- callInfo = VectorCallViewState.CallInfo(callId, item),
+ callInfo = webRtcCall.extractCallInfo(),
device = currentSoundDevice ?: CallAudioManager.Device.PHONE,
isLocalOnHold = webRtcCall.isLocalOnHold,
isRemoteOnHold = webRtcCall.remoteOnHold,
@@ -202,6 +208,22 @@ class VectorCallViewModel @AssistedInject constructor(
}
}
+ private fun WebRtcCall.extractCallInfo(): VectorCallViewState.CallInfo {
+ val assertedIdentity = this.remoteAssertedIdentity
+ val matrixItem = if (assertedIdentity != null) {
+ val userId = if (MatrixPatterns.isUserId(assertedIdentity.id)) {
+ assertedIdentity.id!!
+ } else {
+ // Need an id starting with @
+ "@${assertedIdentity.displayName}"
+ }
+ MatrixItem.UserItem(userId, assertedIdentity.displayName, assertedIdentity.avatarUrl)
+ } else {
+ getOpponentAsMatrixItem(session)
+ }
+ return VectorCallViewState.CallInfo(callId, matrixItem)
+ }
+
override fun onCleared() {
callManager.removeCurrentCallListener(currentCallListener)
call?.removeListener(callListener)
diff --git a/vector/src/main/java/im/vector/app/features/call/VectorCallViewState.kt b/vector/src/main/java/im/vector/app/features/call/VectorCallViewState.kt
index c5ae61cf60..3e7791cc08 100644
--- a/vector/src/main/java/im/vector/app/features/call/VectorCallViewState.kt
+++ b/vector/src/main/java/im/vector/app/features/call/VectorCallViewState.kt
@@ -39,7 +39,7 @@ data class VectorCallViewState(
val availableDevices: Set = emptySet(),
val callState: Async = Uninitialized,
val otherKnownCallInfo: CallInfo? = null,
- val callInfo: CallInfo = CallInfo(callId),
+ val callInfo: CallInfo? = null,
val formattedDuration: String = "",
val canOpponentBeTransferred: Boolean = false,
val transferee: TransfereeState = TransfereeState.NoTransferee
@@ -53,7 +53,7 @@ data class VectorCallViewState(
data class CallInfo(
val callId: String,
- val otherUserItem: MatrixItem? = null
+ val opponentUserItem: MatrixItem? = null
)
constructor(callArgs: CallArgs) : this(
diff --git a/vector/src/main/java/im/vector/app/features/call/dialpad/CallDialPadBottomSheet.kt b/vector/src/main/java/im/vector/app/features/call/dialpad/CallDialPadBottomSheet.kt
index 06b4dbfe7b..e7c8602698 100644
--- a/vector/src/main/java/im/vector/app/features/call/dialpad/CallDialPadBottomSheet.kt
+++ b/vector/src/main/java/im/vector/app/features/call/dialpad/CallDialPadBottomSheet.kt
@@ -61,6 +61,7 @@ class CallDialPadBottomSheet : VectorBaseBottomSheetDialogFragment(R.id.dialpad_view) as DialpadView
dialpadView.findViewById(R.id.dialpad_key_voicemail).isVisible = false
- digits = dialpadView.digits as? DigitsEditText
- digits?.isCursorVisible = cursorVisible
- digits?.setTextColor(ThemeUtils.getColor(requireContext(), im.vector.app.R.attr.vctr_content_primary))
- dialpadView.findViewById(R.id.zero).setOnClickListener { append('0') }
- if (enablePlus) {
- dialpadView.findViewById(R.id.zero).setOnLongClickListener {
- append('+')
- true
- }
- }
- dialpadView.findViewById(R.id.one).setOnClickListener { append('1') }
- dialpadView.findViewById(R.id.two).setOnClickListener { append('2') }
- dialpadView.findViewById(R.id.three).setOnClickListener { append('3') }
- dialpadView.findViewById(R.id.four).setOnClickListener { append('4') }
- dialpadView.findViewById(R.id.four).setOnClickListener { append('4') }
- dialpadView.findViewById(R.id.five).setOnClickListener { append('5') }
- dialpadView.findViewById(R.id.six).setOnClickListener { append('6') }
- dialpadView.findViewById(R.id.seven).setOnClickListener { append('7') }
- dialpadView.findViewById(R.id.eight).setOnClickListener { append('8') }
- dialpadView.findViewById(R.id.nine).setOnClickListener { append('9') }
+ digits = dialpadView.digits as DigitsEditText
+ digits.isCursorVisible = cursorVisible
+ digits.inputType = InputType.TYPE_CLASS_PHONE
+ digits.keyListener = DialerKeyListener.getInstance()
+ digits.setTextColor(ThemeUtils.getColor(requireContext(), R.attr.vctr_content_primary))
+ digits.addTextChangedListener(PhoneNumberFormattingTextWatcher(if (formatAsYouType) regionCode else ""))
+ digits.addTextChangedListener(this)
+ dialpadView.findViewById(R.id.zero).setOnClickListener { keyPressed(KeyEvent.KEYCODE_0, "0") }
+ dialpadView.findViewById(R.id.one).setOnClickListener { keyPressed(KeyEvent.KEYCODE_1, "1") }
+ dialpadView.findViewById(R.id.two).setOnClickListener { keyPressed(KeyEvent.KEYCODE_2, "2") }
+ dialpadView.findViewById(R.id.three).setOnClickListener { keyPressed(KeyEvent.KEYCODE_3, "3") }
+ dialpadView.findViewById(R.id.four).setOnClickListener { keyPressed(KeyEvent.KEYCODE_4, "4") }
+ dialpadView.findViewById(R.id.five).setOnClickListener { keyPressed(KeyEvent.KEYCODE_5, "5") }
+ dialpadView.findViewById(R.id.six).setOnClickListener { keyPressed(KeyEvent.KEYCODE_6, "6") }
+ dialpadView.findViewById(R.id.seven).setOnClickListener { keyPressed(KeyEvent.KEYCODE_7, "7") }
+ dialpadView.findViewById(R.id.eight).setOnClickListener { keyPressed(KeyEvent.KEYCODE_8, "8") }
+ dialpadView.findViewById(R.id.nine).setOnClickListener { keyPressed(KeyEvent.KEYCODE_9, "9") }
if (enableStar) {
- dialpadView.findViewById(R.id.star).setOnClickListener { append('*') }
+ dialpadView.findViewById(R.id.star).setOnClickListener { keyPressed(KeyEvent.KEYCODE_STAR, "*") }
} else {
dialpadView.findViewById(R.id.star).isVisible = false
}
if (enablePound) {
- dialpadView.findViewById(R.id.pound).setOnClickListener { append('#') }
+ dialpadView.findViewById(R.id.pound).setOnClickListener { keyPressed(KeyEvent.KEYCODE_POUND, "#") }
} else {
dialpadView.findViewById(R.id.pound).isVisible = false
}
+ if (enablePlus) {
+ dialpadView.findViewById(R.id.zero).setOnLongClickListener {
+ keyPressed(KeyEvent.KEYCODE_PLUS, "+")
+ true
+ }
+ }
if (enableDelete) {
- dialpadView.deleteButton.setOnClickListener { poll() }
+ dialpadView.deleteButton.setOnClickListener { keyPressed(KeyEvent.KEYCODE_DEL, null) }
dialpadView.deleteButton.setOnLongClickListener {
clear()
true
}
- val tintColor = ThemeUtils.getColor(requireContext(), im.vector.app.R.attr.vctr_content_secondary)
+ val tintColor = ThemeUtils.getColor(requireContext(), R.attr.vctr_content_secondary)
ImageViewCompat.setImageTintList(dialpadView.deleteButton, ColorStateList.valueOf(tintColor))
} else {
dialpadView.deleteButton.isVisible = false
}
-
- // if region code is null, no formatting is performed
- formatter = PhoneNumberUtil.getInstance().getAsYouTypeFormatter(if (formatAsYouType) regionCode else "")
-
val fabOk = view.findViewById(R.id.fab_ok)
if (enableFabOk) {
- fabOk.setOnClickListener {
- callback?.onOkClicked(digits?.text.toString(), input)
- }
+ fabOk.setOnClickListener { onOkClicked() }
} else {
fabOk.isVisible = false
}
-
- digits?.setOnTextContextMenuClickListener {
- val string = digits?.text.toString()
- clear()
- for (element in string) {
- append(element)
- }
- }
return view
}
+ private fun onOkClicked() {
+ val rawInput = getRawInput()
+ if (rawInput.isEmpty()) {
+ val clipboard = requireContext().getSystemService()
+ val textToPaste = clipboard?.primaryClip?.getItemAt(0)?.text ?: return
+ val formatted = formatNumber(textToPaste.toString())
+ digits.setText(formatted)
+ digits.setSelection(digits.text!!.length)
+ } else {
+ val formatted = digits.text.toString()
+ callback?.onOkClicked(formatted, rawInput)
+ }
+ }
+
+ fun getRawInput(): String {
+ return PhoneNumberUtils.normalizeNumber(digits.text.toString())
+ }
+
override fun onSaveInstanceState(outState: Bundle) {
super.onSaveInstanceState(outState)
outState.putString(EXTRA_REGION_CODE, regionCode)
@@ -145,40 +159,35 @@ class DialPadFragment : Fragment() {
}
}
- private fun poll() {
- if (input.isNotEmpty()) {
- input = input.substring(0, input.length - 1)
- formatter = PhoneNumberUtil.getInstance().getAsYouTypeFormatter(regionCode)
- if (formatAsYouType) {
- digits?.setText("")
- for (c in input.toCharArray()) {
- digits?.setText(formatter?.inputDigit(c))
- }
- } else {
- digits?.setText(input)
- }
+ private fun keyPressed(keyCode: Int, digitString: String?) {
+ val event = KeyEvent(KeyEvent.ACTION_DOWN, keyCode)
+ // Disable cursor and enable it again after onKeyDown otherwise DigitsEditText force replacing cursor at the end
+ digits.isCursorVisible = false
+ digits.onKeyDown(keyCode, event)
+ digits.isCursorVisible = cursorVisible
+ digitString?.also {
+ callback?.onDigitAppended(it)
}
}
private fun clear() {
- formatter?.clear()
- digits?.setText("")
- input = ""
+ digits.setText("")
}
- private fun append(c: Char) {
- callback?.onDigitAppended(c.toString())
- input += c
- if (formatAsYouType) {
- digits?.setText(formatter?.inputDigit(c))
- } else {
- digits?.setText(input)
+ private fun formatNumber(dialString: String): String {
+ val networkPortion = PhoneNumberUtils.extractNetworkPortion(dialString)
+ if (TextUtils.isEmpty(networkPortion)) {
+ return ""
}
+ val number = PhoneNumberUtils.formatNumber(networkPortion, null, regionCode) ?: networkPortion
+ // Also retrieve the post dial portion of the provided data, so that the entire dial string can be reconstituted
+ val postDial = PhoneNumberUtils.extractPostDialPortion(dialString)
+ return number + postDial
}
interface Callback {
- fun onOkClicked(formatted: String?, raw: String?) = Unit
fun onDigitAppended(digit: String) = Unit
+ fun onOkClicked(formatted: String?, raw: String?) = Unit
}
companion object {
@@ -193,4 +202,20 @@ class DialPadFragment : Fragment() {
private const val DEFAULT_REGION_CODE = "US"
}
+
+ // Text watcher
+
+ override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) {
+ // Noop
+ }
+
+ override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) {
+ // Noop
+ }
+
+ override fun afterTextChanged(s: Editable) {
+ if (s.isEmpty()) {
+ digits.clearFocus()
+ }
+ }
}
diff --git a/vector/src/main/java/im/vector/app/features/call/dialpad/DialPadLookup.kt b/vector/src/main/java/im/vector/app/features/call/dialpad/DialPadLookup.kt
index 4ed1e4a0db..4f025dc239 100644
--- a/vector/src/main/java/im/vector/app/features/call/dialpad/DialPadLookup.kt
+++ b/vector/src/main/java/im/vector/app/features/call/dialpad/DialPadLookup.kt
@@ -17,10 +17,11 @@
package im.vector.app.features.call.dialpad
import im.vector.app.features.call.lookup.pstnLookup
+import im.vector.app.features.call.lookup.sipNativeLookup
+import im.vector.app.features.call.vectorCallService
import im.vector.app.features.call.webrtc.WebRtcCallManager
import im.vector.app.features.createdirect.DirectRoomHelper
import org.matrix.android.sdk.api.session.Session
-import java.lang.IllegalStateException
import javax.inject.Inject
class DialPadLookup @Inject constructor(
@@ -28,13 +29,25 @@ class DialPadLookup @Inject constructor(
private val webRtcCallManager: WebRtcCallManager,
private val directRoomHelper: DirectRoomHelper
) {
- class Failure : Throwable()
+ sealed class Failure : Throwable() {
+ object NoResult: Failure()
+ object NumberIsYours: Failure()
+ }
data class Result(val userId: String, val roomId: String)
suspend fun lookupPhoneNumber(phoneNumber: String): Result {
- val thirdPartyUser = session.pstnLookup(phoneNumber, webRtcCallManager.supportedPSTNProtocol).firstOrNull() ?: throw IllegalStateException()
- val roomId = directRoomHelper.ensureDMExists(thirdPartyUser.userId)
- return Result(userId = thirdPartyUser.userId, roomId = roomId)
+ session.vectorCallService.protocolChecker.awaitCheckProtocols()
+ val thirdPartyUser = session.pstnLookup(phoneNumber, webRtcCallManager.supportedPSTNProtocol).firstOrNull() ?: throw Failure.NoResult
+ // check to see if this is a virtual user, in which case we should find the native user
+ val nativeUserId = if (webRtcCallManager.supportsVirtualRooms) {
+ val nativeLookupResults = session.sipNativeLookup(thirdPartyUser.userId)
+ nativeLookupResults.firstOrNull()?.userId ?: thirdPartyUser.userId
+ } else {
+ thirdPartyUser.userId
+ }
+ if (nativeUserId == session.myUserId) throw Failure.NumberIsYours
+ val roomId = directRoomHelper.ensureDMExists(nativeUserId)
+ return Result(userId = nativeUserId, roomId = roomId)
}
}
diff --git a/vector/src/main/java/im/vector/app/features/call/lookup/ThirdPartyLookup.kt b/vector/src/main/java/im/vector/app/features/call/lookup/ThirdPartyLookup.kt
index 1e9834059f..dfdc58f78f 100644
--- a/vector/src/main/java/im/vector/app/features/call/lookup/ThirdPartyLookup.kt
+++ b/vector/src/main/java/im/vector/app/features/call/lookup/ThirdPartyLookup.kt
@@ -16,10 +16,13 @@
package im.vector.app.features.call.lookup
+import org.matrix.android.sdk.api.extensions.orFalse
import org.matrix.android.sdk.api.extensions.tryOrNull
import org.matrix.android.sdk.api.session.Session
import org.matrix.android.sdk.api.session.thirdparty.model.ThirdPartyUser
+private const val LOOKUP_SUCCESS_FIELD = "lookup_success"
+
suspend fun Session.pstnLookup(phoneNumber: String, protocol: String?): List {
if (protocol == null) return emptyList()
return tryOrNull {
@@ -36,7 +39,11 @@ suspend fun Session.sipVirtualLookup(nativeMxid: String): List {
protocol = PROTOCOL_SIP_VIRTUAL,
fields = mapOf("native_mxid" to nativeMxid)
)
- }.orEmpty()
+ }
+ .orEmpty()
+ .filter {
+ (it.fields[LOOKUP_SUCCESS_FIELD] as? Boolean).orFalse()
+ }
}
suspend fun Session.sipNativeLookup(virtualMxid: String): List {
@@ -45,5 +52,9 @@ suspend fun Session.sipNativeLookup(virtualMxid: String): List {
protocol = PROTOCOL_SIP_NATIVE,
fields = mapOf("virtual_mxid" to virtualMxid)
)
- }.orEmpty()
+ }
+ .orEmpty()
+ .filter {
+ (it.fields[LOOKUP_SUCCESS_FIELD] as? Boolean).orFalse()
+ }
}
diff --git a/vector/src/main/java/im/vector/app/features/call/transfer/CallTransferActivity.kt b/vector/src/main/java/im/vector/app/features/call/transfer/CallTransferActivity.kt
index 7f59a1c89b..c80b21334a 100644
--- a/vector/src/main/java/im/vector/app/features/call/transfer/CallTransferActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/call/transfer/CallTransferActivity.kt
@@ -79,24 +79,20 @@ class CallTransferActivity : VectorBaseActivity(),
waitingView = views.waitingView.waitingView
callTransferViewModel.observeViewEvents {
- when (it) {
+ when (it) {
is CallTransferViewEvents.Dismiss -> finish()
CallTransferViewEvents.Loading -> showWaitingView()
is CallTransferViewEvents.FailToTransfer -> showSnackbar(getString(R.string.call_transfer_failure))
}
}
- sectionsPagerAdapter = CallTransferPagerAdapter(this).register()
+ sectionsPagerAdapter = CallTransferPagerAdapter(this)
views.callTransferViewPager.adapter = sectionsPagerAdapter
- sectionsPagerAdapter.onDialPadOkClicked = { phoneNumber ->
- val action = CallTransferAction.ConnectWithPhoneNumber(views.callTransferConsultCheckBox.isChecked, phoneNumber)
- callTransferViewModel.handle(action)
- }
TabLayoutMediator(views.callTransferTabLayout, views.callTransferViewPager) { tab, position ->
when (position) {
- 0 -> tab.text = getString(R.string.call_transfer_users_tab_title)
- 1 -> tab.text = getString(R.string.call_dial_pad_title)
+ CallTransferPagerAdapter.USER_LIST_INDEX -> tab.text = getString(R.string.call_transfer_users_tab_title)
+ CallTransferPagerAdapter.DIAL_PAD_INDEX -> tab.text = getString(R.string.call_dial_pad_title)
}
}.attach()
configureToolbar(views.callTransferToolbar)
@@ -106,10 +102,17 @@ class CallTransferActivity : VectorBaseActivity(),
private fun setupConnectAction() {
views.callTransferConnectAction.debouncedClicks {
- val selectedUser = sectionsPagerAdapter.userListFragment?.getCurrentState()?.getSelectedMatrixId()?.firstOrNull()
- if (selectedUser != null) {
- val action = CallTransferAction.ConnectWithUserId(views.callTransferConsultCheckBox.isChecked, selectedUser)
- callTransferViewModel.handle(action)
+ when (views.callTransferTabLayout.selectedTabPosition) {
+ CallTransferPagerAdapter.USER_LIST_INDEX -> {
+ val selectedUser = sectionsPagerAdapter.userListFragment?.getCurrentState()?.getSelectedMatrixId()?.firstOrNull() ?: return@debouncedClicks
+ val action = CallTransferAction.ConnectWithUserId(views.callTransferConsultCheckBox.isChecked, selectedUser)
+ callTransferViewModel.handle(action)
+ }
+ CallTransferPagerAdapter.DIAL_PAD_INDEX -> {
+ val phoneNumber = sectionsPagerAdapter.dialPadFragment?.getRawInput() ?: return@debouncedClicks
+ val action = CallTransferAction.ConnectWithPhoneNumber(views.callTransferConsultCheckBox.isChecked, phoneNumber)
+ callTransferViewModel.handle(action)
+ }
}
}
}
diff --git a/vector/src/main/java/im/vector/app/features/call/transfer/CallTransferPagerAdapter.kt b/vector/src/main/java/im/vector/app/features/call/transfer/CallTransferPagerAdapter.kt
index 1f2d3070dd..2bb544bdbb 100644
--- a/vector/src/main/java/im/vector/app/features/call/transfer/CallTransferPagerAdapter.kt
+++ b/vector/src/main/java/im/vector/app/features/call/transfer/CallTransferPagerAdapter.kt
@@ -21,7 +21,6 @@ import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.viewpager2.adapter.FragmentStateAdapter
import im.vector.app.core.extensions.toMvRxBundle
-import im.vector.app.core.platform.Restorable
import im.vector.app.features.call.dialpad.DialPadFragment
import im.vector.app.features.settings.VectorLocale
import im.vector.app.features.userdirectory.UserListFragment
@@ -29,14 +28,17 @@ import im.vector.app.features.userdirectory.UserListFragmentArgs
class CallTransferPagerAdapter(
private val fragmentActivity: FragmentActivity
-) : FragmentStateAdapter(fragmentActivity), Restorable {
+) : FragmentStateAdapter(fragmentActivity) {
+
+ companion object {
+ const val USER_LIST_INDEX = 0
+ const val DIAL_PAD_INDEX = 1
+ }
val userListFragment: UserListFragment?
- get() = findFragmentAtPosition(0) as? UserListFragment
+ get() = findFragmentAtPosition(USER_LIST_INDEX) as? UserListFragment
val dialPadFragment: DialPadFragment?
- get() = findFragmentAtPosition(1) as? DialPadFragment
-
- var onDialPadOkClicked: ((String) -> Unit)? = null
+ get() = findFragmentAtPosition(DIAL_PAD_INDEX) as? DialPadFragment
override fun getItemCount() = 2
@@ -57,10 +59,9 @@ class CallTransferPagerAdapter(
(fragment as DialPadFragment).apply {
arguments = Bundle().apply {
putBoolean(DialPadFragment.EXTRA_ENABLE_DELETE, true)
- putBoolean(DialPadFragment.EXTRA_ENABLE_OK, true)
+ putBoolean(DialPadFragment.EXTRA_ENABLE_OK, false)
putString(DialPadFragment.EXTRA_REGION_CODE, VectorLocale.applicationLocale.country)
}
- applyCallback()
}
}
return fragment
@@ -69,20 +70,4 @@ class CallTransferPagerAdapter(
private fun findFragmentAtPosition(position: Int): Fragment? {
return fragmentActivity.supportFragmentManager.findFragmentByTag("f$position")
}
-
- override fun onSaveInstanceState(outState: Bundle) = Unit
-
- override fun onRestoreInstanceState(savedInstanceState: Bundle?) {
- dialPadFragment?.applyCallback()
- }
-
- private fun DialPadFragment.applyCallback(): DialPadFragment {
- callback = object : DialPadFragment.Callback {
- override fun onOkClicked(formatted: String?, raw: String?) {
- if (raw.isNullOrEmpty()) return
- onDialPadOkClicked?.invoke(raw)
- }
- }
- return this
- }
}
diff --git a/vector/src/main/java/im/vector/app/features/call/webrtc/WebRtcCall.kt b/vector/src/main/java/im/vector/app/features/call/webrtc/WebRtcCall.kt
index f2a008feb7..d3a9dd7edf 100644
--- a/vector/src/main/java/im/vector/app/features/call/webrtc/WebRtcCall.kt
+++ b/vector/src/main/java/im/vector/app/features/call/webrtc/WebRtcCall.kt
@@ -27,6 +27,7 @@ import im.vector.app.features.call.CameraProxy
import im.vector.app.features.call.CameraType
import im.vector.app.features.call.CaptureFormat
import im.vector.app.features.call.VectorCallActivity
+import im.vector.app.features.call.lookup.sipNativeLookup
import im.vector.app.features.call.utils.asWebRTC
import im.vector.app.features.call.utils.awaitCreateAnswer
import im.vector.app.features.call.utils.awaitCreateOffer
@@ -51,6 +52,7 @@ import org.matrix.android.sdk.api.session.call.MxCall
import org.matrix.android.sdk.api.session.call.MxPeerConnectionState
import org.matrix.android.sdk.api.session.call.TurnServerResponse
import org.matrix.android.sdk.api.session.room.model.call.CallAnswerContent
+import org.matrix.android.sdk.api.session.room.model.call.CallAssertedIdentityContent
import org.matrix.android.sdk.api.session.room.model.call.CallCandidatesContent
import org.matrix.android.sdk.api.session.room.model.call.CallHangupContent
import org.matrix.android.sdk.api.session.room.model.call.CallInviteContent
@@ -104,6 +106,7 @@ class WebRtcCall(
fun onCaptureStateChanged() {}
fun onCameraChanged() {}
fun onHoldUnhold() {}
+ fun assertedIdentityChanged() {}
fun onTick(formattedDuration: String) {}
override fun onStateUpdate(call: MxCall) {}
}
@@ -168,6 +171,8 @@ class WebRtcCall(
// This value is used to track localOnHold when changing remoteOnHold value
private var wasLocalOnHold = false
+ var remoteAssertedIdentity: CallAssertedIdentityContent.AssertedIdentity? = null
+ private set
var offerSdp: CallInviteContent.Offer? = null
@@ -618,7 +623,7 @@ class WebRtcCall(
wasLocalOnHold = isLocalOnHold
remoteOnHold = true
isLocalOnHold = true
- direction = RtpTransceiver.RtpTransceiverDirection.INACTIVE
+ direction = RtpTransceiver.RtpTransceiverDirection.SEND_ONLY
timer.pause()
} else {
remoteOnHold = false
@@ -877,6 +882,38 @@ class WebRtcCall(
}
}
+ fun onCallAssertedIdentityReceived(callAssertedIdentityContent: CallAssertedIdentityContent) {
+ sessionScope?.launch(dispatcher) {
+ val session = sessionProvider.get() ?: return@launch
+ val newAssertedIdentity = callAssertedIdentityContent.assertedIdentity ?: return@launch
+ if (newAssertedIdentity.id == null && newAssertedIdentity.displayName == null) {
+ Timber.v("Asserted identity received with no relevant information, skip")
+ return@launch
+ }
+ remoteAssertedIdentity = newAssertedIdentity
+ if (newAssertedIdentity.id != null) {
+ val nativeUserId = session.sipNativeLookup(newAssertedIdentity.id!!).firstOrNull()?.userId
+ if (nativeUserId != null) {
+ val resolvedUser = tryOrNull {
+ session.resolveUser(nativeUserId)
+ }
+ if (resolvedUser != null) {
+ remoteAssertedIdentity = newAssertedIdentity.copy(
+ id = nativeUserId,
+ avatarUrl = resolvedUser.avatarUrl,
+ displayName = resolvedUser.displayName
+ )
+ } else {
+ remoteAssertedIdentity = newAssertedIdentity.copy(id = nativeUserId)
+ }
+ }
+ }
+ listeners.forEach {
+ tryOrNull { it.assertedIdentityChanged() }
+ }
+ }
+ }
+
// MxCall.StateListener
override fun onStateUpdate(call: MxCall) {
diff --git a/vector/src/main/java/im/vector/app/features/call/webrtc/WebRtcCallManager.kt b/vector/src/main/java/im/vector/app/features/call/webrtc/WebRtcCallManager.kt
index 3c18d97937..25463428e9 100644
--- a/vector/src/main/java/im/vector/app/features/call/webrtc/WebRtcCallManager.kt
+++ b/vector/src/main/java/im/vector/app/features/call/webrtc/WebRtcCallManager.kt
@@ -21,6 +21,7 @@ import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import im.vector.app.ActiveSessionDataSource
+import im.vector.app.BuildConfig
import im.vector.app.core.services.CallService
import im.vector.app.features.call.VectorCallActivity
import im.vector.app.features.call.audio.CallAudioManager
@@ -37,6 +38,7 @@ import org.matrix.android.sdk.api.session.call.CallListener
import org.matrix.android.sdk.api.session.call.CallState
import org.matrix.android.sdk.api.session.call.MxCall
import org.matrix.android.sdk.api.session.room.model.call.CallAnswerContent
+import org.matrix.android.sdk.api.session.room.model.call.CallAssertedIdentityContent
import org.matrix.android.sdk.api.session.room.model.call.CallCandidatesContent
import org.matrix.android.sdk.api.session.room.model.call.CallHangupContent
import org.matrix.android.sdk.api.session.room.model.call.CallInviteContent
@@ -420,4 +422,15 @@ class WebRtcCallManager @Inject constructor(
Timber.v("## VOIP onCallManagedByOtherSession: $callId")
onCallEnded(callId)
}
+
+ override fun onCallAssertedIdentityReceived(callAssertedIdentityContent: CallAssertedIdentityContent) {
+ if (!BuildConfig.handleCallAssertedIdentityEvents) {
+ return
+ }
+ val call = callsByCallId[callAssertedIdentityContent.callId]
+ ?: return Unit.also {
+ Timber.w("onCallAssertedIdentityReceived for non active call? ${callAssertedIdentityContent.callId}")
+ }
+ call.onCallAssertedIdentityReceived(callAssertedIdentityContent)
+ }
}
diff --git a/vector/src/main/java/im/vector/app/features/crypto/keys/KeysExporter.kt b/vector/src/main/java/im/vector/app/features/crypto/keys/KeysExporter.kt
index c7e4c26385..2c66a14cb4 100644
--- a/vector/src/main/java/im/vector/app/features/crypto/keys/KeysExporter.kt
+++ b/vector/src/main/java/im/vector/app/features/crypto/keys/KeysExporter.kt
@@ -18,35 +18,24 @@ package im.vector.app.features.crypto.keys
import android.content.Context
import android.net.Uri
-import im.vector.app.features.session.coroutineScope
import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
-import org.matrix.android.sdk.api.MatrixCallback
import org.matrix.android.sdk.api.session.Session
-import org.matrix.android.sdk.internal.extensions.foldToCallback
-import org.matrix.android.sdk.internal.util.awaitCallback
-
-class KeysExporter(private val session: Session) {
+import javax.inject.Inject
+class KeysExporter @Inject constructor(
+ private val session: Session,
+ private val context: Context
+) {
/**
- * Export keys and return the file path with the callback
+ * Export keys and write them to the provided uri
*/
- fun export(context: Context, password: String, uri: Uri, callback: MatrixCallback) {
- session.coroutineScope.launch(Dispatchers.Main) {
- runCatching {
- withContext(Dispatchers.IO) {
- val data = awaitCallback { session.cryptoService().exportRoomKeys(password, it) }
- val os = context.contentResolver?.openOutputStream(uri)
- if (os == null) {
- false
- } else {
- os.write(data)
- os.flush()
- true
- }
- }
- }.foldToCallback(callback)
+ suspend fun export(password: String, uri: Uri) {
+ return withContext(Dispatchers.IO) {
+ val data = session.cryptoService().exportRoomKeys(password)
+ context.contentResolver.openOutputStream(uri)
+ ?.use { it.write(data) }
+ ?: throw IllegalStateException("Unable to open file for writting")
}
}
}
diff --git a/vector/src/main/java/im/vector/app/features/crypto/keys/KeysImporter.kt b/vector/src/main/java/im/vector/app/features/crypto/keys/KeysImporter.kt
index 3d93b26edd..50c85c3e5f 100644
--- a/vector/src/main/java/im/vector/app/features/crypto/keys/KeysImporter.kt
+++ b/vector/src/main/java/im/vector/app/features/crypto/keys/KeysImporter.kt
@@ -20,49 +20,27 @@ import android.content.Context
import android.net.Uri
import im.vector.app.core.intent.getMimeTypeFromUri
import im.vector.app.core.resources.openResource
-import im.vector.app.features.session.coroutineScope
import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
-import org.matrix.android.sdk.api.MatrixCallback
import org.matrix.android.sdk.api.session.Session
import org.matrix.android.sdk.internal.crypto.model.ImportRoomKeysResult
-import org.matrix.android.sdk.internal.extensions.foldToCallback
-import org.matrix.android.sdk.internal.util.awaitCallback
-import timber.log.Timber
-
-class KeysImporter(private val session: Session) {
+import javax.inject.Inject
+class KeysImporter @Inject constructor(
+ private val context: Context,
+ private val session: Session
+) {
/**
* Import keys from provided Uri
*/
- fun import(context: Context,
- uri: Uri,
- mimetype: String?,
- password: String,
- callback: MatrixCallback) {
- session.coroutineScope.launch(Dispatchers.Main) {
- runCatching {
- withContext(Dispatchers.IO) {
- val resource = openResource(context, uri, mimetype ?: getMimeTypeFromUri(context, uri))
-
- if (resource?.mContentStream == null) {
- throw Exception("Error")
- }
-
- val data: ByteArray
- try {
- data = resource.mContentStream!!.use { it.readBytes() }
- } catch (e: Exception) {
- Timber.e(e, "## importKeys()")
- throw e
- }
-
- awaitCallback {
- session.cryptoService().importRoomKeys(data, password, null, it)
- }
- }
- }.foldToCallback(callback)
+ suspend fun import(uri: Uri,
+ mimetype: String?,
+ password: String): ImportRoomKeysResult {
+ return withContext(Dispatchers.IO) {
+ val resource = openResource(context, uri, mimetype ?: getMimeTypeFromUri(context, uri))
+ val stream = resource?.mContentStream ?: throw Exception("Error")
+ val data = stream.use { it.readBytes() }
+ session.cryptoService().importRoomKeys(data, password, null)
}
}
}
diff --git a/vector/src/main/java/im/vector/app/features/crypto/keysbackup/restore/KeysBackupRestoreSharedViewModel.kt b/vector/src/main/java/im/vector/app/features/crypto/keysbackup/restore/KeysBackupRestoreSharedViewModel.kt
index f8290c0321..c323024bd9 100644
--- a/vector/src/main/java/im/vector/app/features/crypto/keysbackup/restore/KeysBackupRestoreSharedViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/crypto/keysbackup/restore/KeysBackupRestoreSharedViewModel.kt
@@ -252,7 +252,7 @@ class KeysBackupRestoreSharedViewModel @Inject constructor(
}
private fun isBackupKeyInQuadS(): Boolean {
- val sssBackupSecret = session.userAccountDataService().getAccountDataEvent(KEYBACKUP_SECRET_SSSS_NAME)
+ val sssBackupSecret = session.accountDataService().getUserAccountDataEvent(KEYBACKUP_SECRET_SSSS_NAME)
?: return false
// Some sanity ?
diff --git a/vector/src/main/java/im/vector/app/features/crypto/keysbackup/setup/KeysBackupSetupActivity.kt b/vector/src/main/java/im/vector/app/features/crypto/keysbackup/setup/KeysBackupSetupActivity.kt
index 586c461fac..7cc46ef62c 100644
--- a/vector/src/main/java/im/vector/app/features/crypto/keysbackup/setup/KeysBackupSetupActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/crypto/keysbackup/setup/KeysBackupSetupActivity.kt
@@ -18,10 +18,13 @@ package im.vector.app.features.crypto.keysbackup.setup
import android.app.Activity
import android.content.Context
import android.content.Intent
+import android.net.Uri
import androidx.core.view.isVisible
import androidx.fragment.app.FragmentManager
+import androidx.lifecycle.lifecycleScope
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import im.vector.app.R
+import im.vector.app.core.di.ScreenComponent
import im.vector.app.core.dialogs.ExportKeysDialog
import im.vector.app.core.extensions.observeEvent
import im.vector.app.core.extensions.queryExportKeys
@@ -30,7 +33,8 @@ import im.vector.app.core.extensions.replaceFragment
import im.vector.app.core.platform.SimpleFragmentActivity
import im.vector.app.core.utils.toast
import im.vector.app.features.crypto.keys.KeysExporter
-import org.matrix.android.sdk.api.MatrixCallback
+import kotlinx.coroutines.launch
+import javax.inject.Inject
class KeysBackupSetupActivity : SimpleFragmentActivity() {
@@ -38,6 +42,13 @@ class KeysBackupSetupActivity : SimpleFragmentActivity() {
private lateinit var viewModel: KeysBackupSetupSharedViewModel
+ @Inject lateinit var keysExporter: KeysExporter
+
+ override fun injectWith(injector: ScreenComponent) {
+ super.injectWith(injector)
+ injector.inject(this)
+ }
+
override fun initUiAndData() {
super.initUiAndData()
if (isFirstCreation()) {
@@ -132,30 +143,7 @@ class KeysBackupSetupActivity : SimpleFragmentActivity() {
ExportKeysDialog().show(this, object : ExportKeysDialog.ExportKeyDialogListener {
override fun onPassphrase(passphrase: String) {
showWaitingView()
-
- KeysExporter(session)
- .export(this@KeysBackupSetupActivity,
- passphrase,
- uri,
- object : MatrixCallback {
- override fun onSuccess(data: Boolean) {
- if (data) {
- toast(getString(R.string.encryption_exported_successfully))
- Intent().apply {
- putExtra(MANUAL_EXPORT, true)
- }.let {
- setResult(Activity.RESULT_OK, it)
- finish()
- }
- }
- hideWaitingView()
- }
-
- override fun onFailure(failure: Throwable) {
- toast(failure.localizedMessage ?: getString(R.string.unexpected_error))
- hideWaitingView()
- }
- })
+ export(passphrase, uri)
}
})
} else {
@@ -165,6 +153,20 @@ class KeysBackupSetupActivity : SimpleFragmentActivity() {
}
}
+ private fun export(passphrase: String, uri: Uri) {
+ lifecycleScope.launch {
+ try {
+ keysExporter.export(passphrase, uri)
+ toast(getString(R.string.encryption_exported_successfully))
+ setResult(Activity.RESULT_OK, Intent().apply { putExtra(MANUAL_EXPORT, true) })
+ finish()
+ } catch (failure: Throwable) {
+ toast(failure.localizedMessage ?: getString(R.string.unexpected_error))
+ }
+ hideWaitingView()
+ }
+ }
+
override fun onBackPressed() {
if (viewModel.shouldPromptOnBack) {
if (waitingView?.isVisible == true) {
diff --git a/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecureStorageViewModel.kt b/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecureStorageViewModel.kt
index f55b482124..d246d33f40 100644
--- a/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecureStorageViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/crypto/quads/SharedSecureStorageViewModel.kt
@@ -218,7 +218,7 @@ class SharedSecureStorageViewModel @AssistedInject constructor(
withContext(Dispatchers.IO) {
args.requestedSecrets.forEach {
- if (session.userAccountDataService().getAccountDataEvent(it) != null) {
+ if (session.accountDataService().getUserAccountDataEvent(it) != null) {
val res = session.sharedSecretStorageService.getSecret(
name = it,
keyId = keyInfo.id,
@@ -287,7 +287,7 @@ class SharedSecureStorageViewModel @AssistedInject constructor(
withContext(Dispatchers.IO) {
args.requestedSecrets.forEach {
- if (session.userAccountDataService().getAccountDataEvent(it) != null) {
+ if (session.accountDataService().getUserAccountDataEvent(it) != null) {
val res = session.sharedSecretStorageService.getSecret(
name = it,
keyId = keyInfo.id,
diff --git a/vector/src/main/java/im/vector/app/features/crypto/verification/epoxy/BottomSheetVerificationEmojisItem.kt b/vector/src/main/java/im/vector/app/features/crypto/verification/epoxy/BottomSheetVerificationEmojisItem.kt
index decb9eaad5..e1b703e0fc 100644
--- a/vector/src/main/java/im/vector/app/features/crypto/verification/epoxy/BottomSheetVerificationEmojisItem.kt
+++ b/vector/src/main/java/im/vector/app/features/crypto/verification/epoxy/BottomSheetVerificationEmojisItem.kt
@@ -18,8 +18,6 @@ package im.vector.app.features.crypto.verification.epoxy
import android.content.Context
import android.view.ViewGroup
-import android.widget.ImageView
-import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import com.airbnb.epoxy.EpoxyAttribute
@@ -27,6 +25,7 @@ import com.airbnb.epoxy.EpoxyModelClass
import im.vector.app.R
import im.vector.app.core.epoxy.VectorEpoxyHolder
import im.vector.app.core.epoxy.VectorEpoxyModel
+import im.vector.app.databinding.ItemEmojiVerifBinding
import me.gujun.android.span.Span
import me.gujun.android.span.image
import me.gujun.android.span.span
@@ -68,16 +67,18 @@ abstract class BottomSheetVerificationEmojisItem : VectorEpoxyModel(R.id.item_emoji_tv).isVisible = false
- view.findViewById(R.id.item_emoji_image).isVisible = true
- view.findViewById(R.id.item_emoji_image).setImageDrawable(ContextCompat.getDrawable(view.context, it))
- } ?: run {
- view.findViewById(R.id.item_emoji_tv).isVisible = true
- view.findViewById(R.id.item_emoji_image).isVisible = false
- view.findViewById(R.id.item_emoji_tv).text = rep.emoji
+ val views = ItemEmojiVerifBinding.bind(view)
+ val drawableRes = rep.drawableRes
+ if (drawableRes != null) {
+ views.itemEmojiTv.isVisible = false
+ views.itemEmojiImage.isVisible = true
+ views.itemEmojiImage.setImageDrawable(ContextCompat.getDrawable(view.context, drawableRes))
+ } else {
+ views.itemEmojiTv.isVisible = true
+ views.itemEmojiImage.isVisible = false
+ views.itemEmojiTv.text = rep.emoji
}
- view.findViewById(R.id.item_emoji_name_tv).setText(rep.nameResId)
+ views.itemEmojiNameTv.setText(rep.nameResId)
}
class Holder : VectorEpoxyHolder() {
diff --git a/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt b/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt
index e2203057ab..2b2fddd0c9 100644
--- a/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt
+++ b/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt
@@ -17,6 +17,7 @@
package im.vector.app.features.form
import android.text.Editable
+import android.view.View
import android.view.inputmethod.EditorInfo
import android.widget.TextView
import com.airbnb.epoxy.EpoxyAttribute
@@ -40,6 +41,9 @@ abstract class FormEditTextItem : VectorEpoxyModel() {
@EpoxyAttribute
var value: String? = null
+ @EpoxyAttribute
+ var forceUpdateValue: Boolean = false
+
@EpoxyAttribute
var errorMessage: String? = null
@@ -64,12 +68,23 @@ abstract class FormEditTextItem : VectorEpoxyModel() {
@EpoxyAttribute(EpoxyAttribute.Option.DoNotHash)
var editorActionListener: TextView.OnEditorActionListener? = null
+ @EpoxyAttribute(EpoxyAttribute.Option.DoNotHash)
+ var onFocusChange: ((Boolean) -> Unit)? = null
+
+ @EpoxyAttribute
+ var prefixText: String? = null
+
+ @EpoxyAttribute
+ var suffixText: String? = null
+
private val onTextChangeListener = object : SimpleTextWatcher() {
override fun afterTextChanged(s: Editable) {
onTextChange?.invoke(s.toString())
}
}
+ private val onFocusChangedListener = View.OnFocusChangeListener { _, hasFocus -> onFocusChange?.invoke(hasFocus) }
+
override fun bind(holder: Holder) {
super.bind(holder)
holder.textInputLayout.isEnabled = enabled
@@ -77,7 +92,14 @@ abstract class FormEditTextItem : VectorEpoxyModel() {
holder.textInputLayout.error = errorMessage
holder.textInputLayout.endIconMode = endIconMode ?: TextInputLayout.END_ICON_NONE
- holder.setValueOnce(holder.textInputEditText, value)
+ holder.textInputLayout.prefixText = prefixText
+ holder.textInputLayout.suffixText = suffixText
+
+ if (forceUpdateValue) {
+ holder.textInputEditText.setText(value)
+ } else {
+ holder.setValueOnce(holder.textInputEditText, value)
+ }
holder.textInputEditText.isEnabled = enabled
inputType?.let { holder.textInputEditText.inputType = it }
@@ -86,6 +108,7 @@ abstract class FormEditTextItem : VectorEpoxyModel() {
holder.textInputEditText.addTextChangedListenerOnce(onTextChangeListener)
holder.textInputEditText.setOnEditorActionListener(editorActionListener)
+ holder.textInputEditText.onFocusChangeListener = onFocusChangedListener
}
override fun shouldSaveViewState(): Boolean {
diff --git a/vector/src/main/java/im/vector/app/features/home/AvatarRenderer.kt b/vector/src/main/java/im/vector/app/features/home/AvatarRenderer.kt
index c6cceee3b9..787027e0e2 100644
--- a/vector/src/main/java/im/vector/app/features/home/AvatarRenderer.kt
+++ b/vector/src/main/java/im/vector/app/features/home/AvatarRenderer.kt
@@ -34,6 +34,7 @@ import com.bumptech.glide.request.target.DrawableImageViewTarget
import com.bumptech.glide.request.target.Target
import im.vector.app.core.contacts.MappedContact
import im.vector.app.core.di.ActiveSessionHolder
+import im.vector.app.core.glide.AvatarPlaceholder
import im.vector.app.core.glide.GlideApp
import im.vector.app.core.glide.GlideRequest
import im.vector.app.core.glide.GlideRequests
@@ -136,7 +137,7 @@ class AvatarRenderer @Inject constructor(private val activeSessionHolder: Active
matrixItem: MatrixItem,
target: Target) {
val placeholder = getPlaceholderDrawable(matrixItem)
- buildGlideRequest(glideRequests, matrixItem.avatarUrl)
+ glideRequests.loadResolvedUrl(matrixItem.avatarUrl)
.apply {
when (matrixItem) {
is MatrixItem.SpaceItem -> {
@@ -175,7 +176,12 @@ class AvatarRenderer @Inject constructor(private val activeSessionHolder: Active
}
@UiThread
- fun renderBlur(matrixItem: MatrixItem, imageView: ImageView, sampling: Int, rounded: Boolean, @ColorInt colorFilter: Int? = null) {
+ fun renderBlur(matrixItem: MatrixItem,
+ imageView: ImageView,
+ sampling: Int,
+ rounded: Boolean,
+ @ColorInt colorFilter: Int? = null,
+ addPlaceholder: Boolean) {
val transformations = mutableListOf>(
BlurTransformation(20, sampling)
)
@@ -185,14 +191,26 @@ class AvatarRenderer @Inject constructor(private val activeSessionHolder: Active
if (rounded) {
transformations.add(CircleCrop())
}
- buildGlideRequest(GlideApp.with(imageView), matrixItem.avatarUrl)
- .apply(RequestOptions.bitmapTransform(MultiTransformation(transformations)))
+ val bitmapTransform = RequestOptions.bitmapTransform(MultiTransformation(transformations))
+ val glideRequests = GlideApp.with(imageView)
+ val placeholderRequest = if (addPlaceholder) {
+ glideRequests
+ .load(AvatarPlaceholder(matrixItem))
+ .apply(bitmapTransform)
+ } else {
+ null
+ }
+ glideRequests.loadResolvedUrl(matrixItem.avatarUrl)
+ .apply(bitmapTransform)
+ // We are using thumbnail and error API so we can have blur transformation on it...
+ .thumbnail(placeholderRequest)
+ .error(placeholderRequest)
.into(imageView)
}
@AnyThread
fun getCachedDrawable(glideRequests: GlideRequests, matrixItem: MatrixItem): Drawable {
- return buildGlideRequest(glideRequests, matrixItem.avatarUrl)
+ return glideRequests.loadResolvedUrl(matrixItem.avatarUrl)
.onlyRetrieveFromCache(true)
.apply(RequestOptions.circleCropTransform())
.submit()
@@ -220,9 +238,9 @@ class AvatarRenderer @Inject constructor(private val activeSessionHolder: Active
// PRIVATE API *********************************************************************************
- private fun buildGlideRequest(glideRequests: GlideRequests, avatarUrl: String?): GlideRequest {
+ private fun GlideRequests.loadResolvedUrl(avatarUrl: String?): GlideRequest {
val resolvedUrl = resolvedUrl(avatarUrl)
- return glideRequests.load(resolvedUrl)
+ return load(resolvedUrl)
}
private fun resolvedUrl(avatarUrl: String?): String? {
diff --git a/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt b/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt
index 396bc3d7fa..5c6b2d1d2c 100644
--- a/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/home/HomeActivity.kt
@@ -24,7 +24,7 @@ import android.os.Bundle
import android.os.Parcelable
import android.view.Menu
import android.view.MenuItem
-import androidx.appcompat.widget.Toolbar
+import com.google.android.material.appbar.MaterialToolbar
import androidx.core.view.GravityCompat
import androidx.core.view.isVisible
import androidx.drawerlayout.widget.DrawerLayout
@@ -439,7 +439,7 @@ class HomeActivity :
serverBackupStatusViewModel.refreshRemoteStateIfNeeded()
}
- override fun configure(toolbar: Toolbar) {
+ override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar, false)
}
diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailAction.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailAction.kt
index c64f9d453d..b466f204ec 100644
--- a/vector/src/main/java/im/vector/app/features/home/HomeDetailAction.kt
+++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailAction.kt
@@ -19,6 +19,7 @@ package im.vector.app.features.home
import im.vector.app.core.platform.VectorViewModelAction
sealed class HomeDetailAction : VectorViewModelAction {
- data class SwitchDisplayMode(val displayMode: RoomListDisplayMode) : HomeDetailAction()
+ data class SwitchTab(val tab: HomeTab) : HomeDetailAction()
object MarkAllRoomsRead : HomeDetailAction()
+ data class StartCallWithPhoneNumber(val phoneNumber: String): HomeDetailAction()
}
diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt
index c39a16bdaa..f20682274e 100644
--- a/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailFragment.kt
@@ -22,7 +22,10 @@ import android.view.Menu
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
+import androidx.core.view.get
import androidx.core.view.isVisible
+import androidx.core.view.iterator
+import androidx.fragment.app.Fragment
import com.airbnb.mvrx.activityViewModel
import com.airbnb.mvrx.fragmentViewModel
import com.airbnb.mvrx.withState
@@ -41,12 +44,14 @@ import im.vector.app.core.ui.views.KnownCallsViewHolder
import im.vector.app.databinding.FragmentHomeDetailBinding
import im.vector.app.features.call.SharedKnownCallsViewModel
import im.vector.app.features.call.VectorCallActivity
+import im.vector.app.features.call.dialpad.DialPadFragment
import im.vector.app.features.call.webrtc.WebRtcCallManager
import im.vector.app.features.home.room.list.RoomListFragment
import im.vector.app.features.home.room.list.RoomListParams
import im.vector.app.features.home.room.list.UnreadCounterBadgeView
import im.vector.app.features.popup.PopupAlertManager
import im.vector.app.features.popup.VerificationVectorAlert
+import im.vector.app.features.settings.VectorLocale
import im.vector.app.features.settings.VectorPreferences
import im.vector.app.features.settings.VectorSettingsActivity.Companion.EXTRA_DIRECT_ACCESS_SECURITY_PRIVACY_MANAGE_SESSIONS
import im.vector.app.features.themes.ThemeUtils
@@ -101,6 +106,9 @@ class HomeDetailFragment @Inject constructor(
}
override fun onPrepareOptionsMenu(menu: Menu) {
+ withState(viewModel) { state ->
+ menu.iterator().forEach { it.isVisible = state.currentTab is HomeTab.RoomList }
+ }
menu.findItem(R.id.menu_home_mark_all_as_read).isVisible = hasUnreadRooms
super.onPrepareOptionsMenu(menu)
}
@@ -115,7 +123,6 @@ class HomeDetailFragment @Inject constructor(
super.onViewCreated(view, savedInstanceState)
sharedActionViewModel = activityViewModelProvider.get(HomeSharedActionViewModel::class.java)
sharedCallActionViewModel = activityViewModelProvider.get(SharedKnownCallsViewModel::class.java)
-
setupBottomNavigationView()
setupToolbar()
setupKeysBackupBanner()
@@ -134,8 +141,20 @@ class HomeDetailFragment @Inject constructor(
}
}
- viewModel.selectSubscribe(this, HomeDetailViewState::displayMode) { displayMode ->
- switchDisplayMode(displayMode)
+ viewModel.selectSubscribe(this, HomeDetailViewState::currentTab) { currentTab ->
+ updateUIForTab(currentTab)
+ }
+
+ viewModel.selectSubscribe(this, HomeDetailViewState::showDialPadTab) { showDialPadTab ->
+ updateTabVisibilitySafely(R.id.bottom_action_dial_pad, showDialPadTab)
+ }
+
+ viewModel.observeViewEvents { viewEvent ->
+ when (viewEvent) {
+ HomeDetailViewEvents.CallStarted -> dismissLoadingDialog()
+ is HomeDetailViewEvents.FailToCall -> showFailure(viewEvent.failure)
+ HomeDetailViewEvents.Loading -> showLoadingDialog()
+ }
}
unknownDeviceDetectorSharedViewModel.subscribe { state ->
@@ -181,7 +200,7 @@ class HomeDetailFragment @Inject constructor(
if (!vectorPreferences.enableOverviewTabs()) {
views.bottomNavigationView.isVisible = false
} else {
- views.bottomNavigationView.selectedItemId = it.displayMode.toMenuId()
+ views.bottomNavigationView.selectedItemId = it.currentTab.toMenuId()
views.bottomNavigationView.isVisible = true
}
}
@@ -190,10 +209,13 @@ class HomeDetailFragment @Inject constructor(
override fun onResume() {
super.onResume()
// update notification tab if needed
+
+ //updateTabVisibilitySafely(R.id.bottom_action_notification, vectorPreferences.labAddNotificationTab())
checkNotificationTabStatus()
+ callManager.checkForProtocolsSupportIfNeeded()
}
- private fun checkNotificationTabStatus() {
+ private fun checkNotificationTwbStatus() {
val wasVisible = views.bottomNavigationView.menu.findItem(R.id.bottom_action_notification).isVisible
val combinedOverview = vectorPreferences.combinedOverview()
val combinedOverviewWasVisible = views.bottomNavigationView.menu.findItem(R.id.bottom_action_all).isVisible
@@ -204,7 +226,7 @@ class HomeDetailFragment @Inject constructor(
if (combinedOverviewWasVisible != combinedOverview) {
// As we hide it check if it's not the current item!
withState(viewModel) {
- val menuId = it.displayMode.toMenuId()
+ val menuId = it.currentTab.toMenuId()
if (combinedOverview) {
if (menuId == R.id.bottom_action_people || menuId == R.id.bottom_action_rooms) {
viewModel.handle(HomeDetailAction.SwitchDisplayMode(RoomListDisplayMode.ALL))
@@ -219,7 +241,7 @@ class HomeDetailFragment @Inject constructor(
if (wasVisible && !vectorPreferences.labAddNotificationTab()) {
// As we hide it check if it's not the current item!
withState(viewModel) {
- if (it.displayMode.toMenuId() == R.id.bottom_action_notification) {
+ if (it.currentTab.toMenuId() == R.id.bottom_action_notification) {
if (combinedOverview) {
viewModel.handle(HomeDetailAction.SwitchDisplayMode(RoomListDisplayMode.ALL))
} else {
@@ -364,13 +386,14 @@ class HomeDetailFragment @Inject constructor(
views.bottomNavigationView.menu.findItem(R.id.bottom_action_rooms).isVisible = !combinedOverview
views.bottomNavigationView.menu.findItem(R.id.bottom_action_all).isVisible = combinedOverview
views.bottomNavigationView.setOnNavigationItemSelectedListener {
- val displayMode = when (it.itemId) {
- R.id.bottom_action_people -> RoomListDisplayMode.PEOPLE
- R.id.bottom_action_rooms -> RoomListDisplayMode.ROOMS
- R.id.bottom_action_notification -> RoomListDisplayMode.NOTIFICATIONS
- else -> RoomListDisplayMode.ALL
+ val tab = when (it.itemId) {
+ R.id.bottom_action_people -> HomeTab.RoomList(RoomListDisplayMode.PEOPLE)
+ R.id.bottom_action_rooms -> HomeTab.RoomList(RoomListDisplayMode.ROOMS)
+ R.id.bottom_action_notification -> HomeTab.RoomList(RoomListDisplayMode.NOTIFICATIONS)
+ R.id.bottom_action_all -> HomeTab.RoomList(RoomListDisplayMode.ALL)
+ else -> HomeTab.DialPad
}
- viewModel.handle(HomeDetailAction.SwitchDisplayMode(displayMode))
+ viewModel.handle(HomeDetailAction.SwitchTab(tab))
true
}
@@ -386,13 +409,15 @@ class HomeDetailFragment @Inject constructor(
// }
}
- private fun switchDisplayMode(displayMode: RoomListDisplayMode) {
- views.groupToolbarTitleView.setText(displayMode.titleRes)
- updateSelectedFragment(displayMode)
+ private fun updateUIForTab(tab: HomeTab) {
+ views.bottomNavigationView.menu.findItem(tab.toMenuId()).isChecked = true
+ views.groupToolbarTitleView.setText(tab.titleRes)
+ updateSelectedFragment(tab)
+ invalidateOptionsMenu()
}
- private fun updateSelectedFragment(displayMode: RoomListDisplayMode) {
- val fragmentTag = "FRAGMENT_TAG_${displayMode.name}"
+ private fun updateSelectedFragment(tab: HomeTab) {
+ val fragmentTag = "FRAGMENT_TAG_$tab"
val fragmentToShow = childFragmentManager.findFragmentByTag(fragmentTag)
childFragmentManager.commitTransaction {
childFragmentManager.fragments
@@ -401,14 +426,49 @@ class HomeDetailFragment @Inject constructor(
detach(it)
}
if (fragmentToShow == null) {
- val params = RoomListParams(displayMode)
- add(R.id.roomListContainer, RoomListFragment::class.java, params.toMvRxBundle(), fragmentTag)
+ when (tab) {
+ is HomeTab.RoomList -> {
+ val params = RoomListParams(tab.displayMode)
+ add(R.id.roomListContainer, RoomListFragment::class.java, params.toMvRxBundle(), fragmentTag)
+ }
+ is HomeTab.DialPad -> {
+ add(R.id.roomListContainer, createDialPadFragment())
+ }
+ }
} else {
+ if (tab is HomeTab.DialPad) {
+ (fragmentToShow as? DialPadFragment)?.applyCallback()
+ }
attach(fragmentToShow)
}
}
}
+ private fun createDialPadFragment(): Fragment {
+ val fragment = childFragmentManager.fragmentFactory.instantiate(vectorBaseActivity.classLoader, DialPadFragment::class.java.name)
+ return (fragment as DialPadFragment).apply {
+ arguments = Bundle().apply {
+ putBoolean(DialPadFragment.EXTRA_ENABLE_DELETE, true)
+ putBoolean(DialPadFragment.EXTRA_ENABLE_OK, true)
+ putString(DialPadFragment.EXTRA_REGION_CODE, VectorLocale.applicationLocale.country)
+ }
+ applyCallback()
+ }
+ }
+
+ private fun updateTabVisibilitySafely(tabId: Int, isVisible: Boolean) {
+ val wasVisible = views.bottomNavigationView.menu.findItem(tabId).isVisible
+ views.bottomNavigationView.menu.findItem(tabId).isVisible = isVisible
+ if (wasVisible && !isVisible) {
+ // As we hide it check if it's not the current item!
+ withState(viewModel) {
+ if (it.currentTab.toMenuId() == tabId) {
+ viewModel.handle(HomeDetailAction.SwitchTab(HomeTab.RoomList(RoomListDisplayMode.PEOPLE)))
+ }
+ }
+ }
+ }
+
/* ==========================================================================================
* KeysBackupBanner Listener
* ========================================================================================== */
@@ -444,11 +504,14 @@ class HomeDetailFragment @Inject constructor(
}
}
- private fun RoomListDisplayMode.toMenuId() = when (this) {
- RoomListDisplayMode.PEOPLE -> R.id.bottom_action_people
- RoomListDisplayMode.ROOMS -> R.id.bottom_action_rooms
- RoomListDisplayMode.ALL -> R.id.bottom_action_all
- else -> R.id.bottom_action_notification
+ private fun HomeTab.toMenuId() = when (this) {
+ is HomeTab.DialPad -> R.id.bottom_action_dial_pad
+ is HomeTab.RoomList -> when (displayMode) {
+ RoomListDisplayMode.PEOPLE -> R.id.bottom_action_people
+ RoomListDisplayMode.ROOMS -> R.id.bottom_action_rooms
+ RoomListDisplayMode.ALL -> R.id.bottom_action_all
+ else -> R.id.bottom_action_notification
+ }
}
override fun onTapToReturnToCall() {
@@ -467,6 +530,16 @@ class HomeDetailFragment @Inject constructor(
}
}
+ private fun DialPadFragment.applyCallback(): DialPadFragment {
+ callback = object : DialPadFragment.Callback {
+ override fun onOkClicked(formatted: String?, raw: String?) {
+ if (raw.isNullOrEmpty()) return
+ viewModel.handle(HomeDetailAction.StartCallWithPhoneNumber(raw))
+ }
+ }
+ return this
+ }
+
override fun create(initialState: ServerBackupStatusViewState): ServerBackupStatusViewModel {
return serverBackupStatusViewModelFactory.create(initialState)
}
diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewEvents.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewEvents.kt
new file mode 100644
index 0000000000..a0ff67dc0a
--- /dev/null
+++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewEvents.kt
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) 2020 New Vector Ltd
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package im.vector.app.features.home
+
+import im.vector.app.core.platform.VectorViewEvents
+
+sealed class HomeDetailViewEvents : VectorViewEvents {
+ object Loading : HomeDetailViewEvents()
+ object CallStarted : HomeDetailViewEvents()
+ data class FailToCall(val failure: Throwable) : HomeDetailViewEvents()
+}
diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt
index fa30a04013..89d9ba9f6f 100644
--- a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewModel.kt
@@ -26,8 +26,11 @@ import dagger.assisted.AssistedInject
import im.vector.app.AppStateHandler
import im.vector.app.RoomGroupingMethod
import im.vector.app.core.di.HasScreenInjector
-import im.vector.app.core.platform.EmptyViewEvents
import im.vector.app.core.platform.VectorViewModel
+import im.vector.app.features.call.dialpad.DialPadLookup
+import im.vector.app.features.call.lookup.CallProtocolsChecker
+import im.vector.app.features.call.webrtc.WebRtcCallManager
+import im.vector.app.features.createdirect.DirectRoomHelper
import im.vector.app.features.home.room.ScSdkPreferences
import im.vector.app.features.ui.UiStateRepository
import io.reactivex.schedulers.Schedulers
@@ -53,8 +56,11 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho
private val session: Session,
private val uiStateRepository: UiStateRepository,
private val scSdkPreferences: ScSdkPreferences,
+ private val callManager: WebRtcCallManager,
+ private val directRoomHelper: DirectRoomHelper,
private val appStateHandler: AppStateHandler)
- : VectorViewModel(initialState) {
+ : VectorViewModel(initialState),
+ CallProtocolsChecker.Listener {
@AssistedFactory
interface Factory {
@@ -66,7 +72,7 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho
override fun initialState(viewModelContext: ViewModelContext): HomeDetailViewState? {
val uiStateRepository = (viewModelContext.activity as HasScreenInjector).injector().uiStateRepository()
return HomeDetailViewState(
- displayMode = uiStateRepository.getDisplayMode()
+ currentTab = HomeTab.RoomList(uiStateRepository.getDisplayMode())
)
}
@@ -81,7 +87,8 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho
observeSyncState()
observeRoomGroupingMethod()
observeRoomSummaries()
-
+ updateShowDialPadTab()
+ callManager.addProtocolsCheckerListener(this)
session.rx().liveUser(session.myUserId).execute {
copy(
myMatrixItem = it.invoke()?.getOrNull()?.toMatrixItem()
@@ -91,18 +98,48 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho
override fun handle(action: HomeDetailAction) {
when (action) {
- is HomeDetailAction.SwitchDisplayMode -> handleSwitchDisplayMode(action)
- HomeDetailAction.MarkAllRoomsRead -> handleMarkAllRoomsRead()
+ is HomeDetailAction.SwitchTab -> handleSwitchTab(action)
+ HomeDetailAction.MarkAllRoomsRead -> handleMarkAllRoomsRead()
+ is HomeDetailAction.StartCallWithPhoneNumber -> handleStartCallWithPhoneNumber(action)
}
}
- private fun handleSwitchDisplayMode(action: HomeDetailAction.SwitchDisplayMode) = withState { state ->
- if (state.displayMode != action.displayMode) {
- setState {
- copy(displayMode = action.displayMode)
+ private fun handleStartCallWithPhoneNumber(action: HomeDetailAction.StartCallWithPhoneNumber) {
+ viewModelScope.launch {
+ try {
+ _viewEvents.post(HomeDetailViewEvents.Loading)
+ val result = DialPadLookup(session, callManager, directRoomHelper).lookupPhoneNumber(action.phoneNumber)
+ callManager.startOutgoingCall(result.roomId, result.userId, isVideoCall = false)
+ _viewEvents.post(HomeDetailViewEvents.CallStarted)
+ } catch (failure: Throwable) {
+ _viewEvents.post(HomeDetailViewEvents.FailToCall(failure))
}
+ }
+ }
- uiStateRepository.storeDisplayMode(action.displayMode)
+ private fun handleSwitchTab(action: HomeDetailAction.SwitchTab) = withState { state ->
+ if (state.currentTab != action.tab) {
+ setState {
+ copy(currentTab = action.tab)
+ }
+ if (action.tab is HomeTab.RoomList) {
+ uiStateRepository.storeDisplayMode(action.tab.displayMode)
+ }
+ }
+ }
+
+ override fun onCleared() {
+ super.onCleared()
+ callManager.removeProtocolsCheckerListener(this)
+ }
+
+ override fun onPSTNSupportUpdated() {
+ updateShowDialPadTab()
+ }
+
+ private fun updateShowDialPadTab() {
+ setState {
+ copy(showDialPadTab = callManager.supportsPSTNProtocol)
}
}
@@ -140,11 +177,11 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho
private fun observeRoomGroupingMethod() {
appStateHandler.selectedRoomGroupingObservable
.subscribe {
- setState {
- copy(
- roomGroupingMethod = it.orNull() ?: RoomGroupingMethod.BySpace(null)
- )
- }
+ setState {
+ copy(
+ roomGroupingMethod = it.orNull() ?: RoomGroupingMethod.BySpace(null)
+ )
+ }
}
.disposeOnClear()
}
@@ -167,7 +204,7 @@ class HomeDetailViewModel @AssistedInject constructor(@Assisted initialState: Ho
is RoomGroupingMethod.ByLegacyGroup -> {
// TODO!!
}
- is RoomGroupingMethod.BySpace -> {
+ is RoomGroupingMethod.BySpace -> {
val activeSpaceRoomId = groupingMethod.spaceSummary?.roomId
val dmInvites = session.getRoomSummaries(
roomSummaryQueryParams {
diff --git a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewState.kt b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewState.kt
index 2dce492f44..aa3f592b6b 100644
--- a/vector/src/main/java/im/vector/app/features/home/HomeDetailViewState.kt
+++ b/vector/src/main/java/im/vector/app/features/home/HomeDetailViewState.kt
@@ -16,9 +16,11 @@
package im.vector.app.features.home
+import androidx.annotation.StringRes
import com.airbnb.mvrx.Async
import com.airbnb.mvrx.MvRxState
import com.airbnb.mvrx.Uninitialized
+import im.vector.app.R
import im.vector.app.RoomGroupingMethod
import org.matrix.android.sdk.api.session.room.model.RoomSummary
import org.matrix.android.sdk.api.session.sync.SyncState
@@ -28,7 +30,7 @@ data class HomeDetailViewState(
val roomGroupingMethod: RoomGroupingMethod = RoomGroupingMethod.BySpace(null),
val myMatrixItem: MatrixItem? = null,
val asyncRooms: Async> = Uninitialized,
- val displayMode: RoomListDisplayMode = RoomListDisplayMode.ALL,
+ val currentTab: HomeTab = HomeTab.RoomList(RoomListDisplayMode.ALL),
val notificationCountCatchup: Int = 0,
val notificationHighlightCatchup: Boolean = false,
val notificationCountPeople: Int = 0,
@@ -36,5 +38,11 @@ data class HomeDetailViewState(
val notificationCountRooms: Int = 0,
val notificationHighlightRooms: Boolean = false,
val hasUnreadMessages: Boolean = false,
- val syncState: SyncState = SyncState.Idle
+ val syncState: SyncState = SyncState.Idle,
+ val showDialPadTab: Boolean = false
) : MvRxState
+
+sealed class HomeTab(@StringRes val titleRes: Int) {
+ data class RoomList(val displayMode: RoomListDisplayMode) : HomeTab(displayMode.titleRes)
+ object DialPad : HomeTab(R.string.call_dial_pad_title)
+}
diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailAction.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailAction.kt
index 72e614c18c..c0e73823e4 100644
--- a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailAction.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailAction.kt
@@ -73,7 +73,6 @@ sealed class RoomDetailAction : VectorViewModelAction {
object ResendAll : RoomDetailAction()
- data class StartCallWithPhoneNumber(val phoneNumber: String, val videoCall: Boolean): RoomDetailAction()
data class StartCall(val isVideo: Boolean) : RoomDetailAction()
data class AcceptCall(val callId: String): RoomDetailAction()
object EndCall : RoomDetailAction()
diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailActivity.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailActivity.kt
index 640e9a62ff..ce3346f8a6 100644
--- a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailActivity.kt
@@ -20,7 +20,7 @@ import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.widget.Toast
-import androidx.appcompat.widget.Toolbar
+import com.google.android.material.appbar.MaterialToolbar
import androidx.core.view.GravityCompat
import androidx.drawerlayout.widget.DrawerLayout
import com.airbnb.mvrx.viewModel
@@ -132,7 +132,7 @@ class RoomDetailActivity :
super.onDestroy()
}
- override fun configure(toolbar: Toolbar) {
+ override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt
index ab98803d0c..ef7d1c04fd 100644
--- a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt
@@ -322,7 +322,7 @@ class RoomDetailFragment @Inject constructor(
startCallActivityResultLauncher = startCallActivityResultLauncher,
showDialogWithMessage = ::showDialogWithMessage,
onTapToReturnToCall = ::onTapToReturnToCall
- ).register()
+ )
keyboardStateUtils = KeyboardStateUtils(requireActivity())
setupToolbar(views.roomToolbar)
setupRecyclerView()
@@ -549,15 +549,15 @@ class RoomDetailFragment @Inject constructor(
.fromRootView(views.rootConstraintLayout)
.setKeyboardAnimationStyle(R.style.emoji_fade_animation_style)
.setOnEmojiPopupShownListener {
- views.composerLayout.views.composerEmojiButton.let {
- it.setImageResource(R.drawable.ic_keyboard)
- it.contentDescription = getString(R.string.a11y_close_emoji_picker)
+ views.composerLayout.views.composerEmojiButton.apply {
+ contentDescription = getString(R.string.a11y_close_emoji_picker)
+ setImageResource(R.drawable.ic_keyboard)
}
}
.setOnEmojiPopupDismissListener {
- views.composerLayout.views.composerEmojiButton.let {
- it.setImageResource(R.drawable.ic_insert_emoji)
- it.contentDescription = getString(R.string.a11y_open_emoji_picker)
+ views.composerLayout.views.composerEmojiButton.apply {
+ contentDescription = getString(R.string.a11y_open_emoji_picker)
+ setImageResource(R.drawable.ic_insert_emoji)
}
}
.build(views.composerLayout.views.composerEditText)
@@ -1198,6 +1198,10 @@ class RoomDetailFragment @Inject constructor(
override fun onRichContentSelected(contentUri: Uri): Boolean {
return sendUri(contentUri)
}
+
+ override fun onTextBlankStateChanged(isBlank: Boolean) {
+ // No op
+ }
}
}
@@ -1211,6 +1215,7 @@ class RoomDetailFragment @Inject constructor(
views.composerLayout.collapse(true)
lockSendButton = true
roomDetailViewModel.handle(RoomDetailAction.SendMessage(text, vectorPreferences.isMarkdownEnabled()))
+ emojiPopup.dismiss()
}
}
@@ -1260,7 +1265,7 @@ class RoomDetailFragment @Inject constructor(
if (state.tombstoneEvent == null) {
if (state.canSendMessage) {
views.composerLayout.visibility = View.VISIBLE
- views.composerLayout.setRoomEncrypted(summary.isEncrypted, summary.roomEncryptionTrustLevel)
+ views.composerLayout.setRoomEncrypted(summary.isEncrypted)
views.notificationAreaView.render(NotificationAreaView.State.Hidden)
} else {
views.composerLayout.visibility = View.GONE
diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewModel.kt
index e6b618f150..2587a6582f 100644
--- a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewModel.kt
@@ -39,7 +39,6 @@ import im.vector.app.core.mvrx.runCatchingToAsync
import im.vector.app.core.platform.VectorViewModel
import im.vector.app.core.resources.StringProvider
import im.vector.app.features.call.conference.JitsiService
-import im.vector.app.features.call.dialpad.DialPadLookup
import im.vector.app.features.call.lookup.CallProtocolsChecker
import im.vector.app.features.call.webrtc.WebRtcCallManager
import im.vector.app.features.command.CommandParser
@@ -177,7 +176,6 @@ class RoomDetailViewModel @AssistedInject constructor(
observeMyRoomMember()
observeActiveRoomWidgets()
observePowerLevel()
- updateShowDialerOptionState()
room.getRoomSummaryLive()
viewModelScope.launch(Dispatchers.IO) {
tryOrNull { room.markAsRead(ReadService.MarkAsReadParams.READ_RECEIPT) }
@@ -302,7 +300,6 @@ class RoomDetailViewModel @AssistedInject constructor(
is RoomDetailAction.TapOnFailedToDecrypt -> handleTapOnFailedToDecrypt(action)
is RoomDetailAction.SelectStickerAttachment -> handleSelectStickerAttachment()
is RoomDetailAction.OpenIntegrationManager -> handleOpenIntegrationManager()
- is RoomDetailAction.StartCallWithPhoneNumber -> handleStartCallWithPhoneNumber(action)
is RoomDetailAction.StartCall -> handleStartCall(action)
is RoomDetailAction.AcceptCall -> handleAcceptCall(action)
is RoomDetailAction.EndCall -> handleEndCall()
@@ -328,17 +325,6 @@ class RoomDetailViewModel @AssistedInject constructor(
}.exhaustive
}
- private fun handleStartCallWithPhoneNumber(action: RoomDetailAction.StartCallWithPhoneNumber) {
- viewModelScope.launch {
- try {
- val result = DialPadLookup(session, callManager, directRoomHelper).lookupPhoneNumber(action.phoneNumber)
- callManager.startOutgoingCall(result.roomId, result.userId, action.videoCall)
- } catch (failure: Throwable) {
- _viewEvents.post(RoomDetailViewEvents.ActionFailure(action, failure))
- }
- }
- }
-
private fun handleAcceptCall(action: RoomDetailAction.AcceptCall) {
callManager.getCallById(action.callId)?.also {
_viewEvents.post(RoomDetailViewEvents.DisplayAndAcceptCall(it))
@@ -1498,16 +1484,6 @@ class RoomDetailViewModel @AssistedInject constructor(
_viewEvents.post(RoomDetailViewEvents.OnNewTimelineEvents(eventIds))
}
- override fun onPSTNSupportUpdated() {
- updateShowDialerOptionState()
- }
-
- private fun updateShowDialerOptionState() {
- setState {
- copy(showDialerOption = callManager.supportsPSTNProtocol)
- }
- }
-
override fun onCleared() {
roomSummariesHolder.remove(room.roomId)
timeline.dispose()
diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewState.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewState.kt
index 965733c424..1ead34fadd 100644
--- a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewState.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewState.kt
@@ -75,7 +75,6 @@ data class RoomDetailViewState(
val canInvite: Boolean = true,
val isAllowedToManageWidgets: Boolean = false,
val isAllowedToStartWebRTCCall: Boolean = true,
- val showDialerOption: Boolean = false,
val hasFailedSending: Boolean = false
) : MvRxState {
diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/StartCallActionsHandler.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/StartCallActionsHandler.kt
index 6f9a4fa651..b71b90ace3 100644
--- a/vector/src/main/java/im/vector/app/features/home/room/detail/StartCallActionsHandler.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/detail/StartCallActionsHandler.kt
@@ -16,26 +16,18 @@
package im.vector.app.features.home.room.detail
-import android.os.Bundle
import androidx.activity.result.ActivityResultLauncher
import androidx.fragment.app.Fragment
import com.airbnb.mvrx.withState
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import im.vector.app.R
-import im.vector.app.core.platform.Restorable
import im.vector.app.core.utils.PERMISSIONS_FOR_AUDIO_IP_CALL
import im.vector.app.core.utils.PERMISSIONS_FOR_VIDEO_IP_CALL
import im.vector.app.core.utils.checkPermissions
-import im.vector.app.features.call.DialerChoiceBottomSheet
-import im.vector.app.features.call.dialpad.CallDialPadBottomSheet
-import im.vector.app.features.call.dialpad.DialPadFragment
import im.vector.app.features.call.webrtc.WebRtcCallManager
import im.vector.app.features.settings.VectorPreferences
import org.matrix.android.sdk.api.session.widgets.model.WidgetType
-private const val DIALER_OPTION_TAG = "DIALER_OPTION_TAG"
-private const val DIAL_PAD_TAG = "DIAL_PAD_TAG"
-
class StartCallActionsHandler(
private val roomId: String,
private val fragment: Fragment,
@@ -44,52 +36,20 @@ class StartCallActionsHandler(
private val roomDetailViewModel: RoomDetailViewModel,
private val startCallActivityResultLauncher: ActivityResultLauncher>,
private val showDialogWithMessage: (String) -> Unit,
- private val onTapToReturnToCall: () -> Unit): Restorable {
+ private val onTapToReturnToCall: () -> Unit) {
fun onVideoCallClicked() {
handleCallRequest(true)
}
- fun onVoiceCallClicked() = withState(roomDetailViewModel) {
- if (it.showDialerOption) {
- displayDialerChoiceBottomSheet()
- } else {
- handleCallRequest(false)
- }
- }
-
- private fun DialerChoiceBottomSheet.applyListeners(): DialerChoiceBottomSheet {
- onDialPadClicked = ::displayDialPadBottomSheet
- onVoiceCallClicked = { handleCallRequest(false) }
- return this
- }
-
- private fun CallDialPadBottomSheet.applyCallback(): CallDialPadBottomSheet {
- callback = object : DialPadFragment.Callback {
- override fun onOkClicked(formatted: String?, raw: String?) {
- if (raw.isNullOrEmpty()) return
- roomDetailViewModel.handle(RoomDetailAction.StartCallWithPhoneNumber(raw, false))
- }
- }
- return this
- }
-
- private fun displayDialerChoiceBottomSheet() {
- DialerChoiceBottomSheet()
- .applyListeners()
- .show(fragment.parentFragmentManager, DIALER_OPTION_TAG)
- }
-
- private fun displayDialPadBottomSheet() {
- CallDialPadBottomSheet.newInstance(true)
- .applyCallback()
- .show(fragment.parentFragmentManager, DIAL_PAD_TAG)
+ fun onVoiceCallClicked() {
+ handleCallRequest(false)
}
private fun handleCallRequest(isVideoCall: Boolean) = withState(roomDetailViewModel) { state ->
val roomSummary = state.asyncRoomSummary.invoke() ?: return@withState
when (roomSummary.joinedMembersCount) {
- 1 -> {
+ 1 -> {
val pendingInvite = roomSummary.invitedMembersCount ?: 0 > 0
if (pendingInvite) {
// wait for other to join
@@ -99,7 +59,7 @@ class StartCallActionsHandler(
showDialogWithMessage(fragment.getString(R.string.cannot_call_yourself))
}
}
- 2 -> {
+ 2 -> {
val currentCall = callManager.getCurrentCall()
if (currentCall != null) {
// resume existing if same room, if not prompt to kill and then restart new call?
@@ -190,13 +150,4 @@ class StartCallActionsHandler(
}
}
}
-
- override fun onSaveInstanceState(outState: Bundle) = Unit
-
- override fun onRestoreInstanceState(savedInstanceState: Bundle?) {
- if (savedInstanceState != null) {
- (fragment.parentFragmentManager.findFragmentByTag(DIALER_OPTION_TAG) as? DialerChoiceBottomSheet)?.applyListeners()
- (fragment.parentFragmentManager.findFragmentByTag(DIAL_PAD_TAG) as? CallDialPadBottomSheet)?.applyCallback()
- }
- }
}
diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/composer/ComposerEditText.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/composer/ComposerEditText.kt
index b937dd7a79..d89b1ff135 100644
--- a/vector/src/main/java/im/vector/app/features/home/room/detail/composer/ComposerEditText.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/detail/composer/ComposerEditText.kt
@@ -37,9 +37,11 @@ class ComposerEditText @JvmOverloads constructor(context: Context, attrs: Attrib
interface Callback {
fun onRichContentSelected(contentUri: Uri): Boolean
+ fun onTextBlankStateChanged(isBlank: Boolean)
}
var callback: Callback? = null
+ private var isBlankText = true
override fun onCreateInputConnection(editorInfo: EditorInfo): InputConnection? {
val ic = super.onCreateInputConnection(editorInfo) ?: return null
@@ -93,6 +95,11 @@ class ComposerEditText @JvmOverloads constructor(context: Context, attrs: Attrib
}
spanToRemove = null
}
+ // Report blank status of EditText to be able to arrange other elements of the composer
+ if (s.isBlank() != isBlankText) {
+ isBlankText = !isBlankText
+ callback?.onTextBlankStateChanged(isBlankText)
+ }
}
}
)
diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/composer/TextComposerView.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/composer/TextComposerView.kt
index 18a61ea1a1..7f86abd33d 100644
--- a/vector/src/main/java/im/vector/app/features/home/room/detail/composer/TextComposerView.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/detail/composer/TextComposerView.kt
@@ -24,6 +24,8 @@ import android.view.ViewGroup
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.constraintlayout.widget.ConstraintSet
import androidx.core.text.toSpannable
+import androidx.core.view.isVisible
+import androidx.transition.AutoTransition
import androidx.transition.ChangeBounds
import androidx.transition.Fade
import androidx.transition.Transition
@@ -32,11 +34,8 @@ import androidx.transition.TransitionSet
import im.vector.app.R
import im.vector.app.databinding.ComposerLayoutBinding
-import org.matrix.android.sdk.api.crypto.RoomEncryptionTrustLevel
-
/**
* Encapsulate the timeline composer UX.
- *
*/
class TextComposerView @JvmOverloads constructor(
context: Context,
@@ -70,6 +69,18 @@ class TextComposerView @JvmOverloads constructor(
override fun onRichContentSelected(contentUri: Uri): Boolean {
return callback?.onRichContentSelected(contentUri) ?: false
}
+
+ override fun onTextBlankStateChanged(isBlank: Boolean) {
+ callback?.onTextBlankStateChanged(isBlank)
+ val shouldBeVisible = currentConstraintSetId == R.layout.composer_layout_constraint_set_expanded || !isBlank
+ if (views.sendButton.isVisible != shouldBeVisible) {
+ TransitionManager.beginDelayedTransition(
+ this@TextComposerView,
+ AutoTransition().also { it.duration = 150 }
+ )
+ views.sendButton.isVisible = shouldBeVisible
+ }
+ }
}
views.composerRelatedMessageCloseButton.setOnClickListener {
collapse()
@@ -93,6 +104,7 @@ class TextComposerView @JvmOverloads constructor(
}
currentConstraintSetId = R.layout.composer_layout_constraint_set_compact
applyNewConstraintSet(animate, transitionComplete)
+ views.sendButton.isVisible = !views.composerEditText.text.isNullOrEmpty()
}
fun expand(animate: Boolean = true, transitionComplete: (() -> Unit)? = null) {
@@ -102,6 +114,7 @@ class TextComposerView @JvmOverloads constructor(
}
currentConstraintSetId = R.layout.composer_layout_constraint_set_expanded
applyNewConstraintSet(animate, transitionComplete)
+ views.sendButton.isVisible = true
}
private fun applyNewConstraintSet(animate: Boolean, transitionComplete: (() -> Unit)?) {
@@ -110,8 +123,6 @@ class TextComposerView @JvmOverloads constructor(
}
ConstraintSet().also {
it.clone(context, currentConstraintSetId)
- // in case shield is hidden, we will have glitch without this
- it.getConstraint(R.id.composerShieldImageView).propertySet.visibility = views.composerShieldImageView.visibility
it.getConstraint(R.id.composerEmojiButton).propertySet.visibility = views.composerEmojiButton.visibility
it.applyTo(this)
}
@@ -140,13 +151,11 @@ class TextComposerView @JvmOverloads constructor(
TransitionManager.beginDelayedTransition((parent as? ViewGroup ?: this), transition)
}
- fun setRoomEncrypted(isEncrypted: Boolean, roomEncryptionTrustLevel: RoomEncryptionTrustLevel?) {
+ fun setRoomEncrypted(isEncrypted: Boolean) {
if (isEncrypted) {
views.composerEditText.setHint(R.string.room_message_placeholder)
- views.composerShieldImageView.render(roomEncryptionTrustLevel)
} else {
views.composerEditText.setHint(R.string.room_message_placeholder)
- views.composerShieldImageView.render(null)
}
}
}
diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/CallTileTimelineItem.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/CallTileTimelineItem.kt
index a9b6bbf0aa..1f12bdbd2c 100644
--- a/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/CallTileTimelineItem.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/detail/timeline/item/CallTileTimelineItem.kt
@@ -69,7 +69,7 @@ abstract class CallTileTimelineItem : AbsBaseMessageItem {
holder.rejectView.setText(R.string.ignore)
holder.acceptView.setText(R.string.join)
- holder.acceptView.setLeftDrawable(R.drawable.ic_call_audio_small, R.attr.colorPrimary)
+ holder.acceptView.setLeftDrawable(R.drawable.ic_call_audio_small, R.attr.colorOnPrimary)
}
CallKind.AUDIO -> {
holder.rejectView.setText(R.string.call_notification_reject)
holder.acceptView.setText(R.string.call_notification_answer)
- holder.acceptView.setLeftDrawable(R.drawable.ic_call_audio_small, R.attr.colorPrimary)
+ holder.acceptView.setLeftDrawable(R.drawable.ic_call_audio_small, R.attr.colorOnPrimary)
}
CallKind.VIDEO -> {
holder.rejectView.setText(R.string.call_notification_reject)
holder.acceptView.setText(R.string.call_notification_answer)
- holder.acceptView.setLeftDrawable(R.drawable.ic_call_video_small, R.attr.colorPrimary)
+ holder.acceptView.setLeftDrawable(R.drawable.ic_call_video_small, R.attr.colorOnPrimary)
}
else -> {
Timber.w("Shouldn't be in that state")
diff --git a/vector/src/main/java/im/vector/app/features/home/room/list/UnreadCounterBadgeView.kt b/vector/src/main/java/im/vector/app/features/home/room/list/UnreadCounterBadgeView.kt
index 680303b8a3..fb5f532011 100755
--- a/vector/src/main/java/im/vector/app/features/home/room/list/UnreadCounterBadgeView.kt
+++ b/vector/src/main/java/im/vector/app/features/home/room/list/UnreadCounterBadgeView.kt
@@ -18,10 +18,10 @@ package im.vector.app.features.home.room.list
import android.content.Context
import android.util.AttributeSet
import android.view.View
-import androidx.appcompat.widget.AppCompatTextView
+import com.google.android.material.textview.MaterialTextView
import im.vector.app.R
-class UnreadCounterBadgeView : AppCompatTextView {
+class UnreadCounterBadgeView : MaterialTextView {
constructor(context: Context) : super(context)
diff --git a/vector/src/main/java/im/vector/app/features/login/LoginActivity.kt b/vector/src/main/java/im/vector/app/features/login/LoginActivity.kt
index ae099dba3f..07dfc62602 100644
--- a/vector/src/main/java/im/vector/app/features/login/LoginActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/login/LoginActivity.kt
@@ -21,7 +21,7 @@ import android.content.Intent
import android.view.View
import android.view.ViewGroup
import androidx.annotation.CallSuper
-import androidx.appcompat.widget.Toolbar
+import com.google.android.material.appbar.MaterialToolbar
import androidx.core.view.ViewCompat
import androidx.core.view.children
import androidx.core.view.isVisible
@@ -356,7 +356,7 @@ open class LoginActivity : VectorBaseActivity(), ToolbarCo
}
}
- override fun configure(toolbar: Toolbar) {
+ override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
diff --git a/vector/src/main/java/im/vector/app/features/login2/LoginActivity2.kt b/vector/src/main/java/im/vector/app/features/login2/LoginActivity2.kt
index 9adf4bd6c2..60eb1934d0 100644
--- a/vector/src/main/java/im/vector/app/features/login2/LoginActivity2.kt
+++ b/vector/src/main/java/im/vector/app/features/login2/LoginActivity2.kt
@@ -21,7 +21,7 @@ import android.content.Intent
import android.view.View
import android.view.ViewGroup
import androidx.annotation.CallSuper
-import androidx.appcompat.widget.Toolbar
+import com.google.android.material.appbar.MaterialToolbar
import androidx.core.view.ViewCompat
import androidx.core.view.children
import androidx.core.view.isVisible
@@ -388,7 +388,7 @@ open class LoginActivity2 : VectorBaseActivity(), ToolbarC
}
}
- override fun configure(toolbar: Toolbar) {
+ override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
diff --git a/vector/src/main/java/im/vector/app/features/pin/PinActivity.kt b/vector/src/main/java/im/vector/app/features/pin/PinActivity.kt
index 66ebfa929d..6866afa0a6 100644
--- a/vector/src/main/java/im/vector/app/features/pin/PinActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/pin/PinActivity.kt
@@ -18,7 +18,7 @@ package im.vector.app.features.pin
import android.content.Context
import android.content.Intent
-import androidx.appcompat.widget.Toolbar
+import com.google.android.material.appbar.MaterialToolbar
import com.airbnb.mvrx.MvRx
import im.vector.app.R
import im.vector.app.core.extensions.addFragment
@@ -47,7 +47,7 @@ class PinActivity : VectorBaseActivity(), ToolbarConfigur
}
}
- override fun configure(toolbar: Toolbar) {
+ override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
}
diff --git a/vector/src/main/java/im/vector/app/features/popup/IncomingCallAlert.kt b/vector/src/main/java/im/vector/app/features/popup/IncomingCallAlert.kt
index 8a4fc7a78d..17ad35f07a 100644
--- a/vector/src/main/java/im/vector/app/features/popup/IncomingCallAlert.kt
+++ b/vector/src/main/java/im/vector/app/features/popup/IncomingCallAlert.kt
@@ -18,11 +18,10 @@ package im.vector.app.features.popup
import android.app.Activity
import android.view.View
-import android.widget.ImageView
-import android.widget.TextView
import im.vector.app.R
import im.vector.app.core.extensions.setLeftDrawable
import im.vector.app.core.glide.GlideApp
+import im.vector.app.databinding.AlerterIncomingCallLayoutBinding
import im.vector.app.features.home.AvatarRenderer
import org.matrix.android.sdk.api.util.MatrixItem
@@ -40,30 +39,24 @@ class IncomingCallAlert(uid: String,
private val avatarRenderer: AvatarRenderer,
private val isVideoCall: Boolean,
private val onAccept: () -> Unit,
- private val onReject: () -> Unit)
- : VectorAlert.ViewBinder {
+ private val onReject: () -> Unit) : VectorAlert.ViewBinder {
override fun bind(view: View) {
- val (callKindText, callKindIcon) = if (isVideoCall) {
- Pair(R.string.action_video_call, R.drawable.ic_call_video_small)
+ val views = AlerterIncomingCallLayoutBinding.bind(view)
+ val (callKindText, callKindIcon, callKindActionIcon) = if (isVideoCall) {
+ Triple(R.string.action_video_call, R.drawable.ic_call_video_small, R.drawable.ic_call_answer_video)
} else {
- Pair(R.string.action_voice_call, R.drawable.ic_call_audio_small)
+ Triple(R.string.action_voice_call, R.drawable.ic_call_audio_small, R.drawable.ic_call_answer)
}
- view.findViewById(R.id.incomingCallKindView).apply {
- setText(callKindText)
- setLeftDrawable(callKindIcon)
+ views.incomingCallKindView.setText(callKindText)
+ views.incomingCallKindView.setLeftDrawable(callKindIcon)
+ views.incomingCallNameView.text = matrixItem?.getBestName()
+ matrixItem?.let { avatarRenderer.render(it, views.incomingCallAvatar, GlideApp.with(view.context.applicationContext)) }
+ views.incomingCallAcceptView.setOnClickListener {
+ onAccept()
}
- view.findViewById(R.id.incomingCallNameView).text = matrixItem?.getBestName()
- view.findViewById(R.id.incomingCallAvatar)?.let { imageView ->
- matrixItem?.let { avatarRenderer.render(it, imageView, GlideApp.with(view.context.applicationContext)) }
- }
- view.findViewById(R.id.incomingCallAcceptView).apply {
- setOnClickListener {
- onAccept()
- }
- setImageResource(callKindIcon)
- }
- view.findViewById(R.id.incomingCallRejectView).setOnClickListener {
+ views.incomingCallAcceptView.setImageResource(callKindActionIcon)
+ views.incomingCallRejectView.setOnClickListener {
onReject()
}
}
diff --git a/vector/src/main/java/im/vector/app/features/popup/PopupAlertManager.kt b/vector/src/main/java/im/vector/app/features/popup/PopupAlertManager.kt
index 3228ffa6e1..d6aa0a1943 100644
--- a/vector/src/main/java/im/vector/app/features/popup/PopupAlertManager.kt
+++ b/vector/src/main/java/im/vector/app/features/popup/PopupAlertManager.kt
@@ -231,7 +231,7 @@ class PopupAlertManager @Inject constructor() {
setIcon(it)
}
alert.actions.forEach { action ->
- addButton(action.title, R.style.AlerterButton) {
+ addButton(action.title, R.style.Widget_Vector_Button_Text_Alerter) {
if (action.autoClose) {
currentIsDismissed()
Alerter.hide()
diff --git a/vector/src/main/java/im/vector/app/features/popup/VerificationVectorAlert.kt b/vector/src/main/java/im/vector/app/features/popup/VerificationVectorAlert.kt
index ee6728f969..228c629161 100644
--- a/vector/src/main/java/im/vector/app/features/popup/VerificationVectorAlert.kt
+++ b/vector/src/main/java/im/vector/app/features/popup/VerificationVectorAlert.kt
@@ -18,10 +18,10 @@ package im.vector.app.features.popup
import android.app.Activity
import android.view.View
-import android.widget.ImageView
import androidx.annotation.DrawableRes
import im.vector.app.R
import im.vector.app.core.glide.GlideApp
+import im.vector.app.databinding.AlerterVerificationLayoutBinding
import im.vector.app.features.home.AvatarRenderer
import org.matrix.android.sdk.api.util.MatrixItem
@@ -33,19 +33,15 @@ class VerificationVectorAlert(uid: String,
* Alert are displayed by default, but let this lambda return false to prevent displaying
*/
override val shouldBeDisplayedIn: ((Activity) -> Boolean) = { true }
-) : DefaultVectorAlert(
- uid, title, description, iconId, shouldBeDisplayedIn
-) {
+) : DefaultVectorAlert(uid, title, description, iconId, shouldBeDisplayedIn) {
override val layoutRes = R.layout.alerter_verification_layout
class ViewBinder(private val matrixItem: MatrixItem?,
- private val avatarRenderer: AvatarRenderer)
- : VectorAlert.ViewBinder {
+ private val avatarRenderer: AvatarRenderer) : VectorAlert.ViewBinder {
override fun bind(view: View) {
- view.findViewById(R.id.ivUserAvatar)?.let { imageView ->
- matrixItem?.let { avatarRenderer.render(it, imageView, GlideApp.with(view.context.applicationContext)) }
- }
+ val views = AlerterVerificationLayoutBinding.bind(view)
+ matrixItem?.let { avatarRenderer.render(it, views.ivUserAvatar, GlideApp.with(view.context.applicationContext)) }
}
}
}
diff --git a/vector/src/main/java/im/vector/app/features/reactions/EmojiReactionPickerActivity.kt b/vector/src/main/java/im/vector/app/features/reactions/EmojiReactionPickerActivity.kt
index b2f1c3c15a..ecfaf93747 100644
--- a/vector/src/main/java/im/vector/app/features/reactions/EmojiReactionPickerActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/reactions/EmojiReactionPickerActivity.kt
@@ -24,7 +24,6 @@ import android.view.Menu
import android.view.MenuInflater
import android.view.MenuItem
import android.widget.SearchView
-import androidx.appcompat.widget.Toolbar
import androidx.core.view.isVisible
import com.airbnb.mvrx.viewModel
import com.google.android.material.tabs.TabLayout
@@ -150,13 +149,13 @@ class EmojiReactionPickerActivity : VectorBaseActivity(R.id.toolbar)?.minimumHeight = getActionBarSize()
+ views.emojiPickerToolbar.minimumHeight = getActionBarSize()
return true
}
override fun onMenuItemActionCollapse(p0: MenuItem?): Boolean {
// when back, clear all search
- findViewById(R.id.toolbar)?.minimumHeight = 0
+ views.emojiPickerToolbar.minimumHeight = 0
searchView.setQuery("", true)
return true
}
diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomActivity.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomActivity.kt
index 5c4ee2b761..07dfadb753 100644
--- a/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomActivity.kt
@@ -19,7 +19,7 @@ package im.vector.app.features.roomdirectory.createroom
import android.content.Context
import android.content.Intent
import android.os.Bundle
-import androidx.appcompat.widget.Toolbar
+import com.google.android.material.appbar.MaterialToolbar
import im.vector.app.R
import im.vector.app.core.di.ScreenComponent
import im.vector.app.core.extensions.addFragment
@@ -40,7 +40,7 @@ class CreateRoomActivity : VectorBaseActivity(), ToolbarC
override fun getCoordinatorLayout() = views.coordinatorLayout
- override fun configure(toolbar: Toolbar) {
+ override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomController.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomController.kt
index f9c52758a7..d7fc324f52 100644
--- a/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomController.kt
+++ b/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomController.kt
@@ -110,8 +110,8 @@ class CreateRoomController @Inject constructor(
id("alias")
enabled(enableFormElement)
value(viewState.roomVisibilityType.aliasLocalPart)
- //suffixText(":" + viewState.homeServerName)
- //prefixText("#")
+ suffixText(":" + viewState.homeServerName)
+ prefixText("#")
hint(host.stringProvider.getString(R.string.room_alias_address_hint))
errorMessage(
host.roomAliasErrorFormatter.format(
diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/RoomAliasEditItem.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/RoomAliasEditItem.kt
deleted file mode 100644
index 9cb6f79a56..0000000000
--- a/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/RoomAliasEditItem.kt
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright 2019 New Vector Ltd
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package im.vector.app.features.roomdirectory.createroom
-
-import android.text.Editable
-import android.widget.TextView
-import com.airbnb.epoxy.EpoxyAttribute
-import com.airbnb.epoxy.EpoxyModelClass
-import com.google.android.material.textfield.TextInputEditText
-import com.google.android.material.textfield.TextInputLayout
-import im.vector.app.R
-import im.vector.app.core.epoxy.TextListener
-import im.vector.app.core.epoxy.VectorEpoxyHolder
-import im.vector.app.core.epoxy.VectorEpoxyModel
-import im.vector.app.core.epoxy.addTextChangedListenerOnce
-import im.vector.app.core.epoxy.setValueOnce
-import im.vector.app.core.platform.SimpleTextWatcher
-
-@EpoxyModelClass(layout = R.layout.item_room_alias_text_input)
-abstract class RoomAliasEditItem : VectorEpoxyModel() {
-
- @EpoxyAttribute
- var value: String? = null
-
- @EpoxyAttribute
- var errorMessage: String? = null
-
- @EpoxyAttribute
- var homeServer: String? = null
-
- @EpoxyAttribute
- var enabled: Boolean = true
-
- @EpoxyAttribute(EpoxyAttribute.Option.DoNotHash)
- var onTextChange: TextListener? = null
-
- private val onTextChangeListener = object : SimpleTextWatcher() {
- override fun afterTextChanged(s: Editable) {
- onTextChange?.invoke(s.toString())
- }
- }
-
- override fun bind(holder: Holder) {
- super.bind(holder)
- holder.textInputLayout.isEnabled = enabled
- holder.textInputLayout.error = errorMessage
-
- holder.setValueOnce(holder.textInputEditText, value)
- holder.textInputEditText.isEnabled = enabled
- holder.textInputEditText.addTextChangedListenerOnce(onTextChangeListener)
- holder.homeServerText.text = homeServer
- }
-
- override fun shouldSaveViewState(): Boolean {
- return false
- }
-
- override fun unbind(holder: Holder) {
- super.unbind(holder)
- holder.textInputEditText.removeTextChangedListener(onTextChangeListener)
- }
-
- class Holder : VectorEpoxyHolder() {
- val textInputLayout by bind(R.id.itemRoomAliasTextInputLayout)
- val textInputEditText by bind(R.id.itemRoomAliasTextInputEditText)
- val homeServerText by bind(R.id.itemRoomAliasHomeServer)
- }
-}
diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewActivity.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewActivity.kt
index f9cf8e6dd7..d56870d623 100644
--- a/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/roomdirectory/roompreview/RoomPreviewActivity.kt
@@ -19,7 +19,7 @@ package im.vector.app.features.roomdirectory.roompreview
import android.content.Context
import android.content.Intent
import android.os.Parcelable
-import androidx.appcompat.widget.Toolbar
+import com.google.android.material.appbar.MaterialToolbar
import im.vector.app.R
import im.vector.app.core.extensions.addFragment
import im.vector.app.core.platform.ToolbarConfigurable
@@ -77,7 +77,7 @@ class RoomPreviewActivity : VectorBaseActivity(), Toolbar
override fun getCoordinatorLayout() = views.coordinatorLayout
- override fun configure(toolbar: Toolbar) {
+ override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
diff --git a/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileActivity.kt b/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileActivity.kt
index ef0c7dc962..37ad2741ca 100644
--- a/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/roommemberprofile/RoomMemberProfileActivity.kt
@@ -20,7 +20,7 @@ package im.vector.app.features.roommemberprofile
import android.content.Context
import android.content.Intent
import android.widget.Toast
-import androidx.appcompat.widget.Toolbar
+import com.google.android.material.appbar.MaterialToolbar
import com.airbnb.mvrx.MvRx
import com.airbnb.mvrx.viewModel
import im.vector.app.R
@@ -77,7 +77,7 @@ class RoomMemberProfileActivity :
}
}
- override fun configure(toolbar: Toolbar) {
+ override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileActivity.kt b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileActivity.kt
index 3c50d69b06..0c750a6a80 100644
--- a/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/roomprofile/RoomProfileActivity.kt
@@ -20,7 +20,7 @@ package im.vector.app.features.roomprofile
import android.content.Context
import android.content.Intent
import android.widget.Toast
-import androidx.appcompat.widget.Toolbar
+import com.google.android.material.appbar.MaterialToolbar
import com.airbnb.mvrx.MvRx
import com.airbnb.mvrx.viewModel
import im.vector.app.R
@@ -166,7 +166,7 @@ open class RoomProfileActivity :
addFragmentToBackstack(R.id.simpleFragmentContainer, RoomBannedMemberListFragment::class.java, roomProfileArgs)
}
- override fun configure(toolbar: Toolbar) {
+ override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
}
diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasController.kt b/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasController.kt
index 97050e9c6d..4a683b6292 100644
--- a/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasController.kt
+++ b/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasController.kt
@@ -36,9 +36,9 @@ import im.vector.app.features.discovery.settingsInfoItem
import im.vector.app.features.form.formEditTextItem
import im.vector.app.features.form.formSwitchItem
import im.vector.app.features.roomdirectory.createroom.RoomAliasErrorFormatter
-import im.vector.app.features.roomdirectory.createroom.roomAliasEditItem
import org.matrix.android.sdk.api.session.room.alias.RoomAliasError
import org.matrix.android.sdk.api.session.room.model.RoomDirectoryVisibility
+import org.matrix.android.sdk.api.session.room.model.RoomType
import javax.inject.Inject
class RoomAliasController @Inject constructor(
@@ -71,7 +71,9 @@ class RoomAliasController @Inject constructor(
// Published alias
buildPublishInfo(data)
// Room directory visibility
- buildRoomDirectoryVisibility(data)
+ if (data.roomSummary.invoke()?.roomType != RoomType.SPACE) {
+ buildRoomDirectoryVisibility(data)
+ }
// Local alias
buildLocalInfo(data)
}
@@ -243,10 +245,12 @@ class RoomAliasController @Inject constructor(
}
}
is RoomAliasViewState.AddAliasState.Editing -> {
- roomAliasEditItem {
+ formEditTextItem {
id("newLocalAlias")
value(data.newLocalAliasState.value)
- homeServer(":" + data.homeServerName)
+ suffixText(":" + data.homeServerName)
+ prefixText("#")
+ hint(host.stringProvider.getString(R.string.room_alias_address_hint))
errorMessage(host.roomAliasErrorFormatter.format((data.newLocalAliasState.asyncRequest as? Fail)?.error as? RoomAliasError))
onTextChange { value ->
host.callback?.setNewLocalAliasLocalPart(value)
diff --git a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsSecurityPrivacyFragment.kt b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsSecurityPrivacyFragment.kt
index 4fd2c72b33..bb946ace7d 100644
--- a/vector/src/main/java/im/vector/app/features/settings/VectorSettingsSecurityPrivacyFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/VectorSettingsSecurityPrivacyFragment.kt
@@ -20,6 +20,7 @@ package im.vector.app.features.settings
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Intent
+import android.net.Uri
import android.os.Bundle
import android.view.LayoutInflater
import android.view.ViewGroup
@@ -60,11 +61,11 @@ import im.vector.app.features.raw.wellknown.isE2EByDefault
import im.vector.app.features.themes.ThemeUtils
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
+import kotlinx.coroutines.launch
import me.gujun.android.span.span
import org.matrix.android.sdk.api.MatrixCallback
import org.matrix.android.sdk.api.extensions.getFingerprintHumanReadable
import org.matrix.android.sdk.internal.crypto.crosssigning.isVerified
-import org.matrix.android.sdk.internal.crypto.model.ImportRoomKeysResult
import org.matrix.android.sdk.internal.crypto.model.rest.DeviceInfo
import org.matrix.android.sdk.internal.crypto.model.rest.DevicesListResponse
import org.matrix.android.sdk.rx.SecretsSynchronisationInfo
@@ -75,6 +76,8 @@ class VectorSettingsSecurityPrivacyFragment @Inject constructor(
private val vectorPreferences: VectorPreferences,
private val activeSessionHolder: ActiveSessionHolder,
private val pinCodeStore: PinCodeStore,
+ private val keysExporter: KeysExporter,
+ private val keysImporter: KeysImporter,
private val navigator: Navigator
) : VectorSettingsBaseFragment() {
@@ -320,29 +323,24 @@ class VectorSettingsSecurityPrivacyFragment @Inject constructor(
override fun onPassphrase(passphrase: String) {
displayLoadingView()
- KeysExporter(session)
- .export(requireContext(),
- passphrase,
- uri,
- object : MatrixCallback {
- override fun onSuccess(data: Boolean) {
- if (data) {
- requireActivity().toast(getString(R.string.encryption_exported_successfully))
- } else {
- requireActivity().toast(getString(R.string.unexpected_error))
- }
- hideLoadingView()
- }
-
- override fun onFailure(failure: Throwable) {
- onCommonDone(failure.localizedMessage)
- }
- })
+ export(passphrase, uri)
}
})
}
}
+ private fun export(passphrase: String, uri: Uri) {
+ lifecycleScope.launch {
+ try {
+ keysExporter.export(passphrase, uri)
+ requireActivity().toast(getString(R.string.encryption_exported_successfully))
+ } catch (failure: Throwable) {
+ requireActivity().toast(errorFormatter.toHumanReadable(failure))
+ }
+ hideLoadingView()
+ }
+ }
+
private val pinActivityResultLauncher = registerStartForActivityResult {
if (it.resultCode == Activity.RESULT_OK) {
doOpenPinCodePreferenceScreen()
@@ -474,34 +472,25 @@ class VectorSettingsSecurityPrivacyFragment @Inject constructor(
displayLoadingView()
- KeysImporter(session)
- .import(requireContext(),
- uri,
- mimetype,
- password,
- object : MatrixCallback {
- override fun onSuccess(data: ImportRoomKeysResult) {
- if (!isAdded) {
- return
- }
-
- hideLoadingView()
-
- MaterialAlertDialogBuilder(thisActivity)
- .setMessage(resources.getQuantityString(R.plurals.encryption_import_room_keys_success,
- data.successfullyNumberOfImportedKeys,
- data.successfullyNumberOfImportedKeys,
- data.totalNumberOfKeys))
- .setPositiveButton(R.string.ok) { dialog, _ -> dialog.dismiss() }
- .show()
- }
-
- override fun onFailure(failure: Throwable) {
- appContext.toast(failure.localizedMessage ?: getString(R.string.unexpected_error))
- hideLoadingView()
- }
- })
+ lifecycleScope.launch {
+ val data = try {
+ keysImporter.import(uri, mimetype, password)
+ } catch (failure: Throwable) {
+ appContext.toast(errorFormatter.toHumanReadable(failure))
+ null
+ }
+ hideLoadingView()
+ if (data != null) {
+ MaterialAlertDialogBuilder(thisActivity)
+ .setMessage(resources.getQuantityString(R.plurals.encryption_import_room_keys_success,
+ data.successfullyNumberOfImportedKeys,
+ data.successfullyNumberOfImportedKeys,
+ data.totalNumberOfKeys))
+ .setPositiveButton(R.string.ok) { dialog, _ -> dialog.dismiss() }
+ .show()
+ }
+ }
importDialog.dismiss()
}
}
diff --git a/vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataEpoxyController.kt b/vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataEpoxyController.kt
index fd3cd0962b..5f0004c0de 100644
--- a/vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataEpoxyController.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataEpoxyController.kt
@@ -26,7 +26,7 @@ import im.vector.app.core.epoxy.loadingItem
import im.vector.app.core.resources.StringProvider
import im.vector.app.core.ui.list.genericFooterItem
import im.vector.app.core.ui.list.genericWithValueItem
-import org.matrix.android.sdk.api.session.accountdata.AccountDataEvent
+import org.matrix.android.sdk.api.session.accountdata.UserAccountDataEvent
import javax.inject.Inject
class AccountDataEpoxyController @Inject constructor(
@@ -34,8 +34,8 @@ class AccountDataEpoxyController @Inject constructor(
) : TypedEpoxyController() {
interface InteractionListener {
- fun didTap(data: AccountDataEvent)
- fun didLongTap(data: AccountDataEvent)
+ fun didTap(data: UserAccountDataEvent)
+ fun didLongTap(data: UserAccountDataEvent)
}
var interactionListener: InteractionListener? = null
diff --git a/vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataFragment.kt b/vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataFragment.kt
index 51ba0c62f1..49d1789d64 100644
--- a/vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataFragment.kt
@@ -35,7 +35,7 @@ import im.vector.app.core.utils.createJSonViewerStyleProvider
import im.vector.app.databinding.FragmentGenericRecyclerBinding
import org.billcarsonfr.jsonviewer.JSonViewerDialog
-import org.matrix.android.sdk.api.session.accountdata.AccountDataEvent
+import org.matrix.android.sdk.api.session.accountdata.UserAccountDataEvent
import org.matrix.android.sdk.internal.di.MoshiProvider
import javax.inject.Inject
@@ -73,9 +73,9 @@ class AccountDataFragment @Inject constructor(
super.onDestroyView()
}
- override fun didTap(data: AccountDataEvent) {
+ override fun didTap(data: UserAccountDataEvent) {
val jsonString = MoshiProvider.providesMoshi()
- .adapter(AccountDataEvent::class.java)
+ .adapter(UserAccountDataEvent::class.java)
.toJson(data)
JSonViewerDialog.newInstance(
jsonString,
@@ -84,7 +84,7 @@ class AccountDataFragment @Inject constructor(
).show(childFragmentManager, "JSON_VIEWER")
}
- override fun didLongTap(data: AccountDataEvent) {
+ override fun didLongTap(data: UserAccountDataEvent) {
MaterialAlertDialogBuilder(requireActivity())
.setTitle(R.string.delete)
.setMessage(getString(R.string.delete_account_data_warning, data.type))
diff --git a/vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataViewModel.kt b/vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataViewModel.kt
index 421bc53396..d50caea579 100644
--- a/vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/devtools/AccountDataViewModel.kt
@@ -31,11 +31,11 @@ import im.vector.app.core.platform.EmptyViewEvents
import im.vector.app.core.platform.VectorViewModel
import kotlinx.coroutines.launch
import org.matrix.android.sdk.api.session.Session
-import org.matrix.android.sdk.api.session.accountdata.AccountDataEvent
+import org.matrix.android.sdk.api.session.accountdata.UserAccountDataEvent
import org.matrix.android.sdk.rx.rx
data class AccountDataViewState(
- val accountData: Async> = Uninitialized
+ val accountData: Async> = Uninitialized
) : MvRxState
class AccountDataViewModel @AssistedInject constructor(@Assisted initialState: AccountDataViewState,
@@ -57,7 +57,7 @@ class AccountDataViewModel @AssistedInject constructor(@Assisted initialState: A
private fun handleDeleteAccountData(action: AccountDataAction.DeleteAccountData) {
viewModelScope.launch {
- session.userAccountDataService().updateAccountData(action.type, emptyMap())
+ session.accountDataService().updateUserAccountData(action.type, emptyMap())
}
}
diff --git a/vector/src/main/java/im/vector/app/features/settings/troubleshoot/NotificationTroubleshootRecyclerViewAdapter.kt b/vector/src/main/java/im/vector/app/features/settings/troubleshoot/NotificationTroubleshootRecyclerViewAdapter.kt
index fd7e3cbb6a..70e5bdff10 100644
--- a/vector/src/main/java/im/vector/app/features/settings/troubleshoot/NotificationTroubleshootRecyclerViewAdapter.kt
+++ b/vector/src/main/java/im/vector/app/features/settings/troubleshoot/NotificationTroubleshootRecyclerViewAdapter.kt
@@ -18,13 +18,10 @@ package im.vector.app.features.settings.troubleshoot
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import android.widget.Button
-import android.widget.ImageView
-import android.widget.ProgressBar
-import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import im.vector.app.R
+import im.vector.app.databinding.ItemNotificationTroubleshootBinding
import im.vector.app.features.themes.ThemeUtils
class NotificationTroubleshootRecyclerViewAdapter(val tests: ArrayList)
@@ -46,71 +43,67 @@ class NotificationTroubleshootRecyclerViewAdapter(val tests: ArrayList(R.id.troubleshootProgressBar)
- private val troubleshootTestTitle = itemView.findViewById(R.id.troubleshootTestTitle)
- private val troubleshootTestDescription = itemView.findViewById(R.id.troubleshootTestDescription)
- private val troubleshootStatusIcon = itemView.findViewById(R.id.troubleshootStatusIcon)
- private val troubleshootTestButton = itemView.findViewById(R.id.troubleshootTestButton)
+ private val views = ItemNotificationTroubleshootBinding.bind(itemView)
fun bind(test: TroubleshootTest) {
val context = itemView.context
- troubleshootTestTitle.setTextColor(ThemeUtils.getColor(context, R.attr.vctr_content_primary))
- troubleshootTestDescription.setTextColor(ThemeUtils.getColor(context, R.attr.vctr_content_secondary))
+ views.troubleshootTestTitle.setTextColor(ThemeUtils.getColor(context, R.attr.vctr_content_primary))
+ views.troubleshootTestDescription.setTextColor(ThemeUtils.getColor(context, R.attr.vctr_content_secondary))
when (test.status) {
TroubleshootTest.TestStatus.NOT_STARTED -> {
- troubleshootTestTitle.setTextColor(ThemeUtils.getColor(context, R.attr.vctr_content_secondary))
+ views.troubleshootTestTitle.setTextColor(ThemeUtils.getColor(context, R.attr.vctr_content_secondary))
- troubleshootProgressBar.visibility = View.INVISIBLE
- troubleshootStatusIcon.visibility = View.VISIBLE
- troubleshootStatusIcon.setImageResource(R.drawable.unit_test)
+ views.troubleshootProgressBar.visibility = View.INVISIBLE
+ views.troubleshootStatusIcon.visibility = View.VISIBLE
+ views.troubleshootStatusIcon.setImageResource(R.drawable.unit_test)
}
TroubleshootTest.TestStatus.WAITING_FOR_USER -> {
- troubleshootProgressBar.visibility = View.INVISIBLE
- troubleshootStatusIcon.visibility = View.VISIBLE
+ views.troubleshootProgressBar.visibility = View.INVISIBLE
+ views.troubleshootStatusIcon.visibility = View.VISIBLE
val infoColor = ContextCompat.getColor(context, R.color.vector_info_color)
val drawable = ContextCompat.getDrawable(itemView.context, R.drawable.ic_notification_privacy_warning)?.apply {
ThemeUtils.tintDrawableWithColor(this, infoColor)
}
- troubleshootStatusIcon.setImageDrawable(drawable)
- troubleshootTestDescription.setTextColor(infoColor)
+ views.troubleshootStatusIcon.setImageDrawable(drawable)
+ views.troubleshootTestDescription.setTextColor(infoColor)
}
TroubleshootTest.TestStatus.RUNNING -> {
- troubleshootProgressBar.visibility = View.VISIBLE
- troubleshootStatusIcon.visibility = View.INVISIBLE
+ views.troubleshootProgressBar.visibility = View.VISIBLE
+ views.troubleshootStatusIcon.visibility = View.INVISIBLE
}
TroubleshootTest.TestStatus.FAILED -> {
- troubleshootProgressBar.visibility = View.INVISIBLE
- troubleshootStatusIcon.visibility = View.VISIBLE
- troubleshootStatusIcon.setImageResource(R.drawable.unit_test_ko)
- troubleshootStatusIcon.imageTintList = null
- troubleshootTestDescription.setTextColor(ThemeUtils.getColor(context, R.attr.colorError))
+ views.troubleshootProgressBar.visibility = View.INVISIBLE
+ views.troubleshootStatusIcon.visibility = View.VISIBLE
+ views.troubleshootStatusIcon.setImageResource(R.drawable.unit_test_ko)
+ views.troubleshootStatusIcon.imageTintList = null
+ views.troubleshootTestDescription.setTextColor(ThemeUtils.getColor(context, R.attr.colorError))
}
TroubleshootTest.TestStatus.SUCCESS -> {
- troubleshootProgressBar.visibility = View.INVISIBLE
- troubleshootStatusIcon.visibility = View.VISIBLE
- troubleshootStatusIcon.setImageResource(R.drawable.unit_test_ok)
+ views.troubleshootProgressBar.visibility = View.INVISIBLE
+ views.troubleshootStatusIcon.visibility = View.VISIBLE
+ views.troubleshootStatusIcon.setImageResource(R.drawable.unit_test_ok)
}
}
val quickFix = test.quickFix
if (quickFix != null) {
- troubleshootTestButton.setText(test.quickFix!!.title)
- troubleshootTestButton.setOnClickListener {
+ views.troubleshootTestButton.setText(test.quickFix!!.title)
+ views.troubleshootTestButton.setOnClickListener {
test.quickFix!!.doFix()
}
- troubleshootTestButton.visibility = View.VISIBLE
+ views.troubleshootTestButton.visibility = View.VISIBLE
} else {
- troubleshootTestButton.visibility = View.GONE
+ views.troubleshootTestButton.visibility = View.GONE
}
- troubleshootTestTitle.setText(test.titleResId)
+ views.troubleshootTestTitle.setText(test.titleResId)
val description = test.description
if (description == null) {
- troubleshootTestDescription.visibility = View.GONE
+ views.troubleshootTestDescription.visibility = View.GONE
} else {
- troubleshootTestDescription.visibility = View.VISIBLE
- troubleshootTestDescription.text = description
+ views.troubleshootTestDescription.visibility = View.VISIBLE
+ views.troubleshootTestDescription.text = description
}
}
}
diff --git a/vector/src/main/java/im/vector/app/features/share/IncomingShareActivity.kt b/vector/src/main/java/im/vector/app/features/share/IncomingShareActivity.kt
index d0b3500258..b9d3b1ba14 100644
--- a/vector/src/main/java/im/vector/app/features/share/IncomingShareActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/share/IncomingShareActivity.kt
@@ -16,7 +16,7 @@
package im.vector.app.features.share
-import androidx.appcompat.widget.Toolbar
+import com.google.android.material.appbar.MaterialToolbar
import im.vector.app.R
import im.vector.app.core.extensions.addFragment
import im.vector.app.core.platform.ToolbarConfigurable
@@ -35,7 +35,7 @@ class IncomingShareActivity : VectorBaseActivity(), Toolb
}
}
- override fun configure(toolbar: Toolbar) {
+ override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar, displayBack = false)
}
}
diff --git a/vector/src/main/java/im/vector/app/features/spaces/SpaceCreationActivity.kt b/vector/src/main/java/im/vector/app/features/spaces/SpaceCreationActivity.kt
index 57c6b40404..a02755a155 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/SpaceCreationActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/SpaceCreationActivity.kt
@@ -53,16 +53,15 @@ class SpaceCreationActivity : SimpleFragmentActivity(), CreateSpaceViewModel.Fac
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
-
if (isFirstCreation()) {
when (withState(viewModel) { it.step }) {
- CreateSpaceState.Step.ChooseType -> {
+ CreateSpaceState.Step.ChooseType -> {
navigateToFragment(ChooseSpaceTypeFragment::class.java)
}
- CreateSpaceState.Step.SetDetails -> {
+ CreateSpaceState.Step.SetDetails -> {
navigateToFragment(ChooseSpaceTypeFragment::class.java)
}
- CreateSpaceState.Step.AddRooms -> {
+ CreateSpaceState.Step.AddRooms -> {
navigateToFragment(CreateSpaceDefaultRoomsFragment::class.java)
}
CreateSpaceState.Step.ChoosePrivateType -> {
@@ -81,29 +80,29 @@ class SpaceCreationActivity : SimpleFragmentActivity(), CreateSpaceViewModel.Fac
viewModel.observeViewEvents {
when (it) {
- CreateSpaceEvents.NavigateToDetails -> {
+ CreateSpaceEvents.NavigateToDetails -> {
navigateToFragment(CreateSpaceDetailsFragment::class.java)
}
- CreateSpaceEvents.NavigateToChooseType -> {
+ CreateSpaceEvents.NavigateToChooseType -> {
navigateToFragment(ChooseSpaceTypeFragment::class.java)
}
- CreateSpaceEvents.Dismiss -> {
+ CreateSpaceEvents.Dismiss -> {
finish()
}
- CreateSpaceEvents.NavigateToAddRooms -> {
+ CreateSpaceEvents.NavigateToAddRooms -> {
navigateToFragment(CreateSpaceDefaultRoomsFragment::class.java)
}
CreateSpaceEvents.NavigateToChoosePrivateType -> {
navigateToFragment(ChoosePrivateSpaceTypeFragment::class.java)
}
- is CreateSpaceEvents.ShowModalError -> {
+ is CreateSpaceEvents.ShowModalError -> {
hideWaitingView()
MaterialAlertDialogBuilder(this)
.setMessage(it.errorMessage)
.setPositiveButton(getString(R.string.ok), null)
.show()
}
- is CreateSpaceEvents.FinishSuccess -> {
+ is CreateSpaceEvents.FinishSuccess -> {
setResult(RESULT_OK, Intent().apply {
putExtra(RESULT_DATA_CREATED_SPACE_ID, it.spaceId)
putExtra(RESULT_DATA_DEFAULT_ROOM_ID, it.defaultRoomId)
@@ -111,9 +110,12 @@ class SpaceCreationActivity : SimpleFragmentActivity(), CreateSpaceViewModel.Fac
})
finish()
}
- CreateSpaceEvents.HideModalLoading -> {
+ CreateSpaceEvents.HideModalLoading -> {
hideWaitingView()
}
+ is CreateSpaceEvents.ShowModalLoading -> {
+ showWaitingView(it.message)
+ }
}
}
}
@@ -135,9 +137,9 @@ class SpaceCreationActivity : SimpleFragmentActivity(), CreateSpaceViewModel.Fac
private fun renderState(state: CreateSpaceState) {
val titleRes = when (state.step) {
- CreateSpaceState.Step.ChooseType -> R.string.activity_create_space_title
+ CreateSpaceState.Step.ChooseType -> R.string.activity_create_space_title
CreateSpaceState.Step.SetDetails,
- CreateSpaceState.Step.AddRooms -> {
+ CreateSpaceState.Step.AddRooms -> {
if (state.spaceType == SpaceType.Public) R.string.your_public_space
else R.string.your_private_space
}
diff --git a/vector/src/main/java/im/vector/app/features/spaces/SpaceListAction.kt b/vector/src/main/java/im/vector/app/features/spaces/SpaceListAction.kt
index b8b6cb4667..12d4b40f42 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/SpaceListAction.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/SpaceListAction.kt
@@ -26,6 +26,9 @@ sealed class SpaceListAction : VectorViewModelAction {
data class LeaveSpace(val spaceSummary: RoomSummary) : SpaceListAction()
data class ToggleExpand(val spaceSummary: RoomSummary) : SpaceListAction()
object AddSpace : SpaceListAction()
+ data class MoveSpace(val spaceId: String, val delta : Int) : SpaceListAction()
+ data class OnStartDragging(val spaceId: String, val expanded: Boolean) : SpaceListAction()
+ data class OnEndDragging(val spaceId: String, val expanded: Boolean) : SpaceListAction()
data class SelectLegacyGroup(val groupSummary: GroupSummary?) : SpaceListAction()
}
diff --git a/vector/src/main/java/im/vector/app/features/spaces/SpaceListFragment.kt b/vector/src/main/java/im/vector/app/features/spaces/SpaceListFragment.kt
index f50ba90221..0a67977e6c 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/SpaceListFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/SpaceListFragment.kt
@@ -17,9 +17,11 @@
package im.vector.app.features.spaces
import android.os.Bundle
+import android.view.HapticFeedbackConstants
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import com.airbnb.epoxy.EpoxyTouchHelper
import com.airbnb.mvrx.Incomplete
import com.airbnb.mvrx.Success
import com.airbnb.mvrx.fragmentViewModel
@@ -54,6 +56,53 @@ class SpaceListFragment @Inject constructor(
spaceController.callback = this
views.stateView.contentView = views.groupListView
views.groupListView.configureWith(spaceController)
+ EpoxyTouchHelper.initDragging(spaceController)
+ .withRecyclerView(views.groupListView)
+ .forVerticalList()
+ .withTarget(SpaceSummaryItem::class.java)
+ .andCallbacks(object : EpoxyTouchHelper.DragCallbacks() {
+ var toPositionM: Int? = null
+ var fromPositionM: Int? = null
+ var initialElevation: Float? = null
+
+ override fun onDragStarted(model: SpaceSummaryItem?, itemView: View?, adapterPosition: Int) {
+ toPositionM = null
+ fromPositionM = null
+ model?.matrixItem?.id?.let {
+ viewModel.handle(SpaceListAction.OnStartDragging(it, model.expanded))
+ }
+ itemView?.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS)
+ initialElevation = itemView?.elevation
+ itemView?.elevation = 6f
+ }
+
+ override fun onDragReleased(model: SpaceSummaryItem?, itemView: View?) {
+// Timber.v("VAL: onModelMoved from $fromPositionM to $toPositionM ${model?.matrixItem?.getBestName()}")
+ if (toPositionM == null || fromPositionM == null) return
+ val movingSpace = model?.matrixItem?.id ?: return
+ viewModel.handle(SpaceListAction.MoveSpace(movingSpace, toPositionM!! - fromPositionM!!))
+ }
+
+ override fun clearView(model: SpaceSummaryItem?, itemView: View?) {
+// Timber.v("VAL: clearView ${model?.matrixItem?.getBestName()}")
+ itemView?.elevation = initialElevation ?: 0f
+ }
+
+ override fun onModelMoved(fromPosition: Int, toPosition: Int, modelBeingMoved: SpaceSummaryItem?, itemView: View?) {
+// Timber.v("VAL: onModelMoved incremental from $fromPosition to $toPosition ${modelBeingMoved?.matrixItem?.getBestName()}")
+ if (fromPositionM == null) {
+ fromPositionM = fromPosition
+ }
+ toPositionM = toPosition
+ itemView?.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS)
+ }
+
+ override fun isDragEnabledForModel(model: SpaceSummaryItem?): Boolean {
+// Timber.v("VAL: isDragEnabledForModel ${model?.matrixItem?.getBestName()}")
+ return model?.canDrag == true
+ }
+ })
+
viewModel.observeViewEvents {
when (it) {
is SpaceListViewEvents.OpenSpaceSummary -> sharedActionViewModel.post(HomeActivitySharedAction.OpenSpacePreview(it.id))
@@ -74,7 +123,7 @@ class SpaceListFragment @Inject constructor(
override fun invalidate() = withState(viewModel) { state ->
when (state.asyncSpaces) {
is Incomplete -> views.stateView.state = StateView.State.Loading
- is Success -> views.stateView.state = StateView.State.Content
+ is Success -> views.stateView.state = StateView.State.Content
}
spaceController.update(state)
}
@@ -86,6 +135,7 @@ class SpaceListFragment @Inject constructor(
override fun onSpaceInviteSelected(spaceSummary: RoomSummary) {
viewModel.handle(SpaceListAction.OpenSpaceInvite(spaceSummary))
}
+
override fun onSpaceSettings(spaceSummary: RoomSummary) {
sharedActionViewModel.post(HomeActivitySharedAction.ShowSpaceSettings(spaceSummary.roomId))
}
diff --git a/vector/src/main/java/im/vector/app/features/spaces/SpaceListViewState.kt b/vector/src/main/java/im/vector/app/features/spaces/SpaceListViewState.kt
index 1096467966..baa128b658 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/SpaceListViewState.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/SpaceListViewState.kt
@@ -29,7 +29,9 @@ data class SpaceListViewState(
val myMxItem : Async = Uninitialized,
val asyncSpaces: Async> = Uninitialized,
val selectedGroupingMethod: RoomGroupingMethod = RoomGroupingMethod.BySpace(null),
- val rootSpaces: List? = null,
+ val rootSpacesOrdered: List? = null,
+ val spaceOrderInfo: Map? = null,
+ val spaceOrderLocalEchos: Map? = null,
val legacyGroups: List? = null,
val expandedStates: Map = emptyMap(),
val homeAggregateCount : RoomAggregateNotificationCount = RoomAggregateNotificationCount(0, 0, 0, 0)
diff --git a/vector/src/main/java/im/vector/app/features/spaces/SpaceSettingsMenuBottomSheet.kt b/vector/src/main/java/im/vector/app/features/spaces/SpaceSettingsMenuBottomSheet.kt
index c22f0953f4..0d77844ba6 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/SpaceSettingsMenuBottomSheet.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/SpaceSettingsMenuBottomSheet.kt
@@ -129,7 +129,7 @@ class SpaceSettingsMenuBottomSheet : VectorBaseBottomSheetDialogFragment
val isSelected = selected is RoomGroupingMethod.BySpace && groupSummary.roomId == selected.space()?.roomId
// does it have children?
@@ -157,8 +157,12 @@ class SpaceSummaryController @Inject constructor(
id(groupSummary.roomId)
hasChildren(hasChildren)
expanded(expanded)
+ // to debug order
+ // matrixItem(groupSummary.copy(displayName = "${groupSummary.displayName} / ${spaceOrderInfo?.get(groupSummary.roomId)}")
+ // .toMatrixItem())
matrixItem(groupSummary.toMatrixItem())
selected(isSelected)
+ canDrag(true)
onMore { host.callback?.onSpaceSettings(groupSummary) }
listener { host.callback?.onSpaceSelected(groupSummary) }
toggleExpand { host.callback?.onToggleExpand(groupSummary) }
diff --git a/vector/src/main/java/im/vector/app/features/spaces/SpaceSummaryItem.kt b/vector/src/main/java/im/vector/app/features/spaces/SpaceSummaryItem.kt
index f976836697..d1e526cf66 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/SpaceSummaryItem.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/SpaceSummaryItem.kt
@@ -51,6 +51,7 @@ abstract class SpaceSummaryItem : VectorEpoxyModel() {
@EpoxyAttribute var countState: UnreadCounterBadgeView.State = UnreadCounterBadgeView.State(0, false, 0, false)
@EpoxyAttribute var description: String? = null
@EpoxyAttribute var showSeparator: Boolean = false
+ @EpoxyAttribute var canDrag: Boolean = true
override fun bind(holder: Holder) {
super.bind(holder)
diff --git a/vector/src/main/java/im/vector/app/features/spaces/SpacesListViewModel.kt b/vector/src/main/java/im/vector/app/features/spaces/SpacesListViewModel.kt
index d96b6f7d81..5476b18734 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/SpacesListViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/SpacesListViewModel.kt
@@ -29,23 +29,30 @@ import im.vector.app.AppStateHandler
import im.vector.app.RoomGroupingMethod
import im.vector.app.core.platform.VectorViewModel
import im.vector.app.features.home.room.ScSdkPreferences
+import im.vector.app.features.session.coroutineScope
import im.vector.app.features.settings.VectorPreferences
import im.vector.app.group
import im.vector.app.space
import io.reactivex.Observable
-import io.reactivex.functions.BiFunction
import io.reactivex.schedulers.Schedulers
import kotlinx.coroutines.launch
import org.matrix.android.sdk.api.extensions.tryOrNull
import org.matrix.android.sdk.api.query.ActiveSpaceFilter
import org.matrix.android.sdk.api.query.QueryStringValue
import org.matrix.android.sdk.api.session.Session
+import org.matrix.android.sdk.api.session.events.model.toContent
+import org.matrix.android.sdk.api.session.events.model.toModel
import org.matrix.android.sdk.api.session.group.groupSummaryQueryParams
import org.matrix.android.sdk.api.session.room.RoomSortOrder
+import org.matrix.android.sdk.api.session.room.accountdata.RoomAccountDataEvent
+import org.matrix.android.sdk.api.session.room.accountdata.RoomAccountDataTypes
import org.matrix.android.sdk.api.session.room.model.Membership
import org.matrix.android.sdk.api.session.room.model.RoomSummary
import org.matrix.android.sdk.api.session.room.roomSummaryQueryParams
import org.matrix.android.sdk.api.session.room.summary.RoomAggregateNotificationCount
+import org.matrix.android.sdk.api.session.space.SpaceOrderUtils
+import org.matrix.android.sdk.api.session.space.model.SpaceOrderContent
+import org.matrix.android.sdk.api.session.space.model.TopLevelSpaceComparator
import org.matrix.android.sdk.api.session.user.model.User
import org.matrix.android.sdk.api.util.toMatrixItem
import org.matrix.android.sdk.rx.asObservable
@@ -148,37 +155,86 @@ class SpacesListViewModel @AssistedInject constructor(@Assisted initialState: Sp
}.disposeOnClear()
}
-// private fun observeSelectionState() {
-// selectSubscribe(SpaceListViewState::selectedSpace) { spaceSummary ->
-// if (spaceSummary != null) {
-// // We only want to open group if the updated selectedGroup is a different one.
-// if (currentGroupId != spaceSummary.roomId) {
-// currentGroupId = spaceSummary.roomId
-// _viewEvents.post(SpaceListViewEvents.OpenSpace)
-// }
-// appStateHandler.setCurrentSpace(spaceSummary.roomId)
-// } else {
-// // If selected group is null we force to default. It can happens when leaving the selected group.
-// setState {
-// copy(selectedSpace = this.asyncSpaces()?.find { it.roomId == ALL_COMMUNITIES_GROUP_ID })
-// }
-// }
-// }
-// }
-
override fun handle(action: SpaceListAction) {
when (action) {
- is SpaceListAction.SelectSpace -> handleSelectSpace(action)
- is SpaceListAction.LeaveSpace -> handleLeaveSpace(action)
- SpaceListAction.AddSpace -> handleAddSpace()
- is SpaceListAction.ToggleExpand -> handleToggleExpand(action)
- is SpaceListAction.OpenSpaceInvite -> handleSelectSpaceInvite(action)
+ is SpaceListAction.SelectSpace -> handleSelectSpace(action)
+ is SpaceListAction.LeaveSpace -> handleLeaveSpace(action)
+ SpaceListAction.AddSpace -> handleAddSpace()
+ is SpaceListAction.ToggleExpand -> handleToggleExpand(action)
+ is SpaceListAction.OpenSpaceInvite -> handleSelectSpaceInvite(action)
is SpaceListAction.SelectLegacyGroup -> handleSelectGroup(action)
+ is SpaceListAction.MoveSpace -> handleMoveSpace(action)
+ is SpaceListAction.OnEndDragging -> handleEndDragging()
+ is SpaceListAction.OnStartDragging -> handleStartDragging()
}
}
// PRIVATE METHODS *****************************************************************************
+ var preDragExpandedState: Map? = null
+ private fun handleStartDragging() = withState { state ->
+ preDragExpandedState = state.expandedStates.toMap()
+ setState {
+ copy(
+ expandedStates = expandedStates.map {
+ it.key to false
+ }.toMap()
+ )
+ }
+ }
+
+ private fun handleEndDragging() {
+ // restore expanded state
+ setState {
+ copy(
+ expandedStates = preDragExpandedState.orEmpty()
+ )
+ }
+ }
+
+ private fun handleMoveSpace(action: SpaceListAction.MoveSpace) = withState { state ->
+ state.rootSpacesOrdered ?: return@withState
+ val orderCommands = SpaceOrderUtils.orderCommandsForMove(
+ state.rootSpacesOrdered.map {
+ it.roomId to (state.spaceOrderLocalEchos?.get(it.roomId) ?: state.spaceOrderInfo?.get(it.roomId))
+ },
+ action.spaceId,
+ action.delta
+ )
+
+ // local echo
+ val updatedLocalEchos = state.spaceOrderLocalEchos.orEmpty().toMutableMap().apply {
+ orderCommands.forEach {
+ this[it.spaceId] = it.order
+ }
+ }.toMap()
+
+ setState {
+ copy(
+ rootSpacesOrdered = state.rootSpacesOrdered.toMutableList().apply {
+ val index = indexOfFirst { it.roomId == action.spaceId }
+ val moved = removeAt(index)
+ add(index + action.delta, moved)
+ },
+ spaceOrderLocalEchos = updatedLocalEchos
+ )
+ }
+ session.coroutineScope.launch {
+ orderCommands.forEach {
+ session.getRoom(it.spaceId)?.updateAccountData(RoomAccountDataTypes.EVENT_TYPE_SPACE_ORDER,
+ SpaceOrderContent(order = it.order).toContent()
+ )
+ }
+ }
+
+ // restore expanded state
+ setState {
+ copy(
+ expandedStates = preDragExpandedState.orEmpty()
+ )
+ }
+ }
+
private fun handleSelectSpace(action: SpaceListAction.SelectSpace) = withState { state ->
val groupingMethod = state.selectedGroupingMethod
if (groupingMethod is RoomGroupingMethod.ByLegacyGroup || groupingMethod.space()?.roomId != action.spaceSummary?.roomId) {
@@ -229,24 +285,43 @@ class SpacesListViewModel @AssistedInject constructor(@Assisted initialState: Sp
excludeType = listOf(/**RoomType.MESSAGING,$*/
null)
}
- Observable.combineLatest, List>(
- session
- .rx()
+
+ val rxSession = session.rx()
+
+ Observable.combineLatest, List, List>(
+ rxSession
.liveUser(session.myUserId)
.map {
it.getOrNull()
},
- session
- .rx()
+ rxSession
.liveSpaceSummaries(spaceSummaryQueryParams),
- BiFunction { _, communityGroups ->
+ session.accountDataService().getLiveRoomAccountDataEvents(setOf(RoomAccountDataTypes.EVENT_TYPE_SPACE_ORDER)).asObservable(),
+ { _, communityGroups, _ ->
communityGroups
}
)
.execute { async ->
+ val rootSpaces = session.spaceService().getRootSpaceSummaries()
+ val orders = rootSpaces.map {
+ it.roomId to session.getRoom(it.roomId)
+ ?.getAccountDataEvent(RoomAccountDataTypes.EVENT_TYPE_SPACE_ORDER)
+ ?.content.toModel()
+ ?.safeOrder()
+ }.toMap()
copy(
asyncSpaces = async,
- rootSpaces = session.spaceService().getRootSpaceSummaries()
+ rootSpacesOrdered = rootSpaces.sortedWith(TopLevelSpaceComparator(orders)),
+ spaceOrderInfo = orders
+ )
+ }
+
+ // clear local echos on update
+ session.accountDataService()
+ .getLiveRoomAccountDataEvents(setOf(RoomAccountDataTypes.EVENT_TYPE_SPACE_ORDER))
+ .asObservable().execute {
+ copy(
+ spaceOrderLocalEchos = emptyMap()
)
}
}
diff --git a/vector/src/main/java/im/vector/app/features/call/DialerChoiceBottomSheet.kt b/vector/src/main/java/im/vector/app/features/spaces/create/BetaWarningBottomSheet.kt
similarity index 58%
rename from vector/src/main/java/im/vector/app/features/call/DialerChoiceBottomSheet.kt
rename to vector/src/main/java/im/vector/app/features/spaces/create/BetaWarningBottomSheet.kt
index 401b3e23d7..fc3d98e6b8 100644
--- a/vector/src/main/java/im/vector/app/features/call/DialerChoiceBottomSheet.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/create/BetaWarningBottomSheet.kt
@@ -14,33 +14,33 @@
* limitations under the License.
*/
-package im.vector.app.features.call
+package im.vector.app.features.spaces.create
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.fragment.app.setFragmentResult
import im.vector.app.core.platform.VectorBaseBottomSheetDialogFragment
-import im.vector.app.databinding.BottomSheetCallDialerChoiceBinding
+import im.vector.app.databinding.BottomSheetSpaceCreatePrivateWarningBinding
-class DialerChoiceBottomSheet : VectorBaseBottomSheetDialogFragment() {
- override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): BottomSheetCallDialerChoiceBinding {
- return BottomSheetCallDialerChoiceBinding.inflate(inflater, container, false)
- }
+class BetaWarningBottomSheet : VectorBaseBottomSheetDialogFragment() {
- var onDialPadClicked: (() -> Unit)? = null
- var onVoiceCallClicked: (() -> Unit)? = null
+ override fun getBinding(inflater: LayoutInflater, container: ViewGroup?) =
+ BottomSheetSpaceCreatePrivateWarningBinding.inflate(inflater, container, false)
+
+ override val showExpanded = true
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- views.dialerChoiceDialPad.views.bottomSheetActionClickableZone.debouncedClicks {
- onDialPadClicked?.invoke()
- dismiss()
- }
- views.dialerChoiceVoiceCall.views.bottomSheetActionClickableZone.debouncedClicks {
- onVoiceCallClicked?.invoke()
+ views.continueButton.debouncedClicks {
+ setFragmentResult(REQUEST_KEY, Bundle.EMPTY)
dismiss()
}
}
+
+ companion object {
+ const val REQUEST_KEY = "BetaWarningBottomSheet"
+ }
}
diff --git a/vector/src/main/java/im/vector/app/features/spaces/create/ChoosePrivateSpaceTypeFragment.kt b/vector/src/main/java/im/vector/app/features/spaces/create/ChoosePrivateSpaceTypeFragment.kt
index 4f079551eb..4031b56c1d 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/create/ChoosePrivateSpaceTypeFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/create/ChoosePrivateSpaceTypeFragment.kt
@@ -20,6 +20,7 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.fragment.app.setFragmentResultListener
import com.airbnb.mvrx.activityViewModel
import im.vector.app.R
import im.vector.app.core.epoxy.onClick
@@ -38,6 +39,13 @@ class ChoosePrivateSpaceTypeFragment @Inject constructor(
override fun getBinding(inflater: LayoutInflater, container: ViewGroup?) =
FragmentSpaceCreateChoosePrivateModelBinding.inflate(layoutInflater, container, false)
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setFragmentResultListener(BetaWarningBottomSheet.REQUEST_KEY) { _, _ ->
+ sharedViewModel.handle(CreateSpaceAction.SetSpaceTopology(SpaceTopology.MeAndTeammates))
+ }
+ }
+
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
@@ -46,7 +54,7 @@ class ChoosePrivateSpaceTypeFragment @Inject constructor(
}
views.teammatesButton.onClick {
- sharedViewModel.handle(CreateSpaceAction.SetSpaceTopology(SpaceTopology.MeAndTeammates))
+ BetaWarningBottomSheet().show(parentFragmentManager, "warning")
}
sharedViewModel.subscribe { state ->
diff --git a/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceAction.kt b/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceAction.kt
index cd31b40354..1f0ed6428f 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceAction.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceAction.kt
@@ -23,6 +23,7 @@ sealed class CreateSpaceAction : VectorViewModelAction {
data class SetRoomType(val type: SpaceType) : CreateSpaceAction()
data class NameChanged(val name: String) : CreateSpaceAction()
data class TopicChanged(val topic: String) : CreateSpaceAction()
+ data class SpaceAliasChanged(val aliasLocalPart: String) : CreateSpaceAction()
data class SetAvatar(val uri: Uri?) : CreateSpaceAction()
object OnBackPressed : CreateSpaceAction()
object NextFromDetails : CreateSpaceAction()
diff --git a/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceDetailsFragment.kt b/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceDetailsFragment.kt
index b5925eec59..544c33948b 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceDetailsFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceDetailsFragment.kt
@@ -84,6 +84,10 @@ class CreateSpaceDetailsFragment @Inject constructor(
sharedViewModel.handle(CreateSpaceAction.TopicChanged(newTopic))
}
+ override fun setAliasLocalPart(aliasLocalPart: String) {
+ sharedViewModel.handle(CreateSpaceAction.SpaceAliasChanged(aliasLocalPart))
+ }
+
override fun onBackPressed(toolbarButton: Boolean): Boolean {
sharedViewModel.handle(CreateSpaceAction.OnBackPressed)
return true
diff --git a/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceEvents.kt b/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceEvents.kt
index c3fa2b2068..073531353f 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceEvents.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceEvents.kt
@@ -27,4 +27,5 @@ sealed class CreateSpaceEvents : VectorViewEvents {
data class FinishSuccess(val spaceId: String, val defaultRoomId: String?, val topology: SpaceTopology?) : CreateSpaceEvents()
data class ShowModalError(val errorMessage: String) : CreateSpaceEvents()
object HideModalLoading : CreateSpaceEvents()
+ data class ShowModalLoading(val message: String?) : CreateSpaceEvents()
}
diff --git a/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceState.kt b/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceState.kt
index 147fd3a616..39a69e837b 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceState.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceState.kt
@@ -28,6 +28,10 @@ data class CreateSpaceState(
val step: Step = Step.ChooseType,
val spaceType: SpaceType? = null,
val spaceTopology: SpaceTopology? = null,
+ val homeServerName: String? = null,
+ val aliasLocalPart: String? = null,
+ val aliasManuallyModified: Boolean = false,
+ val aliasVerificationTask: Async = Uninitialized,
val nameInlineError: String? = null,
val defaultRooms: Map? = null,
val creationResult: Async = Uninitialized
diff --git a/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceViewModel.kt b/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceViewModel.kt
index 9881232f4d..60110b7dd5 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceViewModel.kt
@@ -35,14 +35,27 @@ import im.vector.app.core.platform.VectorViewModel
import im.vector.app.core.resources.StringProvider
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
+import org.matrix.android.sdk.api.MatrixPatterns
+import org.matrix.android.sdk.api.session.Session
+import org.matrix.android.sdk.api.session.room.AliasAvailabilityResult
+import org.matrix.android.sdk.api.session.room.failure.CreateRoomFailure
class CreateSpaceViewModel @AssistedInject constructor(
@Assisted initialState: CreateSpaceState,
+ private val session: Session,
private val stringProvider: StringProvider,
private val createSpaceViewModelTask: CreateSpaceViewModelTask,
private val errorFormatter: ErrorFormatter
) : VectorViewModel(initialState) {
+ init {
+ setState {
+ copy(
+ homeServerName = session.myUserId.substringAfter(":")
+ )
+ }
+ }
+
@AssistedFactory
interface Factory {
fun create(initialState: CreateSpaceState): CreateSpaceViewModel
@@ -70,7 +83,7 @@ class CreateSpaceViewModel @AssistedInject constructor(
override fun handle(action: CreateSpaceAction) {
when (action) {
- is CreateSpaceAction.SetRoomType -> {
+ is CreateSpaceAction.SetRoomType -> {
setState {
copy(
step = CreateSpaceState.Step.SetDetails,
@@ -79,28 +92,51 @@ class CreateSpaceViewModel @AssistedInject constructor(
}
_viewEvents.post(CreateSpaceEvents.NavigateToDetails)
}
- is CreateSpaceAction.NameChanged -> {
+ is CreateSpaceAction.NameChanged -> {
setState {
- copy(
- nameInlineError = null,
- name = action.name
- )
+ if (aliasManuallyModified) {
+ copy(
+ nameInlineError = null,
+ name = action.name,
+ aliasVerificationTask = Uninitialized
+ )
+ } else {
+ val tentativeAlias =
+ MatrixPatterns.candidateAliasFromRoomName(action.name)
+ copy(
+ nameInlineError = null,
+ name = action.name,
+ aliasLocalPart = tentativeAlias,
+ aliasVerificationTask = Uninitialized
+ )
+ }
}
}
- is CreateSpaceAction.TopicChanged -> {
+ is CreateSpaceAction.TopicChanged -> {
setState {
copy(
topic = action.topic
)
}
}
- CreateSpaceAction.OnBackPressed -> {
+ is CreateSpaceAction.SpaceAliasChanged -> {
+ // This called only when the alias is change manually
+ // not when programmatically changed via a change on name
+ setState {
+ copy(
+ aliasManuallyModified = true,
+ aliasLocalPart = action.aliasLocalPart,
+ aliasVerificationTask = Uninitialized
+ )
+ }
+ }
+ CreateSpaceAction.OnBackPressed -> {
handleBackNavigation()
}
- CreateSpaceAction.NextFromDetails -> {
+ CreateSpaceAction.NextFromDetails -> {
handleNextFromDetails()
}
- CreateSpaceAction.NextFromDefaultRooms -> {
+ CreateSpaceAction.NextFromDefaultRooms -> {
handleNextFromDefaultRooms()
}
is CreateSpaceAction.DefaultRoomNameChanged -> {
@@ -112,10 +148,10 @@ class CreateSpaceViewModel @AssistedInject constructor(
)
}
}
- is CreateSpaceAction.SetAvatar -> {
+ is CreateSpaceAction.SetAvatar -> {
setState { copy(avatarUri = action.uri) }
}
- is CreateSpaceAction.SetSpaceTopology -> {
+ is CreateSpaceAction.SetSpaceTopology -> {
handleSetTopology(action)
}
}.exhaustive
@@ -123,7 +159,7 @@ class CreateSpaceViewModel @AssistedInject constructor(
private fun handleSetTopology(action: CreateSpaceAction.SetSpaceTopology) {
when (action.topology) {
- SpaceTopology.JustMe -> {
+ SpaceTopology.JustMe -> {
setState {
copy(
spaceTopology = SpaceTopology.JustMe,
@@ -146,10 +182,10 @@ class CreateSpaceViewModel @AssistedInject constructor(
private fun handleBackNavigation() = withState { state ->
when (state.step) {
- CreateSpaceState.Step.ChooseType -> {
+ CreateSpaceState.Step.ChooseType -> {
_viewEvents.post(CreateSpaceEvents.Dismiss)
}
- CreateSpaceState.Step.SetDetails -> {
+ CreateSpaceState.Step.SetDetails -> {
setState {
copy(
step = CreateSpaceState.Step.ChooseType,
@@ -159,7 +195,7 @@ class CreateSpaceViewModel @AssistedInject constructor(
}
_viewEvents.post(CreateSpaceEvents.NavigateToChooseType)
}
- CreateSpaceState.Step.AddRooms -> {
+ CreateSpaceState.Step.AddRooms -> {
if (state.spaceType == SpaceType.Private && state.spaceTopology == SpaceTopology.MeAndTeammates) {
setState {
copy(
@@ -204,12 +240,38 @@ class CreateSpaceViewModel @AssistedInject constructor(
}
_viewEvents.post(CreateSpaceEvents.NavigateToChoosePrivateType)
} else {
+ // it'a public space, let's check alias
+ val aliasLocalPart = state.aliasLocalPart
+ _viewEvents.post(CreateSpaceEvents.ShowModalLoading(null))
setState {
- copy(
- step = CreateSpaceState.Step.AddRooms
- )
+ copy(aliasVerificationTask = Loading())
+ }
+ viewModelScope.launch {
+ try {
+ when (val result = session.checkAliasAvailability(aliasLocalPart)) {
+ AliasAvailabilityResult.Available -> {
+ setState {
+ copy(
+ step = CreateSpaceState.Step.AddRooms
+ )
+ }
+ _viewEvents.post(CreateSpaceEvents.HideModalLoading)
+ _viewEvents.post(CreateSpaceEvents.NavigateToAddRooms)
+ }
+ is AliasAvailabilityResult.NotAvailable -> {
+ setState {
+ copy(aliasVerificationTask = Fail(result.roomAliasError))
+ }
+ _viewEvents.post(CreateSpaceEvents.HideModalLoading)
+ }
+ }
+ } catch (failure: Throwable) {
+ setState {
+ copy(aliasVerificationTask = Fail(failure))
+ }
+ _viewEvents.post(CreateSpaceEvents.HideModalLoading)
+ }
}
- _viewEvents.post(CreateSpaceEvents.NavigateToAddRooms)
}
}
}
@@ -221,6 +283,9 @@ class CreateSpaceViewModel @AssistedInject constructor(
}
viewModelScope.launch(Dispatchers.IO) {
try {
+ val alias = if (state.spaceType == SpaceType.Public) {
+ state.aliasLocalPart
+ } else null
val result = createSpaceViewModelTask.execute(
CreateSpaceTaskParams(
spaceName = spaceName,
@@ -230,11 +295,12 @@ class CreateSpaceViewModel @AssistedInject constructor(
defaultRooms = state.defaultRooms
?.entries
?.sortedBy { it.key }
- ?.mapNotNull { it.value } ?: emptyList()
+ ?.mapNotNull { it.value } ?: emptyList(),
+ spaceAlias = alias
)
)
when (result) {
- is CreateSpaceTaskResult.Success -> {
+ is CreateSpaceTaskResult.Success -> {
setState {
copy(creationResult = Success(result.spaceId))
}
@@ -246,7 +312,7 @@ class CreateSpaceViewModel @AssistedInject constructor(
)
)
}
- is CreateSpaceTaskResult.PartialSuccess -> {
+ is CreateSpaceTaskResult.PartialSuccess -> {
// XXX what can we do here?
setState {
copy(creationResult = Success(result.spaceId))
@@ -260,10 +326,22 @@ class CreateSpaceViewModel @AssistedInject constructor(
)
}
is CreateSpaceTaskResult.FailedToCreateSpace -> {
- setState {
- copy(creationResult = Fail(result.failure))
+ if (result.failure is CreateRoomFailure.AliasError) {
+ setState {
+ copy(
+ step = CreateSpaceState.Step.SetDetails,
+ aliasVerificationTask = Fail(result.failure.aliasError),
+ creationResult = Uninitialized
+ )
+ }
+ _viewEvents.post(CreateSpaceEvents.HideModalLoading)
+ _viewEvents.post(CreateSpaceEvents.NavigateToDetails)
+ } else {
+ setState {
+ copy(creationResult = Fail(result.failure))
+ }
+ _viewEvents.post(CreateSpaceEvents.ShowModalError(errorFormatter.toHumanReadable(result.failure)))
}
- _viewEvents.post(CreateSpaceEvents.ShowModalError(errorFormatter.toHumanReadable(result.failure)))
}
}
} catch (failure: Throwable) {
diff --git a/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceViewModelTask.kt b/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceViewModelTask.kt
index 9ce1089f6c..f1731caf76 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceViewModelTask.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/create/CreateSpaceViewModelTask.kt
@@ -45,6 +45,7 @@ data class CreateSpaceTaskParams(
val spaceName: String,
val spaceTopic: String?,
val spaceAvatar: Uri? = null,
+ val spaceAlias: String? = null,
val isPublic: Boolean,
val defaultRooms: List = emptyList()
)
@@ -57,7 +58,13 @@ class CreateSpaceViewModelTask @Inject constructor(
override suspend fun execute(params: CreateSpaceTaskParams): CreateSpaceTaskResult {
val spaceID = try {
- session.spaceService().createSpace(params.spaceName, params.spaceTopic, params.spaceAvatar, params.isPublic)
+ session.spaceService().createSpace(
+ params.spaceName,
+ params.spaceTopic,
+ params.spaceAvatar,
+ params.isPublic,
+ params.spaceAlias
+ )
} catch (failure: Throwable) {
return CreateSpaceTaskResult.FailedToCreateSpace(failure)
}
diff --git a/vector/src/main/java/im/vector/app/features/spaces/create/SpaceDetailEpoxyController.kt b/vector/src/main/java/im/vector/app/features/spaces/create/SpaceDetailEpoxyController.kt
index 9b3686c513..27c08d1f6f 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/create/SpaceDetailEpoxyController.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/create/SpaceDetailEpoxyController.kt
@@ -17,24 +17,39 @@
package im.vector.app.features.spaces.create
import com.airbnb.epoxy.TypedEpoxyController
+import com.airbnb.mvrx.Fail
import im.vector.app.R
+import im.vector.app.core.epoxy.TextListener
import im.vector.app.core.resources.StringProvider
import im.vector.app.core.ui.list.genericFooterItem
import im.vector.app.features.form.formEditTextItem
import im.vector.app.features.form.formEditableSquareAvatarItem
import im.vector.app.features.form.formMultiLineEditTextItem
import im.vector.app.features.home.AvatarRenderer
+import im.vector.app.features.roomdirectory.createroom.RoomAliasErrorFormatter
+import org.matrix.android.sdk.api.session.room.alias.RoomAliasError
import org.matrix.android.sdk.api.util.MatrixItem
import javax.inject.Inject
class SpaceDetailEpoxyController @Inject constructor(
private val stringProvider: StringProvider,
- private val avatarRenderer: AvatarRenderer
+ private val avatarRenderer: AvatarRenderer,
+ private val roomAliasErrorFormatter: RoomAliasErrorFormatter
) : TypedEpoxyController() {
var listener: Listener? = null
-// var shouldForceFocusOnce = true
+ /**
+ * Alias text can be automatically set when changing the room name,
+ * We have to be able to make a difference between a programming change versus
+ * a user change.
+ */
+ var aliasTextIsFocused = false
+ private val aliasTextWatcher: TextListener = {
+ if (aliasTextIsFocused) {
+ listener?.setAliasLocalPart(it)
+ }
+ }
override fun buildModels(data: CreateSpaceState?) {
val host = this
@@ -65,20 +80,31 @@ class SpaceDetailEpoxyController @Inject constructor(
value(data?.name)
hint(host.stringProvider.getString(R.string.create_room_name_hint))
errorMessage(data?.nameInlineError)
-// onBind { _, view, _ ->
-// if (shouldForceFocusOnce && data?.name.isNullOrBlank()) {
-// shouldForceFocusOnce = false
-// // sad face :(
-// view.textInputEditText.post {
-// view.textInputEditText.showKeyboard(true)
-// }
-// }
-// }
onTextChange { text ->
host.listener?.onNameChange(text)
}
}
+ if (data?.spaceType == SpaceType.Public) {
+ formEditTextItem {
+ id("alias")
+ enabled(true)
+ forceUpdateValue(!data.aliasManuallyModified)
+ value(data.aliasLocalPart)
+ hint(host.stringProvider.getString(R.string.create_space_alias_hint))
+ suffixText(":" + data.homeServerName)
+ prefixText("#")
+ onFocusChange { hasFocus ->
+ host.aliasTextIsFocused = hasFocus
+ }
+ errorMessage(
+ host.roomAliasErrorFormatter.format(
+ (((data.aliasVerificationTask as? Fail)?.error) as? RoomAliasError))
+ )
+ onTextChange(host.aliasTextWatcher)
+ }
+ }
+
formMultiLineEditTextItem {
id("topic")
enabled(true)
@@ -96,5 +122,6 @@ class SpaceDetailEpoxyController @Inject constructor(
fun onAvatarChange()
fun onNameChange(newName: String)
fun onTopicChange(newTopic: String)
+ fun setAliasLocalPart(aliasLocalPart: String)
}
}
diff --git a/vector/src/main/java/im/vector/app/features/spaces/explore/SpaceDirectoryFragment.kt b/vector/src/main/java/im/vector/app/features/spaces/explore/SpaceDirectoryFragment.kt
index cb163622fa..0d5e64d3d7 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/explore/SpaceDirectoryFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/explore/SpaceDirectoryFragment.kt
@@ -40,7 +40,7 @@ import im.vector.app.core.resources.ColorProvider
import im.vector.app.core.utils.colorizeMatchingText
import im.vector.app.core.utils.isValidUrl
import im.vector.app.core.utils.openUrlInExternalBrowser
-import im.vector.app.databinding.FragmentRoomDirectoryPickerBinding
+import im.vector.app.databinding.FragmentSpaceDirectoryBinding
import im.vector.app.features.home.room.detail.timeline.TimelineEventController
import im.vector.app.features.matrixto.SpaceCardRenderer
import im.vector.app.features.permalink.PermalinkHandler
@@ -63,7 +63,7 @@ class SpaceDirectoryFragment @Inject constructor(
private val permalinkHandler: PermalinkHandler,
private val spaceCardRenderer: SpaceCardRenderer,
private val colorProvider: ColorProvider
-) : VectorBaseFragment(),
+) : VectorBaseFragment(),
SpaceDirectoryController.InteractionListener,
TimelineEventController.UrlClickCallback,
OnBackPressed {
@@ -71,7 +71,7 @@ class SpaceDirectoryFragment @Inject constructor(
override fun getMenuRes() = R.menu.menu_space_directory
override fun getBinding(inflater: LayoutInflater, container: ViewGroup?) =
- FragmentRoomDirectoryPickerBinding.inflate(layoutInflater, container, false)
+ FragmentSpaceDirectoryBinding.inflate(layoutInflater, container, false)
private val viewModel by activityViewModel(SpaceDirectoryViewModel::class)
@@ -85,7 +85,7 @@ class SpaceDirectoryFragment @Inject constructor(
it.setDisplayHomeAsUpEnabled(true)
}
epoxyController.listener = this
- views.roomDirectoryPickerList.configureWith(epoxyController)
+ views.spaceDirectoryList.configureWith(epoxyController)
viewModel.selectSubscribe(this, SpaceDirectoryState::canAddRooms) {
invalidateOptionsMenu()
@@ -97,7 +97,7 @@ class SpaceDirectoryFragment @Inject constructor(
override fun onDestroyView() {
epoxyController.listener = null
- views.roomDirectoryPickerList.cleanup()
+ views.spaceDirectoryList.cleanup()
super.onDestroyView()
}
diff --git a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageActivity.kt b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageActivity.kt
index a4585df474..630c578069 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageActivity.kt
@@ -20,7 +20,7 @@ import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.os.Parcelable
-import androidx.appcompat.widget.Toolbar
+import com.google.android.material.appbar.MaterialToolbar
import androidx.core.view.isGone
import androidx.core.view.isVisible
import com.airbnb.mvrx.MvRx
@@ -39,6 +39,7 @@ import im.vector.app.features.roomdirectory.RoomDirectorySharedActionViewModel
import im.vector.app.features.roomdirectory.createroom.CreateRoomArgs
import im.vector.app.features.roomdirectory.createroom.CreateRoomFragment
import im.vector.app.features.roomprofile.RoomProfileArgs
+import im.vector.app.features.roomprofile.alias.RoomAliasFragment
import kotlinx.parcelize.Parcelize
import javax.inject.Inject
@@ -155,6 +156,15 @@ class SpaceManageActivity : VectorBaseActivity(),
)
}
}
+ SpaceManagedSharedViewEvents.NavigateToAliasSettings -> {
+ args?.spaceId?.let { spaceId ->
+ addFragmentToBackstack(
+ R.id.simpleFragmentContainer,
+ RoomAliasFragment::class.java,
+ RoomProfileArgs(spaceId)
+ )
+ }
+ }
}
}
}
@@ -169,7 +179,7 @@ class SpaceManageActivity : VectorBaseActivity(),
override fun create(initialState: SpaceManageViewState) = sharedViewModelFactory.create(initialState)
- override fun configure(toolbar: Toolbar) {
+ override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
}
diff --git a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageSharedViewModel.kt b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageSharedViewModel.kt
index 57c47250f9..f1d041056f 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageSharedViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManageSharedViewModel.kt
@@ -56,6 +56,7 @@ class SpaceManageSharedViewModel @AssistedInject constructor(
SpaceManagedSharedAction.ShowLoading -> _viewEvents.post(SpaceManagedSharedViewEvents.ShowLoading)
SpaceManagedSharedAction.CreateRoom -> _viewEvents.post(SpaceManagedSharedViewEvents.NavigateToCreateRoom)
SpaceManagedSharedAction.ManageRooms -> _viewEvents.post(SpaceManagedSharedViewEvents.NavigateToManageRooms)
+ SpaceManagedSharedAction.OpenSpaceAliasesSettings -> _viewEvents.post(SpaceManagedSharedViewEvents.NavigateToAliasSettings)
}
}
}
diff --git a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManagedSharedAction.kt b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManagedSharedAction.kt
index 0b413a3b8a..77143470bc 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManagedSharedAction.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManagedSharedAction.kt
@@ -24,4 +24,5 @@ sealed class SpaceManagedSharedAction : VectorViewModelAction {
object HideLoading : SpaceManagedSharedAction()
object CreateRoom : SpaceManagedSharedAction()
object ManageRooms : SpaceManagedSharedAction()
+ object OpenSpaceAliasesSettings : SpaceManagedSharedAction()
}
diff --git a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManagedSharedViewEvents.kt b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManagedSharedViewEvents.kt
index da6f01d205..ab993764c6 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManagedSharedViewEvents.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceManagedSharedViewEvents.kt
@@ -24,4 +24,5 @@ sealed class SpaceManagedSharedViewEvents : VectorViewEvents {
object HideLoading : SpaceManagedSharedViewEvents()
object NavigateToCreateRoom : SpaceManagedSharedViewEvents()
object NavigateToManageRooms : SpaceManagedSharedViewEvents()
+ object NavigateToAliasSettings : SpaceManagedSharedViewEvents()
}
diff --git a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceSettingsController.kt b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceSettingsController.kt
index 08b21db025..27204be8a6 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceSettingsController.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceSettingsController.kt
@@ -52,6 +52,7 @@ class SpaceSettingsController @Inject constructor(
fun onDevRoomSettings()
fun onManageRooms()
fun setIsPublic(public: Boolean)
+ fun onRoomAliasesClicked()
}
var callback: Callback? = null
@@ -103,6 +104,7 @@ class SpaceSettingsController @Inject constructor(
}
}
+ val isPublic = (data.newRoomJoinRules.newJoinRules ?: data.currentRoomJoinRules) == RoomJoinRules.PUBLIC
if (vectorPreferences.labsUseExperimentalRestricted()) {
buildProfileAction(
id = "joinRule",
@@ -113,7 +115,6 @@ class SpaceSettingsController @Inject constructor(
action = { if (data.actionPermissions.canChangeJoinRule) callback?.onJoinRuleClicked() }
)
} else {
- val isPublic = (data.newRoomJoinRules.newJoinRules ?: data.currentRoomJoinRules) == RoomJoinRules.PUBLIC
formSwitchItem {
id("isPublic")
enabled(data.actionPermissions.canChangeJoinRule)
@@ -133,13 +134,24 @@ class SpaceSettingsController @Inject constructor(
id = "manage_rooms",
title = stringProvider.getString(R.string.space_settings_manage_rooms),
// subtitle = data.getJoinRuleWording(stringProvider),
- divider = vectorPreferences.developerMode(),
+ divider = vectorPreferences.developerMode() || isPublic,
editable = data.actionPermissions.canAddChildren,
action = {
if (data.actionPermissions.canAddChildren) callback?.onManageRooms()
}
)
+ if (isPublic) {
+ buildProfileAction(
+ id = "alias",
+ title = stringProvider.getString(R.string.space_settings_alias_title),
+ subtitle = stringProvider.getString(R.string.space_settings_alias_subtitle),
+ divider = vectorPreferences.developerMode(),
+ editable = true,
+ action = { callback?.onRoomAliasesClicked() }
+ )
+ }
+
if (vectorPreferences.developerMode()) {
buildProfileAction(
id = "dev_tools",
diff --git a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceSettingsFragment.kt b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceSettingsFragment.kt
index 350c0bdb4a..e831732bcc 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceSettingsFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceSettingsFragment.kt
@@ -233,6 +233,10 @@ class SpaceSettingsFragment @Inject constructor(
}
}
+ override fun onRoomAliasesClicked() {
+ sharedViewModel.handle(SpaceManagedSharedAction.OpenSpaceAliasesSettings)
+ }
+
override fun onImageReady(uri: Uri?) {
uri ?: return
viewModel.handle(
diff --git a/vector/src/main/java/im/vector/app/features/themes/ActivityOtherThemes.kt b/vector/src/main/java/im/vector/app/features/themes/ActivityOtherThemes.kt
index 6c0c165f96..7a693925fb 100644
--- a/vector/src/main/java/im/vector/app/features/themes/ActivityOtherThemes.kt
+++ b/vector/src/main/java/im/vector/app/features/themes/ActivityOtherThemes.kt
@@ -33,9 +33,9 @@ sealed class ActivityOtherThemes(@StyleRes val light: Int,
@StyleRes val sc_dark_colored: Int) {
object Default : ActivityOtherThemes(
- R.style.AppTheme_Light,
- R.style.AppTheme_Dark,
- R.style.AppTheme_Black,
+ R.style.Theme_Vector_Light,
+ R.style.Theme_Vector_Dark,
+ R.style.Theme_Vector_Black,
R.style.AppTheme_SC_Light,
R.style.AppTheme_SC,
R.style.AppTheme_SC_Dark,
@@ -44,9 +44,9 @@ sealed class ActivityOtherThemes(@StyleRes val light: Int,
)
object Launcher : ActivityOtherThemes(
- R.style.AppTheme_Launcher,
- R.style.AppTheme_Launcher,
- R.style.AppTheme_Launcher,
+ R.style.Theme_Vector_Launcher,
+ R.style.Theme_Vector_Launcher,
+ R.style.Theme_Vector_Launcher,
R.style.AppTheme_Launcher_SC,
R.style.AppTheme_Launcher_SC,
R.style.AppTheme_Launcher_SC,
@@ -55,9 +55,9 @@ sealed class ActivityOtherThemes(@StyleRes val light: Int,
)
object AttachmentsPreview : ActivityOtherThemes(
- R.style.AppTheme_AttachmentsPreview,
- R.style.AppTheme_AttachmentsPreview,
- R.style.AppTheme_AttachmentsPreview,
+ R.style.Theme_Vector_Black_AttachmentsPreview,
+ R.style.Theme_Vector_Black_AttachmentsPreview,
+ R.style.Theme_Vector_Black_AttachmentsPreview,
R.style.AppTheme_AttachmentsPreview_SC,
R.style.AppTheme_AttachmentsPreview_SC,
R.style.AppTheme_AttachmentsPreview_SC,
@@ -66,9 +66,9 @@ sealed class ActivityOtherThemes(@StyleRes val light: Int,
)
object VectorAttachmentsPreview : ActivityOtherThemes(
- R.style.AppTheme_Transparent,
- R.style.AppTheme_Transparent,
- R.style.AppTheme_Transparent,
+ R.style.Theme_Vector_Black_Transparent,
+ R.style.Theme_Vector_Black_Transparent,
+ R.style.Theme_Vector_Black_Transparent,
R.style.AppTheme_Transparent_SC,
R.style.AppTheme_Transparent_SC,
R.style.AppTheme_Transparent_SC,
diff --git a/vector/src/main/java/im/vector/app/features/themes/ThemeUtils.kt b/vector/src/main/java/im/vector/app/features/themes/ThemeUtils.kt
index 7f2cab15a5..7238efef8c 100644
--- a/vector/src/main/java/im/vector/app/features/themes/ThemeUtils.kt
+++ b/vector/src/main/java/im/vector/app/features/themes/ThemeUtils.kt
@@ -246,16 +246,16 @@ object ThemeUtils {
val aTheme = if (useDarkTheme(context)) aDarkTheme else aLightTheme
context.setTheme(
when (aTheme) {
- //SYSTEM_THEME_VALUE -> if (isSystemDarkTheme(context.resources)) R.style.AppTheme_Dark else R.style.AppTheme_Light
- THEME_LIGHT_VALUE -> R.style.AppTheme_Light
- THEME_DARK_VALUE -> R.style.AppTheme_Dark
- THEME_BLACK_VALUE -> R.style.AppTheme_Black
+ //SYSTEM_THEME_VALUE -> if (isSystemDarkTheme(context.resources)) R.style.Theme_Vector_Dark else R.style.Theme_Vector_Light
+ THEME_LIGHT_VALUE -> R.style.Theme_Vector_Light
+ THEME_DARK_VALUE -> R.style.Theme_Vector_Dark
+ THEME_BLACK_VALUE -> R.style.Theme_Vector_Black
THEME_SC_LIGHT_VALUE -> R.style.AppTheme_SC_Light
THEME_SC_VALUE -> R.style.AppTheme_SC
THEME_SC_DARK_VALUE -> R.style.AppTheme_SC_Dark
THEME_SC_COLORED_VALUE -> R.style.AppTheme_SC_Colored
THEME_SC_DARK_COLORED_VALUE -> R.style.AppTheme_SC_Dark_Colored
- else -> R.style.AppTheme_Light
+ else -> R.style.AppTheme_SC_Light
}
)
diff --git a/vector/src/main/java/im/vector/app/features/webview/VectorWebViewActivity.kt b/vector/src/main/java/im/vector/app/features/webview/VectorWebViewActivity.kt
index e4d2571333..ab8af20063 100644
--- a/vector/src/main/java/im/vector/app/features/webview/VectorWebViewActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/webview/VectorWebViewActivity.kt
@@ -21,11 +21,9 @@ import android.content.Intent
import android.webkit.WebChromeClient
import android.webkit.WebView
import androidx.annotation.CallSuper
-import im.vector.app.R
import im.vector.app.core.di.ScreenComponent
import im.vector.app.core.platform.VectorBaseActivity
import im.vector.app.databinding.ActivityVectorWebViewBinding
-
import org.matrix.android.sdk.api.session.Session
import javax.inject.Inject
@@ -48,7 +46,7 @@ class VectorWebViewActivity : VectorBaseActivity()
override fun initUiAndData() {
configureToolbar(views.webviewToolbar)
- waitingView = findViewById(R.id.simple_webview_loader)
+ waitingView = views.simpleWebviewLoader
views.simpleWebview.settings.apply {
// Enable Javascript
diff --git a/vector/src/main/java/im/vector/app/features/widgets/WidgetActivity.kt b/vector/src/main/java/im/vector/app/features/widgets/WidgetActivity.kt
index df995930c6..9072957a95 100644
--- a/vector/src/main/java/im/vector/app/features/widgets/WidgetActivity.kt
+++ b/vector/src/main/java/im/vector/app/features/widgets/WidgetActivity.kt
@@ -19,7 +19,7 @@ package im.vector.app.features.widgets
import android.app.Activity
import android.content.Context
import android.content.Intent
-import androidx.appcompat.widget.Toolbar
+import com.google.android.material.appbar.MaterialToolbar
import androidx.core.view.isVisible
import com.airbnb.mvrx.MvRx
import com.airbnb.mvrx.viewModel
@@ -150,7 +150,7 @@ class WidgetActivity : VectorBaseActivity(),
finish()
}
- override fun configure(toolbar: Toolbar) {
+ override fun configure(toolbar: MaterialToolbar) {
configureToolbar(toolbar)
}
}
diff --git a/vector/src/main/java/im/vector/app/features/widgets/WidgetPostAPIHandler.kt b/vector/src/main/java/im/vector/app/features/widgets/WidgetPostAPIHandler.kt
index de88baa692..7d2d89e1bd 100644
--- a/vector/src/main/java/im/vector/app/features/widgets/WidgetPostAPIHandler.kt
+++ b/vector/src/main/java/im/vector/app/features/widgets/WidgetPostAPIHandler.kt
@@ -284,7 +284,7 @@ class WidgetPostAPIHandler @AssistedInject constructor(@Assisted private val roo
)
)
launchWidgetAPIAction(widgetPostAPIMediator, eventData) {
- session.userAccountDataService().updateAccountData(
+ session.accountDataService().updateUserAccountData(
type = UserAccountDataTypes.TYPE_WIDGETS,
content = addUserWidgetBody
)
diff --git a/vector/src/main/java/im/vector/app/features/widgets/permissions/RoomWidgetPermissionBottomSheet.kt b/vector/src/main/java/im/vector/app/features/widgets/permissions/RoomWidgetPermissionBottomSheet.kt
index 68ae11c1bf..4036195b65 100644
--- a/vector/src/main/java/im/vector/app/features/widgets/permissions/RoomWidgetPermissionBottomSheet.kt
+++ b/vector/src/main/java/im/vector/app/features/widgets/permissions/RoomWidgetPermissionBottomSheet.kt
@@ -64,8 +64,8 @@ class RoomWidgetPermissionBottomSheet :
}
private fun setupViews() {
- views.widgetPermissionDecline.setOnClickListener { doDecline() }
- views.widgetPermissionContinue.setOnClickListener { doAccept() }
+ views.widgetPermissionDecline.debouncedClicks { doDecline() }
+ views.widgetPermissionContinue.debouncedClicks { doAccept() }
}
override fun invalidate() = withState(viewModel) { state ->
diff --git a/vector/src/main/java/im/vector/app/features/workers/signout/ServerBackupStatusViewModel.kt b/vector/src/main/java/im/vector/app/features/workers/signout/ServerBackupStatusViewModel.kt
index 00b388bfb8..6d95911bdb 100644
--- a/vector/src/main/java/im/vector/app/features/workers/signout/ServerBackupStatusViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/workers/signout/ServerBackupStatusViewModel.kt
@@ -35,7 +35,7 @@ import io.reactivex.functions.Function4
import io.reactivex.subjects.PublishSubject
import org.matrix.android.sdk.api.extensions.orFalse
import org.matrix.android.sdk.api.session.Session
-import org.matrix.android.sdk.api.session.accountdata.AccountDataEvent
+import org.matrix.android.sdk.api.session.accountdata.UserAccountDataEvent
import org.matrix.android.sdk.api.session.crypto.crosssigning.MASTER_KEY_SSSS_NAME
import org.matrix.android.sdk.api.session.crypto.crosssigning.MXCrossSigningInfo
import org.matrix.android.sdk.api.session.crypto.crosssigning.SELF_SIGNING_KEY_SSSS_NAME
@@ -98,7 +98,7 @@ class ServerBackupStatusViewModel @AssistedInject constructor(@Assisted initialS
keysBackupState.value = session.cryptoService().keysBackupService().state
- Observable.combineLatest, Optional, KeysBackupState, Optional, BannerState>(
+ Observable.combineLatest, Optional, KeysBackupState, Optional, BannerState>(
session.rx().liveUserAccountData(setOf(MASTER_KEY_SSSS_NAME, USER_SIGNING_KEY_SSSS_NAME, SELF_SIGNING_KEY_SSSS_NAME)),
session.rx().liveCrossSigningInfo(session.myUserId),
keyBackupPublishSubject,
diff --git a/vector/src/main/java/im/vector/app/features/workers/signout/SignOutBottomSheetDialogFragment.kt b/vector/src/main/java/im/vector/app/features/workers/signout/SignOutBottomSheetDialogFragment.kt
index 389d0f0cfc..48459cdd9e 100644
--- a/vector/src/main/java/im/vector/app/features/workers/signout/SignOutBottomSheetDialogFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/workers/signout/SignOutBottomSheetDialogFragment.kt
@@ -42,9 +42,7 @@ import im.vector.app.features.crypto.keysbackup.setup.KeysBackupSetupActivity
import im.vector.app.features.crypto.recover.BootstrapBottomSheet
import im.vector.app.features.crypto.recover.SetupMode
-import org.matrix.android.sdk.api.MatrixCallback
import org.matrix.android.sdk.api.session.crypto.keysbackup.KeysBackupState
-import timber.log.Timber
import javax.inject.Inject
// TODO this needs to be refactored to current standard and remove legacy
@@ -113,31 +111,6 @@ class SignOutBottomSheetDialogFragment :
views.setupMegolmBackupButton.action = {
setupBackupActivityResultLauncher.launch(KeysBackupSetupActivity.intent(requireContext(), true))
}
-
- viewModel.observeViewEvents {
- when (it) {
- is SignoutCheckViewModel.ViewEvents.ExportKeys -> {
- it.exporter
- .export(requireContext(),
- it.passphrase,
- it.uri,
- object : MatrixCallback {
- override fun onSuccess(data: Boolean) {
- if (data) {
- viewModel.handle(SignoutCheckViewModel.Actions.KeySuccessfullyManuallyExported)
- } else {
- viewModel.handle(SignoutCheckViewModel.Actions.KeyExportFailed)
- }
- }
-
- override fun onFailure(failure: Throwable) {
- Timber.e("## Failed to export manually keys ${failure.localizedMessage}")
- viewModel.handle(SignoutCheckViewModel.Actions.KeyExportFailed)
- }
- })
- }
- }
- }
}
override fun invalidate() = withState(viewModel) { state ->
diff --git a/vector/src/main/java/im/vector/app/features/workers/signout/SignoutCheckViewModel.kt b/vector/src/main/java/im/vector/app/features/workers/signout/SignoutCheckViewModel.kt
index 21c0c7481a..df7a826b48 100644
--- a/vector/src/main/java/im/vector/app/features/workers/signout/SignoutCheckViewModel.kt
+++ b/vector/src/main/java/im/vector/app/features/workers/signout/SignoutCheckViewModel.kt
@@ -17,6 +17,7 @@
package im.vector.app.features.workers.signout
import android.net.Uri
+import androidx.lifecycle.viewModelScope
import com.airbnb.mvrx.ActivityViewModelContext
import com.airbnb.mvrx.Async
import com.airbnb.mvrx.FragmentViewModelContext
@@ -27,13 +28,14 @@ import com.airbnb.mvrx.Success
import com.airbnb.mvrx.Uninitialized
import com.airbnb.mvrx.ViewModelContext
import dagger.assisted.Assisted
-import dagger.assisted.AssistedInject
import dagger.assisted.AssistedFactory
+import dagger.assisted.AssistedInject
import im.vector.app.core.extensions.exhaustive
-import im.vector.app.core.platform.VectorViewEvents
+import im.vector.app.core.platform.EmptyViewEvents
import im.vector.app.core.platform.VectorViewModel
import im.vector.app.core.platform.VectorViewModelAction
import im.vector.app.features.crypto.keys.KeysExporter
+import kotlinx.coroutines.launch
import org.matrix.android.sdk.api.session.Session
import org.matrix.android.sdk.api.session.crypto.crosssigning.MASTER_KEY_SSSS_NAME
import org.matrix.android.sdk.api.session.crypto.crosssigning.SELF_SIGNING_KEY_SSSS_NAME
@@ -41,6 +43,7 @@ import org.matrix.android.sdk.api.session.crypto.crosssigning.USER_SIGNING_KEY_S
import org.matrix.android.sdk.api.session.crypto.keysbackup.KeysBackupState
import org.matrix.android.sdk.api.session.crypto.keysbackup.KeysBackupStateListener
import org.matrix.android.sdk.rx.rx
+import timber.log.Timber
data class SignoutCheckViewState(
val userId: String = "",
@@ -50,18 +53,15 @@ data class SignoutCheckViewState(
val hasBeenExportedToFile: Async = Uninitialized
) : MvRxState
-class SignoutCheckViewModel @AssistedInject constructor(@Assisted initialState: SignoutCheckViewState,
- private val session: Session)
- : VectorViewModel(initialState), KeysBackupStateListener {
+class SignoutCheckViewModel @AssistedInject constructor(
+ @Assisted initialState: SignoutCheckViewState,
+ private val session: Session,
+ private val keysExporter: KeysExporter
+) : VectorViewModel(initialState), KeysBackupStateListener {
sealed class Actions : VectorViewModelAction {
data class ExportKeys(val passphrase: String, val uri: Uri) : Actions()
object KeySuccessfullyManuallyExported : Actions()
- object KeyExportFailed : Actions()
- }
-
- sealed class ViewEvents : VectorViewEvents {
- data class ExportKeys(val exporter: KeysExporter, val passphrase: String, val uri: Uri) : ViewEvents()
}
@AssistedFactory
@@ -128,22 +128,32 @@ class SignoutCheckViewModel @AssistedInject constructor(@Assisted initialState:
override fun handle(action: Actions) {
when (action) {
- is Actions.ExportKeys -> {
- setState {
- copy(hasBeenExportedToFile = Loading())
- }
- _viewEvents.post(ViewEvents.ExportKeys(KeysExporter(session), action.passphrase, action.uri))
- }
+ is Actions.ExportKeys -> handleExportKeys(action)
Actions.KeySuccessfullyManuallyExported -> {
setState {
copy(hasBeenExportedToFile = Success(true))
}
}
- Actions.KeyExportFailed -> {
- setState {
- copy(hasBeenExportedToFile = Uninitialized)
- }
- }
}.exhaustive
}
+
+ private fun handleExportKeys(action: Actions.ExportKeys) {
+ setState {
+ copy(hasBeenExportedToFile = Loading())
+ }
+
+ viewModelScope.launch {
+ val newState = try {
+ keysExporter.export(action.passphrase, action.uri)
+ Success(true)
+ } catch (failure: Throwable) {
+ Timber.e("## Failed to export manually keys ${failure.localizedMessage}")
+ Uninitialized
+ }
+
+ setState {
+ copy(hasBeenExportedToFile = newState)
+ }
+ }
+ }
}
diff --git a/vector/src/main/res/drawable/rounded_rect_stroke_8.xml b/vector/src/main/res/drawable/bg_composer_edit_text.xml
similarity index 53%
rename from vector/src/main/res/drawable/rounded_rect_stroke_8.xml
rename to vector/src/main/res/drawable/bg_composer_edit_text.xml
index 93ec91f276..8398fb3dc3 100644
--- a/vector/src/main/res/drawable/rounded_rect_stroke_8.xml
+++ b/vector/src/main/res/drawable/bg_composer_edit_text.xml
@@ -2,9 +2,11 @@
-
+
-
+
diff --git a/vector/src/main/res/drawable/bg_space_item.xml b/vector/src/main/res/drawable/bg_space_item.xml
index 0362a9a8df..158a6769ba 100644
--- a/vector/src/main/res/drawable/bg_space_item.xml
+++ b/vector/src/main/res/drawable/bg_space_item.xml
@@ -20,7 +20,7 @@
-
+
diff --git a/vector/src/main/res/drawable/ic_baseline_perm_contact_calendar_24.xml b/vector/src/main/res/drawable/ic_baseline_perm_contact_calendar_24.xml
index 6cd8c624a1..73ea3e8746 100644
--- a/vector/src/main/res/drawable/ic_baseline_perm_contact_calendar_24.xml
+++ b/vector/src/main/res/drawable/ic_baseline_perm_contact_calendar_24.xml
@@ -4,6 +4,6 @@
android:viewportWidth="24"
android:viewportHeight="24">
diff --git a/vector/src/main/res/drawable/ic_call_answer_video.xml b/vector/src/main/res/drawable/ic_call_answer_video.xml
new file mode 100644
index 0000000000..d3af4f7b70
--- /dev/null
+++ b/vector/src/main/res/drawable/ic_call_answer_video.xml
@@ -0,0 +1,12 @@
+
+
+
+
diff --git a/vector/src/main/res/drawable/ic_delete_unsent_messages.xml b/vector/src/main/res/drawable/ic_delete_unsent_messages.xml
index 24fdbc94c2..8f7beaeb20 100644
--- a/vector/src/main/res/drawable/ic_delete_unsent_messages.xml
+++ b/vector/src/main/res/drawable/ic_delete_unsent_messages.xml
@@ -5,5 +5,5 @@
android:viewportHeight="30">
+ android:fillColor="?colorError"/>
diff --git a/vector/src/main/res/drawable/ic_pause.xml b/vector/src/main/res/drawable/ic_pause.xml
index 1d1f8e634f..19da9bc040 100644
--- a/vector/src/main/res/drawable/ic_pause.xml
+++ b/vector/src/main/res/drawable/ic_pause.xml
@@ -4,6 +4,6 @@
android:viewportWidth="24"
android:viewportHeight="24">
diff --git a/vector/src/main/res/drawable/ic_play_arrow.xml b/vector/src/main/res/drawable/ic_play_arrow.xml
index 4bc3ab1d79..d0d9499f1c 100644
--- a/vector/src/main/res/drawable/ic_play_arrow.xml
+++ b/vector/src/main/res/drawable/ic_play_arrow.xml
@@ -4,6 +4,6 @@
android:viewportWidth="24"
android:viewportHeight="24">
diff --git a/vector/src/main/res/drawable/rounded_rect_shape_16.xml b/vector/src/main/res/drawable/rounded_rect_shape_16.xml
deleted file mode 100644
index c2fc859525..0000000000
--- a/vector/src/main/res/drawable/rounded_rect_shape_16.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vector/src/main/res/drawable/rounded_rect_shape_8.xml b/vector/src/main/res/drawable/rounded_rect_shape_8.xml
index aa51217152..9933e6192c 100644
--- a/vector/src/main/res/drawable/rounded_rect_shape_8.xml
+++ b/vector/src/main/res/drawable/rounded_rect_shape_8.xml
@@ -4,7 +4,7 @@
-
+
diff --git a/vector/src/main/res/layout/activity.xml b/vector/src/main/res/layout/activity.xml
index f403fcff82..c8dd97cd89 100644
--- a/vector/src/main/res/layout/activity.xml
+++ b/vector/src/main/res/layout/activity.xml
@@ -9,12 +9,18 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
+ app:layout_constraintTop_toTopOf="parent">
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@id/appBarLayout" />
-
+ android:layout_height="wrap_content"
+ app:layout_constraintTop_toTopOf="parent">
+
+
+
+
\ No newline at end of file
diff --git a/vector/src/main/res/layout/activity_bug_report.xml b/vector/src/main/res/layout/activity_bug_report.xml
index 69d4d11862..f9e290f29e 100644
--- a/vector/src/main/res/layout/activity_bug_report.xml
+++ b/vector/src/main/res/layout/activity_bug_report.xml
@@ -6,11 +6,16 @@
android:layout_height="wrap_content"
android:orientation="vertical">
-
+ android:layout_height="wrap_content">
+
+
+
+
+ android:textColor="?vctr_content_secondary" />
-
@@ -66,7 +70,7 @@
android:importantForAccessibility="no"
android:src="@drawable/ic_call_small_pause" />
-
+
-
+ app:layout_constraintTop_toTopOf="parent">
-
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@id/appBarLayout" />
+ android:layout_height="wrap_content">
-
-
\ No newline at end of file
diff --git a/vector/src/main/res/layout/activity_filtered_rooms.xml b/vector/src/main/res/layout/activity_filtered_rooms.xml
index 310ad2bfa4..270de8f514 100644
--- a/vector/src/main/res/layout/activity_filtered_rooms.xml
+++ b/vector/src/main/res/layout/activity_filtered_rooms.xml
@@ -9,25 +9,28 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
-
+ android:layout_height="?attr/actionBarSize"
+ app:contentInsetStart="0dp">
-
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/appBarLayout" />
diff --git a/vector/src/main/res/layout/activity_incoming_share.xml b/vector/src/main/res/layout/activity_incoming_share.xml
index b85a5d6759..f0e0c0a485 100644
--- a/vector/src/main/res/layout/activity_incoming_share.xml
+++ b/vector/src/main/res/layout/activity_incoming_share.xml
@@ -9,24 +9,28 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
-
+ android:layout_height="?attr/actionBarSize"
+ app:contentInsetStart="0dp">
-
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/appBarLayout" />
diff --git a/vector/src/main/res/layout/activity_search.xml b/vector/src/main/res/layout/activity_search.xml
index cba8b01f34..7c71217f64 100644
--- a/vector/src/main/res/layout/activity_search.xml
+++ b/vector/src/main/res/layout/activity_search.xml
@@ -9,25 +9,28 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
-
+ android:layout_height="?attr/actionBarSize"
+ app:contentInsetStart="0dp">
-
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/appBarLayout" />
diff --git a/vector/src/main/res/layout/activity_signed_out.xml b/vector/src/main/res/layout/activity_signed_out.xml
index 1e09430254..afbd6fa90f 100644
--- a/vector/src/main/res/layout/activity_signed_out.xml
+++ b/vector/src/main/res/layout/activity_signed_out.xml
@@ -17,22 +17,24 @@
tools:ignore="ContentDescription" />
+ android:textColor="?vctr_content_primary" />
+ android:textColor="?vctr_content_secondary" />
diff --git a/vector/src/main/res/layout/activity_vector_settings.xml b/vector/src/main/res/layout/activity_vector_settings.xml
index ecd53171af..b24ea8a322 100755
--- a/vector/src/main/res/layout/activity_vector_settings.xml
+++ b/vector/src/main/res/layout/activity_vector_settings.xml
@@ -1,5 +1,6 @@
@@ -9,13 +10,21 @@
android:layout_height="match_parent"
android:orientation="vertical">
-
-
+ android:layout_height="wrap_content">
+
+
+
+
+
-
+ android:layout_height="wrap_content"
+ app:layout_constraintTop_toTopOf="parent">
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/appBarLayout" />
+ app:layout_constraintTop_toTopOf="parent"
+ tools:visibility="visible" />
diff --git a/vector/src/main/res/layout/activity_widget.xml b/vector/src/main/res/layout/activity_widget.xml
index 06a411331e..b278bb5a1a 100755
--- a/vector/src/main/res/layout/activity_widget.xml
+++ b/vector/src/main/res/layout/activity_widget.xml
@@ -1,13 +1,22 @@
-
+ android:layout_height="wrap_content"
+ app:layout_constraintTop_toTopOf="parent">
+
+
+
+
+ app:layout_constraintTop_toTopOf="parent"
+ app:tint="?colorOnPrimary"
+ tools:ignore="MissingPrefix"
+ tools:src="@drawable/ic_call_answer" />
+ app:layout_constraintTop_toTopOf="parent"
+ app:tint="?colorOnPrimary"
+ tools:ignore="MissingPrefix" />
diff --git a/vector/src/main/res/layout/alerter_verification_layout.xml b/vector/src/main/res/layout/alerter_verification_layout.xml
index 3db8a3343c..d9c1794a60 100644
--- a/vector/src/main/res/layout/alerter_verification_layout.xml
+++ b/vector/src/main/res/layout/alerter_verification_layout.xml
@@ -5,24 +5,26 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clipToPadding="false"
- tools:background="@android:color/darker_gray"
- tools:foreground="?android:attr/selectableItemBackground"
+ tools:background="?colorPrimary"
tools:style="@style/AlertStyle">
-
+
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vector/src/main/res/layout/bottom_sheet_bootstrap.xml b/vector/src/main/res/layout/bottom_sheet_bootstrap.xml
index 08533c5249..52784bc6af 100644
--- a/vector/src/main/res/layout/bottom_sheet_bootstrap.xml
+++ b/vector/src/main/res/layout/bottom_sheet_bootstrap.xml
@@ -31,17 +31,18 @@
+ android:textColor="?vctr_content_primary" />
+ android:layout_height="wrap_content"
+ android:padding="16dp">
+ android:textColor="?vctr_content_secondary" />
+ tools:text="@sample/users.json/data/displayName" />
+ tools:text="@sample/users.json/data/id" />
+
+
+ android:textColor="?vctr_content_primary" />
@@ -84,11 +85,12 @@
tools:ignore="MissingPrefix" />
+ android:textColor="?vctr_content_primary" />
diff --git a/vector/src/main/res/layout/bottom_sheet_space_create_private_warning.xml b/vector/src/main/res/layout/bottom_sheet_space_create_private_warning.xml
new file mode 100644
index 0000000000..6e46c87548
--- /dev/null
+++ b/vector/src/main/res/layout/bottom_sheet_space_create_private_warning.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vector/src/main/res/layout/bottom_sheet_space_invite.xml b/vector/src/main/res/layout/bottom_sheet_space_invite.xml
index 10120747cf..03893a45f9 100644
--- a/vector/src/main/res/layout/bottom_sheet_space_invite.xml
+++ b/vector/src/main/res/layout/bottom_sheet_space_invite.xml
@@ -10,6 +10,7 @@
-
+
diff --git a/vector/src/main/res/layout/bottom_sheet_space_invite_chooser.xml b/vector/src/main/res/layout/bottom_sheet_space_invite_chooser.xml
index 5c504bd7c0..d263180521 100644
--- a/vector/src/main/res/layout/bottom_sheet_space_invite_chooser.xml
+++ b/vector/src/main/res/layout/bottom_sheet_space_invite_chooser.xml
@@ -9,6 +9,7 @@
diff --git a/vector/src/main/res/layout/bottom_sheet_space_settings.xml b/vector/src/main/res/layout/bottom_sheet_space_settings.xml
index c4f2bb924b..2975df65d5 100644
--- a/vector/src/main/res/layout/bottom_sheet_space_settings.xml
+++ b/vector/src/main/res/layout/bottom_sheet_space_settings.xml
@@ -27,6 +27,7 @@
-
-
-
+ android:background="@drawable/bg_composer_edit_text" />
+ app:tint="?vctr_content_tertiary"
+ tools:ignore="MissingConstraints,MissingPrefix" />
-
-
-
-
+
@@ -165,11 +157,12 @@
android:background="?android:attr/selectableItemBackground"
android:contentDescription="@string/a11y_open_emoji_picker"
android:src="@drawable/ic_insert_emoji"
- android:tint="?android:textColorHint"
+ android:tint="?vctr_content_quaternary"
app:layout_constraintBottom_toBottomOf="@id/sendButton"
- app:layout_constraintEnd_toStartOf="@+id/composerShieldImageView"
+ app:layout_constraintEnd_toStartOf="@+id/composerEditText"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="@id/sendButton" />
+ app:layout_constraintTop_toTopOf="@id/sendButton"
+ tools:ignore="MissingPrefix" />
+ tools:ignore="MissingPrefix"
+ tools:visibility="visible" />
diff --git a/vector/src/main/res/layout/composer_layout_constraint_set_expanded.xml b/vector/src/main/res/layout/composer_layout_constraint_set_expanded.xml
index 29af690db8..73d4a3ad6a 100644
--- a/vector/src/main/res/layout/composer_layout_constraint_set_expanded.xml
+++ b/vector/src/main/res/layout/composer_layout_constraint_set_expanded.xml
@@ -26,15 +26,6 @@
app:layout_constraintStart_toStartOf="@+id/related_message_background"
app:layout_constraintTop_toTopOf="@id/related_message_background" />
-
-
-
+
@@ -171,11 +167,12 @@
android:background="?android:attr/selectableItemBackground"
android:contentDescription="@string/a11y_open_emoji_picker"
android:src="@drawable/ic_insert_emoji"
- android:tint="?android:textColorHint"
app:layout_constraintTop_toTopOf="@+id/sendButton"
app:layout_constraintBottom_toBottomOf="@+id/sendButton"
- app:layout_constraintEnd_toStartOf="@+id/composerShieldImageView"
- app:layout_constraintStart_toStartOf="parent" />
+ app:layout_constraintEnd_toStartOf="@+id/composerEditText"
+ app:layout_constraintStart_toStartOf="parent"
+ app:tint="?vctr_content_quaternary"
+ tools:ignore="MissingPrefix" />
+ tools:ignore="MissingPrefix"
+ tools:visibility="visible" />
diff --git a/vector/src/main/res/layout/custom_action_item_layout_badge.xml b/vector/src/main/res/layout/custom_action_item_layout_badge.xml
index 3348743ee0..e0ecae6ff5 100644
--- a/vector/src/main/res/layout/custom_action_item_layout_badge.xml
+++ b/vector/src/main/res/layout/custom_action_item_layout_badge.xml
@@ -24,12 +24,12 @@
+ android:text="@string/encryption_information_verify_device_warning" />
+ android:text="@string/encryption_information_verify_device_warning2" />
+
+
\ No newline at end of file
diff --git a/vector/src/main/res/layout/dialog_disclaimer_content.xml b/vector/src/main/res/layout/dialog_disclaimer_content.xml
index 17c9d56597..24369196fd 100644
--- a/vector/src/main/res/layout/dialog_disclaimer_content.xml
+++ b/vector/src/main/res/layout/dialog_disclaimer_content.xml
@@ -41,17 +41,18 @@
diff --git a/vector/src/main/res/layout/dialog_event_content.xml b/vector/src/main/res/layout/dialog_event_content.xml
index c779d37bfc..d3c52a61ed 100644
--- a/vector/src/main/res/layout/dialog_event_content.xml
+++ b/vector/src/main/res/layout/dialog_event_content.xml
@@ -1,14 +1,18 @@
+ android:textColor="?vctr_content_primary"
+ android:textIsSelectable="true"
+ tools:text="Event content" />
+
\ No newline at end of file
diff --git a/vector/src/main/res/layout/dialog_export_e2e_keys.xml b/vector/src/main/res/layout/dialog_export_e2e_keys.xml
index 2496c5d921..28f1fbbbf9 100644
--- a/vector/src/main/res/layout/dialog_export_e2e_keys.xml
+++ b/vector/src/main/res/layout/dialog_export_e2e_keys.xml
@@ -12,11 +12,11 @@
+ android:text="@string/devices_delete_dialog_text" />
diff --git a/vector/src/main/res/layout/dialog_ssl_fingerprint.xml b/vector/src/main/res/layout/dialog_ssl_fingerprint.xml
index 0c6fad871e..584db222c0 100644
--- a/vector/src/main/res/layout/dialog_ssl_fingerprint.xml
+++ b/vector/src/main/res/layout/dialog_ssl_fingerprint.xml
@@ -13,6 +13,7 @@
android:paddingEnd="?dialogPreferredPadding">
-
+ app:layout_constraintTop_toTopOf="parent">
+
+
+
+
@@ -58,7 +58,7 @@
@@ -48,6 +48,7 @@
@@ -75,7 +76,7 @@
@@ -41,15 +41,17 @@
@@ -28,19 +28,19 @@
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/reAuthFailureText" />
diff --git a/vector/src/main/res/layout/fragment_bootstrap_save_key.xml b/vector/src/main/res/layout/fragment_bootstrap_save_key.xml
index a4b6ae6b8d..d7c26a316a 100644
--- a/vector/src/main/res/layout/fragment_bootstrap_save_key.xml
+++ b/vector/src/main/res/layout/fragment_bootstrap_save_key.xml
@@ -10,17 +10,18 @@
+ android:textColor="?vctr_content_primary" />
diff --git a/vector/src/main/res/layout/fragment_bootstrap_setup_recovery.xml b/vector/src/main/res/layout/fragment_bootstrap_setup_recovery.xml
index c05b5f8d1c..32bee53581 100644
--- a/vector/src/main/res/layout/fragment_bootstrap_setup_recovery.xml
+++ b/vector/src/main/res/layout/fragment_bootstrap_setup_recovery.xml
@@ -10,14 +10,14 @@
+ android:textColor="?vctr_content_primary" />
diff --git a/vector/src/main/res/layout/fragment_bootstrap_waiting.xml b/vector/src/main/res/layout/fragment_bootstrap_waiting.xml
index 0aad3b1a10..ee411a94d6 100644
--- a/vector/src/main/res/layout/fragment_bootstrap_waiting.xml
+++ b/vector/src/main/res/layout/fragment_bootstrap_waiting.xml
@@ -10,12 +10,12 @@
diff --git a/vector/src/main/res/layout/fragment_contacts_book.xml b/vector/src/main/res/layout/fragment_contacts_book.xml
index b4248514eb..9c704f3a42 100644
--- a/vector/src/main/res/layout/fragment_contacts_book.xml
+++ b/vector/src/main/res/layout/fragment_contacts_book.xml
@@ -10,118 +10,99 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
-
+ android:layout_height="?actionBarSize">
-
+
-
+
-
+
-
+
-
+
-
+ android:layout_marginStart="@dimen/layout_horizontal_margin"
+ android:layout_marginTop="16dp"
+ android:layout_marginEnd="@dimen/layout_horizontal_margin">
-
+
-
+
-
+
-
+
-
+
diff --git a/vector/src/main/res/layout/fragment_create_direct_room_directory_users.xml b/vector/src/main/res/layout/fragment_create_direct_room_directory_users.xml
index 574a191e55..130186deed 100644
--- a/vector/src/main/res/layout/fragment_create_direct_room_directory_users.xml
+++ b/vector/src/main/res/layout/fragment_create_direct_room_directory_users.xml
@@ -10,96 +10,89 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
-
+ android:layout_height="?actionBarSize">
-
+
-
+
-
+
-
+
-
+
-
+ android:layout_marginStart="@dimen/layout_horizontal_margin"
+ android:layout_marginTop="16dp"
+ android:layout_marginEnd="@dimen/layout_horizontal_margin"
+ android:layout_marginBottom="16dp">
-
+
-
+
+
+
diff --git a/vector/src/main/res/layout/fragment_create_room.xml b/vector/src/main/res/layout/fragment_create_room.xml
index 6288273d8c..a41256711e 100644
--- a/vector/src/main/res/layout/fragment_create_room.xml
+++ b/vector/src/main/res/layout/fragment_create_room.xml
@@ -10,52 +10,57 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
-
-
+ android:layout_height="?actionBarSize">
-
+
-
+
-
+
-
+
+
+
+
+
diff --git a/vector/src/main/res/layout/fragment_deactivate_account.xml b/vector/src/main/res/layout/fragment_deactivate_account.xml
index dcade54896..458d338986 100644
--- a/vector/src/main/res/layout/fragment_deactivate_account.xml
+++ b/vector/src/main/res/layout/fragment_deactivate_account.xml
@@ -11,6 +11,7 @@
+ android:layout_height="0dp"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintTop_toBottomOf="@id/devToolKeyRequestTabs" />
+ android:layout_height="40dp"
+ android:visibility="gone"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
\ No newline at end of file
diff --git a/vector/src/main/res/layout/fragment_devtools_editor.xml b/vector/src/main/res/layout/fragment_devtools_editor.xml
index fd657555bc..b3fe9834d7 100644
--- a/vector/src/main/res/layout/fragment_devtools_editor.xml
+++ b/vector/src/main/res/layout/fragment_devtools_editor.xml
@@ -13,7 +13,6 @@
android:hint="@string/dev_tools_event_content_hint"
android:inputType="textMultiLine"
android:scrollHorizontally="true"
- android:textSize="12sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
diff --git a/vector/src/main/res/layout/fragment_home_detail.xml b/vector/src/main/res/layout/fragment_home_detail.xml
index c58e7b7234..54ead57174 100644
--- a/vector/src/main/res/layout/fragment_home_detail.xml
+++ b/vector/src/main/res/layout/fragment_home_detail.xml
@@ -1,108 +1,112 @@
-
-
-
-
-
-
-
-
-
-
+ android:layout_height="?attr/actionBarSize">
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:baselineAligned="false"
+ android:gravity="center_vertical"
+ android:orientation="horizontal">
-
+
-
+
+
+
+
+
+
+ android:orientation="vertical"
+ android:paddingStart="8dp"
+ android:paddingEnd="8dp">
+
+
+
+
+
+
+
-
-
-
+
+ app:layout_constraintTop_toBottomOf="@+id/appBarLayout" />
@@ -165,10 +168,6 @@
android:id="@+id/bottomNavigationView"
android:layout_width="0dp"
android:layout_height="wrap_content"
- android:background="?vctr_system"
- app:itemIconSize="20dp"
- app:itemIconTint="@color/bottom_navigation_icon_tint_selector"
- app:labelVisibilityMode="unlabeled"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
diff --git a/vector/src/main/res/layout/fragment_home_drawer.xml b/vector/src/main/res/layout/fragment_home_drawer.xml
index 42f3ffb261..56d1e053c0 100644
--- a/vector/src/main/res/layout/fragment_home_drawer.xml
+++ b/vector/src/main/res/layout/fragment_home_drawer.xml
@@ -12,28 +12,14 @@
android:id="@+id/homeDrawerHeader"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="?vctr_home_drawer_header_background"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
-
-
-
+ app:layout_constraintTop_toTopOf="@id/homeDrawerHeaderAvatarView"
+ app:tint="?vctr_content_tertiary"
+ tools:ignore="MissingPrefix" />
+
+
+ app:tint="?colorPrimary"
+ tools:ignore="MissingPrefix" />
+
+
+ app:layout_constraintTop_toBottomOf="@+id/homeDrawerHeaderSeparator" />
+ app:layout_constraintStart_toStartOf="parent"
+ app:tint="?vctr_content_secondary"
+ tools:ignore="MissingPrefix" />
+ app:layout_constraintEnd_toEndOf="parent"
+ app:tint="?vctr_content_secondary"
+ tools:ignore="MissingPrefix" />
diff --git a/vector/src/main/res/layout/fragment_incoming_share.xml b/vector/src/main/res/layout/fragment_incoming_share.xml
index a9351b545f..ee92e7c353 100644
--- a/vector/src/main/res/layout/fragment_incoming_share.xml
+++ b/vector/src/main/res/layout/fragment_incoming_share.xml
@@ -10,24 +10,28 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
-
+ android:layout_height="?attr/actionBarSize"
+ app:contentInsetStart="0dp">
-
+
+
+
+
+
@@ -120,6 +120,7 @@
@@ -43,6 +43,7 @@
+ android:textColor="?vctr_content_primary" />
@@ -82,7 +82,7 @@
@@ -114,7 +117,7 @@
+ android:textColor="?vctr_content_secondary" />
+ android:textColor="?vctr_content_primary" />
+ android:textColor="?vctr_content_secondary" />
+ android:textColor="?vctr_content_secondary" />
@@ -104,11 +108,12 @@
+ android:textColor="?vctr_content_secondary" />
+ android:text="@string/auth_recaptcha_message"
+ android:textColor="?vctr_content_secondary" />
@@ -67,7 +70,7 @@
@@ -78,7 +82,7 @@
+ android:textColor="?vctr_content_secondary" />
+ android:textColor="?vctr_content_primary" />
+ android:textColor="?vctr_content_secondary" />
+ android:textColor="?vctr_content_primary" />
+ android:textColor="?vctr_content_primary" />
+ android:textColor="?vctr_content_secondary" />
+ android:textColor="?vctr_content_primary" />
+ android:textColor="?vctr_content_secondary" />
+ android:textColor="?vctr_content_primary" />
+ android:textColor="?vctr_content_secondary" />
+ android:textColor="?vctr_content_secondary" />
+ android:textColor="?vctr_content_primary" />
+ android:textColor="?vctr_content_primary" />
+ android:textColor="?vctr_content_secondary" />
@@ -158,12 +160,13 @@
+ android:textColor="?vctr_content_secondary" />
diff --git a/vector/src/main/res/layout/fragment_login_server_url_form.xml b/vector/src/main/res/layout/fragment_login_server_url_form.xml
index eae42fb400..0a5c10935a 100644
--- a/vector/src/main/res/layout/fragment_login_server_url_form.xml
+++ b/vector/src/main/res/layout/fragment_login_server_url_form.xml
@@ -27,28 +27,30 @@
+ android:textColor="?vctr_content_primary" />
+ android:textColor="?vctr_content_primary" />
@@ -96,7 +98,7 @@
+ android:textColor="?vctr_content_secondary" />
+ android:textColor="?vctr_content_primary" />
+ android:textColor="?vctr_content_secondary" />
+ android:textColor="?vctr_content_secondary" />
+ android:textColor="?vctr_content_primary" />
+ android:textColor="?vctr_content_primary" />
+ android:textColor="?vctr_content_primary" />
+ android:textColor="?vctr_content_secondary" />
+ android:textColor="?vctr_content_primary" />
+ android:textColor="?vctr_content_secondary" />
+ android:textColor="?vctr_content_primary" />
+ android:textColor="?vctr_content_primary" />
+ android:textColor="?vctr_content_secondary" />
-
+ app:layout_constraintTop_toTopOf="parent">
+
+
+
+
-
-
+
diff --git a/vector/src/main/res/layout/fragment_matrix_to_room_space_card.xml b/vector/src/main/res/layout/fragment_matrix_to_room_space_card.xml
index d02ad68bdb..cdbf53b8f9 100644
--- a/vector/src/main/res/layout/fragment_matrix_to_room_space_card.xml
+++ b/vector/src/main/res/layout/fragment_matrix_to_room_space_card.xml
@@ -42,6 +42,7 @@
@@ -211,11 +214,11 @@
-
+
diff --git a/vector/src/main/res/layout/fragment_matrix_to_user_card.xml b/vector/src/main/res/layout/fragment_matrix_to_user_card.xml
index 995759dc4b..fbe504a2d6 100644
--- a/vector/src/main/res/layout/fragment_matrix_to_user_card.xml
+++ b/vector/src/main/res/layout/fragment_matrix_to_user_card.xml
@@ -21,6 +21,7 @@
diff --git a/vector/src/main/res/layout/fragment_public_rooms.xml b/vector/src/main/res/layout/fragment_public_rooms.xml
index e861a246be..1fe625012b 100644
--- a/vector/src/main/res/layout/fragment_public_rooms.xml
+++ b/vector/src/main/res/layout/fragment_public_rooms.xml
@@ -17,40 +17,34 @@
+ android:layout_height="wrap_content">
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/vector/src/main/res/layout/fragment_reauth_confirm.xml b/vector/src/main/res/layout/fragment_reauth_confirm.xml
index 9390edf7a2..374346c2b2 100644
--- a/vector/src/main/res/layout/fragment_reauth_confirm.xml
+++ b/vector/src/main/res/layout/fragment_reauth_confirm.xml
@@ -11,6 +11,7 @@
-
+
@@ -79,11 +79,11 @@
-
-
+
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vector/src/main/res/layout/fragment_review_terms.xml b/vector/src/main/res/layout/fragment_review_terms.xml
index 7de79e630f..b3358e9bfa 100644
--- a/vector/src/main/res/layout/fragment_review_terms.xml
+++ b/vector/src/main/res/layout/fragment_review_terms.xml
@@ -30,7 +30,7 @@
-
-
+ android:layout_height="?actionBarSize"
+ android:transitionName="toolbar">
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@id/appBarLayout" />
-
+ android:layout_height="match_parent">
-
+ android:layout_height="wrap_content"
+ app:layout_constraintTop_toTopOf="parent">
-
-
-
-
-
-
+ tools:title="Title" />
+
-
+
-
-
-
-
+
\ No newline at end of file
diff --git a/vector/src/main/res/layout/fragment_room_list.xml b/vector/src/main/res/layout/fragment_room_list.xml
index 9fe328ab6b..fac0c0f170 100644
--- a/vector/src/main/res/layout/fragment_room_list.xml
+++ b/vector/src/main/res/layout/fragment_room_list.xml
@@ -5,13 +5,14 @@
android:id="@+id/stateView"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="?colorSurface">
+ android:background="?android:colorBackground">
-
+ android:layout_height="wrap_content">
-
+ android:layout_height="?actionBarSize">
-
+
-
+
-
+
-
+
-
+
+
+
+
+
diff --git a/vector/src/main/res/layout/fragment_room_setting_generic.xml b/vector/src/main/res/layout/fragment_room_setting_generic.xml
index f00e9c425c..7d63c140f3 100644
--- a/vector/src/main/res/layout/fragment_room_setting_generic.xml
+++ b/vector/src/main/res/layout/fragment_room_setting_generic.xml
@@ -7,60 +7,66 @@
android:layout_height="match_parent"
android:background="?android:colorBackground">
-
-
+ android:layout_height="?actionBarSize">
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/appBarLayout">
-
-
+
+ android:layout_height="wrap_content">
-
-
+
+ app:layout_constraintTop_toBottomOf="@+id/addRoomToSpaceToolbar"
+ tools:ignore="MissingPrefix" />
diff --git a/vector/src/main/res/layout/fragment_space_create_choose_private_model.xml b/vector/src/main/res/layout/fragment_space_create_choose_private_model.xml
index d6709c2994..e1e555eace 100644
--- a/vector/src/main/res/layout/fragment_space_create_choose_private_model.xml
+++ b/vector/src/main/res/layout/fragment_space_create_choose_private_model.xml
@@ -13,23 +13,23 @@
diff --git a/vector/src/main/res/layout/fragment_space_create_choose_type.xml b/vector/src/main/res/layout/fragment_space_create_choose_type.xml
index 0aab5b34e6..b675ec9b30 100644
--- a/vector/src/main/res/layout/fragment_space_create_choose_type.xml
+++ b/vector/src/main/res/layout/fragment_space_create_choose_type.xml
@@ -12,22 +12,22 @@
diff --git a/vector/src/main/res/layout/fragment_space_directory.xml b/vector/src/main/res/layout/fragment_space_directory.xml
new file mode 100644
index 0000000000..3d5932df4a
--- /dev/null
+++ b/vector/src/main/res/layout/fragment_space_directory.xml
@@ -0,0 +1,55 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vector/src/main/res/layout/fragment_space_preview.xml b/vector/src/main/res/layout/fragment_space_preview.xml
index 05a9d447d2..e5c0a933d7 100644
--- a/vector/src/main/res/layout/fragment_space_preview.xml
+++ b/vector/src/main/res/layout/fragment_space_preview.xml
@@ -11,70 +11,64 @@
android:layout_height="match_parent"
android:orientation="vertical">
-
+ android:layout_height="wrap_content">
-
+ android:layout_height="?actionBarSize"
+ app:navigationIcon="@drawable/ic_x_18dp"
+ app:navigationIconTint="?vctr_content_secondary">
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/ssss_passphrase_or"
+ tools:ignore="MissingPrefix" />
+ app:layout_constraintTop_toTopOf="parent"
+ app:tint="?vctr_content_primary"
+ tools:ignore="MissingPrefix" />
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+ app:layout_constraintTop_toTopOf="parent">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:layout_height="wrap_content">
@@ -133,25 +118,47 @@
-
+ app:layout_constraintWidth_percent="0.8">
+
+
+
+
+
+
@@ -169,7 +175,7 @@
android:id="@+id/showUserCodeShareButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginTop="16dp"
+ android:layout_marginTop="24dp"
android:minWidth="130dp"
android:text="@string/user_code_share"
app:icon="@drawable/ic_share"
@@ -178,11 +184,12 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/showUserCodeInfoText"
- app:layout_constraintVertical_bias="0" />
+ app:layout_constraintVertical_bias="0"
+ tools:ignore="MissingPrefix" />
-
-
+ android:layout_height="?actionBarSize">
-
+
-
+
-
+
-
+
-
+
-
+ android:layout_marginStart="@dimen/layout_horizontal_margin"
+ android:layout_marginTop="16dp"
+ android:layout_marginEnd="@dimen/layout_horizontal_margin"
+ android:layout_marginBottom="16dp"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/appBarLayout">
-
+
-
+
+
+
diff --git a/vector/src/main/res/layout/fragment_user_list.xml b/vector/src/main/res/layout/fragment_user_list.xml
index 621f6b21b6..b1611b3305 100644
--- a/vector/src/main/res/layout/fragment_user_list.xml
+++ b/vector/src/main/res/layout/fragment_user_list.xml
@@ -5,18 +5,16 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
+ android:layout_height="wrap_content"
+ app:layout_constraintTop_toTopOf="parent">
-
+ android:layout_width="match_parent"
+ android:layout_height="?actionBarSize">
+ app:layout_constraintTop_toTopOf="parent"
+ app:tint="?vctr_content_secondary"
+ tools:ignore="MissingPrefix" />
-
+
-
+
-
+
-
-
-
-
-
-
-
-
+ app:lineSpacing="2dp" />
-
+
+
+
+
+
+
+
+
+
+
-
diff --git a/vector/src/main/res/layout/grid_item_emoji.xml b/vector/src/main/res/layout/grid_item_emoji.xml
index 24d2aff598..e302138d55 100644
--- a/vector/src/main/res/layout/grid_item_emoji.xml
+++ b/vector/src/main/res/layout/grid_item_emoji.xml
@@ -20,12 +20,5 @@
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_gravity="center" />
-
-
-
-
-
-
-
-
+
diff --git a/vector/src/main/res/layout/grid_section_header.xml b/vector/src/main/res/layout/grid_section_header.xml
index 65aa68dab6..f58790deec 100644
--- a/vector/src/main/res/layout/grid_section_header.xml
+++ b/vector/src/main/res/layout/grid_section_header.xml
@@ -6,6 +6,7 @@
\ No newline at end of file
diff --git a/vector/src/main/res/layout/item_autocomplete_emoji.xml b/vector/src/main/res/layout/item_autocomplete_emoji.xml
index f4c2bbf0bc..5ba4faa698 100644
--- a/vector/src/main/res/layout/item_autocomplete_emoji.xml
+++ b/vector/src/main/res/layout/item_autocomplete_emoji.xml
@@ -10,11 +10,11 @@
@@ -27,17 +27,18 @@
diff --git a/vector/src/main/res/layout/item_autocomplete_matrix_item.xml b/vector/src/main/res/layout/item_autocomplete_matrix_item.xml
index 9203cac6bf..6f4a4e176e 100644
--- a/vector/src/main/res/layout/item_autocomplete_matrix_item.xml
+++ b/vector/src/main/res/layout/item_autocomplete_matrix_item.xml
@@ -25,24 +25,24 @@
diff --git a/vector/src/main/res/layout/item_autocomplete_more_result.xml b/vector/src/main/res/layout/item_autocomplete_more_result.xml
index 315af94be2..23addf5fe4 100644
--- a/vector/src/main/res/layout/item_autocomplete_more_result.xml
+++ b/vector/src/main/res/layout/item_autocomplete_more_result.xml
@@ -1,9 +1,9 @@
+ android:textColor="?vctr_content_secondary" />
diff --git a/vector/src/main/res/layout/item_bottom_sheet_action.xml b/vector/src/main/res/layout/item_bottom_sheet_action.xml
index 348520b665..483700c41f 100644
--- a/vector/src/main/res/layout/item_bottom_sheet_action.xml
+++ b/vector/src/main/res/layout/item_bottom_sheet_action.xml
@@ -53,6 +53,7 @@
diff --git a/vector/src/main/res/layout/item_bottom_sheet_message_preview.xml b/vector/src/main/res/layout/item_bottom_sheet_message_preview.xml
index 700f774534..70a54f63d4 100644
--- a/vector/src/main/res/layout/item_bottom_sheet_message_preview.xml
+++ b/vector/src/main/res/layout/item_bottom_sheet_message_preview.xml
@@ -24,6 +24,7 @@
+ app:drawableStartCompat="@drawable/ic_warning_badge"
+ tools:text="@string/unable_to_send_message" />
diff --git a/vector/src/main/res/layout/item_bottom_sheet_quick_reaction.xml b/vector/src/main/res/layout/item_bottom_sheet_quick_reaction.xml
index 23494c9006..db243184e5 100644
--- a/vector/src/main/res/layout/item_bottom_sheet_quick_reaction.xml
+++ b/vector/src/main/res/layout/item_bottom_sheet_quick_reaction.xml
@@ -9,83 +9,74 @@
\ No newline at end of file
diff --git a/vector/src/main/res/layout/item_contact_action.xml b/vector/src/main/res/layout/item_contact_action.xml
index 27c680555f..07e06f0d0c 100644
--- a/vector/src/main/res/layout/item_contact_action.xml
+++ b/vector/src/main/res/layout/item_contact_action.xml
@@ -18,10 +18,11 @@
android:importantForAccessibility="no"
android:padding="10dp"
app:tint="?vctr_content_secondary"
- tools:src="@drawable/ic_invite_people" />
+ tools:src="@drawable/ic_baseline_perm_contact_calendar_24" />
\ No newline at end of file
diff --git a/vector/src/main/res/layout/item_contact_detail.xml b/vector/src/main/res/layout/item_contact_detail.xml
index 59f43472b6..b98adec5e6 100644
--- a/vector/src/main/res/layout/item_contact_detail.xml
+++ b/vector/src/main/res/layout/item_contact_detail.xml
@@ -11,6 +11,7 @@
-
-
\ No newline at end of file
diff --git a/vector/src/main/res/layout/item_create_direct_room_user.xml b/vector/src/main/res/layout/item_create_direct_room_user.xml
index 690b292de8..18e9d1d3ec 100644
--- a/vector/src/main/res/layout/item_create_direct_room_user.xml
+++ b/vector/src/main/res/layout/item_create_direct_room_user.xml
@@ -41,6 +41,7 @@
+ android:textColor="?vctr_content_secondary" />
+ android:textColor="?vctr_content_secondary" />
+ android:textColor="?vctr_content_secondary" />
diff --git a/vector/src/main/res/layout/item_emoji_result.xml b/vector/src/main/res/layout/item_emoji_result.xml
index d74b254e67..26f85d8c97 100644
--- a/vector/src/main/res/layout/item_emoji_result.xml
+++ b/vector/src/main/res/layout/item_emoji_result.xml
@@ -11,14 +11,13 @@
android:paddingStart="@dimen/layout_horizontal_margin"
android:paddingEnd="@dimen/layout_horizontal_margin">
-
@@ -30,20 +29,20 @@
diff --git a/vector/src/main/res/layout/item_emoji_verif.xml b/vector/src/main/res/layout/item_emoji_verif.xml
index 23a5b3bda5..0ef46c56a6 100644
--- a/vector/src/main/res/layout/item_emoji_verif.xml
+++ b/vector/src/main/res/layout/item_emoji_verif.xml
@@ -10,6 +10,7 @@
\ No newline at end of file
diff --git a/vector/src/main/res/layout/item_form_switch.xml b/vector/src/main/res/layout/item_form_switch.xml
index 1db25f4c27..93c14acbac 100644
--- a/vector/src/main/res/layout/item_form_switch.xml
+++ b/vector/src/main/res/layout/item_form_switch.xml
@@ -10,13 +10,13 @@
\ No newline at end of file
diff --git a/vector/src/main/res/layout/item_generic_empty_state.xml b/vector/src/main/res/layout/item_generic_empty_state.xml
index ef33ec3be7..932f5666c6 100644
--- a/vector/src/main/res/layout/item_generic_empty_state.xml
+++ b/vector/src/main/res/layout/item_generic_empty_state.xml
@@ -23,13 +23,13 @@
\ No newline at end of file
diff --git a/vector/src/main/res/layout/item_generic_list.xml b/vector/src/main/res/layout/item_generic_list.xml
index 9cc240e557..a23d4e30a7 100644
--- a/vector/src/main/res/layout/item_generic_list.xml
+++ b/vector/src/main/res/layout/item_generic_list.xml
@@ -24,6 +24,7 @@
diff --git a/vector/src/main/res/layout/item_group.xml b/vector/src/main/res/layout/item_group.xml
index f28d399d35..bc17752cbc 100644
--- a/vector/src/main/res/layout/item_group.xml
+++ b/vector/src/main/res/layout/item_group.xml
@@ -25,6 +25,7 @@
diff --git a/vector/src/main/res/layout/item_login_title.xml b/vector/src/main/res/layout/item_login_title.xml
index 81b9570e7e..165fc83d7b 100644
--- a/vector/src/main/res/layout/item_login_title.xml
+++ b/vector/src/main/res/layout/item_login_title.xml
@@ -2,11 +2,12 @@
diff --git a/vector/src/main/res/layout/item_login_title_small.xml b/vector/src/main/res/layout/item_login_title_small.xml
index 16a77ce9cd..342237cdde 100644
--- a/vector/src/main/res/layout/item_login_title_small.xml
+++ b/vector/src/main/res/layout/item_login_title_small.xml
@@ -2,11 +2,12 @@
diff --git a/vector/src/main/res/layout/item_no_result.xml b/vector/src/main/res/layout/item_no_result.xml
index 5fc43a447a..a46bd1b2f1 100644
--- a/vector/src/main/res/layout/item_no_result.xml
+++ b/vector/src/main/res/layout/item_no_result.xml
@@ -1,6 +1,7 @@
+ android:textStyle="bold"
+ tools:text="Security" />
diff --git a/vector/src/main/res/layout/item_public_room.xml b/vector/src/main/res/layout/item_public_room.xml
index d5bd16e5b5..12aaf8a653 100644
--- a/vector/src/main/res/layout/item_public_room.xml
+++ b/vector/src/main/res/layout/item_public_room.xml
@@ -25,6 +25,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vector/src/main/res/layout/item_room_category.xml b/vector/src/main/res/layout/item_room_category.xml
index 2e890ec9e3..0fd1e96d4a 100644
--- a/vector/src/main/res/layout/item_room_category.xml
+++ b/vector/src/main/res/layout/item_room_category.xml
@@ -18,6 +18,7 @@
diff --git a/vector/src/main/res/layout/item_room_directory.xml b/vector/src/main/res/layout/item_room_directory.xml
index 51b1f4d5f8..355f14cef3 100644
--- a/vector/src/main/res/layout/item_room_directory.xml
+++ b/vector/src/main/res/layout/item_room_directory.xml
@@ -27,6 +27,7 @@
+ android:textColor="?vctr_content_secondary" />
+ app:layout_constraintVertical_chainStyle="packed" />
diff --git a/vector/src/main/res/layout/item_settings_information.xml b/vector/src/main/res/layout/item_settings_information.xml
index ae3e6aa804..9f4cb5742c 100644
--- a/vector/src/main/res/layout/item_settings_information.xml
+++ b/vector/src/main/res/layout/item_settings_information.xml
@@ -11,11 +11,11 @@
diff --git a/vector/src/main/res/layout/item_settings_simple_item.xml b/vector/src/main/res/layout/item_settings_simple_item.xml
index eae4e97864..b4e6e24b2f 100644
--- a/vector/src/main/res/layout/item_settings_simple_item.xml
+++ b/vector/src/main/res/layout/item_settings_simple_item.xml
@@ -18,22 +18,22 @@
diff --git a/vector/src/main/res/layout/item_settings_three_pid.xml b/vector/src/main/res/layout/item_settings_three_pid.xml
index 98446b92c7..74ae731b0e 100644
--- a/vector/src/main/res/layout/item_settings_three_pid.xml
+++ b/vector/src/main/res/layout/item_settings_three_pid.xml
@@ -26,11 +26,11 @@
+ tools:text="@tools:sample/lorem/random"
+ tools:visibility="visible" />
+ android:textColor="?vctr_content_secondary" />
diff --git a/vector/src/main/res/layout/item_space_roomchild.xml b/vector/src/main/res/layout/item_space_roomchild.xml
index d87337439e..e1d8b8edd6 100644
--- a/vector/src/main/res/layout/item_space_roomchild.xml
+++ b/vector/src/main/res/layout/item_space_roomchild.xml
@@ -41,6 +41,7 @@
@@ -64,7 +64,7 @@
+ android:fontFamily="monospace" />
diff --git a/vector/src/main/res/layout/item_timeline_event_create.xml b/vector/src/main/res/layout/item_timeline_event_create.xml
index 49e9bff53a..ea881ccdd0 100644
--- a/vector/src/main/res/layout/item_timeline_event_create.xml
+++ b/vector/src/main/res/layout/item_timeline_event_create.xml
@@ -7,6 +7,7 @@
+ app:drawableStartCompat="@drawable/error"
+ tools:text="This room is continuation…" />
\ No newline at end of file
diff --git a/vector/src/main/res/layout/item_timeline_event_day_separator.xml b/vector/src/main/res/layout/item_timeline_event_day_separator.xml
index 38b03c4159..7b5e62dca2 100644
--- a/vector/src/main/res/layout/item_timeline_event_day_separator.xml
+++ b/vector/src/main/res/layout/item_timeline_event_day_separator.xml
@@ -15,6 +15,7 @@
\ No newline at end of file
diff --git a/vector/src/main/res/layout/item_timeline_event_default_stub.xml b/vector/src/main/res/layout/item_timeline_event_default_stub.xml
index f32d9cf813..a5357f2227 100644
--- a/vector/src/main/res/layout/item_timeline_event_default_stub.xml
+++ b/vector/src/main/res/layout/item_timeline_event_default_stub.xml
@@ -17,6 +17,7 @@
diff --git a/vector/src/main/res/layout/item_timeline_event_file_stub.xml b/vector/src/main/res/layout/item_timeline_event_file_stub.xml
index 78a6330a85..ca25c6b6f1 100644
--- a/vector/src/main/res/layout/item_timeline_event_file_stub.xml
+++ b/vector/src/main/res/layout/item_timeline_event_file_stub.xml
@@ -41,6 +41,7 @@
@@ -45,12 +45,12 @@
\ No newline at end of file
diff --git a/vector/src/main/res/layout/item_timeline_event_merged_room_creation_stub.xml b/vector/src/main/res/layout/item_timeline_event_merged_room_creation_stub.xml
index 6ebd20e86f..9c79616589 100644
--- a/vector/src/main/res/layout/item_timeline_event_merged_room_creation_stub.xml
+++ b/vector/src/main/res/layout/item_timeline_event_merged_room_creation_stub.xml
@@ -63,12 +63,12 @@
diff --git a/vector/src/main/res/layout/item_timeline_event_merged_utd_stub.xml b/vector/src/main/res/layout/item_timeline_event_merged_utd_stub.xml
index 9a26855396..abcd679dea 100644
--- a/vector/src/main/res/layout/item_timeline_event_merged_utd_stub.xml
+++ b/vector/src/main/res/layout/item_timeline_event_merged_utd_stub.xml
@@ -21,6 +21,7 @@
+ app:drawableStartCompat="@drawable/ic_clock"
+ app:drawableTint="?vctr_content_secondary" />
diff --git a/vector/src/main/res/layout/item_timeline_event_notice_stub.xml b/vector/src/main/res/layout/item_timeline_event_notice_stub.xml
index f924ca6dd5..8b024849cc 100644
--- a/vector/src/main/res/layout/item_timeline_event_notice_stub.xml
+++ b/vector/src/main/res/layout/item_timeline_event_notice_stub.xml
@@ -17,6 +17,7 @@
diff --git a/vector/src/main/res/layout/item_timeline_event_option_buttons_stub.xml b/vector/src/main/res/layout/item_timeline_event_option_buttons_stub.xml
index 9643144d20..e3a8bd7df4 100644
--- a/vector/src/main/res/layout/item_timeline_event_option_buttons_stub.xml
+++ b/vector/src/main/res/layout/item_timeline_event_option_buttons_stub.xml
@@ -7,12 +7,11 @@
diff --git a/vector/src/main/res/layout/item_timeline_event_poll_stub.xml b/vector/src/main/res/layout/item_timeline_event_poll_stub.xml
index 4dda9fb3a8..957a940748 100644
--- a/vector/src/main/res/layout/item_timeline_event_poll_stub.xml
+++ b/vector/src/main/res/layout/item_timeline_event_poll_stub.xml
@@ -23,12 +23,12 @@
@@ -36,7 +36,7 @@
diff --git a/vector/src/main/res/layout/item_timeline_event_redacted_stub.xml b/vector/src/main/res/layout/item_timeline_event_redacted_stub.xml
index 00ac179725..456611b5a1 100644
--- a/vector/src/main/res/layout/item_timeline_event_redacted_stub.xml
+++ b/vector/src/main/res/layout/item_timeline_event_redacted_stub.xml
@@ -1,11 +1,11 @@
diff --git a/vector/src/main/res/layout/item_timeline_event_status_tile_stub.xml b/vector/src/main/res/layout/item_timeline_event_status_tile_stub.xml
index ff0effcb5f..fb2d8c2057 100644
--- a/vector/src/main/res/layout/item_timeline_event_status_tile_stub.xml
+++ b/vector/src/main/res/layout/item_timeline_event_status_tile_stub.xml
@@ -8,13 +8,13 @@
@@ -22,6 +22,7 @@
\ No newline at end of file
diff --git a/vector/src/main/res/layout/item_timeline_event_text_message_stub.xml b/vector/src/main/res/layout/item_timeline_event_text_message_stub.xml
index 1b23d58df6..464722a340 100644
--- a/vector/src/main/res/layout/item_timeline_event_text_message_stub.xml
+++ b/vector/src/main/res/layout/item_timeline_event_text_message_stub.xml
@@ -15,10 +15,10 @@
-->
diff --git a/vector/src/main/res/layout/item_timeline_event_verification_stub.xml b/vector/src/main/res/layout/item_timeline_event_verification_stub.xml
index 0b38afd0f5..66d9a71e39 100644
--- a/vector/src/main/res/layout/item_timeline_event_verification_stub.xml
+++ b/vector/src/main/res/layout/item_timeline_event_verification_stub.xml
@@ -9,13 +9,13 @@
@@ -23,6 +23,7 @@
@@ -61,12 +61,12 @@
diff --git a/vector/src/main/res/layout/item_timeline_event_widget_stub.xml b/vector/src/main/res/layout/item_timeline_event_widget_stub.xml
index 6732e6d121..1e73fc09a7 100644
--- a/vector/src/main/res/layout/item_timeline_event_widget_stub.xml
+++ b/vector/src/main/res/layout/item_timeline_event_widget_stub.xml
@@ -9,12 +9,12 @@
+ android:textColor="@color/notification_accent_color" />
diff --git a/vector/src/main/res/layout/item_tos.xml b/vector/src/main/res/layout/item_tos.xml
index 2faab4921f..0a02ff7f54 100644
--- a/vector/src/main/res/layout/item_tos.xml
+++ b/vector/src/main/res/layout/item_tos.xml
@@ -16,6 +16,7 @@
-
\ No newline at end of file
diff --git a/vector/src/main/res/layout/item_user_list_header.xml b/vector/src/main/res/layout/item_user_list_header.xml
index af1d0dec90..6faa957862 100644
--- a/vector/src/main/res/layout/item_user_list_header.xml
+++ b/vector/src/main/res/layout/item_user_list_header.xml
@@ -1,14 +1,12 @@
-
\ No newline at end of file
diff --git a/vector/src/main/res/layout/item_verification_action.xml b/vector/src/main/res/layout/item_verification_action.xml
index 69c513985f..455c5ce9a4 100644
--- a/vector/src/main/res/layout/item_verification_action.xml
+++ b/vector/src/main/res/layout/item_verification_action.xml
@@ -5,7 +5,7 @@
android:id="@+id/itemVerificationClickableZone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="?colorSurface"
+ android:background="?android:colorBackground"
android:clickable="true"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"
@@ -33,11 +33,11 @@
diff --git a/vector/src/main/res/layout/item_verification_notice.xml b/vector/src/main/res/layout/item_verification_notice.xml
index eb4a82a9be..2bc83fc993 100644
--- a/vector/src/main/res/layout/item_verification_notice.xml
+++ b/vector/src/main/res/layout/item_verification_notice.xml
@@ -2,6 +2,7 @@
diff --git a/vector/src/main/res/layout/item_verification_wait.xml b/vector/src/main/res/layout/item_verification_wait.xml
index 278a8a8fd0..d406fed84f 100644
--- a/vector/src/main/res/layout/item_verification_wait.xml
+++ b/vector/src/main/res/layout/item_verification_wait.xml
@@ -12,6 +12,7 @@
diff --git a/vector/src/main/res/layout/item_verification_waiting.xml b/vector/src/main/res/layout/item_verification_waiting.xml
index e2b0566fdb..6a265f4edc 100644
--- a/vector/src/main/res/layout/item_verification_waiting.xml
+++ b/vector/src/main/res/layout/item_verification_waiting.xml
@@ -12,10 +12,10 @@
diff --git a/vector/src/main/res/layout/reaction_button.xml b/vector/src/main/res/layout/reaction_button.xml
index 72a795db76..f31e86ed96 100644
--- a/vector/src/main/res/layout/reaction_button.xml
+++ b/vector/src/main/res/layout/reaction_button.xml
@@ -36,6 +36,7 @@
diff --git a/vector/src/main/res/layout/vector_invite_view.xml b/vector/src/main/res/layout/vector_invite_view.xml
index 7af3262248..6dc5fd41c7 100644
--- a/vector/src/main/res/layout/vector_invite_view.xml
+++ b/vector/src/main/res/layout/vector_invite_view.xml
@@ -21,12 +21,13 @@
diff --git a/vector/src/main/res/layout/vector_preference_push_rule.xml b/vector/src/main/res/layout/vector_preference_push_rule.xml
index 9df48bbe5d..5242bfdf85 100644
--- a/vector/src/main/res/layout/vector_preference_push_rule.xml
+++ b/vector/src/main/res/layout/vector_preference_push_rule.xml
@@ -19,25 +19,26 @@
diff --git a/vector/src/main/res/layout/view_active_conference_view.xml b/vector/src/main/res/layout/view_active_conference_view.xml
index 043736c190..9f26ed9a1a 100644
--- a/vector/src/main/res/layout/view_active_conference_view.xml
+++ b/vector/src/main/res/layout/view_active_conference_view.xml
@@ -9,6 +9,7 @@
diff --git a/vector/src/main/res/layout/view_attachment_type_selector.xml b/vector/src/main/res/layout/view_attachment_type_selector.xml
index 9fe977e060..648ca91820 100644
--- a/vector/src/main/res/layout/view_attachment_type_selector.xml
+++ b/vector/src/main/res/layout/view_attachment_type_selector.xml
@@ -2,17 +2,18 @@
+ android:layout_height="wrap_content"
+ android:paddingStart="8dp"
+ android:paddingEnd="8dp">
+ android:paddingBottom="16dp"
+ tools:ignore="UselessParent">
-
-
diff --git a/vector/src/main/res/layout/view_bottom_sheet_action_button.xml b/vector/src/main/res/layout/view_bottom_sheet_action_button.xml
index 0af256387c..77a4d6bc57 100644
--- a/vector/src/main/res/layout/view_bottom_sheet_action_button.xml
+++ b/vector/src/main/res/layout/view_bottom_sheet_action_button.xml
@@ -38,11 +38,11 @@
diff --git a/vector/src/main/res/layout/view_failed_messages_warning.xml b/vector/src/main/res/layout/view_failed_messages_warning.xml
index 871844a22a..3e0e307dc3 100644
--- a/vector/src/main/res/layout/view_failed_messages_warning.xml
+++ b/vector/src/main/res/layout/view_failed_messages_warning.xml
@@ -20,6 +20,7 @@
diff --git a/vector/src/main/res/layout/view_jump_to_read_marker.xml b/vector/src/main/res/layout/view_jump_to_read_marker.xml
index 5f5944fa17..7850435c2d 100644
--- a/vector/src/main/res/layout/view_jump_to_read_marker.xml
+++ b/vector/src/main/res/layout/view_jump_to_read_marker.xml
@@ -9,6 +9,7 @@
\ No newline at end of file
diff --git a/vector/src/main/res/layout/view_read_marker.xml b/vector/src/main/res/layout/view_read_marker.xml
index bea00fbb15..65eb02e95c 100644
--- a/vector/src/main/res/layout/view_read_marker.xml
+++ b/vector/src/main/res/layout/view_read_marker.xml
@@ -7,11 +7,12 @@
+ android:textColor="?vctr_content_primary" />
diff --git a/vector/src/main/res/layout/view_space_type_button.xml b/vector/src/main/res/layout/view_space_type_button.xml
index 67b23f9a94..fa4aa887be 100644
--- a/vector/src/main/res/layout/view_space_type_button.xml
+++ b/vector/src/main/res/layout/view_space_type_button.xml
@@ -23,13 +23,13 @@
diff --git a/vector/src/main/res/menu/home_bottom_navigation.xml b/vector/src/main/res/menu/home_bottom_navigation.xml
index 34de70cd93..7a252f1332 100644
--- a/vector/src/main/res/menu/home_bottom_navigation.xml
+++ b/vector/src/main/res/menu/home_bottom_navigation.xml
@@ -26,4 +26,11 @@
android:title="@string/bottom_action_notification"
android:visible="false" />
+
+
diff --git a/vector/src/main/res/menu/menu_manage_space.xml b/vector/src/main/res/menu/menu_manage_space.xml
index 858c3bc9c3..ac657e0df2 100644
--- a/vector/src/main/res/menu/menu_manage_space.xml
+++ b/vector/src/main/res/menu/menu_manage_space.xml
@@ -4,18 +4,18 @@
+ app:showAsAction="never" />
+ app:showAsAction="never" />
\ No newline at end of file
diff --git a/vector/src/main/res/menu/menu_push_gateways.xml b/vector/src/main/res/menu/menu_push_gateways.xml
index 15709a1f1e..99b2bca963 100644
--- a/vector/src/main/res/menu/menu_push_gateways.xml
+++ b/vector/src/main/res/menu/menu_push_gateways.xml
@@ -6,6 +6,7 @@
android:id="@+id/refresh"
android:icon="@drawable/ic_refresh_cw"
android:title="@string/refresh"
+ app:iconTint="?colorPrimary"
app:showAsAction="always" />
\ No newline at end of file
diff --git a/vector/src/main/res/menu/menu_space_add_room.xml b/vector/src/main/res/menu/menu_space_add_room.xml
index b11844673e..048b89892c 100644
--- a/vector/src/main/res/menu/menu_space_add_room.xml
+++ b/vector/src/main/res/menu/menu_space_add_room.xml
@@ -4,6 +4,5 @@
\ No newline at end of file
diff --git a/vector/src/main/res/menu/vector_room_profile.xml b/vector/src/main/res/menu/vector_room_profile.xml
index 0ac3412497..ef1bbbc7d8 100644
--- a/vector/src/main/res/menu/vector_room_profile.xml
+++ b/vector/src/main/res/menu/vector_room_profile.xml
@@ -5,6 +5,6 @@
android:id="@+id/roomProfileShareAction"
android:icon="@drawable/ic_material_share"
android:title="@string/share"
- app:iconTint="?vctr_content_secondary"
+ app:iconTint="?colorSecondary"
app:showAsAction="ifRoom" />
\ No newline at end of file
diff --git a/vector/src/main/res/raw/emoji_picker_datasource.json b/vector/src/main/res/raw/emoji_picker_datasource.json
index 6aa3799cf0..c2def98ebc 100644
--- a/vector/src/main/res/raw/emoji_picker_datasource.json
+++ b/vector/src/main/res/raw/emoji_picker_datasource.json
@@ -1 +1 @@
-{"compressed":true,"categories":[{"id":"smileys_&_emotion","name":"Smileys & Emotion","emojis":["grinning-face","grinning-face-with-big-eyes","grinning-face-with-smiling-eyes","beaming-face-with-smiling-eyes","grinning-squinting-face","grinning-face-with-sweat","rolling-on-the-floor-laughing","face-with-tears-of-joy","slightly-smiling-face","upsidedown-face","winking-face","smiling-face-with-smiling-eyes","smiling-face-with-halo","smiling-face-with-hearts","smiling-face-with-hearteyes","starstruck","face-blowing-a-kiss","kissing-face","smiling-face","kissing-face-with-closed-eyes","kissing-face-with-smiling-eyes","smiling-face-with-tear","face-savoring-food","face-with-tongue","winking-face-with-tongue","zany-face","squinting-face-with-tongue","moneymouth-face","hugging-face","face-with-hand-over-mouth","shushing-face","thinking-face","zippermouth-face","face-with-raised-eyebrow","neutral-face","expressionless-face","face-without-mouth","face-in-clouds","smirking-face","unamused-face","face-with-rolling-eyes","grimacing-face","face-exhaling","lying-face","relieved-face","pensive-face","sleepy-face","drooling-face","sleeping-face","face-with-medical-mask","face-with-thermometer","face-with-headbandage","nauseated-face","face-vomiting","sneezing-face","hot-face","cold-face","woozy-face","knockedout-face","face-with-spiral-eyes","exploding-head","cowboy-hat-face","partying-face","disguised-face","smiling-face-with-sunglasses","nerd-face","face-with-monocle","confused-face","worried-face","slightly-frowning-face","frowning-face","face-with-open-mouth","hushed-face","astonished-face","flushed-face","pleading-face","frowning-face-with-open-mouth","anguished-face","fearful-face","anxious-face-with-sweat","sad-but-relieved-face","crying-face","loudly-crying-face","face-screaming-in-fear","confounded-face","persevering-face","disappointed-face","downcast-face-with-sweat","weary-face","tired-face","yawning-face","face-with-steam-from-nose","pouting-face","angry-face","face-with-symbols-on-mouth","smiling-face-with-horns","angry-face-with-horns","skull","skull-and-crossbones","pile-of-poo","clown-face","ogre","goblin","ghost","alien","alien-monster","robot","grinning-cat","grinning-cat-with-smiling-eyes","cat-with-tears-of-joy","smiling-cat-with-hearteyes","cat-with-wry-smile","kissing-cat","weary-cat","crying-cat","pouting-cat","seenoevil-monkey","hearnoevil-monkey","speaknoevil-monkey","kiss-mark","love-letter","heart-with-arrow","heart-with-ribbon","sparkling-heart","growing-heart","beating-heart","revolving-hearts","two-hearts","heart-decoration","heart-exclamation","broken-heart","heart-on-fire","mending-heart","red-heart","orange-heart","yellow-heart","green-heart","blue-heart","purple-heart","brown-heart","black-heart","white-heart","hundred-points","anger-symbol","collision","dizzy","sweat-droplets","dashing-away","hole","bomb","speech-balloon","eye-in-speech-bubble","left-speech-bubble","right-anger-bubble","thought-balloon","zzz"]},{"id":"people_&_body","name":"People & Body","emojis":["waving-hand","raised-back-of-hand","hand-with-fingers-splayed","raised-hand","vulcan-salute","ok-hand","pinched-fingers","pinching-hand","victory-hand","crossed-fingers","loveyou-gesture","sign-of-the-horns","call-me-hand","backhand-index-pointing-left","backhand-index-pointing-right","backhand-index-pointing-up","middle-finger","backhand-index-pointing-down","index-pointing-up","thumbs-up","thumbs-down","raised-fist","oncoming-fist","leftfacing-fist","rightfacing-fist","clapping-hands","raising-hands","open-hands","palms-up-together","handshake","folded-hands","writing-hand","nail-polish","selfie","flexed-biceps","mechanical-arm","mechanical-leg","leg","foot","ear","ear-with-hearing-aid","nose","brain","anatomical-heart","lungs","tooth","bone","eyes","eye","tongue","mouth","baby","child","boy","girl","person","person-blond-hair","man","person-beard","man-beard","woman-beard","man-red-hair","man-curly-hair","man-white-hair","man-bald","woman","woman-red-hair","person-red-hair","woman-curly-hair","person-curly-hair","woman-white-hair","person-white-hair","woman-bald","person-bald","woman-blond-hair","man-blond-hair","older-person","old-man","old-woman","person-frowning","man-frowning","woman-frowning","person-pouting","man-pouting","woman-pouting","person-gesturing-no","man-gesturing-no","woman-gesturing-no","person-gesturing-ok","man-gesturing-ok","woman-gesturing-ok","person-tipping-hand","man-tipping-hand","woman-tipping-hand","person-raising-hand","man-raising-hand","woman-raising-hand","deaf-person","deaf-man","deaf-woman","person-bowing","man-bowing","woman-bowing","person-facepalming","man-facepalming","woman-facepalming","person-shrugging","man-shrugging","woman-shrugging","health-worker","man-health-worker","woman-health-worker","student","man-student","woman-student","teacher","man-teacher","woman-teacher","judge","man-judge","woman-judge","farmer","man-farmer","woman-farmer","cook","man-cook","woman-cook","mechanic","man-mechanic","woman-mechanic","factory-worker","man-factory-worker","woman-factory-worker","office-worker","man-office-worker","woman-office-worker","scientist","man-scientist","woman-scientist","technologist","man-technologist","woman-technologist","singer","man-singer","woman-singer","artist","man-artist","woman-artist","pilot","man-pilot","woman-pilot","astronaut","man-astronaut","woman-astronaut","firefighter","man-firefighter","woman-firefighter","police-officer","man-police-officer","woman-police-officer","detective","man-detective","woman-detective","guard","man-guard","woman-guard","ninja","construction-worker","man-construction-worker","woman-construction-worker","prince","princess","person-wearing-turban","man-wearing-turban","woman-wearing-turban","person-with-skullcap","woman-with-headscarf","person-in-tuxedo","man-in-tuxedo","woman-in-tuxedo","person-with-veil","man-with-veil","woman-with-veil","pregnant-woman","breastfeeding","woman-feeding-baby","man-feeding-baby","person-feeding-baby","baby-angel","santa-claus","mrs-claus","mx-claus","superhero","man-superhero","woman-superhero","supervillain","man-supervillain","woman-supervillain","mage","man-mage","woman-mage","fairy","man-fairy","woman-fairy","vampire","man-vampire","woman-vampire","merperson","merman","mermaid","elf","man-elf","woman-elf","genie","man-genie","woman-genie","zombie","man-zombie","woman-zombie","person-getting-massage","man-getting-massage","woman-getting-massage","person-getting-haircut","man-getting-haircut","woman-getting-haircut","person-walking","man-walking","woman-walking","person-standing","man-standing","woman-standing","person-kneeling","man-kneeling","woman-kneeling","person-with-white-cane","man-with-white-cane","woman-with-white-cane","person-in-motorized-wheelchair","man-in-motorized-wheelchair","woman-in-motorized-wheelchair","person-in-manual-wheelchair","man-in-manual-wheelchair","woman-in-manual-wheelchair","person-running","man-running","woman-running","woman-dancing","man-dancing","person-in-suit-levitating","people-with-bunny-ears","men-with-bunny-ears","women-with-bunny-ears","person-in-steamy-room","man-in-steamy-room","woman-in-steamy-room","person-climbing","man-climbing","woman-climbing","person-fencing","horse-racing","skier","snowboarder","person-golfing","man-golfing","woman-golfing","person-surfing","man-surfing","woman-surfing","person-rowing-boat","man-rowing-boat","woman-rowing-boat","person-swimming","man-swimming","woman-swimming","person-bouncing-ball","man-bouncing-ball","woman-bouncing-ball","person-lifting-weights","man-lifting-weights","woman-lifting-weights","person-biking","man-biking","woman-biking","person-mountain-biking","man-mountain-biking","woman-mountain-biking","person-cartwheeling","man-cartwheeling","woman-cartwheeling","people-wrestling","men-wrestling","women-wrestling","person-playing-water-polo","man-playing-water-polo","woman-playing-water-polo","person-playing-handball","man-playing-handball","woman-playing-handball","person-juggling","man-juggling","woman-juggling","person-in-lotus-position","man-in-lotus-position","woman-in-lotus-position","person-taking-bath","person-in-bed","people-holding-hands","women-holding-hands","woman-and-man-holding-hands","men-holding-hands","kiss","kiss-woman-man","kiss-man-man","kiss-woman-woman","couple-with-heart","couple-with-heart-woman-man","couple-with-heart-man-man","couple-with-heart-woman-woman","family","family-man-woman-boy","family-man-woman-girl","family-man-woman-girl-boy","family-man-woman-boy-boy","family-man-woman-girl-girl","family-man-man-boy","family-man-man-girl","family-man-man-girl-boy","family-man-man-boy-boy","family-man-man-girl-girl","family-woman-woman-boy","family-woman-woman-girl","family-woman-woman-girl-boy","family-woman-woman-boy-boy","family-woman-woman-girl-girl","family-man-boy","family-man-boy-boy","family-man-girl","family-man-girl-boy","family-man-girl-girl","family-woman-boy","family-woman-boy-boy","family-woman-girl","family-woman-girl-boy","family-woman-girl-girl","speaking-head","bust-in-silhouette","busts-in-silhouette","people-hugging","footprints"]},{"id":"animals_&_nature","name":"Animals & Nature","emojis":["monkey-face","monkey","gorilla","orangutan","dog-face","dog","guide-dog","service-dog","poodle","wolf","fox","raccoon","cat-face","cat","black-cat","lion","tiger-face","tiger","leopard","horse-face","horse","unicorn","zebra","deer","bison","cow-face","ox","water-buffalo","cow","pig-face","pig","boar","pig-nose","ram","ewe","goat","camel","twohump-camel","llama","giraffe","elephant","mammoth","rhinoceros","hippopotamus","mouse-face","mouse","rat","hamster","rabbit-face","rabbit","chipmunk","beaver","hedgehog","bat","bear","polar-bear","koala","panda","sloth","otter","skunk","kangaroo","badger","paw-prints","turkey","chicken","rooster","hatching-chick","baby-chick","frontfacing-baby-chick","bird","penguin","dove","eagle","duck","swan","owl","dodo","feather","flamingo","peacock","parrot","frog","crocodile","turtle","lizard","snake","dragon-face","dragon","sauropod","trex","spouting-whale","whale","dolphin","seal","fish","tropical-fish","blowfish","shark","octopus","spiral-shell","snail","butterfly","bug","ant","honeybee","beetle","lady-beetle","cricket","cockroach","spider","spider-web","scorpion","mosquito","fly","worm","microbe","bouquet","cherry-blossom","white-flower","rosette","rose","wilted-flower","hibiscus","sunflower","blossom","tulip","seedling","potted-plant","evergreen-tree","deciduous-tree","palm-tree","cactus","sheaf-of-rice","herb","shamrock","four-leaf-clover","maple-leaf","fallen-leaf","leaf-fluttering-in-wind"]},{"id":"food_&_drink","name":"Food & Drink","emojis":["grapes","melon","watermelon","tangerine","lemon","banana","pineapple","mango","red-apple","green-apple","pear","peach","cherries","strawberry","blueberries","kiwi-fruit","tomato","olive","coconut","avocado","eggplant","potato","carrot","ear-of-corn","hot-pepper","bell-pepper","cucumber","leafy-green","broccoli","garlic","onion","mushroom","peanuts","chestnut","bread","croissant","baguette-bread","flatbread","pretzel","bagel","pancakes","waffle","cheese-wedge","meat-on-bone","poultry-leg","cut-of-meat","bacon","hamburger","french-fries","pizza","hot-dog","sandwich","taco","burrito","tamale","stuffed-flatbread","falafel","egg","cooking","shallow-pan-of-food","pot-of-food","fondue","bowl-with-spoon","green-salad","popcorn","butter","salt","canned-food","bento-box","rice-cracker","rice-ball","cooked-rice","curry-rice","steaming-bowl","spaghetti","roasted-sweet-potato","oden","sushi","fried-shrimp","fish-cake-with-swirl","moon-cake","dango","dumpling","fortune-cookie","takeout-box","crab","lobster","shrimp","squid","oyster","soft-ice-cream","shaved-ice","ice-cream","doughnut","cookie","birthday-cake","shortcake","cupcake","pie","chocolate-bar","candy","lollipop","custard","honey-pot","baby-bottle","glass-of-milk","hot-beverage","teapot","teacup-without-handle","sake","bottle-with-popping-cork","wine-glass","cocktail-glass","tropical-drink","beer-mug","clinking-beer-mugs","clinking-glasses","tumbler-glass","cup-with-straw","bubble-tea","beverage-box","mate","ice","chopsticks","fork-and-knife-with-plate","fork-and-knife","spoon","kitchen-knife","amphora"]},{"id":"travel_&_places","name":"Travel & Places","emojis":["globe-showing-europeafrica","globe-showing-americas","globe-showing-asiaaustralia","globe-with-meridians","world-map","map-of-japan","compass","snowcapped-mountain","mountain","volcano","mount-fuji","camping","beach-with-umbrella","desert","desert-island","national-park","stadium","classical-building","building-construction","brick","rock","wood","hut","houses","derelict-house","house","house-with-garden","office-building","japanese-post-office","post-office","hospital","bank","hotel","love-hotel","convenience-store","school","department-store","factory","japanese-castle","castle","wedding","tokyo-tower","statue-of-liberty","church","mosque","hindu-temple","synagogue","shinto-shrine","kaaba","fountain","tent","foggy","night-with-stars","cityscape","sunrise-over-mountains","sunrise","cityscape-at-dusk","sunset","bridge-at-night","hot-springs","carousel-horse","ferris-wheel","roller-coaster","barber-pole","circus-tent","locomotive","railway-car","highspeed-train","bullet-train","train","metro","light-rail","station","tram","monorail","mountain-railway","tram-car","bus","oncoming-bus","trolleybus","minibus","ambulance","fire-engine","police-car","oncoming-police-car","taxi","oncoming-taxi","automobile","oncoming-automobile","sport-utility-vehicle","pickup-truck","delivery-truck","articulated-lorry","tractor","racing-car","motorcycle","motor-scooter","manual-wheelchair","motorized-wheelchair","auto-rickshaw","bicycle","kick-scooter","skateboard","roller-skate","bus-stop","motorway","railway-track","oil-drum","fuel-pump","police-car-light","horizontal-traffic-light","vertical-traffic-light","stop-sign","construction","anchor","sailboat","canoe","speedboat","passenger-ship","ferry","motor-boat","ship","airplane","small-airplane","airplane-departure","airplane-arrival","parachute","seat","helicopter","suspension-railway","mountain-cableway","aerial-tramway","satellite","rocket","flying-saucer","bellhop-bell","luggage","hourglass-done","hourglass-not-done","watch","alarm-clock","stopwatch","timer-clock","mantelpiece-clock","twelve-oclock","twelvethirty","one-oclock","onethirty","two-oclock","twothirty","three-oclock","threethirty","four-oclock","fourthirty","five-oclock","fivethirty","six-oclock","sixthirty","seven-oclock","seventhirty","eight-oclock","eightthirty","nine-oclock","ninethirty","ten-oclock","tenthirty","eleven-oclock","eleventhirty","new-moon","waxing-crescent-moon","first-quarter-moon","waxing-gibbous-moon","full-moon","waning-gibbous-moon","last-quarter-moon","waning-crescent-moon","crescent-moon","new-moon-face","first-quarter-moon-face","last-quarter-moon-face","thermometer","sun","full-moon-face","sun-with-face","ringed-planet","star","glowing-star","shooting-star","milky-way","cloud","sun-behind-cloud","cloud-with-lightning-and-rain","sun-behind-small-cloud","sun-behind-large-cloud","sun-behind-rain-cloud","cloud-with-rain","cloud-with-snow","cloud-with-lightning","tornado","fog","wind-face","cyclone","rainbow","closed-umbrella","umbrella","umbrella-with-rain-drops","umbrella-on-ground","high-voltage","snowflake","snowman","snowman-without-snow","comet","fire","droplet","water-wave"]},{"id":"activities","name":"Activities","emojis":["jackolantern","christmas-tree","fireworks","sparkler","firecracker","sparkles","balloon","party-popper","confetti-ball","tanabata-tree","pine-decoration","japanese-dolls","carp-streamer","wind-chime","moon-viewing-ceremony","red-envelope","ribbon","wrapped-gift","reminder-ribbon","admission-tickets","ticket","military-medal","trophy","sports-medal","1st-place-medal","2nd-place-medal","3rd-place-medal","soccer-ball","baseball","softball","basketball","volleyball","american-football","rugby-football","tennis","flying-disc","bowling","cricket-game","field-hockey","ice-hockey","lacrosse","ping-pong","badminton","boxing-glove","martial-arts-uniform","goal-net","flag-in-hole","ice-skate","fishing-pole","diving-mask","running-shirt","skis","sled","curling-stone","bullseye","yoyo","kite","pool-8-ball","crystal-ball","magic-wand","nazar-amulet","video-game","joystick","slot-machine","game-die","puzzle-piece","teddy-bear","piata","nesting-dolls","spade-suit","heart-suit","diamond-suit","club-suit","chess-pawn","joker","mahjong-red-dragon","flower-playing-cards","performing-arts","framed-picture","artist-palette","thread","sewing-needle","yarn","knot"]},{"id":"objects","name":"Objects","emojis":["glasses","sunglasses","goggles","lab-coat","safety-vest","necktie","tshirt","jeans","scarf","gloves","coat","socks","dress","kimono","sari","onepiece-swimsuit","briefs","shorts","bikini","womans-clothes","purse","handbag","clutch-bag","shopping-bags","backpack","thong-sandal","mans-shoe","running-shoe","hiking-boot","flat-shoe","highheeled-shoe","womans-sandal","ballet-shoes","womans-boot","crown","womans-hat","top-hat","graduation-cap","billed-cap","military-helmet","rescue-workers-helmet","prayer-beads","lipstick","ring","gem-stone","muted-speaker","speaker-low-volume","speaker-medium-volume","speaker-high-volume","loudspeaker","megaphone","postal-horn","bell","bell-with-slash","musical-score","musical-note","musical-notes","studio-microphone","level-slider","control-knobs","microphone","headphone","radio","saxophone","accordion","guitar","musical-keyboard","trumpet","violin","banjo","drum","long-drum","mobile-phone","mobile-phone-with-arrow","telephone","telephone-receiver","pager","fax-machine","battery","electric-plug","laptop","desktop-computer","printer","keyboard","computer-mouse","trackball","computer-disk","floppy-disk","optical-disk","dvd","abacus","movie-camera","film-frames","film-projector","clapper-board","television","camera","camera-with-flash","video-camera","videocassette","magnifying-glass-tilted-left","magnifying-glass-tilted-right","candle","light-bulb","flashlight","red-paper-lantern","diya-lamp","notebook-with-decorative-cover","closed-book","open-book","green-book","blue-book","orange-book","books","notebook","ledger","page-with-curl","scroll","page-facing-up","newspaper","rolledup-newspaper","bookmark-tabs","bookmark","label","money-bag","coin","yen-banknote","dollar-banknote","euro-banknote","pound-banknote","money-with-wings","credit-card","receipt","chart-increasing-with-yen","envelope","email","incoming-envelope","envelope-with-arrow","outbox-tray","inbox-tray","package","closed-mailbox-with-raised-flag","closed-mailbox-with-lowered-flag","open-mailbox-with-raised-flag","open-mailbox-with-lowered-flag","postbox","ballot-box-with-ballot","pencil","black-nib","fountain-pen","pen","paintbrush","crayon","memo","briefcase","file-folder","open-file-folder","card-index-dividers","calendar","tearoff-calendar","spiral-notepad","spiral-calendar","card-index","chart-increasing","chart-decreasing","bar-chart","clipboard","pushpin","round-pushpin","paperclip","linked-paperclips","straight-ruler","triangular-ruler","scissors","card-file-box","file-cabinet","wastebasket","locked","unlocked","locked-with-pen","locked-with-key","key","old-key","hammer","axe","pick","hammer-and-pick","hammer-and-wrench","dagger","crossed-swords","water-pistol","boomerang","bow-and-arrow","shield","carpentry-saw","wrench","screwdriver","nut-and-bolt","gear","clamp","balance-scale","white-cane","link","chains","hook","toolbox","magnet","ladder","alembic","test-tube","petri-dish","dna","microscope","telescope","satellite-antenna","syringe","drop-of-blood","pill","adhesive-bandage","stethoscope","door","elevator","mirror","window","bed","couch-and-lamp","chair","toilet","plunger","shower","bathtub","mouse-trap","razor","lotion-bottle","safety-pin","broom","basket","roll-of-paper","bucket","soap","toothbrush","sponge","fire-extinguisher","shopping-cart","cigarette","coffin","headstone","funeral-urn","moai","placard"]},{"id":"symbols","name":"Symbols","emojis":["atm-sign","litter-in-bin-sign","potable-water","wheelchair-symbol","mens-room","womens-room","restroom","baby-symbol","water-closet","passport-control","customs","baggage-claim","left-luggage","warning","children-crossing","no-entry","prohibited","no-bicycles","no-smoking","no-littering","nonpotable-water","no-pedestrians","no-mobile-phones","no-one-under-eighteen","radioactive","biohazard","up-arrow","upright-arrow","right-arrow","downright-arrow","down-arrow","downleft-arrow","left-arrow","upleft-arrow","updown-arrow","leftright-arrow","right-arrow-curving-left","left-arrow-curving-right","right-arrow-curving-up","right-arrow-curving-down","clockwise-vertical-arrows","counterclockwise-arrows-button","back-arrow","end-arrow","on-arrow","soon-arrow","top-arrow","place-of-worship","atom-symbol","om","star-of-david","wheel-of-dharma","yin-yang","latin-cross","orthodox-cross","star-and-crescent","peace-symbol","menorah","dotted-sixpointed-star","aries","taurus","gemini","cancer","leo","virgo","libra","scorpio","sagittarius","capricorn","aquarius","pisces","ophiuchus","shuffle-tracks-button","repeat-button","repeat-single-button","play-button","fastforward-button","next-track-button","play-or-pause-button","reverse-button","fast-reverse-button","last-track-button","upwards-button","fast-up-button","downwards-button","fast-down-button","pause-button","stop-button","record-button","eject-button","cinema","dim-button","bright-button","antenna-bars","vibration-mode","mobile-phone-off","female-sign","male-sign","transgender-symbol","multiply","plus","minus","divide","infinity","double-exclamation-mark","exclamation-question-mark","red-question-mark","white-question-mark","white-exclamation-mark","red-exclamation-mark","wavy-dash","currency-exchange","heavy-dollar-sign","medical-symbol","recycling-symbol","fleurdelis","trident-emblem","name-badge","japanese-symbol-for-beginner","hollow-red-circle","check-mark-button","check-box-with-check","check-mark","cross-mark","cross-mark-button","curly-loop","double-curly-loop","part-alternation-mark","eightspoked-asterisk","eightpointed-star","sparkle","copyright","registered","trade-mark","keycap","keycap","keycap-0","keycap-1","keycap-2","keycap-3","keycap-4","keycap-5","keycap-6","keycap-7","keycap-8","keycap-9","keycap-10","input-latin-uppercase","input-latin-lowercase","input-numbers","input-symbols","input-latin-letters","a-button-blood-type","ab-button-blood-type","b-button-blood-type","cl-button","cool-button","free-button","information","id-button","circled-m","new-button","ng-button","o-button-blood-type","ok-button","p-button","sos-button","up-button","vs-button","japanese-here-button","japanese-service-charge-button","japanese-monthly-amount-button","japanese-not-free-of-charge-button","japanese-reserved-button","japanese-bargain-button","japanese-discount-button","japanese-free-of-charge-button","japanese-prohibited-button","japanese-acceptable-button","japanese-application-button","japanese-passing-grade-button","japanese-vacancy-button","japanese-congratulations-button","japanese-secret-button","japanese-open-for-business-button","japanese-no-vacancy-button","red-circle","orange-circle","yellow-circle","green-circle","blue-circle","purple-circle","brown-circle","black-circle","white-circle","red-square","orange-square","yellow-square","green-square","blue-square","purple-square","brown-square","black-large-square","white-large-square","black-medium-square","white-medium-square","black-mediumsmall-square","white-mediumsmall-square","black-small-square","white-small-square","large-orange-diamond","large-blue-diamond","small-orange-diamond","small-blue-diamond","red-triangle-pointed-up","red-triangle-pointed-down","diamond-with-a-dot","radio-button","white-square-button","black-square-button"]},{"id":"flags","name":"Flags","emojis":["chequered-flag","triangular-flag","crossed-flags","black-flag","white-flag","rainbow-flag","transgender-flag","pirate-flag","flag-ascension-island","flag-andorra","flag-united-arab-emirates","flag-afghanistan","flag-antigua--barbuda","flag-anguilla","flag-albania","flag-armenia","flag-angola","flag-antarctica","flag-argentina","flag-american-samoa","flag-austria","flag-australia","flag-aruba","flag-land-islands","flag-azerbaijan","flag-bosnia--herzegovina","flag-barbados","flag-bangladesh","flag-belgium","flag-burkina-faso","flag-bulgaria","flag-bahrain","flag-burundi","flag-benin","flag-st-barthlemy","flag-bermuda","flag-brunei","flag-bolivia","flag-caribbean-netherlands","flag-brazil","flag-bahamas","flag-bhutan","flag-bouvet-island","flag-botswana","flag-belarus","flag-belize","flag-canada","flag-cocos-keeling-islands","flag-congo--kinshasa","flag-central-african-republic","flag-congo--brazzaville","flag-switzerland","flag-cte-divoire","flag-cook-islands","flag-chile","flag-cameroon","flag-china","flag-colombia","flag-clipperton-island","flag-costa-rica","flag-cuba","flag-cape-verde","flag-curaao","flag-christmas-island","flag-cyprus","flag-czechia","flag-germany","flag-diego-garcia","flag-djibouti","flag-denmark","flag-dominica","flag-dominican-republic","flag-algeria","flag-ceuta--melilla","flag-ecuador","flag-estonia","flag-egypt","flag-western-sahara","flag-eritrea","flag-spain","flag-ethiopia","flag-european-union","flag-finland","flag-fiji","flag-falkland-islands","flag-micronesia","flag-faroe-islands","flag-france","flag-gabon","flag-united-kingdom","flag-grenada","flag-georgia","flag-french-guiana","flag-guernsey","flag-ghana","flag-gibraltar","flag-greenland","flag-gambia","flag-guinea","flag-guadeloupe","flag-equatorial-guinea","flag-greece","flag-south-georgia--south-sandwich-islands","flag-guatemala","flag-guam","flag-guineabissau","flag-guyana","flag-hong-kong-sar-china","flag-heard--mcdonald-islands","flag-honduras","flag-croatia","flag-haiti","flag-hungary","flag-canary-islands","flag-indonesia","flag-ireland","flag-israel","flag-isle-of-man","flag-india","flag-british-indian-ocean-territory","flag-iraq","flag-iran","flag-iceland","flag-italy","flag-jersey","flag-jamaica","flag-jordan","flag-japan","flag-kenya","flag-kyrgyzstan","flag-cambodia","flag-kiribati","flag-comoros","flag-st-kitts--nevis","flag-north-korea","flag-south-korea","flag-kuwait","flag-cayman-islands","flag-kazakhstan","flag-laos","flag-lebanon","flag-st-lucia","flag-liechtenstein","flag-sri-lanka","flag-liberia","flag-lesotho","flag-lithuania","flag-luxembourg","flag-latvia","flag-libya","flag-morocco","flag-monaco","flag-moldova","flag-montenegro","flag-st-martin","flag-madagascar","flag-marshall-islands","flag-north-macedonia","flag-mali","flag-myanmar-burma","flag-mongolia","flag-macao-sar-china","flag-northern-mariana-islands","flag-martinique","flag-mauritania","flag-montserrat","flag-malta","flag-mauritius","flag-maldives","flag-malawi","flag-mexico","flag-malaysia","flag-mozambique","flag-namibia","flag-new-caledonia","flag-niger","flag-norfolk-island","flag-nigeria","flag-nicaragua","flag-netherlands","flag-norway","flag-nepal","flag-nauru","flag-niue","flag-new-zealand","flag-oman","flag-panama","flag-peru","flag-french-polynesia","flag-papua-new-guinea","flag-philippines","flag-pakistan","flag-poland","flag-st-pierre--miquelon","flag-pitcairn-islands","flag-puerto-rico","flag-palestinian-territories","flag-portugal","flag-palau","flag-paraguay","flag-qatar","flag-runion","flag-romania","flag-serbia","flag-russia","flag-rwanda","flag-saudi-arabia","flag-solomon-islands","flag-seychelles","flag-sudan","flag-sweden","flag-singapore","flag-st-helena","flag-slovenia","flag-svalbard--jan-mayen","flag-slovakia","flag-sierra-leone","flag-san-marino","flag-senegal","flag-somalia","flag-suriname","flag-south-sudan","flag-so-tom--prncipe","flag-el-salvador","flag-sint-maarten","flag-syria","flag-eswatini","flag-tristan-da-cunha","flag-turks--caicos-islands","flag-chad","flag-french-southern-territories","flag-togo","flag-thailand","flag-tajikistan","flag-tokelau","flag-timorleste","flag-turkmenistan","flag-tunisia","flag-tonga","flag-turkey","flag-trinidad--tobago","flag-tuvalu","flag-taiwan","flag-tanzania","flag-ukraine","flag-uganda","flag-us-outlying-islands","flag-united-nations","flag-united-states","flag-uruguay","flag-uzbekistan","flag-vatican-city","flag-st-vincent--grenadines","flag-venezuela","flag-british-virgin-islands","flag-us-virgin-islands","flag-vietnam","flag-vanuatu","flag-wallis--futuna","flag-samoa","flag-kosovo","flag-yemen","flag-mayotte","flag-south-africa","flag-zambia","flag-zimbabwe","flag-england","flag-scotland","flag-wales"]}],"emojis":{"grinning-face":{"a":"Grinning Face","b":"1F600","j":["face","grin","smile","happy","joy",":D"]},"grinning-face-with-big-eyes":{"a":"Grinning Face with Big Eyes","b":"1F603","j":["face","mouth","open","smile","happy","joy","haha",":D",":)","funny"]},"grinning-face-with-smiling-eyes":{"a":"Grinning Face with Smiling Eyes","b":"1F604","j":["eye","face","mouth","open","smile","happy","joy","funny","haha","laugh","like",":D",":)"]},"beaming-face-with-smiling-eyes":{"a":"Beaming Face with Smiling Eyes","b":"1F601","j":["eye","face","grin","smile","happy","joy","kawaii"]},"grinning-squinting-face":{"a":"Grinning Squinting Face","b":"1F606","j":["face","laugh","mouth","satisfied","smile","happy","joy","lol","haha","glad","XD"]},"grinning-face-with-sweat":{"a":"Grinning Face with Sweat","b":"1F605","j":["cold","face","open","smile","sweat","hot","happy","laugh","relief"]},"rolling-on-the-floor-laughing":{"a":"Rolling on the Floor Laughing","b":"1F923","j":["face","floor","laugh","rofl","rolling","rotfl","laughing","lol","haha"]},"face-with-tears-of-joy":{"a":"Face with Tears of Joy","b":"1F602","j":["face","joy","laugh","tear","cry","tears","weep","happy","happytears","haha"]},"slightly-smiling-face":{"a":"Slightly Smiling Face","b":"1F642","j":["face","smile"]},"upsidedown-face":{"a":"Upside-Down Face","b":"1F643","j":["face","upside-down","upside_down_face","flipped","silly","smile"]},"winking-face":{"a":"Winking Face","b":"1F609","j":["face","wink","happy","mischievous","secret",";)","smile","eye"]},"smiling-face-with-smiling-eyes":{"a":"Smiling Face with Smiling Eyes","b":"1F60A","j":["blush","eye","face","smile","happy","flushed","crush","embarrassed","shy","joy"]},"smiling-face-with-halo":{"a":"Smiling Face with Halo","b":"1F607","j":["angel","face","fantasy","halo","innocent","heaven"]},"smiling-face-with-hearts":{"a":"Smiling Face with Hearts","b":"1F970","j":["adore","crush","hearts","in love","face","love","like","affection","valentines","infatuation"]},"smiling-face-with-hearteyes":{"a":"Smiling Face with Heart-Eyes","b":"1F60D","j":["eye","face","love","smile","smiling face with heart-eyes","smiling_face_with_heart_eyes","like","affection","valentines","infatuation","crush","heart"]},"starstruck":{"a":"Star-Struck","b":"1F929","j":["eyes","face","grinning","star","star-struck","starry-eyed","star_struck","smile","starry"]},"face-blowing-a-kiss":{"a":"Face Blowing a Kiss","b":"1F618","j":["face","kiss","love","like","affection","valentines","infatuation"]},"kissing-face":{"a":"Kissing Face","b":"1F617","j":["face","kiss","love","like","3","valentines","infatuation"]},"smiling-face":{"a":"Smiling Face","b":"263A","j":["face","outlined","relaxed","smile","blush","massage","happiness"]},"kissing-face-with-closed-eyes":{"a":"Kissing Face with Closed Eyes","b":"1F61A","j":["closed","eye","face","kiss","love","like","affection","valentines","infatuation"]},"kissing-face-with-smiling-eyes":{"a":"Kissing Face with Smiling Eyes","b":"1F619","j":["eye","face","kiss","smile","affection","valentines","infatuation"]},"smiling-face-with-tear":{"a":"Smiling Face with Tear","b":"1F972","j":["grateful","proud","relieved","smiling","tear","touched","sad","cry","pretend"]},"face-savoring-food":{"a":"Face Savoring Food","b":"1F60B","j":["delicious","face","savouring","smile","yum","happy","joy","tongue","silly","yummy","nom"]},"face-with-tongue":{"a":"Face with Tongue","b":"1F61B","j":["face","tongue","prank","childish","playful","mischievous","smile"]},"winking-face-with-tongue":{"a":"Winking Face with Tongue","b":"1F61C","j":["eye","face","joke","tongue","wink","prank","childish","playful","mischievous","smile"]},"zany-face":{"a":"Zany Face","b":"1F92A","j":["eye","goofy","large","small","face","crazy"]},"squinting-face-with-tongue":{"a":"Squinting Face with Tongue","b":"1F61D","j":["eye","face","horrible","taste","tongue","prank","playful","mischievous","smile"]},"moneymouth-face":{"a":"Money-Mouth Face","b":"1F911","j":["face","money","money-mouth face","mouth","money_mouth_face","rich","dollar"]},"hugging-face":{"a":"Hugging Face","b":"1F917","j":["face","hug","hugging","smile"]},"face-with-hand-over-mouth":{"a":"Face with Hand over Mouth","b":"1F92D","j":["whoops","shock","sudden realization","surprise","face"]},"shushing-face":{"a":"Shushing Face","b":"1F92B","j":["quiet","shush","face","shhh"]},"thinking-face":{"a":"Thinking Face","b":"1F914","j":["face","thinking","hmmm","think","consider"]},"zippermouth-face":{"a":"Zipper-Mouth Face","b":"1F910","j":["face","mouth","zipper","zipper-mouth face","zipper_mouth_face","sealed","secret"]},"face-with-raised-eyebrow":{"a":"Face with Raised Eyebrow","b":"1F928","j":["distrust","skeptic","disapproval","disbelief","mild surprise","scepticism","face","surprise"]},"neutral-face":{"a":"Neutral Face","b":"1F610","j":["deadpan","face","meh","neutral","indifference",":|"]},"expressionless-face":{"a":"Expressionless Face","b":"1F611","j":["expressionless","face","inexpressive","meh","unexpressive","indifferent","-_-","deadpan"]},"face-without-mouth":{"a":"Face Without Mouth","b":"1F636","j":["face","mouth","quiet","silent","hellokitty"]},"face-in-clouds":{"a":"⊛ Face in Clouds","b":"1F636-200D-1F32B-FE0F","j":["absentminded","face in clouds","face in the fog","head in clouds"]},"smirking-face":{"a":"Smirking Face","b":"1F60F","j":["face","smirk","smile","mean","prank","smug","sarcasm"]},"unamused-face":{"a":"Unamused Face","b":"1F612","j":["face","unamused","unhappy","indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","side_eye"]},"face-with-rolling-eyes":{"a":"Face with Rolling Eyes","b":"1F644","j":["eyeroll","eyes","face","rolling","frustrated"]},"grimacing-face":{"a":"Grimacing Face","b":"1F62C","j":["face","grimace","teeth"]},"face-exhaling":{"a":"⊛ Face Exhaling","b":"1F62E-200D-1F4A8","j":["exhale","face exhaling","gasp","groan","relief","whisper","whistle"]},"lying-face":{"a":"Lying Face","b":"1F925","j":["face","lie","pinocchio"]},"relieved-face":{"a":"Relieved Face","b":"1F60C","j":["face","relieved","relaxed","phew","massage","happiness"]},"pensive-face":{"a":"Pensive Face","b":"1F614","j":["dejected","face","pensive","sad","depressed","upset"]},"sleepy-face":{"a":"Sleepy Face","b":"1F62A","j":["face","sleep","tired","rest","nap"]},"drooling-face":{"a":"Drooling Face","b":"1F924","j":["drooling","face"]},"sleeping-face":{"a":"Sleeping Face","b":"1F634","j":["face","sleep","zzz","tired","sleepy","night"]},"face-with-medical-mask":{"a":"Face with Medical Mask","b":"1F637","j":["cold","doctor","face","mask","sick","ill","disease"]},"face-with-thermometer":{"a":"Face with Thermometer","b":"1F912","j":["face","ill","sick","thermometer","temperature","cold","fever"]},"face-with-headbandage":{"a":"Face with Head-Bandage","b":"1F915","j":["bandage","face","face with head-bandage","hurt","injury","face_with_head_bandage","injured","clumsy"]},"nauseated-face":{"a":"Nauseated Face","b":"1F922","j":["face","nauseated","vomit","gross","green","sick","throw up","ill"]},"face-vomiting":{"a":"Face Vomiting","b":"1F92E","j":["puke","sick","vomit","face"]},"sneezing-face":{"a":"Sneezing Face","b":"1F927","j":["face","gesundheit","sneeze","sick","allergy"]},"hot-face":{"a":"Hot Face","b":"1F975","j":["feverish","heat stroke","hot","red-faced","sweating","face","heat","red"]},"cold-face":{"a":"Cold Face","b":"1F976","j":["blue-faced","cold","freezing","frostbite","icicles","face","blue","frozen"]},"woozy-face":{"a":"Woozy Face","b":"1F974","j":["dizzy","intoxicated","tipsy","uneven eyes","wavy mouth","face","wavy"]},"knockedout-face":{"a":"Knocked-out Face","b":"1F635","j":["dead","face","knocked out","knocked-out face","dizzy_face","spent","unconscious","xox","dizzy"]},"face-with-spiral-eyes":{"a":"⊛ Face with Spiral Eyes","b":"1F635-200D-1F4AB","j":["dizzy","face with spiral eyes","hypnotized","spiral","trouble","whoa"]},"exploding-head":{"a":"Exploding Head","b":"1F92F","j":["mind blown","shocked","face","mind","blown"]},"cowboy-hat-face":{"a":"Cowboy Hat Face","b":"1F920","j":["cowboy","cowgirl","face","hat"]},"partying-face":{"a":"Partying Face","b":"1F973","j":["celebration","hat","horn","party","face","woohoo"]},"disguised-face":{"a":"Disguised Face","b":"1F978","j":["disguise","face","glasses","incognito","nose","pretent","brows","moustache"]},"smiling-face-with-sunglasses":{"a":"Smiling Face with Sunglasses","b":"1F60E","j":["bright","cool","face","sun","sunglasses","smile","summer","beach","sunglass"]},"nerd-face":{"a":"Nerd Face","b":"1F913","j":["face","geek","nerd","nerdy","dork"]},"face-with-monocle":{"a":"Face with Monocle","b":"1F9D0","j":["stuffy","wealthy","face"]},"confused-face":{"a":"Confused Face","b":"1F615","j":["confused","face","meh","indifference","huh","weird","hmmm",":/"]},"worried-face":{"a":"Worried Face","b":"1F61F","j":["face","worried","concern","nervous",":("]},"slightly-frowning-face":{"a":"Slightly Frowning Face","b":"1F641","j":["face","frown","frowning","disappointed","sad","upset"]},"frowning-face":{"a":"Frowning Face","b":"2639","j":["face","frown","sad","upset"]},"face-with-open-mouth":{"a":"Face with Open Mouth","b":"1F62E","j":["face","mouth","open","sympathy","surprise","impressed","wow","whoa",":O"]},"hushed-face":{"a":"Hushed Face","b":"1F62F","j":["face","hushed","stunned","surprised","woo","shh"]},"astonished-face":{"a":"Astonished Face","b":"1F632","j":["astonished","face","shocked","totally","xox","surprised","poisoned"]},"flushed-face":{"a":"Flushed Face","b":"1F633","j":["dazed","face","flushed","blush","shy","flattered"]},"pleading-face":{"a":"Pleading Face","b":"1F97A","j":["begging","mercy","puppy eyes","face"]},"frowning-face-with-open-mouth":{"a":"Frowning Face with Open Mouth","b":"1F626","j":["face","frown","mouth","open","aw","what"]},"anguished-face":{"a":"Anguished Face","b":"1F627","j":["anguished","face","stunned","nervous"]},"fearful-face":{"a":"Fearful Face","b":"1F628","j":["face","fear","fearful","scared","terrified","nervous","oops","huh"]},"anxious-face-with-sweat":{"a":"Anxious Face with Sweat","b":"1F630","j":["blue","cold","face","rushed","sweat","nervous"]},"sad-but-relieved-face":{"a":"Sad but Relieved Face","b":"1F625","j":["disappointed","face","relieved","whew","phew","sweat","nervous"]},"crying-face":{"a":"Crying Face","b":"1F622","j":["cry","face","sad","tear","tears","depressed","upset",":'("]},"loudly-crying-face":{"a":"Loudly Crying Face","b":"1F62D","j":["cry","face","sad","sob","tear","tears","upset","depressed"]},"face-screaming-in-fear":{"a":"Face Screaming in Fear","b":"1F631","j":["face","fear","munch","scared","scream","omg"]},"confounded-face":{"a":"Confounded Face","b":"1F616","j":["confounded","face","confused","sick","unwell","oops",":S"]},"persevering-face":{"a":"Persevering Face","b":"1F623","j":["face","persevere","sick","no","upset","oops"]},"disappointed-face":{"a":"Disappointed Face","b":"1F61E","j":["disappointed","face","sad","upset","depressed",":("]},"downcast-face-with-sweat":{"a":"Downcast Face with Sweat","b":"1F613","j":["cold","face","sweat","hot","sad","tired","exercise"]},"weary-face":{"a":"Weary Face","b":"1F629","j":["face","tired","weary","sleepy","sad","frustrated","upset"]},"tired-face":{"a":"Tired Face","b":"1F62B","j":["face","tired","sick","whine","upset","frustrated"]},"yawning-face":{"a":"Yawning Face","b":"1F971","j":["bored","tired","yawn","sleepy",""]},"face-with-steam-from-nose":{"a":"Face with Steam From Nose","b":"1F624","j":["face","triumph","won","gas","phew","proud","pride"]},"pouting-face":{"a":"Pouting Face","b":"1F621","j":["angry","face","mad","pouting","rage","red","hate","despise"]},"angry-face":{"a":"Angry Face","b":"1F620","j":["anger","angry","face","mad","annoyed","frustrated"]},"face-with-symbols-on-mouth":{"a":"Face with Symbols on Mouth","b":"1F92C","j":["swearing","cursing","face","cussing","profanity","expletive"]},"smiling-face-with-horns":{"a":"Smiling Face with Horns","b":"1F608","j":["face","fairy tale","fantasy","horns","smile","devil"]},"angry-face-with-horns":{"a":"Angry Face with Horns","b":"1F47F","j":["demon","devil","face","fantasy","imp","angry","horns"]},"skull":{"a":"Skull","b":"1F480","j":["death","face","fairy tale","monster","dead","skeleton","creepy"]},"skull-and-crossbones":{"a":"Skull and Crossbones","b":"2620","j":["crossbones","death","face","monster","skull","poison","danger","deadly","scary","pirate","evil"]},"pile-of-poo":{"a":"Pile of Poo","b":"1F4A9","j":["dung","face","monster","poo","poop","hankey","shitface","fail","turd","shit"]},"clown-face":{"a":"Clown Face","b":"1F921","j":["clown","face"]},"ogre":{"a":"Ogre","b":"1F479","j":["creature","face","fairy tale","fantasy","monster","troll","red","mask","halloween","scary","creepy","devil","demon","japanese"]},"goblin":{"a":"Goblin","b":"1F47A","j":["creature","face","fairy tale","fantasy","monster","red","evil","mask","scary","creepy","japanese"]},"ghost":{"a":"Ghost","b":"1F47B","j":["creature","face","fairy tale","fantasy","monster","halloween","spooky","scary"]},"alien":{"a":"Alien","b":"1F47D","j":["creature","extraterrestrial","face","fantasy","ufo","UFO","paul","weird","outer_space"]},"alien-monster":{"a":"Alien Monster","b":"1F47E","j":["alien","creature","extraterrestrial","face","monster","ufo","game","arcade","play"]},"robot":{"a":"Robot","b":"1F916","j":["face","monster","computer","machine","bot"]},"grinning-cat":{"a":"Grinning Cat","b":"1F63A","j":["cat","face","grinning","mouth","open","smile","animal","cats","happy"]},"grinning-cat-with-smiling-eyes":{"a":"Grinning Cat with Smiling Eyes","b":"1F638","j":["cat","eye","face","grin","smile","animal","cats"]},"cat-with-tears-of-joy":{"a":"Cat with Tears of Joy","b":"1F639","j":["cat","face","joy","tear","animal","cats","haha","happy","tears"]},"smiling-cat-with-hearteyes":{"a":"Smiling Cat with Heart-Eyes","b":"1F63B","j":["cat","eye","face","heart","love","smile","smiling cat with heart-eyes","smiling_cat_with_heart_eyes","animal","like","affection","cats","valentines"]},"cat-with-wry-smile":{"a":"Cat with Wry Smile","b":"1F63C","j":["cat","face","ironic","smile","wry","animal","cats","smirk"]},"kissing-cat":{"a":"Kissing Cat","b":"1F63D","j":["cat","eye","face","kiss","animal","cats"]},"weary-cat":{"a":"Weary Cat","b":"1F640","j":["cat","face","oh","surprised","weary","animal","cats","munch","scared","scream"]},"crying-cat":{"a":"Crying Cat","b":"1F63F","j":["cat","cry","face","sad","tear","animal","tears","weep","cats","upset"]},"pouting-cat":{"a":"Pouting Cat","b":"1F63E","j":["cat","face","pouting","animal","cats"]},"seenoevil-monkey":{"a":"See-No-Evil Monkey","b":"1F648","j":["evil","face","forbidden","monkey","see","see-no-evil monkey","see_no_evil_monkey","animal","nature","haha"]},"hearnoevil-monkey":{"a":"Hear-No-Evil Monkey","b":"1F649","j":["evil","face","forbidden","hear","hear-no-evil monkey","monkey","hear_no_evil_monkey","animal","nature"]},"speaknoevil-monkey":{"a":"Speak-No-Evil Monkey","b":"1F64A","j":["evil","face","forbidden","monkey","speak","speak-no-evil monkey","speak_no_evil_monkey","animal","nature","omg"]},"kiss-mark":{"a":"Kiss Mark","b":"1F48B","j":["kiss","lips","face","love","like","affection","valentines"]},"love-letter":{"a":"Love Letter","b":"1F48C","j":["heart","letter","love","mail","email","like","affection","envelope","valentines"]},"heart-with-arrow":{"a":"Heart with Arrow","b":"1F498","j":["arrow","cupid","love","like","heart","affection","valentines"]},"heart-with-ribbon":{"a":"Heart with Ribbon","b":"1F49D","j":["ribbon","valentine","love","valentines"]},"sparkling-heart":{"a":"Sparkling Heart","b":"1F496","j":["excited","sparkle","love","like","affection","valentines"]},"growing-heart":{"a":"Growing Heart","b":"1F497","j":["excited","growing","nervous","pulse","like","love","affection","valentines","pink"]},"beating-heart":{"a":"Beating Heart","b":"1F493","j":["beating","heartbeat","pulsating","love","like","affection","valentines","pink","heart"]},"revolving-hearts":{"a":"Revolving Hearts","b":"1F49E","j":["revolving","love","like","affection","valentines"]},"two-hearts":{"a":"Two Hearts","b":"1F495","j":["love","like","affection","valentines","heart"]},"heart-decoration":{"a":"Heart Decoration","b":"1F49F","j":["heart","purple-square","love","like"]},"heart-exclamation":{"a":"Heart Exclamation","b":"2763","j":["exclamation","mark","punctuation","decoration","love"]},"broken-heart":{"a":"Broken Heart","b":"1F494","j":["break","broken","sad","sorry","heart","heartbreak"]},"heart-on-fire":{"a":"⊛ Heart on Fire","b":"2764-FE0F-200D-1F525","j":["burn","heart","heart on fire","love","lust","sacred heart"]},"mending-heart":{"a":"⊛ Mending Heart","b":"2764-FE0F-200D-1FA79","j":["healthier","improving","mending","mending heart","recovering","recuperating","well"]},"red-heart":{"a":"Red Heart","b":"2764","j":["heart","love","like","valentines"]},"orange-heart":{"a":"Orange Heart","b":"1F9E1","j":["orange","love","like","affection","valentines"]},"yellow-heart":{"a":"Yellow Heart","b":"1F49B","j":["yellow","love","like","affection","valentines"]},"green-heart":{"a":"Green Heart","b":"1F49A","j":["green","love","like","affection","valentines"]},"blue-heart":{"a":"Blue Heart","b":"1F499","j":["blue","love","like","affection","valentines"]},"purple-heart":{"a":"Purple Heart","b":"1F49C","j":["purple","love","like","affection","valentines"]},"brown-heart":{"a":"Brown Heart","b":"1F90E","j":["brown","heart","coffee"]},"black-heart":{"a":"Black Heart","b":"1F5A4","j":["black","evil","wicked"]},"white-heart":{"a":"White Heart","b":"1F90D","j":["heart","white","pure"]},"hundred-points":{"a":"Hundred Points","b":"1F4AF","j":["100","full","hundred","score","perfect","numbers","century","exam","quiz","test","pass"]},"anger-symbol":{"a":"Anger Symbol","b":"1F4A2","j":["angry","comic","mad"]},"collision":{"a":"Collision","b":"1F4A5","j":["boom","comic","bomb","explode","explosion","blown"]},"dizzy":{"a":"Dizzy","b":"1F4AB","j":["comic","star","sparkle","shoot","magic"]},"sweat-droplets":{"a":"Sweat Droplets","b":"1F4A6","j":["comic","splashing","sweat","water","drip","oops"]},"dashing-away":{"a":"Dashing Away","b":"1F4A8","j":["comic","dash","running","wind","air","fast","shoo","fart","smoke","puff"]},"hole":{"a":"Hole","b":"1F573","j":["embarrassing"]},"bomb":{"a":"Bomb","b":"1F4A3","j":["comic","boom","explode","explosion","terrorism"]},"speech-balloon":{"a":"Speech Balloon","b":"1F4AC","j":["balloon","bubble","comic","dialog","speech","words","message","talk","chatting"]},"eye-in-speech-bubble":{"a":"Eye in Speech Bubble","b":"1F441-FE0F-200D-1F5E8-FE0F","j":["eye","speech bubble","witness","info"]},"left-speech-bubble":{"a":"Left Speech Bubble","b":"1F5E8","j":["dialog","speech","words","message","talk","chatting"]},"right-anger-bubble":{"a":"Right Anger Bubble","b":"1F5EF","j":["angry","balloon","bubble","mad","caption","speech","thinking"]},"thought-balloon":{"a":"Thought Balloon","b":"1F4AD","j":["balloon","bubble","comic","thought","cloud","speech","thinking","dream"]},"zzz":{"a":"Zzz","b":"1F4A4","j":["comic","sleep","sleepy","tired","dream"]},"waving-hand":{"a":"Waving Hand","b":"1F44B","j":["hand","wave","waving","hands","gesture","goodbye","solong","farewell","hello","hi","palm"]},"raised-back-of-hand":{"a":"Raised Back of Hand","b":"1F91A","j":["backhand","raised","fingers"]},"hand-with-fingers-splayed":{"a":"Hand with Fingers Splayed","b":"1F590","j":["finger","hand","splayed","fingers","palm"]},"raised-hand":{"a":"Raised Hand","b":"270B","j":["hand","high 5","high five","fingers","stop","highfive","palm","ban"]},"vulcan-salute":{"a":"Vulcan Salute","b":"1F596","j":["finger","hand","spock","vulcan","fingers","star trek"]},"ok-hand":{"a":"Ok Hand","b":"1F44C","j":["hand","OK","fingers","limbs","perfect","ok","okay"]},"pinched-fingers":{"a":"Pinched Fingers","b":"1F90C","j":["fingers","hand gesture","interrogation","pinched","sarcastic","size","tiny","small"]},"pinching-hand":{"a":"Pinching Hand","b":"1F90F","j":["small amount","tiny","small","size"]},"victory-hand":{"a":"Victory Hand","b":"270C","j":["hand","v","victory","fingers","ohyeah","peace","two"]},"crossed-fingers":{"a":"Crossed Fingers","b":"1F91E","j":["cross","finger","hand","luck","good","lucky"]},"loveyou-gesture":{"a":"Love-You Gesture","b":"1F91F","j":["hand","ILY","love-you gesture","love_you_gesture","fingers","gesture"]},"sign-of-the-horns":{"a":"Sign of the Horns","b":"1F918","j":["finger","hand","horns","rock-on","fingers","evil_eye","sign_of_horns","rock_on"]},"call-me-hand":{"a":"Call Me Hand","b":"1F919","j":["call","hand","hands","gesture"]},"backhand-index-pointing-left":{"a":"Backhand Index Pointing Left","b":"1F448","j":["backhand","finger","hand","index","point","direction","fingers","left"]},"backhand-index-pointing-right":{"a":"Backhand Index Pointing Right","b":"1F449","j":["backhand","finger","hand","index","point","fingers","direction","right"]},"backhand-index-pointing-up":{"a":"Backhand Index Pointing Up","b":"1F446","j":["backhand","finger","hand","point","up","fingers","direction"]},"middle-finger":{"a":"Middle Finger","b":"1F595","j":["finger","hand","fingers","rude","middle","flipping"]},"backhand-index-pointing-down":{"a":"Backhand Index Pointing Down","b":"1F447","j":["backhand","down","finger","hand","point","fingers","direction"]},"index-pointing-up":{"a":"Index Pointing Up","b":"261D","j":["finger","hand","index","point","up","fingers","direction"]},"thumbs-up":{"a":"Thumbs Up","b":"1F44D","j":["+1","hand","thumb","up","thumbsup","yes","awesome","good","agree","accept","cool","like"]},"thumbs-down":{"a":"Thumbs Down","b":"1F44E","j":["-1","down","hand","thumb","thumbsdown","no","dislike"]},"raised-fist":{"a":"Raised Fist","b":"270A","j":["clenched","fist","hand","punch","fingers","grasp"]},"oncoming-fist":{"a":"Oncoming Fist","b":"1F44A","j":["clenched","fist","hand","punch","angry","violence","hit","attack"]},"leftfacing-fist":{"a":"Left-Facing Fist","b":"1F91B","j":["fist","left-facing fist","leftwards","left_facing_fist","hand","fistbump"]},"rightfacing-fist":{"a":"Right-Facing Fist","b":"1F91C","j":["fist","right-facing fist","rightwards","right_facing_fist","hand","fistbump"]},"clapping-hands":{"a":"Clapping Hands","b":"1F44F","j":["clap","hand","hands","praise","applause","congrats","yay"]},"raising-hands":{"a":"Raising Hands","b":"1F64C","j":["celebration","gesture","hand","hooray","raised","yea","hands"]},"open-hands":{"a":"Open Hands","b":"1F450","j":["hand","open","fingers","butterfly","hands"]},"palms-up-together":{"a":"Palms Up Together","b":"1F932","j":["prayer","cupped hands","hands","gesture","cupped"]},"handshake":{"a":"Handshake","b":"1F91D","j":["agreement","hand","meeting","shake"]},"folded-hands":{"a":"Folded Hands","b":"1F64F","j":["ask","hand","high 5","high five","please","pray","thanks","hope","wish","namaste","highfive"]},"writing-hand":{"a":"Writing Hand","b":"270D","j":["hand","write","lower_left_ballpoint_pen","stationery","compose"]},"nail-polish":{"a":"Nail Polish","b":"1F485","j":["care","cosmetics","manicure","nail","polish","beauty","finger","fashion"]},"selfie":{"a":"Selfie","b":"1F933","j":["camera","phone"]},"flexed-biceps":{"a":"Flexed Biceps","b":"1F4AA","j":["biceps","comic","flex","muscle","arm","hand","summer","strong"]},"mechanical-arm":{"a":"Mechanical Arm","b":"1F9BE","j":["accessibility","prosthetic"]},"mechanical-leg":{"a":"Mechanical Leg","b":"1F9BF","j":["accessibility","prosthetic"]},"leg":{"a":"Leg","b":"1F9B5","j":["kick","limb"]},"foot":{"a":"Foot","b":"1F9B6","j":["kick","stomp"]},"ear":{"a":"Ear","b":"1F442","j":["body","face","hear","sound","listen"]},"ear-with-hearing-aid":{"a":"Ear with Hearing Aid","b":"1F9BB","j":["accessibility","hard of hearing"]},"nose":{"a":"Nose","b":"1F443","j":["body","smell","sniff"]},"brain":{"a":"Brain","b":"1F9E0","j":["intelligent","smart"]},"anatomical-heart":{"a":"Anatomical Heart","b":"1FAC0","j":["anatomical","cardiology","heart","organ","pulse","health","heartbeat"]},"lungs":{"a":"Lungs","b":"1FAC1","j":["breath","exhalation","inhalation","organ","respiration","breathe"]},"tooth":{"a":"Tooth","b":"1F9B7","j":["dentist","teeth"]},"bone":{"a":"Bone","b":"1F9B4","j":["skeleton"]},"eyes":{"a":"Eyes","b":"1F440","j":["eye","face","look","watch","stalk","peek","see"]},"eye":{"a":"Eye","b":"1F441","j":["body","face","look","see","watch","stare"]},"tongue":{"a":"Tongue","b":"1F445","j":["body","mouth","playful"]},"mouth":{"a":"Mouth","b":"1F444","j":["lips","kiss"]},"baby":{"a":"Baby","b":"1F476","j":["young","child","boy","girl","toddler"]},"child":{"a":"Child","b":"1F9D2","j":["gender-neutral","unspecified gender","young"]},"boy":{"a":"Boy","b":"1F466","j":["young","man","male","guy","teenager"]},"girl":{"a":"Girl","b":"1F467","j":["Virgo","young","zodiac","female","woman","teenager"]},"person":{"a":"Person","b":"1F9D1","j":["adult","gender-neutral","unspecified gender"]},"person-blond-hair":{"a":"Person: Blond Hair","b":"1F471","j":["blond","blond-haired person","hair","person: blond hair","hairstyle"]},"man":{"a":"Man","b":"1F468","j":["adult","mustache","father","dad","guy","classy","sir","moustache"]},"person-beard":{"a":"Person: Beard","b":"1F9D4","j":["beard","person","person: beard","bewhiskered","man_beard"]},"man-beard":{"a":"⊛ Man: Beard","b":"1F9D4-200D-2642-FE0F","j":["beard","man","man: beard"]},"woman-beard":{"a":"⊛ Woman: Beard","b":"1F9D4-200D-2640-FE0F","j":["beard","woman","woman: beard"]},"man-red-hair":{"a":"Man: Red Hair","b":"1F468-200D-1F9B0","j":["adult","man","red hair","hairstyle"]},"man-curly-hair":{"a":"Man: Curly Hair","b":"1F468-200D-1F9B1","j":["adult","curly hair","man","hairstyle"]},"man-white-hair":{"a":"Man: White Hair","b":"1F468-200D-1F9B3","j":["adult","man","white hair","old","elder"]},"man-bald":{"a":"Man: Bald","b":"1F468-200D-1F9B2","j":["adult","bald","man","hairless"]},"woman":{"a":"Woman","b":"1F469","j":["adult","female","girls","lady"]},"woman-red-hair":{"a":"Woman: Red Hair","b":"1F469-200D-1F9B0","j":["adult","red hair","woman","hairstyle"]},"person-red-hair":{"a":"Person: Red Hair","b":"1F9D1-200D-1F9B0","j":["adult","gender-neutral","person","red hair","unspecified gender","hairstyle"]},"woman-curly-hair":{"a":"Woman: Curly Hair","b":"1F469-200D-1F9B1","j":["adult","curly hair","woman","hairstyle"]},"person-curly-hair":{"a":"Person: Curly Hair","b":"1F9D1-200D-1F9B1","j":["adult","curly hair","gender-neutral","person","unspecified gender","hairstyle"]},"woman-white-hair":{"a":"Woman: White Hair","b":"1F469-200D-1F9B3","j":["adult","white hair","woman","old","elder"]},"person-white-hair":{"a":"Person: White Hair","b":"1F9D1-200D-1F9B3","j":["adult","gender-neutral","person","unspecified gender","white hair","elder","old"]},"woman-bald":{"a":"Woman: Bald","b":"1F469-200D-1F9B2","j":["adult","bald","woman","hairless"]},"person-bald":{"a":"Person: Bald","b":"1F9D1-200D-1F9B2","j":["adult","bald","gender-neutral","person","unspecified gender","hairless"]},"woman-blond-hair":{"a":"Woman: Blond Hair","b":"1F471-200D-2640-FE0F","j":["blond-haired woman","blonde","hair","woman","woman: blond hair","female","girl","person"]},"man-blond-hair":{"a":"Man: Blond Hair","b":"1F471-200D-2642-FE0F","j":["blond","blond-haired man","hair","man","man: blond hair","male","boy","blonde","guy","person"]},"older-person":{"a":"Older Person","b":"1F9D3","j":["adult","gender-neutral","old","unspecified gender","human","elder","senior"]},"old-man":{"a":"Old Man","b":"1F474","j":["adult","man","old","human","male","men","elder","senior"]},"old-woman":{"a":"Old Woman","b":"1F475","j":["adult","old","woman","human","female","women","lady","elder","senior"]},"person-frowning":{"a":"Person Frowning","b":"1F64D","j":["frown","gesture","worried"]},"man-frowning":{"a":"Man Frowning","b":"1F64D-200D-2642-FE0F","j":["frowning","gesture","man","male","boy","sad","depressed","discouraged","unhappy"]},"woman-frowning":{"a":"Woman Frowning","b":"1F64D-200D-2640-FE0F","j":["frowning","gesture","woman","female","girl","sad","depressed","discouraged","unhappy"]},"person-pouting":{"a":"Person Pouting","b":"1F64E","j":["gesture","pouting","upset"]},"man-pouting":{"a":"Man Pouting","b":"1F64E-200D-2642-FE0F","j":["gesture","man","pouting","male","boy"]},"woman-pouting":{"a":"Woman Pouting","b":"1F64E-200D-2640-FE0F","j":["gesture","pouting","woman","female","girl"]},"person-gesturing-no":{"a":"Person Gesturing No","b":"1F645","j":["forbidden","gesture","hand","person gesturing NO","prohibited","decline"]},"man-gesturing-no":{"a":"Man Gesturing No","b":"1F645-200D-2642-FE0F","j":["forbidden","gesture","hand","man","man gesturing NO","prohibited","male","boy","nope"]},"woman-gesturing-no":{"a":"Woman Gesturing No","b":"1F645-200D-2640-FE0F","j":["forbidden","gesture","hand","prohibited","woman","woman gesturing NO","female","girl","nope"]},"person-gesturing-ok":{"a":"Person Gesturing Ok","b":"1F646","j":["gesture","hand","OK","person gesturing OK","agree"]},"man-gesturing-ok":{"a":"Man Gesturing Ok","b":"1F646-200D-2642-FE0F","j":["gesture","hand","man","man gesturing OK","OK","men","boy","male","blue","human"]},"woman-gesturing-ok":{"a":"Woman Gesturing Ok","b":"1F646-200D-2640-FE0F","j":["gesture","hand","OK","woman","woman gesturing OK","women","girl","female","pink","human"]},"person-tipping-hand":{"a":"Person Tipping Hand","b":"1F481","j":["hand","help","information","sassy","tipping"]},"man-tipping-hand":{"a":"Man Tipping Hand","b":"1F481-200D-2642-FE0F","j":["man","sassy","tipping hand","male","boy","human","information"]},"woman-tipping-hand":{"a":"Woman Tipping Hand","b":"1F481-200D-2640-FE0F","j":["sassy","tipping hand","woman","female","girl","human","information"]},"person-raising-hand":{"a":"Person Raising Hand","b":"1F64B","j":["gesture","hand","happy","raised","question"]},"man-raising-hand":{"a":"Man Raising Hand","b":"1F64B-200D-2642-FE0F","j":["gesture","man","raising hand","male","boy"]},"woman-raising-hand":{"a":"Woman Raising Hand","b":"1F64B-200D-2640-FE0F","j":["gesture","raising hand","woman","female","girl"]},"deaf-person":{"a":"Deaf Person","b":"1F9CF","j":["accessibility","deaf","ear","hear"]},"deaf-man":{"a":"Deaf Man","b":"1F9CF-200D-2642-FE0F","j":["deaf","man","accessibility"]},"deaf-woman":{"a":"Deaf Woman","b":"1F9CF-200D-2640-FE0F","j":["deaf","woman","accessibility"]},"person-bowing":{"a":"Person Bowing","b":"1F647","j":["apology","bow","gesture","sorry","respectiful"]},"man-bowing":{"a":"Man Bowing","b":"1F647-200D-2642-FE0F","j":["apology","bowing","favor","gesture","man","sorry","male","boy"]},"woman-bowing":{"a":"Woman Bowing","b":"1F647-200D-2640-FE0F","j":["apology","bowing","favor","gesture","sorry","woman","female","girl"]},"person-facepalming":{"a":"Person Facepalming","b":"1F926","j":["disbelief","exasperation","face","palm","disappointed"]},"man-facepalming":{"a":"Man Facepalming","b":"1F926-200D-2642-FE0F","j":["disbelief","exasperation","facepalm","man","male","boy"]},"woman-facepalming":{"a":"Woman Facepalming","b":"1F926-200D-2640-FE0F","j":["disbelief","exasperation","facepalm","woman","female","girl"]},"person-shrugging":{"a":"Person Shrugging","b":"1F937","j":["doubt","ignorance","indifference","shrug","regardless"]},"man-shrugging":{"a":"Man Shrugging","b":"1F937-200D-2642-FE0F","j":["doubt","ignorance","indifference","man","shrug","male","boy","confused","indifferent"]},"woman-shrugging":{"a":"Woman Shrugging","b":"1F937-200D-2640-FE0F","j":["doubt","ignorance","indifference","shrug","woman","female","girl","confused","indifferent"]},"health-worker":{"a":"Health Worker","b":"1F9D1-200D-2695-FE0F","j":["doctor","healthcare","nurse","therapist","hospital"]},"man-health-worker":{"a":"Man Health Worker","b":"1F468-200D-2695-FE0F","j":["doctor","healthcare","man","nurse","therapist","human"]},"woman-health-worker":{"a":"Woman Health Worker","b":"1F469-200D-2695-FE0F","j":["doctor","healthcare","nurse","therapist","woman","human"]},"student":{"a":"Student","b":"1F9D1-200D-1F393","j":["graduate","learn"]},"man-student":{"a":"Man Student","b":"1F468-200D-1F393","j":["graduate","man","student","human"]},"woman-student":{"a":"Woman Student","b":"1F469-200D-1F393","j":["graduate","student","woman","human"]},"teacher":{"a":"Teacher","b":"1F9D1-200D-1F3EB","j":["instructor","professor"]},"man-teacher":{"a":"Man Teacher","b":"1F468-200D-1F3EB","j":["instructor","man","professor","teacher","human"]},"woman-teacher":{"a":"Woman Teacher","b":"1F469-200D-1F3EB","j":["instructor","professor","teacher","woman","human"]},"judge":{"a":"Judge","b":"1F9D1-200D-2696-FE0F","j":["justice","scales","law"]},"man-judge":{"a":"Man Judge","b":"1F468-200D-2696-FE0F","j":["judge","justice","man","scales","court","human"]},"woman-judge":{"a":"Woman Judge","b":"1F469-200D-2696-FE0F","j":["judge","justice","scales","woman","court","human"]},"farmer":{"a":"Farmer","b":"1F9D1-200D-1F33E","j":["gardener","rancher","crops"]},"man-farmer":{"a":"Man Farmer","b":"1F468-200D-1F33E","j":["farmer","gardener","man","rancher","human"]},"woman-farmer":{"a":"Woman Farmer","b":"1F469-200D-1F33E","j":["farmer","gardener","rancher","woman","human"]},"cook":{"a":"Cook","b":"1F9D1-200D-1F373","j":["chef","food","kitchen","culinary"]},"man-cook":{"a":"Man Cook","b":"1F468-200D-1F373","j":["chef","cook","man","human"]},"woman-cook":{"a":"Woman Cook","b":"1F469-200D-1F373","j":["chef","cook","woman","human"]},"mechanic":{"a":"Mechanic","b":"1F9D1-200D-1F527","j":["electrician","plumber","tradesperson","worker","technician"]},"man-mechanic":{"a":"Man Mechanic","b":"1F468-200D-1F527","j":["electrician","man","mechanic","plumber","tradesperson","human","wrench"]},"woman-mechanic":{"a":"Woman Mechanic","b":"1F469-200D-1F527","j":["electrician","mechanic","plumber","tradesperson","woman","human","wrench"]},"factory-worker":{"a":"Factory Worker","b":"1F9D1-200D-1F3ED","j":["assembly","factory","industrial","worker","labor"]},"man-factory-worker":{"a":"Man Factory Worker","b":"1F468-200D-1F3ED","j":["assembly","factory","industrial","man","worker","human"]},"woman-factory-worker":{"a":"Woman Factory Worker","b":"1F469-200D-1F3ED","j":["assembly","factory","industrial","woman","worker","human"]},"office-worker":{"a":"Office Worker","b":"1F9D1-200D-1F4BC","j":["architect","business","manager","white-collar"]},"man-office-worker":{"a":"Man Office Worker","b":"1F468-200D-1F4BC","j":["architect","business","man","manager","white-collar","human"]},"woman-office-worker":{"a":"Woman Office Worker","b":"1F469-200D-1F4BC","j":["architect","business","manager","white-collar","woman","human"]},"scientist":{"a":"Scientist","b":"1F9D1-200D-1F52C","j":["biologist","chemist","engineer","physicist","chemistry"]},"man-scientist":{"a":"Man Scientist","b":"1F468-200D-1F52C","j":["biologist","chemist","engineer","man","physicist","scientist","human"]},"woman-scientist":{"a":"Woman Scientist","b":"1F469-200D-1F52C","j":["biologist","chemist","engineer","physicist","scientist","woman","human"]},"technologist":{"a":"Technologist","b":"1F9D1-200D-1F4BB","j":["coder","developer","inventor","software","computer"]},"man-technologist":{"a":"Man Technologist","b":"1F468-200D-1F4BB","j":["coder","developer","inventor","man","software","technologist","engineer","programmer","human","laptop","computer"]},"woman-technologist":{"a":"Woman Technologist","b":"1F469-200D-1F4BB","j":["coder","developer","inventor","software","technologist","woman","engineer","programmer","human","laptop","computer"]},"singer":{"a":"Singer","b":"1F9D1-200D-1F3A4","j":["actor","entertainer","rock","star","song","artist","performer"]},"man-singer":{"a":"Man Singer","b":"1F468-200D-1F3A4","j":["actor","entertainer","man","rock","singer","star","rockstar","human"]},"woman-singer":{"a":"Woman Singer","b":"1F469-200D-1F3A4","j":["actor","entertainer","rock","singer","star","woman","rockstar","human"]},"artist":{"a":"Artist","b":"1F9D1-200D-1F3A8","j":["palette","painting","draw","creativity"]},"man-artist":{"a":"Man Artist","b":"1F468-200D-1F3A8","j":["artist","man","palette","painter","human"]},"woman-artist":{"a":"Woman Artist","b":"1F469-200D-1F3A8","j":["artist","palette","woman","painter","human"]},"pilot":{"a":"Pilot","b":"1F9D1-200D-2708-FE0F","j":["plane","fly","airplane"]},"man-pilot":{"a":"Man Pilot","b":"1F468-200D-2708-FE0F","j":["man","pilot","plane","aviator","human"]},"woman-pilot":{"a":"Woman Pilot","b":"1F469-200D-2708-FE0F","j":["pilot","plane","woman","aviator","human"]},"astronaut":{"a":"Astronaut","b":"1F9D1-200D-1F680","j":["rocket","outerspace"]},"man-astronaut":{"a":"Man Astronaut","b":"1F468-200D-1F680","j":["astronaut","man","rocket","space","human"]},"woman-astronaut":{"a":"Woman Astronaut","b":"1F469-200D-1F680","j":["astronaut","rocket","woman","space","human"]},"firefighter":{"a":"Firefighter","b":"1F9D1-200D-1F692","j":["firetruck","fire"]},"man-firefighter":{"a":"Man Firefighter","b":"1F468-200D-1F692","j":["firefighter","firetruck","man","fireman","human"]},"woman-firefighter":{"a":"Woman Firefighter","b":"1F469-200D-1F692","j":["firefighter","firetruck","woman","fireman","human"]},"police-officer":{"a":"Police Officer","b":"1F46E","j":["cop","officer","police"]},"man-police-officer":{"a":"Man Police Officer","b":"1F46E-200D-2642-FE0F","j":["cop","man","officer","police","law","legal","enforcement","arrest","911"]},"woman-police-officer":{"a":"Woman Police Officer","b":"1F46E-200D-2640-FE0F","j":["cop","officer","police","woman","law","legal","enforcement","arrest","911","female"]},"detective":{"a":"Detective","b":"1F575","j":["sleuth","spy","human"]},"man-detective":{"a":"Man Detective","b":"1F575-FE0F-200D-2642-FE0F","j":["detective","man","sleuth","spy","crime"]},"woman-detective":{"a":"Woman Detective","b":"1F575-FE0F-200D-2640-FE0F","j":["detective","sleuth","spy","woman","human","female"]},"guard":{"a":"Guard","b":"1F482","j":["protect"]},"man-guard":{"a":"Man Guard","b":"1F482-200D-2642-FE0F","j":["guard","man","uk","gb","british","male","guy","royal"]},"woman-guard":{"a":"Woman Guard","b":"1F482-200D-2640-FE0F","j":["guard","woman","uk","gb","british","female","royal"]},"ninja":{"a":"Ninja","b":"1F977","j":["fighter","hidden","stealth","ninjutsu","skills","japanese"]},"construction-worker":{"a":"Construction Worker","b":"1F477","j":["construction","hat","worker","labor","build"]},"man-construction-worker":{"a":"Man Construction Worker","b":"1F477-200D-2642-FE0F","j":["construction","man","worker","male","human","wip","guy","build","labor"]},"woman-construction-worker":{"a":"Woman Construction Worker","b":"1F477-200D-2640-FE0F","j":["construction","woman","worker","female","human","wip","build","labor"]},"prince":{"a":"Prince","b":"1F934","j":["boy","man","male","crown","royal","king"]},"princess":{"a":"Princess","b":"1F478","j":["fairy tale","fantasy","girl","woman","female","blond","crown","royal","queen"]},"person-wearing-turban":{"a":"Person Wearing Turban","b":"1F473","j":["turban","headdress"]},"man-wearing-turban":{"a":"Man Wearing Turban","b":"1F473-200D-2642-FE0F","j":["man","turban","male","indian","hinduism","arabs"]},"woman-wearing-turban":{"a":"Woman Wearing Turban","b":"1F473-200D-2640-FE0F","j":["turban","woman","female","indian","hinduism","arabs"]},"person-with-skullcap":{"a":"Person with Skullcap","b":"1F472","j":["cap","gua pi mao","hat","person","skullcap","man_with_skullcap","male","boy","chinese"]},"woman-with-headscarf":{"a":"Woman with Headscarf","b":"1F9D5","j":["headscarf","hijab","mantilla","tichel","bandana","head kerchief","female"]},"person-in-tuxedo":{"a":"Person in Tuxedo","b":"1F935","j":["groom","person","tuxedo","man_in_tuxedo","couple","marriage","wedding"]},"man-in-tuxedo":{"a":"Man in Tuxedo","b":"1F935-200D-2642-FE0F","j":["man","tuxedo","formal","fashion"]},"woman-in-tuxedo":{"a":"Woman in Tuxedo","b":"1F935-200D-2640-FE0F","j":["tuxedo","woman","formal","fashion"]},"person-with-veil":{"a":"Person with Veil","b":"1F470","j":["bride","person","veil","wedding","bride_with_veil","couple","marriage","woman"]},"man-with-veil":{"a":"Man with Veil","b":"1F470-200D-2642-FE0F","j":["man","veil","wedding","marriage"]},"woman-with-veil":{"a":"Woman with Veil","b":"1F470-200D-2640-FE0F","j":["veil","woman","wedding","marriage"]},"pregnant-woman":{"a":"Pregnant Woman","b":"1F930","j":["pregnant","woman","baby"]},"breastfeeding":{"a":"Breast-Feeding","b":"1F931","j":["baby","breast","breast-feeding","nursing","breast_feeding"]},"woman-feeding-baby":{"a":"Woman Feeding Baby","b":"1F469-200D-1F37C","j":["baby","feeding","nursing","woman","birth","food"]},"man-feeding-baby":{"a":"Man Feeding Baby","b":"1F468-200D-1F37C","j":["baby","feeding","man","nursing","birth","food"]},"person-feeding-baby":{"a":"Person Feeding Baby","b":"1F9D1-200D-1F37C","j":["baby","feeding","nursing","person","birth","food"]},"baby-angel":{"a":"Baby Angel","b":"1F47C","j":["angel","baby","face","fairy tale","fantasy","heaven","wings","halo"]},"santa-claus":{"a":"Santa Claus","b":"1F385","j":["celebration","Christmas","claus","father","santa","festival","man","male","xmas","father christmas"]},"mrs-claus":{"a":"Mrs. Claus","b":"1F936","j":["celebration","Christmas","claus","mother","Mrs.","woman","female","xmas","mother christmas"]},"mx-claus":{"a":"Mx Claus","b":"1F9D1-200D-1F384","j":["Claus, christmas","christmas"]},"superhero":{"a":"Superhero","b":"1F9B8","j":["good","hero","heroine","superpower","marvel"]},"man-superhero":{"a":"Man Superhero","b":"1F9B8-200D-2642-FE0F","j":["good","hero","man","superpower","male","superpowers"]},"woman-superhero":{"a":"Woman Superhero","b":"1F9B8-200D-2640-FE0F","j":["good","hero","heroine","superpower","woman","female","superpowers"]},"supervillain":{"a":"Supervillain","b":"1F9B9","j":["criminal","evil","superpower","villain","marvel"]},"man-supervillain":{"a":"Man Supervillain","b":"1F9B9-200D-2642-FE0F","j":["criminal","evil","man","superpower","villain","male","bad","hero","superpowers"]},"woman-supervillain":{"a":"Woman Supervillain","b":"1F9B9-200D-2640-FE0F","j":["criminal","evil","superpower","villain","woman","female","bad","heroine","superpowers"]},"mage":{"a":"Mage","b":"1F9D9","j":["sorcerer","sorceress","witch","wizard","magic"]},"man-mage":{"a":"Man Mage","b":"1F9D9-200D-2642-FE0F","j":["sorcerer","wizard","man","male","mage"]},"woman-mage":{"a":"Woman Mage","b":"1F9D9-200D-2640-FE0F","j":["sorceress","witch","woman","female","mage"]},"fairy":{"a":"Fairy","b":"1F9DA","j":["Oberon","Puck","Titania","wings","magical"]},"man-fairy":{"a":"Man Fairy","b":"1F9DA-200D-2642-FE0F","j":["Oberon","Puck","man","male"]},"woman-fairy":{"a":"Woman Fairy","b":"1F9DA-200D-2640-FE0F","j":["Titania","woman","female"]},"vampire":{"a":"Vampire","b":"1F9DB","j":["Dracula","undead","blood","twilight"]},"man-vampire":{"a":"Man Vampire","b":"1F9DB-200D-2642-FE0F","j":["Dracula","undead","man","male","dracula"]},"woman-vampire":{"a":"Woman Vampire","b":"1F9DB-200D-2640-FE0F","j":["undead","woman","female"]},"merperson":{"a":"Merperson","b":"1F9DC","j":["mermaid","merman","merwoman","sea"]},"merman":{"a":"Merman","b":"1F9DC-200D-2642-FE0F","j":["Triton","man","male","triton"]},"mermaid":{"a":"Mermaid","b":"1F9DC-200D-2640-FE0F","j":["merwoman","woman","female","ariel"]},"elf":{"a":"Elf","b":"1F9DD","j":["magical","LOTR style"]},"man-elf":{"a":"Man Elf","b":"1F9DD-200D-2642-FE0F","j":["magical","man","male"]},"woman-elf":{"a":"Woman Elf","b":"1F9DD-200D-2640-FE0F","j":["magical","woman","female"]},"genie":{"a":"Genie","b":"1F9DE","j":["djinn","(non-human color)","magical","wishes"]},"man-genie":{"a":"Man Genie","b":"1F9DE-200D-2642-FE0F","j":["djinn","man","male"]},"woman-genie":{"a":"Woman Genie","b":"1F9DE-200D-2640-FE0F","j":["djinn","woman","female"]},"zombie":{"a":"Zombie","b":"1F9DF","j":["undead","walking dead","(non-human color)","dead"]},"man-zombie":{"a":"Man Zombie","b":"1F9DF-200D-2642-FE0F","j":["undead","walking dead","man","male","dracula"]},"woman-zombie":{"a":"Woman Zombie","b":"1F9DF-200D-2640-FE0F","j":["undead","walking dead","woman","female"]},"person-getting-massage":{"a":"Person Getting Massage","b":"1F486","j":["face","massage","salon","relax"]},"man-getting-massage":{"a":"Man Getting Massage","b":"1F486-200D-2642-FE0F","j":["face","man","massage","male","boy","head"]},"woman-getting-massage":{"a":"Woman Getting Massage","b":"1F486-200D-2640-FE0F","j":["face","massage","woman","female","girl","head"]},"person-getting-haircut":{"a":"Person Getting Haircut","b":"1F487","j":["barber","beauty","haircut","parlor","hairstyle"]},"man-getting-haircut":{"a":"Man Getting Haircut","b":"1F487-200D-2642-FE0F","j":["haircut","man","male","boy"]},"woman-getting-haircut":{"a":"Woman Getting Haircut","b":"1F487-200D-2640-FE0F","j":["haircut","woman","female","girl"]},"person-walking":{"a":"Person Walking","b":"1F6B6","j":["hike","walk","walking","move"]},"man-walking":{"a":"Man Walking","b":"1F6B6-200D-2642-FE0F","j":["hike","man","walk","human","feet","steps"]},"woman-walking":{"a":"Woman Walking","b":"1F6B6-200D-2640-FE0F","j":["hike","walk","woman","human","feet","steps","female"]},"person-standing":{"a":"Person Standing","b":"1F9CD","j":["stand","standing","still"]},"man-standing":{"a":"Man Standing","b":"1F9CD-200D-2642-FE0F","j":["man","standing","still"]},"woman-standing":{"a":"Woman Standing","b":"1F9CD-200D-2640-FE0F","j":["standing","woman","still"]},"person-kneeling":{"a":"Person Kneeling","b":"1F9CE","j":["kneel","kneeling","pray","respectful"]},"man-kneeling":{"a":"Man Kneeling","b":"1F9CE-200D-2642-FE0F","j":["kneeling","man","pray","respectful"]},"woman-kneeling":{"a":"Woman Kneeling","b":"1F9CE-200D-2640-FE0F","j":["kneeling","woman","respectful","pray"]},"person-with-white-cane":{"a":"Person with White Cane","b":"1F9D1-200D-1F9AF","j":["accessibility","blind","person_with_probing_cane"]},"man-with-white-cane":{"a":"Man with White Cane","b":"1F468-200D-1F9AF","j":["accessibility","blind","man","man_with_probing_cane"]},"woman-with-white-cane":{"a":"Woman with White Cane","b":"1F469-200D-1F9AF","j":["accessibility","blind","woman","woman_with_probing_cane"]},"person-in-motorized-wheelchair":{"a":"Person in Motorized Wheelchair","b":"1F9D1-200D-1F9BC","j":["accessibility","wheelchair","disability"]},"man-in-motorized-wheelchair":{"a":"Man in Motorized Wheelchair","b":"1F468-200D-1F9BC","j":["accessibility","man","wheelchair","disability"]},"woman-in-motorized-wheelchair":{"a":"Woman in Motorized Wheelchair","b":"1F469-200D-1F9BC","j":["accessibility","wheelchair","woman","disability"]},"person-in-manual-wheelchair":{"a":"Person in Manual Wheelchair","b":"1F9D1-200D-1F9BD","j":["accessibility","wheelchair","disability"]},"man-in-manual-wheelchair":{"a":"Man in Manual Wheelchair","b":"1F468-200D-1F9BD","j":["accessibility","man","wheelchair","disability"]},"woman-in-manual-wheelchair":{"a":"Woman in Manual Wheelchair","b":"1F469-200D-1F9BD","j":["accessibility","wheelchair","woman","disability"]},"person-running":{"a":"Person Running","b":"1F3C3","j":["marathon","running","move"]},"man-running":{"a":"Man Running","b":"1F3C3-200D-2642-FE0F","j":["man","marathon","racing","running","walking","exercise","race"]},"woman-running":{"a":"Woman Running","b":"1F3C3-200D-2640-FE0F","j":["marathon","racing","running","woman","walking","exercise","race","female"]},"woman-dancing":{"a":"Woman Dancing","b":"1F483","j":["dance","dancing","woman","female","girl","fun"]},"man-dancing":{"a":"Man Dancing","b":"1F57A","j":["dance","dancing","man","male","boy","fun","dancer"]},"person-in-suit-levitating":{"a":"Person in Suit Levitating","b":"1F574","j":["business","person","suit","man_in_suit_levitating","levitate","hover","jump"]},"people-with-bunny-ears":{"a":"People with Bunny Ears","b":"1F46F","j":["bunny ear","dancer","partying","perform","costume"]},"men-with-bunny-ears":{"a":"Men with Bunny Ears","b":"1F46F-200D-2642-FE0F","j":["bunny ear","dancer","men","partying","male","bunny","boys"]},"women-with-bunny-ears":{"a":"Women with Bunny Ears","b":"1F46F-200D-2640-FE0F","j":["bunny ear","dancer","partying","women","female","bunny","girls"]},"person-in-steamy-room":{"a":"Person in Steamy Room","b":"1F9D6","j":["sauna","steam room","hamam","steambath","relax","spa"]},"man-in-steamy-room":{"a":"Man in Steamy Room","b":"1F9D6-200D-2642-FE0F","j":["sauna","steam room","male","man","spa","steamroom"]},"woman-in-steamy-room":{"a":"Woman in Steamy Room","b":"1F9D6-200D-2640-FE0F","j":["sauna","steam room","female","woman","spa","steamroom"]},"person-climbing":{"a":"Person Climbing","b":"1F9D7","j":["climber","sport"]},"man-climbing":{"a":"Man Climbing","b":"1F9D7-200D-2642-FE0F","j":["climber","sports","hobby","man","male","rock"]},"woman-climbing":{"a":"Woman Climbing","b":"1F9D7-200D-2640-FE0F","j":["climber","sports","hobby","woman","female","rock"]},"person-fencing":{"a":"Person Fencing","b":"1F93A","j":["fencer","fencing","sword","sports"]},"horse-racing":{"a":"Horse Racing","b":"1F3C7","j":["horse","jockey","racehorse","racing","animal","betting","competition","gambling","luck"]},"skier":{"a":"Skier","b":"26F7","j":["ski","snow","sports","winter"]},"snowboarder":{"a":"Snowboarder","b":"1F3C2","j":["ski","snow","snowboard","sports","winter"]},"person-golfing":{"a":"Person Golfing","b":"1F3CC","j":["ball","golf","sports","business"]},"man-golfing":{"a":"Man Golfing","b":"1F3CC-FE0F-200D-2642-FE0F","j":["golf","man","sport"]},"woman-golfing":{"a":"Woman Golfing","b":"1F3CC-FE0F-200D-2640-FE0F","j":["golf","woman","sports","business","female"]},"person-surfing":{"a":"Person Surfing","b":"1F3C4","j":["surfing","sport","sea"]},"man-surfing":{"a":"Man Surfing","b":"1F3C4-200D-2642-FE0F","j":["man","surfing","sports","ocean","sea","summer","beach"]},"woman-surfing":{"a":"Woman Surfing","b":"1F3C4-200D-2640-FE0F","j":["surfing","woman","sports","ocean","sea","summer","beach","female"]},"person-rowing-boat":{"a":"Person Rowing Boat","b":"1F6A3","j":["boat","rowboat","sport","move"]},"man-rowing-boat":{"a":"Man Rowing Boat","b":"1F6A3-200D-2642-FE0F","j":["boat","man","rowboat","sports","hobby","water","ship"]},"woman-rowing-boat":{"a":"Woman Rowing Boat","b":"1F6A3-200D-2640-FE0F","j":["boat","rowboat","woman","sports","hobby","water","ship","female"]},"person-swimming":{"a":"Person Swimming","b":"1F3CA","j":["swim","sport","pool"]},"man-swimming":{"a":"Man Swimming","b":"1F3CA-200D-2642-FE0F","j":["man","swim","sports","exercise","human","athlete","water","summer"]},"woman-swimming":{"a":"Woman Swimming","b":"1F3CA-200D-2640-FE0F","j":["swim","woman","sports","exercise","human","athlete","water","summer","female"]},"person-bouncing-ball":{"a":"Person Bouncing Ball","b":"26F9","j":["ball","sports","human"]},"man-bouncing-ball":{"a":"Man Bouncing Ball","b":"26F9-FE0F-200D-2642-FE0F","j":["ball","man","sport"]},"woman-bouncing-ball":{"a":"Woman Bouncing Ball","b":"26F9-FE0F-200D-2640-FE0F","j":["ball","woman","sports","human","female"]},"person-lifting-weights":{"a":"Person Lifting Weights","b":"1F3CB","j":["lifter","weight","sports","training","exercise"]},"man-lifting-weights":{"a":"Man Lifting Weights","b":"1F3CB-FE0F-200D-2642-FE0F","j":["man","weight lifter","sport"]},"woman-lifting-weights":{"a":"Woman Lifting Weights","b":"1F3CB-FE0F-200D-2640-FE0F","j":["weight lifter","woman","sports","training","exercise","female"]},"person-biking":{"a":"Person Biking","b":"1F6B4","j":["bicycle","biking","cyclist","sport","move"]},"man-biking":{"a":"Man Biking","b":"1F6B4-200D-2642-FE0F","j":["bicycle","biking","cyclist","man","sports","bike","exercise","hipster"]},"woman-biking":{"a":"Woman Biking","b":"1F6B4-200D-2640-FE0F","j":["bicycle","biking","cyclist","woman","sports","bike","exercise","hipster","female"]},"person-mountain-biking":{"a":"Person Mountain Biking","b":"1F6B5","j":["bicycle","bicyclist","bike","cyclist","mountain","sport","move"]},"man-mountain-biking":{"a":"Man Mountain Biking","b":"1F6B5-200D-2642-FE0F","j":["bicycle","bike","cyclist","man","mountain","transportation","sports","human","race"]},"woman-mountain-biking":{"a":"Woman Mountain Biking","b":"1F6B5-200D-2640-FE0F","j":["bicycle","bike","biking","cyclist","mountain","woman","transportation","sports","human","race","female"]},"person-cartwheeling":{"a":"Person Cartwheeling","b":"1F938","j":["cartwheel","gymnastics","sport","gymnastic"]},"man-cartwheeling":{"a":"Man Cartwheeling","b":"1F938-200D-2642-FE0F","j":["cartwheel","gymnastics","man"]},"woman-cartwheeling":{"a":"Woman Cartwheeling","b":"1F938-200D-2640-FE0F","j":["cartwheel","gymnastics","woman"]},"people-wrestling":{"a":"People Wrestling","b":"1F93C","j":["wrestle","wrestler","sport"]},"men-wrestling":{"a":"Men Wrestling","b":"1F93C-200D-2642-FE0F","j":["men","wrestle","sports","wrestlers"]},"women-wrestling":{"a":"Women Wrestling","b":"1F93C-200D-2640-FE0F","j":["women","wrestle","sports","wrestlers"]},"person-playing-water-polo":{"a":"Person Playing Water Polo","b":"1F93D","j":["polo","water","sport"]},"man-playing-water-polo":{"a":"Man Playing Water Polo","b":"1F93D-200D-2642-FE0F","j":["man","water polo","sports","pool"]},"woman-playing-water-polo":{"a":"Woman Playing Water Polo","b":"1F93D-200D-2640-FE0F","j":["water polo","woman","sports","pool"]},"person-playing-handball":{"a":"Person Playing Handball","b":"1F93E","j":["ball","handball","sport"]},"man-playing-handball":{"a":"Man Playing Handball","b":"1F93E-200D-2642-FE0F","j":["handball","man","sports"]},"woman-playing-handball":{"a":"Woman Playing Handball","b":"1F93E-200D-2640-FE0F","j":["handball","woman","sports"]},"person-juggling":{"a":"Person Juggling","b":"1F939","j":["balance","juggle","multitask","skill","performance"]},"man-juggling":{"a":"Man Juggling","b":"1F939-200D-2642-FE0F","j":["juggling","man","multitask","juggle","balance","skill"]},"woman-juggling":{"a":"Woman Juggling","b":"1F939-200D-2640-FE0F","j":["juggling","multitask","woman","juggle","balance","skill"]},"person-in-lotus-position":{"a":"Person in Lotus Position","b":"1F9D8","j":["meditation","yoga","serenity","meditate"]},"man-in-lotus-position":{"a":"Man in Lotus Position","b":"1F9D8-200D-2642-FE0F","j":["meditation","yoga","man","male","serenity","zen","mindfulness"]},"woman-in-lotus-position":{"a":"Woman in Lotus Position","b":"1F9D8-200D-2640-FE0F","j":["meditation","yoga","woman","female","serenity","zen","mindfulness"]},"person-taking-bath":{"a":"Person Taking Bath","b":"1F6C0","j":["bath","bathtub","clean","shower","bathroom"]},"person-in-bed":{"a":"Person in Bed","b":"1F6CC","j":["hotel","sleep","bed","rest"]},"people-holding-hands":{"a":"People Holding Hands","b":"1F9D1-200D-1F91D-200D-1F9D1","j":["couple","hand","hold","holding hands","person","friendship"]},"women-holding-hands":{"a":"Women Holding Hands","b":"1F46D","j":["couple","hand","holding hands","women","pair","friendship","love","like","female","people","human"]},"woman-and-man-holding-hands":{"a":"Woman and Man Holding Hands","b":"1F46B","j":["couple","hand","hold","holding hands","man","woman","pair","people","human","love","date","dating","like","affection","valentines","marriage"]},"men-holding-hands":{"a":"Men Holding Hands","b":"1F46C","j":["couple","Gemini","holding hands","man","men","twins","zodiac","pair","love","like","bromance","friendship","people","human"]},"kiss":{"a":"Kiss","b":"1F48F","j":["couple","pair","valentines","love","like","dating","marriage"]},"kiss-woman-man":{"a":"Kiss: Woman, Man","b":"1F469-200D-2764-FE0F-200D-1F48B-200D-1F468","j":["couple","kiss","man","woman","love"]},"kiss-man-man":{"a":"Kiss: Man, Man","b":"1F468-200D-2764-FE0F-200D-1F48B-200D-1F468","j":["couple","kiss","man","pair","valentines","love","like","dating","marriage"]},"kiss-woman-woman":{"a":"Kiss: Woman, Woman","b":"1F469-200D-2764-FE0F-200D-1F48B-200D-1F469","j":["couple","kiss","woman","pair","valentines","love","like","dating","marriage"]},"couple-with-heart":{"a":"Couple with Heart","b":"1F491","j":["couple","love","pair","like","affection","human","dating","valentines","marriage"]},"couple-with-heart-woman-man":{"a":"Couple with Heart: Woman, Man","b":"1F469-200D-2764-FE0F-200D-1F468","j":["couple","couple with heart","love","man","woman"]},"couple-with-heart-man-man":{"a":"Couple with Heart: Man, Man","b":"1F468-200D-2764-FE0F-200D-1F468","j":["couple","couple with heart","love","man","pair","like","affection","human","dating","valentines","marriage"]},"couple-with-heart-woman-woman":{"a":"Couple with Heart: Woman, Woman","b":"1F469-200D-2764-FE0F-200D-1F469","j":["couple","couple with heart","love","woman","pair","like","affection","human","dating","valentines","marriage"]},"family":{"a":"Family","b":"1F46A","j":["home","parents","child","mom","dad","father","mother","people","human"]},"family-man-woman-boy":{"a":"Family: Man, Woman, Boy","b":"1F468-200D-1F469-200D-1F466","j":["boy","family","man","woman","love"]},"family-man-woman-girl":{"a":"Family: Man, Woman, Girl","b":"1F468-200D-1F469-200D-1F467","j":["family","girl","man","woman","home","parents","people","human","child"]},"family-man-woman-girl-boy":{"a":"Family: Man, Woman, Girl, Boy","b":"1F468-200D-1F469-200D-1F467-200D-1F466","j":["boy","family","girl","man","woman","home","parents","people","human","children"]},"family-man-woman-boy-boy":{"a":"Family: Man, Woman, Boy, Boy","b":"1F468-200D-1F469-200D-1F466-200D-1F466","j":["boy","family","man","woman","home","parents","people","human","children"]},"family-man-woman-girl-girl":{"a":"Family: Man, Woman, Girl, Girl","b":"1F468-200D-1F469-200D-1F467-200D-1F467","j":["family","girl","man","woman","home","parents","people","human","children"]},"family-man-man-boy":{"a":"Family: Man, Man, Boy","b":"1F468-200D-1F468-200D-1F466","j":["boy","family","man","home","parents","people","human","children"]},"family-man-man-girl":{"a":"Family: Man, Man, Girl","b":"1F468-200D-1F468-200D-1F467","j":["family","girl","man","home","parents","people","human","children"]},"family-man-man-girl-boy":{"a":"Family: Man, Man, Girl, Boy","b":"1F468-200D-1F468-200D-1F467-200D-1F466","j":["boy","family","girl","man","home","parents","people","human","children"]},"family-man-man-boy-boy":{"a":"Family: Man, Man, Boy, Boy","b":"1F468-200D-1F468-200D-1F466-200D-1F466","j":["boy","family","man","home","parents","people","human","children"]},"family-man-man-girl-girl":{"a":"Family: Man, Man, Girl, Girl","b":"1F468-200D-1F468-200D-1F467-200D-1F467","j":["family","girl","man","home","parents","people","human","children"]},"family-woman-woman-boy":{"a":"Family: Woman, Woman, Boy","b":"1F469-200D-1F469-200D-1F466","j":["boy","family","woman","home","parents","people","human","children"]},"family-woman-woman-girl":{"a":"Family: Woman, Woman, Girl","b":"1F469-200D-1F469-200D-1F467","j":["family","girl","woman","home","parents","people","human","children"]},"family-woman-woman-girl-boy":{"a":"Family: Woman, Woman, Girl, Boy","b":"1F469-200D-1F469-200D-1F467-200D-1F466","j":["boy","family","girl","woman","home","parents","people","human","children"]},"family-woman-woman-boy-boy":{"a":"Family: Woman, Woman, Boy, Boy","b":"1F469-200D-1F469-200D-1F466-200D-1F466","j":["boy","family","woman","home","parents","people","human","children"]},"family-woman-woman-girl-girl":{"a":"Family: Woman, Woman, Girl, Girl","b":"1F469-200D-1F469-200D-1F467-200D-1F467","j":["family","girl","woman","home","parents","people","human","children"]},"family-man-boy":{"a":"Family: Man, Boy","b":"1F468-200D-1F466","j":["boy","family","man","home","parent","people","human","child"]},"family-man-boy-boy":{"a":"Family: Man, Boy, Boy","b":"1F468-200D-1F466-200D-1F466","j":["boy","family","man","home","parent","people","human","children"]},"family-man-girl":{"a":"Family: Man, Girl","b":"1F468-200D-1F467","j":["family","girl","man","home","parent","people","human","child"]},"family-man-girl-boy":{"a":"Family: Man, Girl, Boy","b":"1F468-200D-1F467-200D-1F466","j":["boy","family","girl","man","home","parent","people","human","children"]},"family-man-girl-girl":{"a":"Family: Man, Girl, Girl","b":"1F468-200D-1F467-200D-1F467","j":["family","girl","man","home","parent","people","human","children"]},"family-woman-boy":{"a":"Family: Woman, Boy","b":"1F469-200D-1F466","j":["boy","family","woman","home","parent","people","human","child"]},"family-woman-boy-boy":{"a":"Family: Woman, Boy, Boy","b":"1F469-200D-1F466-200D-1F466","j":["boy","family","woman","home","parent","people","human","children"]},"family-woman-girl":{"a":"Family: Woman, Girl","b":"1F469-200D-1F467","j":["family","girl","woman","home","parent","people","human","child"]},"family-woman-girl-boy":{"a":"Family: Woman, Girl, Boy","b":"1F469-200D-1F467-200D-1F466","j":["boy","family","girl","woman","home","parent","people","human","children"]},"family-woman-girl-girl":{"a":"Family: Woman, Girl, Girl","b":"1F469-200D-1F467-200D-1F467","j":["family","girl","woman","home","parent","people","human","children"]},"speaking-head":{"a":"Speaking Head","b":"1F5E3","j":["face","head","silhouette","speak","speaking","user","person","human","sing","say","talk"]},"bust-in-silhouette":{"a":"Bust in Silhouette","b":"1F464","j":["bust","silhouette","user","person","human"]},"busts-in-silhouette":{"a":"Busts in Silhouette","b":"1F465","j":["bust","silhouette","user","person","human","group","team"]},"people-hugging":{"a":"People Hugging","b":"1FAC2","j":["goodbye","hello","hug","thanks","care"]},"footprints":{"a":"Footprints","b":"1F463","j":["clothing","footprint","print","feet","tracking","walking","beach"]},"red-hair":{"a":"Red Hair","b":"1F9B0","j":["ginger","red hair","redhead"]},"curly-hair":{"a":"Curly Hair","b":"1F9B1","j":["afro","curly","curly hair","ringlets"]},"white-hair":{"a":"White Hair","b":"1F9B3","j":["gray","hair","old","white"]},"bald":{"a":"Bald","b":"1F9B2","j":["bald","chemotherapy","hairless","no hair","shaven"]},"monkey-face":{"a":"Monkey Face","b":"1F435","j":["face","monkey","animal","nature","circus"]},"monkey":{"a":"Monkey","b":"1F412","j":["animal","nature","banana","circus"]},"gorilla":{"a":"Gorilla","b":"1F98D","j":["animal","nature","circus"]},"orangutan":{"a":"Orangutan","b":"1F9A7","j":["ape","animal"]},"dog-face":{"a":"Dog Face","b":"1F436","j":["dog","face","pet","animal","friend","nature","woof","puppy","faithful"]},"dog":{"a":"Dog","b":"1F415","j":["pet","animal","nature","friend","doge","faithful"]},"guide-dog":{"a":"Guide Dog","b":"1F9AE","j":["accessibility","blind","guide","animal"]},"service-dog":{"a":"Service Dog","b":"1F415-200D-1F9BA","j":["accessibility","assistance","dog","service","blind","animal"]},"poodle":{"a":"Poodle","b":"1F429","j":["dog","animal","101","nature","pet"]},"wolf":{"a":"Wolf","b":"1F43A","j":["face","animal","nature","wild"]},"fox":{"a":"Fox","b":"1F98A","j":["face","animal","nature"]},"raccoon":{"a":"Raccoon","b":"1F99D","j":["curious","sly","animal","nature"]},"cat-face":{"a":"Cat Face","b":"1F431","j":["cat","face","pet","animal","meow","nature","kitten"]},"cat":{"a":"Cat","b":"1F408","j":["pet","animal","meow","cats"]},"black-cat":{"a":"Black Cat","b":"1F408-200D-2B1B","j":["black","cat","unlucky","superstition","luck"]},"lion":{"a":"Lion","b":"1F981","j":["face","Leo","zodiac","animal","nature"]},"tiger-face":{"a":"Tiger Face","b":"1F42F","j":["face","tiger","animal","cat","danger","wild","nature","roar"]},"tiger":{"a":"Tiger","b":"1F405","j":["animal","nature","roar"]},"leopard":{"a":"Leopard","b":"1F406","j":["animal","nature"]},"horse-face":{"a":"Horse Face","b":"1F434","j":["face","horse","animal","brown","nature"]},"horse":{"a":"Horse","b":"1F40E","j":["equestrian","racehorse","racing","animal","gamble","luck"]},"unicorn":{"a":"Unicorn","b":"1F984","j":["face","animal","nature","mystical"]},"zebra":{"a":"Zebra","b":"1F993","j":["stripe","animal","nature","stripes","safari"]},"deer":{"a":"Deer","b":"1F98C","j":["animal","nature","horns","venison"]},"bison":{"a":"Bison","b":"1F9AC","j":["buffalo","herd","wisent","ox"]},"cow-face":{"a":"Cow Face","b":"1F42E","j":["cow","face","beef","ox","animal","nature","moo","milk"]},"ox":{"a":"Ox","b":"1F402","j":["bull","Taurus","zodiac","animal","cow","beef"]},"water-buffalo":{"a":"Water Buffalo","b":"1F403","j":["buffalo","water","animal","nature","ox","cow"]},"cow":{"a":"Cow","b":"1F404","j":["beef","ox","animal","nature","moo","milk"]},"pig-face":{"a":"Pig Face","b":"1F437","j":["face","pig","animal","oink","nature"]},"pig":{"a":"Pig","b":"1F416","j":["sow","animal","nature"]},"boar":{"a":"Boar","b":"1F417","j":["pig","animal","nature"]},"pig-nose":{"a":"Pig Nose","b":"1F43D","j":["face","nose","pig","animal","oink"]},"ram":{"a":"Ram","b":"1F40F","j":["Aries","male","sheep","zodiac","animal","nature"]},"ewe":{"a":"Ewe","b":"1F411","j":["female","sheep","animal","nature","wool","shipit"]},"goat":{"a":"Goat","b":"1F410","j":["Capricorn","zodiac","animal","nature"]},"camel":{"a":"Camel","b":"1F42A","j":["dromedary","hump","animal","hot","desert"]},"twohump-camel":{"a":"Two-Hump Camel","b":"1F42B","j":["bactrian","camel","hump","two-hump camel","two_hump_camel","animal","nature","hot","desert"]},"llama":{"a":"Llama","b":"1F999","j":["alpaca","guanaco","vicuña","wool","animal","nature"]},"giraffe":{"a":"Giraffe","b":"1F992","j":["spots","animal","nature","safari"]},"elephant":{"a":"Elephant","b":"1F418","j":["animal","nature","nose","th","circus"]},"mammoth":{"a":"Mammoth","b":"1F9A3","j":["extinction","large","tusk","woolly","elephant","tusks"]},"rhinoceros":{"a":"Rhinoceros","b":"1F98F","j":["animal","nature","horn"]},"hippopotamus":{"a":"Hippopotamus","b":"1F99B","j":["hippo","animal","nature"]},"mouse-face":{"a":"Mouse Face","b":"1F42D","j":["face","mouse","animal","nature","cheese_wedge","rodent"]},"mouse":{"a":"Mouse","b":"1F401","j":["animal","nature","rodent"]},"rat":{"a":"Rat","b":"1F400","j":["animal","mouse","rodent"]},"hamster":{"a":"Hamster","b":"1F439","j":["face","pet","animal","nature"]},"rabbit-face":{"a":"Rabbit Face","b":"1F430","j":["bunny","face","pet","rabbit","animal","nature","spring","magic"]},"rabbit":{"a":"Rabbit","b":"1F407","j":["bunny","pet","animal","nature","magic","spring"]},"chipmunk":{"a":"Chipmunk","b":"1F43F","j":["squirrel","animal","nature","rodent"]},"beaver":{"a":"Beaver","b":"1F9AB","j":["dam","animal","rodent"]},"hedgehog":{"a":"Hedgehog","b":"1F994","j":["spiny","animal","nature"]},"bat":{"a":"Bat","b":"1F987","j":["vampire","animal","nature","blind"]},"bear":{"a":"Bear","b":"1F43B","j":["face","animal","nature","wild"]},"polar-bear":{"a":"Polar Bear","b":"1F43B-200D-2744-FE0F","j":["arctic","bear","white","animal"]},"koala":{"a":"Koala","b":"1F428","j":["bear","animal","nature"]},"panda":{"a":"Panda","b":"1F43C","j":["face","animal","nature"]},"sloth":{"a":"Sloth","b":"1F9A5","j":["lazy","slow","animal"]},"otter":{"a":"Otter","b":"1F9A6","j":["fishing","playful","animal"]},"skunk":{"a":"Skunk","b":"1F9A8","j":["stink","animal"]},"kangaroo":{"a":"Kangaroo","b":"1F998","j":["Australia","joey","jump","marsupial","animal","nature","australia","hop"]},"badger":{"a":"Badger","b":"1F9A1","j":["honey badger","pester","animal","nature","honey"]},"paw-prints":{"a":"Paw Prints","b":"1F43E","j":["feet","paw","print","animal","tracking","footprints","dog","cat","pet"]},"turkey":{"a":"Turkey","b":"1F983","j":["bird","animal"]},"chicken":{"a":"Chicken","b":"1F414","j":["bird","animal","cluck","nature"]},"rooster":{"a":"Rooster","b":"1F413","j":["bird","animal","nature","chicken"]},"hatching-chick":{"a":"Hatching Chick","b":"1F423","j":["baby","bird","chick","hatching","animal","chicken","egg","born"]},"baby-chick":{"a":"Baby Chick","b":"1F424","j":["baby","bird","chick","animal","chicken"]},"frontfacing-baby-chick":{"a":"Front-Facing Baby Chick","b":"1F425","j":["baby","bird","chick","front-facing baby chick","front_facing_baby_chick","animal","chicken"]},"bird":{"a":"Bird","b":"1F426","j":["animal","nature","fly","tweet","spring"]},"penguin":{"a":"Penguin","b":"1F427","j":["bird","animal","nature"]},"dove":{"a":"Dove","b":"1F54A","j":["bird","fly","peace","animal"]},"eagle":{"a":"Eagle","b":"1F985","j":["bird","animal","nature"]},"duck":{"a":"Duck","b":"1F986","j":["bird","animal","nature","mallard"]},"swan":{"a":"Swan","b":"1F9A2","j":["bird","cygnet","ugly duckling","animal","nature"]},"owl":{"a":"Owl","b":"1F989","j":["bird","wise","animal","nature","hoot"]},"dodo":{"a":"Dodo","b":"1F9A4","j":["extinction","large","Mauritius","animal","bird"]},"feather":{"a":"Feather","b":"1FAB6","j":["bird","flight","light","plumage","fly"]},"flamingo":{"a":"Flamingo","b":"1F9A9","j":["flamboyant","tropical","animal"]},"peacock":{"a":"Peacock","b":"1F99A","j":["bird","ostentatious","peahen","proud","animal","nature"]},"parrot":{"a":"Parrot","b":"1F99C","j":["bird","pirate","talk","animal","nature"]},"frog":{"a":"Frog","b":"1F438","j":["face","animal","nature","croak","toad"]},"crocodile":{"a":"Crocodile","b":"1F40A","j":["animal","nature","reptile","lizard","alligator"]},"turtle":{"a":"Turtle","b":"1F422","j":["terrapin","tortoise","animal","slow","nature"]},"lizard":{"a":"Lizard","b":"1F98E","j":["reptile","animal","nature"]},"snake":{"a":"Snake","b":"1F40D","j":["bearer","Ophiuchus","serpent","zodiac","animal","evil","nature","hiss","python"]},"dragon-face":{"a":"Dragon Face","b":"1F432","j":["dragon","face","fairy tale","animal","myth","nature","chinese","green"]},"dragon":{"a":"Dragon","b":"1F409","j":["fairy tale","animal","myth","nature","chinese","green"]},"sauropod":{"a":"Sauropod","b":"1F995","j":["brachiosaurus","brontosaurus","diplodocus","animal","nature","dinosaur","extinct"]},"trex":{"a":"T-Rex","b":"1F996","j":["Tyrannosaurus Rex","t_rex","animal","nature","dinosaur","tyrannosaurus","extinct"]},"spouting-whale":{"a":"Spouting Whale","b":"1F433","j":["face","spouting","whale","animal","nature","sea","ocean"]},"whale":{"a":"Whale","b":"1F40B","j":["animal","nature","sea","ocean"]},"dolphin":{"a":"Dolphin","b":"1F42C","j":["flipper","animal","nature","fish","sea","ocean","fins","beach"]},"seal":{"a":"Seal","b":"1F9AD","j":["sea lion","animal","creature","sea"]},"fish":{"a":"Fish","b":"1F41F","j":["Pisces","zodiac","animal","food","nature"]},"tropical-fish":{"a":"Tropical Fish","b":"1F420","j":["fish","tropical","animal","swim","ocean","beach","nemo"]},"blowfish":{"a":"Blowfish","b":"1F421","j":["fish","animal","nature","food","sea","ocean"]},"shark":{"a":"Shark","b":"1F988","j":["fish","animal","nature","sea","ocean","jaws","fins","beach"]},"octopus":{"a":"Octopus","b":"1F419","j":["animal","creature","ocean","sea","nature","beach"]},"spiral-shell":{"a":"Spiral Shell","b":"1F41A","j":["shell","spiral","nature","sea","beach"]},"snail":{"a":"Snail","b":"1F40C","j":["slow","animal","shell"]},"butterfly":{"a":"Butterfly","b":"1F98B","j":["insect","pretty","animal","nature","caterpillar"]},"bug":{"a":"Bug","b":"1F41B","j":["insect","animal","nature","worm"]},"ant":{"a":"Ant","b":"1F41C","j":["insect","animal","nature","bug"]},"honeybee":{"a":"Honeybee","b":"1F41D","j":["bee","insect","animal","nature","bug","spring","honey"]},"beetle":{"a":"Beetle","b":"1FAB2","j":["bug","insect"]},"lady-beetle":{"a":"Lady Beetle","b":"1F41E","j":["beetle","insect","ladybird","ladybug","animal","nature"]},"cricket":{"a":"Cricket","b":"1F997","j":["grasshopper","Orthoptera","animal","chirp"]},"cockroach":{"a":"Cockroach","b":"1FAB3","j":["insect","pest","roach","pests"]},"spider":{"a":"Spider","b":"1F577","j":["insect","animal","arachnid"]},"spider-web":{"a":"Spider Web","b":"1F578","j":["spider","web","animal","insect","arachnid","silk"]},"scorpion":{"a":"Scorpion","b":"1F982","j":["scorpio","Scorpio","zodiac","animal","arachnid"]},"mosquito":{"a":"Mosquito","b":"1F99F","j":["disease","fever","malaria","pest","virus","animal","nature","insect"]},"fly":{"a":"Fly","b":"1FAB0","j":["disease","maggot","pest","rotting","insect"]},"worm":{"a":"Worm","b":"1FAB1","j":["annelid","earthworm","parasite","animal"]},"microbe":{"a":"Microbe","b":"1F9A0","j":["amoeba","bacteria","virus","germs"]},"bouquet":{"a":"Bouquet","b":"1F490","j":["flower","flowers","nature","spring"]},"cherry-blossom":{"a":"Cherry Blossom","b":"1F338","j":["blossom","cherry","flower","nature","plant","spring"]},"white-flower":{"a":"White Flower","b":"1F4AE","j":["flower","japanese","spring"]},"rosette":{"a":"Rosette","b":"1F3F5","j":["plant","flower","decoration","military"]},"rose":{"a":"Rose","b":"1F339","j":["flower","flowers","valentines","love","spring"]},"wilted-flower":{"a":"Wilted Flower","b":"1F940","j":["flower","wilted","plant","nature"]},"hibiscus":{"a":"Hibiscus","b":"1F33A","j":["flower","plant","vegetable","flowers","beach"]},"sunflower":{"a":"Sunflower","b":"1F33B","j":["flower","sun","nature","plant","fall"]},"blossom":{"a":"Blossom","b":"1F33C","j":["flower","nature","flowers","yellow"]},"tulip":{"a":"Tulip","b":"1F337","j":["flower","flowers","plant","nature","summer","spring"]},"seedling":{"a":"Seedling","b":"1F331","j":["young","plant","nature","grass","lawn","spring"]},"potted-plant":{"a":"Potted Plant","b":"1FAB4","j":["boring","grow","house","nurturing","plant","useless","greenery"]},"evergreen-tree":{"a":"Evergreen Tree","b":"1F332","j":["tree","plant","nature"]},"deciduous-tree":{"a":"Deciduous Tree","b":"1F333","j":["deciduous","shedding","tree","plant","nature"]},"palm-tree":{"a":"Palm Tree","b":"1F334","j":["palm","tree","plant","vegetable","nature","summer","beach","mojito","tropical"]},"cactus":{"a":"Cactus","b":"1F335","j":["plant","vegetable","nature"]},"sheaf-of-rice":{"a":"Sheaf of Rice","b":"1F33E","j":["ear","grain","rice","nature","plant"]},"herb":{"a":"Herb","b":"1F33F","j":["leaf","vegetable","plant","medicine","weed","grass","lawn"]},"shamrock":{"a":"Shamrock","b":"2618","j":["plant","vegetable","nature","irish","clover"]},"four-leaf-clover":{"a":"Four Leaf Clover","b":"1F340","j":["4","clover","four","four-leaf clover","leaf","vegetable","plant","nature","lucky","irish"]},"maple-leaf":{"a":"Maple Leaf","b":"1F341","j":["falling","leaf","maple","nature","plant","vegetable","ca","fall"]},"fallen-leaf":{"a":"Fallen Leaf","b":"1F342","j":["falling","leaf","nature","plant","vegetable","leaves"]},"leaf-fluttering-in-wind":{"a":"Leaf Fluttering in Wind","b":"1F343","j":["blow","flutter","leaf","wind","nature","plant","tree","vegetable","grass","lawn","spring"]},"grapes":{"a":"Grapes","b":"1F347","j":["fruit","grape","food","wine"]},"melon":{"a":"Melon","b":"1F348","j":["fruit","nature","food"]},"watermelon":{"a":"Watermelon","b":"1F349","j":["fruit","food","picnic","summer"]},"tangerine":{"a":"Tangerine","b":"1F34A","j":["fruit","orange","food","nature"]},"lemon":{"a":"Lemon","b":"1F34B","j":["citrus","fruit","nature"]},"banana":{"a":"Banana","b":"1F34C","j":["fruit","food","monkey"]},"pineapple":{"a":"Pineapple","b":"1F34D","j":["fruit","nature","food"]},"mango":{"a":"Mango","b":"1F96D","j":["fruit","tropical","food"]},"red-apple":{"a":"Red Apple","b":"1F34E","j":["apple","fruit","red","mac","school"]},"green-apple":{"a":"Green Apple","b":"1F34F","j":["apple","fruit","green","nature"]},"pear":{"a":"Pear","b":"1F350","j":["fruit","nature","food"]},"peach":{"a":"Peach","b":"1F351","j":["fruit","nature","food"]},"cherries":{"a":"Cherries","b":"1F352","j":["berries","cherry","fruit","red","food"]},"strawberry":{"a":"Strawberry","b":"1F353","j":["berry","fruit","food","nature"]},"blueberries":{"a":"Blueberries","b":"1FAD0","j":["berry","bilberry","blue","blueberry","fruit"]},"kiwi-fruit":{"a":"Kiwi Fruit","b":"1F95D","j":["food","fruit","kiwi"]},"tomato":{"a":"Tomato","b":"1F345","j":["fruit","vegetable","nature","food"]},"olive":{"a":"Olive","b":"1FAD2","j":["food","fruit"]},"coconut":{"a":"Coconut","b":"1F965","j":["palm","piña colada","fruit","nature","food"]},"avocado":{"a":"Avocado","b":"1F951","j":["food","fruit"]},"eggplant":{"a":"Eggplant","b":"1F346","j":["aubergine","vegetable","nature","food"]},"potato":{"a":"Potato","b":"1F954","j":["food","vegetable","tuber","vegatable","starch"]},"carrot":{"a":"Carrot","b":"1F955","j":["food","vegetable","orange"]},"ear-of-corn":{"a":"Ear of Corn","b":"1F33D","j":["corn","ear","maize","maze","food","vegetable","plant"]},"hot-pepper":{"a":"Hot Pepper","b":"1F336","j":["hot","pepper","food","spicy","chilli","chili"]},"bell-pepper":{"a":"Bell Pepper","b":"1FAD1","j":["capsicum","pepper","vegetable","fruit","plant"]},"cucumber":{"a":"Cucumber","b":"1F952","j":["food","pickle","vegetable","fruit"]},"leafy-green":{"a":"Leafy Green","b":"1F96C","j":["bok choy","cabbage","kale","lettuce","food","vegetable","plant"]},"broccoli":{"a":"Broccoli","b":"1F966","j":["wild cabbage","fruit","food","vegetable"]},"garlic":{"a":"Garlic","b":"1F9C4","j":["flavoring","food","spice","cook"]},"onion":{"a":"Onion","b":"1F9C5","j":["flavoring","cook","food","spice"]},"mushroom":{"a":"Mushroom","b":"1F344","j":["toadstool","plant","vegetable"]},"peanuts":{"a":"Peanuts","b":"1F95C","j":["food","nut","peanut","vegetable"]},"chestnut":{"a":"Chestnut","b":"1F330","j":["plant","food","squirrel"]},"bread":{"a":"Bread","b":"1F35E","j":["loaf","food","wheat","breakfast","toast"]},"croissant":{"a":"Croissant","b":"1F950","j":["bread","breakfast","food","french","roll"]},"baguette-bread":{"a":"Baguette Bread","b":"1F956","j":["baguette","bread","food","french"]},"flatbread":{"a":"Flatbread","b":"1FAD3","j":["arepa","lavash","naan","pita","flour","food"]},"pretzel":{"a":"Pretzel","b":"1F968","j":["twisted","convoluted","food","bread"]},"bagel":{"a":"Bagel","b":"1F96F","j":["bakery","breakfast","schmear","food","bread"]},"pancakes":{"a":"Pancakes","b":"1F95E","j":["breakfast","crêpe","food","hotcake","pancake","flapjacks","hotcakes"]},"waffle":{"a":"Waffle","b":"1F9C7","j":["breakfast","indecisive","iron","food"]},"cheese-wedge":{"a":"Cheese Wedge","b":"1F9C0","j":["cheese","food","chadder"]},"meat-on-bone":{"a":"Meat on Bone","b":"1F356","j":["bone","meat","good","food","drumstick"]},"poultry-leg":{"a":"Poultry Leg","b":"1F357","j":["bone","chicken","drumstick","leg","poultry","food","meat","bird","turkey"]},"cut-of-meat":{"a":"Cut of Meat","b":"1F969","j":["chop","lambchop","porkchop","steak","food","cow","meat","cut"]},"bacon":{"a":"Bacon","b":"1F953","j":["breakfast","food","meat","pork","pig"]},"hamburger":{"a":"Hamburger","b":"1F354","j":["burger","meat","fast food","beef","cheeseburger","mcdonalds","burger king"]},"french-fries":{"a":"French Fries","b":"1F35F","j":["french","fries","chips","snack","fast food"]},"pizza":{"a":"Pizza","b":"1F355","j":["cheese","slice","food","party"]},"hot-dog":{"a":"Hot Dog","b":"1F32D","j":["frankfurter","hotdog","sausage","food"]},"sandwich":{"a":"Sandwich","b":"1F96A","j":["bread","food","lunch"]},"taco":{"a":"Taco","b":"1F32E","j":["mexican","food"]},"burrito":{"a":"Burrito","b":"1F32F","j":["mexican","wrap","food"]},"tamale":{"a":"Tamale","b":"1FAD4","j":["mexican","wrapped","food","masa"]},"stuffed-flatbread":{"a":"Stuffed Flatbread","b":"1F959","j":["falafel","flatbread","food","gyro","kebab","stuffed"]},"falafel":{"a":"Falafel","b":"1F9C6","j":["chickpea","meatball","food"]},"egg":{"a":"Egg","b":"1F95A","j":["breakfast","food","chicken"]},"cooking":{"a":"Cooking","b":"1F373","j":["breakfast","egg","frying","pan","food","kitchen"]},"shallow-pan-of-food":{"a":"Shallow Pan of Food","b":"1F958","j":["casserole","food","paella","pan","shallow","cooking"]},"pot-of-food":{"a":"Pot of Food","b":"1F372","j":["pot","stew","food","meat","soup"]},"fondue":{"a":"Fondue","b":"1FAD5","j":["cheese","chocolate","melted","pot","Swiss","food"]},"bowl-with-spoon":{"a":"Bowl with Spoon","b":"1F963","j":["breakfast","cereal","congee","oatmeal","porridge","food"]},"green-salad":{"a":"Green Salad","b":"1F957","j":["food","green","salad","healthy","lettuce"]},"popcorn":{"a":"Popcorn","b":"1F37F","j":["food","movie theater","films","snack"]},"butter":{"a":"Butter","b":"1F9C8","j":["dairy","food","cook"]},"salt":{"a":"Salt","b":"1F9C2","j":["condiment","shaker"]},"canned-food":{"a":"Canned Food","b":"1F96B","j":["can","food","soup"]},"bento-box":{"a":"Bento Box","b":"1F371","j":["bento","box","food","japanese"]},"rice-cracker":{"a":"Rice Cracker","b":"1F358","j":["cracker","rice","food","japanese"]},"rice-ball":{"a":"Rice Ball","b":"1F359","j":["ball","Japanese","rice","food","japanese"]},"cooked-rice":{"a":"Cooked Rice","b":"1F35A","j":["cooked","rice","food","china","asian"]},"curry-rice":{"a":"Curry Rice","b":"1F35B","j":["curry","rice","food","spicy","hot","indian"]},"steaming-bowl":{"a":"Steaming Bowl","b":"1F35C","j":["bowl","noodle","ramen","steaming","food","japanese","chopsticks"]},"spaghetti":{"a":"Spaghetti","b":"1F35D","j":["pasta","food","italian","noodle"]},"roasted-sweet-potato":{"a":"Roasted Sweet Potato","b":"1F360","j":["potato","roasted","sweet","food","nature"]},"oden":{"a":"Oden","b":"1F362","j":["kebab","seafood","skewer","stick","food","japanese"]},"sushi":{"a":"Sushi","b":"1F363","j":["food","fish","japanese","rice"]},"fried-shrimp":{"a":"Fried Shrimp","b":"1F364","j":["fried","prawn","shrimp","tempura","food","animal","appetizer","summer"]},"fish-cake-with-swirl":{"a":"Fish Cake with Swirl","b":"1F365","j":["cake","fish","pastry","swirl","food","japan","sea","beach","narutomaki","pink","kamaboko","surimi","ramen"]},"moon-cake":{"a":"Moon Cake","b":"1F96E","j":["autumn","festival","yuèbǐng","food"]},"dango":{"a":"Dango","b":"1F361","j":["dessert","Japanese","skewer","stick","sweet","food","japanese","barbecue","meat"]},"dumpling":{"a":"Dumpling","b":"1F95F","j":["empanada","gyōza","jiaozi","pierogi","potsticker","food"]},"fortune-cookie":{"a":"Fortune Cookie","b":"1F960","j":["prophecy","food"]},"takeout-box":{"a":"Takeout Box","b":"1F961","j":["oyster pail","food","leftovers"]},"crab":{"a":"Crab","b":"1F980","j":["Cancer","zodiac","animal","crustacean"]},"lobster":{"a":"Lobster","b":"1F99E","j":["bisque","claws","seafood","animal","nature"]},"shrimp":{"a":"Shrimp","b":"1F990","j":["food","shellfish","small","animal","ocean","nature","seafood"]},"squid":{"a":"Squid","b":"1F991","j":["food","molusc","animal","nature","ocean","sea"]},"oyster":{"a":"Oyster","b":"1F9AA","j":["diving","pearl","food"]},"soft-ice-cream":{"a":"Soft Ice Cream","b":"1F366","j":["cream","dessert","ice","icecream","soft","sweet","food","hot","summer"]},"shaved-ice":{"a":"Shaved Ice","b":"1F367","j":["dessert","ice","shaved","sweet","hot","summer"]},"ice-cream":{"a":"Ice Cream","b":"1F368","j":["cream","dessert","ice","sweet","food","hot"]},"doughnut":{"a":"Doughnut","b":"1F369","j":["breakfast","dessert","donut","sweet","food","snack"]},"cookie":{"a":"Cookie","b":"1F36A","j":["dessert","sweet","food","snack","oreo","chocolate"]},"birthday-cake":{"a":"Birthday Cake","b":"1F382","j":["birthday","cake","celebration","dessert","pastry","sweet","food"]},"shortcake":{"a":"Shortcake","b":"1F370","j":["cake","dessert","pastry","slice","sweet","food"]},"cupcake":{"a":"Cupcake","b":"1F9C1","j":["bakery","sweet","food","dessert"]},"pie":{"a":"Pie","b":"1F967","j":["filling","pastry","fruit","meat","food","dessert"]},"chocolate-bar":{"a":"Chocolate Bar","b":"1F36B","j":["bar","chocolate","dessert","sweet","food","snack"]},"candy":{"a":"Candy","b":"1F36C","j":["dessert","sweet","snack","lolly"]},"lollipop":{"a":"Lollipop","b":"1F36D","j":["candy","dessert","sweet","food","snack"]},"custard":{"a":"Custard","b":"1F36E","j":["dessert","pudding","sweet","food"]},"honey-pot":{"a":"Honey Pot","b":"1F36F","j":["honey","honeypot","pot","sweet","bees","kitchen"]},"baby-bottle":{"a":"Baby Bottle","b":"1F37C","j":["baby","bottle","drink","milk","food","container"]},"glass-of-milk":{"a":"Glass of Milk","b":"1F95B","j":["drink","glass","milk","beverage","cow"]},"hot-beverage":{"a":"Hot Beverage","b":"2615","j":["beverage","coffee","drink","hot","steaming","tea","caffeine","latte","espresso"]},"teapot":{"a":"Teapot","b":"1FAD6","j":["drink","pot","tea","hot"]},"teacup-without-handle":{"a":"Teacup Without Handle","b":"1F375","j":["beverage","cup","drink","tea","teacup","bowl","breakfast","green","british"]},"sake":{"a":"Sake","b":"1F376","j":["bar","beverage","bottle","cup","drink","wine","drunk","japanese","alcohol","booze"]},"bottle-with-popping-cork":{"a":"Bottle with Popping Cork","b":"1F37E","j":["bar","bottle","cork","drink","popping","wine","celebration"]},"wine-glass":{"a":"Wine Glass","b":"1F377","j":["bar","beverage","drink","glass","wine","drunk","alcohol","booze"]},"cocktail-glass":{"a":"Cocktail Glass","b":"1F378","j":["bar","cocktail","drink","glass","drunk","alcohol","beverage","booze","mojito"]},"tropical-drink":{"a":"Tropical Drink","b":"1F379","j":["bar","drink","tropical","beverage","cocktail","summer","beach","alcohol","booze","mojito"]},"beer-mug":{"a":"Beer Mug","b":"1F37A","j":["bar","beer","drink","mug","relax","beverage","drunk","party","pub","summer","alcohol","booze"]},"clinking-beer-mugs":{"a":"Clinking Beer Mugs","b":"1F37B","j":["bar","beer","clink","drink","mug","relax","beverage","drunk","party","pub","summer","alcohol","booze"]},"clinking-glasses":{"a":"Clinking Glasses","b":"1F942","j":["celebrate","clink","drink","glass","beverage","party","alcohol","cheers","wine","champagne","toast"]},"tumbler-glass":{"a":"Tumbler Glass","b":"1F943","j":["glass","liquor","shot","tumbler","whisky","drink","beverage","drunk","alcohol","booze","bourbon","scotch"]},"cup-with-straw":{"a":"Cup with Straw","b":"1F964","j":["juice","soda","malt","soft drink","water","drink"]},"bubble-tea":{"a":"Bubble Tea","b":"1F9CB","j":["bubble","milk","pearl","tea","taiwan","boba","milk tea","straw"]},"beverage-box":{"a":"Beverage Box","b":"1F9C3","j":["beverage","box","juice","straw","sweet","drink"]},"mate":{"a":"Mate","b":"1F9C9","j":["drink","tea","beverage"]},"ice":{"a":"Ice","b":"1F9CA","j":["cold","ice cube","iceberg","water"]},"chopsticks":{"a":"Chopsticks","b":"1F962","j":["hashi","jeotgarak","kuaizi","food"]},"fork-and-knife-with-plate":{"a":"Fork and Knife with Plate","b":"1F37D","j":["cooking","fork","knife","plate","food","eat","meal","lunch","dinner","restaurant"]},"fork-and-knife":{"a":"Fork and Knife","b":"1F374","j":["cooking","cutlery","fork","knife","kitchen"]},"spoon":{"a":"Spoon","b":"1F944","j":["tableware","cutlery","kitchen"]},"kitchen-knife":{"a":"Kitchen Knife","b":"1F52A","j":["cooking","hocho","knife","tool","weapon","blade","cutlery","kitchen"]},"amphora":{"a":"Amphora","b":"1F3FA","j":["Aquarius","cooking","drink","jug","zodiac","vase","jar"]},"globe-showing-europeafrica":{"a":"Globe Showing Europe-Africa","b":"1F30D","j":["Africa","earth","Europe","globe","globe showing Europe-Africa","world","globe_showing_europe_africa","international"]},"globe-showing-americas":{"a":"Globe Showing Americas","b":"1F30E","j":["Americas","earth","globe","globe showing Americas","world","USA","international"]},"globe-showing-asiaaustralia":{"a":"Globe Showing Asia-Australia","b":"1F30F","j":["Asia","Australia","earth","globe","globe showing Asia-Australia","world","globe_showing_asia_australia","east","international"]},"globe-with-meridians":{"a":"Globe with Meridians","b":"1F310","j":["earth","globe","meridians","world","international","internet","interweb","i18n"]},"world-map":{"a":"World Map","b":"1F5FA","j":["map","world","location","direction"]},"map-of-japan":{"a":"Map of Japan","b":"1F5FE","j":["Japan","map","map of Japan","nation","country","japanese","asia"]},"compass":{"a":"Compass","b":"1F9ED","j":["magnetic","navigation","orienteering"]},"snowcapped-mountain":{"a":"Snow-Capped Mountain","b":"1F3D4","j":["cold","mountain","snow","snow-capped mountain","snow_capped_mountain","photo","nature","environment","winter"]},"mountain":{"a":"Mountain","b":"26F0","j":["photo","nature","environment"]},"volcano":{"a":"Volcano","b":"1F30B","j":["eruption","mountain","photo","nature","disaster"]},"mount-fuji":{"a":"Mount Fuji","b":"1F5FB","j":["fuji","mountain","photo","nature","japanese"]},"camping":{"a":"Camping","b":"1F3D5","j":["photo","outdoors","tent"]},"beach-with-umbrella":{"a":"Beach with Umbrella","b":"1F3D6","j":["beach","umbrella","weather","summer","sunny","sand","mojito"]},"desert":{"a":"Desert","b":"1F3DC","j":["photo","warm","saharah"]},"desert-island":{"a":"Desert Island","b":"1F3DD","j":["desert","island","photo","tropical","mojito"]},"national-park":{"a":"National Park","b":"1F3DE","j":["park","photo","environment","nature"]},"stadium":{"a":"Stadium","b":"1F3DF","j":["photo","place","sports","concert","venue"]},"classical-building":{"a":"Classical Building","b":"1F3DB","j":["classical","art","culture","history"]},"building-construction":{"a":"Building Construction","b":"1F3D7","j":["construction","wip","working","progress"]},"brick":{"a":"Brick","b":"1F9F1","j":["bricks","clay","mortar","wall"]},"rock":{"a":"Rock","b":"1FAA8","j":["boulder","heavy","solid","stone"]},"wood":{"a":"Wood","b":"1FAB5","j":["log","lumber","timber","nature","trunk"]},"hut":{"a":"Hut","b":"1F6D6","j":["house","roundhouse","yurt","structure"]},"houses":{"a":"Houses","b":"1F3D8","j":["buildings","photo"]},"derelict-house":{"a":"Derelict House","b":"1F3DA","j":["derelict","house","abandon","evict","broken","building"]},"house":{"a":"House","b":"1F3E0","j":["home","building"]},"house-with-garden":{"a":"House with Garden","b":"1F3E1","j":["garden","home","house","plant","nature"]},"office-building":{"a":"Office Building","b":"1F3E2","j":["building","bureau","work"]},"japanese-post-office":{"a":"Japanese Post Office","b":"1F3E3","j":["Japanese","Japanese post office","post","building","envelope","communication"]},"post-office":{"a":"Post Office","b":"1F3E4","j":["European","post","building","email"]},"hospital":{"a":"Hospital","b":"1F3E5","j":["doctor","medicine","building","health","surgery"]},"bank":{"a":"Bank","b":"1F3E6","j":["building","money","sales","cash","business","enterprise"]},"hotel":{"a":"Hotel","b":"1F3E8","j":["building","accomodation","checkin"]},"love-hotel":{"a":"Love Hotel","b":"1F3E9","j":["hotel","love","like","affection","dating"]},"convenience-store":{"a":"Convenience Store","b":"1F3EA","j":["convenience","store","building","shopping","groceries"]},"school":{"a":"School","b":"1F3EB","j":["building","student","education","learn","teach"]},"department-store":{"a":"Department Store","b":"1F3EC","j":["department","store","building","shopping","mall"]},"factory":{"a":"Factory","b":"1F3ED","j":["building","industry","pollution","smoke"]},"japanese-castle":{"a":"Japanese Castle","b":"1F3EF","j":["castle","Japanese","photo","building"]},"castle":{"a":"Castle","b":"1F3F0","j":["European","building","royalty","history"]},"wedding":{"a":"Wedding","b":"1F492","j":["chapel","romance","love","like","affection","couple","marriage","bride","groom"]},"tokyo-tower":{"a":"Tokyo Tower","b":"1F5FC","j":["Tokyo","tower","photo","japanese"]},"statue-of-liberty":{"a":"Statue of Liberty","b":"1F5FD","j":["liberty","statue","american","newyork"]},"church":{"a":"Church","b":"26EA","j":["Christian","cross","religion","building","christ"]},"mosque":{"a":"Mosque","b":"1F54C","j":["islam","Muslim","religion","worship","minaret"]},"hindu-temple":{"a":"Hindu Temple","b":"1F6D5","j":["hindu","temple","religion"]},"synagogue":{"a":"Synagogue","b":"1F54D","j":["Jew","Jewish","religion","temple","judaism","worship","jewish"]},"shinto-shrine":{"a":"Shinto Shrine","b":"26E9","j":["religion","shinto","shrine","temple","japan","kyoto"]},"kaaba":{"a":"Kaaba","b":"1F54B","j":["islam","Muslim","religion","mecca","mosque"]},"fountain":{"a":"Fountain","b":"26F2","j":["photo","summer","water","fresh"]},"tent":{"a":"Tent","b":"26FA","j":["camping","photo","outdoors"]},"foggy":{"a":"Foggy","b":"1F301","j":["fog","photo","mountain"]},"night-with-stars":{"a":"Night with Stars","b":"1F303","j":["night","star","evening","city","downtown"]},"cityscape":{"a":"Cityscape","b":"1F3D9","j":["city","photo","night life","urban"]},"sunrise-over-mountains":{"a":"Sunrise over Mountains","b":"1F304","j":["morning","mountain","sun","sunrise","view","vacation","photo"]},"sunrise":{"a":"Sunrise","b":"1F305","j":["morning","sun","view","vacation","photo"]},"cityscape-at-dusk":{"a":"Cityscape at Dusk","b":"1F306","j":["city","dusk","evening","landscape","sunset","photo","sky","buildings"]},"sunset":{"a":"Sunset","b":"1F307","j":["dusk","sun","photo","good morning","dawn"]},"bridge-at-night":{"a":"Bridge at Night","b":"1F309","j":["bridge","night","photo","sanfrancisco"]},"hot-springs":{"a":"Hot Springs","b":"2668","j":["hot","hotsprings","springs","steaming","bath","warm","relax"]},"carousel-horse":{"a":"Carousel Horse","b":"1F3A0","j":["carousel","horse","photo","carnival"]},"ferris-wheel":{"a":"Ferris Wheel","b":"1F3A1","j":["amusement park","ferris","wheel","photo","carnival","londoneye"]},"roller-coaster":{"a":"Roller Coaster","b":"1F3A2","j":["amusement park","coaster","roller","carnival","playground","photo","fun"]},"barber-pole":{"a":"Barber Pole","b":"1F488","j":["barber","haircut","pole","hair","salon","style"]},"circus-tent":{"a":"Circus Tent","b":"1F3AA","j":["circus","tent","festival","carnival","party"]},"locomotive":{"a":"Locomotive","b":"1F682","j":["engine","railway","steam","train","transportation","vehicle"]},"railway-car":{"a":"Railway Car","b":"1F683","j":["car","electric","railway","train","tram","trolleybus","transportation","vehicle"]},"highspeed-train":{"a":"High-Speed Train","b":"1F684","j":["high-speed train","railway","shinkansen","speed","train","high_speed_train","transportation","vehicle"]},"bullet-train":{"a":"Bullet Train","b":"1F685","j":["bullet","railway","shinkansen","speed","train","transportation","vehicle","fast","public","travel"]},"train":{"a":"Train","b":"1F686","j":["railway","transportation","vehicle"]},"metro":{"a":"Metro","b":"1F687","j":["subway","transportation","blue-square","mrt","underground","tube"]},"light-rail":{"a":"Light Rail","b":"1F688","j":["railway","transportation","vehicle"]},"station":{"a":"Station","b":"1F689","j":["railway","train","transportation","vehicle","public"]},"tram":{"a":"Tram","b":"1F68A","j":["trolleybus","transportation","vehicle"]},"monorail":{"a":"Monorail","b":"1F69D","j":["vehicle","transportation"]},"mountain-railway":{"a":"Mountain Railway","b":"1F69E","j":["car","mountain","railway","transportation","vehicle"]},"tram-car":{"a":"Tram Car","b":"1F68B","j":["car","tram","trolleybus","transportation","vehicle","carriage","public","travel"]},"bus":{"a":"Bus","b":"1F68C","j":["vehicle","car","transportation"]},"oncoming-bus":{"a":"Oncoming Bus","b":"1F68D","j":["bus","oncoming","vehicle","transportation"]},"trolleybus":{"a":"Trolleybus","b":"1F68E","j":["bus","tram","trolley","bart","transportation","vehicle"]},"minibus":{"a":"Minibus","b":"1F690","j":["bus","vehicle","car","transportation"]},"ambulance":{"a":"Ambulance","b":"1F691","j":["vehicle","health","911","hospital"]},"fire-engine":{"a":"Fire Engine","b":"1F692","j":["engine","fire","truck","transportation","cars","vehicle"]},"police-car":{"a":"Police Car","b":"1F693","j":["car","patrol","police","vehicle","cars","transportation","law","legal","enforcement"]},"oncoming-police-car":{"a":"Oncoming Police Car","b":"1F694","j":["car","oncoming","police","vehicle","law","legal","enforcement","911"]},"taxi":{"a":"Taxi","b":"1F695","j":["vehicle","uber","cars","transportation"]},"oncoming-taxi":{"a":"Oncoming Taxi","b":"1F696","j":["oncoming","taxi","vehicle","cars","uber"]},"automobile":{"a":"Automobile","b":"1F697","j":["car","red","transportation","vehicle"]},"oncoming-automobile":{"a":"Oncoming Automobile","b":"1F698","j":["automobile","car","oncoming","vehicle","transportation"]},"sport-utility-vehicle":{"a":"Sport Utility Vehicle","b":"1F699","j":["recreational","sport utility","transportation","vehicle"]},"pickup-truck":{"a":"Pickup Truck","b":"1F6FB","j":["pick-up","pickup","truck","car","transportation"]},"delivery-truck":{"a":"Delivery Truck","b":"1F69A","j":["delivery","truck","cars","transportation"]},"articulated-lorry":{"a":"Articulated Lorry","b":"1F69B","j":["lorry","semi","truck","vehicle","cars","transportation","express"]},"tractor":{"a":"Tractor","b":"1F69C","j":["vehicle","car","farming","agriculture"]},"racing-car":{"a":"Racing Car","b":"1F3CE","j":["car","racing","sports","race","fast","formula","f1"]},"motorcycle":{"a":"Motorcycle","b":"1F3CD","j":["racing","race","sports","fast"]},"motor-scooter":{"a":"Motor Scooter","b":"1F6F5","j":["motor","scooter","vehicle","vespa","sasha"]},"manual-wheelchair":{"a":"Manual Wheelchair","b":"1F9BD","j":["accessibility"]},"motorized-wheelchair":{"a":"Motorized Wheelchair","b":"1F9BC","j":["accessibility"]},"auto-rickshaw":{"a":"Auto Rickshaw","b":"1F6FA","j":["tuk tuk","move","transportation"]},"bicycle":{"a":"Bicycle","b":"1F6B2","j":["bike","sports","exercise","hipster"]},"kick-scooter":{"a":"Kick Scooter","b":"1F6F4","j":["kick","scooter","vehicle","razor"]},"skateboard":{"a":"Skateboard","b":"1F6F9","j":["board"]},"roller-skate":{"a":"Roller Skate","b":"1F6FC","j":["roller","skate","footwear","sports"]},"bus-stop":{"a":"Bus Stop","b":"1F68F","j":["bus","busstop","stop","transportation","wait"]},"motorway":{"a":"Motorway","b":"1F6E3","j":["highway","road","cupertino","interstate"]},"railway-track":{"a":"Railway Track","b":"1F6E4","j":["railway","train","transportation"]},"oil-drum":{"a":"Oil Drum","b":"1F6E2","j":["drum","oil","barrell"]},"fuel-pump":{"a":"Fuel Pump","b":"26FD","j":["diesel","fuel","fuelpump","gas","pump","station","gas station","petroleum"]},"police-car-light":{"a":"Police Car Light","b":"1F6A8","j":["beacon","car","light","police","revolving","ambulance","911","emergency","alert","error","pinged","law","legal"]},"horizontal-traffic-light":{"a":"Horizontal Traffic Light","b":"1F6A5","j":["light","signal","traffic","transportation"]},"vertical-traffic-light":{"a":"Vertical Traffic Light","b":"1F6A6","j":["light","signal","traffic","transportation","driving"]},"stop-sign":{"a":"Stop Sign","b":"1F6D1","j":["octagonal","sign","stop"]},"construction":{"a":"Construction","b":"1F6A7","j":["barrier","wip","progress","caution","warning"]},"anchor":{"a":"Anchor","b":"2693","j":["ship","tool","ferry","sea","boat"]},"sailboat":{"a":"Sailboat","b":"26F5","j":["boat","resort","sea","yacht","ship","summer","transportation","water","sailing"]},"canoe":{"a":"Canoe","b":"1F6F6","j":["boat","paddle","water","ship"]},"speedboat":{"a":"Speedboat","b":"1F6A4","j":["boat","ship","transportation","vehicle","summer"]},"passenger-ship":{"a":"Passenger Ship","b":"1F6F3","j":["passenger","ship","yacht","cruise","ferry"]},"ferry":{"a":"Ferry","b":"26F4","j":["boat","passenger","ship","yacht"]},"motor-boat":{"a":"Motor Boat","b":"1F6E5","j":["boat","motorboat","ship"]},"ship":{"a":"Ship","b":"1F6A2","j":["boat","passenger","transportation","titanic","deploy"]},"airplane":{"a":"Airplane","b":"2708","j":["aeroplane","vehicle","transportation","flight","fly"]},"small-airplane":{"a":"Small Airplane","b":"1F6E9","j":["aeroplane","airplane","flight","transportation","fly","vehicle"]},"airplane-departure":{"a":"Airplane Departure","b":"1F6EB","j":["aeroplane","airplane","check-in","departure","departures","airport","flight","landing"]},"airplane-arrival":{"a":"Airplane Arrival","b":"1F6EC","j":["aeroplane","airplane","arrivals","arriving","landing","airport","flight","boarding"]},"parachute":{"a":"Parachute","b":"1FA82","j":["hang-glide","parasail","skydive","fly","glide"]},"seat":{"a":"Seat","b":"1F4BA","j":["chair","sit","airplane","transport","bus","flight","fly"]},"helicopter":{"a":"Helicopter","b":"1F681","j":["vehicle","transportation","fly"]},"suspension-railway":{"a":"Suspension Railway","b":"1F69F","j":["railway","suspension","vehicle","transportation"]},"mountain-cableway":{"a":"Mountain Cableway","b":"1F6A0","j":["cable","gondola","mountain","transportation","vehicle","ski"]},"aerial-tramway":{"a":"Aerial Tramway","b":"1F6A1","j":["aerial","cable","car","gondola","tramway","transportation","vehicle","ski"]},"satellite":{"a":"Satellite","b":"1F6F0","j":["space","communication","gps","orbit","spaceflight","NASA","ISS"]},"rocket":{"a":"Rocket","b":"1F680","j":["space","launch","ship","staffmode","NASA","outer space","outer_space","fly"]},"flying-saucer":{"a":"Flying Saucer","b":"1F6F8","j":["UFO","transportation","vehicle","ufo"]},"bellhop-bell":{"a":"Bellhop Bell","b":"1F6CE","j":["bell","bellhop","hotel","service"]},"luggage":{"a":"Luggage","b":"1F9F3","j":["packing","travel"]},"hourglass-done":{"a":"Hourglass Done","b":"231B","j":["sand","timer","time","clock","oldschool","limit","exam","quiz","test"]},"hourglass-not-done":{"a":"Hourglass Not Done","b":"23F3","j":["hourglass","sand","timer","oldschool","time","countdown"]},"watch":{"a":"Watch","b":"231A","j":["clock","time","accessories"]},"alarm-clock":{"a":"Alarm Clock","b":"23F0","j":["alarm","clock","time","wake"]},"stopwatch":{"a":"Stopwatch","b":"23F1","j":["clock","time","deadline"]},"timer-clock":{"a":"Timer Clock","b":"23F2","j":["clock","timer","alarm"]},"mantelpiece-clock":{"a":"Mantelpiece Clock","b":"1F570","j":["clock","time"]},"twelve-oclock":{"a":"Twelve O’Clock","b":"1F55B","j":["00","12","12:00","clock","o’clock","twelve","twelve_o_clock","time","noon","midnight","midday","late","early","schedule"]},"twelvethirty":{"a":"Twelve-Thirty","b":"1F567","j":["12","12:30","clock","thirty","twelve","twelve-thirty","twelve_thirty","time","late","early","schedule"]},"one-oclock":{"a":"One O’Clock","b":"1F550","j":["00","1","1:00","clock","o’clock","one","one_o_clock","time","late","early","schedule"]},"onethirty":{"a":"One-Thirty","b":"1F55C","j":["1","1:30","clock","one","one-thirty","thirty","one_thirty","time","late","early","schedule"]},"two-oclock":{"a":"Two O’Clock","b":"1F551","j":["00","2","2:00","clock","o’clock","two","two_o_clock","time","late","early","schedule"]},"twothirty":{"a":"Two-Thirty","b":"1F55D","j":["2","2:30","clock","thirty","two","two-thirty","two_thirty","time","late","early","schedule"]},"three-oclock":{"a":"Three O’Clock","b":"1F552","j":["00","3","3:00","clock","o’clock","three","three_o_clock","time","late","early","schedule"]},"threethirty":{"a":"Three-Thirty","b":"1F55E","j":["3","3:30","clock","thirty","three","three-thirty","three_thirty","time","late","early","schedule"]},"four-oclock":{"a":"Four O’Clock","b":"1F553","j":["00","4","4:00","clock","four","o’clock","four_o_clock","time","late","early","schedule"]},"fourthirty":{"a":"Four-Thirty","b":"1F55F","j":["4","4:30","clock","four","four-thirty","thirty","four_thirty","time","late","early","schedule"]},"five-oclock":{"a":"Five O’Clock","b":"1F554","j":["00","5","5:00","clock","five","o’clock","five_o_clock","time","late","early","schedule"]},"fivethirty":{"a":"Five-Thirty","b":"1F560","j":["5","5:30","clock","five","five-thirty","thirty","five_thirty","time","late","early","schedule"]},"six-oclock":{"a":"Six O’Clock","b":"1F555","j":["00","6","6:00","clock","o’clock","six","six_o_clock","time","late","early","schedule","dawn","dusk"]},"sixthirty":{"a":"Six-Thirty","b":"1F561","j":["6","6:30","clock","six","six-thirty","thirty","six_thirty","time","late","early","schedule"]},"seven-oclock":{"a":"Seven O’Clock","b":"1F556","j":["00","7","7:00","clock","o’clock","seven","seven_o_clock","time","late","early","schedule"]},"seventhirty":{"a":"Seven-Thirty","b":"1F562","j":["7","7:30","clock","seven","seven-thirty","thirty","seven_thirty","time","late","early","schedule"]},"eight-oclock":{"a":"Eight O’Clock","b":"1F557","j":["00","8","8:00","clock","eight","o’clock","eight_o_clock","time","late","early","schedule"]},"eightthirty":{"a":"Eight-Thirty","b":"1F563","j":["8","8:30","clock","eight","eight-thirty","thirty","eight_thirty","time","late","early","schedule"]},"nine-oclock":{"a":"Nine O’Clock","b":"1F558","j":["00","9","9:00","clock","nine","o’clock","nine_o_clock","time","late","early","schedule"]},"ninethirty":{"a":"Nine-Thirty","b":"1F564","j":["9","9:30","clock","nine","nine-thirty","thirty","nine_thirty","time","late","early","schedule"]},"ten-oclock":{"a":"Ten O’Clock","b":"1F559","j":["00","10","10:00","clock","o’clock","ten","ten_o_clock","time","late","early","schedule"]},"tenthirty":{"a":"Ten-Thirty","b":"1F565","j":["10","10:30","clock","ten","ten-thirty","thirty","ten_thirty","time","late","early","schedule"]},"eleven-oclock":{"a":"Eleven O’Clock","b":"1F55A","j":["00","11","11:00","clock","eleven","o’clock","eleven_o_clock","time","late","early","schedule"]},"eleventhirty":{"a":"Eleven-Thirty","b":"1F566","j":["11","11:30","clock","eleven","eleven-thirty","thirty","eleven_thirty","time","late","early","schedule"]},"new-moon":{"a":"New Moon","b":"1F311","j":["dark","moon","nature","twilight","planet","space","night","evening","sleep"]},"waxing-crescent-moon":{"a":"Waxing Crescent Moon","b":"1F312","j":["crescent","moon","waxing","nature","twilight","planet","space","night","evening","sleep"]},"first-quarter-moon":{"a":"First Quarter Moon","b":"1F313","j":["moon","quarter","nature","twilight","planet","space","night","evening","sleep"]},"waxing-gibbous-moon":{"a":"Waxing Gibbous Moon","b":"1F314","j":["gibbous","moon","waxing","nature","night","sky","gray","twilight","planet","space","evening","sleep"]},"full-moon":{"a":"Full Moon","b":"1F315","j":["full","moon","nature","yellow","twilight","planet","space","night","evening","sleep"]},"waning-gibbous-moon":{"a":"Waning Gibbous Moon","b":"1F316","j":["gibbous","moon","waning","nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"]},"last-quarter-moon":{"a":"Last Quarter Moon","b":"1F317","j":["moon","quarter","nature","twilight","planet","space","night","evening","sleep"]},"waning-crescent-moon":{"a":"Waning Crescent Moon","b":"1F318","j":["crescent","moon","waning","nature","twilight","planet","space","night","evening","sleep"]},"crescent-moon":{"a":"Crescent Moon","b":"1F319","j":["crescent","moon","night","sleep","sky","evening","magic"]},"new-moon-face":{"a":"New Moon Face","b":"1F31A","j":["face","moon","nature","twilight","planet","space","night","evening","sleep"]},"first-quarter-moon-face":{"a":"First Quarter Moon Face","b":"1F31B","j":["face","moon","quarter","nature","twilight","planet","space","night","evening","sleep"]},"last-quarter-moon-face":{"a":"Last Quarter Moon Face","b":"1F31C","j":["face","moon","quarter","nature","twilight","planet","space","night","evening","sleep"]},"thermometer":{"a":"Thermometer","b":"1F321","j":["weather","temperature","hot","cold"]},"sun":{"a":"Sun","b":"2600","j":["bright","rays","sunny","weather","nature","brightness","summer","beach","spring"]},"full-moon-face":{"a":"Full Moon Face","b":"1F31D","j":["bright","face","full","moon","nature","twilight","planet","space","night","evening","sleep"]},"sun-with-face":{"a":"Sun with Face","b":"1F31E","j":["bright","face","sun","nature","morning","sky"]},"ringed-planet":{"a":"Ringed Planet","b":"1FA90","j":["saturn","saturnine","outerspace"]},"star":{"a":"Star","b":"2B50","j":["night","yellow"]},"glowing-star":{"a":"Glowing Star","b":"1F31F","j":["glittery","glow","shining","sparkle","star","night","awesome","good","magic"]},"shooting-star":{"a":"Shooting Star","b":"1F320","j":["falling","shooting","star","night","photo"]},"milky-way":{"a":"Milky Way","b":"1F30C","j":["space","photo","stars"]},"cloud":{"a":"Cloud","b":"2601","j":["weather","sky"]},"sun-behind-cloud":{"a":"Sun Behind Cloud","b":"26C5","j":["cloud","sun","weather","nature","cloudy","morning","fall","spring"]},"cloud-with-lightning-and-rain":{"a":"Cloud with Lightning and Rain","b":"26C8","j":["cloud","rain","thunder","weather","lightning"]},"sun-behind-small-cloud":{"a":"Sun Behind Small Cloud","b":"1F324","j":["cloud","sun","weather"]},"sun-behind-large-cloud":{"a":"Sun Behind Large Cloud","b":"1F325","j":["cloud","sun","weather"]},"sun-behind-rain-cloud":{"a":"Sun Behind Rain Cloud","b":"1F326","j":["cloud","rain","sun","weather"]},"cloud-with-rain":{"a":"Cloud with Rain","b":"1F327","j":["cloud","rain","weather"]},"cloud-with-snow":{"a":"Cloud with Snow","b":"1F328","j":["cloud","cold","snow","weather"]},"cloud-with-lightning":{"a":"Cloud with Lightning","b":"1F329","j":["cloud","lightning","weather","thunder"]},"tornado":{"a":"Tornado","b":"1F32A","j":["cloud","whirlwind","weather","cyclone","twister"]},"fog":{"a":"Fog","b":"1F32B","j":["cloud","weather"]},"wind-face":{"a":"Wind Face","b":"1F32C","j":["blow","cloud","face","wind","gust","air"]},"cyclone":{"a":"Cyclone","b":"1F300","j":["dizzy","hurricane","twister","typhoon","weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado"]},"rainbow":{"a":"Rainbow","b":"1F308","j":["rain","nature","happy","unicorn_face","photo","sky","spring"]},"closed-umbrella":{"a":"Closed Umbrella","b":"1F302","j":["clothing","rain","umbrella","weather","drizzle"]},"umbrella":{"a":"Umbrella","b":"2602","j":["clothing","rain","weather","spring"]},"umbrella-with-rain-drops":{"a":"Umbrella with Rain Drops","b":"2614","j":["clothing","drop","rain","umbrella","rainy","weather","spring"]},"umbrella-on-ground":{"a":"Umbrella on Ground","b":"26F1","j":["rain","sun","umbrella","weather","summer"]},"high-voltage":{"a":"High Voltage","b":"26A1","j":["danger","electric","lightning","voltage","zap","thunder","weather","lightning bolt","fast"]},"snowflake":{"a":"Snowflake","b":"2744","j":["cold","snow","winter","season","weather","christmas","xmas"]},"snowman":{"a":"Snowman","b":"2603","j":["cold","snow","winter","season","weather","christmas","xmas","frozen"]},"snowman-without-snow":{"a":"Snowman Without Snow","b":"26C4","j":["cold","snow","snowman","winter","season","weather","christmas","xmas","frozen","without_snow"]},"comet":{"a":"Comet","b":"2604","j":["space"]},"fire":{"a":"Fire","b":"1F525","j":["flame","tool","hot","cook"]},"droplet":{"a":"Droplet","b":"1F4A7","j":["cold","comic","drop","sweat","water","drip","faucet","spring"]},"water-wave":{"a":"Water Wave","b":"1F30A","j":["ocean","water","wave","sea","nature","tsunami","disaster"]},"jackolantern":{"a":"Jack-O-Lantern","b":"1F383","j":["celebration","halloween","jack","jack-o-lantern","lantern","jack_o_lantern","light","pumpkin","creepy","fall"]},"christmas-tree":{"a":"Christmas Tree","b":"1F384","j":["celebration","Christmas","tree","festival","vacation","december","xmas"]},"fireworks":{"a":"Fireworks","b":"1F386","j":["celebration","photo","festival","carnival","congratulations"]},"sparkler":{"a":"Sparkler","b":"1F387","j":["celebration","fireworks","sparkle","stars","night","shine"]},"firecracker":{"a":"Firecracker","b":"1F9E8","j":["dynamite","explosive","fireworks","boom","explode","explosion"]},"sparkles":{"a":"Sparkles","b":"2728","j":["*","sparkle","star","stars","shine","shiny","cool","awesome","good","magic"]},"balloon":{"a":"Balloon","b":"1F388","j":["celebration","party","birthday","circus"]},"party-popper":{"a":"Party Popper","b":"1F389","j":["celebration","party","popper","tada","congratulations","birthday","magic","circus"]},"confetti-ball":{"a":"Confetti Ball","b":"1F38A","j":["ball","celebration","confetti","festival","party","birthday","circus"]},"tanabata-tree":{"a":"Tanabata Tree","b":"1F38B","j":["banner","celebration","Japanese","tree","plant","nature","branch","summer"]},"pine-decoration":{"a":"Pine Decoration","b":"1F38D","j":["bamboo","celebration","Japanese","pine","plant","nature","vegetable","panda"]},"japanese-dolls":{"a":"Japanese Dolls","b":"1F38E","j":["celebration","doll","festival","Japanese","Japanese dolls","japanese","toy","kimono"]},"carp-streamer":{"a":"Carp Streamer","b":"1F38F","j":["carp","celebration","streamer","fish","japanese","koinobori","banner"]},"wind-chime":{"a":"Wind Chime","b":"1F390","j":["bell","celebration","chime","wind","nature","ding","spring"]},"moon-viewing-ceremony":{"a":"Moon Viewing Ceremony","b":"1F391","j":["celebration","ceremony","moon","photo","japan","asia","tsukimi"]},"red-envelope":{"a":"Red Envelope","b":"1F9E7","j":["gift","good luck","hóngbāo","lai see","money"]},"ribbon":{"a":"Ribbon","b":"1F380","j":["celebration","decoration","pink","girl","bowtie"]},"wrapped-gift":{"a":"Wrapped Gift","b":"1F381","j":["box","celebration","gift","present","wrapped","birthday","christmas","xmas"]},"reminder-ribbon":{"a":"Reminder Ribbon","b":"1F397","j":["celebration","reminder","ribbon","sports","cause","support","awareness"]},"admission-tickets":{"a":"Admission Tickets","b":"1F39F","j":["admission","ticket","sports","concert","entrance"]},"ticket":{"a":"Ticket","b":"1F3AB","j":["admission","event","concert","pass"]},"military-medal":{"a":"Military Medal","b":"1F396","j":["celebration","medal","military","award","winning","army"]},"trophy":{"a":"Trophy","b":"1F3C6","j":["prize","win","award","contest","place","ftw","ceremony"]},"sports-medal":{"a":"Sports Medal","b":"1F3C5","j":["medal","award","winning"]},"1st-place-medal":{"a":"1st Place Medal","b":"1F947","j":["first","gold","medal","award","winning"]},"2nd-place-medal":{"a":"2nd Place Medal","b":"1F948","j":["medal","second","silver","award"]},"3rd-place-medal":{"a":"3rd Place Medal","b":"1F949","j":["bronze","medal","third","award"]},"soccer-ball":{"a":"Soccer Ball","b":"26BD","j":["ball","football","soccer","sports"]},"baseball":{"a":"Baseball","b":"26BE","j":["ball","sports","balls"]},"softball":{"a":"Softball","b":"1F94E","j":["ball","glove","underarm","sports","balls"]},"basketball":{"a":"Basketball","b":"1F3C0","j":["ball","hoop","sports","balls","NBA"]},"volleyball":{"a":"Volleyball","b":"1F3D0","j":["ball","game","sports","balls"]},"american-football":{"a":"American Football","b":"1F3C8","j":["american","ball","football","sports","balls","NFL"]},"rugby-football":{"a":"Rugby Football","b":"1F3C9","j":["ball","football","rugby","sports","team"]},"tennis":{"a":"Tennis","b":"1F3BE","j":["ball","racquet","sports","balls","green"]},"flying-disc":{"a":"Flying Disc","b":"1F94F","j":["ultimate","sports","frisbee"]},"bowling":{"a":"Bowling","b":"1F3B3","j":["ball","game","sports","fun","play"]},"cricket-game":{"a":"Cricket Game","b":"1F3CF","j":["ball","bat","game","sports"]},"field-hockey":{"a":"Field Hockey","b":"1F3D1","j":["ball","field","game","hockey","stick","sports"]},"ice-hockey":{"a":"Ice Hockey","b":"1F3D2","j":["game","hockey","ice","puck","stick","sports"]},"lacrosse":{"a":"Lacrosse","b":"1F94D","j":["ball","goal","stick","sports"]},"ping-pong":{"a":"Ping Pong","b":"1F3D3","j":["ball","bat","game","paddle","table tennis","sports","pingpong"]},"badminton":{"a":"Badminton","b":"1F3F8","j":["birdie","game","racquet","shuttlecock","sports"]},"boxing-glove":{"a":"Boxing Glove","b":"1F94A","j":["boxing","glove","sports","fighting"]},"martial-arts-uniform":{"a":"Martial Arts Uniform","b":"1F94B","j":["judo","karate","martial arts","taekwondo","uniform"]},"goal-net":{"a":"Goal Net","b":"1F945","j":["goal","net","sports"]},"flag-in-hole":{"a":"Flag in Hole","b":"26F3","j":["golf","hole","sports","business","flag","summer"]},"ice-skate":{"a":"Ice Skate","b":"26F8","j":["ice","skate","sports"]},"fishing-pole":{"a":"Fishing Pole","b":"1F3A3","j":["fish","pole","food","hobby","summer"]},"diving-mask":{"a":"Diving Mask","b":"1F93F","j":["diving","scuba","snorkeling","sport","ocean"]},"running-shirt":{"a":"Running Shirt","b":"1F3BD","j":["athletics","running","sash","shirt","play","pageant"]},"skis":{"a":"Skis","b":"1F3BF","j":["ski","snow","sports","winter","cold"]},"sled":{"a":"Sled","b":"1F6F7","j":["sledge","sleigh","luge","toboggan"]},"curling-stone":{"a":"Curling Stone","b":"1F94C","j":["game","rock","sports"]},"bullseye":{"a":"Bullseye","b":"1F3AF","j":["dart","direct hit","game","hit","target","direct_hit","play","bar"]},"yoyo":{"a":"Yo-Yo","b":"1FA80","j":["fluctuate","toy","yo-yo","yo_yo"]},"kite":{"a":"Kite","b":"1FA81","j":["fly","soar","wind"]},"pool-8-ball":{"a":"Pool 8 Ball","b":"1F3B1","j":["8","ball","billiard","eight","game","pool","hobby","luck","magic"]},"crystal-ball":{"a":"Crystal Ball","b":"1F52E","j":["ball","crystal","fairy tale","fantasy","fortune","tool","disco","party","magic","circus","fortune_teller"]},"magic-wand":{"a":"Magic Wand","b":"1FA84","j":["magic","witch","wizard","supernature","power"]},"nazar-amulet":{"a":"Nazar Amulet","b":"1F9FF","j":["bead","charm","evil-eye","nazar","talisman"]},"video-game":{"a":"Video Game","b":"1F3AE","j":["controller","game","play","console","PS4"]},"joystick":{"a":"Joystick","b":"1F579","j":["game","video game","play"]},"slot-machine":{"a":"Slot Machine","b":"1F3B0","j":["game","slot","bet","gamble","vegas","fruit machine","luck","casino"]},"game-die":{"a":"Game Die","b":"1F3B2","j":["dice","die","game","random","tabletop","play","luck"]},"puzzle-piece":{"a":"Puzzle Piece","b":"1F9E9","j":["clue","interlocking","jigsaw","piece","puzzle"]},"teddy-bear":{"a":"Teddy Bear","b":"1F9F8","j":["plaything","plush","stuffed","toy"]},"piata":{"a":"Piñata","b":"1FA85","j":["celebration","party","piñata","pinata","mexico","candy"]},"nesting-dolls":{"a":"Nesting Dolls","b":"1FA86","j":["doll","nesting","russia","matryoshka","toy"]},"spade-suit":{"a":"Spade Suit","b":"2660","j":["card","game","poker","cards","suits","magic"]},"heart-suit":{"a":"Heart Suit","b":"2665","j":["card","game","poker","cards","magic","suits"]},"diamond-suit":{"a":"Diamond Suit","b":"2666","j":["card","game","poker","cards","magic","suits"]},"club-suit":{"a":"Club Suit","b":"2663","j":["card","game","poker","cards","magic","suits"]},"chess-pawn":{"a":"Chess Pawn","b":"265F","j":["chess","dupe","expendable"]},"joker":{"a":"Joker","b":"1F0CF","j":["card","game","wildcard","poker","cards","play","magic"]},"mahjong-red-dragon":{"a":"Mahjong Red Dragon","b":"1F004","j":["game","mahjong","red","play","chinese","kanji"]},"flower-playing-cards":{"a":"Flower Playing Cards","b":"1F3B4","j":["card","flower","game","Japanese","playing","sunset","red"]},"performing-arts":{"a":"Performing Arts","b":"1F3AD","j":["art","mask","performing","theater","theatre","acting","drama"]},"framed-picture":{"a":"Framed Picture","b":"1F5BC","j":["art","frame","museum","painting","picture","photography"]},"artist-palette":{"a":"Artist Palette","b":"1F3A8","j":["art","museum","painting","palette","design","paint","draw","colors"]},"thread":{"a":"Thread","b":"1F9F5","j":["needle","sewing","spool","string"]},"sewing-needle":{"a":"Sewing Needle","b":"1FAA1","j":["embroidery","needle","sewing","stitches","sutures","tailoring"]},"yarn":{"a":"Yarn","b":"1F9F6","j":["ball","crochet","knit"]},"knot":{"a":"Knot","b":"1FAA2","j":["rope","tangled","tie","twine","twist","scout"]},"glasses":{"a":"Glasses","b":"1F453","j":["clothing","eye","eyeglasses","eyewear","fashion","accessories","eyesight","nerdy","dork","geek"]},"sunglasses":{"a":"Sunglasses","b":"1F576","j":["dark","eye","eyewear","glasses","face","cool","accessories"]},"goggles":{"a":"Goggles","b":"1F97D","j":["eye protection","swimming","welding","eyes","protection","safety"]},"lab-coat":{"a":"Lab Coat","b":"1F97C","j":["doctor","experiment","scientist","chemist"]},"safety-vest":{"a":"Safety Vest","b":"1F9BA","j":["emergency","safety","vest","protection"]},"necktie":{"a":"Necktie","b":"1F454","j":["clothing","tie","shirt","suitup","formal","fashion","cloth","business"]},"tshirt":{"a":"T-Shirt","b":"1F455","j":["clothing","shirt","t-shirt","t_shirt","fashion","cloth","casual","tee"]},"jeans":{"a":"Jeans","b":"1F456","j":["clothing","pants","trousers","fashion","shopping"]},"scarf":{"a":"Scarf","b":"1F9E3","j":["neck","winter","clothes"]},"gloves":{"a":"Gloves","b":"1F9E4","j":["hand","hands","winter","clothes"]},"coat":{"a":"Coat","b":"1F9E5","j":["jacket"]},"socks":{"a":"Socks","b":"1F9E6","j":["stocking","stockings","clothes"]},"dress":{"a":"Dress","b":"1F457","j":["clothing","clothes","fashion","shopping"]},"kimono":{"a":"Kimono","b":"1F458","j":["clothing","dress","fashion","women","female","japanese"]},"sari":{"a":"Sari","b":"1F97B","j":["clothing","dress"]},"onepiece-swimsuit":{"a":"One-Piece Swimsuit","b":"1FA71","j":["bathing suit","one-piece swimsuit","one_piece_swimsuit","fashion"]},"briefs":{"a":"Briefs","b":"1FA72","j":["bathing suit","one-piece","swimsuit","underwear","clothing"]},"shorts":{"a":"Shorts","b":"1FA73","j":["bathing suit","pants","underwear","clothing"]},"bikini":{"a":"Bikini","b":"1F459","j":["clothing","swim","swimming","female","woman","girl","fashion","beach","summer"]},"womans-clothes":{"a":"Woman’S Clothes","b":"1F45A","j":["clothing","woman","woman’s clothes","woman_s_clothes","fashion","shopping_bags","female"]},"purse":{"a":"Purse","b":"1F45B","j":["clothing","coin","fashion","accessories","money","sales","shopping"]},"handbag":{"a":"Handbag","b":"1F45C","j":["bag","clothing","purse","fashion","accessory","accessories","shopping"]},"clutch-bag":{"a":"Clutch Bag","b":"1F45D","j":["bag","clothing","pouch","accessories","shopping"]},"shopping-bags":{"a":"Shopping Bags","b":"1F6CD","j":["bag","hotel","shopping","mall","buy","purchase"]},"backpack":{"a":"Backpack","b":"1F392","j":["bag","rucksack","satchel","school","student","education"]},"thong-sandal":{"a":"Thong Sandal","b":"1FA74","j":["beach sandals","sandals","thong sandals","thongs","zōri","footwear","summer"]},"mans-shoe":{"a":"Man’S Shoe","b":"1F45E","j":["clothing","man","man’s shoe","shoe","man_s_shoe","fashion","male"]},"running-shoe":{"a":"Running Shoe","b":"1F45F","j":["athletic","clothing","shoe","sneaker","shoes","sports","sneakers"]},"hiking-boot":{"a":"Hiking Boot","b":"1F97E","j":["backpacking","boot","camping","hiking"]},"flat-shoe":{"a":"Flat Shoe","b":"1F97F","j":["ballet flat","slip-on","slipper","ballet"]},"highheeled-shoe":{"a":"High-Heeled Shoe","b":"1F460","j":["clothing","heel","high-heeled shoe","shoe","woman","high_heeled_shoe","fashion","shoes","female","pumps","stiletto"]},"womans-sandal":{"a":"Woman’S Sandal","b":"1F461","j":["clothing","sandal","shoe","woman","woman’s sandal","woman_s_sandal","shoes","fashion","flip flops"]},"ballet-shoes":{"a":"Ballet Shoes","b":"1FA70","j":["ballet","dance"]},"womans-boot":{"a":"Woman’S Boot","b":"1F462","j":["boot","clothing","shoe","woman","woman’s boot","woman_s_boot","shoes","fashion"]},"crown":{"a":"Crown","b":"1F451","j":["clothing","king","queen","kod","leader","royalty","lord"]},"womans-hat":{"a":"Woman’S Hat","b":"1F452","j":["clothing","hat","woman","woman’s hat","woman_s_hat","fashion","accessories","female","lady","spring"]},"top-hat":{"a":"Top Hat","b":"1F3A9","j":["clothing","hat","top","tophat","magic","gentleman","classy","circus"]},"graduation-cap":{"a":"Graduation Cap","b":"1F393","j":["cap","celebration","clothing","graduation","hat","school","college","degree","university","legal","learn","education"]},"billed-cap":{"a":"Billed Cap","b":"1F9E2","j":["baseball cap","cap","baseball"]},"military-helmet":{"a":"Military Helmet","b":"1FA96","j":["army","helmet","military","soldier","warrior","protection"]},"rescue-workers-helmet":{"a":"Rescue Worker’S Helmet","b":"26D1","j":["aid","cross","face","hat","helmet","rescue worker’s helmet","rescue_worker_s_helmet","construction","build"]},"prayer-beads":{"a":"Prayer Beads","b":"1F4FF","j":["beads","clothing","necklace","prayer","religion","dhikr","religious"]},"lipstick":{"a":"Lipstick","b":"1F484","j":["cosmetics","makeup","female","girl","fashion","woman"]},"ring":{"a":"Ring","b":"1F48D","j":["diamond","wedding","propose","marriage","valentines","fashion","jewelry","gem","engagement"]},"gem-stone":{"a":"Gem Stone","b":"1F48E","j":["diamond","gem","jewel","blue","ruby","jewelry"]},"muted-speaker":{"a":"Muted Speaker","b":"1F507","j":["mute","quiet","silent","speaker","sound","volume","silence"]},"speaker-low-volume":{"a":"Speaker Low Volume","b":"1F508","j":["soft","sound","volume","silence","broadcast"]},"speaker-medium-volume":{"a":"Speaker Medium Volume","b":"1F509","j":["medium","volume","speaker","broadcast"]},"speaker-high-volume":{"a":"Speaker High Volume","b":"1F50A","j":["loud","volume","noise","noisy","speaker","broadcast"]},"loudspeaker":{"a":"Loudspeaker","b":"1F4E2","j":["loud","public address","volume","sound"]},"megaphone":{"a":"Megaphone","b":"1F4E3","j":["cheering","sound","speaker","volume"]},"postal-horn":{"a":"Postal Horn","b":"1F4EF","j":["horn","post","postal","instrument","music"]},"bell":{"a":"Bell","b":"1F514","j":["sound","notification","christmas","xmas","chime"]},"bell-with-slash":{"a":"Bell with Slash","b":"1F515","j":["bell","forbidden","mute","quiet","silent","sound","volume"]},"musical-score":{"a":"Musical Score","b":"1F3BC","j":["music","score","treble","clef","compose"]},"musical-note":{"a":"Musical Note","b":"1F3B5","j":["music","note","score","tone","sound"]},"musical-notes":{"a":"Musical Notes","b":"1F3B6","j":["music","note","notes","score"]},"studio-microphone":{"a":"Studio Microphone","b":"1F399","j":["mic","microphone","music","studio","sing","recording","artist","talkshow"]},"level-slider":{"a":"Level Slider","b":"1F39A","j":["level","music","slider","scale"]},"control-knobs":{"a":"Control Knobs","b":"1F39B","j":["control","knobs","music","dial"]},"microphone":{"a":"Microphone","b":"1F3A4","j":["karaoke","mic","sound","music","PA","sing","talkshow"]},"headphone":{"a":"Headphone","b":"1F3A7","j":["earbud","music","score","gadgets"]},"radio":{"a":"Radio","b":"1F4FB","j":["video","communication","music","podcast","program"]},"saxophone":{"a":"Saxophone","b":"1F3B7","j":["instrument","music","sax","jazz","blues"]},"accordion":{"a":"Accordion","b":"1FA97","j":["concertina","squeeze box","music"]},"guitar":{"a":"Guitar","b":"1F3B8","j":["instrument","music"]},"musical-keyboard":{"a":"Musical Keyboard","b":"1F3B9","j":["instrument","keyboard","music","piano","compose"]},"trumpet":{"a":"Trumpet","b":"1F3BA","j":["instrument","music","brass"]},"violin":{"a":"Violin","b":"1F3BB","j":["instrument","music","orchestra","symphony"]},"banjo":{"a":"Banjo","b":"1FA95","j":["music","stringed","instructment"]},"drum":{"a":"Drum","b":"1F941","j":["drumsticks","music","instrument","snare"]},"long-drum":{"a":"Long Drum","b":"1FA98","j":["beat","conga","drum","rhythm","music"]},"mobile-phone":{"a":"Mobile Phone","b":"1F4F1","j":["cell","mobile","phone","telephone","technology","apple","gadgets","dial"]},"mobile-phone-with-arrow":{"a":"Mobile Phone with Arrow","b":"1F4F2","j":["arrow","cell","mobile","phone","receive","iphone","incoming"]},"telephone":{"a":"Telephone","b":"260E","j":["phone","technology","communication","dial"]},"telephone-receiver":{"a":"Telephone Receiver","b":"1F4DE","j":["phone","receiver","telephone","technology","communication","dial"]},"pager":{"a":"Pager","b":"1F4DF","j":["bbcall","oldschool","90s"]},"fax-machine":{"a":"Fax Machine","b":"1F4E0","j":["fax","communication","technology"]},"battery":{"a":"Battery","b":"1F50B","j":["power","energy","sustain"]},"electric-plug":{"a":"Electric Plug","b":"1F50C","j":["electric","electricity","plug","charger","power"]},"laptop":{"a":"Laptop","b":"1F4BB","j":["computer","pc","personal","technology","screen","display","monitor"]},"desktop-computer":{"a":"Desktop Computer","b":"1F5A5","j":["computer","desktop","technology","computing","screen"]},"printer":{"a":"Printer","b":"1F5A8","j":["computer","paper","ink"]},"keyboard":{"a":"Keyboard","b":"2328","j":["computer","technology","type","input","text"]},"computer-mouse":{"a":"Computer Mouse","b":"1F5B1","j":["computer","click"]},"trackball":{"a":"Trackball","b":"1F5B2","j":["computer","technology","trackpad"]},"computer-disk":{"a":"Computer Disk","b":"1F4BD","j":["computer","disk","minidisk","optical","technology","record","data","90s"]},"floppy-disk":{"a":"Floppy Disk","b":"1F4BE","j":["computer","disk","floppy","oldschool","technology","save","90s","80s"]},"optical-disk":{"a":"Optical Disk","b":"1F4BF","j":["cd","computer","disk","optical","technology","dvd","disc","90s"]},"dvd":{"a":"Dvd","b":"1F4C0","j":["blu-ray","computer","disk","optical","cd","disc"]},"abacus":{"a":"Abacus","b":"1F9EE","j":["calculation"]},"movie-camera":{"a":"Movie Camera","b":"1F3A5","j":["camera","cinema","movie","film","record"]},"film-frames":{"a":"Film Frames","b":"1F39E","j":["cinema","film","frames","movie"]},"film-projector":{"a":"Film Projector","b":"1F4FD","j":["cinema","film","movie","projector","video","tape","record"]},"clapper-board":{"a":"Clapper Board","b":"1F3AC","j":["clapper","movie","film","record"]},"television":{"a":"Television","b":"1F4FA","j":["tv","video","technology","program","oldschool","show"]},"camera":{"a":"Camera","b":"1F4F7","j":["video","gadgets","photography"]},"camera-with-flash":{"a":"Camera with Flash","b":"1F4F8","j":["camera","flash","video","photography","gadgets"]},"video-camera":{"a":"Video Camera","b":"1F4F9","j":["camera","video","film","record"]},"videocassette":{"a":"Videocassette","b":"1F4FC","j":["tape","vhs","video","record","oldschool","90s","80s"]},"magnifying-glass-tilted-left":{"a":"Magnifying Glass Tilted Left","b":"1F50D","j":["glass","magnifying","search","tool","zoom","find","detective"]},"magnifying-glass-tilted-right":{"a":"Magnifying Glass Tilted Right","b":"1F50E","j":["glass","magnifying","search","tool","zoom","find","detective"]},"candle":{"a":"Candle","b":"1F56F","j":["light","fire","wax"]},"light-bulb":{"a":"Light Bulb","b":"1F4A1","j":["bulb","comic","electric","idea","light","electricity"]},"flashlight":{"a":"Flashlight","b":"1F526","j":["electric","light","tool","torch","dark","camping","sight","night"]},"red-paper-lantern":{"a":"Red Paper Lantern","b":"1F3EE","j":["bar","lantern","light","red","paper","halloween","spooky"]},"diya-lamp":{"a":"Diya Lamp","b":"1FA94","j":["diya","lamp","oil","lighting"]},"notebook-with-decorative-cover":{"a":"Notebook with Decorative Cover","b":"1F4D4","j":["book","cover","decorated","notebook","classroom","notes","record","paper","study"]},"closed-book":{"a":"Closed Book","b":"1F4D5","j":["book","closed","read","library","knowledge","textbook","learn"]},"open-book":{"a":"Open Book","b":"1F4D6","j":["book","open","read","library","knowledge","literature","learn","study"]},"green-book":{"a":"Green Book","b":"1F4D7","j":["book","green","read","library","knowledge","study"]},"blue-book":{"a":"Blue Book","b":"1F4D8","j":["blue","book","read","library","knowledge","learn","study"]},"orange-book":{"a":"Orange Book","b":"1F4D9","j":["book","orange","read","library","knowledge","textbook","study"]},"books":{"a":"Books","b":"1F4DA","j":["book","literature","library","study"]},"notebook":{"a":"Notebook","b":"1F4D3","j":["stationery","record","notes","paper","study"]},"ledger":{"a":"Ledger","b":"1F4D2","j":["notebook","notes","paper"]},"page-with-curl":{"a":"Page with Curl","b":"1F4C3","j":["curl","document","page","documents","office","paper"]},"scroll":{"a":"Scroll","b":"1F4DC","j":["paper","documents","ancient","history"]},"page-facing-up":{"a":"Page Facing Up","b":"1F4C4","j":["document","page","documents","office","paper","information"]},"newspaper":{"a":"Newspaper","b":"1F4F0","j":["news","paper","press","headline"]},"rolledup-newspaper":{"a":"Rolled-Up Newspaper","b":"1F5DE","j":["news","newspaper","paper","rolled","rolled-up newspaper","rolled_up_newspaper","press","headline"]},"bookmark-tabs":{"a":"Bookmark Tabs","b":"1F4D1","j":["bookmark","mark","marker","tabs","favorite","save","order","tidy"]},"bookmark":{"a":"Bookmark","b":"1F516","j":["mark","favorite","label","save"]},"label":{"a":"Label","b":"1F3F7","j":["sale","tag"]},"money-bag":{"a":"Money Bag","b":"1F4B0","j":["bag","dollar","money","moneybag","payment","coins","sale"]},"coin":{"a":"Coin","b":"1FA99","j":["gold","metal","money","silver","treasure","currency"]},"yen-banknote":{"a":"Yen Banknote","b":"1F4B4","j":["banknote","bill","currency","money","note","yen","sales","japanese","dollar"]},"dollar-banknote":{"a":"Dollar Banknote","b":"1F4B5","j":["banknote","bill","currency","dollar","money","note","sales"]},"euro-banknote":{"a":"Euro Banknote","b":"1F4B6","j":["banknote","bill","currency","euro","money","note","sales","dollar"]},"pound-banknote":{"a":"Pound Banknote","b":"1F4B7","j":["banknote","bill","currency","money","note","pound","british","sterling","sales","bills","uk","england"]},"money-with-wings":{"a":"Money with Wings","b":"1F4B8","j":["banknote","bill","fly","money","wings","dollar","bills","payment","sale"]},"credit-card":{"a":"Credit Card","b":"1F4B3","j":["card","credit","money","sales","dollar","bill","payment","shopping"]},"receipt":{"a":"Receipt","b":"1F9FE","j":["accounting","bookkeeping","evidence","proof","expenses"]},"chart-increasing-with-yen":{"a":"Chart Increasing with Yen","b":"1F4B9","j":["chart","graph","growth","money","yen","green-square","presentation","stats"]},"envelope":{"a":"Envelope","b":"2709","j":["email","letter","postal","inbox","communication"]},"email":{"a":"E-Mail","b":"1F4E7","j":["e-mail","letter","mail","e_mail","communication","inbox"]},"incoming-envelope":{"a":"Incoming Envelope","b":"1F4E8","j":["e-mail","email","envelope","incoming","letter","receive","inbox"]},"envelope-with-arrow":{"a":"Envelope with Arrow","b":"1F4E9","j":["arrow","e-mail","email","envelope","outgoing","communication"]},"outbox-tray":{"a":"Outbox Tray","b":"1F4E4","j":["box","letter","mail","outbox","sent","tray","inbox","email"]},"inbox-tray":{"a":"Inbox Tray","b":"1F4E5","j":["box","inbox","letter","mail","receive","tray","email","documents"]},"package":{"a":"Package","b":"1F4E6","j":["box","parcel","mail","gift","cardboard","moving"]},"closed-mailbox-with-raised-flag":{"a":"Closed Mailbox with Raised Flag","b":"1F4EB","j":["closed","mail","mailbox","postbox","email","inbox","communication"]},"closed-mailbox-with-lowered-flag":{"a":"Closed Mailbox with Lowered Flag","b":"1F4EA","j":["closed","lowered","mail","mailbox","postbox","email","communication","inbox"]},"open-mailbox-with-raised-flag":{"a":"Open Mailbox with Raised Flag","b":"1F4EC","j":["mail","mailbox","open","postbox","email","inbox","communication"]},"open-mailbox-with-lowered-flag":{"a":"Open Mailbox with Lowered Flag","b":"1F4ED","j":["lowered","mail","mailbox","open","postbox","email","inbox"]},"postbox":{"a":"Postbox","b":"1F4EE","j":["mail","mailbox","email","letter","envelope"]},"ballot-box-with-ballot":{"a":"Ballot Box with Ballot","b":"1F5F3","j":["ballot","box","election","vote"]},"pencil":{"a":"Pencil","b":"270F","j":["stationery","write","paper","writing","school","study"]},"black-nib":{"a":"Black Nib","b":"2712","j":["nib","pen","stationery","writing","write"]},"fountain-pen":{"a":"Fountain Pen","b":"1F58B","j":["fountain","pen","stationery","writing","write"]},"pen":{"a":"Pen","b":"1F58A","j":["ballpoint","stationery","writing","write"]},"paintbrush":{"a":"Paintbrush","b":"1F58C","j":["painting","drawing","creativity","art"]},"crayon":{"a":"Crayon","b":"1F58D","j":["drawing","creativity"]},"memo":{"a":"Memo","b":"1F4DD","j":["pencil","write","documents","stationery","paper","writing","legal","exam","quiz","test","study","compose"]},"briefcase":{"a":"Briefcase","b":"1F4BC","j":["business","documents","work","law","legal","job","career"]},"file-folder":{"a":"File Folder","b":"1F4C1","j":["file","folder","documents","business","office"]},"open-file-folder":{"a":"Open File Folder","b":"1F4C2","j":["file","folder","open","documents","load"]},"card-index-dividers":{"a":"Card Index Dividers","b":"1F5C2","j":["card","dividers","index","organizing","business","stationery"]},"calendar":{"a":"Calendar","b":"1F4C5","j":["date","schedule"]},"tearoff-calendar":{"a":"Tear-off Calendar","b":"1F4C6","j":["calendar","tear-off calendar","tear_off_calendar","schedule","date","planning"]},"spiral-notepad":{"a":"Spiral Notepad","b":"1F5D2","j":["note","pad","spiral","memo","stationery"]},"spiral-calendar":{"a":"Spiral Calendar","b":"1F5D3","j":["calendar","pad","spiral","date","schedule","planning"]},"card-index":{"a":"Card Index","b":"1F4C7","j":["card","index","rolodex","business","stationery"]},"chart-increasing":{"a":"Chart Increasing","b":"1F4C8","j":["chart","graph","growth","trend","upward","presentation","stats","recovery","business","economics","money","sales","good","success"]},"chart-decreasing":{"a":"Chart Decreasing","b":"1F4C9","j":["chart","down","graph","trend","presentation","stats","recession","business","economics","money","sales","bad","failure"]},"bar-chart":{"a":"Bar Chart","b":"1F4CA","j":["bar","chart","graph","presentation","stats"]},"clipboard":{"a":"Clipboard","b":"1F4CB","j":["stationery","documents"]},"pushpin":{"a":"Pushpin","b":"1F4CC","j":["pin","stationery","mark","here"]},"round-pushpin":{"a":"Round Pushpin","b":"1F4CD","j":["pin","pushpin","stationery","location","map","here"]},"paperclip":{"a":"Paperclip","b":"1F4CE","j":["documents","stationery"]},"linked-paperclips":{"a":"Linked Paperclips","b":"1F587","j":["link","paperclip","documents","stationery"]},"straight-ruler":{"a":"Straight Ruler","b":"1F4CF","j":["ruler","straight edge","stationery","calculate","length","math","school","drawing","architect","sketch"]},"triangular-ruler":{"a":"Triangular Ruler","b":"1F4D0","j":["ruler","set","triangle","stationery","math","architect","sketch"]},"scissors":{"a":"Scissors","b":"2702","j":["cutting","tool","stationery","cut"]},"card-file-box":{"a":"Card File Box","b":"1F5C3","j":["box","card","file","business","stationery"]},"file-cabinet":{"a":"File Cabinet","b":"1F5C4","j":["cabinet","file","filing","organizing"]},"wastebasket":{"a":"Wastebasket","b":"1F5D1","j":["bin","trash","rubbish","garbage","toss"]},"locked":{"a":"Locked","b":"1F512","j":["closed","security","password","padlock"]},"unlocked":{"a":"Unlocked","b":"1F513","j":["lock","open","unlock","privacy","security"]},"locked-with-pen":{"a":"Locked with Pen","b":"1F50F","j":["ink","lock","nib","pen","privacy","security","secret"]},"locked-with-key":{"a":"Locked with Key","b":"1F510","j":["closed","key","lock","secure","security","privacy"]},"key":{"a":"Key","b":"1F511","j":["lock","password","door"]},"old-key":{"a":"Old Key","b":"1F5DD","j":["clue","key","lock","old","door","password"]},"hammer":{"a":"Hammer","b":"1F528","j":["tool","tools","build","create"]},"axe":{"a":"Axe","b":"1FA93","j":["chop","hatchet","split","wood","tool","cut"]},"pick":{"a":"Pick","b":"26CF","j":["mining","tool","tools","dig"]},"hammer-and-pick":{"a":"Hammer and Pick","b":"2692","j":["hammer","pick","tool","tools","build","create"]},"hammer-and-wrench":{"a":"Hammer and Wrench","b":"1F6E0","j":["hammer","spanner","tool","wrench","tools","build","create"]},"dagger":{"a":"Dagger","b":"1F5E1","j":["knife","weapon"]},"crossed-swords":{"a":"Crossed Swords","b":"2694","j":["crossed","swords","weapon"]},"water-pistol":{"a":"Water Pistol","b":"1F52B","j":["gun","handgun","pistol","revolver","tool","water","weapon","violence"]},"boomerang":{"a":"Boomerang","b":"1FA83","j":["australia","rebound","repercussion","weapon"]},"bow-and-arrow":{"a":"Bow and Arrow","b":"1F3F9","j":["archer","arrow","bow","Sagittarius","zodiac","sports"]},"shield":{"a":"Shield","b":"1F6E1","j":["weapon","protection","security"]},"carpentry-saw":{"a":"Carpentry Saw","b":"1FA9A","j":["carpenter","lumber","saw","tool","cut","chop"]},"wrench":{"a":"Wrench","b":"1F527","j":["spanner","tool","tools","diy","ikea","fix","maintainer"]},"screwdriver":{"a":"Screwdriver","b":"1FA9B","j":["screw","tool","tools"]},"nut-and-bolt":{"a":"Nut and Bolt","b":"1F529","j":["bolt","nut","tool","handy","tools","fix"]},"gear":{"a":"Gear","b":"2699","j":["cog","cogwheel","tool"]},"clamp":{"a":"Clamp","b":"1F5DC","j":["compress","tool","vice"]},"balance-scale":{"a":"Balance Scale","b":"2696","j":["balance","justice","Libra","scale","zodiac","law","fairness","weight"]},"white-cane":{"a":"White Cane","b":"1F9AF","j":["accessibility","blind","probing_cane"]},"link":{"a":"Link","b":"1F517","j":["rings","url"]},"chains":{"a":"Chains","b":"26D3","j":["chain","lock","arrest"]},"hook":{"a":"Hook","b":"1FA9D","j":["catch","crook","curve","ensnare","selling point","tools"]},"toolbox":{"a":"Toolbox","b":"1F9F0","j":["chest","mechanic","tool","tools","diy","fix","maintainer"]},"magnet":{"a":"Magnet","b":"1F9F2","j":["attraction","horseshoe","magnetic"]},"ladder":{"a":"Ladder","b":"1FA9C","j":["climb","rung","step","tools"]},"alembic":{"a":"Alembic","b":"2697","j":["chemistry","tool","distilling","science","experiment"]},"test-tube":{"a":"Test Tube","b":"1F9EA","j":["chemist","chemistry","experiment","lab","science"]},"petri-dish":{"a":"Petri Dish","b":"1F9EB","j":["bacteria","biologist","biology","culture","lab"]},"dna":{"a":"Dna","b":"1F9EC","j":["biologist","evolution","gene","genetics","life"]},"microscope":{"a":"Microscope","b":"1F52C","j":["science","tool","laboratory","experiment","zoomin","study"]},"telescope":{"a":"Telescope","b":"1F52D","j":["science","tool","stars","space","zoom","astronomy"]},"satellite-antenna":{"a":"Satellite Antenna","b":"1F4E1","j":["antenna","dish","satellite","communication","future","radio","space"]},"syringe":{"a":"Syringe","b":"1F489","j":["medicine","needle","shot","sick","health","hospital","drugs","blood","doctor","nurse"]},"drop-of-blood":{"a":"Drop of Blood","b":"1FA78","j":["bleed","blood donation","injury","medicine","menstruation","period","hurt","harm","wound"]},"pill":{"a":"Pill","b":"1F48A","j":["doctor","medicine","sick","health","pharmacy","drug"]},"adhesive-bandage":{"a":"Adhesive Bandage","b":"1FA79","j":["bandage","heal"]},"stethoscope":{"a":"Stethoscope","b":"1FA7A","j":["doctor","heart","medicine","health"]},"door":{"a":"Door","b":"1F6AA","j":["house","entry","exit"]},"elevator":{"a":"Elevator","b":"1F6D7","j":["accessibility","hoist","lift"]},"mirror":{"a":"Mirror","b":"1FA9E","j":["reflection","reflector","speculum"]},"window":{"a":"Window","b":"1FA9F","j":["frame","fresh air","opening","transparent","view","scenery"]},"bed":{"a":"Bed","b":"1F6CF","j":["hotel","sleep","rest"]},"couch-and-lamp":{"a":"Couch and Lamp","b":"1F6CB","j":["couch","hotel","lamp","read","chill"]},"chair":{"a":"Chair","b":"1FA91","j":["seat","sit","furniture"]},"toilet":{"a":"Toilet","b":"1F6BD","j":["restroom","wc","washroom","bathroom","potty"]},"plunger":{"a":"Plunger","b":"1FAA0","j":["force cup","plumber","suction","toilet"]},"shower":{"a":"Shower","b":"1F6BF","j":["water","clean","bathroom"]},"bathtub":{"a":"Bathtub","b":"1F6C1","j":["bath","clean","shower","bathroom"]},"mouse-trap":{"a":"Mouse Trap","b":"1FAA4","j":["bait","mousetrap","snare","trap","cheese"]},"razor":{"a":"Razor","b":"1FA92","j":["sharp","shave","cut"]},"lotion-bottle":{"a":"Lotion Bottle","b":"1F9F4","j":["lotion","moisturizer","shampoo","sunscreen"]},"safety-pin":{"a":"Safety Pin","b":"1F9F7","j":["diaper","punk rock"]},"broom":{"a":"Broom","b":"1F9F9","j":["cleaning","sweeping","witch"]},"basket":{"a":"Basket","b":"1F9FA","j":["farming","laundry","picnic"]},"roll-of-paper":{"a":"Roll of Paper","b":"1F9FB","j":["paper towels","toilet paper","roll"]},"bucket":{"a":"Bucket","b":"1FAA3","j":["cask","pail","vat","water","container"]},"soap":{"a":"Soap","b":"1F9FC","j":["bar","bathing","cleaning","lather","soapdish"]},"toothbrush":{"a":"Toothbrush","b":"1FAA5","j":["bathroom","brush","clean","dental","hygiene","teeth"]},"sponge":{"a":"Sponge","b":"1F9FD","j":["absorbing","cleaning","porous"]},"fire-extinguisher":{"a":"Fire Extinguisher","b":"1F9EF","j":["extinguish","fire","quench"]},"shopping-cart":{"a":"Shopping Cart","b":"1F6D2","j":["cart","shopping","trolley"]},"cigarette":{"a":"Cigarette","b":"1F6AC","j":["smoking","kills","tobacco","joint","smoke"]},"coffin":{"a":"Coffin","b":"26B0","j":["death","vampire","dead","die","rip","graveyard","cemetery","casket","funeral","box"]},"headstone":{"a":"Headstone","b":"1FAA6","j":["cemetery","grave","graveyard","tombstone","death","rip"]},"funeral-urn":{"a":"Funeral Urn","b":"26B1","j":["ashes","death","funeral","urn","dead","die","rip"]},"moai":{"a":"Moai","b":"1F5FF","j":["face","moyai","statue","rock","easter island"]},"placard":{"a":"Placard","b":"1FAA7","j":["demonstration","picket","protest","sign","announcement"]},"atm-sign":{"a":"Atm Sign","b":"1F3E7","j":["atm","ATM sign","automated","bank","teller","money","sales","cash","blue-square","payment"]},"litter-in-bin-sign":{"a":"Litter in Bin Sign","b":"1F6AE","j":["litter","litter bin","blue-square","sign","human","info"]},"potable-water":{"a":"Potable Water","b":"1F6B0","j":["drinking","potable","water","blue-square","liquid","restroom","cleaning","faucet"]},"wheelchair-symbol":{"a":"Wheelchair Symbol","b":"267F","j":["access","blue-square","disabled","accessibility"]},"mens-room":{"a":"Men’S Room","b":"1F6B9","j":["lavatory","man","men’s room","restroom","wc","men_s_room","toilet","blue-square","gender","male"]},"womens-room":{"a":"Women’S Room","b":"1F6BA","j":["lavatory","restroom","wc","woman","women’s room","women_s_room","purple-square","female","toilet","loo","gender"]},"restroom":{"a":"Restroom","b":"1F6BB","j":["lavatory","WC","blue-square","toilet","refresh","wc","gender"]},"baby-symbol":{"a":"Baby Symbol","b":"1F6BC","j":["baby","changing","orange-square","child"]},"water-closet":{"a":"Water Closet","b":"1F6BE","j":["closet","lavatory","restroom","water","wc","toilet","blue-square"]},"passport-control":{"a":"Passport Control","b":"1F6C2","j":["control","passport","custom","blue-square"]},"customs":{"a":"Customs","b":"1F6C3","j":["passport","border","blue-square"]},"baggage-claim":{"a":"Baggage Claim","b":"1F6C4","j":["baggage","claim","blue-square","airport","transport"]},"left-luggage":{"a":"Left Luggage","b":"1F6C5","j":["baggage","locker","luggage","blue-square","travel"]},"warning":{"a":"Warning","b":"26A0","j":["exclamation","wip","alert","error","problem","issue"]},"children-crossing":{"a":"Children Crossing","b":"1F6B8","j":["child","crossing","pedestrian","traffic","school","warning","danger","sign","driving","yellow-diamond"]},"no-entry":{"a":"No Entry","b":"26D4","j":["entry","forbidden","no","not","prohibited","traffic","limit","security","privacy","bad","denied","stop","circle"]},"prohibited":{"a":"Prohibited","b":"1F6AB","j":["entry","forbidden","no","not","forbid","stop","limit","denied","disallow","circle"]},"no-bicycles":{"a":"No Bicycles","b":"1F6B3","j":["bicycle","bike","forbidden","no","prohibited","cyclist","circle"]},"no-smoking":{"a":"No Smoking","b":"1F6AD","j":["forbidden","no","not","prohibited","smoking","cigarette","blue-square","smell","smoke"]},"no-littering":{"a":"No Littering","b":"1F6AF","j":["forbidden","litter","no","not","prohibited","trash","bin","garbage","circle"]},"nonpotable-water":{"a":"Non-Potable Water","b":"1F6B1","j":["non-drinking","non-potable","water","non_potable_water","drink","faucet","tap","circle"]},"no-pedestrians":{"a":"No Pedestrians","b":"1F6B7","j":["forbidden","no","not","pedestrian","prohibited","rules","crossing","walking","circle"]},"no-mobile-phones":{"a":"No Mobile Phones","b":"1F4F5","j":["cell","forbidden","mobile","no","phone","iphone","mute","circle"]},"no-one-under-eighteen":{"a":"No One Under Eighteen","b":"1F51E","j":["18","age restriction","eighteen","prohibited","underage","drink","pub","night","minor","circle"]},"radioactive":{"a":"Radioactive","b":"2622","j":["sign","nuclear","danger"]},"biohazard":{"a":"Biohazard","b":"2623","j":["sign","danger"]},"up-arrow":{"a":"Up Arrow","b":"2B06","j":["arrow","cardinal","direction","north","blue-square","continue","top"]},"upright-arrow":{"a":"Up-Right Arrow","b":"2197","j":["arrow","direction","intercardinal","northeast","up-right arrow","up_right_arrow","blue-square","point","diagonal"]},"right-arrow":{"a":"Right Arrow","b":"27A1","j":["arrow","cardinal","direction","east","blue-square","next"]},"downright-arrow":{"a":"Down-Right Arrow","b":"2198","j":["arrow","direction","down-right arrow","intercardinal","southeast","down_right_arrow","blue-square","diagonal"]},"down-arrow":{"a":"Down Arrow","b":"2B07","j":["arrow","cardinal","direction","down","south","blue-square","bottom"]},"downleft-arrow":{"a":"Down-Left Arrow","b":"2199","j":["arrow","direction","down-left arrow","intercardinal","southwest","down_left_arrow","blue-square","diagonal"]},"left-arrow":{"a":"Left Arrow","b":"2B05","j":["arrow","cardinal","direction","west","blue-square","previous","back"]},"upleft-arrow":{"a":"Up-Left Arrow","b":"2196","j":["arrow","direction","intercardinal","northwest","up-left arrow","up_left_arrow","blue-square","point","diagonal"]},"updown-arrow":{"a":"Up-Down Arrow","b":"2195","j":["arrow","up-down arrow","up_down_arrow","blue-square","direction","way","vertical"]},"leftright-arrow":{"a":"Left-Right Arrow","b":"2194","j":["arrow","left-right arrow","left_right_arrow","shape","direction","horizontal","sideways"]},"right-arrow-curving-left":{"a":"Right Arrow Curving Left","b":"21A9","j":["arrow","back","return","blue-square","undo","enter"]},"left-arrow-curving-right":{"a":"Left Arrow Curving Right","b":"21AA","j":["arrow","blue-square","return","rotate","direction"]},"right-arrow-curving-up":{"a":"Right Arrow Curving Up","b":"2934","j":["arrow","blue-square","direction","top"]},"right-arrow-curving-down":{"a":"Right Arrow Curving Down","b":"2935","j":["arrow","down","blue-square","direction","bottom"]},"clockwise-vertical-arrows":{"a":"Clockwise Vertical Arrows","b":"1F503","j":["arrow","clockwise","reload","sync","cycle","round","repeat"]},"counterclockwise-arrows-button":{"a":"Counterclockwise Arrows Button","b":"1F504","j":["anticlockwise","arrow","counterclockwise","withershins","blue-square","sync","cycle"]},"back-arrow":{"a":"Back Arrow","b":"1F519","j":["arrow","back","BACK arrow","words","return"]},"end-arrow":{"a":"End Arrow","b":"1F51A","j":["arrow","end","END arrow","words"]},"on-arrow":{"a":"On! Arrow","b":"1F51B","j":["arrow","mark","on","ON! arrow","words"]},"soon-arrow":{"a":"Soon Arrow","b":"1F51C","j":["arrow","soon","SOON arrow","words"]},"top-arrow":{"a":"Top Arrow","b":"1F51D","j":["arrow","top","TOP arrow","up","words","blue-square"]},"place-of-worship":{"a":"Place of Worship","b":"1F6D0","j":["religion","worship","church","temple","prayer"]},"atom-symbol":{"a":"Atom Symbol","b":"269B","j":["atheist","atom","science","physics","chemistry"]},"om":{"a":"Om","b":"1F549","j":["Hindu","religion","hinduism","buddhism","sikhism","jainism"]},"star-of-david":{"a":"Star of David","b":"2721","j":["David","Jew","Jewish","religion","star","star of David","judaism"]},"wheel-of-dharma":{"a":"Wheel of Dharma","b":"2638","j":["Buddhist","dharma","religion","wheel","hinduism","buddhism","sikhism","jainism"]},"yin-yang":{"a":"Yin Yang","b":"262F","j":["religion","tao","taoist","yang","yin","balance"]},"latin-cross":{"a":"Latin Cross","b":"271D","j":["Christian","cross","religion","christianity"]},"orthodox-cross":{"a":"Orthodox Cross","b":"2626","j":["Christian","cross","religion","suppedaneum"]},"star-and-crescent":{"a":"Star and Crescent","b":"262A","j":["islam","Muslim","religion"]},"peace-symbol":{"a":"Peace Symbol","b":"262E","j":["peace","hippie"]},"menorah":{"a":"Menorah","b":"1F54E","j":["candelabrum","candlestick","religion","hanukkah","candles","jewish"]},"dotted-sixpointed-star":{"a":"Dotted Six-Pointed Star","b":"1F52F","j":["dotted six-pointed star","fortune","star","dotted_six_pointed_star","purple-square","religion","jewish","hexagram"]},"aries":{"a":"Aries","b":"2648","j":["ram","zodiac","sign","purple-square","astrology"]},"taurus":{"a":"Taurus","b":"2649","j":["bull","ox","zodiac","purple-square","sign","astrology"]},"gemini":{"a":"Gemini","b":"264A","j":["twins","zodiac","sign","purple-square","astrology"]},"cancer":{"a":"Cancer","b":"264B","j":["crab","zodiac","sign","purple-square","astrology"]},"leo":{"a":"Leo","b":"264C","j":["lion","zodiac","sign","purple-square","astrology"]},"virgo":{"a":"Virgo","b":"264D","j":["zodiac","sign","purple-square","astrology"]},"libra":{"a":"Libra","b":"264E","j":["balance","justice","scales","zodiac","sign","purple-square","astrology"]},"scorpio":{"a":"Scorpio","b":"264F","j":["scorpion","scorpius","zodiac","sign","purple-square","astrology"]},"sagittarius":{"a":"Sagittarius","b":"2650","j":["archer","zodiac","sign","purple-square","astrology"]},"capricorn":{"a":"Capricorn","b":"2651","j":["goat","zodiac","sign","purple-square","astrology"]},"aquarius":{"a":"Aquarius","b":"2652","j":["bearer","water","zodiac","sign","purple-square","astrology"]},"pisces":{"a":"Pisces","b":"2653","j":["fish","zodiac","purple-square","sign","astrology"]},"ophiuchus":{"a":"Ophiuchus","b":"26CE","j":["bearer","serpent","snake","zodiac","sign","purple-square","constellation","astrology"]},"shuffle-tracks-button":{"a":"Shuffle Tracks Button","b":"1F500","j":["arrow","crossed","blue-square","shuffle","music","random"]},"repeat-button":{"a":"Repeat Button","b":"1F501","j":["arrow","clockwise","repeat","loop","record"]},"repeat-single-button":{"a":"Repeat Single Button","b":"1F502","j":["arrow","clockwise","once","blue-square","loop"]},"play-button":{"a":"Play Button","b":"25B6","j":["arrow","play","right","triangle","blue-square","direction"]},"fastforward-button":{"a":"Fast-Forward Button","b":"23E9","j":["arrow","double","fast","fast-forward button","forward","fast_forward_button","blue-square","play","speed","continue"]},"next-track-button":{"a":"Next Track Button","b":"23ED","j":["arrow","next scene","next track","triangle","forward","next","blue-square"]},"play-or-pause-button":{"a":"Play or Pause Button","b":"23EF","j":["arrow","pause","play","right","triangle","blue-square"]},"reverse-button":{"a":"Reverse Button","b":"25C0","j":["arrow","left","reverse","triangle","blue-square","direction"]},"fast-reverse-button":{"a":"Fast Reverse Button","b":"23EA","j":["arrow","double","rewind","play","blue-square"]},"last-track-button":{"a":"Last Track Button","b":"23EE","j":["arrow","previous scene","previous track","triangle","backward"]},"upwards-button":{"a":"Upwards Button","b":"1F53C","j":["arrow","button","red","blue-square","triangle","direction","point","forward","top"]},"fast-up-button":{"a":"Fast Up Button","b":"23EB","j":["arrow","double","blue-square","direction","top"]},"downwards-button":{"a":"Downwards Button","b":"1F53D","j":["arrow","button","down","red","blue-square","direction","bottom"]},"fast-down-button":{"a":"Fast Down Button","b":"23EC","j":["arrow","double","down","blue-square","direction","bottom"]},"pause-button":{"a":"Pause Button","b":"23F8","j":["bar","double","pause","vertical","blue-square"]},"stop-button":{"a":"Stop Button","b":"23F9","j":["square","stop","blue-square"]},"record-button":{"a":"Record Button","b":"23FA","j":["circle","record","blue-square"]},"eject-button":{"a":"Eject Button","b":"23CF","j":["eject","blue-square"]},"cinema":{"a":"Cinema","b":"1F3A6","j":["camera","film","movie","blue-square","record","curtain","stage","theater"]},"dim-button":{"a":"Dim Button","b":"1F505","j":["brightness","dim","low","sun","afternoon","warm","summer"]},"bright-button":{"a":"Bright Button","b":"1F506","j":["bright","brightness","sun","light"]},"antenna-bars":{"a":"Antenna Bars","b":"1F4F6","j":["antenna","bar","cell","mobile","phone","blue-square","reception","internet","connection","wifi","bluetooth","bars"]},"vibration-mode":{"a":"Vibration Mode","b":"1F4F3","j":["cell","mobile","mode","phone","telephone","vibration","orange-square"]},"mobile-phone-off":{"a":"Mobile Phone off","b":"1F4F4","j":["cell","mobile","off","phone","telephone","mute","orange-square","silence","quiet"]},"female-sign":{"a":"Female Sign","b":"2640","j":["woman","women","lady","girl"]},"male-sign":{"a":"Male Sign","b":"2642","j":["man","boy","men"]},"transgender-symbol":{"a":"Transgender Symbol","b":"26A7","j":["transgender","lgbtq"]},"multiply":{"a":"Multiply","b":"2716","j":["×","cancel","multiplication","sign","x","multiplication_sign","math","calculation"]},"plus":{"a":"Plus","b":"2795","j":["+","math","sign","plus_sign","calculation","addition","more","increase"]},"minus":{"a":"Minus","b":"2796","j":["-","−","math","sign","minus_sign","calculation","subtract","less"]},"divide":{"a":"Divide","b":"2797","j":["÷","division","math","sign","division_sign","calculation"]},"infinity":{"a":"Infinity","b":"267E","j":["forever","unbounded","universal"]},"double-exclamation-mark":{"a":"Double Exclamation Mark","b":"203C","j":["!","!!","bangbang","exclamation","mark","surprise"]},"exclamation-question-mark":{"a":"Exclamation Question Mark","b":"2049","j":["!","!?","?","exclamation","interrobang","mark","punctuation","question","wat","surprise"]},"red-question-mark":{"a":"Red Question Mark","b":"2753","j":["?","mark","punctuation","question","question_mark","doubt","confused"]},"white-question-mark":{"a":"White Question Mark","b":"2754","j":["?","mark","outlined","punctuation","question","doubts","gray","huh","confused"]},"white-exclamation-mark":{"a":"White Exclamation Mark","b":"2755","j":["!","exclamation","mark","outlined","punctuation","surprise","gray","wow","warning"]},"red-exclamation-mark":{"a":"Red Exclamation Mark","b":"2757","j":["!","exclamation","mark","punctuation","exclamation_mark","heavy_exclamation_mark","danger","surprise","wow","warning"]},"wavy-dash":{"a":"Wavy Dash","b":"3030","j":["dash","punctuation","wavy","draw","line","moustache","mustache","squiggle","scribble"]},"currency-exchange":{"a":"Currency Exchange","b":"1F4B1","j":["bank","currency","exchange","money","sales","dollar","travel"]},"heavy-dollar-sign":{"a":"Heavy Dollar Sign","b":"1F4B2","j":["currency","dollar","money","sales","payment","buck"]},"medical-symbol":{"a":"Medical Symbol","b":"2695","j":["aesculapius","medicine","staff","health","hospital"]},"recycling-symbol":{"a":"Recycling Symbol","b":"267B","j":["recycle","arrow","environment","garbage","trash"]},"fleurdelis":{"a":"Fleur-De-Lis","b":"269C","j":["fleur-de-lis","fleur_de_lis","decorative","scout"]},"trident-emblem":{"a":"Trident Emblem","b":"1F531","j":["anchor","emblem","ship","tool","trident","weapon","spear"]},"name-badge":{"a":"Name Badge","b":"1F4DB","j":["badge","name","fire","forbid"]},"japanese-symbol-for-beginner":{"a":"Japanese Symbol for Beginner","b":"1F530","j":["beginner","chevron","Japanese","Japanese symbol for beginner","leaf","badge","shield"]},"hollow-red-circle":{"a":"Hollow Red Circle","b":"2B55","j":["circle","large","o","red","round"]},"check-mark-button":{"a":"Check Mark Button","b":"2705","j":["✓","button","check","mark","green-square","ok","agree","vote","election","answer","tick"]},"check-box-with-check":{"a":"Check Box with Check","b":"2611","j":["✓","box","check","ok","agree","confirm","black-square","vote","election","yes","tick"]},"check-mark":{"a":"Check Mark","b":"2714","j":["✓","check","mark","ok","nike","answer","yes","tick"]},"cross-mark":{"a":"Cross Mark","b":"274C","j":["×","cancel","cross","mark","multiplication","multiply","x","no","delete","remove","red"]},"cross-mark-button":{"a":"Cross Mark Button","b":"274E","j":["×","mark","square","x","green-square","no","deny"]},"curly-loop":{"a":"Curly Loop","b":"27B0","j":["curl","loop","scribble","draw","shape","squiggle"]},"double-curly-loop":{"a":"Double Curly Loop","b":"27BF","j":["curl","double","loop","tape","cassette"]},"part-alternation-mark":{"a":"Part Alternation Mark","b":"303D","j":["mark","part","graph","presentation","stats","business","economics","bad"]},"eightspoked-asterisk":{"a":"Eight-Spoked Asterisk","b":"2733","j":["*","asterisk","eight-spoked asterisk","eight_spoked_asterisk","star","sparkle","green-square"]},"eightpointed-star":{"a":"Eight-Pointed Star","b":"2734","j":["*","eight-pointed star","star","eight_pointed_star","orange-square","shape","polygon"]},"sparkle":{"a":"Sparkle","b":"2747","j":["*","stars","green-square","awesome","good","fireworks"]},"copyright":{"a":"Copyright","b":"00A9","j":["c","ip","license","circle","law","legal"]},"registered":{"a":"Registered","b":"00AE","j":["r","alphabet","circle"]},"trade-mark":{"a":"Trade Mark","b":"2122","j":["mark","tm","trademark","brand","law","legal"]},"keycap":{"a":"Keycap: *","b":"002A-FE0F-20E3","j":["keycap_","star"]},"keycap-0":{"a":"Keycap: 0","b":"0030-FE0F-20E3","j":["keycap","0","numbers","blue-square","null"]},"keycap-1":{"a":"Keycap: 1","b":"0031-FE0F-20E3","j":["keycap","blue-square","numbers","1"]},"keycap-2":{"a":"Keycap: 2","b":"0032-FE0F-20E3","j":["keycap","numbers","2","prime","blue-square"]},"keycap-3":{"a":"Keycap: 3","b":"0033-FE0F-20E3","j":["keycap","3","numbers","prime","blue-square"]},"keycap-4":{"a":"Keycap: 4","b":"0034-FE0F-20E3","j":["keycap","4","numbers","blue-square"]},"keycap-5":{"a":"Keycap: 5","b":"0035-FE0F-20E3","j":["keycap","5","numbers","blue-square","prime"]},"keycap-6":{"a":"Keycap: 6","b":"0036-FE0F-20E3","j":["keycap","6","numbers","blue-square"]},"keycap-7":{"a":"Keycap: 7","b":"0037-FE0F-20E3","j":["keycap","7","numbers","blue-square","prime"]},"keycap-8":{"a":"Keycap: 8","b":"0038-FE0F-20E3","j":["keycap","8","blue-square","numbers"]},"keycap-9":{"a":"Keycap: 9","b":"0039-FE0F-20E3","j":["keycap","blue-square","numbers","9"]},"keycap-10":{"a":"Keycap: 10","b":"1F51F","j":["keycap","numbers","10","blue-square"]},"input-latin-uppercase":{"a":"Input Latin Uppercase","b":"1F520","j":["ABCD","input","latin","letters","uppercase","alphabet","words","blue-square"]},"input-latin-lowercase":{"a":"Input Latin Lowercase","b":"1F521","j":["abcd","input","latin","letters","lowercase","blue-square","alphabet"]},"input-numbers":{"a":"Input Numbers","b":"1F522","j":["1234","input","numbers","blue-square"]},"input-symbols":{"a":"Input Symbols","b":"1F523","j":["〒♪&%","input","blue-square","music","note","ampersand","percent","glyphs","characters"]},"input-latin-letters":{"a":"Input Latin Letters","b":"1F524","j":["abc","alphabet","input","latin","letters","blue-square"]},"a-button-blood-type":{"a":"A Button (Blood Type)","b":"1F170","j":["a","A button (blood type)","blood type","a_button","red-square","alphabet","letter"]},"ab-button-blood-type":{"a":"Ab Button (Blood Type)","b":"1F18E","j":["ab","AB button (blood type)","blood type","ab_button","red-square","alphabet"]},"b-button-blood-type":{"a":"B Button (Blood Type)","b":"1F171","j":["b","B button (blood type)","blood type","b_button","red-square","alphabet","letter"]},"cl-button":{"a":"Cl Button","b":"1F191","j":["cl","CL button","alphabet","words","red-square"]},"cool-button":{"a":"Cool Button","b":"1F192","j":["cool","COOL button","words","blue-square"]},"free-button":{"a":"Free Button","b":"1F193","j":["free","FREE button","blue-square","words"]},"information":{"a":"Information","b":"2139","j":["i","blue-square","alphabet","letter"]},"id-button":{"a":"Id Button","b":"1F194","j":["id","ID button","identity","purple-square","words"]},"circled-m":{"a":"Circled M","b":"24C2","j":["circle","circled M","m","alphabet","blue-circle","letter"]},"new-button":{"a":"New Button","b":"1F195","j":["new","NEW button","blue-square","words","start"]},"ng-button":{"a":"Ng Button","b":"1F196","j":["ng","NG button","blue-square","words","shape","icon"]},"o-button-blood-type":{"a":"O Button (Blood Type)","b":"1F17E","j":["blood type","o","O button (blood type)","o_button","alphabet","red-square","letter"]},"ok-button":{"a":"Ok Button","b":"1F197","j":["OK","OK button","good","agree","yes","blue-square"]},"p-button":{"a":"P Button","b":"1F17F","j":["P button","parking","cars","blue-square","alphabet","letter"]},"sos-button":{"a":"Sos Button","b":"1F198","j":["help","sos","SOS button","red-square","words","emergency","911"]},"up-button":{"a":"Up! Button","b":"1F199","j":["mark","up","UP! button","blue-square","above","high"]},"vs-button":{"a":"Vs Button","b":"1F19A","j":["versus","vs","VS button","words","orange-square"]},"japanese-here-button":{"a":"Japanese “Here” Button","b":"1F201","j":["“here”","Japanese","Japanese “here” button","katakana","ココ","blue-square","here","japanese","destination"]},"japanese-service-charge-button":{"a":"Japanese “Service Charge” Button","b":"1F202","j":["“service charge”","Japanese","Japanese “service charge” button","katakana","サ","japanese","blue-square"]},"japanese-monthly-amount-button":{"a":"Japanese “Monthly Amount” Button","b":"1F237","j":["“monthly amount”","ideograph","Japanese","Japanese “monthly amount” button","月","chinese","month","moon","japanese","orange-square","kanji"]},"japanese-not-free-of-charge-button":{"a":"Japanese “Not Free of Charge” Button","b":"1F236","j":["“not free of charge”","ideograph","Japanese","Japanese “not free of charge” button","有","orange-square","chinese","have","kanji"]},"japanese-reserved-button":{"a":"Japanese “Reserved” Button","b":"1F22F","j":["“reserved”","ideograph","Japanese","Japanese “reserved” button","指","chinese","point","green-square","kanji"]},"japanese-bargain-button":{"a":"Japanese “Bargain” Button","b":"1F250","j":["“bargain”","ideograph","Japanese","Japanese “bargain” button","得","chinese","kanji","obtain","get","circle"]},"japanese-discount-button":{"a":"Japanese “Discount” Button","b":"1F239","j":["“discount”","ideograph","Japanese","Japanese “discount” button","割","cut","divide","chinese","kanji","pink-square"]},"japanese-free-of-charge-button":{"a":"Japanese “Free of Charge” Button","b":"1F21A","j":["“free of charge”","ideograph","Japanese","Japanese “free of charge” button","無","nothing","chinese","kanji","japanese","orange-square"]},"japanese-prohibited-button":{"a":"Japanese “Prohibited” Button","b":"1F232","j":["“prohibited”","ideograph","Japanese","Japanese “prohibited” button","禁","kanji","japanese","chinese","forbidden","limit","restricted","red-square"]},"japanese-acceptable-button":{"a":"Japanese “Acceptable” Button","b":"1F251","j":["“acceptable”","ideograph","Japanese","Japanese “acceptable” button","可","ok","good","chinese","kanji","agree","yes","orange-circle"]},"japanese-application-button":{"a":"Japanese “Application” Button","b":"1F238","j":["“application”","ideograph","Japanese","Japanese “application” button","申","chinese","japanese","kanji","orange-square"]},"japanese-passing-grade-button":{"a":"Japanese “Passing Grade” Button","b":"1F234","j":["“passing grade”","ideograph","Japanese","Japanese “passing grade” button","合","japanese","chinese","join","kanji","red-square"]},"japanese-vacancy-button":{"a":"Japanese “Vacancy” Button","b":"1F233","j":["“vacancy”","ideograph","Japanese","Japanese “vacancy” button","空","kanji","japanese","chinese","empty","sky","blue-square"]},"japanese-congratulations-button":{"a":"Japanese “Congratulations” Button","b":"3297","j":["“congratulations”","ideograph","Japanese","Japanese “congratulations” button","祝","chinese","kanji","japanese","red-circle"]},"japanese-secret-button":{"a":"Japanese “Secret” Button","b":"3299","j":["“secret”","ideograph","Japanese","Japanese “secret” button","秘","privacy","chinese","sshh","kanji","red-circle"]},"japanese-open-for-business-button":{"a":"Japanese “Open for Business” Button","b":"1F23A","j":["“open for business”","ideograph","Japanese","Japanese “open for business” button","営","japanese","opening hours","orange-square"]},"japanese-no-vacancy-button":{"a":"Japanese “No Vacancy” Button","b":"1F235","j":["“no vacancy”","ideograph","Japanese","Japanese “no vacancy” button","満","full","chinese","japanese","red-square","kanji"]},"red-circle":{"a":"Red Circle","b":"1F534","j":["circle","geometric","red","shape","error","danger"]},"orange-circle":{"a":"Orange Circle","b":"1F7E0","j":["circle","orange","round"]},"yellow-circle":{"a":"Yellow Circle","b":"1F7E1","j":["circle","yellow","round"]},"green-circle":{"a":"Green Circle","b":"1F7E2","j":["circle","green","round"]},"blue-circle":{"a":"Blue Circle","b":"1F535","j":["blue","circle","geometric","shape","icon","button"]},"purple-circle":{"a":"Purple Circle","b":"1F7E3","j":["circle","purple","round"]},"brown-circle":{"a":"Brown Circle","b":"1F7E4","j":["brown","circle","round"]},"black-circle":{"a":"Black Circle","b":"26AB","j":["circle","geometric","shape","button","round"]},"white-circle":{"a":"White Circle","b":"26AA","j":["circle","geometric","shape","round"]},"red-square":{"a":"Red Square","b":"1F7E5","j":["red","square"]},"orange-square":{"a":"Orange Square","b":"1F7E7","j":["orange","square"]},"yellow-square":{"a":"Yellow Square","b":"1F7E8","j":["square","yellow"]},"green-square":{"a":"Green Square","b":"1F7E9","j":["green","square"]},"blue-square":{"a":"Blue Square","b":"1F7E6","j":["blue","square"]},"purple-square":{"a":"Purple Square","b":"1F7EA","j":["purple","square"]},"brown-square":{"a":"Brown Square","b":"1F7EB","j":["brown","square"]},"black-large-square":{"a":"Black Large Square","b":"2B1B","j":["geometric","square","shape","icon","button"]},"white-large-square":{"a":"White Large Square","b":"2B1C","j":["geometric","square","shape","icon","stone","button"]},"black-medium-square":{"a":"Black Medium Square","b":"25FC","j":["geometric","square","shape","button","icon"]},"white-medium-square":{"a":"White Medium Square","b":"25FB","j":["geometric","square","shape","stone","icon"]},"black-mediumsmall-square":{"a":"Black Medium-Small Square","b":"25FE","j":["black medium-small square","geometric","square","black_medium_small_square","icon","shape","button"]},"white-mediumsmall-square":{"a":"White Medium-Small Square","b":"25FD","j":["geometric","square","white medium-small square","white_medium_small_square","shape","stone","icon","button"]},"black-small-square":{"a":"Black Small Square","b":"25AA","j":["geometric","square","shape","icon"]},"white-small-square":{"a":"White Small Square","b":"25AB","j":["geometric","square","shape","icon"]},"large-orange-diamond":{"a":"Large Orange Diamond","b":"1F536","j":["diamond","geometric","orange","shape","jewel","gem"]},"large-blue-diamond":{"a":"Large Blue Diamond","b":"1F537","j":["blue","diamond","geometric","shape","jewel","gem"]},"small-orange-diamond":{"a":"Small Orange Diamond","b":"1F538","j":["diamond","geometric","orange","shape","jewel","gem"]},"small-blue-diamond":{"a":"Small Blue Diamond","b":"1F539","j":["blue","diamond","geometric","shape","jewel","gem"]},"red-triangle-pointed-up":{"a":"Red Triangle Pointed Up","b":"1F53A","j":["geometric","red","shape","direction","up","top"]},"red-triangle-pointed-down":{"a":"Red Triangle Pointed Down","b":"1F53B","j":["down","geometric","red","shape","direction","bottom"]},"diamond-with-a-dot":{"a":"Diamond with a Dot","b":"1F4A0","j":["comic","diamond","geometric","inside","jewel","blue","gem","crystal","fancy"]},"radio-button":{"a":"Radio Button","b":"1F518","j":["button","geometric","radio","input","old","music","circle"]},"white-square-button":{"a":"White Square Button","b":"1F533","j":["button","geometric","outlined","square","shape","input"]},"black-square-button":{"a":"Black Square Button","b":"1F532","j":["button","geometric","square","shape","input","frame"]},"chequered-flag":{"a":"Chequered Flag","b":"1F3C1","j":["checkered","chequered","racing","contest","finishline","race","gokart"]},"triangular-flag":{"a":"Triangular Flag","b":"1F6A9","j":["post","mark","milestone","place"]},"crossed-flags":{"a":"Crossed Flags","b":"1F38C","j":["celebration","cross","crossed","Japanese","japanese","nation","country","border"]},"black-flag":{"a":"Black Flag","b":"1F3F4","j":["waving","pirate"]},"white-flag":{"a":"White Flag","b":"1F3F3","j":["waving","losing","loser","lost","surrender","give up","fail"]},"rainbow-flag":{"a":"Rainbow Flag","b":"1F3F3-FE0F-200D-1F308","j":["pride","rainbow","flag","gay","lgbt","glbt","queer","homosexual","lesbian","bisexual","transgender"]},"transgender-flag":{"a":"Transgender Flag","b":"1F3F3-FE0F-200D-26A7-FE0F","j":["flag","light blue","pink","transgender","white","lgbtq"]},"pirate-flag":{"a":"Pirate Flag","b":"1F3F4-200D-2620-FE0F","j":["Jolly Roger","pirate","plunder","treasure","skull","crossbones","flag","banner"]},"flag-ascension-island":{"a":"Flag: Ascension Island","b":"1F1E6-1F1E8","j":["flag"]},"flag-andorra":{"a":"Flag: Andorra","b":"1F1E6-1F1E9","j":["flag","ad","nation","country","banner"]},"flag-united-arab-emirates":{"a":"Flag: United Arab Emirates","b":"1F1E6-1F1EA","j":["flag","united","arab","emirates","nation","country","banner"]},"flag-afghanistan":{"a":"Flag: Afghanistan","b":"1F1E6-1F1EB","j":["flag","af","nation","country","banner"]},"flag-antigua--barbuda":{"a":"Flag: Antigua & Barbuda","b":"1F1E6-1F1EC","j":["flag","flag_antigua_barbuda","antigua","barbuda","nation","country","banner"]},"flag-anguilla":{"a":"Flag: Anguilla","b":"1F1E6-1F1EE","j":["flag","ai","nation","country","banner"]},"flag-albania":{"a":"Flag: Albania","b":"1F1E6-1F1F1","j":["flag","al","nation","country","banner"]},"flag-armenia":{"a":"Flag: Armenia","b":"1F1E6-1F1F2","j":["flag","am","nation","country","banner"]},"flag-angola":{"a":"Flag: Angola","b":"1F1E6-1F1F4","j":["flag","ao","nation","country","banner"]},"flag-antarctica":{"a":"Flag: Antarctica","b":"1F1E6-1F1F6","j":["flag","aq","nation","country","banner"]},"flag-argentina":{"a":"Flag: Argentina","b":"1F1E6-1F1F7","j":["flag","ar","nation","country","banner"]},"flag-american-samoa":{"a":"Flag: American Samoa","b":"1F1E6-1F1F8","j":["flag","american","ws","nation","country","banner"]},"flag-austria":{"a":"Flag: Austria","b":"1F1E6-1F1F9","j":["flag","at","nation","country","banner"]},"flag-australia":{"a":"Flag: Australia","b":"1F1E6-1F1FA","j":["flag","au","nation","country","banner"]},"flag-aruba":{"a":"Flag: Aruba","b":"1F1E6-1F1FC","j":["flag","aw","nation","country","banner"]},"flag-land-islands":{"a":"Flag: Åland Islands","b":"1F1E6-1F1FD","j":["flag","flag_aland_islands","Åland","islands","nation","country","banner"]},"flag-azerbaijan":{"a":"Flag: Azerbaijan","b":"1F1E6-1F1FF","j":["flag","az","nation","country","banner"]},"flag-bosnia--herzegovina":{"a":"Flag: Bosnia & Herzegovina","b":"1F1E7-1F1E6","j":["flag","flag_bosnia_herzegovina","bosnia","herzegovina","nation","country","banner"]},"flag-barbados":{"a":"Flag: Barbados","b":"1F1E7-1F1E7","j":["flag","bb","nation","country","banner"]},"flag-bangladesh":{"a":"Flag: Bangladesh","b":"1F1E7-1F1E9","j":["flag","bd","nation","country","banner"]},"flag-belgium":{"a":"Flag: Belgium","b":"1F1E7-1F1EA","j":["flag","be","nation","country","banner"]},"flag-burkina-faso":{"a":"Flag: Burkina Faso","b":"1F1E7-1F1EB","j":["flag","burkina","faso","nation","country","banner"]},"flag-bulgaria":{"a":"Flag: Bulgaria","b":"1F1E7-1F1EC","j":["flag","bg","nation","country","banner"]},"flag-bahrain":{"a":"Flag: Bahrain","b":"1F1E7-1F1ED","j":["flag","bh","nation","country","banner"]},"flag-burundi":{"a":"Flag: Burundi","b":"1F1E7-1F1EE","j":["flag","bi","nation","country","banner"]},"flag-benin":{"a":"Flag: Benin","b":"1F1E7-1F1EF","j":["flag","bj","nation","country","banner"]},"flag-st-barthlemy":{"a":"Flag: St. Barthélemy","b":"1F1E7-1F1F1","j":["flag","flag_st_barthelemy","saint","barthélemy","nation","country","banner"]},"flag-bermuda":{"a":"Flag: Bermuda","b":"1F1E7-1F1F2","j":["flag","bm","nation","country","banner"]},"flag-brunei":{"a":"Flag: Brunei","b":"1F1E7-1F1F3","j":["flag","bn","darussalam","nation","country","banner"]},"flag-bolivia":{"a":"Flag: Bolivia","b":"1F1E7-1F1F4","j":["flag","bo","nation","country","banner"]},"flag-caribbean-netherlands":{"a":"Flag: Caribbean Netherlands","b":"1F1E7-1F1F6","j":["flag","bonaire","nation","country","banner"]},"flag-brazil":{"a":"Flag: Brazil","b":"1F1E7-1F1F7","j":["flag","br","nation","country","banner"]},"flag-bahamas":{"a":"Flag: Bahamas","b":"1F1E7-1F1F8","j":["flag","bs","nation","country","banner"]},"flag-bhutan":{"a":"Flag: Bhutan","b":"1F1E7-1F1F9","j":["flag","bt","nation","country","banner"]},"flag-bouvet-island":{"a":"Flag: Bouvet Island","b":"1F1E7-1F1FB","j":["flag","norway"]},"flag-botswana":{"a":"Flag: Botswana","b":"1F1E7-1F1FC","j":["flag","bw","nation","country","banner"]},"flag-belarus":{"a":"Flag: Belarus","b":"1F1E7-1F1FE","j":["flag","by","nation","country","banner"]},"flag-belize":{"a":"Flag: Belize","b":"1F1E7-1F1FF","j":["flag","bz","nation","country","banner"]},"flag-canada":{"a":"Flag: Canada","b":"1F1E8-1F1E6","j":["flag","ca","nation","country","banner"]},"flag-cocos-keeling-islands":{"a":"Flag: Cocos (Keeling) Islands","b":"1F1E8-1F1E8","j":["flag","flag_cocos_islands","cocos","keeling","islands","nation","country","banner"]},"flag-congo--kinshasa":{"a":"Flag: Congo - Kinshasa","b":"1F1E8-1F1E9","j":["flag","flag_congo_kinshasa","congo","democratic","republic","nation","country","banner"]},"flag-central-african-republic":{"a":"Flag: Central African Republic","b":"1F1E8-1F1EB","j":["flag","central","african","republic","nation","country","banner"]},"flag-congo--brazzaville":{"a":"Flag: Congo - Brazzaville","b":"1F1E8-1F1EC","j":["flag","flag_congo_brazzaville","congo","nation","country","banner"]},"flag-switzerland":{"a":"Flag: Switzerland","b":"1F1E8-1F1ED","j":["flag","ch","nation","country","banner"]},"flag-cte-divoire":{"a":"Flag: Côte D’Ivoire","b":"1F1E8-1F1EE","j":["flag","flag_cote_d_ivoire","ivory","coast","nation","country","banner"]},"flag-cook-islands":{"a":"Flag: Cook Islands","b":"1F1E8-1F1F0","j":["flag","cook","islands","nation","country","banner"]},"flag-chile":{"a":"Flag: Chile","b":"1F1E8-1F1F1","j":["flag","nation","country","banner"]},"flag-cameroon":{"a":"Flag: Cameroon","b":"1F1E8-1F1F2","j":["flag","cm","nation","country","banner"]},"flag-china":{"a":"Flag: China","b":"1F1E8-1F1F3","j":["flag","china","chinese","prc","country","nation","banner"]},"flag-colombia":{"a":"Flag: Colombia","b":"1F1E8-1F1F4","j":["flag","co","nation","country","banner"]},"flag-clipperton-island":{"a":"Flag: Clipperton Island","b":"1F1E8-1F1F5","j":["flag"]},"flag-costa-rica":{"a":"Flag: Costa Rica","b":"1F1E8-1F1F7","j":["flag","costa","rica","nation","country","banner"]},"flag-cuba":{"a":"Flag: Cuba","b":"1F1E8-1F1FA","j":["flag","cu","nation","country","banner"]},"flag-cape-verde":{"a":"Flag: Cape Verde","b":"1F1E8-1F1FB","j":["flag","cabo","verde","nation","country","banner"]},"flag-curaao":{"a":"Flag: Curaçao","b":"1F1E8-1F1FC","j":["flag","flag_curacao","curaçao","nation","country","banner"]},"flag-christmas-island":{"a":"Flag: Christmas Island","b":"1F1E8-1F1FD","j":["flag","christmas","island","nation","country","banner"]},"flag-cyprus":{"a":"Flag: Cyprus","b":"1F1E8-1F1FE","j":["flag","cy","nation","country","banner"]},"flag-czechia":{"a":"Flag: Czechia","b":"1F1E8-1F1FF","j":["flag","cz","nation","country","banner"]},"flag-germany":{"a":"Flag: Germany","b":"1F1E9-1F1EA","j":["flag","german","nation","country","banner"]},"flag-diego-garcia":{"a":"Flag: Diego Garcia","b":"1F1E9-1F1EC","j":["flag"]},"flag-djibouti":{"a":"Flag: Djibouti","b":"1F1E9-1F1EF","j":["flag","dj","nation","country","banner"]},"flag-denmark":{"a":"Flag: Denmark","b":"1F1E9-1F1F0","j":["flag","dk","nation","country","banner"]},"flag-dominica":{"a":"Flag: Dominica","b":"1F1E9-1F1F2","j":["flag","dm","nation","country","banner"]},"flag-dominican-republic":{"a":"Flag: Dominican Republic","b":"1F1E9-1F1F4","j":["flag","dominican","republic","nation","country","banner"]},"flag-algeria":{"a":"Flag: Algeria","b":"1F1E9-1F1FF","j":["flag","dz","nation","country","banner"]},"flag-ceuta--melilla":{"a":"Flag: Ceuta & Melilla","b":"1F1EA-1F1E6","j":["flag","flag_ceuta_melilla"]},"flag-ecuador":{"a":"Flag: Ecuador","b":"1F1EA-1F1E8","j":["flag","ec","nation","country","banner"]},"flag-estonia":{"a":"Flag: Estonia","b":"1F1EA-1F1EA","j":["flag","ee","nation","country","banner"]},"flag-egypt":{"a":"Flag: Egypt","b":"1F1EA-1F1EC","j":["flag","eg","nation","country","banner"]},"flag-western-sahara":{"a":"Flag: Western Sahara","b":"1F1EA-1F1ED","j":["flag","western","sahara","nation","country","banner"]},"flag-eritrea":{"a":"Flag: Eritrea","b":"1F1EA-1F1F7","j":["flag","er","nation","country","banner"]},"flag-spain":{"a":"Flag: Spain","b":"1F1EA-1F1F8","j":["flag","spain","nation","country","banner"]},"flag-ethiopia":{"a":"Flag: Ethiopia","b":"1F1EA-1F1F9","j":["flag","et","nation","country","banner"]},"flag-european-union":{"a":"Flag: European Union","b":"1F1EA-1F1FA","j":["flag","european","union","banner"]},"flag-finland":{"a":"Flag: Finland","b":"1F1EB-1F1EE","j":["flag","fi","nation","country","banner"]},"flag-fiji":{"a":"Flag: Fiji","b":"1F1EB-1F1EF","j":["flag","fj","nation","country","banner"]},"flag-falkland-islands":{"a":"Flag: Falkland Islands","b":"1F1EB-1F1F0","j":["flag","falkland","islands","malvinas","nation","country","banner"]},"flag-micronesia":{"a":"Flag: Micronesia","b":"1F1EB-1F1F2","j":["flag","micronesia","federated","states","nation","country","banner"]},"flag-faroe-islands":{"a":"Flag: Faroe Islands","b":"1F1EB-1F1F4","j":["flag","faroe","islands","nation","country","banner"]},"flag-france":{"a":"Flag: France","b":"1F1EB-1F1F7","j":["flag","banner","nation","france","french","country"]},"flag-gabon":{"a":"Flag: Gabon","b":"1F1EC-1F1E6","j":["flag","ga","nation","country","banner"]},"flag-united-kingdom":{"a":"Flag: United Kingdom","b":"1F1EC-1F1E7","j":["flag","united","kingdom","great","britain","northern","ireland","nation","country","banner","british","UK","english","england","union jack"]},"flag-grenada":{"a":"Flag: Grenada","b":"1F1EC-1F1E9","j":["flag","gd","nation","country","banner"]},"flag-georgia":{"a":"Flag: Georgia","b":"1F1EC-1F1EA","j":["flag","ge","nation","country","banner"]},"flag-french-guiana":{"a":"Flag: French Guiana","b":"1F1EC-1F1EB","j":["flag","french","guiana","nation","country","banner"]},"flag-guernsey":{"a":"Flag: Guernsey","b":"1F1EC-1F1EC","j":["flag","gg","nation","country","banner"]},"flag-ghana":{"a":"Flag: Ghana","b":"1F1EC-1F1ED","j":["flag","gh","nation","country","banner"]},"flag-gibraltar":{"a":"Flag: Gibraltar","b":"1F1EC-1F1EE","j":["flag","gi","nation","country","banner"]},"flag-greenland":{"a":"Flag: Greenland","b":"1F1EC-1F1F1","j":["flag","gl","nation","country","banner"]},"flag-gambia":{"a":"Flag: Gambia","b":"1F1EC-1F1F2","j":["flag","gm","nation","country","banner"]},"flag-guinea":{"a":"Flag: Guinea","b":"1F1EC-1F1F3","j":["flag","gn","nation","country","banner"]},"flag-guadeloupe":{"a":"Flag: Guadeloupe","b":"1F1EC-1F1F5","j":["flag","gp","nation","country","banner"]},"flag-equatorial-guinea":{"a":"Flag: Equatorial Guinea","b":"1F1EC-1F1F6","j":["flag","equatorial","gn","nation","country","banner"]},"flag-greece":{"a":"Flag: Greece","b":"1F1EC-1F1F7","j":["flag","gr","nation","country","banner"]},"flag-south-georgia--south-sandwich-islands":{"a":"Flag: South Georgia & South Sandwich Islands","b":"1F1EC-1F1F8","j":["flag","flag_south_georgia_south_sandwich_islands","south","georgia","sandwich","islands","nation","country","banner"]},"flag-guatemala":{"a":"Flag: Guatemala","b":"1F1EC-1F1F9","j":["flag","gt","nation","country","banner"]},"flag-guam":{"a":"Flag: Guam","b":"1F1EC-1F1FA","j":["flag","gu","nation","country","banner"]},"flag-guineabissau":{"a":"Flag: Guinea-Bissau","b":"1F1EC-1F1FC","j":["flag","flag_guinea_bissau","gw","bissau","nation","country","banner"]},"flag-guyana":{"a":"Flag: Guyana","b":"1F1EC-1F1FE","j":["flag","gy","nation","country","banner"]},"flag-hong-kong-sar-china":{"a":"Flag: Hong Kong Sar China","b":"1F1ED-1F1F0","j":["flag","hong","kong","nation","country","banner"]},"flag-heard--mcdonald-islands":{"a":"Flag: Heard & Mcdonald Islands","b":"1F1ED-1F1F2","j":["flag","flag_heard_mcdonald_islands"]},"flag-honduras":{"a":"Flag: Honduras","b":"1F1ED-1F1F3","j":["flag","hn","nation","country","banner"]},"flag-croatia":{"a":"Flag: Croatia","b":"1F1ED-1F1F7","j":["flag","hr","nation","country","banner"]},"flag-haiti":{"a":"Flag: Haiti","b":"1F1ED-1F1F9","j":["flag","ht","nation","country","banner"]},"flag-hungary":{"a":"Flag: Hungary","b":"1F1ED-1F1FA","j":["flag","hu","nation","country","banner"]},"flag-canary-islands":{"a":"Flag: Canary Islands","b":"1F1EE-1F1E8","j":["flag","canary","islands","nation","country","banner"]},"flag-indonesia":{"a":"Flag: Indonesia","b":"1F1EE-1F1E9","j":["flag","nation","country","banner"]},"flag-ireland":{"a":"Flag: Ireland","b":"1F1EE-1F1EA","j":["flag","ie","nation","country","banner"]},"flag-israel":{"a":"Flag: Israel","b":"1F1EE-1F1F1","j":["flag","il","nation","country","banner"]},"flag-isle-of-man":{"a":"Flag: Isle of Man","b":"1F1EE-1F1F2","j":["flag","isle","man","nation","country","banner"]},"flag-india":{"a":"Flag: India","b":"1F1EE-1F1F3","j":["flag","in","nation","country","banner"]},"flag-british-indian-ocean-territory":{"a":"Flag: British Indian Ocean Territory","b":"1F1EE-1F1F4","j":["flag","british","indian","ocean","territory","nation","country","banner"]},"flag-iraq":{"a":"Flag: Iraq","b":"1F1EE-1F1F6","j":["flag","iq","nation","country","banner"]},"flag-iran":{"a":"Flag: Iran","b":"1F1EE-1F1F7","j":["flag","iran","islamic","republic","nation","country","banner"]},"flag-iceland":{"a":"Flag: Iceland","b":"1F1EE-1F1F8","j":["flag","is","nation","country","banner"]},"flag-italy":{"a":"Flag: Italy","b":"1F1EE-1F1F9","j":["flag","italy","nation","country","banner"]},"flag-jersey":{"a":"Flag: Jersey","b":"1F1EF-1F1EA","j":["flag","je","nation","country","banner"]},"flag-jamaica":{"a":"Flag: Jamaica","b":"1F1EF-1F1F2","j":["flag","jm","nation","country","banner"]},"flag-jordan":{"a":"Flag: Jordan","b":"1F1EF-1F1F4","j":["flag","jo","nation","country","banner"]},"flag-japan":{"a":"Flag: Japan","b":"1F1EF-1F1F5","j":["flag","japanese","nation","country","banner"]},"flag-kenya":{"a":"Flag: Kenya","b":"1F1F0-1F1EA","j":["flag","ke","nation","country","banner"]},"flag-kyrgyzstan":{"a":"Flag: Kyrgyzstan","b":"1F1F0-1F1EC","j":["flag","kg","nation","country","banner"]},"flag-cambodia":{"a":"Flag: Cambodia","b":"1F1F0-1F1ED","j":["flag","kh","nation","country","banner"]},"flag-kiribati":{"a":"Flag: Kiribati","b":"1F1F0-1F1EE","j":["flag","ki","nation","country","banner"]},"flag-comoros":{"a":"Flag: Comoros","b":"1F1F0-1F1F2","j":["flag","km","nation","country","banner"]},"flag-st-kitts--nevis":{"a":"Flag: St. Kitts & Nevis","b":"1F1F0-1F1F3","j":["flag","flag_st_kitts_nevis","saint","kitts","nevis","nation","country","banner"]},"flag-north-korea":{"a":"Flag: North Korea","b":"1F1F0-1F1F5","j":["flag","north","korea","nation","country","banner"]},"flag-south-korea":{"a":"Flag: South Korea","b":"1F1F0-1F1F7","j":["flag","south","korea","nation","country","banner"]},"flag-kuwait":{"a":"Flag: Kuwait","b":"1F1F0-1F1FC","j":["flag","kw","nation","country","banner"]},"flag-cayman-islands":{"a":"Flag: Cayman Islands","b":"1F1F0-1F1FE","j":["flag","cayman","islands","nation","country","banner"]},"flag-kazakhstan":{"a":"Flag: Kazakhstan","b":"1F1F0-1F1FF","j":["flag","kz","nation","country","banner"]},"flag-laos":{"a":"Flag: Laos","b":"1F1F1-1F1E6","j":["flag","lao","democratic","republic","nation","country","banner"]},"flag-lebanon":{"a":"Flag: Lebanon","b":"1F1F1-1F1E7","j":["flag","lb","nation","country","banner"]},"flag-st-lucia":{"a":"Flag: St. Lucia","b":"1F1F1-1F1E8","j":["flag","saint","lucia","nation","country","banner"]},"flag-liechtenstein":{"a":"Flag: Liechtenstein","b":"1F1F1-1F1EE","j":["flag","li","nation","country","banner"]},"flag-sri-lanka":{"a":"Flag: Sri Lanka","b":"1F1F1-1F1F0","j":["flag","sri","lanka","nation","country","banner"]},"flag-liberia":{"a":"Flag: Liberia","b":"1F1F1-1F1F7","j":["flag","lr","nation","country","banner"]},"flag-lesotho":{"a":"Flag: Lesotho","b":"1F1F1-1F1F8","j":["flag","ls","nation","country","banner"]},"flag-lithuania":{"a":"Flag: Lithuania","b":"1F1F1-1F1F9","j":["flag","lt","nation","country","banner"]},"flag-luxembourg":{"a":"Flag: Luxembourg","b":"1F1F1-1F1FA","j":["flag","lu","nation","country","banner"]},"flag-latvia":{"a":"Flag: Latvia","b":"1F1F1-1F1FB","j":["flag","lv","nation","country","banner"]},"flag-libya":{"a":"Flag: Libya","b":"1F1F1-1F1FE","j":["flag","ly","nation","country","banner"]},"flag-morocco":{"a":"Flag: Morocco","b":"1F1F2-1F1E6","j":["flag","ma","nation","country","banner"]},"flag-monaco":{"a":"Flag: Monaco","b":"1F1F2-1F1E8","j":["flag","mc","nation","country","banner"]},"flag-moldova":{"a":"Flag: Moldova","b":"1F1F2-1F1E9","j":["flag","moldova","republic","nation","country","banner"]},"flag-montenegro":{"a":"Flag: Montenegro","b":"1F1F2-1F1EA","j":["flag","me","nation","country","banner"]},"flag-st-martin":{"a":"Flag: St. Martin","b":"1F1F2-1F1EB","j":["flag"]},"flag-madagascar":{"a":"Flag: Madagascar","b":"1F1F2-1F1EC","j":["flag","mg","nation","country","banner"]},"flag-marshall-islands":{"a":"Flag: Marshall Islands","b":"1F1F2-1F1ED","j":["flag","marshall","islands","nation","country","banner"]},"flag-north-macedonia":{"a":"Flag: North Macedonia","b":"1F1F2-1F1F0","j":["flag","macedonia","nation","country","banner"]},"flag-mali":{"a":"Flag: Mali","b":"1F1F2-1F1F1","j":["flag","ml","nation","country","banner"]},"flag-myanmar-burma":{"a":"Flag: Myanmar (Burma)","b":"1F1F2-1F1F2","j":["flag","flag_myanmar","mm","nation","country","banner"]},"flag-mongolia":{"a":"Flag: Mongolia","b":"1F1F2-1F1F3","j":["flag","mn","nation","country","banner"]},"flag-macao-sar-china":{"a":"Flag: Macao Sar China","b":"1F1F2-1F1F4","j":["flag","macao","nation","country","banner"]},"flag-northern-mariana-islands":{"a":"Flag: Northern Mariana Islands","b":"1F1F2-1F1F5","j":["flag","northern","mariana","islands","nation","country","banner"]},"flag-martinique":{"a":"Flag: Martinique","b":"1F1F2-1F1F6","j":["flag","mq","nation","country","banner"]},"flag-mauritania":{"a":"Flag: Mauritania","b":"1F1F2-1F1F7","j":["flag","mr","nation","country","banner"]},"flag-montserrat":{"a":"Flag: Montserrat","b":"1F1F2-1F1F8","j":["flag","ms","nation","country","banner"]},"flag-malta":{"a":"Flag: Malta","b":"1F1F2-1F1F9","j":["flag","mt","nation","country","banner"]},"flag-mauritius":{"a":"Flag: Mauritius","b":"1F1F2-1F1FA","j":["flag","mu","nation","country","banner"]},"flag-maldives":{"a":"Flag: Maldives","b":"1F1F2-1F1FB","j":["flag","mv","nation","country","banner"]},"flag-malawi":{"a":"Flag: Malawi","b":"1F1F2-1F1FC","j":["flag","mw","nation","country","banner"]},"flag-mexico":{"a":"Flag: Mexico","b":"1F1F2-1F1FD","j":["flag","mx","nation","country","banner"]},"flag-malaysia":{"a":"Flag: Malaysia","b":"1F1F2-1F1FE","j":["flag","my","nation","country","banner"]},"flag-mozambique":{"a":"Flag: Mozambique","b":"1F1F2-1F1FF","j":["flag","mz","nation","country","banner"]},"flag-namibia":{"a":"Flag: Namibia","b":"1F1F3-1F1E6","j":["flag","na","nation","country","banner"]},"flag-new-caledonia":{"a":"Flag: New Caledonia","b":"1F1F3-1F1E8","j":["flag","new","caledonia","nation","country","banner"]},"flag-niger":{"a":"Flag: Niger","b":"1F1F3-1F1EA","j":["flag","ne","nation","country","banner"]},"flag-norfolk-island":{"a":"Flag: Norfolk Island","b":"1F1F3-1F1EB","j":["flag","norfolk","island","nation","country","banner"]},"flag-nigeria":{"a":"Flag: Nigeria","b":"1F1F3-1F1EC","j":["flag","nation","country","banner"]},"flag-nicaragua":{"a":"Flag: Nicaragua","b":"1F1F3-1F1EE","j":["flag","ni","nation","country","banner"]},"flag-netherlands":{"a":"Flag: Netherlands","b":"1F1F3-1F1F1","j":["flag","nl","nation","country","banner"]},"flag-norway":{"a":"Flag: Norway","b":"1F1F3-1F1F4","j":["flag","no","nation","country","banner"]},"flag-nepal":{"a":"Flag: Nepal","b":"1F1F3-1F1F5","j":["flag","np","nation","country","banner"]},"flag-nauru":{"a":"Flag: Nauru","b":"1F1F3-1F1F7","j":["flag","nr","nation","country","banner"]},"flag-niue":{"a":"Flag: Niue","b":"1F1F3-1F1FA","j":["flag","nu","nation","country","banner"]},"flag-new-zealand":{"a":"Flag: New Zealand","b":"1F1F3-1F1FF","j":["flag","new","zealand","nation","country","banner"]},"flag-oman":{"a":"Flag: Oman","b":"1F1F4-1F1F2","j":["flag","om_symbol","nation","country","banner"]},"flag-panama":{"a":"Flag: Panama","b":"1F1F5-1F1E6","j":["flag","pa","nation","country","banner"]},"flag-peru":{"a":"Flag: Peru","b":"1F1F5-1F1EA","j":["flag","pe","nation","country","banner"]},"flag-french-polynesia":{"a":"Flag: French Polynesia","b":"1F1F5-1F1EB","j":["flag","french","polynesia","nation","country","banner"]},"flag-papua-new-guinea":{"a":"Flag: Papua New Guinea","b":"1F1F5-1F1EC","j":["flag","papua","new","guinea","nation","country","banner"]},"flag-philippines":{"a":"Flag: Philippines","b":"1F1F5-1F1ED","j":["flag","ph","nation","country","banner"]},"flag-pakistan":{"a":"Flag: Pakistan","b":"1F1F5-1F1F0","j":["flag","pk","nation","country","banner"]},"flag-poland":{"a":"Flag: Poland","b":"1F1F5-1F1F1","j":["flag","pl","nation","country","banner"]},"flag-st-pierre--miquelon":{"a":"Flag: St. Pierre & Miquelon","b":"1F1F5-1F1F2","j":["flag","flag_st_pierre_miquelon","saint","pierre","miquelon","nation","country","banner"]},"flag-pitcairn-islands":{"a":"Flag: Pitcairn Islands","b":"1F1F5-1F1F3","j":["flag","pitcairn","nation","country","banner"]},"flag-puerto-rico":{"a":"Flag: Puerto Rico","b":"1F1F5-1F1F7","j":["flag","puerto","rico","nation","country","banner"]},"flag-palestinian-territories":{"a":"Flag: Palestinian Territories","b":"1F1F5-1F1F8","j":["flag","palestine","palestinian","territories","nation","country","banner"]},"flag-portugal":{"a":"Flag: Portugal","b":"1F1F5-1F1F9","j":["flag","pt","nation","country","banner"]},"flag-palau":{"a":"Flag: Palau","b":"1F1F5-1F1FC","j":["flag","pw","nation","country","banner"]},"flag-paraguay":{"a":"Flag: Paraguay","b":"1F1F5-1F1FE","j":["flag","py","nation","country","banner"]},"flag-qatar":{"a":"Flag: Qatar","b":"1F1F6-1F1E6","j":["flag","qa","nation","country","banner"]},"flag-runion":{"a":"Flag: Réunion","b":"1F1F7-1F1EA","j":["flag","flag_reunion","réunion","nation","country","banner"]},"flag-romania":{"a":"Flag: Romania","b":"1F1F7-1F1F4","j":["flag","ro","nation","country","banner"]},"flag-serbia":{"a":"Flag: Serbia","b":"1F1F7-1F1F8","j":["flag","rs","nation","country","banner"]},"flag-russia":{"a":"Flag: Russia","b":"1F1F7-1F1FA","j":["flag","russian","federation","nation","country","banner"]},"flag-rwanda":{"a":"Flag: Rwanda","b":"1F1F7-1F1FC","j":["flag","rw","nation","country","banner"]},"flag-saudi-arabia":{"a":"Flag: Saudi Arabia","b":"1F1F8-1F1E6","j":["flag","nation","country","banner"]},"flag-solomon-islands":{"a":"Flag: Solomon Islands","b":"1F1F8-1F1E7","j":["flag","solomon","islands","nation","country","banner"]},"flag-seychelles":{"a":"Flag: Seychelles","b":"1F1F8-1F1E8","j":["flag","sc","nation","country","banner"]},"flag-sudan":{"a":"Flag: Sudan","b":"1F1F8-1F1E9","j":["flag","sd","nation","country","banner"]},"flag-sweden":{"a":"Flag: Sweden","b":"1F1F8-1F1EA","j":["flag","se","nation","country","banner"]},"flag-singapore":{"a":"Flag: Singapore","b":"1F1F8-1F1EC","j":["flag","sg","nation","country","banner"]},"flag-st-helena":{"a":"Flag: St. Helena","b":"1F1F8-1F1ED","j":["flag","saint","helena","ascension","tristan","cunha","nation","country","banner"]},"flag-slovenia":{"a":"Flag: Slovenia","b":"1F1F8-1F1EE","j":["flag","si","nation","country","banner"]},"flag-svalbard--jan-mayen":{"a":"Flag: Svalbard & Jan Mayen","b":"1F1F8-1F1EF","j":["flag","flag_svalbard_jan_mayen"]},"flag-slovakia":{"a":"Flag: Slovakia","b":"1F1F8-1F1F0","j":["flag","sk","nation","country","banner"]},"flag-sierra-leone":{"a":"Flag: Sierra Leone","b":"1F1F8-1F1F1","j":["flag","sierra","leone","nation","country","banner"]},"flag-san-marino":{"a":"Flag: San Marino","b":"1F1F8-1F1F2","j":["flag","san","marino","nation","country","banner"]},"flag-senegal":{"a":"Flag: Senegal","b":"1F1F8-1F1F3","j":["flag","sn","nation","country","banner"]},"flag-somalia":{"a":"Flag: Somalia","b":"1F1F8-1F1F4","j":["flag","so","nation","country","banner"]},"flag-suriname":{"a":"Flag: Suriname","b":"1F1F8-1F1F7","j":["flag","sr","nation","country","banner"]},"flag-south-sudan":{"a":"Flag: South Sudan","b":"1F1F8-1F1F8","j":["flag","south","sd","nation","country","banner"]},"flag-so-tom--prncipe":{"a":"Flag: São Tomé & Príncipe","b":"1F1F8-1F1F9","j":["flag","flag_sao_tome_principe","sao","tome","principe","nation","country","banner"]},"flag-el-salvador":{"a":"Flag: El Salvador","b":"1F1F8-1F1FB","j":["flag","el","salvador","nation","country","banner"]},"flag-sint-maarten":{"a":"Flag: Sint Maarten","b":"1F1F8-1F1FD","j":["flag","sint","maarten","dutch","nation","country","banner"]},"flag-syria":{"a":"Flag: Syria","b":"1F1F8-1F1FE","j":["flag","syrian","arab","republic","nation","country","banner"]},"flag-eswatini":{"a":"Flag: Eswatini","b":"1F1F8-1F1FF","j":["flag","sz","nation","country","banner"]},"flag-tristan-da-cunha":{"a":"Flag: Tristan Da Cunha","b":"1F1F9-1F1E6","j":["flag"]},"flag-turks--caicos-islands":{"a":"Flag: Turks & Caicos Islands","b":"1F1F9-1F1E8","j":["flag","flag_turks_caicos_islands","turks","caicos","islands","nation","country","banner"]},"flag-chad":{"a":"Flag: Chad","b":"1F1F9-1F1E9","j":["flag","td","nation","country","banner"]},"flag-french-southern-territories":{"a":"Flag: French Southern Territories","b":"1F1F9-1F1EB","j":["flag","french","southern","territories","nation","country","banner"]},"flag-togo":{"a":"Flag: Togo","b":"1F1F9-1F1EC","j":["flag","tg","nation","country","banner"]},"flag-thailand":{"a":"Flag: Thailand","b":"1F1F9-1F1ED","j":["flag","th","nation","country","banner"]},"flag-tajikistan":{"a":"Flag: Tajikistan","b":"1F1F9-1F1EF","j":["flag","tj","nation","country","banner"]},"flag-tokelau":{"a":"Flag: Tokelau","b":"1F1F9-1F1F0","j":["flag","tk","nation","country","banner"]},"flag-timorleste":{"a":"Flag: Timor-Leste","b":"1F1F9-1F1F1","j":["flag","flag_timor_leste","timor","leste","nation","country","banner"]},"flag-turkmenistan":{"a":"Flag: Turkmenistan","b":"1F1F9-1F1F2","j":["flag","nation","country","banner"]},"flag-tunisia":{"a":"Flag: Tunisia","b":"1F1F9-1F1F3","j":["flag","tn","nation","country","banner"]},"flag-tonga":{"a":"Flag: Tonga","b":"1F1F9-1F1F4","j":["flag","to","nation","country","banner"]},"flag-turkey":{"a":"Flag: Turkey","b":"1F1F9-1F1F7","j":["flag","turkey","nation","country","banner"]},"flag-trinidad--tobago":{"a":"Flag: Trinidad & Tobago","b":"1F1F9-1F1F9","j":["flag","flag_trinidad_tobago","trinidad","tobago","nation","country","banner"]},"flag-tuvalu":{"a":"Flag: Tuvalu","b":"1F1F9-1F1FB","j":["flag","nation","country","banner"]},"flag-taiwan":{"a":"Flag: Taiwan","b":"1F1F9-1F1FC","j":["flag","tw","nation","country","banner"]},"flag-tanzania":{"a":"Flag: Tanzania","b":"1F1F9-1F1FF","j":["flag","tanzania","united","republic","nation","country","banner"]},"flag-ukraine":{"a":"Flag: Ukraine","b":"1F1FA-1F1E6","j":["flag","ua","nation","country","banner"]},"flag-uganda":{"a":"Flag: Uganda","b":"1F1FA-1F1EC","j":["flag","ug","nation","country","banner"]},"flag-us-outlying-islands":{"a":"Flag: U.S. Outlying Islands","b":"1F1FA-1F1F2","j":["flag","flag_u_s_outlying_islands"]},"flag-united-nations":{"a":"Flag: United Nations","b":"1F1FA-1F1F3","j":["flag","un","banner"]},"flag-united-states":{"a":"Flag: United States","b":"1F1FA-1F1F8","j":["flag","united","states","america","nation","country","banner"]},"flag-uruguay":{"a":"Flag: Uruguay","b":"1F1FA-1F1FE","j":["flag","uy","nation","country","banner"]},"flag-uzbekistan":{"a":"Flag: Uzbekistan","b":"1F1FA-1F1FF","j":["flag","uz","nation","country","banner"]},"flag-vatican-city":{"a":"Flag: Vatican City","b":"1F1FB-1F1E6","j":["flag","vatican","city","nation","country","banner"]},"flag-st-vincent--grenadines":{"a":"Flag: St. Vincent & Grenadines","b":"1F1FB-1F1E8","j":["flag","flag_st_vincent_grenadines","saint","vincent","grenadines","nation","country","banner"]},"flag-venezuela":{"a":"Flag: Venezuela","b":"1F1FB-1F1EA","j":["flag","ve","bolivarian","republic","nation","country","banner"]},"flag-british-virgin-islands":{"a":"Flag: British Virgin Islands","b":"1F1FB-1F1EC","j":["flag","british","virgin","islands","bvi","nation","country","banner"]},"flag-us-virgin-islands":{"a":"Flag: U.S. Virgin Islands","b":"1F1FB-1F1EE","j":["flag","flag_u_s_virgin_islands","virgin","islands","us","nation","country","banner"]},"flag-vietnam":{"a":"Flag: Vietnam","b":"1F1FB-1F1F3","j":["flag","viet","nam","nation","country","banner"]},"flag-vanuatu":{"a":"Flag: Vanuatu","b":"1F1FB-1F1FA","j":["flag","vu","nation","country","banner"]},"flag-wallis--futuna":{"a":"Flag: Wallis & Futuna","b":"1F1FC-1F1EB","j":["flag","flag_wallis_futuna","wallis","futuna","nation","country","banner"]},"flag-samoa":{"a":"Flag: Samoa","b":"1F1FC-1F1F8","j":["flag","ws","nation","country","banner"]},"flag-kosovo":{"a":"Flag: Kosovo","b":"1F1FD-1F1F0","j":["flag","xk","nation","country","banner"]},"flag-yemen":{"a":"Flag: Yemen","b":"1F1FE-1F1EA","j":["flag","ye","nation","country","banner"]},"flag-mayotte":{"a":"Flag: Mayotte","b":"1F1FE-1F1F9","j":["flag","yt","nation","country","banner"]},"flag-south-africa":{"a":"Flag: South Africa","b":"1F1FF-1F1E6","j":["flag","south","africa","nation","country","banner"]},"flag-zambia":{"a":"Flag: Zambia","b":"1F1FF-1F1F2","j":["flag","zm","nation","country","banner"]},"flag-zimbabwe":{"a":"Flag: Zimbabwe","b":"1F1FF-1F1FC","j":["flag","zw","nation","country","banner"]},"flag-england":{"a":"Flag: England","b":"1F3F4-E0067-E0062-E0065-E006E-E0067-E007F","j":["flag","english"]},"flag-scotland":{"a":"Flag: Scotland","b":"1F3F4-E0067-E0062-E0073-E0063-E0074-E007F","j":["flag","scottish"]},"flag-wales":{"a":"Flag: Wales","b":"1F3F4-E0067-E0062-E0077-E006C-E0073-E007F","j":["flag","welsh"]}},"aliases":{}}
\ No newline at end of file
+{"compressed":true,"categories":[{"id":"smileys_&_emotion","name":"Smileys & Emotion","emojis":["grinning-face","grinning-face-with-big-eyes","grinning-face-with-smiling-eyes","beaming-face-with-smiling-eyes","grinning-squinting-face","grinning-face-with-sweat","rolling-on-the-floor-laughing","face-with-tears-of-joy","slightly-smiling-face","upsidedown-face","winking-face","smiling-face-with-smiling-eyes","smiling-face-with-halo","smiling-face-with-hearts","smiling-face-with-hearteyes","starstruck","face-blowing-a-kiss","kissing-face","smiling-face","kissing-face-with-closed-eyes","kissing-face-with-smiling-eyes","smiling-face-with-tear","face-savoring-food","face-with-tongue","winking-face-with-tongue","zany-face","squinting-face-with-tongue","moneymouth-face","hugging-face","face-with-hand-over-mouth","shushing-face","thinking-face","zippermouth-face","face-with-raised-eyebrow","neutral-face","expressionless-face","face-without-mouth","face-in-clouds","smirking-face","unamused-face","face-with-rolling-eyes","grimacing-face","face-exhaling","lying-face","relieved-face","pensive-face","sleepy-face","drooling-face","sleeping-face","face-with-medical-mask","face-with-thermometer","face-with-headbandage","nauseated-face","face-vomiting","sneezing-face","hot-face","cold-face","woozy-face","knockedout-face","face-with-spiral-eyes","exploding-head","cowboy-hat-face","partying-face","disguised-face","smiling-face-with-sunglasses","nerd-face","face-with-monocle","confused-face","worried-face","slightly-frowning-face","frowning-face","face-with-open-mouth","hushed-face","astonished-face","flushed-face","pleading-face","frowning-face-with-open-mouth","anguished-face","fearful-face","anxious-face-with-sweat","sad-but-relieved-face","crying-face","loudly-crying-face","face-screaming-in-fear","confounded-face","persevering-face","disappointed-face","downcast-face-with-sweat","weary-face","tired-face","yawning-face","face-with-steam-from-nose","pouting-face","angry-face","face-with-symbols-on-mouth","smiling-face-with-horns","angry-face-with-horns","skull","skull-and-crossbones","pile-of-poo","clown-face","ogre","goblin","ghost","alien","alien-monster","robot","grinning-cat","grinning-cat-with-smiling-eyes","cat-with-tears-of-joy","smiling-cat-with-hearteyes","cat-with-wry-smile","kissing-cat","weary-cat","crying-cat","pouting-cat","seenoevil-monkey","hearnoevil-monkey","speaknoevil-monkey","kiss-mark","love-letter","heart-with-arrow","heart-with-ribbon","sparkling-heart","growing-heart","beating-heart","revolving-hearts","two-hearts","heart-decoration","heart-exclamation","broken-heart","heart-on-fire","mending-heart","red-heart","orange-heart","yellow-heart","green-heart","blue-heart","purple-heart","brown-heart","black-heart","white-heart","hundred-points","anger-symbol","collision","dizzy","sweat-droplets","dashing-away","hole","bomb","speech-balloon","eye-in-speech-bubble","left-speech-bubble","right-anger-bubble","thought-balloon","zzz"]},{"id":"people_&_body","name":"People & Body","emojis":["waving-hand","raised-back-of-hand","hand-with-fingers-splayed","raised-hand","vulcan-salute","ok-hand","pinched-fingers","pinching-hand","victory-hand","crossed-fingers","loveyou-gesture","sign-of-the-horns","call-me-hand","backhand-index-pointing-left","backhand-index-pointing-right","backhand-index-pointing-up","middle-finger","backhand-index-pointing-down","index-pointing-up","thumbs-up","thumbs-down","raised-fist","oncoming-fist","leftfacing-fist","rightfacing-fist","clapping-hands","raising-hands","open-hands","palms-up-together","handshake","folded-hands","writing-hand","nail-polish","selfie","flexed-biceps","mechanical-arm","mechanical-leg","leg","foot","ear","ear-with-hearing-aid","nose","brain","anatomical-heart","lungs","tooth","bone","eyes","eye","tongue","mouth","baby","child","boy","girl","person","person-blond-hair","man","person-beard","man-beard","woman-beard","man-red-hair","man-curly-hair","man-white-hair","man-bald","woman","woman-red-hair","person-red-hair","woman-curly-hair","person-curly-hair","woman-white-hair","person-white-hair","woman-bald","person-bald","woman-blond-hair","man-blond-hair","older-person","old-man","old-woman","person-frowning","man-frowning","woman-frowning","person-pouting","man-pouting","woman-pouting","person-gesturing-no","man-gesturing-no","woman-gesturing-no","person-gesturing-ok","man-gesturing-ok","woman-gesturing-ok","person-tipping-hand","man-tipping-hand","woman-tipping-hand","person-raising-hand","man-raising-hand","woman-raising-hand","deaf-person","deaf-man","deaf-woman","person-bowing","man-bowing","woman-bowing","person-facepalming","man-facepalming","woman-facepalming","person-shrugging","man-shrugging","woman-shrugging","health-worker","man-health-worker","woman-health-worker","student","man-student","woman-student","teacher","man-teacher","woman-teacher","judge","man-judge","woman-judge","farmer","man-farmer","woman-farmer","cook","man-cook","woman-cook","mechanic","man-mechanic","woman-mechanic","factory-worker","man-factory-worker","woman-factory-worker","office-worker","man-office-worker","woman-office-worker","scientist","man-scientist","woman-scientist","technologist","man-technologist","woman-technologist","singer","man-singer","woman-singer","artist","man-artist","woman-artist","pilot","man-pilot","woman-pilot","astronaut","man-astronaut","woman-astronaut","firefighter","man-firefighter","woman-firefighter","police-officer","man-police-officer","woman-police-officer","detective","man-detective","woman-detective","guard","man-guard","woman-guard","ninja","construction-worker","man-construction-worker","woman-construction-worker","prince","princess","person-wearing-turban","man-wearing-turban","woman-wearing-turban","person-with-skullcap","woman-with-headscarf","person-in-tuxedo","man-in-tuxedo","woman-in-tuxedo","person-with-veil","man-with-veil","woman-with-veil","pregnant-woman","breastfeeding","woman-feeding-baby","man-feeding-baby","person-feeding-baby","baby-angel","santa-claus","mrs-claus","mx-claus","superhero","man-superhero","woman-superhero","supervillain","man-supervillain","woman-supervillain","mage","man-mage","woman-mage","fairy","man-fairy","woman-fairy","vampire","man-vampire","woman-vampire","merperson","merman","mermaid","elf","man-elf","woman-elf","genie","man-genie","woman-genie","zombie","man-zombie","woman-zombie","person-getting-massage","man-getting-massage","woman-getting-massage","person-getting-haircut","man-getting-haircut","woman-getting-haircut","person-walking","man-walking","woman-walking","person-standing","man-standing","woman-standing","person-kneeling","man-kneeling","woman-kneeling","person-with-white-cane","man-with-white-cane","woman-with-white-cane","person-in-motorized-wheelchair","man-in-motorized-wheelchair","woman-in-motorized-wheelchair","person-in-manual-wheelchair","man-in-manual-wheelchair","woman-in-manual-wheelchair","person-running","man-running","woman-running","woman-dancing","man-dancing","person-in-suit-levitating","people-with-bunny-ears","men-with-bunny-ears","women-with-bunny-ears","person-in-steamy-room","man-in-steamy-room","woman-in-steamy-room","person-climbing","man-climbing","woman-climbing","person-fencing","horse-racing","skier","snowboarder","person-golfing","man-golfing","woman-golfing","person-surfing","man-surfing","woman-surfing","person-rowing-boat","man-rowing-boat","woman-rowing-boat","person-swimming","man-swimming","woman-swimming","person-bouncing-ball","man-bouncing-ball","woman-bouncing-ball","person-lifting-weights","man-lifting-weights","woman-lifting-weights","person-biking","man-biking","woman-biking","person-mountain-biking","man-mountain-biking","woman-mountain-biking","person-cartwheeling","man-cartwheeling","woman-cartwheeling","people-wrestling","men-wrestling","women-wrestling","person-playing-water-polo","man-playing-water-polo","woman-playing-water-polo","person-playing-handball","man-playing-handball","woman-playing-handball","person-juggling","man-juggling","woman-juggling","person-in-lotus-position","man-in-lotus-position","woman-in-lotus-position","person-taking-bath","person-in-bed","people-holding-hands","women-holding-hands","woman-and-man-holding-hands","men-holding-hands","kiss","kiss-woman-man","kiss-man-man","kiss-woman-woman","couple-with-heart","couple-with-heart-woman-man","couple-with-heart-man-man","couple-with-heart-woman-woman","family","family-man-woman-boy","family-man-woman-girl","family-man-woman-girl-boy","family-man-woman-boy-boy","family-man-woman-girl-girl","family-man-man-boy","family-man-man-girl","family-man-man-girl-boy","family-man-man-boy-boy","family-man-man-girl-girl","family-woman-woman-boy","family-woman-woman-girl","family-woman-woman-girl-boy","family-woman-woman-boy-boy","family-woman-woman-girl-girl","family-man-boy","family-man-boy-boy","family-man-girl","family-man-girl-boy","family-man-girl-girl","family-woman-boy","family-woman-boy-boy","family-woman-girl","family-woman-girl-boy","family-woman-girl-girl","speaking-head","bust-in-silhouette","busts-in-silhouette","people-hugging","footprints"]},{"id":"animals_&_nature","name":"Animals & Nature","emojis":["monkey-face","monkey","gorilla","orangutan","dog-face","dog","guide-dog","service-dog","poodle","wolf","fox","raccoon","cat-face","cat","black-cat","lion","tiger-face","tiger","leopard","horse-face","horse","unicorn","zebra","deer","bison","cow-face","ox","water-buffalo","cow","pig-face","pig","boar","pig-nose","ram","ewe","goat","camel","twohump-camel","llama","giraffe","elephant","mammoth","rhinoceros","hippopotamus","mouse-face","mouse","rat","hamster","rabbit-face","rabbit","chipmunk","beaver","hedgehog","bat","bear","polar-bear","koala","panda","sloth","otter","skunk","kangaroo","badger","paw-prints","turkey","chicken","rooster","hatching-chick","baby-chick","frontfacing-baby-chick","bird","penguin","dove","eagle","duck","swan","owl","dodo","feather","flamingo","peacock","parrot","frog","crocodile","turtle","lizard","snake","dragon-face","dragon","sauropod","trex","spouting-whale","whale","dolphin","seal","fish","tropical-fish","blowfish","shark","octopus","spiral-shell","snail","butterfly","bug","ant","honeybee","beetle","lady-beetle","cricket","cockroach","spider","spider-web","scorpion","mosquito","fly","worm","microbe","bouquet","cherry-blossom","white-flower","rosette","rose","wilted-flower","hibiscus","sunflower","blossom","tulip","seedling","potted-plant","evergreen-tree","deciduous-tree","palm-tree","cactus","sheaf-of-rice","herb","shamrock","four-leaf-clover","maple-leaf","fallen-leaf","leaf-fluttering-in-wind"]},{"id":"food_&_drink","name":"Food & Drink","emojis":["grapes","melon","watermelon","tangerine","lemon","banana","pineapple","mango","red-apple","green-apple","pear","peach","cherries","strawberry","blueberries","kiwi-fruit","tomato","olive","coconut","avocado","eggplant","potato","carrot","ear-of-corn","hot-pepper","bell-pepper","cucumber","leafy-green","broccoli","garlic","onion","mushroom","peanuts","chestnut","bread","croissant","baguette-bread","flatbread","pretzel","bagel","pancakes","waffle","cheese-wedge","meat-on-bone","poultry-leg","cut-of-meat","bacon","hamburger","french-fries","pizza","hot-dog","sandwich","taco","burrito","tamale","stuffed-flatbread","falafel","egg","cooking","shallow-pan-of-food","pot-of-food","fondue","bowl-with-spoon","green-salad","popcorn","butter","salt","canned-food","bento-box","rice-cracker","rice-ball","cooked-rice","curry-rice","steaming-bowl","spaghetti","roasted-sweet-potato","oden","sushi","fried-shrimp","fish-cake-with-swirl","moon-cake","dango","dumpling","fortune-cookie","takeout-box","crab","lobster","shrimp","squid","oyster","soft-ice-cream","shaved-ice","ice-cream","doughnut","cookie","birthday-cake","shortcake","cupcake","pie","chocolate-bar","candy","lollipop","custard","honey-pot","baby-bottle","glass-of-milk","hot-beverage","teapot","teacup-without-handle","sake","bottle-with-popping-cork","wine-glass","cocktail-glass","tropical-drink","beer-mug","clinking-beer-mugs","clinking-glasses","tumbler-glass","cup-with-straw","bubble-tea","beverage-box","mate","ice","chopsticks","fork-and-knife-with-plate","fork-and-knife","spoon","kitchen-knife","amphora"]},{"id":"travel_&_places","name":"Travel & Places","emojis":["globe-showing-europeafrica","globe-showing-americas","globe-showing-asiaaustralia","globe-with-meridians","world-map","map-of-japan","compass","snowcapped-mountain","mountain","volcano","mount-fuji","camping","beach-with-umbrella","desert","desert-island","national-park","stadium","classical-building","building-construction","brick","rock","wood","hut","houses","derelict-house","house","house-with-garden","office-building","japanese-post-office","post-office","hospital","bank","hotel","love-hotel","convenience-store","school","department-store","factory","japanese-castle","castle","wedding","tokyo-tower","statue-of-liberty","church","mosque","hindu-temple","synagogue","shinto-shrine","kaaba","fountain","tent","foggy","night-with-stars","cityscape","sunrise-over-mountains","sunrise","cityscape-at-dusk","sunset","bridge-at-night","hot-springs","carousel-horse","ferris-wheel","roller-coaster","barber-pole","circus-tent","locomotive","railway-car","highspeed-train","bullet-train","train","metro","light-rail","station","tram","monorail","mountain-railway","tram-car","bus","oncoming-bus","trolleybus","minibus","ambulance","fire-engine","police-car","oncoming-police-car","taxi","oncoming-taxi","automobile","oncoming-automobile","sport-utility-vehicle","pickup-truck","delivery-truck","articulated-lorry","tractor","racing-car","motorcycle","motor-scooter","manual-wheelchair","motorized-wheelchair","auto-rickshaw","bicycle","kick-scooter","skateboard","roller-skate","bus-stop","motorway","railway-track","oil-drum","fuel-pump","police-car-light","horizontal-traffic-light","vertical-traffic-light","stop-sign","construction","anchor","sailboat","canoe","speedboat","passenger-ship","ferry","motor-boat","ship","airplane","small-airplane","airplane-departure","airplane-arrival","parachute","seat","helicopter","suspension-railway","mountain-cableway","aerial-tramway","satellite","rocket","flying-saucer","bellhop-bell","luggage","hourglass-done","hourglass-not-done","watch","alarm-clock","stopwatch","timer-clock","mantelpiece-clock","twelve-oclock","twelvethirty","one-oclock","onethirty","two-oclock","twothirty","three-oclock","threethirty","four-oclock","fourthirty","five-oclock","fivethirty","six-oclock","sixthirty","seven-oclock","seventhirty","eight-oclock","eightthirty","nine-oclock","ninethirty","ten-oclock","tenthirty","eleven-oclock","eleventhirty","new-moon","waxing-crescent-moon","first-quarter-moon","waxing-gibbous-moon","full-moon","waning-gibbous-moon","last-quarter-moon","waning-crescent-moon","crescent-moon","new-moon-face","first-quarter-moon-face","last-quarter-moon-face","thermometer","sun","full-moon-face","sun-with-face","ringed-planet","star","glowing-star","shooting-star","milky-way","cloud","sun-behind-cloud","cloud-with-lightning-and-rain","sun-behind-small-cloud","sun-behind-large-cloud","sun-behind-rain-cloud","cloud-with-rain","cloud-with-snow","cloud-with-lightning","tornado","fog","wind-face","cyclone","rainbow","closed-umbrella","umbrella","umbrella-with-rain-drops","umbrella-on-ground","high-voltage","snowflake","snowman","snowman-without-snow","comet","fire","droplet","water-wave"]},{"id":"activities","name":"Activities","emojis":["jackolantern","christmas-tree","fireworks","sparkler","firecracker","sparkles","balloon","party-popper","confetti-ball","tanabata-tree","pine-decoration","japanese-dolls","carp-streamer","wind-chime","moon-viewing-ceremony","red-envelope","ribbon","wrapped-gift","reminder-ribbon","admission-tickets","ticket","military-medal","trophy","sports-medal","1st-place-medal","2nd-place-medal","3rd-place-medal","soccer-ball","baseball","softball","basketball","volleyball","american-football","rugby-football","tennis","flying-disc","bowling","cricket-game","field-hockey","ice-hockey","lacrosse","ping-pong","badminton","boxing-glove","martial-arts-uniform","goal-net","flag-in-hole","ice-skate","fishing-pole","diving-mask","running-shirt","skis","sled","curling-stone","bullseye","yoyo","kite","pool-8-ball","crystal-ball","magic-wand","nazar-amulet","video-game","joystick","slot-machine","game-die","puzzle-piece","teddy-bear","piata","nesting-dolls","spade-suit","heart-suit","diamond-suit","club-suit","chess-pawn","joker","mahjong-red-dragon","flower-playing-cards","performing-arts","framed-picture","artist-palette","thread","sewing-needle","yarn","knot"]},{"id":"objects","name":"Objects","emojis":["glasses","sunglasses","goggles","lab-coat","safety-vest","necktie","tshirt","jeans","scarf","gloves","coat","socks","dress","kimono","sari","onepiece-swimsuit","briefs","shorts","bikini","womans-clothes","purse","handbag","clutch-bag","shopping-bags","backpack","thong-sandal","mans-shoe","running-shoe","hiking-boot","flat-shoe","highheeled-shoe","womans-sandal","ballet-shoes","womans-boot","crown","womans-hat","top-hat","graduation-cap","billed-cap","military-helmet","rescue-workers-helmet","prayer-beads","lipstick","ring","gem-stone","muted-speaker","speaker-low-volume","speaker-medium-volume","speaker-high-volume","loudspeaker","megaphone","postal-horn","bell","bell-with-slash","musical-score","musical-note","musical-notes","studio-microphone","level-slider","control-knobs","microphone","headphone","radio","saxophone","accordion","guitar","musical-keyboard","trumpet","violin","banjo","drum","long-drum","mobile-phone","mobile-phone-with-arrow","telephone","telephone-receiver","pager","fax-machine","battery","electric-plug","laptop","desktop-computer","printer","keyboard","computer-mouse","trackball","computer-disk","floppy-disk","optical-disk","dvd","abacus","movie-camera","film-frames","film-projector","clapper-board","television","camera","camera-with-flash","video-camera","videocassette","magnifying-glass-tilted-left","magnifying-glass-tilted-right","candle","light-bulb","flashlight","red-paper-lantern","diya-lamp","notebook-with-decorative-cover","closed-book","open-book","green-book","blue-book","orange-book","books","notebook","ledger","page-with-curl","scroll","page-facing-up","newspaper","rolledup-newspaper","bookmark-tabs","bookmark","label","money-bag","coin","yen-banknote","dollar-banknote","euro-banknote","pound-banknote","money-with-wings","credit-card","receipt","chart-increasing-with-yen","envelope","email","incoming-envelope","envelope-with-arrow","outbox-tray","inbox-tray","package","closed-mailbox-with-raised-flag","closed-mailbox-with-lowered-flag","open-mailbox-with-raised-flag","open-mailbox-with-lowered-flag","postbox","ballot-box-with-ballot","pencil","black-nib","fountain-pen","pen","paintbrush","crayon","memo","briefcase","file-folder","open-file-folder","card-index-dividers","calendar","tearoff-calendar","spiral-notepad","spiral-calendar","card-index","chart-increasing","chart-decreasing","bar-chart","clipboard","pushpin","round-pushpin","paperclip","linked-paperclips","straight-ruler","triangular-ruler","scissors","card-file-box","file-cabinet","wastebasket","locked","unlocked","locked-with-pen","locked-with-key","key","old-key","hammer","axe","pick","hammer-and-pick","hammer-and-wrench","dagger","crossed-swords","water-pistol","boomerang","bow-and-arrow","shield","carpentry-saw","wrench","screwdriver","nut-and-bolt","gear","clamp","balance-scale","white-cane","link","chains","hook","toolbox","magnet","ladder","alembic","test-tube","petri-dish","dna","microscope","telescope","satellite-antenna","syringe","drop-of-blood","pill","adhesive-bandage","stethoscope","door","elevator","mirror","window","bed","couch-and-lamp","chair","toilet","plunger","shower","bathtub","mouse-trap","razor","lotion-bottle","safety-pin","broom","basket","roll-of-paper","bucket","soap","toothbrush","sponge","fire-extinguisher","shopping-cart","cigarette","coffin","headstone","funeral-urn","moai","placard"]},{"id":"symbols","name":"Symbols","emojis":["atm-sign","litter-in-bin-sign","potable-water","wheelchair-symbol","mens-room","womens-room","restroom","baby-symbol","water-closet","passport-control","customs","baggage-claim","left-luggage","warning","children-crossing","no-entry","prohibited","no-bicycles","no-smoking","no-littering","nonpotable-water","no-pedestrians","no-mobile-phones","no-one-under-eighteen","radioactive","biohazard","up-arrow","upright-arrow","right-arrow","downright-arrow","down-arrow","downleft-arrow","left-arrow","upleft-arrow","updown-arrow","leftright-arrow","right-arrow-curving-left","left-arrow-curving-right","right-arrow-curving-up","right-arrow-curving-down","clockwise-vertical-arrows","counterclockwise-arrows-button","back-arrow","end-arrow","on-arrow","soon-arrow","top-arrow","place-of-worship","atom-symbol","om","star-of-david","wheel-of-dharma","yin-yang","latin-cross","orthodox-cross","star-and-crescent","peace-symbol","menorah","dotted-sixpointed-star","aries","taurus","gemini","cancer","leo","virgo","libra","scorpio","sagittarius","capricorn","aquarius","pisces","ophiuchus","shuffle-tracks-button","repeat-button","repeat-single-button","play-button","fastforward-button","next-track-button","play-or-pause-button","reverse-button","fast-reverse-button","last-track-button","upwards-button","fast-up-button","downwards-button","fast-down-button","pause-button","stop-button","record-button","eject-button","cinema","dim-button","bright-button","antenna-bars","vibration-mode","mobile-phone-off","female-sign","male-sign","transgender-symbol","multiply","plus","minus","divide","infinity","double-exclamation-mark","exclamation-question-mark","red-question-mark","white-question-mark","white-exclamation-mark","red-exclamation-mark","wavy-dash","currency-exchange","heavy-dollar-sign","medical-symbol","recycling-symbol","fleurdelis","trident-emblem","name-badge","japanese-symbol-for-beginner","hollow-red-circle","check-mark-button","check-box-with-check","check-mark","cross-mark","cross-mark-button","curly-loop","double-curly-loop","part-alternation-mark","eightspoked-asterisk","eightpointed-star","sparkle","copyright","registered","trade-mark","keycap","keycap","keycap-0","keycap-1","keycap-2","keycap-3","keycap-4","keycap-5","keycap-6","keycap-7","keycap-8","keycap-9","keycap-10","input-latin-uppercase","input-latin-lowercase","input-numbers","input-symbols","input-latin-letters","a-button-blood-type","ab-button-blood-type","b-button-blood-type","cl-button","cool-button","free-button","information","id-button","circled-m","new-button","ng-button","o-button-blood-type","ok-button","p-button","sos-button","up-button","vs-button","japanese-here-button","japanese-service-charge-button","japanese-monthly-amount-button","japanese-not-free-of-charge-button","japanese-reserved-button","japanese-bargain-button","japanese-discount-button","japanese-free-of-charge-button","japanese-prohibited-button","japanese-acceptable-button","japanese-application-button","japanese-passing-grade-button","japanese-vacancy-button","japanese-congratulations-button","japanese-secret-button","japanese-open-for-business-button","japanese-no-vacancy-button","red-circle","orange-circle","yellow-circle","green-circle","blue-circle","purple-circle","brown-circle","black-circle","white-circle","red-square","orange-square","yellow-square","green-square","blue-square","purple-square","brown-square","black-large-square","white-large-square","black-medium-square","white-medium-square","black-mediumsmall-square","white-mediumsmall-square","black-small-square","white-small-square","large-orange-diamond","large-blue-diamond","small-orange-diamond","small-blue-diamond","red-triangle-pointed-up","red-triangle-pointed-down","diamond-with-a-dot","radio-button","white-square-button","black-square-button"]},{"id":"flags","name":"Flags","emojis":["chequered-flag","triangular-flag","crossed-flags","black-flag","white-flag","rainbow-flag","transgender-flag","pirate-flag","flag-ascension-island","flag-andorra","flag-united-arab-emirates","flag-afghanistan","flag-antigua--barbuda","flag-anguilla","flag-albania","flag-armenia","flag-angola","flag-antarctica","flag-argentina","flag-american-samoa","flag-austria","flag-australia","flag-aruba","flag-land-islands","flag-azerbaijan","flag-bosnia--herzegovina","flag-barbados","flag-bangladesh","flag-belgium","flag-burkina-faso","flag-bulgaria","flag-bahrain","flag-burundi","flag-benin","flag-st-barthlemy","flag-bermuda","flag-brunei","flag-bolivia","flag-caribbean-netherlands","flag-brazil","flag-bahamas","flag-bhutan","flag-bouvet-island","flag-botswana","flag-belarus","flag-belize","flag-canada","flag-cocos-keeling-islands","flag-congo--kinshasa","flag-central-african-republic","flag-congo--brazzaville","flag-switzerland","flag-cte-divoire","flag-cook-islands","flag-chile","flag-cameroon","flag-china","flag-colombia","flag-clipperton-island","flag-costa-rica","flag-cuba","flag-cape-verde","flag-curaao","flag-christmas-island","flag-cyprus","flag-czechia","flag-germany","flag-diego-garcia","flag-djibouti","flag-denmark","flag-dominica","flag-dominican-republic","flag-algeria","flag-ceuta--melilla","flag-ecuador","flag-estonia","flag-egypt","flag-western-sahara","flag-eritrea","flag-spain","flag-ethiopia","flag-european-union","flag-finland","flag-fiji","flag-falkland-islands","flag-micronesia","flag-faroe-islands","flag-france","flag-gabon","flag-united-kingdom","flag-grenada","flag-georgia","flag-french-guiana","flag-guernsey","flag-ghana","flag-gibraltar","flag-greenland","flag-gambia","flag-guinea","flag-guadeloupe","flag-equatorial-guinea","flag-greece","flag-south-georgia--south-sandwich-islands","flag-guatemala","flag-guam","flag-guineabissau","flag-guyana","flag-hong-kong-sar-china","flag-heard--mcdonald-islands","flag-honduras","flag-croatia","flag-haiti","flag-hungary","flag-canary-islands","flag-indonesia","flag-ireland","flag-israel","flag-isle-of-man","flag-india","flag-british-indian-ocean-territory","flag-iraq","flag-iran","flag-iceland","flag-italy","flag-jersey","flag-jamaica","flag-jordan","flag-japan","flag-kenya","flag-kyrgyzstan","flag-cambodia","flag-kiribati","flag-comoros","flag-st-kitts--nevis","flag-north-korea","flag-south-korea","flag-kuwait","flag-cayman-islands","flag-kazakhstan","flag-laos","flag-lebanon","flag-st-lucia","flag-liechtenstein","flag-sri-lanka","flag-liberia","flag-lesotho","flag-lithuania","flag-luxembourg","flag-latvia","flag-libya","flag-morocco","flag-monaco","flag-moldova","flag-montenegro","flag-st-martin","flag-madagascar","flag-marshall-islands","flag-north-macedonia","flag-mali","flag-myanmar-burma","flag-mongolia","flag-macao-sar-china","flag-northern-mariana-islands","flag-martinique","flag-mauritania","flag-montserrat","flag-malta","flag-mauritius","flag-maldives","flag-malawi","flag-mexico","flag-malaysia","flag-mozambique","flag-namibia","flag-new-caledonia","flag-niger","flag-norfolk-island","flag-nigeria","flag-nicaragua","flag-netherlands","flag-norway","flag-nepal","flag-nauru","flag-niue","flag-new-zealand","flag-oman","flag-panama","flag-peru","flag-french-polynesia","flag-papua-new-guinea","flag-philippines","flag-pakistan","flag-poland","flag-st-pierre--miquelon","flag-pitcairn-islands","flag-puerto-rico","flag-palestinian-territories","flag-portugal","flag-palau","flag-paraguay","flag-qatar","flag-runion","flag-romania","flag-serbia","flag-russia","flag-rwanda","flag-saudi-arabia","flag-solomon-islands","flag-seychelles","flag-sudan","flag-sweden","flag-singapore","flag-st-helena","flag-slovenia","flag-svalbard--jan-mayen","flag-slovakia","flag-sierra-leone","flag-san-marino","flag-senegal","flag-somalia","flag-suriname","flag-south-sudan","flag-so-tom--prncipe","flag-el-salvador","flag-sint-maarten","flag-syria","flag-eswatini","flag-tristan-da-cunha","flag-turks--caicos-islands","flag-chad","flag-french-southern-territories","flag-togo","flag-thailand","flag-tajikistan","flag-tokelau","flag-timorleste","flag-turkmenistan","flag-tunisia","flag-tonga","flag-turkey","flag-trinidad--tobago","flag-tuvalu","flag-taiwan","flag-tanzania","flag-ukraine","flag-uganda","flag-us-outlying-islands","flag-united-nations","flag-united-states","flag-uruguay","flag-uzbekistan","flag-vatican-city","flag-st-vincent--grenadines","flag-venezuela","flag-british-virgin-islands","flag-us-virgin-islands","flag-vietnam","flag-vanuatu","flag-wallis--futuna","flag-samoa","flag-kosovo","flag-yemen","flag-mayotte","flag-south-africa","flag-zambia","flag-zimbabwe","flag-england","flag-scotland","flag-wales"]}],"emojis":{"grinning-face":{"a":"Grinning Face","b":"1F600","j":["face","grin","smile","happy","joy",":D"]},"grinning-face-with-big-eyes":{"a":"Grinning Face with Big Eyes","b":"1F603","j":["face","mouth","open","smile","happy","joy","haha",":D",":)","funny"]},"grinning-face-with-smiling-eyes":{"a":"Grinning Face with Smiling Eyes","b":"1F604","j":["eye","face","mouth","open","smile","happy","joy","funny","haha","laugh","like",":D",":)"]},"beaming-face-with-smiling-eyes":{"a":"Beaming Face with Smiling Eyes","b":"1F601","j":["eye","face","grin","smile","happy","joy","kawaii"]},"grinning-squinting-face":{"a":"Grinning Squinting Face","b":"1F606","j":["face","laugh","mouth","satisfied","smile","happy","joy","lol","haha","glad","XD"]},"grinning-face-with-sweat":{"a":"Grinning Face with Sweat","b":"1F605","j":["cold","face","open","smile","sweat","hot","happy","laugh","relief"]},"rolling-on-the-floor-laughing":{"a":"Rolling on the Floor Laughing","b":"1F923","j":["face","floor","laugh","rofl","rolling","rotfl","laughing","lol","haha"]},"face-with-tears-of-joy":{"a":"Face with Tears of Joy","b":"1F602","j":["face","joy","laugh","tear","cry","tears","weep","happy","happytears","haha"]},"slightly-smiling-face":{"a":"Slightly Smiling Face","b":"1F642","j":["face","smile"]},"upsidedown-face":{"a":"Upside-Down Face","b":"1F643","j":["face","upside-down","upside_down_face","flipped","silly","smile"]},"winking-face":{"a":"Winking Face","b":"1F609","j":["face","wink","happy","mischievous","secret",";)","smile","eye"]},"smiling-face-with-smiling-eyes":{"a":"Smiling Face with Smiling Eyes","b":"1F60A","j":["blush","eye","face","smile","happy","flushed","crush","embarrassed","shy","joy"]},"smiling-face-with-halo":{"a":"Smiling Face with Halo","b":"1F607","j":["angel","face","fantasy","halo","innocent","heaven"]},"smiling-face-with-hearts":{"a":"Smiling Face with Hearts","b":"1F970","j":["adore","crush","hearts","in love","face","love","like","affection","valentines","infatuation"]},"smiling-face-with-hearteyes":{"a":"Smiling Face with Heart-Eyes","b":"1F60D","j":["eye","face","love","smile","smiling face with heart-eyes","smiling_face_with_heart_eyes","like","affection","valentines","infatuation","crush","heart"]},"starstruck":{"a":"Star-Struck","b":"1F929","j":["eyes","face","grinning","star","star-struck","starry-eyed","star_struck","smile","starry"]},"face-blowing-a-kiss":{"a":"Face Blowing a Kiss","b":"1F618","j":["face","kiss","love","like","affection","valentines","infatuation"]},"kissing-face":{"a":"Kissing Face","b":"1F617","j":["face","kiss","love","like","3","valentines","infatuation"]},"smiling-face":{"a":"Smiling Face","b":"263A","j":["face","outlined","relaxed","smile","blush","massage","happiness"]},"kissing-face-with-closed-eyes":{"a":"Kissing Face with Closed Eyes","b":"1F61A","j":["closed","eye","face","kiss","love","like","affection","valentines","infatuation"]},"kissing-face-with-smiling-eyes":{"a":"Kissing Face with Smiling Eyes","b":"1F619","j":["eye","face","kiss","smile","affection","valentines","infatuation"]},"smiling-face-with-tear":{"a":"Smiling Face with Tear","b":"1F972","j":["grateful","proud","relieved","smiling","tear","touched","sad","cry","pretend"]},"face-savoring-food":{"a":"Face Savoring Food","b":"1F60B","j":["delicious","face","savouring","smile","yum","happy","joy","tongue","silly","yummy","nom"]},"face-with-tongue":{"a":"Face with Tongue","b":"1F61B","j":["face","tongue","prank","childish","playful","mischievous","smile"]},"winking-face-with-tongue":{"a":"Winking Face with Tongue","b":"1F61C","j":["eye","face","joke","tongue","wink","prank","childish","playful","mischievous","smile"]},"zany-face":{"a":"Zany Face","b":"1F92A","j":["eye","goofy","large","small","face","crazy"]},"squinting-face-with-tongue":{"a":"Squinting Face with Tongue","b":"1F61D","j":["eye","face","horrible","taste","tongue","prank","playful","mischievous","smile"]},"moneymouth-face":{"a":"Money-Mouth Face","b":"1F911","j":["face","money","money-mouth face","mouth","money_mouth_face","rich","dollar"]},"hugging-face":{"a":"Hugging Face","b":"1F917","j":["face","hug","hugging","smile"]},"face-with-hand-over-mouth":{"a":"Face with Hand over Mouth","b":"1F92D","j":["whoops","shock","sudden realization","surprise","face"]},"shushing-face":{"a":"Shushing Face","b":"1F92B","j":["quiet","shush","face","shhh"]},"thinking-face":{"a":"Thinking Face","b":"1F914","j":["face","thinking","hmmm","think","consider"]},"zippermouth-face":{"a":"Zipper-Mouth Face","b":"1F910","j":["face","mouth","zipper","zipper-mouth face","zipper_mouth_face","sealed","secret"]},"face-with-raised-eyebrow":{"a":"Face with Raised Eyebrow","b":"1F928","j":["distrust","skeptic","disapproval","disbelief","mild surprise","scepticism","face","surprise"]},"neutral-face":{"a":"Neutral Face","b":"1F610","j":["deadpan","face","meh","neutral","indifference",":|"]},"expressionless-face":{"a":"Expressionless Face","b":"1F611","j":["expressionless","face","inexpressive","meh","unexpressive","indifferent","-_-","deadpan"]},"face-without-mouth":{"a":"Face Without Mouth","b":"1F636","j":["face","mouth","quiet","silent","hellokitty"]},"face-in-clouds":{"a":"⊛ Face in Clouds","b":"1F636-200D-1F32B-FE0F","j":["absentminded","face in clouds","face in the fog","head in clouds"]},"smirking-face":{"a":"Smirking Face","b":"1F60F","j":["face","smirk","smile","mean","prank","smug","sarcasm"]},"unamused-face":{"a":"Unamused Face","b":"1F612","j":["face","unamused","unhappy","indifference","bored","straight face","serious","sarcasm","unimpressed","skeptical","dubious","side_eye"]},"face-with-rolling-eyes":{"a":"Face with Rolling Eyes","b":"1F644","j":["eyeroll","eyes","face","rolling","frustrated"]},"grimacing-face":{"a":"Grimacing Face","b":"1F62C","j":["face","grimace","teeth"]},"face-exhaling":{"a":"⊛ Face Exhaling","b":"1F62E-200D-1F4A8","j":["exhale","face exhaling","gasp","groan","relief","whisper","whistle"]},"lying-face":{"a":"Lying Face","b":"1F925","j":["face","lie","pinocchio"]},"relieved-face":{"a":"Relieved Face","b":"1F60C","j":["face","relieved","relaxed","phew","massage","happiness"]},"pensive-face":{"a":"Pensive Face","b":"1F614","j":["dejected","face","pensive","sad","depressed","upset"]},"sleepy-face":{"a":"Sleepy Face","b":"1F62A","j":["face","sleep","tired","rest","nap"]},"drooling-face":{"a":"Drooling Face","b":"1F924","j":["drooling","face"]},"sleeping-face":{"a":"Sleeping Face","b":"1F634","j":["face","sleep","zzz","tired","sleepy","night"]},"face-with-medical-mask":{"a":"Face with Medical Mask","b":"1F637","j":["cold","doctor","face","mask","sick","ill","disease"]},"face-with-thermometer":{"a":"Face with Thermometer","b":"1F912","j":["face","ill","sick","thermometer","temperature","cold","fever"]},"face-with-headbandage":{"a":"Face with Head-Bandage","b":"1F915","j":["bandage","face","face with head-bandage","hurt","injury","face_with_head_bandage","injured","clumsy"]},"nauseated-face":{"a":"Nauseated Face","b":"1F922","j":["face","nauseated","vomit","gross","green","sick","throw up","ill"]},"face-vomiting":{"a":"Face Vomiting","b":"1F92E","j":["puke","sick","vomit","face"]},"sneezing-face":{"a":"Sneezing Face","b":"1F927","j":["face","gesundheit","sneeze","sick","allergy"]},"hot-face":{"a":"Hot Face","b":"1F975","j":["feverish","heat stroke","hot","red-faced","sweating","face","heat","red"]},"cold-face":{"a":"Cold Face","b":"1F976","j":["blue-faced","cold","freezing","frostbite","icicles","face","blue","frozen"]},"woozy-face":{"a":"Woozy Face","b":"1F974","j":["dizzy","intoxicated","tipsy","uneven eyes","wavy mouth","face","wavy"]},"knockedout-face":{"a":"Knocked-out Face","b":"1F635","j":["dead","face","knocked out","knocked-out face","dizzy_face","spent","unconscious","xox","dizzy"]},"face-with-spiral-eyes":{"a":"⊛ Face with Spiral Eyes","b":"1F635-200D-1F4AB","j":["dizzy","face with spiral eyes","hypnotized","spiral","trouble","whoa"]},"exploding-head":{"a":"Exploding Head","b":"1F92F","j":["mind blown","shocked","face","mind","blown"]},"cowboy-hat-face":{"a":"Cowboy Hat Face","b":"1F920","j":["cowboy","cowgirl","face","hat"]},"partying-face":{"a":"Partying Face","b":"1F973","j":["celebration","hat","horn","party","face","woohoo"]},"disguised-face":{"a":"Disguised Face","b":"1F978","j":["disguise","face","glasses","incognito","nose","pretent","brows","moustache"]},"smiling-face-with-sunglasses":{"a":"Smiling Face with Sunglasses","b":"1F60E","j":["bright","cool","face","sun","sunglasses","smile","summer","beach","sunglass"]},"nerd-face":{"a":"Nerd Face","b":"1F913","j":["face","geek","nerd","nerdy","dork"]},"face-with-monocle":{"a":"Face with Monocle","b":"1F9D0","j":["stuffy","wealthy","face"]},"confused-face":{"a":"Confused Face","b":"1F615","j":["confused","face","meh","indifference","huh","weird","hmmm",":/"]},"worried-face":{"a":"Worried Face","b":"1F61F","j":["face","worried","concern","nervous",":("]},"slightly-frowning-face":{"a":"Slightly Frowning Face","b":"1F641","j":["face","frown","frowning","disappointed","sad","upset"]},"frowning-face":{"a":"Frowning Face","b":"2639","j":["face","frown","sad","upset"]},"face-with-open-mouth":{"a":"Face with Open Mouth","b":"1F62E","j":["face","mouth","open","sympathy","surprise","impressed","wow","whoa",":O"]},"hushed-face":{"a":"Hushed Face","b":"1F62F","j":["face","hushed","stunned","surprised","woo","shh"]},"astonished-face":{"a":"Astonished Face","b":"1F632","j":["astonished","face","shocked","totally","xox","surprised","poisoned"]},"flushed-face":{"a":"Flushed Face","b":"1F633","j":["dazed","face","flushed","blush","shy","flattered"]},"pleading-face":{"a":"Pleading Face","b":"1F97A","j":["begging","mercy","puppy eyes","face"]},"frowning-face-with-open-mouth":{"a":"Frowning Face with Open Mouth","b":"1F626","j":["face","frown","mouth","open","aw","what"]},"anguished-face":{"a":"Anguished Face","b":"1F627","j":["anguished","face","stunned","nervous"]},"fearful-face":{"a":"Fearful Face","b":"1F628","j":["face","fear","fearful","scared","terrified","nervous","oops","huh"]},"anxious-face-with-sweat":{"a":"Anxious Face with Sweat","b":"1F630","j":["blue","cold","face","rushed","sweat","nervous"]},"sad-but-relieved-face":{"a":"Sad but Relieved Face","b":"1F625","j":["disappointed","face","relieved","whew","phew","sweat","nervous"]},"crying-face":{"a":"Crying Face","b":"1F622","j":["cry","face","sad","tear","tears","depressed","upset",":'("]},"loudly-crying-face":{"a":"Loudly Crying Face","b":"1F62D","j":["cry","face","sad","sob","tear","tears","upset","depressed"]},"face-screaming-in-fear":{"a":"Face Screaming in Fear","b":"1F631","j":["face","fear","munch","scared","scream","omg"]},"confounded-face":{"a":"Confounded Face","b":"1F616","j":["confounded","face","confused","sick","unwell","oops",":S"]},"persevering-face":{"a":"Persevering Face","b":"1F623","j":["face","persevere","sick","no","upset","oops"]},"disappointed-face":{"a":"Disappointed Face","b":"1F61E","j":["disappointed","face","sad","upset","depressed",":("]},"downcast-face-with-sweat":{"a":"Downcast Face with Sweat","b":"1F613","j":["cold","face","sweat","hot","sad","tired","exercise"]},"weary-face":{"a":"Weary Face","b":"1F629","j":["face","tired","weary","sleepy","sad","frustrated","upset"]},"tired-face":{"a":"Tired Face","b":"1F62B","j":["face","tired","sick","whine","upset","frustrated"]},"yawning-face":{"a":"Yawning Face","b":"1F971","j":["bored","tired","yawn","sleepy"]},"face-with-steam-from-nose":{"a":"Face with Steam From Nose","b":"1F624","j":["face","triumph","won","gas","phew","proud","pride"]},"pouting-face":{"a":"Pouting Face","b":"1F621","j":["angry","face","mad","pouting","rage","red","hate","despise"]},"angry-face":{"a":"Angry Face","b":"1F620","j":["anger","angry","face","mad","annoyed","frustrated"]},"face-with-symbols-on-mouth":{"a":"Face with Symbols on Mouth","b":"1F92C","j":["swearing","cursing","face","cussing","profanity","expletive"]},"smiling-face-with-horns":{"a":"Smiling Face with Horns","b":"1F608","j":["face","fairy tale","fantasy","horns","smile","devil"]},"angry-face-with-horns":{"a":"Angry Face with Horns","b":"1F47F","j":["demon","devil","face","fantasy","imp","angry","horns"]},"skull":{"a":"Skull","b":"1F480","j":["death","face","fairy tale","monster","dead","skeleton","creepy"]},"skull-and-crossbones":{"a":"Skull and Crossbones","b":"2620","j":["crossbones","death","face","monster","skull","poison","danger","deadly","scary","pirate","evil"]},"pile-of-poo":{"a":"Pile of Poo","b":"1F4A9","j":["dung","face","monster","poo","poop","hankey","shitface","fail","turd","shit"]},"clown-face":{"a":"Clown Face","b":"1F921","j":["clown","face"]},"ogre":{"a":"Ogre","b":"1F479","j":["creature","face","fairy tale","fantasy","monster","troll","red","mask","halloween","scary","creepy","devil","demon","japanese"]},"goblin":{"a":"Goblin","b":"1F47A","j":["creature","face","fairy tale","fantasy","monster","red","evil","mask","scary","creepy","japanese"]},"ghost":{"a":"Ghost","b":"1F47B","j":["creature","face","fairy tale","fantasy","monster","halloween","spooky","scary"]},"alien":{"a":"Alien","b":"1F47D","j":["creature","extraterrestrial","face","fantasy","ufo","UFO","paul","weird","outer_space"]},"alien-monster":{"a":"Alien Monster","b":"1F47E","j":["alien","creature","extraterrestrial","face","monster","ufo","game","arcade","play"]},"robot":{"a":"Robot","b":"1F916","j":["face","monster","computer","machine","bot"]},"grinning-cat":{"a":"Grinning Cat","b":"1F63A","j":["cat","face","grinning","mouth","open","smile","animal","cats","happy"]},"grinning-cat-with-smiling-eyes":{"a":"Grinning Cat with Smiling Eyes","b":"1F638","j":["cat","eye","face","grin","smile","animal","cats"]},"cat-with-tears-of-joy":{"a":"Cat with Tears of Joy","b":"1F639","j":["cat","face","joy","tear","animal","cats","haha","happy","tears"]},"smiling-cat-with-hearteyes":{"a":"Smiling Cat with Heart-Eyes","b":"1F63B","j":["cat","eye","face","heart","love","smile","smiling cat with heart-eyes","smiling_cat_with_heart_eyes","animal","like","affection","cats","valentines"]},"cat-with-wry-smile":{"a":"Cat with Wry Smile","b":"1F63C","j":["cat","face","ironic","smile","wry","animal","cats","smirk"]},"kissing-cat":{"a":"Kissing Cat","b":"1F63D","j":["cat","eye","face","kiss","animal","cats"]},"weary-cat":{"a":"Weary Cat","b":"1F640","j":["cat","face","oh","surprised","weary","animal","cats","munch","scared","scream"]},"crying-cat":{"a":"Crying Cat","b":"1F63F","j":["cat","cry","face","sad","tear","animal","tears","weep","cats","upset"]},"pouting-cat":{"a":"Pouting Cat","b":"1F63E","j":["cat","face","pouting","animal","cats"]},"seenoevil-monkey":{"a":"See-No-Evil Monkey","b":"1F648","j":["evil","face","forbidden","monkey","see","see-no-evil monkey","see_no_evil_monkey","animal","nature","haha"]},"hearnoevil-monkey":{"a":"Hear-No-Evil Monkey","b":"1F649","j":["evil","face","forbidden","hear","hear-no-evil monkey","monkey","hear_no_evil_monkey","animal","nature"]},"speaknoevil-monkey":{"a":"Speak-No-Evil Monkey","b":"1F64A","j":["evil","face","forbidden","monkey","speak","speak-no-evil monkey","speak_no_evil_monkey","animal","nature","omg"]},"kiss-mark":{"a":"Kiss Mark","b":"1F48B","j":["kiss","lips","face","love","like","affection","valentines"]},"love-letter":{"a":"Love Letter","b":"1F48C","j":["heart","letter","love","mail","email","like","affection","envelope","valentines"]},"heart-with-arrow":{"a":"Heart with Arrow","b":"1F498","j":["arrow","cupid","love","like","heart","affection","valentines"]},"heart-with-ribbon":{"a":"Heart with Ribbon","b":"1F49D","j":["ribbon","valentine","love","valentines"]},"sparkling-heart":{"a":"Sparkling Heart","b":"1F496","j":["excited","sparkle","love","like","affection","valentines"]},"growing-heart":{"a":"Growing Heart","b":"1F497","j":["excited","growing","nervous","pulse","like","love","affection","valentines","pink"]},"beating-heart":{"a":"Beating Heart","b":"1F493","j":["beating","heartbeat","pulsating","love","like","affection","valentines","pink","heart"]},"revolving-hearts":{"a":"Revolving Hearts","b":"1F49E","j":["revolving","love","like","affection","valentines"]},"two-hearts":{"a":"Two Hearts","b":"1F495","j":["love","like","affection","valentines","heart"]},"heart-decoration":{"a":"Heart Decoration","b":"1F49F","j":["heart","purple-square","love","like"]},"heart-exclamation":{"a":"Heart Exclamation","b":"2763","j":["exclamation","mark","punctuation","decoration","love"]},"broken-heart":{"a":"Broken Heart","b":"1F494","j":["break","broken","sad","sorry","heart","heartbreak"]},"heart-on-fire":{"a":"⊛ Heart on Fire","b":"2764-FE0F-200D-1F525","j":["burn","heart","heart on fire","love","lust","sacred heart"]},"mending-heart":{"a":"⊛ Mending Heart","b":"2764-FE0F-200D-1FA79","j":["healthier","improving","mending","mending heart","recovering","recuperating","well"]},"red-heart":{"a":"Red Heart","b":"2764","j":["heart","love","like","valentines"]},"orange-heart":{"a":"Orange Heart","b":"1F9E1","j":["orange","love","like","affection","valentines"]},"yellow-heart":{"a":"Yellow Heart","b":"1F49B","j":["yellow","love","like","affection","valentines"]},"green-heart":{"a":"Green Heart","b":"1F49A","j":["green","love","like","affection","valentines"]},"blue-heart":{"a":"Blue Heart","b":"1F499","j":["blue","love","like","affection","valentines"]},"purple-heart":{"a":"Purple Heart","b":"1F49C","j":["purple","love","like","affection","valentines"]},"brown-heart":{"a":"Brown Heart","b":"1F90E","j":["brown","heart","coffee"]},"black-heart":{"a":"Black Heart","b":"1F5A4","j":["black","evil","wicked"]},"white-heart":{"a":"White Heart","b":"1F90D","j":["heart","white","pure"]},"hundred-points":{"a":"Hundred Points","b":"1F4AF","j":["100","full","hundred","score","perfect","numbers","century","exam","quiz","test","pass"]},"anger-symbol":{"a":"Anger Symbol","b":"1F4A2","j":["angry","comic","mad"]},"collision":{"a":"Collision","b":"1F4A5","j":["boom","comic","bomb","explode","explosion","blown"]},"dizzy":{"a":"Dizzy","b":"1F4AB","j":["comic","star","sparkle","shoot","magic"]},"sweat-droplets":{"a":"Sweat Droplets","b":"1F4A6","j":["comic","splashing","sweat","water","drip","oops"]},"dashing-away":{"a":"Dashing Away","b":"1F4A8","j":["comic","dash","running","wind","air","fast","shoo","fart","smoke","puff"]},"hole":{"a":"Hole","b":"1F573","j":["embarrassing"]},"bomb":{"a":"Bomb","b":"1F4A3","j":["comic","boom","explode","explosion","terrorism"]},"speech-balloon":{"a":"Speech Balloon","b":"1F4AC","j":["balloon","bubble","comic","dialog","speech","words","message","talk","chatting"]},"eye-in-speech-bubble":{"a":"Eye in Speech Bubble","b":"1F441-FE0F-200D-1F5E8-FE0F","j":["eye","speech bubble","witness","info"]},"left-speech-bubble":{"a":"Left Speech Bubble","b":"1F5E8","j":["dialog","speech","words","message","talk","chatting"]},"right-anger-bubble":{"a":"Right Anger Bubble","b":"1F5EF","j":["angry","balloon","bubble","mad","caption","speech","thinking"]},"thought-balloon":{"a":"Thought Balloon","b":"1F4AD","j":["balloon","bubble","comic","thought","cloud","speech","thinking","dream"]},"zzz":{"a":"Zzz","b":"1F4A4","j":["comic","sleep","sleepy","tired","dream"]},"waving-hand":{"a":"Waving Hand","b":"1F44B","j":["hand","wave","waving","hands","gesture","goodbye","solong","farewell","hello","hi","palm"]},"raised-back-of-hand":{"a":"Raised Back of Hand","b":"1F91A","j":["backhand","raised","fingers"]},"hand-with-fingers-splayed":{"a":"Hand with Fingers Splayed","b":"1F590","j":["finger","hand","splayed","fingers","palm"]},"raised-hand":{"a":"Raised Hand","b":"270B","j":["hand","high 5","high five","fingers","stop","highfive","palm","ban"]},"vulcan-salute":{"a":"Vulcan Salute","b":"1F596","j":["finger","hand","spock","vulcan","fingers","star trek"]},"ok-hand":{"a":"Ok Hand","b":"1F44C","j":["hand","OK","fingers","limbs","perfect","ok","okay"]},"pinched-fingers":{"a":"Pinched Fingers","b":"1F90C","j":["fingers","hand gesture","interrogation","pinched","sarcastic","size","tiny","small"]},"pinching-hand":{"a":"Pinching Hand","b":"1F90F","j":["small amount","tiny","small","size"]},"victory-hand":{"a":"Victory Hand","b":"270C","j":["hand","v","victory","fingers","ohyeah","peace","two"]},"crossed-fingers":{"a":"Crossed Fingers","b":"1F91E","j":["cross","finger","hand","luck","good","lucky"]},"loveyou-gesture":{"a":"Love-You Gesture","b":"1F91F","j":["hand","ILY","love-you gesture","love_you_gesture","fingers","gesture"]},"sign-of-the-horns":{"a":"Sign of the Horns","b":"1F918","j":["finger","hand","horns","rock-on","fingers","evil_eye","sign_of_horns","rock_on"]},"call-me-hand":{"a":"Call Me Hand","b":"1F919","j":["call","hand","hands","gesture"]},"backhand-index-pointing-left":{"a":"Backhand Index Pointing Left","b":"1F448","j":["backhand","finger","hand","index","point","direction","fingers","left"]},"backhand-index-pointing-right":{"a":"Backhand Index Pointing Right","b":"1F449","j":["backhand","finger","hand","index","point","fingers","direction","right"]},"backhand-index-pointing-up":{"a":"Backhand Index Pointing Up","b":"1F446","j":["backhand","finger","hand","point","up","fingers","direction"]},"middle-finger":{"a":"Middle Finger","b":"1F595","j":["finger","hand","fingers","rude","middle","flipping"]},"backhand-index-pointing-down":{"a":"Backhand Index Pointing Down","b":"1F447","j":["backhand","down","finger","hand","point","fingers","direction"]},"index-pointing-up":{"a":"Index Pointing Up","b":"261D","j":["finger","hand","index","point","up","fingers","direction"]},"thumbs-up":{"a":"Thumbs Up","b":"1F44D","j":["+1","hand","thumb","up","thumbsup","yes","awesome","good","agree","accept","cool","like"]},"thumbs-down":{"a":"Thumbs Down","b":"1F44E","j":["-1","down","hand","thumb","thumbsdown","no","dislike"]},"raised-fist":{"a":"Raised Fist","b":"270A","j":["clenched","fist","hand","punch","fingers","grasp"]},"oncoming-fist":{"a":"Oncoming Fist","b":"1F44A","j":["clenched","fist","hand","punch","angry","violence","hit","attack"]},"leftfacing-fist":{"a":"Left-Facing Fist","b":"1F91B","j":["fist","left-facing fist","leftwards","left_facing_fist","hand","fistbump"]},"rightfacing-fist":{"a":"Right-Facing Fist","b":"1F91C","j":["fist","right-facing fist","rightwards","right_facing_fist","hand","fistbump"]},"clapping-hands":{"a":"Clapping Hands","b":"1F44F","j":["clap","hand","hands","praise","applause","congrats","yay"]},"raising-hands":{"a":"Raising Hands","b":"1F64C","j":["celebration","gesture","hand","hooray","raised","yea","hands"]},"open-hands":{"a":"Open Hands","b":"1F450","j":["hand","open","fingers","butterfly","hands"]},"palms-up-together":{"a":"Palms Up Together","b":"1F932","j":["prayer","cupped hands","hands","gesture","cupped"]},"handshake":{"a":"Handshake","b":"1F91D","j":["agreement","hand","meeting","shake"]},"folded-hands":{"a":"Folded Hands","b":"1F64F","j":["ask","hand","high 5","high five","please","pray","thanks","hope","wish","namaste","highfive"]},"writing-hand":{"a":"Writing Hand","b":"270D","j":["hand","write","lower_left_ballpoint_pen","stationery","compose"]},"nail-polish":{"a":"Nail Polish","b":"1F485","j":["care","cosmetics","manicure","nail","polish","beauty","finger","fashion"]},"selfie":{"a":"Selfie","b":"1F933","j":["camera","phone"]},"flexed-biceps":{"a":"Flexed Biceps","b":"1F4AA","j":["biceps","comic","flex","muscle","arm","hand","summer","strong"]},"mechanical-arm":{"a":"Mechanical Arm","b":"1F9BE","j":["accessibility","prosthetic"]},"mechanical-leg":{"a":"Mechanical Leg","b":"1F9BF","j":["accessibility","prosthetic"]},"leg":{"a":"Leg","b":"1F9B5","j":["kick","limb"]},"foot":{"a":"Foot","b":"1F9B6","j":["kick","stomp"]},"ear":{"a":"Ear","b":"1F442","j":["body","face","hear","sound","listen"]},"ear-with-hearing-aid":{"a":"Ear with Hearing Aid","b":"1F9BB","j":["accessibility","hard of hearing"]},"nose":{"a":"Nose","b":"1F443","j":["body","smell","sniff"]},"brain":{"a":"Brain","b":"1F9E0","j":["intelligent","smart"]},"anatomical-heart":{"a":"Anatomical Heart","b":"1FAC0","j":["anatomical","cardiology","heart","organ","pulse","health","heartbeat"]},"lungs":{"a":"Lungs","b":"1FAC1","j":["breath","exhalation","inhalation","organ","respiration","breathe"]},"tooth":{"a":"Tooth","b":"1F9B7","j":["dentist","teeth"]},"bone":{"a":"Bone","b":"1F9B4","j":["skeleton"]},"eyes":{"a":"Eyes","b":"1F440","j":["eye","face","look","watch","stalk","peek","see"]},"eye":{"a":"Eye","b":"1F441","j":["body","face","look","see","watch","stare"]},"tongue":{"a":"Tongue","b":"1F445","j":["body","mouth","playful"]},"mouth":{"a":"Mouth","b":"1F444","j":["lips","kiss"]},"baby":{"a":"Baby","b":"1F476","j":["young","child","boy","girl","toddler"]},"child":{"a":"Child","b":"1F9D2","j":["gender-neutral","unspecified gender","young"]},"boy":{"a":"Boy","b":"1F466","j":["young","man","male","guy","teenager"]},"girl":{"a":"Girl","b":"1F467","j":["Virgo","young","zodiac","female","woman","teenager"]},"person":{"a":"Person","b":"1F9D1","j":["adult","gender-neutral","unspecified gender"]},"person-blond-hair":{"a":"Person: Blond Hair","b":"1F471","j":["blond","blond-haired person","hair","person: blond hair","hairstyle"]},"man":{"a":"Man","b":"1F468","j":["adult","mustache","father","dad","guy","classy","sir","moustache"]},"person-beard":{"a":"Person: Beard","b":"1F9D4","j":["beard","person","person: beard","bewhiskered","man_beard"]},"man-beard":{"a":"⊛ Man: Beard","b":"1F9D4-200D-2642-FE0F","j":["beard","man","man: beard"]},"woman-beard":{"a":"⊛ Woman: Beard","b":"1F9D4-200D-2640-FE0F","j":["beard","woman","woman: beard"]},"man-red-hair":{"a":"Man: Red Hair","b":"1F468-200D-1F9B0","j":["adult","man","red hair","hairstyle"]},"man-curly-hair":{"a":"Man: Curly Hair","b":"1F468-200D-1F9B1","j":["adult","curly hair","man","hairstyle"]},"man-white-hair":{"a":"Man: White Hair","b":"1F468-200D-1F9B3","j":["adult","man","white hair","old","elder"]},"man-bald":{"a":"Man: Bald","b":"1F468-200D-1F9B2","j":["adult","bald","man","hairless"]},"woman":{"a":"Woman","b":"1F469","j":["adult","female","girls","lady"]},"woman-red-hair":{"a":"Woman: Red Hair","b":"1F469-200D-1F9B0","j":["adult","red hair","woman","hairstyle"]},"person-red-hair":{"a":"Person: Red Hair","b":"1F9D1-200D-1F9B0","j":["adult","gender-neutral","person","red hair","unspecified gender","hairstyle"]},"woman-curly-hair":{"a":"Woman: Curly Hair","b":"1F469-200D-1F9B1","j":["adult","curly hair","woman","hairstyle"]},"person-curly-hair":{"a":"Person: Curly Hair","b":"1F9D1-200D-1F9B1","j":["adult","curly hair","gender-neutral","person","unspecified gender","hairstyle"]},"woman-white-hair":{"a":"Woman: White Hair","b":"1F469-200D-1F9B3","j":["adult","white hair","woman","old","elder"]},"person-white-hair":{"a":"Person: White Hair","b":"1F9D1-200D-1F9B3","j":["adult","gender-neutral","person","unspecified gender","white hair","elder","old"]},"woman-bald":{"a":"Woman: Bald","b":"1F469-200D-1F9B2","j":["adult","bald","woman","hairless"]},"person-bald":{"a":"Person: Bald","b":"1F9D1-200D-1F9B2","j":["adult","bald","gender-neutral","person","unspecified gender","hairless"]},"woman-blond-hair":{"a":"Woman: Blond Hair","b":"1F471-200D-2640-FE0F","j":["blond-haired woman","blonde","hair","woman","woman: blond hair","female","girl","person"]},"man-blond-hair":{"a":"Man: Blond Hair","b":"1F471-200D-2642-FE0F","j":["blond","blond-haired man","hair","man","man: blond hair","male","boy","blonde","guy","person"]},"older-person":{"a":"Older Person","b":"1F9D3","j":["adult","gender-neutral","old","unspecified gender","human","elder","senior"]},"old-man":{"a":"Old Man","b":"1F474","j":["adult","man","old","human","male","men","elder","senior"]},"old-woman":{"a":"Old Woman","b":"1F475","j":["adult","old","woman","human","female","women","lady","elder","senior"]},"person-frowning":{"a":"Person Frowning","b":"1F64D","j":["frown","gesture","worried"]},"man-frowning":{"a":"Man Frowning","b":"1F64D-200D-2642-FE0F","j":["frowning","gesture","man","male","boy","sad","depressed","discouraged","unhappy"]},"woman-frowning":{"a":"Woman Frowning","b":"1F64D-200D-2640-FE0F","j":["frowning","gesture","woman","female","girl","sad","depressed","discouraged","unhappy"]},"person-pouting":{"a":"Person Pouting","b":"1F64E","j":["gesture","pouting","upset"]},"man-pouting":{"a":"Man Pouting","b":"1F64E-200D-2642-FE0F","j":["gesture","man","pouting","male","boy"]},"woman-pouting":{"a":"Woman Pouting","b":"1F64E-200D-2640-FE0F","j":["gesture","pouting","woman","female","girl"]},"person-gesturing-no":{"a":"Person Gesturing No","b":"1F645","j":["forbidden","gesture","hand","person gesturing NO","prohibited","decline"]},"man-gesturing-no":{"a":"Man Gesturing No","b":"1F645-200D-2642-FE0F","j":["forbidden","gesture","hand","man","man gesturing NO","prohibited","male","boy","nope"]},"woman-gesturing-no":{"a":"Woman Gesturing No","b":"1F645-200D-2640-FE0F","j":["forbidden","gesture","hand","prohibited","woman","woman gesturing NO","female","girl","nope"]},"person-gesturing-ok":{"a":"Person Gesturing Ok","b":"1F646","j":["gesture","hand","OK","person gesturing OK","agree"]},"man-gesturing-ok":{"a":"Man Gesturing Ok","b":"1F646-200D-2642-FE0F","j":["gesture","hand","man","man gesturing OK","OK","men","boy","male","blue","human"]},"woman-gesturing-ok":{"a":"Woman Gesturing Ok","b":"1F646-200D-2640-FE0F","j":["gesture","hand","OK","woman","woman gesturing OK","women","girl","female","pink","human"]},"person-tipping-hand":{"a":"Person Tipping Hand","b":"1F481","j":["hand","help","information","sassy","tipping"]},"man-tipping-hand":{"a":"Man Tipping Hand","b":"1F481-200D-2642-FE0F","j":["man","sassy","tipping hand","male","boy","human","information"]},"woman-tipping-hand":{"a":"Woman Tipping Hand","b":"1F481-200D-2640-FE0F","j":["sassy","tipping hand","woman","female","girl","human","information"]},"person-raising-hand":{"a":"Person Raising Hand","b":"1F64B","j":["gesture","hand","happy","raised","question"]},"man-raising-hand":{"a":"Man Raising Hand","b":"1F64B-200D-2642-FE0F","j":["gesture","man","raising hand","male","boy"]},"woman-raising-hand":{"a":"Woman Raising Hand","b":"1F64B-200D-2640-FE0F","j":["gesture","raising hand","woman","female","girl"]},"deaf-person":{"a":"Deaf Person","b":"1F9CF","j":["accessibility","deaf","ear","hear"]},"deaf-man":{"a":"Deaf Man","b":"1F9CF-200D-2642-FE0F","j":["deaf","man","accessibility"]},"deaf-woman":{"a":"Deaf Woman","b":"1F9CF-200D-2640-FE0F","j":["deaf","woman","accessibility"]},"person-bowing":{"a":"Person Bowing","b":"1F647","j":["apology","bow","gesture","sorry","respectiful"]},"man-bowing":{"a":"Man Bowing","b":"1F647-200D-2642-FE0F","j":["apology","bowing","favor","gesture","man","sorry","male","boy"]},"woman-bowing":{"a":"Woman Bowing","b":"1F647-200D-2640-FE0F","j":["apology","bowing","favor","gesture","sorry","woman","female","girl"]},"person-facepalming":{"a":"Person Facepalming","b":"1F926","j":["disbelief","exasperation","face","palm","disappointed"]},"man-facepalming":{"a":"Man Facepalming","b":"1F926-200D-2642-FE0F","j":["disbelief","exasperation","facepalm","man","male","boy"]},"woman-facepalming":{"a":"Woman Facepalming","b":"1F926-200D-2640-FE0F","j":["disbelief","exasperation","facepalm","woman","female","girl"]},"person-shrugging":{"a":"Person Shrugging","b":"1F937","j":["doubt","ignorance","indifference","shrug","regardless"]},"man-shrugging":{"a":"Man Shrugging","b":"1F937-200D-2642-FE0F","j":["doubt","ignorance","indifference","man","shrug","male","boy","confused","indifferent"]},"woman-shrugging":{"a":"Woman Shrugging","b":"1F937-200D-2640-FE0F","j":["doubt","ignorance","indifference","shrug","woman","female","girl","confused","indifferent"]},"health-worker":{"a":"Health Worker","b":"1F9D1-200D-2695-FE0F","j":["doctor","healthcare","nurse","therapist","hospital"]},"man-health-worker":{"a":"Man Health Worker","b":"1F468-200D-2695-FE0F","j":["doctor","healthcare","man","nurse","therapist","human"]},"woman-health-worker":{"a":"Woman Health Worker","b":"1F469-200D-2695-FE0F","j":["doctor","healthcare","nurse","therapist","woman","human"]},"student":{"a":"Student","b":"1F9D1-200D-1F393","j":["graduate","learn"]},"man-student":{"a":"Man Student","b":"1F468-200D-1F393","j":["graduate","man","student","human"]},"woman-student":{"a":"Woman Student","b":"1F469-200D-1F393","j":["graduate","student","woman","human"]},"teacher":{"a":"Teacher","b":"1F9D1-200D-1F3EB","j":["instructor","professor"]},"man-teacher":{"a":"Man Teacher","b":"1F468-200D-1F3EB","j":["instructor","man","professor","teacher","human"]},"woman-teacher":{"a":"Woman Teacher","b":"1F469-200D-1F3EB","j":["instructor","professor","teacher","woman","human"]},"judge":{"a":"Judge","b":"1F9D1-200D-2696-FE0F","j":["justice","scales","law"]},"man-judge":{"a":"Man Judge","b":"1F468-200D-2696-FE0F","j":["judge","justice","man","scales","court","human"]},"woman-judge":{"a":"Woman Judge","b":"1F469-200D-2696-FE0F","j":["judge","justice","scales","woman","court","human"]},"farmer":{"a":"Farmer","b":"1F9D1-200D-1F33E","j":["gardener","rancher","crops"]},"man-farmer":{"a":"Man Farmer","b":"1F468-200D-1F33E","j":["farmer","gardener","man","rancher","human"]},"woman-farmer":{"a":"Woman Farmer","b":"1F469-200D-1F33E","j":["farmer","gardener","rancher","woman","human"]},"cook":{"a":"Cook","b":"1F9D1-200D-1F373","j":["chef","food","kitchen","culinary"]},"man-cook":{"a":"Man Cook","b":"1F468-200D-1F373","j":["chef","cook","man","human"]},"woman-cook":{"a":"Woman Cook","b":"1F469-200D-1F373","j":["chef","cook","woman","human"]},"mechanic":{"a":"Mechanic","b":"1F9D1-200D-1F527","j":["electrician","plumber","tradesperson","worker","technician"]},"man-mechanic":{"a":"Man Mechanic","b":"1F468-200D-1F527","j":["electrician","man","mechanic","plumber","tradesperson","human","wrench"]},"woman-mechanic":{"a":"Woman Mechanic","b":"1F469-200D-1F527","j":["electrician","mechanic","plumber","tradesperson","woman","human","wrench"]},"factory-worker":{"a":"Factory Worker","b":"1F9D1-200D-1F3ED","j":["assembly","factory","industrial","worker","labor"]},"man-factory-worker":{"a":"Man Factory Worker","b":"1F468-200D-1F3ED","j":["assembly","factory","industrial","man","worker","human"]},"woman-factory-worker":{"a":"Woman Factory Worker","b":"1F469-200D-1F3ED","j":["assembly","factory","industrial","woman","worker","human"]},"office-worker":{"a":"Office Worker","b":"1F9D1-200D-1F4BC","j":["architect","business","manager","white-collar"]},"man-office-worker":{"a":"Man Office Worker","b":"1F468-200D-1F4BC","j":["architect","business","man","manager","white-collar","human"]},"woman-office-worker":{"a":"Woman Office Worker","b":"1F469-200D-1F4BC","j":["architect","business","manager","white-collar","woman","human"]},"scientist":{"a":"Scientist","b":"1F9D1-200D-1F52C","j":["biologist","chemist","engineer","physicist","chemistry"]},"man-scientist":{"a":"Man Scientist","b":"1F468-200D-1F52C","j":["biologist","chemist","engineer","man","physicist","scientist","human"]},"woman-scientist":{"a":"Woman Scientist","b":"1F469-200D-1F52C","j":["biologist","chemist","engineer","physicist","scientist","woman","human"]},"technologist":{"a":"Technologist","b":"1F9D1-200D-1F4BB","j":["coder","developer","inventor","software","computer"]},"man-technologist":{"a":"Man Technologist","b":"1F468-200D-1F4BB","j":["coder","developer","inventor","man","software","technologist","engineer","programmer","human","laptop","computer"]},"woman-technologist":{"a":"Woman Technologist","b":"1F469-200D-1F4BB","j":["coder","developer","inventor","software","technologist","woman","engineer","programmer","human","laptop","computer"]},"singer":{"a":"Singer","b":"1F9D1-200D-1F3A4","j":["actor","entertainer","rock","star","song","artist","performer"]},"man-singer":{"a":"Man Singer","b":"1F468-200D-1F3A4","j":["actor","entertainer","man","rock","singer","star","rockstar","human"]},"woman-singer":{"a":"Woman Singer","b":"1F469-200D-1F3A4","j":["actor","entertainer","rock","singer","star","woman","rockstar","human"]},"artist":{"a":"Artist","b":"1F9D1-200D-1F3A8","j":["palette","painting","draw","creativity"]},"man-artist":{"a":"Man Artist","b":"1F468-200D-1F3A8","j":["artist","man","palette","painter","human"]},"woman-artist":{"a":"Woman Artist","b":"1F469-200D-1F3A8","j":["artist","palette","woman","painter","human"]},"pilot":{"a":"Pilot","b":"1F9D1-200D-2708-FE0F","j":["plane","fly","airplane"]},"man-pilot":{"a":"Man Pilot","b":"1F468-200D-2708-FE0F","j":["man","pilot","plane","aviator","human"]},"woman-pilot":{"a":"Woman Pilot","b":"1F469-200D-2708-FE0F","j":["pilot","plane","woman","aviator","human"]},"astronaut":{"a":"Astronaut","b":"1F9D1-200D-1F680","j":["rocket","outerspace"]},"man-astronaut":{"a":"Man Astronaut","b":"1F468-200D-1F680","j":["astronaut","man","rocket","space","human"]},"woman-astronaut":{"a":"Woman Astronaut","b":"1F469-200D-1F680","j":["astronaut","rocket","woman","space","human"]},"firefighter":{"a":"Firefighter","b":"1F9D1-200D-1F692","j":["firetruck","fire"]},"man-firefighter":{"a":"Man Firefighter","b":"1F468-200D-1F692","j":["firefighter","firetruck","man","fireman","human"]},"woman-firefighter":{"a":"Woman Firefighter","b":"1F469-200D-1F692","j":["firefighter","firetruck","woman","fireman","human"]},"police-officer":{"a":"Police Officer","b":"1F46E","j":["cop","officer","police"]},"man-police-officer":{"a":"Man Police Officer","b":"1F46E-200D-2642-FE0F","j":["cop","man","officer","police","law","legal","enforcement","arrest","911"]},"woman-police-officer":{"a":"Woman Police Officer","b":"1F46E-200D-2640-FE0F","j":["cop","officer","police","woman","law","legal","enforcement","arrest","911","female"]},"detective":{"a":"Detective","b":"1F575","j":["sleuth","spy","human"]},"man-detective":{"a":"Man Detective","b":"1F575-FE0F-200D-2642-FE0F","j":["detective","man","sleuth","spy","crime"]},"woman-detective":{"a":"Woman Detective","b":"1F575-FE0F-200D-2640-FE0F","j":["detective","sleuth","spy","woman","human","female"]},"guard":{"a":"Guard","b":"1F482","j":["protect"]},"man-guard":{"a":"Man Guard","b":"1F482-200D-2642-FE0F","j":["guard","man","uk","gb","british","male","guy","royal"]},"woman-guard":{"a":"Woman Guard","b":"1F482-200D-2640-FE0F","j":["guard","woman","uk","gb","british","female","royal"]},"ninja":{"a":"Ninja","b":"1F977","j":["fighter","hidden","stealth","ninjutsu","skills","japanese"]},"construction-worker":{"a":"Construction Worker","b":"1F477","j":["construction","hat","worker","labor","build"]},"man-construction-worker":{"a":"Man Construction Worker","b":"1F477-200D-2642-FE0F","j":["construction","man","worker","male","human","wip","guy","build","labor"]},"woman-construction-worker":{"a":"Woman Construction Worker","b":"1F477-200D-2640-FE0F","j":["construction","woman","worker","female","human","wip","build","labor"]},"prince":{"a":"Prince","b":"1F934","j":["boy","man","male","crown","royal","king"]},"princess":{"a":"Princess","b":"1F478","j":["fairy tale","fantasy","girl","woman","female","blond","crown","royal","queen"]},"person-wearing-turban":{"a":"Person Wearing Turban","b":"1F473","j":["turban","headdress"]},"man-wearing-turban":{"a":"Man Wearing Turban","b":"1F473-200D-2642-FE0F","j":["man","turban","male","indian","hinduism","arabs"]},"woman-wearing-turban":{"a":"Woman Wearing Turban","b":"1F473-200D-2640-FE0F","j":["turban","woman","female","indian","hinduism","arabs"]},"person-with-skullcap":{"a":"Person with Skullcap","b":"1F472","j":["cap","gua pi mao","hat","person","skullcap","man_with_skullcap","male","boy","chinese"]},"woman-with-headscarf":{"a":"Woman with Headscarf","b":"1F9D5","j":["headscarf","hijab","mantilla","tichel","bandana","head kerchief","female"]},"person-in-tuxedo":{"a":"Person in Tuxedo","b":"1F935","j":["groom","person","tuxedo","man_in_tuxedo","couple","marriage","wedding"]},"man-in-tuxedo":{"a":"Man in Tuxedo","b":"1F935-200D-2642-FE0F","j":["man","tuxedo","formal","fashion"]},"woman-in-tuxedo":{"a":"Woman in Tuxedo","b":"1F935-200D-2640-FE0F","j":["tuxedo","woman","formal","fashion"]},"person-with-veil":{"a":"Person with Veil","b":"1F470","j":["bride","person","veil","wedding","bride_with_veil","couple","marriage","woman"]},"man-with-veil":{"a":"Man with Veil","b":"1F470-200D-2642-FE0F","j":["man","veil","wedding","marriage"]},"woman-with-veil":{"a":"Woman with Veil","b":"1F470-200D-2640-FE0F","j":["veil","woman","wedding","marriage"]},"pregnant-woman":{"a":"Pregnant Woman","b":"1F930","j":["pregnant","woman","baby"]},"breastfeeding":{"a":"Breast-Feeding","b":"1F931","j":["baby","breast","breast-feeding","nursing","breast_feeding"]},"woman-feeding-baby":{"a":"Woman Feeding Baby","b":"1F469-200D-1F37C","j":["baby","feeding","nursing","woman","birth","food"]},"man-feeding-baby":{"a":"Man Feeding Baby","b":"1F468-200D-1F37C","j":["baby","feeding","man","nursing","birth","food"]},"person-feeding-baby":{"a":"Person Feeding Baby","b":"1F9D1-200D-1F37C","j":["baby","feeding","nursing","person","birth","food"]},"baby-angel":{"a":"Baby Angel","b":"1F47C","j":["angel","baby","face","fairy tale","fantasy","heaven","wings","halo"]},"santa-claus":{"a":"Santa Claus","b":"1F385","j":["celebration","Christmas","claus","father","santa","festival","man","male","xmas","father christmas"]},"mrs-claus":{"a":"Mrs. Claus","b":"1F936","j":["celebration","Christmas","claus","mother","Mrs.","woman","female","xmas","mother christmas"]},"mx-claus":{"a":"Mx Claus","b":"1F9D1-200D-1F384","j":["Claus, christmas","christmas"]},"superhero":{"a":"Superhero","b":"1F9B8","j":["good","hero","heroine","superpower","marvel"]},"man-superhero":{"a":"Man Superhero","b":"1F9B8-200D-2642-FE0F","j":["good","hero","man","superpower","male","superpowers"]},"woman-superhero":{"a":"Woman Superhero","b":"1F9B8-200D-2640-FE0F","j":["good","hero","heroine","superpower","woman","female","superpowers"]},"supervillain":{"a":"Supervillain","b":"1F9B9","j":["criminal","evil","superpower","villain","marvel"]},"man-supervillain":{"a":"Man Supervillain","b":"1F9B9-200D-2642-FE0F","j":["criminal","evil","man","superpower","villain","male","bad","hero","superpowers"]},"woman-supervillain":{"a":"Woman Supervillain","b":"1F9B9-200D-2640-FE0F","j":["criminal","evil","superpower","villain","woman","female","bad","heroine","superpowers"]},"mage":{"a":"Mage","b":"1F9D9","j":["sorcerer","sorceress","witch","wizard","magic"]},"man-mage":{"a":"Man Mage","b":"1F9D9-200D-2642-FE0F","j":["sorcerer","wizard","man","male","mage"]},"woman-mage":{"a":"Woman Mage","b":"1F9D9-200D-2640-FE0F","j":["sorceress","witch","woman","female","mage"]},"fairy":{"a":"Fairy","b":"1F9DA","j":["Oberon","Puck","Titania","wings","magical"]},"man-fairy":{"a":"Man Fairy","b":"1F9DA-200D-2642-FE0F","j":["Oberon","Puck","man","male"]},"woman-fairy":{"a":"Woman Fairy","b":"1F9DA-200D-2640-FE0F","j":["Titania","woman","female"]},"vampire":{"a":"Vampire","b":"1F9DB","j":["Dracula","undead","blood","twilight"]},"man-vampire":{"a":"Man Vampire","b":"1F9DB-200D-2642-FE0F","j":["Dracula","undead","man","male","dracula"]},"woman-vampire":{"a":"Woman Vampire","b":"1F9DB-200D-2640-FE0F","j":["undead","woman","female"]},"merperson":{"a":"Merperson","b":"1F9DC","j":["mermaid","merman","merwoman","sea"]},"merman":{"a":"Merman","b":"1F9DC-200D-2642-FE0F","j":["Triton","man","male","triton"]},"mermaid":{"a":"Mermaid","b":"1F9DC-200D-2640-FE0F","j":["merwoman","woman","female","ariel"]},"elf":{"a":"Elf","b":"1F9DD","j":["magical","LOTR style"]},"man-elf":{"a":"Man Elf","b":"1F9DD-200D-2642-FE0F","j":["magical","man","male"]},"woman-elf":{"a":"Woman Elf","b":"1F9DD-200D-2640-FE0F","j":["magical","woman","female"]},"genie":{"a":"Genie","b":"1F9DE","j":["djinn","(non-human color)","magical","wishes"]},"man-genie":{"a":"Man Genie","b":"1F9DE-200D-2642-FE0F","j":["djinn","man","male"]},"woman-genie":{"a":"Woman Genie","b":"1F9DE-200D-2640-FE0F","j":["djinn","woman","female"]},"zombie":{"a":"Zombie","b":"1F9DF","j":["undead","walking dead","(non-human color)","dead"]},"man-zombie":{"a":"Man Zombie","b":"1F9DF-200D-2642-FE0F","j":["undead","walking dead","man","male","dracula"]},"woman-zombie":{"a":"Woman Zombie","b":"1F9DF-200D-2640-FE0F","j":["undead","walking dead","woman","female"]},"person-getting-massage":{"a":"Person Getting Massage","b":"1F486","j":["face","massage","salon","relax"]},"man-getting-massage":{"a":"Man Getting Massage","b":"1F486-200D-2642-FE0F","j":["face","man","massage","male","boy","head"]},"woman-getting-massage":{"a":"Woman Getting Massage","b":"1F486-200D-2640-FE0F","j":["face","massage","woman","female","girl","head"]},"person-getting-haircut":{"a":"Person Getting Haircut","b":"1F487","j":["barber","beauty","haircut","parlor","hairstyle"]},"man-getting-haircut":{"a":"Man Getting Haircut","b":"1F487-200D-2642-FE0F","j":["haircut","man","male","boy"]},"woman-getting-haircut":{"a":"Woman Getting Haircut","b":"1F487-200D-2640-FE0F","j":["haircut","woman","female","girl"]},"person-walking":{"a":"Person Walking","b":"1F6B6","j":["hike","walk","walking","move"]},"man-walking":{"a":"Man Walking","b":"1F6B6-200D-2642-FE0F","j":["hike","man","walk","human","feet","steps"]},"woman-walking":{"a":"Woman Walking","b":"1F6B6-200D-2640-FE0F","j":["hike","walk","woman","human","feet","steps","female"]},"person-standing":{"a":"Person Standing","b":"1F9CD","j":["stand","standing","still"]},"man-standing":{"a":"Man Standing","b":"1F9CD-200D-2642-FE0F","j":["man","standing","still"]},"woman-standing":{"a":"Woman Standing","b":"1F9CD-200D-2640-FE0F","j":["standing","woman","still"]},"person-kneeling":{"a":"Person Kneeling","b":"1F9CE","j":["kneel","kneeling","pray","respectful"]},"man-kneeling":{"a":"Man Kneeling","b":"1F9CE-200D-2642-FE0F","j":["kneeling","man","pray","respectful"]},"woman-kneeling":{"a":"Woman Kneeling","b":"1F9CE-200D-2640-FE0F","j":["kneeling","woman","respectful","pray"]},"person-with-white-cane":{"a":"Person with White Cane","b":"1F9D1-200D-1F9AF","j":["accessibility","blind","person_with_probing_cane"]},"man-with-white-cane":{"a":"Man with White Cane","b":"1F468-200D-1F9AF","j":["accessibility","blind","man","man_with_probing_cane"]},"woman-with-white-cane":{"a":"Woman with White Cane","b":"1F469-200D-1F9AF","j":["accessibility","blind","woman","woman_with_probing_cane"]},"person-in-motorized-wheelchair":{"a":"Person in Motorized Wheelchair","b":"1F9D1-200D-1F9BC","j":["accessibility","wheelchair","disability"]},"man-in-motorized-wheelchair":{"a":"Man in Motorized Wheelchair","b":"1F468-200D-1F9BC","j":["accessibility","man","wheelchair","disability"]},"woman-in-motorized-wheelchair":{"a":"Woman in Motorized Wheelchair","b":"1F469-200D-1F9BC","j":["accessibility","wheelchair","woman","disability"]},"person-in-manual-wheelchair":{"a":"Person in Manual Wheelchair","b":"1F9D1-200D-1F9BD","j":["accessibility","wheelchair","disability"]},"man-in-manual-wheelchair":{"a":"Man in Manual Wheelchair","b":"1F468-200D-1F9BD","j":["accessibility","man","wheelchair","disability"]},"woman-in-manual-wheelchair":{"a":"Woman in Manual Wheelchair","b":"1F469-200D-1F9BD","j":["accessibility","wheelchair","woman","disability"]},"person-running":{"a":"Person Running","b":"1F3C3","j":["marathon","running","move"]},"man-running":{"a":"Man Running","b":"1F3C3-200D-2642-FE0F","j":["man","marathon","racing","running","walking","exercise","race"]},"woman-running":{"a":"Woman Running","b":"1F3C3-200D-2640-FE0F","j":["marathon","racing","running","woman","walking","exercise","race","female"]},"woman-dancing":{"a":"Woman Dancing","b":"1F483","j":["dance","dancing","woman","female","girl","fun"]},"man-dancing":{"a":"Man Dancing","b":"1F57A","j":["dance","dancing","man","male","boy","fun","dancer"]},"person-in-suit-levitating":{"a":"Person in Suit Levitating","b":"1F574","j":["business","person","suit","man_in_suit_levitating","levitate","hover","jump"]},"people-with-bunny-ears":{"a":"People with Bunny Ears","b":"1F46F","j":["bunny ear","dancer","partying","perform","costume"]},"men-with-bunny-ears":{"a":"Men with Bunny Ears","b":"1F46F-200D-2642-FE0F","j":["bunny ear","dancer","men","partying","male","bunny","boys"]},"women-with-bunny-ears":{"a":"Women with Bunny Ears","b":"1F46F-200D-2640-FE0F","j":["bunny ear","dancer","partying","women","female","bunny","girls"]},"person-in-steamy-room":{"a":"Person in Steamy Room","b":"1F9D6","j":["sauna","steam room","hamam","steambath","relax","spa"]},"man-in-steamy-room":{"a":"Man in Steamy Room","b":"1F9D6-200D-2642-FE0F","j":["sauna","steam room","male","man","spa","steamroom"]},"woman-in-steamy-room":{"a":"Woman in Steamy Room","b":"1F9D6-200D-2640-FE0F","j":["sauna","steam room","female","woman","spa","steamroom"]},"person-climbing":{"a":"Person Climbing","b":"1F9D7","j":["climber","sport"]},"man-climbing":{"a":"Man Climbing","b":"1F9D7-200D-2642-FE0F","j":["climber","sports","hobby","man","male","rock"]},"woman-climbing":{"a":"Woman Climbing","b":"1F9D7-200D-2640-FE0F","j":["climber","sports","hobby","woman","female","rock"]},"person-fencing":{"a":"Person Fencing","b":"1F93A","j":["fencer","fencing","sword","sports"]},"horse-racing":{"a":"Horse Racing","b":"1F3C7","j":["horse","jockey","racehorse","racing","animal","betting","competition","gambling","luck"]},"skier":{"a":"Skier","b":"26F7","j":["ski","snow","sports","winter"]},"snowboarder":{"a":"Snowboarder","b":"1F3C2","j":["ski","snow","snowboard","sports","winter"]},"person-golfing":{"a":"Person Golfing","b":"1F3CC","j":["ball","golf","sports","business"]},"man-golfing":{"a":"Man Golfing","b":"1F3CC-FE0F-200D-2642-FE0F","j":["golf","man","sport"]},"woman-golfing":{"a":"Woman Golfing","b":"1F3CC-FE0F-200D-2640-FE0F","j":["golf","woman","sports","business","female"]},"person-surfing":{"a":"Person Surfing","b":"1F3C4","j":["surfing","sport","sea"]},"man-surfing":{"a":"Man Surfing","b":"1F3C4-200D-2642-FE0F","j":["man","surfing","sports","ocean","sea","summer","beach"]},"woman-surfing":{"a":"Woman Surfing","b":"1F3C4-200D-2640-FE0F","j":["surfing","woman","sports","ocean","sea","summer","beach","female"]},"person-rowing-boat":{"a":"Person Rowing Boat","b":"1F6A3","j":["boat","rowboat","sport","move"]},"man-rowing-boat":{"a":"Man Rowing Boat","b":"1F6A3-200D-2642-FE0F","j":["boat","man","rowboat","sports","hobby","water","ship"]},"woman-rowing-boat":{"a":"Woman Rowing Boat","b":"1F6A3-200D-2640-FE0F","j":["boat","rowboat","woman","sports","hobby","water","ship","female"]},"person-swimming":{"a":"Person Swimming","b":"1F3CA","j":["swim","sport","pool"]},"man-swimming":{"a":"Man Swimming","b":"1F3CA-200D-2642-FE0F","j":["man","swim","sports","exercise","human","athlete","water","summer"]},"woman-swimming":{"a":"Woman Swimming","b":"1F3CA-200D-2640-FE0F","j":["swim","woman","sports","exercise","human","athlete","water","summer","female"]},"person-bouncing-ball":{"a":"Person Bouncing Ball","b":"26F9","j":["ball","sports","human"]},"man-bouncing-ball":{"a":"Man Bouncing Ball","b":"26F9-FE0F-200D-2642-FE0F","j":["ball","man","sport"]},"woman-bouncing-ball":{"a":"Woman Bouncing Ball","b":"26F9-FE0F-200D-2640-FE0F","j":["ball","woman","sports","human","female"]},"person-lifting-weights":{"a":"Person Lifting Weights","b":"1F3CB","j":["lifter","weight","sports","training","exercise"]},"man-lifting-weights":{"a":"Man Lifting Weights","b":"1F3CB-FE0F-200D-2642-FE0F","j":["man","weight lifter","sport"]},"woman-lifting-weights":{"a":"Woman Lifting Weights","b":"1F3CB-FE0F-200D-2640-FE0F","j":["weight lifter","woman","sports","training","exercise","female"]},"person-biking":{"a":"Person Biking","b":"1F6B4","j":["bicycle","biking","cyclist","sport","move"]},"man-biking":{"a":"Man Biking","b":"1F6B4-200D-2642-FE0F","j":["bicycle","biking","cyclist","man","sports","bike","exercise","hipster"]},"woman-biking":{"a":"Woman Biking","b":"1F6B4-200D-2640-FE0F","j":["bicycle","biking","cyclist","woman","sports","bike","exercise","hipster","female"]},"person-mountain-biking":{"a":"Person Mountain Biking","b":"1F6B5","j":["bicycle","bicyclist","bike","cyclist","mountain","sport","move"]},"man-mountain-biking":{"a":"Man Mountain Biking","b":"1F6B5-200D-2642-FE0F","j":["bicycle","bike","cyclist","man","mountain","transportation","sports","human","race"]},"woman-mountain-biking":{"a":"Woman Mountain Biking","b":"1F6B5-200D-2640-FE0F","j":["bicycle","bike","biking","cyclist","mountain","woman","transportation","sports","human","race","female"]},"person-cartwheeling":{"a":"Person Cartwheeling","b":"1F938","j":["cartwheel","gymnastics","sport","gymnastic"]},"man-cartwheeling":{"a":"Man Cartwheeling","b":"1F938-200D-2642-FE0F","j":["cartwheel","gymnastics","man"]},"woman-cartwheeling":{"a":"Woman Cartwheeling","b":"1F938-200D-2640-FE0F","j":["cartwheel","gymnastics","woman"]},"people-wrestling":{"a":"People Wrestling","b":"1F93C","j":["wrestle","wrestler","sport"]},"men-wrestling":{"a":"Men Wrestling","b":"1F93C-200D-2642-FE0F","j":["men","wrestle","sports","wrestlers"]},"women-wrestling":{"a":"Women Wrestling","b":"1F93C-200D-2640-FE0F","j":["women","wrestle","sports","wrestlers"]},"person-playing-water-polo":{"a":"Person Playing Water Polo","b":"1F93D","j":["polo","water","sport"]},"man-playing-water-polo":{"a":"Man Playing Water Polo","b":"1F93D-200D-2642-FE0F","j":["man","water polo","sports","pool"]},"woman-playing-water-polo":{"a":"Woman Playing Water Polo","b":"1F93D-200D-2640-FE0F","j":["water polo","woman","sports","pool"]},"person-playing-handball":{"a":"Person Playing Handball","b":"1F93E","j":["ball","handball","sport"]},"man-playing-handball":{"a":"Man Playing Handball","b":"1F93E-200D-2642-FE0F","j":["handball","man","sports"]},"woman-playing-handball":{"a":"Woman Playing Handball","b":"1F93E-200D-2640-FE0F","j":["handball","woman","sports"]},"person-juggling":{"a":"Person Juggling","b":"1F939","j":["balance","juggle","multitask","skill","performance"]},"man-juggling":{"a":"Man Juggling","b":"1F939-200D-2642-FE0F","j":["juggling","man","multitask","juggle","balance","skill"]},"woman-juggling":{"a":"Woman Juggling","b":"1F939-200D-2640-FE0F","j":["juggling","multitask","woman","juggle","balance","skill"]},"person-in-lotus-position":{"a":"Person in Lotus Position","b":"1F9D8","j":["meditation","yoga","serenity","meditate"]},"man-in-lotus-position":{"a":"Man in Lotus Position","b":"1F9D8-200D-2642-FE0F","j":["meditation","yoga","man","male","serenity","zen","mindfulness"]},"woman-in-lotus-position":{"a":"Woman in Lotus Position","b":"1F9D8-200D-2640-FE0F","j":["meditation","yoga","woman","female","serenity","zen","mindfulness"]},"person-taking-bath":{"a":"Person Taking Bath","b":"1F6C0","j":["bath","bathtub","clean","shower","bathroom"]},"person-in-bed":{"a":"Person in Bed","b":"1F6CC","j":["hotel","sleep","bed","rest"]},"people-holding-hands":{"a":"People Holding Hands","b":"1F9D1-200D-1F91D-200D-1F9D1","j":["couple","hand","hold","holding hands","person","friendship"]},"women-holding-hands":{"a":"Women Holding Hands","b":"1F46D","j":["couple","hand","holding hands","women","pair","friendship","love","like","female","people","human"]},"woman-and-man-holding-hands":{"a":"Woman and Man Holding Hands","b":"1F46B","j":["couple","hand","hold","holding hands","man","woman","pair","people","human","love","date","dating","like","affection","valentines","marriage"]},"men-holding-hands":{"a":"Men Holding Hands","b":"1F46C","j":["couple","Gemini","holding hands","man","men","twins","zodiac","pair","love","like","bromance","friendship","people","human"]},"kiss":{"a":"Kiss","b":"1F48F","j":["couple","pair","valentines","love","like","dating","marriage"]},"kiss-woman-man":{"a":"Kiss: Woman, Man","b":"1F469-200D-2764-FE0F-200D-1F48B-200D-1F468","j":["couple","kiss","man","woman","love"]},"kiss-man-man":{"a":"Kiss: Man, Man","b":"1F468-200D-2764-FE0F-200D-1F48B-200D-1F468","j":["couple","kiss","man","pair","valentines","love","like","dating","marriage"]},"kiss-woman-woman":{"a":"Kiss: Woman, Woman","b":"1F469-200D-2764-FE0F-200D-1F48B-200D-1F469","j":["couple","kiss","woman","pair","valentines","love","like","dating","marriage"]},"couple-with-heart":{"a":"Couple with Heart","b":"1F491","j":["couple","love","pair","like","affection","human","dating","valentines","marriage"]},"couple-with-heart-woman-man":{"a":"Couple with Heart: Woman, Man","b":"1F469-200D-2764-FE0F-200D-1F468","j":["couple","couple with heart","love","man","woman"]},"couple-with-heart-man-man":{"a":"Couple with Heart: Man, Man","b":"1F468-200D-2764-FE0F-200D-1F468","j":["couple","couple with heart","love","man","pair","like","affection","human","dating","valentines","marriage"]},"couple-with-heart-woman-woman":{"a":"Couple with Heart: Woman, Woman","b":"1F469-200D-2764-FE0F-200D-1F469","j":["couple","couple with heart","love","woman","pair","like","affection","human","dating","valentines","marriage"]},"family":{"a":"Family","b":"1F46A","j":["home","parents","child","mom","dad","father","mother","people","human"]},"family-man-woman-boy":{"a":"Family: Man, Woman, Boy","b":"1F468-200D-1F469-200D-1F466","j":["boy","family","man","woman","love"]},"family-man-woman-girl":{"a":"Family: Man, Woman, Girl","b":"1F468-200D-1F469-200D-1F467","j":["family","girl","man","woman","home","parents","people","human","child"]},"family-man-woman-girl-boy":{"a":"Family: Man, Woman, Girl, Boy","b":"1F468-200D-1F469-200D-1F467-200D-1F466","j":["boy","family","girl","man","woman","home","parents","people","human","children"]},"family-man-woman-boy-boy":{"a":"Family: Man, Woman, Boy, Boy","b":"1F468-200D-1F469-200D-1F466-200D-1F466","j":["boy","family","man","woman","home","parents","people","human","children"]},"family-man-woman-girl-girl":{"a":"Family: Man, Woman, Girl, Girl","b":"1F468-200D-1F469-200D-1F467-200D-1F467","j":["family","girl","man","woman","home","parents","people","human","children"]},"family-man-man-boy":{"a":"Family: Man, Man, Boy","b":"1F468-200D-1F468-200D-1F466","j":["boy","family","man","home","parents","people","human","children"]},"family-man-man-girl":{"a":"Family: Man, Man, Girl","b":"1F468-200D-1F468-200D-1F467","j":["family","girl","man","home","parents","people","human","children"]},"family-man-man-girl-boy":{"a":"Family: Man, Man, Girl, Boy","b":"1F468-200D-1F468-200D-1F467-200D-1F466","j":["boy","family","girl","man","home","parents","people","human","children"]},"family-man-man-boy-boy":{"a":"Family: Man, Man, Boy, Boy","b":"1F468-200D-1F468-200D-1F466-200D-1F466","j":["boy","family","man","home","parents","people","human","children"]},"family-man-man-girl-girl":{"a":"Family: Man, Man, Girl, Girl","b":"1F468-200D-1F468-200D-1F467-200D-1F467","j":["family","girl","man","home","parents","people","human","children"]},"family-woman-woman-boy":{"a":"Family: Woman, Woman, Boy","b":"1F469-200D-1F469-200D-1F466","j":["boy","family","woman","home","parents","people","human","children"]},"family-woman-woman-girl":{"a":"Family: Woman, Woman, Girl","b":"1F469-200D-1F469-200D-1F467","j":["family","girl","woman","home","parents","people","human","children"]},"family-woman-woman-girl-boy":{"a":"Family: Woman, Woman, Girl, Boy","b":"1F469-200D-1F469-200D-1F467-200D-1F466","j":["boy","family","girl","woman","home","parents","people","human","children"]},"family-woman-woman-boy-boy":{"a":"Family: Woman, Woman, Boy, Boy","b":"1F469-200D-1F469-200D-1F466-200D-1F466","j":["boy","family","woman","home","parents","people","human","children"]},"family-woman-woman-girl-girl":{"a":"Family: Woman, Woman, Girl, Girl","b":"1F469-200D-1F469-200D-1F467-200D-1F467","j":["family","girl","woman","home","parents","people","human","children"]},"family-man-boy":{"a":"Family: Man, Boy","b":"1F468-200D-1F466","j":["boy","family","man","home","parent","people","human","child"]},"family-man-boy-boy":{"a":"Family: Man, Boy, Boy","b":"1F468-200D-1F466-200D-1F466","j":["boy","family","man","home","parent","people","human","children"]},"family-man-girl":{"a":"Family: Man, Girl","b":"1F468-200D-1F467","j":["family","girl","man","home","parent","people","human","child"]},"family-man-girl-boy":{"a":"Family: Man, Girl, Boy","b":"1F468-200D-1F467-200D-1F466","j":["boy","family","girl","man","home","parent","people","human","children"]},"family-man-girl-girl":{"a":"Family: Man, Girl, Girl","b":"1F468-200D-1F467-200D-1F467","j":["family","girl","man","home","parent","people","human","children"]},"family-woman-boy":{"a":"Family: Woman, Boy","b":"1F469-200D-1F466","j":["boy","family","woman","home","parent","people","human","child"]},"family-woman-boy-boy":{"a":"Family: Woman, Boy, Boy","b":"1F469-200D-1F466-200D-1F466","j":["boy","family","woman","home","parent","people","human","children"]},"family-woman-girl":{"a":"Family: Woman, Girl","b":"1F469-200D-1F467","j":["family","girl","woman","home","parent","people","human","child"]},"family-woman-girl-boy":{"a":"Family: Woman, Girl, Boy","b":"1F469-200D-1F467-200D-1F466","j":["boy","family","girl","woman","home","parent","people","human","children"]},"family-woman-girl-girl":{"a":"Family: Woman, Girl, Girl","b":"1F469-200D-1F467-200D-1F467","j":["family","girl","woman","home","parent","people","human","children"]},"speaking-head":{"a":"Speaking Head","b":"1F5E3","j":["face","head","silhouette","speak","speaking","user","person","human","sing","say","talk"]},"bust-in-silhouette":{"a":"Bust in Silhouette","b":"1F464","j":["bust","silhouette","user","person","human"]},"busts-in-silhouette":{"a":"Busts in Silhouette","b":"1F465","j":["bust","silhouette","user","person","human","group","team"]},"people-hugging":{"a":"People Hugging","b":"1FAC2","j":["goodbye","hello","hug","thanks","care"]},"footprints":{"a":"Footprints","b":"1F463","j":["clothing","footprint","print","feet","tracking","walking","beach"]},"red-hair":{"a":"Red Hair","b":"1F9B0","j":["ginger","red hair","redhead"]},"curly-hair":{"a":"Curly Hair","b":"1F9B1","j":["afro","curly","curly hair","ringlets"]},"white-hair":{"a":"White Hair","b":"1F9B3","j":["gray","hair","old","white"]},"bald":{"a":"Bald","b":"1F9B2","j":["bald","chemotherapy","hairless","no hair","shaven"]},"monkey-face":{"a":"Monkey Face","b":"1F435","j":["face","monkey","animal","nature","circus"]},"monkey":{"a":"Monkey","b":"1F412","j":["animal","nature","banana","circus"]},"gorilla":{"a":"Gorilla","b":"1F98D","j":["animal","nature","circus"]},"orangutan":{"a":"Orangutan","b":"1F9A7","j":["ape","animal"]},"dog-face":{"a":"Dog Face","b":"1F436","j":["dog","face","pet","animal","friend","nature","woof","puppy","faithful"]},"dog":{"a":"Dog","b":"1F415","j":["pet","animal","nature","friend","doge","faithful"]},"guide-dog":{"a":"Guide Dog","b":"1F9AE","j":["accessibility","blind","guide","animal"]},"service-dog":{"a":"Service Dog","b":"1F415-200D-1F9BA","j":["accessibility","assistance","dog","service","blind","animal"]},"poodle":{"a":"Poodle","b":"1F429","j":["dog","animal","101","nature","pet"]},"wolf":{"a":"Wolf","b":"1F43A","j":["face","animal","nature","wild"]},"fox":{"a":"Fox","b":"1F98A","j":["face","animal","nature"]},"raccoon":{"a":"Raccoon","b":"1F99D","j":["curious","sly","animal","nature"]},"cat-face":{"a":"Cat Face","b":"1F431","j":["cat","face","pet","animal","meow","nature","kitten"]},"cat":{"a":"Cat","b":"1F408","j":["pet","animal","meow","cats"]},"black-cat":{"a":"Black Cat","b":"1F408-200D-2B1B","j":["black","cat","unlucky","superstition","luck"]},"lion":{"a":"Lion","b":"1F981","j":["face","Leo","zodiac","animal","nature"]},"tiger-face":{"a":"Tiger Face","b":"1F42F","j":["face","tiger","animal","cat","danger","wild","nature","roar"]},"tiger":{"a":"Tiger","b":"1F405","j":["animal","nature","roar"]},"leopard":{"a":"Leopard","b":"1F406","j":["animal","nature"]},"horse-face":{"a":"Horse Face","b":"1F434","j":["face","horse","animal","brown","nature"]},"horse":{"a":"Horse","b":"1F40E","j":["equestrian","racehorse","racing","animal","gamble","luck"]},"unicorn":{"a":"Unicorn","b":"1F984","j":["face","animal","nature","mystical"]},"zebra":{"a":"Zebra","b":"1F993","j":["stripe","animal","nature","stripes","safari"]},"deer":{"a":"Deer","b":"1F98C","j":["animal","nature","horns","venison"]},"bison":{"a":"Bison","b":"1F9AC","j":["buffalo","herd","wisent","ox"]},"cow-face":{"a":"Cow Face","b":"1F42E","j":["cow","face","beef","ox","animal","nature","moo","milk"]},"ox":{"a":"Ox","b":"1F402","j":["bull","Taurus","zodiac","animal","cow","beef"]},"water-buffalo":{"a":"Water Buffalo","b":"1F403","j":["buffalo","water","animal","nature","ox","cow"]},"cow":{"a":"Cow","b":"1F404","j":["beef","ox","animal","nature","moo","milk"]},"pig-face":{"a":"Pig Face","b":"1F437","j":["face","pig","animal","oink","nature"]},"pig":{"a":"Pig","b":"1F416","j":["sow","animal","nature"]},"boar":{"a":"Boar","b":"1F417","j":["pig","animal","nature"]},"pig-nose":{"a":"Pig Nose","b":"1F43D","j":["face","nose","pig","animal","oink"]},"ram":{"a":"Ram","b":"1F40F","j":["Aries","male","sheep","zodiac","animal","nature"]},"ewe":{"a":"Ewe","b":"1F411","j":["female","sheep","animal","nature","wool","shipit"]},"goat":{"a":"Goat","b":"1F410","j":["Capricorn","zodiac","animal","nature"]},"camel":{"a":"Camel","b":"1F42A","j":["dromedary","hump","animal","hot","desert"]},"twohump-camel":{"a":"Two-Hump Camel","b":"1F42B","j":["bactrian","camel","hump","two-hump camel","two_hump_camel","animal","nature","hot","desert"]},"llama":{"a":"Llama","b":"1F999","j":["alpaca","guanaco","vicuña","wool","animal","nature"]},"giraffe":{"a":"Giraffe","b":"1F992","j":["spots","animal","nature","safari"]},"elephant":{"a":"Elephant","b":"1F418","j":["animal","nature","nose","th","circus"]},"mammoth":{"a":"Mammoth","b":"1F9A3","j":["extinction","large","tusk","woolly","elephant","tusks"]},"rhinoceros":{"a":"Rhinoceros","b":"1F98F","j":["animal","nature","horn"]},"hippopotamus":{"a":"Hippopotamus","b":"1F99B","j":["hippo","animal","nature"]},"mouse-face":{"a":"Mouse Face","b":"1F42D","j":["face","mouse","animal","nature","cheese_wedge","rodent"]},"mouse":{"a":"Mouse","b":"1F401","j":["animal","nature","rodent"]},"rat":{"a":"Rat","b":"1F400","j":["animal","mouse","rodent"]},"hamster":{"a":"Hamster","b":"1F439","j":["face","pet","animal","nature"]},"rabbit-face":{"a":"Rabbit Face","b":"1F430","j":["bunny","face","pet","rabbit","animal","nature","spring","magic"]},"rabbit":{"a":"Rabbit","b":"1F407","j":["bunny","pet","animal","nature","magic","spring"]},"chipmunk":{"a":"Chipmunk","b":"1F43F","j":["squirrel","animal","nature","rodent"]},"beaver":{"a":"Beaver","b":"1F9AB","j":["dam","animal","rodent"]},"hedgehog":{"a":"Hedgehog","b":"1F994","j":["spiny","animal","nature"]},"bat":{"a":"Bat","b":"1F987","j":["vampire","animal","nature","blind"]},"bear":{"a":"Bear","b":"1F43B","j":["face","animal","nature","wild"]},"polar-bear":{"a":"Polar Bear","b":"1F43B-200D-2744-FE0F","j":["arctic","bear","white","animal"]},"koala":{"a":"Koala","b":"1F428","j":["bear","animal","nature"]},"panda":{"a":"Panda","b":"1F43C","j":["face","animal","nature"]},"sloth":{"a":"Sloth","b":"1F9A5","j":["lazy","slow","animal"]},"otter":{"a":"Otter","b":"1F9A6","j":["fishing","playful","animal"]},"skunk":{"a":"Skunk","b":"1F9A8","j":["stink","animal"]},"kangaroo":{"a":"Kangaroo","b":"1F998","j":["Australia","joey","jump","marsupial","animal","nature","australia","hop"]},"badger":{"a":"Badger","b":"1F9A1","j":["honey badger","pester","animal","nature","honey"]},"paw-prints":{"a":"Paw Prints","b":"1F43E","j":["feet","paw","print","animal","tracking","footprints","dog","cat","pet"]},"turkey":{"a":"Turkey","b":"1F983","j":["bird","animal"]},"chicken":{"a":"Chicken","b":"1F414","j":["bird","animal","cluck","nature"]},"rooster":{"a":"Rooster","b":"1F413","j":["bird","animal","nature","chicken"]},"hatching-chick":{"a":"Hatching Chick","b":"1F423","j":["baby","bird","chick","hatching","animal","chicken","egg","born"]},"baby-chick":{"a":"Baby Chick","b":"1F424","j":["baby","bird","chick","animal","chicken"]},"frontfacing-baby-chick":{"a":"Front-Facing Baby Chick","b":"1F425","j":["baby","bird","chick","front-facing baby chick","front_facing_baby_chick","animal","chicken"]},"bird":{"a":"Bird","b":"1F426","j":["animal","nature","fly","tweet","spring"]},"penguin":{"a":"Penguin","b":"1F427","j":["bird","animal","nature"]},"dove":{"a":"Dove","b":"1F54A","j":["bird","fly","peace","animal"]},"eagle":{"a":"Eagle","b":"1F985","j":["bird","animal","nature"]},"duck":{"a":"Duck","b":"1F986","j":["bird","animal","nature","mallard"]},"swan":{"a":"Swan","b":"1F9A2","j":["bird","cygnet","ugly duckling","animal","nature"]},"owl":{"a":"Owl","b":"1F989","j":["bird","wise","animal","nature","hoot"]},"dodo":{"a":"Dodo","b":"1F9A4","j":["extinction","large","Mauritius","animal","bird"]},"feather":{"a":"Feather","b":"1FAB6","j":["bird","flight","light","plumage","fly"]},"flamingo":{"a":"Flamingo","b":"1F9A9","j":["flamboyant","tropical","animal"]},"peacock":{"a":"Peacock","b":"1F99A","j":["bird","ostentatious","peahen","proud","animal","nature"]},"parrot":{"a":"Parrot","b":"1F99C","j":["bird","pirate","talk","animal","nature"]},"frog":{"a":"Frog","b":"1F438","j":["face","animal","nature","croak","toad"]},"crocodile":{"a":"Crocodile","b":"1F40A","j":["animal","nature","reptile","lizard","alligator"]},"turtle":{"a":"Turtle","b":"1F422","j":["terrapin","tortoise","animal","slow","nature"]},"lizard":{"a":"Lizard","b":"1F98E","j":["reptile","animal","nature"]},"snake":{"a":"Snake","b":"1F40D","j":["bearer","Ophiuchus","serpent","zodiac","animal","evil","nature","hiss","python"]},"dragon-face":{"a":"Dragon Face","b":"1F432","j":["dragon","face","fairy tale","animal","myth","nature","chinese","green"]},"dragon":{"a":"Dragon","b":"1F409","j":["fairy tale","animal","myth","nature","chinese","green"]},"sauropod":{"a":"Sauropod","b":"1F995","j":["brachiosaurus","brontosaurus","diplodocus","animal","nature","dinosaur","extinct"]},"trex":{"a":"T-Rex","b":"1F996","j":["Tyrannosaurus Rex","t_rex","animal","nature","dinosaur","tyrannosaurus","extinct"]},"spouting-whale":{"a":"Spouting Whale","b":"1F433","j":["face","spouting","whale","animal","nature","sea","ocean"]},"whale":{"a":"Whale","b":"1F40B","j":["animal","nature","sea","ocean"]},"dolphin":{"a":"Dolphin","b":"1F42C","j":["flipper","animal","nature","fish","sea","ocean","fins","beach"]},"seal":{"a":"Seal","b":"1F9AD","j":["sea lion","animal","creature","sea"]},"fish":{"a":"Fish","b":"1F41F","j":["Pisces","zodiac","animal","food","nature"]},"tropical-fish":{"a":"Tropical Fish","b":"1F420","j":["fish","tropical","animal","swim","ocean","beach","nemo"]},"blowfish":{"a":"Blowfish","b":"1F421","j":["fish","animal","nature","food","sea","ocean"]},"shark":{"a":"Shark","b":"1F988","j":["fish","animal","nature","sea","ocean","jaws","fins","beach"]},"octopus":{"a":"Octopus","b":"1F419","j":["animal","creature","ocean","sea","nature","beach"]},"spiral-shell":{"a":"Spiral Shell","b":"1F41A","j":["shell","spiral","nature","sea","beach"]},"snail":{"a":"Snail","b":"1F40C","j":["slow","animal","shell"]},"butterfly":{"a":"Butterfly","b":"1F98B","j":["insect","pretty","animal","nature","caterpillar"]},"bug":{"a":"Bug","b":"1F41B","j":["insect","animal","nature","worm"]},"ant":{"a":"Ant","b":"1F41C","j":["insect","animal","nature","bug"]},"honeybee":{"a":"Honeybee","b":"1F41D","j":["bee","insect","animal","nature","bug","spring","honey"]},"beetle":{"a":"Beetle","b":"1FAB2","j":["bug","insect"]},"lady-beetle":{"a":"Lady Beetle","b":"1F41E","j":["beetle","insect","ladybird","ladybug","animal","nature"]},"cricket":{"a":"Cricket","b":"1F997","j":["grasshopper","Orthoptera","animal","chirp"]},"cockroach":{"a":"Cockroach","b":"1FAB3","j":["insect","pest","roach","pests"]},"spider":{"a":"Spider","b":"1F577","j":["insect","animal","arachnid"]},"spider-web":{"a":"Spider Web","b":"1F578","j":["spider","web","animal","insect","arachnid","silk"]},"scorpion":{"a":"Scorpion","b":"1F982","j":["scorpio","Scorpio","zodiac","animal","arachnid"]},"mosquito":{"a":"Mosquito","b":"1F99F","j":["disease","fever","malaria","pest","virus","animal","nature","insect"]},"fly":{"a":"Fly","b":"1FAB0","j":["disease","maggot","pest","rotting","insect"]},"worm":{"a":"Worm","b":"1FAB1","j":["annelid","earthworm","parasite","animal"]},"microbe":{"a":"Microbe","b":"1F9A0","j":["amoeba","bacteria","virus","germs"]},"bouquet":{"a":"Bouquet","b":"1F490","j":["flower","flowers","nature","spring"]},"cherry-blossom":{"a":"Cherry Blossom","b":"1F338","j":["blossom","cherry","flower","nature","plant","spring"]},"white-flower":{"a":"White Flower","b":"1F4AE","j":["flower","japanese","spring"]},"rosette":{"a":"Rosette","b":"1F3F5","j":["plant","flower","decoration","military"]},"rose":{"a":"Rose","b":"1F339","j":["flower","flowers","valentines","love","spring"]},"wilted-flower":{"a":"Wilted Flower","b":"1F940","j":["flower","wilted","plant","nature"]},"hibiscus":{"a":"Hibiscus","b":"1F33A","j":["flower","plant","vegetable","flowers","beach"]},"sunflower":{"a":"Sunflower","b":"1F33B","j":["flower","sun","nature","plant","fall"]},"blossom":{"a":"Blossom","b":"1F33C","j":["flower","nature","flowers","yellow"]},"tulip":{"a":"Tulip","b":"1F337","j":["flower","flowers","plant","nature","summer","spring"]},"seedling":{"a":"Seedling","b":"1F331","j":["young","plant","nature","grass","lawn","spring"]},"potted-plant":{"a":"Potted Plant","b":"1FAB4","j":["boring","grow","house","nurturing","plant","useless","greenery"]},"evergreen-tree":{"a":"Evergreen Tree","b":"1F332","j":["tree","plant","nature"]},"deciduous-tree":{"a":"Deciduous Tree","b":"1F333","j":["deciduous","shedding","tree","plant","nature"]},"palm-tree":{"a":"Palm Tree","b":"1F334","j":["palm","tree","plant","vegetable","nature","summer","beach","mojito","tropical"]},"cactus":{"a":"Cactus","b":"1F335","j":["plant","vegetable","nature"]},"sheaf-of-rice":{"a":"Sheaf of Rice","b":"1F33E","j":["ear","grain","rice","nature","plant"]},"herb":{"a":"Herb","b":"1F33F","j":["leaf","vegetable","plant","medicine","weed","grass","lawn"]},"shamrock":{"a":"Shamrock","b":"2618","j":["plant","vegetable","nature","irish","clover"]},"four-leaf-clover":{"a":"Four Leaf Clover","b":"1F340","j":["4","clover","four","four-leaf clover","leaf","vegetable","plant","nature","lucky","irish"]},"maple-leaf":{"a":"Maple Leaf","b":"1F341","j":["falling","leaf","maple","nature","plant","vegetable","ca","fall"]},"fallen-leaf":{"a":"Fallen Leaf","b":"1F342","j":["falling","leaf","nature","plant","vegetable","leaves"]},"leaf-fluttering-in-wind":{"a":"Leaf Fluttering in Wind","b":"1F343","j":["blow","flutter","leaf","wind","nature","plant","tree","vegetable","grass","lawn","spring"]},"grapes":{"a":"Grapes","b":"1F347","j":["fruit","grape","food","wine"]},"melon":{"a":"Melon","b":"1F348","j":["fruit","nature","food"]},"watermelon":{"a":"Watermelon","b":"1F349","j":["fruit","food","picnic","summer"]},"tangerine":{"a":"Tangerine","b":"1F34A","j":["fruit","orange","food","nature"]},"lemon":{"a":"Lemon","b":"1F34B","j":["citrus","fruit","nature"]},"banana":{"a":"Banana","b":"1F34C","j":["fruit","food","monkey"]},"pineapple":{"a":"Pineapple","b":"1F34D","j":["fruit","nature","food"]},"mango":{"a":"Mango","b":"1F96D","j":["fruit","tropical","food"]},"red-apple":{"a":"Red Apple","b":"1F34E","j":["apple","fruit","red","mac","school"]},"green-apple":{"a":"Green Apple","b":"1F34F","j":["apple","fruit","green","nature"]},"pear":{"a":"Pear","b":"1F350","j":["fruit","nature","food"]},"peach":{"a":"Peach","b":"1F351","j":["fruit","nature","food"]},"cherries":{"a":"Cherries","b":"1F352","j":["berries","cherry","fruit","red","food"]},"strawberry":{"a":"Strawberry","b":"1F353","j":["berry","fruit","food","nature"]},"blueberries":{"a":"Blueberries","b":"1FAD0","j":["berry","bilberry","blue","blueberry","fruit"]},"kiwi-fruit":{"a":"Kiwi Fruit","b":"1F95D","j":["food","fruit","kiwi"]},"tomato":{"a":"Tomato","b":"1F345","j":["fruit","vegetable","nature","food"]},"olive":{"a":"Olive","b":"1FAD2","j":["food","fruit"]},"coconut":{"a":"Coconut","b":"1F965","j":["palm","piña colada","fruit","nature","food"]},"avocado":{"a":"Avocado","b":"1F951","j":["food","fruit"]},"eggplant":{"a":"Eggplant","b":"1F346","j":["aubergine","vegetable","nature","food"]},"potato":{"a":"Potato","b":"1F954","j":["food","vegetable","tuber","vegatable","starch"]},"carrot":{"a":"Carrot","b":"1F955","j":["food","vegetable","orange"]},"ear-of-corn":{"a":"Ear of Corn","b":"1F33D","j":["corn","ear","maize","maze","food","vegetable","plant"]},"hot-pepper":{"a":"Hot Pepper","b":"1F336","j":["hot","pepper","food","spicy","chilli","chili"]},"bell-pepper":{"a":"Bell Pepper","b":"1FAD1","j":["capsicum","pepper","vegetable","fruit","plant"]},"cucumber":{"a":"Cucumber","b":"1F952","j":["food","pickle","vegetable","fruit"]},"leafy-green":{"a":"Leafy Green","b":"1F96C","j":["bok choy","cabbage","kale","lettuce","food","vegetable","plant"]},"broccoli":{"a":"Broccoli","b":"1F966","j":["wild cabbage","fruit","food","vegetable"]},"garlic":{"a":"Garlic","b":"1F9C4","j":["flavoring","food","spice","cook"]},"onion":{"a":"Onion","b":"1F9C5","j":["flavoring","cook","food","spice"]},"mushroom":{"a":"Mushroom","b":"1F344","j":["toadstool","plant","vegetable"]},"peanuts":{"a":"Peanuts","b":"1F95C","j":["food","nut","peanut","vegetable"]},"chestnut":{"a":"Chestnut","b":"1F330","j":["plant","food","squirrel"]},"bread":{"a":"Bread","b":"1F35E","j":["loaf","food","wheat","breakfast","toast"]},"croissant":{"a":"Croissant","b":"1F950","j":["bread","breakfast","food","french","roll"]},"baguette-bread":{"a":"Baguette Bread","b":"1F956","j":["baguette","bread","food","french"]},"flatbread":{"a":"Flatbread","b":"1FAD3","j":["arepa","lavash","naan","pita","flour","food"]},"pretzel":{"a":"Pretzel","b":"1F968","j":["twisted","convoluted","food","bread"]},"bagel":{"a":"Bagel","b":"1F96F","j":["bakery","breakfast","schmear","food","bread"]},"pancakes":{"a":"Pancakes","b":"1F95E","j":["breakfast","crêpe","food","hotcake","pancake","flapjacks","hotcakes"]},"waffle":{"a":"Waffle","b":"1F9C7","j":["breakfast","indecisive","iron","food"]},"cheese-wedge":{"a":"Cheese Wedge","b":"1F9C0","j":["cheese","food","chadder"]},"meat-on-bone":{"a":"Meat on Bone","b":"1F356","j":["bone","meat","good","food","drumstick"]},"poultry-leg":{"a":"Poultry Leg","b":"1F357","j":["bone","chicken","drumstick","leg","poultry","food","meat","bird","turkey"]},"cut-of-meat":{"a":"Cut of Meat","b":"1F969","j":["chop","lambchop","porkchop","steak","food","cow","meat","cut"]},"bacon":{"a":"Bacon","b":"1F953","j":["breakfast","food","meat","pork","pig"]},"hamburger":{"a":"Hamburger","b":"1F354","j":["burger","meat","fast food","beef","cheeseburger","mcdonalds","burger king"]},"french-fries":{"a":"French Fries","b":"1F35F","j":["french","fries","chips","snack","fast food"]},"pizza":{"a":"Pizza","b":"1F355","j":["cheese","slice","food","party"]},"hot-dog":{"a":"Hot Dog","b":"1F32D","j":["frankfurter","hotdog","sausage","food"]},"sandwich":{"a":"Sandwich","b":"1F96A","j":["bread","food","lunch"]},"taco":{"a":"Taco","b":"1F32E","j":["mexican","food"]},"burrito":{"a":"Burrito","b":"1F32F","j":["mexican","wrap","food"]},"tamale":{"a":"Tamale","b":"1FAD4","j":["mexican","wrapped","food","masa"]},"stuffed-flatbread":{"a":"Stuffed Flatbread","b":"1F959","j":["falafel","flatbread","food","gyro","kebab","stuffed"]},"falafel":{"a":"Falafel","b":"1F9C6","j":["chickpea","meatball","food"]},"egg":{"a":"Egg","b":"1F95A","j":["breakfast","food","chicken"]},"cooking":{"a":"Cooking","b":"1F373","j":["breakfast","egg","frying","pan","food","kitchen"]},"shallow-pan-of-food":{"a":"Shallow Pan of Food","b":"1F958","j":["casserole","food","paella","pan","shallow","cooking"]},"pot-of-food":{"a":"Pot of Food","b":"1F372","j":["pot","stew","food","meat","soup"]},"fondue":{"a":"Fondue","b":"1FAD5","j":["cheese","chocolate","melted","pot","Swiss","food"]},"bowl-with-spoon":{"a":"Bowl with Spoon","b":"1F963","j":["breakfast","cereal","congee","oatmeal","porridge","food"]},"green-salad":{"a":"Green Salad","b":"1F957","j":["food","green","salad","healthy","lettuce"]},"popcorn":{"a":"Popcorn","b":"1F37F","j":["food","movie theater","films","snack"]},"butter":{"a":"Butter","b":"1F9C8","j":["dairy","food","cook"]},"salt":{"a":"Salt","b":"1F9C2","j":["condiment","shaker"]},"canned-food":{"a":"Canned Food","b":"1F96B","j":["can","food","soup"]},"bento-box":{"a":"Bento Box","b":"1F371","j":["bento","box","food","japanese"]},"rice-cracker":{"a":"Rice Cracker","b":"1F358","j":["cracker","rice","food","japanese"]},"rice-ball":{"a":"Rice Ball","b":"1F359","j":["ball","Japanese","rice","food","japanese"]},"cooked-rice":{"a":"Cooked Rice","b":"1F35A","j":["cooked","rice","food","china","asian"]},"curry-rice":{"a":"Curry Rice","b":"1F35B","j":["curry","rice","food","spicy","hot","indian"]},"steaming-bowl":{"a":"Steaming Bowl","b":"1F35C","j":["bowl","noodle","ramen","steaming","food","japanese","chopsticks"]},"spaghetti":{"a":"Spaghetti","b":"1F35D","j":["pasta","food","italian","noodle"]},"roasted-sweet-potato":{"a":"Roasted Sweet Potato","b":"1F360","j":["potato","roasted","sweet","food","nature"]},"oden":{"a":"Oden","b":"1F362","j":["kebab","seafood","skewer","stick","food","japanese"]},"sushi":{"a":"Sushi","b":"1F363","j":["food","fish","japanese","rice"]},"fried-shrimp":{"a":"Fried Shrimp","b":"1F364","j":["fried","prawn","shrimp","tempura","food","animal","appetizer","summer"]},"fish-cake-with-swirl":{"a":"Fish Cake with Swirl","b":"1F365","j":["cake","fish","pastry","swirl","food","japan","sea","beach","narutomaki","pink","kamaboko","surimi","ramen"]},"moon-cake":{"a":"Moon Cake","b":"1F96E","j":["autumn","festival","yuèbǐng","food"]},"dango":{"a":"Dango","b":"1F361","j":["dessert","Japanese","skewer","stick","sweet","food","japanese","barbecue","meat"]},"dumpling":{"a":"Dumpling","b":"1F95F","j":["empanada","gyōza","jiaozi","pierogi","potsticker","food"]},"fortune-cookie":{"a":"Fortune Cookie","b":"1F960","j":["prophecy","food"]},"takeout-box":{"a":"Takeout Box","b":"1F961","j":["oyster pail","food","leftovers"]},"crab":{"a":"Crab","b":"1F980","j":["Cancer","zodiac","animal","crustacean"]},"lobster":{"a":"Lobster","b":"1F99E","j":["bisque","claws","seafood","animal","nature"]},"shrimp":{"a":"Shrimp","b":"1F990","j":["food","shellfish","small","animal","ocean","nature","seafood"]},"squid":{"a":"Squid","b":"1F991","j":["food","molusc","animal","nature","ocean","sea"]},"oyster":{"a":"Oyster","b":"1F9AA","j":["diving","pearl","food"]},"soft-ice-cream":{"a":"Soft Ice Cream","b":"1F366","j":["cream","dessert","ice","icecream","soft","sweet","food","hot","summer"]},"shaved-ice":{"a":"Shaved Ice","b":"1F367","j":["dessert","ice","shaved","sweet","hot","summer"]},"ice-cream":{"a":"Ice Cream","b":"1F368","j":["cream","dessert","ice","sweet","food","hot"]},"doughnut":{"a":"Doughnut","b":"1F369","j":["breakfast","dessert","donut","sweet","food","snack"]},"cookie":{"a":"Cookie","b":"1F36A","j":["dessert","sweet","food","snack","oreo","chocolate"]},"birthday-cake":{"a":"Birthday Cake","b":"1F382","j":["birthday","cake","celebration","dessert","pastry","sweet","food"]},"shortcake":{"a":"Shortcake","b":"1F370","j":["cake","dessert","pastry","slice","sweet","food"]},"cupcake":{"a":"Cupcake","b":"1F9C1","j":["bakery","sweet","food","dessert"]},"pie":{"a":"Pie","b":"1F967","j":["filling","pastry","fruit","meat","food","dessert"]},"chocolate-bar":{"a":"Chocolate Bar","b":"1F36B","j":["bar","chocolate","dessert","sweet","food","snack"]},"candy":{"a":"Candy","b":"1F36C","j":["dessert","sweet","snack","lolly"]},"lollipop":{"a":"Lollipop","b":"1F36D","j":["candy","dessert","sweet","food","snack"]},"custard":{"a":"Custard","b":"1F36E","j":["dessert","pudding","sweet","food"]},"honey-pot":{"a":"Honey Pot","b":"1F36F","j":["honey","honeypot","pot","sweet","bees","kitchen"]},"baby-bottle":{"a":"Baby Bottle","b":"1F37C","j":["baby","bottle","drink","milk","food","container"]},"glass-of-milk":{"a":"Glass of Milk","b":"1F95B","j":["drink","glass","milk","beverage","cow"]},"hot-beverage":{"a":"Hot Beverage","b":"2615","j":["beverage","coffee","drink","hot","steaming","tea","caffeine","latte","espresso"]},"teapot":{"a":"Teapot","b":"1FAD6","j":["drink","pot","tea","hot"]},"teacup-without-handle":{"a":"Teacup Without Handle","b":"1F375","j":["beverage","cup","drink","tea","teacup","bowl","breakfast","green","british"]},"sake":{"a":"Sake","b":"1F376","j":["bar","beverage","bottle","cup","drink","wine","drunk","japanese","alcohol","booze"]},"bottle-with-popping-cork":{"a":"Bottle with Popping Cork","b":"1F37E","j":["bar","bottle","cork","drink","popping","wine","celebration"]},"wine-glass":{"a":"Wine Glass","b":"1F377","j":["bar","beverage","drink","glass","wine","drunk","alcohol","booze"]},"cocktail-glass":{"a":"Cocktail Glass","b":"1F378","j":["bar","cocktail","drink","glass","drunk","alcohol","beverage","booze","mojito"]},"tropical-drink":{"a":"Tropical Drink","b":"1F379","j":["bar","drink","tropical","beverage","cocktail","summer","beach","alcohol","booze","mojito"]},"beer-mug":{"a":"Beer Mug","b":"1F37A","j":["bar","beer","drink","mug","relax","beverage","drunk","party","pub","summer","alcohol","booze"]},"clinking-beer-mugs":{"a":"Clinking Beer Mugs","b":"1F37B","j":["bar","beer","clink","drink","mug","relax","beverage","drunk","party","pub","summer","alcohol","booze"]},"clinking-glasses":{"a":"Clinking Glasses","b":"1F942","j":["celebrate","clink","drink","glass","beverage","party","alcohol","cheers","wine","champagne","toast"]},"tumbler-glass":{"a":"Tumbler Glass","b":"1F943","j":["glass","liquor","shot","tumbler","whisky","drink","beverage","drunk","alcohol","booze","bourbon","scotch"]},"cup-with-straw":{"a":"Cup with Straw","b":"1F964","j":["juice","soda","malt","soft drink","water","drink"]},"bubble-tea":{"a":"Bubble Tea","b":"1F9CB","j":["bubble","milk","pearl","tea","taiwan","boba","milk tea","straw"]},"beverage-box":{"a":"Beverage Box","b":"1F9C3","j":["beverage","box","juice","straw","sweet","drink"]},"mate":{"a":"Mate","b":"1F9C9","j":["drink","tea","beverage"]},"ice":{"a":"Ice","b":"1F9CA","j":["cold","ice cube","iceberg","water"]},"chopsticks":{"a":"Chopsticks","b":"1F962","j":["hashi","jeotgarak","kuaizi","food"]},"fork-and-knife-with-plate":{"a":"Fork and Knife with Plate","b":"1F37D","j":["cooking","fork","knife","plate","food","eat","meal","lunch","dinner","restaurant"]},"fork-and-knife":{"a":"Fork and Knife","b":"1F374","j":["cooking","cutlery","fork","knife","kitchen"]},"spoon":{"a":"Spoon","b":"1F944","j":["tableware","cutlery","kitchen"]},"kitchen-knife":{"a":"Kitchen Knife","b":"1F52A","j":["cooking","hocho","knife","tool","weapon","blade","cutlery","kitchen"]},"amphora":{"a":"Amphora","b":"1F3FA","j":["Aquarius","cooking","drink","jug","zodiac","vase","jar"]},"globe-showing-europeafrica":{"a":"Globe Showing Europe-Africa","b":"1F30D","j":["Africa","earth","Europe","globe","globe showing Europe-Africa","world","globe_showing_europe_africa","international"]},"globe-showing-americas":{"a":"Globe Showing Americas","b":"1F30E","j":["Americas","earth","globe","globe showing Americas","world","USA","international"]},"globe-showing-asiaaustralia":{"a":"Globe Showing Asia-Australia","b":"1F30F","j":["Asia","Australia","earth","globe","globe showing Asia-Australia","world","globe_showing_asia_australia","east","international"]},"globe-with-meridians":{"a":"Globe with Meridians","b":"1F310","j":["earth","globe","meridians","world","international","internet","interweb","i18n"]},"world-map":{"a":"World Map","b":"1F5FA","j":["map","world","location","direction"]},"map-of-japan":{"a":"Map of Japan","b":"1F5FE","j":["Japan","map","map of Japan","nation","country","japanese","asia"]},"compass":{"a":"Compass","b":"1F9ED","j":["magnetic","navigation","orienteering"]},"snowcapped-mountain":{"a":"Snow-Capped Mountain","b":"1F3D4","j":["cold","mountain","snow","snow-capped mountain","snow_capped_mountain","photo","nature","environment","winter"]},"mountain":{"a":"Mountain","b":"26F0","j":["photo","nature","environment"]},"volcano":{"a":"Volcano","b":"1F30B","j":["eruption","mountain","photo","nature","disaster"]},"mount-fuji":{"a":"Mount Fuji","b":"1F5FB","j":["fuji","mountain","photo","nature","japanese"]},"camping":{"a":"Camping","b":"1F3D5","j":["photo","outdoors","tent"]},"beach-with-umbrella":{"a":"Beach with Umbrella","b":"1F3D6","j":["beach","umbrella","weather","summer","sunny","sand","mojito"]},"desert":{"a":"Desert","b":"1F3DC","j":["photo","warm","saharah"]},"desert-island":{"a":"Desert Island","b":"1F3DD","j":["desert","island","photo","tropical","mojito"]},"national-park":{"a":"National Park","b":"1F3DE","j":["park","photo","environment","nature"]},"stadium":{"a":"Stadium","b":"1F3DF","j":["photo","place","sports","concert","venue"]},"classical-building":{"a":"Classical Building","b":"1F3DB","j":["classical","art","culture","history"]},"building-construction":{"a":"Building Construction","b":"1F3D7","j":["construction","wip","working","progress"]},"brick":{"a":"Brick","b":"1F9F1","j":["bricks","clay","mortar","wall"]},"rock":{"a":"Rock","b":"1FAA8","j":["boulder","heavy","solid","stone"]},"wood":{"a":"Wood","b":"1FAB5","j":["log","lumber","timber","nature","trunk"]},"hut":{"a":"Hut","b":"1F6D6","j":["house","roundhouse","yurt","structure"]},"houses":{"a":"Houses","b":"1F3D8","j":["buildings","photo"]},"derelict-house":{"a":"Derelict House","b":"1F3DA","j":["derelict","house","abandon","evict","broken","building"]},"house":{"a":"House","b":"1F3E0","j":["home","building"]},"house-with-garden":{"a":"House with Garden","b":"1F3E1","j":["garden","home","house","plant","nature"]},"office-building":{"a":"Office Building","b":"1F3E2","j":["building","bureau","work"]},"japanese-post-office":{"a":"Japanese Post Office","b":"1F3E3","j":["Japanese","Japanese post office","post","building","envelope","communication"]},"post-office":{"a":"Post Office","b":"1F3E4","j":["European","post","building","email"]},"hospital":{"a":"Hospital","b":"1F3E5","j":["doctor","medicine","building","health","surgery"]},"bank":{"a":"Bank","b":"1F3E6","j":["building","money","sales","cash","business","enterprise"]},"hotel":{"a":"Hotel","b":"1F3E8","j":["building","accomodation","checkin"]},"love-hotel":{"a":"Love Hotel","b":"1F3E9","j":["hotel","love","like","affection","dating"]},"convenience-store":{"a":"Convenience Store","b":"1F3EA","j":["convenience","store","building","shopping","groceries"]},"school":{"a":"School","b":"1F3EB","j":["building","student","education","learn","teach"]},"department-store":{"a":"Department Store","b":"1F3EC","j":["department","store","building","shopping","mall"]},"factory":{"a":"Factory","b":"1F3ED","j":["building","industry","pollution","smoke"]},"japanese-castle":{"a":"Japanese Castle","b":"1F3EF","j":["castle","Japanese","photo","building"]},"castle":{"a":"Castle","b":"1F3F0","j":["European","building","royalty","history"]},"wedding":{"a":"Wedding","b":"1F492","j":["chapel","romance","love","like","affection","couple","marriage","bride","groom"]},"tokyo-tower":{"a":"Tokyo Tower","b":"1F5FC","j":["Tokyo","tower","photo","japanese"]},"statue-of-liberty":{"a":"Statue of Liberty","b":"1F5FD","j":["liberty","statue","american","newyork"]},"church":{"a":"Church","b":"26EA","j":["Christian","cross","religion","building","christ"]},"mosque":{"a":"Mosque","b":"1F54C","j":["islam","Muslim","religion","worship","minaret"]},"hindu-temple":{"a":"Hindu Temple","b":"1F6D5","j":["hindu","temple","religion"]},"synagogue":{"a":"Synagogue","b":"1F54D","j":["Jew","Jewish","religion","temple","judaism","worship","jewish"]},"shinto-shrine":{"a":"Shinto Shrine","b":"26E9","j":["religion","shinto","shrine","temple","japan","kyoto"]},"kaaba":{"a":"Kaaba","b":"1F54B","j":["islam","Muslim","religion","mecca","mosque"]},"fountain":{"a":"Fountain","b":"26F2","j":["photo","summer","water","fresh"]},"tent":{"a":"Tent","b":"26FA","j":["camping","photo","outdoors"]},"foggy":{"a":"Foggy","b":"1F301","j":["fog","photo","mountain"]},"night-with-stars":{"a":"Night with Stars","b":"1F303","j":["night","star","evening","city","downtown"]},"cityscape":{"a":"Cityscape","b":"1F3D9","j":["city","photo","night life","urban"]},"sunrise-over-mountains":{"a":"Sunrise over Mountains","b":"1F304","j":["morning","mountain","sun","sunrise","view","vacation","photo"]},"sunrise":{"a":"Sunrise","b":"1F305","j":["morning","sun","view","vacation","photo"]},"cityscape-at-dusk":{"a":"Cityscape at Dusk","b":"1F306","j":["city","dusk","evening","landscape","sunset","photo","sky","buildings"]},"sunset":{"a":"Sunset","b":"1F307","j":["dusk","sun","photo","good morning","dawn"]},"bridge-at-night":{"a":"Bridge at Night","b":"1F309","j":["bridge","night","photo","sanfrancisco"]},"hot-springs":{"a":"Hot Springs","b":"2668","j":["hot","hotsprings","springs","steaming","bath","warm","relax"]},"carousel-horse":{"a":"Carousel Horse","b":"1F3A0","j":["carousel","horse","photo","carnival"]},"ferris-wheel":{"a":"Ferris Wheel","b":"1F3A1","j":["amusement park","ferris","wheel","photo","carnival","londoneye"]},"roller-coaster":{"a":"Roller Coaster","b":"1F3A2","j":["amusement park","coaster","roller","carnival","playground","photo","fun"]},"barber-pole":{"a":"Barber Pole","b":"1F488","j":["barber","haircut","pole","hair","salon","style"]},"circus-tent":{"a":"Circus Tent","b":"1F3AA","j":["circus","tent","festival","carnival","party"]},"locomotive":{"a":"Locomotive","b":"1F682","j":["engine","railway","steam","train","transportation","vehicle"]},"railway-car":{"a":"Railway Car","b":"1F683","j":["car","electric","railway","train","tram","trolleybus","transportation","vehicle"]},"highspeed-train":{"a":"High-Speed Train","b":"1F684","j":["high-speed train","railway","shinkansen","speed","train","high_speed_train","transportation","vehicle"]},"bullet-train":{"a":"Bullet Train","b":"1F685","j":["bullet","railway","shinkansen","speed","train","transportation","vehicle","fast","public","travel"]},"train":{"a":"Train","b":"1F686","j":["railway","transportation","vehicle"]},"metro":{"a":"Metro","b":"1F687","j":["subway","transportation","blue-square","mrt","underground","tube"]},"light-rail":{"a":"Light Rail","b":"1F688","j":["railway","transportation","vehicle"]},"station":{"a":"Station","b":"1F689","j":["railway","train","transportation","vehicle","public"]},"tram":{"a":"Tram","b":"1F68A","j":["trolleybus","transportation","vehicle"]},"monorail":{"a":"Monorail","b":"1F69D","j":["vehicle","transportation"]},"mountain-railway":{"a":"Mountain Railway","b":"1F69E","j":["car","mountain","railway","transportation","vehicle"]},"tram-car":{"a":"Tram Car","b":"1F68B","j":["car","tram","trolleybus","transportation","vehicle","carriage","public","travel"]},"bus":{"a":"Bus","b":"1F68C","j":["vehicle","car","transportation"]},"oncoming-bus":{"a":"Oncoming Bus","b":"1F68D","j":["bus","oncoming","vehicle","transportation"]},"trolleybus":{"a":"Trolleybus","b":"1F68E","j":["bus","tram","trolley","bart","transportation","vehicle"]},"minibus":{"a":"Minibus","b":"1F690","j":["bus","vehicle","car","transportation"]},"ambulance":{"a":"Ambulance","b":"1F691","j":["vehicle","health","911","hospital"]},"fire-engine":{"a":"Fire Engine","b":"1F692","j":["engine","fire","truck","transportation","cars","vehicle"]},"police-car":{"a":"Police Car","b":"1F693","j":["car","patrol","police","vehicle","cars","transportation","law","legal","enforcement"]},"oncoming-police-car":{"a":"Oncoming Police Car","b":"1F694","j":["car","oncoming","police","vehicle","law","legal","enforcement","911"]},"taxi":{"a":"Taxi","b":"1F695","j":["vehicle","uber","cars","transportation"]},"oncoming-taxi":{"a":"Oncoming Taxi","b":"1F696","j":["oncoming","taxi","vehicle","cars","uber"]},"automobile":{"a":"Automobile","b":"1F697","j":["car","red","transportation","vehicle"]},"oncoming-automobile":{"a":"Oncoming Automobile","b":"1F698","j":["automobile","car","oncoming","vehicle","transportation"]},"sport-utility-vehicle":{"a":"Sport Utility Vehicle","b":"1F699","j":["recreational","sport utility","transportation","vehicle"]},"pickup-truck":{"a":"Pickup Truck","b":"1F6FB","j":["pick-up","pickup","truck","car","transportation"]},"delivery-truck":{"a":"Delivery Truck","b":"1F69A","j":["delivery","truck","cars","transportation"]},"articulated-lorry":{"a":"Articulated Lorry","b":"1F69B","j":["lorry","semi","truck","vehicle","cars","transportation","express"]},"tractor":{"a":"Tractor","b":"1F69C","j":["vehicle","car","farming","agriculture"]},"racing-car":{"a":"Racing Car","b":"1F3CE","j":["car","racing","sports","race","fast","formula","f1"]},"motorcycle":{"a":"Motorcycle","b":"1F3CD","j":["racing","race","sports","fast"]},"motor-scooter":{"a":"Motor Scooter","b":"1F6F5","j":["motor","scooter","vehicle","vespa","sasha"]},"manual-wheelchair":{"a":"Manual Wheelchair","b":"1F9BD","j":["accessibility"]},"motorized-wheelchair":{"a":"Motorized Wheelchair","b":"1F9BC","j":["accessibility"]},"auto-rickshaw":{"a":"Auto Rickshaw","b":"1F6FA","j":["tuk tuk","move","transportation"]},"bicycle":{"a":"Bicycle","b":"1F6B2","j":["bike","sports","exercise","hipster"]},"kick-scooter":{"a":"Kick Scooter","b":"1F6F4","j":["kick","scooter","vehicle","razor"]},"skateboard":{"a":"Skateboard","b":"1F6F9","j":["board"]},"roller-skate":{"a":"Roller Skate","b":"1F6FC","j":["roller","skate","footwear","sports"]},"bus-stop":{"a":"Bus Stop","b":"1F68F","j":["bus","busstop","stop","transportation","wait"]},"motorway":{"a":"Motorway","b":"1F6E3","j":["highway","road","cupertino","interstate"]},"railway-track":{"a":"Railway Track","b":"1F6E4","j":["railway","train","transportation"]},"oil-drum":{"a":"Oil Drum","b":"1F6E2","j":["drum","oil","barrell"]},"fuel-pump":{"a":"Fuel Pump","b":"26FD","j":["diesel","fuel","fuelpump","gas","pump","station","gas station","petroleum"]},"police-car-light":{"a":"Police Car Light","b":"1F6A8","j":["beacon","car","light","police","revolving","ambulance","911","emergency","alert","error","pinged","law","legal"]},"horizontal-traffic-light":{"a":"Horizontal Traffic Light","b":"1F6A5","j":["light","signal","traffic","transportation"]},"vertical-traffic-light":{"a":"Vertical Traffic Light","b":"1F6A6","j":["light","signal","traffic","transportation","driving"]},"stop-sign":{"a":"Stop Sign","b":"1F6D1","j":["octagonal","sign","stop"]},"construction":{"a":"Construction","b":"1F6A7","j":["barrier","wip","progress","caution","warning"]},"anchor":{"a":"Anchor","b":"2693","j":["ship","tool","ferry","sea","boat"]},"sailboat":{"a":"Sailboat","b":"26F5","j":["boat","resort","sea","yacht","ship","summer","transportation","water","sailing"]},"canoe":{"a":"Canoe","b":"1F6F6","j":["boat","paddle","water","ship"]},"speedboat":{"a":"Speedboat","b":"1F6A4","j":["boat","ship","transportation","vehicle","summer"]},"passenger-ship":{"a":"Passenger Ship","b":"1F6F3","j":["passenger","ship","yacht","cruise","ferry"]},"ferry":{"a":"Ferry","b":"26F4","j":["boat","passenger","ship","yacht"]},"motor-boat":{"a":"Motor Boat","b":"1F6E5","j":["boat","motorboat","ship"]},"ship":{"a":"Ship","b":"1F6A2","j":["boat","passenger","transportation","titanic","deploy"]},"airplane":{"a":"Airplane","b":"2708","j":["aeroplane","vehicle","transportation","flight","fly"]},"small-airplane":{"a":"Small Airplane","b":"1F6E9","j":["aeroplane","airplane","flight","transportation","fly","vehicle"]},"airplane-departure":{"a":"Airplane Departure","b":"1F6EB","j":["aeroplane","airplane","check-in","departure","departures","airport","flight","landing"]},"airplane-arrival":{"a":"Airplane Arrival","b":"1F6EC","j":["aeroplane","airplane","arrivals","arriving","landing","airport","flight","boarding"]},"parachute":{"a":"Parachute","b":"1FA82","j":["hang-glide","parasail","skydive","fly","glide"]},"seat":{"a":"Seat","b":"1F4BA","j":["chair","sit","airplane","transport","bus","flight","fly"]},"helicopter":{"a":"Helicopter","b":"1F681","j":["vehicle","transportation","fly"]},"suspension-railway":{"a":"Suspension Railway","b":"1F69F","j":["railway","suspension","vehicle","transportation"]},"mountain-cableway":{"a":"Mountain Cableway","b":"1F6A0","j":["cable","gondola","mountain","transportation","vehicle","ski"]},"aerial-tramway":{"a":"Aerial Tramway","b":"1F6A1","j":["aerial","cable","car","gondola","tramway","transportation","vehicle","ski"]},"satellite":{"a":"Satellite","b":"1F6F0","j":["space","communication","gps","orbit","spaceflight","NASA","ISS"]},"rocket":{"a":"Rocket","b":"1F680","j":["space","launch","ship","staffmode","NASA","outer space","outer_space","fly"]},"flying-saucer":{"a":"Flying Saucer","b":"1F6F8","j":["UFO","transportation","vehicle","ufo"]},"bellhop-bell":{"a":"Bellhop Bell","b":"1F6CE","j":["bell","bellhop","hotel","service"]},"luggage":{"a":"Luggage","b":"1F9F3","j":["packing","travel"]},"hourglass-done":{"a":"Hourglass Done","b":"231B","j":["sand","timer","time","clock","oldschool","limit","exam","quiz","test"]},"hourglass-not-done":{"a":"Hourglass Not Done","b":"23F3","j":["hourglass","sand","timer","oldschool","time","countdown"]},"watch":{"a":"Watch","b":"231A","j":["clock","time","accessories"]},"alarm-clock":{"a":"Alarm Clock","b":"23F0","j":["alarm","clock","time","wake"]},"stopwatch":{"a":"Stopwatch","b":"23F1","j":["clock","time","deadline"]},"timer-clock":{"a":"Timer Clock","b":"23F2","j":["clock","timer","alarm"]},"mantelpiece-clock":{"a":"Mantelpiece Clock","b":"1F570","j":["clock","time"]},"twelve-oclock":{"a":"Twelve O’Clock","b":"1F55B","j":["00","12","12:00","clock","o’clock","twelve","twelve_o_clock","time","noon","midnight","midday","late","early","schedule"]},"twelvethirty":{"a":"Twelve-Thirty","b":"1F567","j":["12","12:30","clock","thirty","twelve","twelve-thirty","twelve_thirty","time","late","early","schedule"]},"one-oclock":{"a":"One O’Clock","b":"1F550","j":["00","1","1:00","clock","o’clock","one","one_o_clock","time","late","early","schedule"]},"onethirty":{"a":"One-Thirty","b":"1F55C","j":["1","1:30","clock","one","one-thirty","thirty","one_thirty","time","late","early","schedule"]},"two-oclock":{"a":"Two O’Clock","b":"1F551","j":["00","2","2:00","clock","o’clock","two","two_o_clock","time","late","early","schedule"]},"twothirty":{"a":"Two-Thirty","b":"1F55D","j":["2","2:30","clock","thirty","two","two-thirty","two_thirty","time","late","early","schedule"]},"three-oclock":{"a":"Three O’Clock","b":"1F552","j":["00","3","3:00","clock","o’clock","three","three_o_clock","time","late","early","schedule"]},"threethirty":{"a":"Three-Thirty","b":"1F55E","j":["3","3:30","clock","thirty","three","three-thirty","three_thirty","time","late","early","schedule"]},"four-oclock":{"a":"Four O’Clock","b":"1F553","j":["00","4","4:00","clock","four","o’clock","four_o_clock","time","late","early","schedule"]},"fourthirty":{"a":"Four-Thirty","b":"1F55F","j":["4","4:30","clock","four","four-thirty","thirty","four_thirty","time","late","early","schedule"]},"five-oclock":{"a":"Five O’Clock","b":"1F554","j":["00","5","5:00","clock","five","o’clock","five_o_clock","time","late","early","schedule"]},"fivethirty":{"a":"Five-Thirty","b":"1F560","j":["5","5:30","clock","five","five-thirty","thirty","five_thirty","time","late","early","schedule"]},"six-oclock":{"a":"Six O’Clock","b":"1F555","j":["00","6","6:00","clock","o’clock","six","six_o_clock","time","late","early","schedule","dawn","dusk"]},"sixthirty":{"a":"Six-Thirty","b":"1F561","j":["6","6:30","clock","six","six-thirty","thirty","six_thirty","time","late","early","schedule"]},"seven-oclock":{"a":"Seven O’Clock","b":"1F556","j":["00","7","7:00","clock","o’clock","seven","seven_o_clock","time","late","early","schedule"]},"seventhirty":{"a":"Seven-Thirty","b":"1F562","j":["7","7:30","clock","seven","seven-thirty","thirty","seven_thirty","time","late","early","schedule"]},"eight-oclock":{"a":"Eight O’Clock","b":"1F557","j":["00","8","8:00","clock","eight","o’clock","eight_o_clock","time","late","early","schedule"]},"eightthirty":{"a":"Eight-Thirty","b":"1F563","j":["8","8:30","clock","eight","eight-thirty","thirty","eight_thirty","time","late","early","schedule"]},"nine-oclock":{"a":"Nine O’Clock","b":"1F558","j":["00","9","9:00","clock","nine","o’clock","nine_o_clock","time","late","early","schedule"]},"ninethirty":{"a":"Nine-Thirty","b":"1F564","j":["9","9:30","clock","nine","nine-thirty","thirty","nine_thirty","time","late","early","schedule"]},"ten-oclock":{"a":"Ten O’Clock","b":"1F559","j":["00","10","10:00","clock","o’clock","ten","ten_o_clock","time","late","early","schedule"]},"tenthirty":{"a":"Ten-Thirty","b":"1F565","j":["10","10:30","clock","ten","ten-thirty","thirty","ten_thirty","time","late","early","schedule"]},"eleven-oclock":{"a":"Eleven O’Clock","b":"1F55A","j":["00","11","11:00","clock","eleven","o’clock","eleven_o_clock","time","late","early","schedule"]},"eleventhirty":{"a":"Eleven-Thirty","b":"1F566","j":["11","11:30","clock","eleven","eleven-thirty","thirty","eleven_thirty","time","late","early","schedule"]},"new-moon":{"a":"New Moon","b":"1F311","j":["dark","moon","nature","twilight","planet","space","night","evening","sleep"]},"waxing-crescent-moon":{"a":"Waxing Crescent Moon","b":"1F312","j":["crescent","moon","waxing","nature","twilight","planet","space","night","evening","sleep"]},"first-quarter-moon":{"a":"First Quarter Moon","b":"1F313","j":["moon","quarter","nature","twilight","planet","space","night","evening","sleep"]},"waxing-gibbous-moon":{"a":"Waxing Gibbous Moon","b":"1F314","j":["gibbous","moon","waxing","nature","night","sky","gray","twilight","planet","space","evening","sleep"]},"full-moon":{"a":"Full Moon","b":"1F315","j":["full","moon","nature","yellow","twilight","planet","space","night","evening","sleep"]},"waning-gibbous-moon":{"a":"Waning Gibbous Moon","b":"1F316","j":["gibbous","moon","waning","nature","twilight","planet","space","night","evening","sleep","waxing_gibbous_moon"]},"last-quarter-moon":{"a":"Last Quarter Moon","b":"1F317","j":["moon","quarter","nature","twilight","planet","space","night","evening","sleep"]},"waning-crescent-moon":{"a":"Waning Crescent Moon","b":"1F318","j":["crescent","moon","waning","nature","twilight","planet","space","night","evening","sleep"]},"crescent-moon":{"a":"Crescent Moon","b":"1F319","j":["crescent","moon","night","sleep","sky","evening","magic"]},"new-moon-face":{"a":"New Moon Face","b":"1F31A","j":["face","moon","nature","twilight","planet","space","night","evening","sleep"]},"first-quarter-moon-face":{"a":"First Quarter Moon Face","b":"1F31B","j":["face","moon","quarter","nature","twilight","planet","space","night","evening","sleep"]},"last-quarter-moon-face":{"a":"Last Quarter Moon Face","b":"1F31C","j":["face","moon","quarter","nature","twilight","planet","space","night","evening","sleep"]},"thermometer":{"a":"Thermometer","b":"1F321","j":["weather","temperature","hot","cold"]},"sun":{"a":"Sun","b":"2600","j":["bright","rays","sunny","weather","nature","brightness","summer","beach","spring"]},"full-moon-face":{"a":"Full Moon Face","b":"1F31D","j":["bright","face","full","moon","nature","twilight","planet","space","night","evening","sleep"]},"sun-with-face":{"a":"Sun with Face","b":"1F31E","j":["bright","face","sun","nature","morning","sky"]},"ringed-planet":{"a":"Ringed Planet","b":"1FA90","j":["saturn","saturnine","outerspace"]},"star":{"a":"Star","b":"2B50","j":["night","yellow"]},"glowing-star":{"a":"Glowing Star","b":"1F31F","j":["glittery","glow","shining","sparkle","star","night","awesome","good","magic"]},"shooting-star":{"a":"Shooting Star","b":"1F320","j":["falling","shooting","star","night","photo"]},"milky-way":{"a":"Milky Way","b":"1F30C","j":["space","photo","stars"]},"cloud":{"a":"Cloud","b":"2601","j":["weather","sky"]},"sun-behind-cloud":{"a":"Sun Behind Cloud","b":"26C5","j":["cloud","sun","weather","nature","cloudy","morning","fall","spring"]},"cloud-with-lightning-and-rain":{"a":"Cloud with Lightning and Rain","b":"26C8","j":["cloud","rain","thunder","weather","lightning"]},"sun-behind-small-cloud":{"a":"Sun Behind Small Cloud","b":"1F324","j":["cloud","sun","weather"]},"sun-behind-large-cloud":{"a":"Sun Behind Large Cloud","b":"1F325","j":["cloud","sun","weather"]},"sun-behind-rain-cloud":{"a":"Sun Behind Rain Cloud","b":"1F326","j":["cloud","rain","sun","weather"]},"cloud-with-rain":{"a":"Cloud with Rain","b":"1F327","j":["cloud","rain","weather"]},"cloud-with-snow":{"a":"Cloud with Snow","b":"1F328","j":["cloud","cold","snow","weather"]},"cloud-with-lightning":{"a":"Cloud with Lightning","b":"1F329","j":["cloud","lightning","weather","thunder"]},"tornado":{"a":"Tornado","b":"1F32A","j":["cloud","whirlwind","weather","cyclone","twister"]},"fog":{"a":"Fog","b":"1F32B","j":["cloud","weather"]},"wind-face":{"a":"Wind Face","b":"1F32C","j":["blow","cloud","face","wind","gust","air"]},"cyclone":{"a":"Cyclone","b":"1F300","j":["dizzy","hurricane","twister","typhoon","weather","swirl","blue","cloud","vortex","spiral","whirlpool","spin","tornado"]},"rainbow":{"a":"Rainbow","b":"1F308","j":["rain","nature","happy","unicorn_face","photo","sky","spring"]},"closed-umbrella":{"a":"Closed Umbrella","b":"1F302","j":["clothing","rain","umbrella","weather","drizzle"]},"umbrella":{"a":"Umbrella","b":"2602","j":["clothing","rain","weather","spring"]},"umbrella-with-rain-drops":{"a":"Umbrella with Rain Drops","b":"2614","j":["clothing","drop","rain","umbrella","rainy","weather","spring"]},"umbrella-on-ground":{"a":"Umbrella on Ground","b":"26F1","j":["rain","sun","umbrella","weather","summer"]},"high-voltage":{"a":"High Voltage","b":"26A1","j":["danger","electric","lightning","voltage","zap","thunder","weather","lightning bolt","fast"]},"snowflake":{"a":"Snowflake","b":"2744","j":["cold","snow","winter","season","weather","christmas","xmas"]},"snowman":{"a":"Snowman","b":"2603","j":["cold","snow","winter","season","weather","christmas","xmas","frozen"]},"snowman-without-snow":{"a":"Snowman Without Snow","b":"26C4","j":["cold","snow","snowman","winter","season","weather","christmas","xmas","frozen","without_snow"]},"comet":{"a":"Comet","b":"2604","j":["space"]},"fire":{"a":"Fire","b":"1F525","j":["flame","tool","hot","cook"]},"droplet":{"a":"Droplet","b":"1F4A7","j":["cold","comic","drop","sweat","water","drip","faucet","spring"]},"water-wave":{"a":"Water Wave","b":"1F30A","j":["ocean","water","wave","sea","nature","tsunami","disaster"]},"jackolantern":{"a":"Jack-O-Lantern","b":"1F383","j":["celebration","halloween","jack","jack-o-lantern","lantern","jack_o_lantern","light","pumpkin","creepy","fall"]},"christmas-tree":{"a":"Christmas Tree","b":"1F384","j":["celebration","Christmas","tree","festival","vacation","december","xmas"]},"fireworks":{"a":"Fireworks","b":"1F386","j":["celebration","photo","festival","carnival","congratulations"]},"sparkler":{"a":"Sparkler","b":"1F387","j":["celebration","fireworks","sparkle","stars","night","shine"]},"firecracker":{"a":"Firecracker","b":"1F9E8","j":["dynamite","explosive","fireworks","boom","explode","explosion"]},"sparkles":{"a":"Sparkles","b":"2728","j":["*","sparkle","star","stars","shine","shiny","cool","awesome","good","magic"]},"balloon":{"a":"Balloon","b":"1F388","j":["celebration","party","birthday","circus"]},"party-popper":{"a":"Party Popper","b":"1F389","j":["celebration","party","popper","tada","congratulations","birthday","magic","circus"]},"confetti-ball":{"a":"Confetti Ball","b":"1F38A","j":["ball","celebration","confetti","festival","party","birthday","circus"]},"tanabata-tree":{"a":"Tanabata Tree","b":"1F38B","j":["banner","celebration","Japanese","tree","plant","nature","branch","summer"]},"pine-decoration":{"a":"Pine Decoration","b":"1F38D","j":["bamboo","celebration","Japanese","pine","plant","nature","vegetable","panda"]},"japanese-dolls":{"a":"Japanese Dolls","b":"1F38E","j":["celebration","doll","festival","Japanese","Japanese dolls","japanese","toy","kimono"]},"carp-streamer":{"a":"Carp Streamer","b":"1F38F","j":["carp","celebration","streamer","fish","japanese","koinobori","banner"]},"wind-chime":{"a":"Wind Chime","b":"1F390","j":["bell","celebration","chime","wind","nature","ding","spring"]},"moon-viewing-ceremony":{"a":"Moon Viewing Ceremony","b":"1F391","j":["celebration","ceremony","moon","photo","japan","asia","tsukimi"]},"red-envelope":{"a":"Red Envelope","b":"1F9E7","j":["gift","good luck","hóngbāo","lai see","money"]},"ribbon":{"a":"Ribbon","b":"1F380","j":["celebration","decoration","pink","girl","bowtie"]},"wrapped-gift":{"a":"Wrapped Gift","b":"1F381","j":["box","celebration","gift","present","wrapped","birthday","christmas","xmas"]},"reminder-ribbon":{"a":"Reminder Ribbon","b":"1F397","j":["celebration","reminder","ribbon","sports","cause","support","awareness"]},"admission-tickets":{"a":"Admission Tickets","b":"1F39F","j":["admission","ticket","sports","concert","entrance"]},"ticket":{"a":"Ticket","b":"1F3AB","j":["admission","event","concert","pass"]},"military-medal":{"a":"Military Medal","b":"1F396","j":["celebration","medal","military","award","winning","army"]},"trophy":{"a":"Trophy","b":"1F3C6","j":["prize","win","award","contest","place","ftw","ceremony"]},"sports-medal":{"a":"Sports Medal","b":"1F3C5","j":["medal","award","winning"]},"1st-place-medal":{"a":"1st Place Medal","b":"1F947","j":["first","gold","medal","award","winning"]},"2nd-place-medal":{"a":"2nd Place Medal","b":"1F948","j":["medal","second","silver","award"]},"3rd-place-medal":{"a":"3rd Place Medal","b":"1F949","j":["bronze","medal","third","award"]},"soccer-ball":{"a":"Soccer Ball","b":"26BD","j":["ball","football","soccer","sports"]},"baseball":{"a":"Baseball","b":"26BE","j":["ball","sports","balls"]},"softball":{"a":"Softball","b":"1F94E","j":["ball","glove","underarm","sports","balls"]},"basketball":{"a":"Basketball","b":"1F3C0","j":["ball","hoop","sports","balls","NBA"]},"volleyball":{"a":"Volleyball","b":"1F3D0","j":["ball","game","sports","balls"]},"american-football":{"a":"American Football","b":"1F3C8","j":["american","ball","football","sports","balls","NFL"]},"rugby-football":{"a":"Rugby Football","b":"1F3C9","j":["ball","football","rugby","sports","team"]},"tennis":{"a":"Tennis","b":"1F3BE","j":["ball","racquet","sports","balls","green"]},"flying-disc":{"a":"Flying Disc","b":"1F94F","j":["ultimate","sports","frisbee"]},"bowling":{"a":"Bowling","b":"1F3B3","j":["ball","game","sports","fun","play"]},"cricket-game":{"a":"Cricket Game","b":"1F3CF","j":["ball","bat","game","sports"]},"field-hockey":{"a":"Field Hockey","b":"1F3D1","j":["ball","field","game","hockey","stick","sports"]},"ice-hockey":{"a":"Ice Hockey","b":"1F3D2","j":["game","hockey","ice","puck","stick","sports"]},"lacrosse":{"a":"Lacrosse","b":"1F94D","j":["ball","goal","stick","sports"]},"ping-pong":{"a":"Ping Pong","b":"1F3D3","j":["ball","bat","game","paddle","table tennis","sports","pingpong"]},"badminton":{"a":"Badminton","b":"1F3F8","j":["birdie","game","racquet","shuttlecock","sports"]},"boxing-glove":{"a":"Boxing Glove","b":"1F94A","j":["boxing","glove","sports","fighting"]},"martial-arts-uniform":{"a":"Martial Arts Uniform","b":"1F94B","j":["judo","karate","martial arts","taekwondo","uniform"]},"goal-net":{"a":"Goal Net","b":"1F945","j":["goal","net","sports"]},"flag-in-hole":{"a":"Flag in Hole","b":"26F3","j":["golf","hole","sports","business","flag","summer"]},"ice-skate":{"a":"Ice Skate","b":"26F8","j":["ice","skate","sports"]},"fishing-pole":{"a":"Fishing Pole","b":"1F3A3","j":["fish","pole","food","hobby","summer"]},"diving-mask":{"a":"Diving Mask","b":"1F93F","j":["diving","scuba","snorkeling","sport","ocean"]},"running-shirt":{"a":"Running Shirt","b":"1F3BD","j":["athletics","running","sash","shirt","play","pageant"]},"skis":{"a":"Skis","b":"1F3BF","j":["ski","snow","sports","winter","cold"]},"sled":{"a":"Sled","b":"1F6F7","j":["sledge","sleigh","luge","toboggan"]},"curling-stone":{"a":"Curling Stone","b":"1F94C","j":["game","rock","sports"]},"bullseye":{"a":"Bullseye","b":"1F3AF","j":["dart","direct hit","game","hit","target","direct_hit","play","bar"]},"yoyo":{"a":"Yo-Yo","b":"1FA80","j":["fluctuate","toy","yo-yo","yo_yo"]},"kite":{"a":"Kite","b":"1FA81","j":["fly","soar","wind"]},"pool-8-ball":{"a":"Pool 8 Ball","b":"1F3B1","j":["8","ball","billiard","eight","game","pool","hobby","luck","magic"]},"crystal-ball":{"a":"Crystal Ball","b":"1F52E","j":["ball","crystal","fairy tale","fantasy","fortune","tool","disco","party","magic","circus","fortune_teller"]},"magic-wand":{"a":"Magic Wand","b":"1FA84","j":["magic","witch","wizard","supernature","power"]},"nazar-amulet":{"a":"Nazar Amulet","b":"1F9FF","j":["bead","charm","evil-eye","nazar","talisman"]},"video-game":{"a":"Video Game","b":"1F3AE","j":["controller","game","play","console","PS4"]},"joystick":{"a":"Joystick","b":"1F579","j":["game","video game","play"]},"slot-machine":{"a":"Slot Machine","b":"1F3B0","j":["game","slot","bet","gamble","vegas","fruit machine","luck","casino"]},"game-die":{"a":"Game Die","b":"1F3B2","j":["dice","die","game","random","tabletop","play","luck"]},"puzzle-piece":{"a":"Puzzle Piece","b":"1F9E9","j":["clue","interlocking","jigsaw","piece","puzzle"]},"teddy-bear":{"a":"Teddy Bear","b":"1F9F8","j":["plaything","plush","stuffed","toy"]},"piata":{"a":"Piñata","b":"1FA85","j":["celebration","party","piñata","pinata","mexico","candy"]},"nesting-dolls":{"a":"Nesting Dolls","b":"1FA86","j":["doll","nesting","russia","matryoshka","toy"]},"spade-suit":{"a":"Spade Suit","b":"2660","j":["card","game","poker","cards","suits","magic"]},"heart-suit":{"a":"Heart Suit","b":"2665","j":["card","game","poker","cards","magic","suits"]},"diamond-suit":{"a":"Diamond Suit","b":"2666","j":["card","game","poker","cards","magic","suits"]},"club-suit":{"a":"Club Suit","b":"2663","j":["card","game","poker","cards","magic","suits"]},"chess-pawn":{"a":"Chess Pawn","b":"265F","j":["chess","dupe","expendable"]},"joker":{"a":"Joker","b":"1F0CF","j":["card","game","wildcard","poker","cards","play","magic"]},"mahjong-red-dragon":{"a":"Mahjong Red Dragon","b":"1F004","j":["game","mahjong","red","play","chinese","kanji"]},"flower-playing-cards":{"a":"Flower Playing Cards","b":"1F3B4","j":["card","flower","game","Japanese","playing","sunset","red"]},"performing-arts":{"a":"Performing Arts","b":"1F3AD","j":["art","mask","performing","theater","theatre","acting","drama"]},"framed-picture":{"a":"Framed Picture","b":"1F5BC","j":["art","frame","museum","painting","picture","photography"]},"artist-palette":{"a":"Artist Palette","b":"1F3A8","j":["art","museum","painting","palette","design","paint","draw","colors"]},"thread":{"a":"Thread","b":"1F9F5","j":["needle","sewing","spool","string"]},"sewing-needle":{"a":"Sewing Needle","b":"1FAA1","j":["embroidery","needle","sewing","stitches","sutures","tailoring"]},"yarn":{"a":"Yarn","b":"1F9F6","j":["ball","crochet","knit"]},"knot":{"a":"Knot","b":"1FAA2","j":["rope","tangled","tie","twine","twist","scout"]},"glasses":{"a":"Glasses","b":"1F453","j":["clothing","eye","eyeglasses","eyewear","fashion","accessories","eyesight","nerdy","dork","geek"]},"sunglasses":{"a":"Sunglasses","b":"1F576","j":["dark","eye","eyewear","glasses","face","cool","accessories"]},"goggles":{"a":"Goggles","b":"1F97D","j":["eye protection","swimming","welding","eyes","protection","safety"]},"lab-coat":{"a":"Lab Coat","b":"1F97C","j":["doctor","experiment","scientist","chemist"]},"safety-vest":{"a":"Safety Vest","b":"1F9BA","j":["emergency","safety","vest","protection"]},"necktie":{"a":"Necktie","b":"1F454","j":["clothing","tie","shirt","suitup","formal","fashion","cloth","business"]},"tshirt":{"a":"T-Shirt","b":"1F455","j":["clothing","shirt","t-shirt","t_shirt","fashion","cloth","casual","tee"]},"jeans":{"a":"Jeans","b":"1F456","j":["clothing","pants","trousers","fashion","shopping"]},"scarf":{"a":"Scarf","b":"1F9E3","j":["neck","winter","clothes"]},"gloves":{"a":"Gloves","b":"1F9E4","j":["hand","hands","winter","clothes"]},"coat":{"a":"Coat","b":"1F9E5","j":["jacket"]},"socks":{"a":"Socks","b":"1F9E6","j":["stocking","stockings","clothes"]},"dress":{"a":"Dress","b":"1F457","j":["clothing","clothes","fashion","shopping"]},"kimono":{"a":"Kimono","b":"1F458","j":["clothing","dress","fashion","women","female","japanese"]},"sari":{"a":"Sari","b":"1F97B","j":["clothing","dress"]},"onepiece-swimsuit":{"a":"One-Piece Swimsuit","b":"1FA71","j":["bathing suit","one-piece swimsuit","one_piece_swimsuit","fashion"]},"briefs":{"a":"Briefs","b":"1FA72","j":["bathing suit","one-piece","swimsuit","underwear","clothing"]},"shorts":{"a":"Shorts","b":"1FA73","j":["bathing suit","pants","underwear","clothing"]},"bikini":{"a":"Bikini","b":"1F459","j":["clothing","swim","swimming","female","woman","girl","fashion","beach","summer"]},"womans-clothes":{"a":"Woman’S Clothes","b":"1F45A","j":["clothing","woman","woman’s clothes","woman_s_clothes","fashion","shopping_bags","female"]},"purse":{"a":"Purse","b":"1F45B","j":["clothing","coin","fashion","accessories","money","sales","shopping"]},"handbag":{"a":"Handbag","b":"1F45C","j":["bag","clothing","purse","fashion","accessory","accessories","shopping"]},"clutch-bag":{"a":"Clutch Bag","b":"1F45D","j":["bag","clothing","pouch","accessories","shopping"]},"shopping-bags":{"a":"Shopping Bags","b":"1F6CD","j":["bag","hotel","shopping","mall","buy","purchase"]},"backpack":{"a":"Backpack","b":"1F392","j":["bag","rucksack","satchel","school","student","education"]},"thong-sandal":{"a":"Thong Sandal","b":"1FA74","j":["beach sandals","sandals","thong sandals","thongs","zōri","footwear","summer"]},"mans-shoe":{"a":"Man’S Shoe","b":"1F45E","j":["clothing","man","man’s shoe","shoe","man_s_shoe","fashion","male"]},"running-shoe":{"a":"Running Shoe","b":"1F45F","j":["athletic","clothing","shoe","sneaker","shoes","sports","sneakers"]},"hiking-boot":{"a":"Hiking Boot","b":"1F97E","j":["backpacking","boot","camping","hiking"]},"flat-shoe":{"a":"Flat Shoe","b":"1F97F","j":["ballet flat","slip-on","slipper","ballet"]},"highheeled-shoe":{"a":"High-Heeled Shoe","b":"1F460","j":["clothing","heel","high-heeled shoe","shoe","woman","high_heeled_shoe","fashion","shoes","female","pumps","stiletto"]},"womans-sandal":{"a":"Woman’S Sandal","b":"1F461","j":["clothing","sandal","shoe","woman","woman’s sandal","woman_s_sandal","shoes","fashion","flip flops"]},"ballet-shoes":{"a":"Ballet Shoes","b":"1FA70","j":["ballet","dance"]},"womans-boot":{"a":"Woman’S Boot","b":"1F462","j":["boot","clothing","shoe","woman","woman’s boot","woman_s_boot","shoes","fashion"]},"crown":{"a":"Crown","b":"1F451","j":["clothing","king","queen","kod","leader","royalty","lord"]},"womans-hat":{"a":"Woman’S Hat","b":"1F452","j":["clothing","hat","woman","woman’s hat","woman_s_hat","fashion","accessories","female","lady","spring"]},"top-hat":{"a":"Top Hat","b":"1F3A9","j":["clothing","hat","top","tophat","magic","gentleman","classy","circus"]},"graduation-cap":{"a":"Graduation Cap","b":"1F393","j":["cap","celebration","clothing","graduation","hat","school","college","degree","university","legal","learn","education"]},"billed-cap":{"a":"Billed Cap","b":"1F9E2","j":["baseball cap","cap","baseball"]},"military-helmet":{"a":"Military Helmet","b":"1FA96","j":["army","helmet","military","soldier","warrior","protection"]},"rescue-workers-helmet":{"a":"Rescue Worker’S Helmet","b":"26D1","j":["aid","cross","face","hat","helmet","rescue worker’s helmet","rescue_worker_s_helmet","construction","build"]},"prayer-beads":{"a":"Prayer Beads","b":"1F4FF","j":["beads","clothing","necklace","prayer","religion","dhikr","religious"]},"lipstick":{"a":"Lipstick","b":"1F484","j":["cosmetics","makeup","female","girl","fashion","woman"]},"ring":{"a":"Ring","b":"1F48D","j":["diamond","wedding","propose","marriage","valentines","fashion","jewelry","gem","engagement"]},"gem-stone":{"a":"Gem Stone","b":"1F48E","j":["diamond","gem","jewel","blue","ruby","jewelry"]},"muted-speaker":{"a":"Muted Speaker","b":"1F507","j":["mute","quiet","silent","speaker","sound","volume","silence"]},"speaker-low-volume":{"a":"Speaker Low Volume","b":"1F508","j":["soft","sound","volume","silence","broadcast"]},"speaker-medium-volume":{"a":"Speaker Medium Volume","b":"1F509","j":["medium","volume","speaker","broadcast"]},"speaker-high-volume":{"a":"Speaker High Volume","b":"1F50A","j":["loud","volume","noise","noisy","speaker","broadcast"]},"loudspeaker":{"a":"Loudspeaker","b":"1F4E2","j":["loud","public address","volume","sound"]},"megaphone":{"a":"Megaphone","b":"1F4E3","j":["cheering","sound","speaker","volume"]},"postal-horn":{"a":"Postal Horn","b":"1F4EF","j":["horn","post","postal","instrument","music"]},"bell":{"a":"Bell","b":"1F514","j":["sound","notification","christmas","xmas","chime"]},"bell-with-slash":{"a":"Bell with Slash","b":"1F515","j":["bell","forbidden","mute","quiet","silent","sound","volume"]},"musical-score":{"a":"Musical Score","b":"1F3BC","j":["music","score","treble","clef","compose"]},"musical-note":{"a":"Musical Note","b":"1F3B5","j":["music","note","score","tone","sound"]},"musical-notes":{"a":"Musical Notes","b":"1F3B6","j":["music","note","notes","score"]},"studio-microphone":{"a":"Studio Microphone","b":"1F399","j":["mic","microphone","music","studio","sing","recording","artist","talkshow"]},"level-slider":{"a":"Level Slider","b":"1F39A","j":["level","music","slider","scale"]},"control-knobs":{"a":"Control Knobs","b":"1F39B","j":["control","knobs","music","dial"]},"microphone":{"a":"Microphone","b":"1F3A4","j":["karaoke","mic","sound","music","PA","sing","talkshow"]},"headphone":{"a":"Headphone","b":"1F3A7","j":["earbud","music","score","gadgets"]},"radio":{"a":"Radio","b":"1F4FB","j":["video","communication","music","podcast","program"]},"saxophone":{"a":"Saxophone","b":"1F3B7","j":["instrument","music","sax","jazz","blues"]},"accordion":{"a":"Accordion","b":"1FA97","j":["concertina","squeeze box","music"]},"guitar":{"a":"Guitar","b":"1F3B8","j":["instrument","music"]},"musical-keyboard":{"a":"Musical Keyboard","b":"1F3B9","j":["instrument","keyboard","music","piano","compose"]},"trumpet":{"a":"Trumpet","b":"1F3BA","j":["instrument","music","brass"]},"violin":{"a":"Violin","b":"1F3BB","j":["instrument","music","orchestra","symphony"]},"banjo":{"a":"Banjo","b":"1FA95","j":["music","stringed","instructment"]},"drum":{"a":"Drum","b":"1F941","j":["drumsticks","music","instrument","snare"]},"long-drum":{"a":"Long Drum","b":"1FA98","j":["beat","conga","drum","rhythm","music"]},"mobile-phone":{"a":"Mobile Phone","b":"1F4F1","j":["cell","mobile","phone","telephone","technology","apple","gadgets","dial"]},"mobile-phone-with-arrow":{"a":"Mobile Phone with Arrow","b":"1F4F2","j":["arrow","cell","mobile","phone","receive","iphone","incoming"]},"telephone":{"a":"Telephone","b":"260E","j":["phone","technology","communication","dial"]},"telephone-receiver":{"a":"Telephone Receiver","b":"1F4DE","j":["phone","receiver","telephone","technology","communication","dial"]},"pager":{"a":"Pager","b":"1F4DF","j":["bbcall","oldschool","90s"]},"fax-machine":{"a":"Fax Machine","b":"1F4E0","j":["fax","communication","technology"]},"battery":{"a":"Battery","b":"1F50B","j":["power","energy","sustain"]},"electric-plug":{"a":"Electric Plug","b":"1F50C","j":["electric","electricity","plug","charger","power"]},"laptop":{"a":"Laptop","b":"1F4BB","j":["computer","pc","personal","technology","screen","display","monitor"]},"desktop-computer":{"a":"Desktop Computer","b":"1F5A5","j":["computer","desktop","technology","computing","screen"]},"printer":{"a":"Printer","b":"1F5A8","j":["computer","paper","ink"]},"keyboard":{"a":"Keyboard","b":"2328","j":["computer","technology","type","input","text"]},"computer-mouse":{"a":"Computer Mouse","b":"1F5B1","j":["computer","click"]},"trackball":{"a":"Trackball","b":"1F5B2","j":["computer","technology","trackpad"]},"computer-disk":{"a":"Computer Disk","b":"1F4BD","j":["computer","disk","minidisk","optical","technology","record","data","90s"]},"floppy-disk":{"a":"Floppy Disk","b":"1F4BE","j":["computer","disk","floppy","oldschool","technology","save","90s","80s"]},"optical-disk":{"a":"Optical Disk","b":"1F4BF","j":["cd","computer","disk","optical","technology","dvd","disc","90s"]},"dvd":{"a":"Dvd","b":"1F4C0","j":["blu-ray","computer","disk","optical","cd","disc"]},"abacus":{"a":"Abacus","b":"1F9EE","j":["calculation"]},"movie-camera":{"a":"Movie Camera","b":"1F3A5","j":["camera","cinema","movie","film","record"]},"film-frames":{"a":"Film Frames","b":"1F39E","j":["cinema","film","frames","movie"]},"film-projector":{"a":"Film Projector","b":"1F4FD","j":["cinema","film","movie","projector","video","tape","record"]},"clapper-board":{"a":"Clapper Board","b":"1F3AC","j":["clapper","movie","film","record"]},"television":{"a":"Television","b":"1F4FA","j":["tv","video","technology","program","oldschool","show"]},"camera":{"a":"Camera","b":"1F4F7","j":["video","gadgets","photography"]},"camera-with-flash":{"a":"Camera with Flash","b":"1F4F8","j":["camera","flash","video","photography","gadgets"]},"video-camera":{"a":"Video Camera","b":"1F4F9","j":["camera","video","film","record"]},"videocassette":{"a":"Videocassette","b":"1F4FC","j":["tape","vhs","video","record","oldschool","90s","80s"]},"magnifying-glass-tilted-left":{"a":"Magnifying Glass Tilted Left","b":"1F50D","j":["glass","magnifying","search","tool","zoom","find","detective"]},"magnifying-glass-tilted-right":{"a":"Magnifying Glass Tilted Right","b":"1F50E","j":["glass","magnifying","search","tool","zoom","find","detective"]},"candle":{"a":"Candle","b":"1F56F","j":["light","fire","wax"]},"light-bulb":{"a":"Light Bulb","b":"1F4A1","j":["bulb","comic","electric","idea","light","electricity"]},"flashlight":{"a":"Flashlight","b":"1F526","j":["electric","light","tool","torch","dark","camping","sight","night"]},"red-paper-lantern":{"a":"Red Paper Lantern","b":"1F3EE","j":["bar","lantern","light","red","paper","halloween","spooky"]},"diya-lamp":{"a":"Diya Lamp","b":"1FA94","j":["diya","lamp","oil","lighting"]},"notebook-with-decorative-cover":{"a":"Notebook with Decorative Cover","b":"1F4D4","j":["book","cover","decorated","notebook","classroom","notes","record","paper","study"]},"closed-book":{"a":"Closed Book","b":"1F4D5","j":["book","closed","read","library","knowledge","textbook","learn"]},"open-book":{"a":"Open Book","b":"1F4D6","j":["book","open","read","library","knowledge","literature","learn","study"]},"green-book":{"a":"Green Book","b":"1F4D7","j":["book","green","read","library","knowledge","study"]},"blue-book":{"a":"Blue Book","b":"1F4D8","j":["blue","book","read","library","knowledge","learn","study"]},"orange-book":{"a":"Orange Book","b":"1F4D9","j":["book","orange","read","library","knowledge","textbook","study"]},"books":{"a":"Books","b":"1F4DA","j":["book","literature","library","study"]},"notebook":{"a":"Notebook","b":"1F4D3","j":["stationery","record","notes","paper","study"]},"ledger":{"a":"Ledger","b":"1F4D2","j":["notebook","notes","paper"]},"page-with-curl":{"a":"Page with Curl","b":"1F4C3","j":["curl","document","page","documents","office","paper"]},"scroll":{"a":"Scroll","b":"1F4DC","j":["paper","documents","ancient","history"]},"page-facing-up":{"a":"Page Facing Up","b":"1F4C4","j":["document","page","documents","office","paper","information"]},"newspaper":{"a":"Newspaper","b":"1F4F0","j":["news","paper","press","headline"]},"rolledup-newspaper":{"a":"Rolled-Up Newspaper","b":"1F5DE","j":["news","newspaper","paper","rolled","rolled-up newspaper","rolled_up_newspaper","press","headline"]},"bookmark-tabs":{"a":"Bookmark Tabs","b":"1F4D1","j":["bookmark","mark","marker","tabs","favorite","save","order","tidy"]},"bookmark":{"a":"Bookmark","b":"1F516","j":["mark","favorite","label","save"]},"label":{"a":"Label","b":"1F3F7","j":["sale","tag"]},"money-bag":{"a":"Money Bag","b":"1F4B0","j":["bag","dollar","money","moneybag","payment","coins","sale"]},"coin":{"a":"Coin","b":"1FA99","j":["gold","metal","money","silver","treasure","currency"]},"yen-banknote":{"a":"Yen Banknote","b":"1F4B4","j":["banknote","bill","currency","money","note","yen","sales","japanese","dollar"]},"dollar-banknote":{"a":"Dollar Banknote","b":"1F4B5","j":["banknote","bill","currency","dollar","money","note","sales"]},"euro-banknote":{"a":"Euro Banknote","b":"1F4B6","j":["banknote","bill","currency","euro","money","note","sales","dollar"]},"pound-banknote":{"a":"Pound Banknote","b":"1F4B7","j":["banknote","bill","currency","money","note","pound","british","sterling","sales","bills","uk","england"]},"money-with-wings":{"a":"Money with Wings","b":"1F4B8","j":["banknote","bill","fly","money","wings","dollar","bills","payment","sale"]},"credit-card":{"a":"Credit Card","b":"1F4B3","j":["card","credit","money","sales","dollar","bill","payment","shopping"]},"receipt":{"a":"Receipt","b":"1F9FE","j":["accounting","bookkeeping","evidence","proof","expenses"]},"chart-increasing-with-yen":{"a":"Chart Increasing with Yen","b":"1F4B9","j":["chart","graph","growth","money","yen","green-square","presentation","stats"]},"envelope":{"a":"Envelope","b":"2709","j":["email","letter","postal","inbox","communication"]},"email":{"a":"E-Mail","b":"1F4E7","j":["e-mail","letter","mail","e_mail","communication","inbox"]},"incoming-envelope":{"a":"Incoming Envelope","b":"1F4E8","j":["e-mail","email","envelope","incoming","letter","receive","inbox"]},"envelope-with-arrow":{"a":"Envelope with Arrow","b":"1F4E9","j":["arrow","e-mail","email","envelope","outgoing","communication"]},"outbox-tray":{"a":"Outbox Tray","b":"1F4E4","j":["box","letter","mail","outbox","sent","tray","inbox","email"]},"inbox-tray":{"a":"Inbox Tray","b":"1F4E5","j":["box","inbox","letter","mail","receive","tray","email","documents"]},"package":{"a":"Package","b":"1F4E6","j":["box","parcel","mail","gift","cardboard","moving"]},"closed-mailbox-with-raised-flag":{"a":"Closed Mailbox with Raised Flag","b":"1F4EB","j":["closed","mail","mailbox","postbox","email","inbox","communication"]},"closed-mailbox-with-lowered-flag":{"a":"Closed Mailbox with Lowered Flag","b":"1F4EA","j":["closed","lowered","mail","mailbox","postbox","email","communication","inbox"]},"open-mailbox-with-raised-flag":{"a":"Open Mailbox with Raised Flag","b":"1F4EC","j":["mail","mailbox","open","postbox","email","inbox","communication"]},"open-mailbox-with-lowered-flag":{"a":"Open Mailbox with Lowered Flag","b":"1F4ED","j":["lowered","mail","mailbox","open","postbox","email","inbox"]},"postbox":{"a":"Postbox","b":"1F4EE","j":["mail","mailbox","email","letter","envelope"]},"ballot-box-with-ballot":{"a":"Ballot Box with Ballot","b":"1F5F3","j":["ballot","box","election","vote"]},"pencil":{"a":"Pencil","b":"270F","j":["stationery","write","paper","writing","school","study"]},"black-nib":{"a":"Black Nib","b":"2712","j":["nib","pen","stationery","writing","write"]},"fountain-pen":{"a":"Fountain Pen","b":"1F58B","j":["fountain","pen","stationery","writing","write"]},"pen":{"a":"Pen","b":"1F58A","j":["ballpoint","stationery","writing","write"]},"paintbrush":{"a":"Paintbrush","b":"1F58C","j":["painting","drawing","creativity","art"]},"crayon":{"a":"Crayon","b":"1F58D","j":["drawing","creativity"]},"memo":{"a":"Memo","b":"1F4DD","j":["pencil","write","documents","stationery","paper","writing","legal","exam","quiz","test","study","compose"]},"briefcase":{"a":"Briefcase","b":"1F4BC","j":["business","documents","work","law","legal","job","career"]},"file-folder":{"a":"File Folder","b":"1F4C1","j":["file","folder","documents","business","office"]},"open-file-folder":{"a":"Open File Folder","b":"1F4C2","j":["file","folder","open","documents","load"]},"card-index-dividers":{"a":"Card Index Dividers","b":"1F5C2","j":["card","dividers","index","organizing","business","stationery"]},"calendar":{"a":"Calendar","b":"1F4C5","j":["date","schedule"]},"tearoff-calendar":{"a":"Tear-off Calendar","b":"1F4C6","j":["calendar","tear-off calendar","tear_off_calendar","schedule","date","planning"]},"spiral-notepad":{"a":"Spiral Notepad","b":"1F5D2","j":["note","pad","spiral","memo","stationery"]},"spiral-calendar":{"a":"Spiral Calendar","b":"1F5D3","j":["calendar","pad","spiral","date","schedule","planning"]},"card-index":{"a":"Card Index","b":"1F4C7","j":["card","index","rolodex","business","stationery"]},"chart-increasing":{"a":"Chart Increasing","b":"1F4C8","j":["chart","graph","growth","trend","upward","presentation","stats","recovery","business","economics","money","sales","good","success"]},"chart-decreasing":{"a":"Chart Decreasing","b":"1F4C9","j":["chart","down","graph","trend","presentation","stats","recession","business","economics","money","sales","bad","failure"]},"bar-chart":{"a":"Bar Chart","b":"1F4CA","j":["bar","chart","graph","presentation","stats"]},"clipboard":{"a":"Clipboard","b":"1F4CB","j":["stationery","documents"]},"pushpin":{"a":"Pushpin","b":"1F4CC","j":["pin","stationery","mark","here"]},"round-pushpin":{"a":"Round Pushpin","b":"1F4CD","j":["pin","pushpin","stationery","location","map","here"]},"paperclip":{"a":"Paperclip","b":"1F4CE","j":["documents","stationery"]},"linked-paperclips":{"a":"Linked Paperclips","b":"1F587","j":["link","paperclip","documents","stationery"]},"straight-ruler":{"a":"Straight Ruler","b":"1F4CF","j":["ruler","straight edge","stationery","calculate","length","math","school","drawing","architect","sketch"]},"triangular-ruler":{"a":"Triangular Ruler","b":"1F4D0","j":["ruler","set","triangle","stationery","math","architect","sketch"]},"scissors":{"a":"Scissors","b":"2702","j":["cutting","tool","stationery","cut"]},"card-file-box":{"a":"Card File Box","b":"1F5C3","j":["box","card","file","business","stationery"]},"file-cabinet":{"a":"File Cabinet","b":"1F5C4","j":["cabinet","file","filing","organizing"]},"wastebasket":{"a":"Wastebasket","b":"1F5D1","j":["bin","trash","rubbish","garbage","toss"]},"locked":{"a":"Locked","b":"1F512","j":["closed","security","password","padlock"]},"unlocked":{"a":"Unlocked","b":"1F513","j":["lock","open","unlock","privacy","security"]},"locked-with-pen":{"a":"Locked with Pen","b":"1F50F","j":["ink","lock","nib","pen","privacy","security","secret"]},"locked-with-key":{"a":"Locked with Key","b":"1F510","j":["closed","key","lock","secure","security","privacy"]},"key":{"a":"Key","b":"1F511","j":["lock","password","door"]},"old-key":{"a":"Old Key","b":"1F5DD","j":["clue","key","lock","old","door","password"]},"hammer":{"a":"Hammer","b":"1F528","j":["tool","tools","build","create"]},"axe":{"a":"Axe","b":"1FA93","j":["chop","hatchet","split","wood","tool","cut"]},"pick":{"a":"Pick","b":"26CF","j":["mining","tool","tools","dig"]},"hammer-and-pick":{"a":"Hammer and Pick","b":"2692","j":["hammer","pick","tool","tools","build","create"]},"hammer-and-wrench":{"a":"Hammer and Wrench","b":"1F6E0","j":["hammer","spanner","tool","wrench","tools","build","create"]},"dagger":{"a":"Dagger","b":"1F5E1","j":["knife","weapon"]},"crossed-swords":{"a":"Crossed Swords","b":"2694","j":["crossed","swords","weapon"]},"water-pistol":{"a":"Water Pistol","b":"1F52B","j":["gun","handgun","pistol","revolver","tool","water","weapon","violence"]},"boomerang":{"a":"Boomerang","b":"1FA83","j":["australia","rebound","repercussion","weapon"]},"bow-and-arrow":{"a":"Bow and Arrow","b":"1F3F9","j":["archer","arrow","bow","Sagittarius","zodiac","sports"]},"shield":{"a":"Shield","b":"1F6E1","j":["weapon","protection","security"]},"carpentry-saw":{"a":"Carpentry Saw","b":"1FA9A","j":["carpenter","lumber","saw","tool","cut","chop"]},"wrench":{"a":"Wrench","b":"1F527","j":["spanner","tool","tools","diy","ikea","fix","maintainer"]},"screwdriver":{"a":"Screwdriver","b":"1FA9B","j":["screw","tool","tools"]},"nut-and-bolt":{"a":"Nut and Bolt","b":"1F529","j":["bolt","nut","tool","handy","tools","fix"]},"gear":{"a":"Gear","b":"2699","j":["cog","cogwheel","tool"]},"clamp":{"a":"Clamp","b":"1F5DC","j":["compress","tool","vice"]},"balance-scale":{"a":"Balance Scale","b":"2696","j":["balance","justice","Libra","scale","zodiac","law","fairness","weight"]},"white-cane":{"a":"White Cane","b":"1F9AF","j":["accessibility","blind","probing_cane"]},"link":{"a":"Link","b":"1F517","j":["rings","url"]},"chains":{"a":"Chains","b":"26D3","j":["chain","lock","arrest"]},"hook":{"a":"Hook","b":"1FA9D","j":["catch","crook","curve","ensnare","selling point","tools"]},"toolbox":{"a":"Toolbox","b":"1F9F0","j":["chest","mechanic","tool","tools","diy","fix","maintainer"]},"magnet":{"a":"Magnet","b":"1F9F2","j":["attraction","horseshoe","magnetic"]},"ladder":{"a":"Ladder","b":"1FA9C","j":["climb","rung","step","tools"]},"alembic":{"a":"Alembic","b":"2697","j":["chemistry","tool","distilling","science","experiment"]},"test-tube":{"a":"Test Tube","b":"1F9EA","j":["chemist","chemistry","experiment","lab","science"]},"petri-dish":{"a":"Petri Dish","b":"1F9EB","j":["bacteria","biologist","biology","culture","lab"]},"dna":{"a":"Dna","b":"1F9EC","j":["biologist","evolution","gene","genetics","life"]},"microscope":{"a":"Microscope","b":"1F52C","j":["science","tool","laboratory","experiment","zoomin","study"]},"telescope":{"a":"Telescope","b":"1F52D","j":["science","tool","stars","space","zoom","astronomy"]},"satellite-antenna":{"a":"Satellite Antenna","b":"1F4E1","j":["antenna","dish","satellite","communication","future","radio","space"]},"syringe":{"a":"Syringe","b":"1F489","j":["medicine","needle","shot","sick","health","hospital","drugs","blood","doctor","nurse"]},"drop-of-blood":{"a":"Drop of Blood","b":"1FA78","j":["bleed","blood donation","injury","medicine","menstruation","period","hurt","harm","wound"]},"pill":{"a":"Pill","b":"1F48A","j":["doctor","medicine","sick","health","pharmacy","drug"]},"adhesive-bandage":{"a":"Adhesive Bandage","b":"1FA79","j":["bandage","heal"]},"stethoscope":{"a":"Stethoscope","b":"1FA7A","j":["doctor","heart","medicine","health"]},"door":{"a":"Door","b":"1F6AA","j":["house","entry","exit"]},"elevator":{"a":"Elevator","b":"1F6D7","j":["accessibility","hoist","lift"]},"mirror":{"a":"Mirror","b":"1FA9E","j":["reflection","reflector","speculum"]},"window":{"a":"Window","b":"1FA9F","j":["frame","fresh air","opening","transparent","view","scenery"]},"bed":{"a":"Bed","b":"1F6CF","j":["hotel","sleep","rest"]},"couch-and-lamp":{"a":"Couch and Lamp","b":"1F6CB","j":["couch","hotel","lamp","read","chill"]},"chair":{"a":"Chair","b":"1FA91","j":["seat","sit","furniture"]},"toilet":{"a":"Toilet","b":"1F6BD","j":["restroom","wc","washroom","bathroom","potty"]},"plunger":{"a":"Plunger","b":"1FAA0","j":["force cup","plumber","suction","toilet"]},"shower":{"a":"Shower","b":"1F6BF","j":["water","clean","bathroom"]},"bathtub":{"a":"Bathtub","b":"1F6C1","j":["bath","clean","shower","bathroom"]},"mouse-trap":{"a":"Mouse Trap","b":"1FAA4","j":["bait","mousetrap","snare","trap","cheese"]},"razor":{"a":"Razor","b":"1FA92","j":["sharp","shave","cut"]},"lotion-bottle":{"a":"Lotion Bottle","b":"1F9F4","j":["lotion","moisturizer","shampoo","sunscreen"]},"safety-pin":{"a":"Safety Pin","b":"1F9F7","j":["diaper","punk rock"]},"broom":{"a":"Broom","b":"1F9F9","j":["cleaning","sweeping","witch"]},"basket":{"a":"Basket","b":"1F9FA","j":["farming","laundry","picnic"]},"roll-of-paper":{"a":"Roll of Paper","b":"1F9FB","j":["paper towels","toilet paper","roll"]},"bucket":{"a":"Bucket","b":"1FAA3","j":["cask","pail","vat","water","container"]},"soap":{"a":"Soap","b":"1F9FC","j":["bar","bathing","cleaning","lather","soapdish"]},"toothbrush":{"a":"Toothbrush","b":"1FAA5","j":["bathroom","brush","clean","dental","hygiene","teeth"]},"sponge":{"a":"Sponge","b":"1F9FD","j":["absorbing","cleaning","porous"]},"fire-extinguisher":{"a":"Fire Extinguisher","b":"1F9EF","j":["extinguish","fire","quench"]},"shopping-cart":{"a":"Shopping Cart","b":"1F6D2","j":["cart","shopping","trolley"]},"cigarette":{"a":"Cigarette","b":"1F6AC","j":["smoking","kills","tobacco","joint","smoke"]},"coffin":{"a":"Coffin","b":"26B0","j":["death","vampire","dead","die","rip","graveyard","cemetery","casket","funeral","box"]},"headstone":{"a":"Headstone","b":"1FAA6","j":["cemetery","grave","graveyard","tombstone","death","rip"]},"funeral-urn":{"a":"Funeral Urn","b":"26B1","j":["ashes","death","funeral","urn","dead","die","rip"]},"moai":{"a":"Moai","b":"1F5FF","j":["face","moyai","statue","rock","easter island"]},"placard":{"a":"Placard","b":"1FAA7","j":["demonstration","picket","protest","sign","announcement"]},"atm-sign":{"a":"Atm Sign","b":"1F3E7","j":["atm","ATM sign","automated","bank","teller","money","sales","cash","blue-square","payment"]},"litter-in-bin-sign":{"a":"Litter in Bin Sign","b":"1F6AE","j":["litter","litter bin","blue-square","sign","human","info"]},"potable-water":{"a":"Potable Water","b":"1F6B0","j":["drinking","potable","water","blue-square","liquid","restroom","cleaning","faucet"]},"wheelchair-symbol":{"a":"Wheelchair Symbol","b":"267F","j":["access","blue-square","disabled","accessibility"]},"mens-room":{"a":"Men’S Room","b":"1F6B9","j":["lavatory","man","men’s room","restroom","wc","men_s_room","toilet","blue-square","gender","male"]},"womens-room":{"a":"Women’S Room","b":"1F6BA","j":["lavatory","restroom","wc","woman","women’s room","women_s_room","purple-square","female","toilet","loo","gender"]},"restroom":{"a":"Restroom","b":"1F6BB","j":["lavatory","WC","blue-square","toilet","refresh","wc","gender"]},"baby-symbol":{"a":"Baby Symbol","b":"1F6BC","j":["baby","changing","orange-square","child"]},"water-closet":{"a":"Water Closet","b":"1F6BE","j":["closet","lavatory","restroom","water","wc","toilet","blue-square"]},"passport-control":{"a":"Passport Control","b":"1F6C2","j":["control","passport","custom","blue-square"]},"customs":{"a":"Customs","b":"1F6C3","j":["passport","border","blue-square"]},"baggage-claim":{"a":"Baggage Claim","b":"1F6C4","j":["baggage","claim","blue-square","airport","transport"]},"left-luggage":{"a":"Left Luggage","b":"1F6C5","j":["baggage","locker","luggage","blue-square","travel"]},"warning":{"a":"Warning","b":"26A0","j":["exclamation","wip","alert","error","problem","issue"]},"children-crossing":{"a":"Children Crossing","b":"1F6B8","j":["child","crossing","pedestrian","traffic","school","warning","danger","sign","driving","yellow-diamond"]},"no-entry":{"a":"No Entry","b":"26D4","j":["entry","forbidden","no","not","prohibited","traffic","limit","security","privacy","bad","denied","stop","circle"]},"prohibited":{"a":"Prohibited","b":"1F6AB","j":["entry","forbidden","no","not","forbid","stop","limit","denied","disallow","circle"]},"no-bicycles":{"a":"No Bicycles","b":"1F6B3","j":["bicycle","bike","forbidden","no","prohibited","cyclist","circle"]},"no-smoking":{"a":"No Smoking","b":"1F6AD","j":["forbidden","no","not","prohibited","smoking","cigarette","blue-square","smell","smoke"]},"no-littering":{"a":"No Littering","b":"1F6AF","j":["forbidden","litter","no","not","prohibited","trash","bin","garbage","circle"]},"nonpotable-water":{"a":"Non-Potable Water","b":"1F6B1","j":["non-drinking","non-potable","water","non_potable_water","drink","faucet","tap","circle"]},"no-pedestrians":{"a":"No Pedestrians","b":"1F6B7","j":["forbidden","no","not","pedestrian","prohibited","rules","crossing","walking","circle"]},"no-mobile-phones":{"a":"No Mobile Phones","b":"1F4F5","j":["cell","forbidden","mobile","no","phone","iphone","mute","circle"]},"no-one-under-eighteen":{"a":"No One Under Eighteen","b":"1F51E","j":["18","age restriction","eighteen","prohibited","underage","drink","pub","night","minor","circle"]},"radioactive":{"a":"Radioactive","b":"2622","j":["sign","nuclear","danger"]},"biohazard":{"a":"Biohazard","b":"2623","j":["sign","danger"]},"up-arrow":{"a":"Up Arrow","b":"2B06","j":["arrow","cardinal","direction","north","blue-square","continue","top"]},"upright-arrow":{"a":"Up-Right Arrow","b":"2197","j":["arrow","direction","intercardinal","northeast","up-right arrow","up_right_arrow","blue-square","point","diagonal"]},"right-arrow":{"a":"Right Arrow","b":"27A1","j":["arrow","cardinal","direction","east","blue-square","next"]},"downright-arrow":{"a":"Down-Right Arrow","b":"2198","j":["arrow","direction","down-right arrow","intercardinal","southeast","down_right_arrow","blue-square","diagonal"]},"down-arrow":{"a":"Down Arrow","b":"2B07","j":["arrow","cardinal","direction","down","south","blue-square","bottom"]},"downleft-arrow":{"a":"Down-Left Arrow","b":"2199","j":["arrow","direction","down-left arrow","intercardinal","southwest","down_left_arrow","blue-square","diagonal"]},"left-arrow":{"a":"Left Arrow","b":"2B05","j":["arrow","cardinal","direction","west","blue-square","previous","back"]},"upleft-arrow":{"a":"Up-Left Arrow","b":"2196","j":["arrow","direction","intercardinal","northwest","up-left arrow","up_left_arrow","blue-square","point","diagonal"]},"updown-arrow":{"a":"Up-Down Arrow","b":"2195","j":["arrow","up-down arrow","up_down_arrow","blue-square","direction","way","vertical"]},"leftright-arrow":{"a":"Left-Right Arrow","b":"2194","j":["arrow","left-right arrow","left_right_arrow","shape","direction","horizontal","sideways"]},"right-arrow-curving-left":{"a":"Right Arrow Curving Left","b":"21A9","j":["arrow","back","return","blue-square","undo","enter"]},"left-arrow-curving-right":{"a":"Left Arrow Curving Right","b":"21AA","j":["arrow","blue-square","return","rotate","direction"]},"right-arrow-curving-up":{"a":"Right Arrow Curving Up","b":"2934","j":["arrow","blue-square","direction","top"]},"right-arrow-curving-down":{"a":"Right Arrow Curving Down","b":"2935","j":["arrow","down","blue-square","direction","bottom"]},"clockwise-vertical-arrows":{"a":"Clockwise Vertical Arrows","b":"1F503","j":["arrow","clockwise","reload","sync","cycle","round","repeat"]},"counterclockwise-arrows-button":{"a":"Counterclockwise Arrows Button","b":"1F504","j":["anticlockwise","arrow","counterclockwise","withershins","blue-square","sync","cycle"]},"back-arrow":{"a":"Back Arrow","b":"1F519","j":["arrow","back","BACK arrow","words","return"]},"end-arrow":{"a":"End Arrow","b":"1F51A","j":["arrow","end","END arrow","words"]},"on-arrow":{"a":"On! Arrow","b":"1F51B","j":["arrow","mark","on","ON! arrow","words"]},"soon-arrow":{"a":"Soon Arrow","b":"1F51C","j":["arrow","soon","SOON arrow","words"]},"top-arrow":{"a":"Top Arrow","b":"1F51D","j":["arrow","top","TOP arrow","up","words","blue-square"]},"place-of-worship":{"a":"Place of Worship","b":"1F6D0","j":["religion","worship","church","temple","prayer"]},"atom-symbol":{"a":"Atom Symbol","b":"269B","j":["atheist","atom","science","physics","chemistry"]},"om":{"a":"Om","b":"1F549","j":["Hindu","religion","hinduism","buddhism","sikhism","jainism"]},"star-of-david":{"a":"Star of David","b":"2721","j":["David","Jew","Jewish","religion","star","star of David","judaism"]},"wheel-of-dharma":{"a":"Wheel of Dharma","b":"2638","j":["Buddhist","dharma","religion","wheel","hinduism","buddhism","sikhism","jainism"]},"yin-yang":{"a":"Yin Yang","b":"262F","j":["religion","tao","taoist","yang","yin","balance"]},"latin-cross":{"a":"Latin Cross","b":"271D","j":["Christian","cross","religion","christianity"]},"orthodox-cross":{"a":"Orthodox Cross","b":"2626","j":["Christian","cross","religion","suppedaneum"]},"star-and-crescent":{"a":"Star and Crescent","b":"262A","j":["islam","Muslim","religion"]},"peace-symbol":{"a":"Peace Symbol","b":"262E","j":["peace","hippie"]},"menorah":{"a":"Menorah","b":"1F54E","j":["candelabrum","candlestick","religion","hanukkah","candles","jewish"]},"dotted-sixpointed-star":{"a":"Dotted Six-Pointed Star","b":"1F52F","j":["dotted six-pointed star","fortune","star","dotted_six_pointed_star","purple-square","religion","jewish","hexagram"]},"aries":{"a":"Aries","b":"2648","j":["ram","zodiac","sign","purple-square","astrology"]},"taurus":{"a":"Taurus","b":"2649","j":["bull","ox","zodiac","purple-square","sign","astrology"]},"gemini":{"a":"Gemini","b":"264A","j":["twins","zodiac","sign","purple-square","astrology"]},"cancer":{"a":"Cancer","b":"264B","j":["crab","zodiac","sign","purple-square","astrology"]},"leo":{"a":"Leo","b":"264C","j":["lion","zodiac","sign","purple-square","astrology"]},"virgo":{"a":"Virgo","b":"264D","j":["zodiac","sign","purple-square","astrology"]},"libra":{"a":"Libra","b":"264E","j":["balance","justice","scales","zodiac","sign","purple-square","astrology"]},"scorpio":{"a":"Scorpio","b":"264F","j":["scorpion","scorpius","zodiac","sign","purple-square","astrology"]},"sagittarius":{"a":"Sagittarius","b":"2650","j":["archer","zodiac","sign","purple-square","astrology"]},"capricorn":{"a":"Capricorn","b":"2651","j":["goat","zodiac","sign","purple-square","astrology"]},"aquarius":{"a":"Aquarius","b":"2652","j":["bearer","water","zodiac","sign","purple-square","astrology"]},"pisces":{"a":"Pisces","b":"2653","j":["fish","zodiac","purple-square","sign","astrology"]},"ophiuchus":{"a":"Ophiuchus","b":"26CE","j":["bearer","serpent","snake","zodiac","sign","purple-square","constellation","astrology"]},"shuffle-tracks-button":{"a":"Shuffle Tracks Button","b":"1F500","j":["arrow","crossed","blue-square","shuffle","music","random"]},"repeat-button":{"a":"Repeat Button","b":"1F501","j":["arrow","clockwise","repeat","loop","record"]},"repeat-single-button":{"a":"Repeat Single Button","b":"1F502","j":["arrow","clockwise","once","blue-square","loop"]},"play-button":{"a":"Play Button","b":"25B6","j":["arrow","play","right","triangle","blue-square","direction"]},"fastforward-button":{"a":"Fast-Forward Button","b":"23E9","j":["arrow","double","fast","fast-forward button","forward","fast_forward_button","blue-square","play","speed","continue"]},"next-track-button":{"a":"Next Track Button","b":"23ED","j":["arrow","next scene","next track","triangle","forward","next","blue-square"]},"play-or-pause-button":{"a":"Play or Pause Button","b":"23EF","j":["arrow","pause","play","right","triangle","blue-square"]},"reverse-button":{"a":"Reverse Button","b":"25C0","j":["arrow","left","reverse","triangle","blue-square","direction"]},"fast-reverse-button":{"a":"Fast Reverse Button","b":"23EA","j":["arrow","double","rewind","play","blue-square"]},"last-track-button":{"a":"Last Track Button","b":"23EE","j":["arrow","previous scene","previous track","triangle","backward"]},"upwards-button":{"a":"Upwards Button","b":"1F53C","j":["arrow","button","red","blue-square","triangle","direction","point","forward","top"]},"fast-up-button":{"a":"Fast Up Button","b":"23EB","j":["arrow","double","blue-square","direction","top"]},"downwards-button":{"a":"Downwards Button","b":"1F53D","j":["arrow","button","down","red","blue-square","direction","bottom"]},"fast-down-button":{"a":"Fast Down Button","b":"23EC","j":["arrow","double","down","blue-square","direction","bottom"]},"pause-button":{"a":"Pause Button","b":"23F8","j":["bar","double","pause","vertical","blue-square"]},"stop-button":{"a":"Stop Button","b":"23F9","j":["square","stop","blue-square"]},"record-button":{"a":"Record Button","b":"23FA","j":["circle","record","blue-square"]},"eject-button":{"a":"Eject Button","b":"23CF","j":["eject","blue-square"]},"cinema":{"a":"Cinema","b":"1F3A6","j":["camera","film","movie","blue-square","record","curtain","stage","theater"]},"dim-button":{"a":"Dim Button","b":"1F505","j":["brightness","dim","low","sun","afternoon","warm","summer"]},"bright-button":{"a":"Bright Button","b":"1F506","j":["bright","brightness","sun","light"]},"antenna-bars":{"a":"Antenna Bars","b":"1F4F6","j":["antenna","bar","cell","mobile","phone","blue-square","reception","internet","connection","wifi","bluetooth","bars"]},"vibration-mode":{"a":"Vibration Mode","b":"1F4F3","j":["cell","mobile","mode","phone","telephone","vibration","orange-square"]},"mobile-phone-off":{"a":"Mobile Phone off","b":"1F4F4","j":["cell","mobile","off","phone","telephone","mute","orange-square","silence","quiet"]},"female-sign":{"a":"Female Sign","b":"2640","j":["woman","women","lady","girl"]},"male-sign":{"a":"Male Sign","b":"2642","j":["man","boy","men"]},"transgender-symbol":{"a":"Transgender Symbol","b":"26A7","j":["transgender","lgbtq"]},"multiply":{"a":"Multiply","b":"2716","j":["×","cancel","multiplication","sign","x","multiplication_sign","math","calculation"]},"plus":{"a":"Plus","b":"2795","j":["+","math","sign","plus_sign","calculation","addition","more","increase"]},"minus":{"a":"Minus","b":"2796","j":["-","−","math","sign","minus_sign","calculation","subtract","less"]},"divide":{"a":"Divide","b":"2797","j":["÷","division","math","sign","division_sign","calculation"]},"infinity":{"a":"Infinity","b":"267E","j":["forever","unbounded","universal"]},"double-exclamation-mark":{"a":"Double Exclamation Mark","b":"203C","j":["!","!!","bangbang","exclamation","mark","surprise"]},"exclamation-question-mark":{"a":"Exclamation Question Mark","b":"2049","j":["!","!?","?","exclamation","interrobang","mark","punctuation","question","wat","surprise"]},"red-question-mark":{"a":"Red Question Mark","b":"2753","j":["?","mark","punctuation","question","question_mark","doubt","confused"]},"white-question-mark":{"a":"White Question Mark","b":"2754","j":["?","mark","outlined","punctuation","question","doubts","gray","huh","confused"]},"white-exclamation-mark":{"a":"White Exclamation Mark","b":"2755","j":["!","exclamation","mark","outlined","punctuation","surprise","gray","wow","warning"]},"red-exclamation-mark":{"a":"Red Exclamation Mark","b":"2757","j":["!","exclamation","mark","punctuation","exclamation_mark","heavy_exclamation_mark","danger","surprise","wow","warning"]},"wavy-dash":{"a":"Wavy Dash","b":"3030","j":["dash","punctuation","wavy","draw","line","moustache","mustache","squiggle","scribble"]},"currency-exchange":{"a":"Currency Exchange","b":"1F4B1","j":["bank","currency","exchange","money","sales","dollar","travel"]},"heavy-dollar-sign":{"a":"Heavy Dollar Sign","b":"1F4B2","j":["currency","dollar","money","sales","payment","buck"]},"medical-symbol":{"a":"Medical Symbol","b":"2695","j":["aesculapius","medicine","staff","health","hospital"]},"recycling-symbol":{"a":"Recycling Symbol","b":"267B","j":["recycle","arrow","environment","garbage","trash"]},"fleurdelis":{"a":"Fleur-De-Lis","b":"269C","j":["fleur-de-lis","fleur_de_lis","decorative","scout"]},"trident-emblem":{"a":"Trident Emblem","b":"1F531","j":["anchor","emblem","ship","tool","trident","weapon","spear"]},"name-badge":{"a":"Name Badge","b":"1F4DB","j":["badge","name","fire","forbid"]},"japanese-symbol-for-beginner":{"a":"Japanese Symbol for Beginner","b":"1F530","j":["beginner","chevron","Japanese","Japanese symbol for beginner","leaf","badge","shield"]},"hollow-red-circle":{"a":"Hollow Red Circle","b":"2B55","j":["circle","large","o","red","round"]},"check-mark-button":{"a":"Check Mark Button","b":"2705","j":["✓","button","check","mark","green-square","ok","agree","vote","election","answer","tick"]},"check-box-with-check":{"a":"Check Box with Check","b":"2611","j":["✓","box","check","ok","agree","confirm","black-square","vote","election","yes","tick"]},"check-mark":{"a":"Check Mark","b":"2714","j":["✓","check","mark","ok","nike","answer","yes","tick"]},"cross-mark":{"a":"Cross Mark","b":"274C","j":["×","cancel","cross","mark","multiplication","multiply","x","no","delete","remove","red"]},"cross-mark-button":{"a":"Cross Mark Button","b":"274E","j":["×","mark","square","x","green-square","no","deny"]},"curly-loop":{"a":"Curly Loop","b":"27B0","j":["curl","loop","scribble","draw","shape","squiggle"]},"double-curly-loop":{"a":"Double Curly Loop","b":"27BF","j":["curl","double","loop","tape","cassette"]},"part-alternation-mark":{"a":"Part Alternation Mark","b":"303D","j":["mark","part","graph","presentation","stats","business","economics","bad"]},"eightspoked-asterisk":{"a":"Eight-Spoked Asterisk","b":"2733","j":["*","asterisk","eight-spoked asterisk","eight_spoked_asterisk","star","sparkle","green-square"]},"eightpointed-star":{"a":"Eight-Pointed Star","b":"2734","j":["*","eight-pointed star","star","eight_pointed_star","orange-square","shape","polygon"]},"sparkle":{"a":"Sparkle","b":"2747","j":["*","stars","green-square","awesome","good","fireworks"]},"copyright":{"a":"Copyright","b":"00A9","j":["c","ip","license","circle","law","legal"]},"registered":{"a":"Registered","b":"00AE","j":["r","alphabet","circle"]},"trade-mark":{"a":"Trade Mark","b":"2122","j":["mark","tm","trademark","brand","law","legal"]},"keycap":{"a":"Keycap: *","b":"002A-FE0F-20E3","j":["keycap_","star"]},"keycap-0":{"a":"Keycap: 0","b":"0030-FE0F-20E3","j":["keycap","0","numbers","blue-square","null"]},"keycap-1":{"a":"Keycap: 1","b":"0031-FE0F-20E3","j":["keycap","blue-square","numbers","1"]},"keycap-2":{"a":"Keycap: 2","b":"0032-FE0F-20E3","j":["keycap","numbers","2","prime","blue-square"]},"keycap-3":{"a":"Keycap: 3","b":"0033-FE0F-20E3","j":["keycap","3","numbers","prime","blue-square"]},"keycap-4":{"a":"Keycap: 4","b":"0034-FE0F-20E3","j":["keycap","4","numbers","blue-square"]},"keycap-5":{"a":"Keycap: 5","b":"0035-FE0F-20E3","j":["keycap","5","numbers","blue-square","prime"]},"keycap-6":{"a":"Keycap: 6","b":"0036-FE0F-20E3","j":["keycap","6","numbers","blue-square"]},"keycap-7":{"a":"Keycap: 7","b":"0037-FE0F-20E3","j":["keycap","7","numbers","blue-square","prime"]},"keycap-8":{"a":"Keycap: 8","b":"0038-FE0F-20E3","j":["keycap","8","blue-square","numbers"]},"keycap-9":{"a":"Keycap: 9","b":"0039-FE0F-20E3","j":["keycap","blue-square","numbers","9"]},"keycap-10":{"a":"Keycap: 10","b":"1F51F","j":["keycap","numbers","10","blue-square"]},"input-latin-uppercase":{"a":"Input Latin Uppercase","b":"1F520","j":["ABCD","input","latin","letters","uppercase","alphabet","words","blue-square"]},"input-latin-lowercase":{"a":"Input Latin Lowercase","b":"1F521","j":["abcd","input","latin","letters","lowercase","blue-square","alphabet"]},"input-numbers":{"a":"Input Numbers","b":"1F522","j":["1234","input","numbers","blue-square"]},"input-symbols":{"a":"Input Symbols","b":"1F523","j":["〒♪&%","input","blue-square","music","note","ampersand","percent","glyphs","characters"]},"input-latin-letters":{"a":"Input Latin Letters","b":"1F524","j":["abc","alphabet","input","latin","letters","blue-square"]},"a-button-blood-type":{"a":"A Button (Blood Type)","b":"1F170","j":["a","A button (blood type)","blood type","a_button","red-square","alphabet","letter"]},"ab-button-blood-type":{"a":"Ab Button (Blood Type)","b":"1F18E","j":["ab","AB button (blood type)","blood type","ab_button","red-square","alphabet"]},"b-button-blood-type":{"a":"B Button (Blood Type)","b":"1F171","j":["b","B button (blood type)","blood type","b_button","red-square","alphabet","letter"]},"cl-button":{"a":"Cl Button","b":"1F191","j":["cl","CL button","alphabet","words","red-square"]},"cool-button":{"a":"Cool Button","b":"1F192","j":["cool","COOL button","words","blue-square"]},"free-button":{"a":"Free Button","b":"1F193","j":["free","FREE button","blue-square","words"]},"information":{"a":"Information","b":"2139","j":["i","blue-square","alphabet","letter"]},"id-button":{"a":"Id Button","b":"1F194","j":["id","ID button","identity","purple-square","words"]},"circled-m":{"a":"Circled M","b":"24C2","j":["circle","circled M","m","alphabet","blue-circle","letter"]},"new-button":{"a":"New Button","b":"1F195","j":["new","NEW button","blue-square","words","start"]},"ng-button":{"a":"Ng Button","b":"1F196","j":["ng","NG button","blue-square","words","shape","icon"]},"o-button-blood-type":{"a":"O Button (Blood Type)","b":"1F17E","j":["blood type","o","O button (blood type)","o_button","alphabet","red-square","letter"]},"ok-button":{"a":"Ok Button","b":"1F197","j":["OK","OK button","good","agree","yes","blue-square"]},"p-button":{"a":"P Button","b":"1F17F","j":["P button","parking","cars","blue-square","alphabet","letter"]},"sos-button":{"a":"Sos Button","b":"1F198","j":["help","sos","SOS button","red-square","words","emergency","911"]},"up-button":{"a":"Up! Button","b":"1F199","j":["mark","up","UP! button","blue-square","above","high"]},"vs-button":{"a":"Vs Button","b":"1F19A","j":["versus","vs","VS button","words","orange-square"]},"japanese-here-button":{"a":"Japanese “Here” Button","b":"1F201","j":["“here”","Japanese","Japanese “here” button","katakana","ココ","blue-square","here","japanese","destination"]},"japanese-service-charge-button":{"a":"Japanese “Service Charge” Button","b":"1F202","j":["“service charge”","Japanese","Japanese “service charge” button","katakana","サ","japanese","blue-square"]},"japanese-monthly-amount-button":{"a":"Japanese “Monthly Amount” Button","b":"1F237","j":["“monthly amount”","ideograph","Japanese","Japanese “monthly amount” button","月","chinese","month","moon","japanese","orange-square","kanji"]},"japanese-not-free-of-charge-button":{"a":"Japanese “Not Free of Charge” Button","b":"1F236","j":["“not free of charge”","ideograph","Japanese","Japanese “not free of charge” button","有","orange-square","chinese","have","kanji"]},"japanese-reserved-button":{"a":"Japanese “Reserved” Button","b":"1F22F","j":["“reserved”","ideograph","Japanese","Japanese “reserved” button","指","chinese","point","green-square","kanji"]},"japanese-bargain-button":{"a":"Japanese “Bargain” Button","b":"1F250","j":["“bargain”","ideograph","Japanese","Japanese “bargain” button","得","chinese","kanji","obtain","get","circle"]},"japanese-discount-button":{"a":"Japanese “Discount” Button","b":"1F239","j":["“discount”","ideograph","Japanese","Japanese “discount” button","割","cut","divide","chinese","kanji","pink-square"]},"japanese-free-of-charge-button":{"a":"Japanese “Free of Charge” Button","b":"1F21A","j":["“free of charge”","ideograph","Japanese","Japanese “free of charge” button","無","nothing","chinese","kanji","japanese","orange-square"]},"japanese-prohibited-button":{"a":"Japanese “Prohibited” Button","b":"1F232","j":["“prohibited”","ideograph","Japanese","Japanese “prohibited” button","禁","kanji","japanese","chinese","forbidden","limit","restricted","red-square"]},"japanese-acceptable-button":{"a":"Japanese “Acceptable” Button","b":"1F251","j":["“acceptable”","ideograph","Japanese","Japanese “acceptable” button","可","ok","good","chinese","kanji","agree","yes","orange-circle"]},"japanese-application-button":{"a":"Japanese “Application” Button","b":"1F238","j":["“application”","ideograph","Japanese","Japanese “application” button","申","chinese","japanese","kanji","orange-square"]},"japanese-passing-grade-button":{"a":"Japanese “Passing Grade” Button","b":"1F234","j":["“passing grade”","ideograph","Japanese","Japanese “passing grade” button","合","japanese","chinese","join","kanji","red-square"]},"japanese-vacancy-button":{"a":"Japanese “Vacancy” Button","b":"1F233","j":["“vacancy”","ideograph","Japanese","Japanese “vacancy” button","空","kanji","japanese","chinese","empty","sky","blue-square"]},"japanese-congratulations-button":{"a":"Japanese “Congratulations” Button","b":"3297","j":["“congratulations”","ideograph","Japanese","Japanese “congratulations” button","祝","chinese","kanji","japanese","red-circle"]},"japanese-secret-button":{"a":"Japanese “Secret” Button","b":"3299","j":["“secret”","ideograph","Japanese","Japanese “secret” button","秘","privacy","chinese","sshh","kanji","red-circle"]},"japanese-open-for-business-button":{"a":"Japanese “Open for Business” Button","b":"1F23A","j":["“open for business”","ideograph","Japanese","Japanese “open for business” button","営","japanese","opening hours","orange-square"]},"japanese-no-vacancy-button":{"a":"Japanese “No Vacancy” Button","b":"1F235","j":["“no vacancy”","ideograph","Japanese","Japanese “no vacancy” button","満","full","chinese","japanese","red-square","kanji"]},"red-circle":{"a":"Red Circle","b":"1F534","j":["circle","geometric","red","shape","error","danger"]},"orange-circle":{"a":"Orange Circle","b":"1F7E0","j":["circle","orange","round"]},"yellow-circle":{"a":"Yellow Circle","b":"1F7E1","j":["circle","yellow","round"]},"green-circle":{"a":"Green Circle","b":"1F7E2","j":["circle","green","round"]},"blue-circle":{"a":"Blue Circle","b":"1F535","j":["blue","circle","geometric","shape","icon","button"]},"purple-circle":{"a":"Purple Circle","b":"1F7E3","j":["circle","purple","round"]},"brown-circle":{"a":"Brown Circle","b":"1F7E4","j":["brown","circle","round"]},"black-circle":{"a":"Black Circle","b":"26AB","j":["circle","geometric","shape","button","round"]},"white-circle":{"a":"White Circle","b":"26AA","j":["circle","geometric","shape","round"]},"red-square":{"a":"Red Square","b":"1F7E5","j":["red","square"]},"orange-square":{"a":"Orange Square","b":"1F7E7","j":["orange","square"]},"yellow-square":{"a":"Yellow Square","b":"1F7E8","j":["square","yellow"]},"green-square":{"a":"Green Square","b":"1F7E9","j":["green","square"]},"blue-square":{"a":"Blue Square","b":"1F7E6","j":["blue","square"]},"purple-square":{"a":"Purple Square","b":"1F7EA","j":["purple","square"]},"brown-square":{"a":"Brown Square","b":"1F7EB","j":["brown","square"]},"black-large-square":{"a":"Black Large Square","b":"2B1B","j":["geometric","square","shape","icon","button"]},"white-large-square":{"a":"White Large Square","b":"2B1C","j":["geometric","square","shape","icon","stone","button"]},"black-medium-square":{"a":"Black Medium Square","b":"25FC","j":["geometric","square","shape","button","icon"]},"white-medium-square":{"a":"White Medium Square","b":"25FB","j":["geometric","square","shape","stone","icon"]},"black-mediumsmall-square":{"a":"Black Medium-Small Square","b":"25FE","j":["black medium-small square","geometric","square","black_medium_small_square","icon","shape","button"]},"white-mediumsmall-square":{"a":"White Medium-Small Square","b":"25FD","j":["geometric","square","white medium-small square","white_medium_small_square","shape","stone","icon","button"]},"black-small-square":{"a":"Black Small Square","b":"25AA","j":["geometric","square","shape","icon"]},"white-small-square":{"a":"White Small Square","b":"25AB","j":["geometric","square","shape","icon"]},"large-orange-diamond":{"a":"Large Orange Diamond","b":"1F536","j":["diamond","geometric","orange","shape","jewel","gem"]},"large-blue-diamond":{"a":"Large Blue Diamond","b":"1F537","j":["blue","diamond","geometric","shape","jewel","gem"]},"small-orange-diamond":{"a":"Small Orange Diamond","b":"1F538","j":["diamond","geometric","orange","shape","jewel","gem"]},"small-blue-diamond":{"a":"Small Blue Diamond","b":"1F539","j":["blue","diamond","geometric","shape","jewel","gem"]},"red-triangle-pointed-up":{"a":"Red Triangle Pointed Up","b":"1F53A","j":["geometric","red","shape","direction","up","top"]},"red-triangle-pointed-down":{"a":"Red Triangle Pointed Down","b":"1F53B","j":["down","geometric","red","shape","direction","bottom"]},"diamond-with-a-dot":{"a":"Diamond with a Dot","b":"1F4A0","j":["comic","diamond","geometric","inside","jewel","blue","gem","crystal","fancy"]},"radio-button":{"a":"Radio Button","b":"1F518","j":["button","geometric","radio","input","old","music","circle"]},"white-square-button":{"a":"White Square Button","b":"1F533","j":["button","geometric","outlined","square","shape","input"]},"black-square-button":{"a":"Black Square Button","b":"1F532","j":["button","geometric","square","shape","input","frame"]},"chequered-flag":{"a":"Chequered Flag","b":"1F3C1","j":["checkered","chequered","racing","contest","finishline","race","gokart"]},"triangular-flag":{"a":"Triangular Flag","b":"1F6A9","j":["post","mark","milestone","place"]},"crossed-flags":{"a":"Crossed Flags","b":"1F38C","j":["celebration","cross","crossed","Japanese","japanese","nation","country","border"]},"black-flag":{"a":"Black Flag","b":"1F3F4","j":["waving","pirate"]},"white-flag":{"a":"White Flag","b":"1F3F3","j":["waving","losing","loser","lost","surrender","give up","fail"]},"rainbow-flag":{"a":"Rainbow Flag","b":"1F3F3-FE0F-200D-1F308","j":["pride","rainbow","flag","gay","lgbt","glbt","queer","homosexual","lesbian","bisexual","transgender"]},"transgender-flag":{"a":"Transgender Flag","b":"1F3F3-FE0F-200D-26A7-FE0F","j":["flag","light blue","pink","transgender","white","lgbtq"]},"pirate-flag":{"a":"Pirate Flag","b":"1F3F4-200D-2620-FE0F","j":["Jolly Roger","pirate","plunder","treasure","skull","crossbones","flag","banner"]},"flag-ascension-island":{"a":"Flag: Ascension Island","b":"1F1E6-1F1E8","j":["flag"]},"flag-andorra":{"a":"Flag: Andorra","b":"1F1E6-1F1E9","j":["flag","ad","nation","country","banner"]},"flag-united-arab-emirates":{"a":"Flag: United Arab Emirates","b":"1F1E6-1F1EA","j":["flag","united","arab","emirates","nation","country","banner"]},"flag-afghanistan":{"a":"Flag: Afghanistan","b":"1F1E6-1F1EB","j":["flag","af","nation","country","banner"]},"flag-antigua--barbuda":{"a":"Flag: Antigua & Barbuda","b":"1F1E6-1F1EC","j":["flag","flag_antigua_barbuda","antigua","barbuda","nation","country","banner"]},"flag-anguilla":{"a":"Flag: Anguilla","b":"1F1E6-1F1EE","j":["flag","ai","nation","country","banner"]},"flag-albania":{"a":"Flag: Albania","b":"1F1E6-1F1F1","j":["flag","al","nation","country","banner"]},"flag-armenia":{"a":"Flag: Armenia","b":"1F1E6-1F1F2","j":["flag","am","nation","country","banner"]},"flag-angola":{"a":"Flag: Angola","b":"1F1E6-1F1F4","j":["flag","ao","nation","country","banner"]},"flag-antarctica":{"a":"Flag: Antarctica","b":"1F1E6-1F1F6","j":["flag","aq","nation","country","banner"]},"flag-argentina":{"a":"Flag: Argentina","b":"1F1E6-1F1F7","j":["flag","ar","nation","country","banner"]},"flag-american-samoa":{"a":"Flag: American Samoa","b":"1F1E6-1F1F8","j":["flag","american","ws","nation","country","banner"]},"flag-austria":{"a":"Flag: Austria","b":"1F1E6-1F1F9","j":["flag","at","nation","country","banner"]},"flag-australia":{"a":"Flag: Australia","b":"1F1E6-1F1FA","j":["flag","au","nation","country","banner"]},"flag-aruba":{"a":"Flag: Aruba","b":"1F1E6-1F1FC","j":["flag","aw","nation","country","banner"]},"flag-land-islands":{"a":"Flag: Åland Islands","b":"1F1E6-1F1FD","j":["flag","flag_aland_islands","Åland","islands","nation","country","banner"]},"flag-azerbaijan":{"a":"Flag: Azerbaijan","b":"1F1E6-1F1FF","j":["flag","az","nation","country","banner"]},"flag-bosnia--herzegovina":{"a":"Flag: Bosnia & Herzegovina","b":"1F1E7-1F1E6","j":["flag","flag_bosnia_herzegovina","bosnia","herzegovina","nation","country","banner"]},"flag-barbados":{"a":"Flag: Barbados","b":"1F1E7-1F1E7","j":["flag","bb","nation","country","banner"]},"flag-bangladesh":{"a":"Flag: Bangladesh","b":"1F1E7-1F1E9","j":["flag","bd","nation","country","banner"]},"flag-belgium":{"a":"Flag: Belgium","b":"1F1E7-1F1EA","j":["flag","be","nation","country","banner"]},"flag-burkina-faso":{"a":"Flag: Burkina Faso","b":"1F1E7-1F1EB","j":["flag","burkina","faso","nation","country","banner"]},"flag-bulgaria":{"a":"Flag: Bulgaria","b":"1F1E7-1F1EC","j":["flag","bg","nation","country","banner"]},"flag-bahrain":{"a":"Flag: Bahrain","b":"1F1E7-1F1ED","j":["flag","bh","nation","country","banner"]},"flag-burundi":{"a":"Flag: Burundi","b":"1F1E7-1F1EE","j":["flag","bi","nation","country","banner"]},"flag-benin":{"a":"Flag: Benin","b":"1F1E7-1F1EF","j":["flag","bj","nation","country","banner"]},"flag-st-barthlemy":{"a":"Flag: St. Barthélemy","b":"1F1E7-1F1F1","j":["flag","flag_st_barthelemy","saint","barthélemy","nation","country","banner"]},"flag-bermuda":{"a":"Flag: Bermuda","b":"1F1E7-1F1F2","j":["flag","bm","nation","country","banner"]},"flag-brunei":{"a":"Flag: Brunei","b":"1F1E7-1F1F3","j":["flag","bn","darussalam","nation","country","banner"]},"flag-bolivia":{"a":"Flag: Bolivia","b":"1F1E7-1F1F4","j":["flag","bo","nation","country","banner"]},"flag-caribbean-netherlands":{"a":"Flag: Caribbean Netherlands","b":"1F1E7-1F1F6","j":["flag","bonaire","nation","country","banner"]},"flag-brazil":{"a":"Flag: Brazil","b":"1F1E7-1F1F7","j":["flag","br","nation","country","banner"]},"flag-bahamas":{"a":"Flag: Bahamas","b":"1F1E7-1F1F8","j":["flag","bs","nation","country","banner"]},"flag-bhutan":{"a":"Flag: Bhutan","b":"1F1E7-1F1F9","j":["flag","bt","nation","country","banner"]},"flag-bouvet-island":{"a":"Flag: Bouvet Island","b":"1F1E7-1F1FB","j":["flag","norway"]},"flag-botswana":{"a":"Flag: Botswana","b":"1F1E7-1F1FC","j":["flag","bw","nation","country","banner"]},"flag-belarus":{"a":"Flag: Belarus","b":"1F1E7-1F1FE","j":["flag","by","nation","country","banner"]},"flag-belize":{"a":"Flag: Belize","b":"1F1E7-1F1FF","j":["flag","bz","nation","country","banner"]},"flag-canada":{"a":"Flag: Canada","b":"1F1E8-1F1E6","j":["flag","ca","nation","country","banner"]},"flag-cocos-keeling-islands":{"a":"Flag: Cocos (Keeling) Islands","b":"1F1E8-1F1E8","j":["flag","flag_cocos_islands","cocos","keeling","islands","nation","country","banner"]},"flag-congo--kinshasa":{"a":"Flag: Congo - Kinshasa","b":"1F1E8-1F1E9","j":["flag","flag_congo_kinshasa","congo","democratic","republic","nation","country","banner"]},"flag-central-african-republic":{"a":"Flag: Central African Republic","b":"1F1E8-1F1EB","j":["flag","central","african","republic","nation","country","banner"]},"flag-congo--brazzaville":{"a":"Flag: Congo - Brazzaville","b":"1F1E8-1F1EC","j":["flag","flag_congo_brazzaville","congo","nation","country","banner"]},"flag-switzerland":{"a":"Flag: Switzerland","b":"1F1E8-1F1ED","j":["flag","ch","nation","country","banner"]},"flag-cte-divoire":{"a":"Flag: Côte D’Ivoire","b":"1F1E8-1F1EE","j":["flag","flag_cote_d_ivoire","ivory","coast","nation","country","banner"]},"flag-cook-islands":{"a":"Flag: Cook Islands","b":"1F1E8-1F1F0","j":["flag","cook","islands","nation","country","banner"]},"flag-chile":{"a":"Flag: Chile","b":"1F1E8-1F1F1","j":["flag","nation","country","banner"]},"flag-cameroon":{"a":"Flag: Cameroon","b":"1F1E8-1F1F2","j":["flag","cm","nation","country","banner"]},"flag-china":{"a":"Flag: China","b":"1F1E8-1F1F3","j":["flag","china","chinese","prc","country","nation","banner"]},"flag-colombia":{"a":"Flag: Colombia","b":"1F1E8-1F1F4","j":["flag","co","nation","country","banner"]},"flag-clipperton-island":{"a":"Flag: Clipperton Island","b":"1F1E8-1F1F5","j":["flag"]},"flag-costa-rica":{"a":"Flag: Costa Rica","b":"1F1E8-1F1F7","j":["flag","costa","rica","nation","country","banner"]},"flag-cuba":{"a":"Flag: Cuba","b":"1F1E8-1F1FA","j":["flag","cu","nation","country","banner"]},"flag-cape-verde":{"a":"Flag: Cape Verde","b":"1F1E8-1F1FB","j":["flag","cabo","verde","nation","country","banner"]},"flag-curaao":{"a":"Flag: Curaçao","b":"1F1E8-1F1FC","j":["flag","flag_curacao","curaçao","nation","country","banner"]},"flag-christmas-island":{"a":"Flag: Christmas Island","b":"1F1E8-1F1FD","j":["flag","christmas","island","nation","country","banner"]},"flag-cyprus":{"a":"Flag: Cyprus","b":"1F1E8-1F1FE","j":["flag","cy","nation","country","banner"]},"flag-czechia":{"a":"Flag: Czechia","b":"1F1E8-1F1FF","j":["flag","cz","nation","country","banner"]},"flag-germany":{"a":"Flag: Germany","b":"1F1E9-1F1EA","j":["flag","german","nation","country","banner"]},"flag-diego-garcia":{"a":"Flag: Diego Garcia","b":"1F1E9-1F1EC","j":["flag"]},"flag-djibouti":{"a":"Flag: Djibouti","b":"1F1E9-1F1EF","j":["flag","dj","nation","country","banner"]},"flag-denmark":{"a":"Flag: Denmark","b":"1F1E9-1F1F0","j":["flag","dk","nation","country","banner"]},"flag-dominica":{"a":"Flag: Dominica","b":"1F1E9-1F1F2","j":["flag","dm","nation","country","banner"]},"flag-dominican-republic":{"a":"Flag: Dominican Republic","b":"1F1E9-1F1F4","j":["flag","dominican","republic","nation","country","banner"]},"flag-algeria":{"a":"Flag: Algeria","b":"1F1E9-1F1FF","j":["flag","dz","nation","country","banner"]},"flag-ceuta--melilla":{"a":"Flag: Ceuta & Melilla","b":"1F1EA-1F1E6","j":["flag","flag_ceuta_melilla"]},"flag-ecuador":{"a":"Flag: Ecuador","b":"1F1EA-1F1E8","j":["flag","ec","nation","country","banner"]},"flag-estonia":{"a":"Flag: Estonia","b":"1F1EA-1F1EA","j":["flag","ee","nation","country","banner"]},"flag-egypt":{"a":"Flag: Egypt","b":"1F1EA-1F1EC","j":["flag","eg","nation","country","banner"]},"flag-western-sahara":{"a":"Flag: Western Sahara","b":"1F1EA-1F1ED","j":["flag","western","sahara","nation","country","banner"]},"flag-eritrea":{"a":"Flag: Eritrea","b":"1F1EA-1F1F7","j":["flag","er","nation","country","banner"]},"flag-spain":{"a":"Flag: Spain","b":"1F1EA-1F1F8","j":["flag","spain","nation","country","banner"]},"flag-ethiopia":{"a":"Flag: Ethiopia","b":"1F1EA-1F1F9","j":["flag","et","nation","country","banner"]},"flag-european-union":{"a":"Flag: European Union","b":"1F1EA-1F1FA","j":["flag","european","union","banner"]},"flag-finland":{"a":"Flag: Finland","b":"1F1EB-1F1EE","j":["flag","fi","nation","country","banner"]},"flag-fiji":{"a":"Flag: Fiji","b":"1F1EB-1F1EF","j":["flag","fj","nation","country","banner"]},"flag-falkland-islands":{"a":"Flag: Falkland Islands","b":"1F1EB-1F1F0","j":["flag","falkland","islands","malvinas","nation","country","banner"]},"flag-micronesia":{"a":"Flag: Micronesia","b":"1F1EB-1F1F2","j":["flag","micronesia","federated","states","nation","country","banner"]},"flag-faroe-islands":{"a":"Flag: Faroe Islands","b":"1F1EB-1F1F4","j":["flag","faroe","islands","nation","country","banner"]},"flag-france":{"a":"Flag: France","b":"1F1EB-1F1F7","j":["flag","banner","nation","france","french","country"]},"flag-gabon":{"a":"Flag: Gabon","b":"1F1EC-1F1E6","j":["flag","ga","nation","country","banner"]},"flag-united-kingdom":{"a":"Flag: United Kingdom","b":"1F1EC-1F1E7","j":["flag","united","kingdom","great","britain","northern","ireland","nation","country","banner","british","UK","english","england","union jack"]},"flag-grenada":{"a":"Flag: Grenada","b":"1F1EC-1F1E9","j":["flag","gd","nation","country","banner"]},"flag-georgia":{"a":"Flag: Georgia","b":"1F1EC-1F1EA","j":["flag","ge","nation","country","banner"]},"flag-french-guiana":{"a":"Flag: French Guiana","b":"1F1EC-1F1EB","j":["flag","french","guiana","nation","country","banner"]},"flag-guernsey":{"a":"Flag: Guernsey","b":"1F1EC-1F1EC","j":["flag","gg","nation","country","banner"]},"flag-ghana":{"a":"Flag: Ghana","b":"1F1EC-1F1ED","j":["flag","gh","nation","country","banner"]},"flag-gibraltar":{"a":"Flag: Gibraltar","b":"1F1EC-1F1EE","j":["flag","gi","nation","country","banner"]},"flag-greenland":{"a":"Flag: Greenland","b":"1F1EC-1F1F1","j":["flag","gl","nation","country","banner"]},"flag-gambia":{"a":"Flag: Gambia","b":"1F1EC-1F1F2","j":["flag","gm","nation","country","banner"]},"flag-guinea":{"a":"Flag: Guinea","b":"1F1EC-1F1F3","j":["flag","gn","nation","country","banner"]},"flag-guadeloupe":{"a":"Flag: Guadeloupe","b":"1F1EC-1F1F5","j":["flag","gp","nation","country","banner"]},"flag-equatorial-guinea":{"a":"Flag: Equatorial Guinea","b":"1F1EC-1F1F6","j":["flag","equatorial","gn","nation","country","banner"]},"flag-greece":{"a":"Flag: Greece","b":"1F1EC-1F1F7","j":["flag","gr","nation","country","banner"]},"flag-south-georgia--south-sandwich-islands":{"a":"Flag: South Georgia & South Sandwich Islands","b":"1F1EC-1F1F8","j":["flag","flag_south_georgia_south_sandwich_islands","south","georgia","sandwich","islands","nation","country","banner"]},"flag-guatemala":{"a":"Flag: Guatemala","b":"1F1EC-1F1F9","j":["flag","gt","nation","country","banner"]},"flag-guam":{"a":"Flag: Guam","b":"1F1EC-1F1FA","j":["flag","gu","nation","country","banner"]},"flag-guineabissau":{"a":"Flag: Guinea-Bissau","b":"1F1EC-1F1FC","j":["flag","flag_guinea_bissau","gw","bissau","nation","country","banner"]},"flag-guyana":{"a":"Flag: Guyana","b":"1F1EC-1F1FE","j":["flag","gy","nation","country","banner"]},"flag-hong-kong-sar-china":{"a":"Flag: Hong Kong Sar China","b":"1F1ED-1F1F0","j":["flag","hong","kong","nation","country","banner"]},"flag-heard--mcdonald-islands":{"a":"Flag: Heard & Mcdonald Islands","b":"1F1ED-1F1F2","j":["flag","flag_heard_mcdonald_islands"]},"flag-honduras":{"a":"Flag: Honduras","b":"1F1ED-1F1F3","j":["flag","hn","nation","country","banner"]},"flag-croatia":{"a":"Flag: Croatia","b":"1F1ED-1F1F7","j":["flag","hr","nation","country","banner"]},"flag-haiti":{"a":"Flag: Haiti","b":"1F1ED-1F1F9","j":["flag","ht","nation","country","banner"]},"flag-hungary":{"a":"Flag: Hungary","b":"1F1ED-1F1FA","j":["flag","hu","nation","country","banner"]},"flag-canary-islands":{"a":"Flag: Canary Islands","b":"1F1EE-1F1E8","j":["flag","canary","islands","nation","country","banner"]},"flag-indonesia":{"a":"Flag: Indonesia","b":"1F1EE-1F1E9","j":["flag","nation","country","banner"]},"flag-ireland":{"a":"Flag: Ireland","b":"1F1EE-1F1EA","j":["flag","ie","nation","country","banner"]},"flag-israel":{"a":"Flag: Israel","b":"1F1EE-1F1F1","j":["flag","il","nation","country","banner"]},"flag-isle-of-man":{"a":"Flag: Isle of Man","b":"1F1EE-1F1F2","j":["flag","isle","man","nation","country","banner"]},"flag-india":{"a":"Flag: India","b":"1F1EE-1F1F3","j":["flag","in","nation","country","banner"]},"flag-british-indian-ocean-territory":{"a":"Flag: British Indian Ocean Territory","b":"1F1EE-1F1F4","j":["flag","british","indian","ocean","territory","nation","country","banner"]},"flag-iraq":{"a":"Flag: Iraq","b":"1F1EE-1F1F6","j":["flag","iq","nation","country","banner"]},"flag-iran":{"a":"Flag: Iran","b":"1F1EE-1F1F7","j":["flag","iran","islamic","republic","nation","country","banner"]},"flag-iceland":{"a":"Flag: Iceland","b":"1F1EE-1F1F8","j":["flag","is","nation","country","banner"]},"flag-italy":{"a":"Flag: Italy","b":"1F1EE-1F1F9","j":["flag","italy","nation","country","banner"]},"flag-jersey":{"a":"Flag: Jersey","b":"1F1EF-1F1EA","j":["flag","je","nation","country","banner"]},"flag-jamaica":{"a":"Flag: Jamaica","b":"1F1EF-1F1F2","j":["flag","jm","nation","country","banner"]},"flag-jordan":{"a":"Flag: Jordan","b":"1F1EF-1F1F4","j":["flag","jo","nation","country","banner"]},"flag-japan":{"a":"Flag: Japan","b":"1F1EF-1F1F5","j":["flag","japanese","nation","country","banner"]},"flag-kenya":{"a":"Flag: Kenya","b":"1F1F0-1F1EA","j":["flag","ke","nation","country","banner"]},"flag-kyrgyzstan":{"a":"Flag: Kyrgyzstan","b":"1F1F0-1F1EC","j":["flag","kg","nation","country","banner"]},"flag-cambodia":{"a":"Flag: Cambodia","b":"1F1F0-1F1ED","j":["flag","kh","nation","country","banner"]},"flag-kiribati":{"a":"Flag: Kiribati","b":"1F1F0-1F1EE","j":["flag","ki","nation","country","banner"]},"flag-comoros":{"a":"Flag: Comoros","b":"1F1F0-1F1F2","j":["flag","km","nation","country","banner"]},"flag-st-kitts--nevis":{"a":"Flag: St. Kitts & Nevis","b":"1F1F0-1F1F3","j":["flag","flag_st_kitts_nevis","saint","kitts","nevis","nation","country","banner"]},"flag-north-korea":{"a":"Flag: North Korea","b":"1F1F0-1F1F5","j":["flag","north","korea","nation","country","banner"]},"flag-south-korea":{"a":"Flag: South Korea","b":"1F1F0-1F1F7","j":["flag","south","korea","nation","country","banner"]},"flag-kuwait":{"a":"Flag: Kuwait","b":"1F1F0-1F1FC","j":["flag","kw","nation","country","banner"]},"flag-cayman-islands":{"a":"Flag: Cayman Islands","b":"1F1F0-1F1FE","j":["flag","cayman","islands","nation","country","banner"]},"flag-kazakhstan":{"a":"Flag: Kazakhstan","b":"1F1F0-1F1FF","j":["flag","kz","nation","country","banner"]},"flag-laos":{"a":"Flag: Laos","b":"1F1F1-1F1E6","j":["flag","lao","democratic","republic","nation","country","banner"]},"flag-lebanon":{"a":"Flag: Lebanon","b":"1F1F1-1F1E7","j":["flag","lb","nation","country","banner"]},"flag-st-lucia":{"a":"Flag: St. Lucia","b":"1F1F1-1F1E8","j":["flag","saint","lucia","nation","country","banner"]},"flag-liechtenstein":{"a":"Flag: Liechtenstein","b":"1F1F1-1F1EE","j":["flag","li","nation","country","banner"]},"flag-sri-lanka":{"a":"Flag: Sri Lanka","b":"1F1F1-1F1F0","j":["flag","sri","lanka","nation","country","banner"]},"flag-liberia":{"a":"Flag: Liberia","b":"1F1F1-1F1F7","j":["flag","lr","nation","country","banner"]},"flag-lesotho":{"a":"Flag: Lesotho","b":"1F1F1-1F1F8","j":["flag","ls","nation","country","banner"]},"flag-lithuania":{"a":"Flag: Lithuania","b":"1F1F1-1F1F9","j":["flag","lt","nation","country","banner"]},"flag-luxembourg":{"a":"Flag: Luxembourg","b":"1F1F1-1F1FA","j":["flag","lu","nation","country","banner"]},"flag-latvia":{"a":"Flag: Latvia","b":"1F1F1-1F1FB","j":["flag","lv","nation","country","banner"]},"flag-libya":{"a":"Flag: Libya","b":"1F1F1-1F1FE","j":["flag","ly","nation","country","banner"]},"flag-morocco":{"a":"Flag: Morocco","b":"1F1F2-1F1E6","j":["flag","ma","nation","country","banner"]},"flag-monaco":{"a":"Flag: Monaco","b":"1F1F2-1F1E8","j":["flag","mc","nation","country","banner"]},"flag-moldova":{"a":"Flag: Moldova","b":"1F1F2-1F1E9","j":["flag","moldova","republic","nation","country","banner"]},"flag-montenegro":{"a":"Flag: Montenegro","b":"1F1F2-1F1EA","j":["flag","me","nation","country","banner"]},"flag-st-martin":{"a":"Flag: St. Martin","b":"1F1F2-1F1EB","j":["flag"]},"flag-madagascar":{"a":"Flag: Madagascar","b":"1F1F2-1F1EC","j":["flag","mg","nation","country","banner"]},"flag-marshall-islands":{"a":"Flag: Marshall Islands","b":"1F1F2-1F1ED","j":["flag","marshall","islands","nation","country","banner"]},"flag-north-macedonia":{"a":"Flag: North Macedonia","b":"1F1F2-1F1F0","j":["flag","macedonia","nation","country","banner"]},"flag-mali":{"a":"Flag: Mali","b":"1F1F2-1F1F1","j":["flag","ml","nation","country","banner"]},"flag-myanmar-burma":{"a":"Flag: Myanmar (Burma)","b":"1F1F2-1F1F2","j":["flag","flag_myanmar","mm","nation","country","banner"]},"flag-mongolia":{"a":"Flag: Mongolia","b":"1F1F2-1F1F3","j":["flag","mn","nation","country","banner"]},"flag-macao-sar-china":{"a":"Flag: Macao Sar China","b":"1F1F2-1F1F4","j":["flag","macao","nation","country","banner"]},"flag-northern-mariana-islands":{"a":"Flag: Northern Mariana Islands","b":"1F1F2-1F1F5","j":["flag","northern","mariana","islands","nation","country","banner"]},"flag-martinique":{"a":"Flag: Martinique","b":"1F1F2-1F1F6","j":["flag","mq","nation","country","banner"]},"flag-mauritania":{"a":"Flag: Mauritania","b":"1F1F2-1F1F7","j":["flag","mr","nation","country","banner"]},"flag-montserrat":{"a":"Flag: Montserrat","b":"1F1F2-1F1F8","j":["flag","ms","nation","country","banner"]},"flag-malta":{"a":"Flag: Malta","b":"1F1F2-1F1F9","j":["flag","mt","nation","country","banner"]},"flag-mauritius":{"a":"Flag: Mauritius","b":"1F1F2-1F1FA","j":["flag","mu","nation","country","banner"]},"flag-maldives":{"a":"Flag: Maldives","b":"1F1F2-1F1FB","j":["flag","mv","nation","country","banner"]},"flag-malawi":{"a":"Flag: Malawi","b":"1F1F2-1F1FC","j":["flag","mw","nation","country","banner"]},"flag-mexico":{"a":"Flag: Mexico","b":"1F1F2-1F1FD","j":["flag","mx","nation","country","banner"]},"flag-malaysia":{"a":"Flag: Malaysia","b":"1F1F2-1F1FE","j":["flag","my","nation","country","banner"]},"flag-mozambique":{"a":"Flag: Mozambique","b":"1F1F2-1F1FF","j":["flag","mz","nation","country","banner"]},"flag-namibia":{"a":"Flag: Namibia","b":"1F1F3-1F1E6","j":["flag","na","nation","country","banner"]},"flag-new-caledonia":{"a":"Flag: New Caledonia","b":"1F1F3-1F1E8","j":["flag","new","caledonia","nation","country","banner"]},"flag-niger":{"a":"Flag: Niger","b":"1F1F3-1F1EA","j":["flag","ne","nation","country","banner"]},"flag-norfolk-island":{"a":"Flag: Norfolk Island","b":"1F1F3-1F1EB","j":["flag","norfolk","island","nation","country","banner"]},"flag-nigeria":{"a":"Flag: Nigeria","b":"1F1F3-1F1EC","j":["flag","nation","country","banner"]},"flag-nicaragua":{"a":"Flag: Nicaragua","b":"1F1F3-1F1EE","j":["flag","ni","nation","country","banner"]},"flag-netherlands":{"a":"Flag: Netherlands","b":"1F1F3-1F1F1","j":["flag","nl","nation","country","banner"]},"flag-norway":{"a":"Flag: Norway","b":"1F1F3-1F1F4","j":["flag","no","nation","country","banner"]},"flag-nepal":{"a":"Flag: Nepal","b":"1F1F3-1F1F5","j":["flag","np","nation","country","banner"]},"flag-nauru":{"a":"Flag: Nauru","b":"1F1F3-1F1F7","j":["flag","nr","nation","country","banner"]},"flag-niue":{"a":"Flag: Niue","b":"1F1F3-1F1FA","j":["flag","nu","nation","country","banner"]},"flag-new-zealand":{"a":"Flag: New Zealand","b":"1F1F3-1F1FF","j":["flag","new","zealand","nation","country","banner"]},"flag-oman":{"a":"Flag: Oman","b":"1F1F4-1F1F2","j":["flag","om_symbol","nation","country","banner"]},"flag-panama":{"a":"Flag: Panama","b":"1F1F5-1F1E6","j":["flag","pa","nation","country","banner"]},"flag-peru":{"a":"Flag: Peru","b":"1F1F5-1F1EA","j":["flag","pe","nation","country","banner"]},"flag-french-polynesia":{"a":"Flag: French Polynesia","b":"1F1F5-1F1EB","j":["flag","french","polynesia","nation","country","banner"]},"flag-papua-new-guinea":{"a":"Flag: Papua New Guinea","b":"1F1F5-1F1EC","j":["flag","papua","new","guinea","nation","country","banner"]},"flag-philippines":{"a":"Flag: Philippines","b":"1F1F5-1F1ED","j":["flag","ph","nation","country","banner"]},"flag-pakistan":{"a":"Flag: Pakistan","b":"1F1F5-1F1F0","j":["flag","pk","nation","country","banner"]},"flag-poland":{"a":"Flag: Poland","b":"1F1F5-1F1F1","j":["flag","pl","nation","country","banner"]},"flag-st-pierre--miquelon":{"a":"Flag: St. Pierre & Miquelon","b":"1F1F5-1F1F2","j":["flag","flag_st_pierre_miquelon","saint","pierre","miquelon","nation","country","banner"]},"flag-pitcairn-islands":{"a":"Flag: Pitcairn Islands","b":"1F1F5-1F1F3","j":["flag","pitcairn","nation","country","banner"]},"flag-puerto-rico":{"a":"Flag: Puerto Rico","b":"1F1F5-1F1F7","j":["flag","puerto","rico","nation","country","banner"]},"flag-palestinian-territories":{"a":"Flag: Palestinian Territories","b":"1F1F5-1F1F8","j":["flag","palestine","palestinian","territories","nation","country","banner"]},"flag-portugal":{"a":"Flag: Portugal","b":"1F1F5-1F1F9","j":["flag","pt","nation","country","banner"]},"flag-palau":{"a":"Flag: Palau","b":"1F1F5-1F1FC","j":["flag","pw","nation","country","banner"]},"flag-paraguay":{"a":"Flag: Paraguay","b":"1F1F5-1F1FE","j":["flag","py","nation","country","banner"]},"flag-qatar":{"a":"Flag: Qatar","b":"1F1F6-1F1E6","j":["flag","qa","nation","country","banner"]},"flag-runion":{"a":"Flag: Réunion","b":"1F1F7-1F1EA","j":["flag","flag_reunion","réunion","nation","country","banner"]},"flag-romania":{"a":"Flag: Romania","b":"1F1F7-1F1F4","j":["flag","ro","nation","country","banner"]},"flag-serbia":{"a":"Flag: Serbia","b":"1F1F7-1F1F8","j":["flag","rs","nation","country","banner"]},"flag-russia":{"a":"Flag: Russia","b":"1F1F7-1F1FA","j":["flag","russian","federation","nation","country","banner"]},"flag-rwanda":{"a":"Flag: Rwanda","b":"1F1F7-1F1FC","j":["flag","rw","nation","country","banner"]},"flag-saudi-arabia":{"a":"Flag: Saudi Arabia","b":"1F1F8-1F1E6","j":["flag","nation","country","banner"]},"flag-solomon-islands":{"a":"Flag: Solomon Islands","b":"1F1F8-1F1E7","j":["flag","solomon","islands","nation","country","banner"]},"flag-seychelles":{"a":"Flag: Seychelles","b":"1F1F8-1F1E8","j":["flag","sc","nation","country","banner"]},"flag-sudan":{"a":"Flag: Sudan","b":"1F1F8-1F1E9","j":["flag","sd","nation","country","banner"]},"flag-sweden":{"a":"Flag: Sweden","b":"1F1F8-1F1EA","j":["flag","se","nation","country","banner"]},"flag-singapore":{"a":"Flag: Singapore","b":"1F1F8-1F1EC","j":["flag","sg","nation","country","banner"]},"flag-st-helena":{"a":"Flag: St. Helena","b":"1F1F8-1F1ED","j":["flag","saint","helena","ascension","tristan","cunha","nation","country","banner"]},"flag-slovenia":{"a":"Flag: Slovenia","b":"1F1F8-1F1EE","j":["flag","si","nation","country","banner"]},"flag-svalbard--jan-mayen":{"a":"Flag: Svalbard & Jan Mayen","b":"1F1F8-1F1EF","j":["flag","flag_svalbard_jan_mayen"]},"flag-slovakia":{"a":"Flag: Slovakia","b":"1F1F8-1F1F0","j":["flag","sk","nation","country","banner"]},"flag-sierra-leone":{"a":"Flag: Sierra Leone","b":"1F1F8-1F1F1","j":["flag","sierra","leone","nation","country","banner"]},"flag-san-marino":{"a":"Flag: San Marino","b":"1F1F8-1F1F2","j":["flag","san","marino","nation","country","banner"]},"flag-senegal":{"a":"Flag: Senegal","b":"1F1F8-1F1F3","j":["flag","sn","nation","country","banner"]},"flag-somalia":{"a":"Flag: Somalia","b":"1F1F8-1F1F4","j":["flag","so","nation","country","banner"]},"flag-suriname":{"a":"Flag: Suriname","b":"1F1F8-1F1F7","j":["flag","sr","nation","country","banner"]},"flag-south-sudan":{"a":"Flag: South Sudan","b":"1F1F8-1F1F8","j":["flag","south","sd","nation","country","banner"]},"flag-so-tom--prncipe":{"a":"Flag: São Tomé & Príncipe","b":"1F1F8-1F1F9","j":["flag","flag_sao_tome_principe","sao","tome","principe","nation","country","banner"]},"flag-el-salvador":{"a":"Flag: El Salvador","b":"1F1F8-1F1FB","j":["flag","el","salvador","nation","country","banner"]},"flag-sint-maarten":{"a":"Flag: Sint Maarten","b":"1F1F8-1F1FD","j":["flag","sint","maarten","dutch","nation","country","banner"]},"flag-syria":{"a":"Flag: Syria","b":"1F1F8-1F1FE","j":["flag","syrian","arab","republic","nation","country","banner"]},"flag-eswatini":{"a":"Flag: Eswatini","b":"1F1F8-1F1FF","j":["flag","sz","nation","country","banner"]},"flag-tristan-da-cunha":{"a":"Flag: Tristan Da Cunha","b":"1F1F9-1F1E6","j":["flag"]},"flag-turks--caicos-islands":{"a":"Flag: Turks & Caicos Islands","b":"1F1F9-1F1E8","j":["flag","flag_turks_caicos_islands","turks","caicos","islands","nation","country","banner"]},"flag-chad":{"a":"Flag: Chad","b":"1F1F9-1F1E9","j":["flag","td","nation","country","banner"]},"flag-french-southern-territories":{"a":"Flag: French Southern Territories","b":"1F1F9-1F1EB","j":["flag","french","southern","territories","nation","country","banner"]},"flag-togo":{"a":"Flag: Togo","b":"1F1F9-1F1EC","j":["flag","tg","nation","country","banner"]},"flag-thailand":{"a":"Flag: Thailand","b":"1F1F9-1F1ED","j":["flag","th","nation","country","banner"]},"flag-tajikistan":{"a":"Flag: Tajikistan","b":"1F1F9-1F1EF","j":["flag","tj","nation","country","banner"]},"flag-tokelau":{"a":"Flag: Tokelau","b":"1F1F9-1F1F0","j":["flag","tk","nation","country","banner"]},"flag-timorleste":{"a":"Flag: Timor-Leste","b":"1F1F9-1F1F1","j":["flag","flag_timor_leste","timor","leste","nation","country","banner"]},"flag-turkmenistan":{"a":"Flag: Turkmenistan","b":"1F1F9-1F1F2","j":["flag","nation","country","banner"]},"flag-tunisia":{"a":"Flag: Tunisia","b":"1F1F9-1F1F3","j":["flag","tn","nation","country","banner"]},"flag-tonga":{"a":"Flag: Tonga","b":"1F1F9-1F1F4","j":["flag","to","nation","country","banner"]},"flag-turkey":{"a":"Flag: Turkey","b":"1F1F9-1F1F7","j":["flag","turkey","nation","country","banner"]},"flag-trinidad--tobago":{"a":"Flag: Trinidad & Tobago","b":"1F1F9-1F1F9","j":["flag","flag_trinidad_tobago","trinidad","tobago","nation","country","banner"]},"flag-tuvalu":{"a":"Flag: Tuvalu","b":"1F1F9-1F1FB","j":["flag","nation","country","banner"]},"flag-taiwan":{"a":"Flag: Taiwan","b":"1F1F9-1F1FC","j":["flag","tw","nation","country","banner"]},"flag-tanzania":{"a":"Flag: Tanzania","b":"1F1F9-1F1FF","j":["flag","tanzania","united","republic","nation","country","banner"]},"flag-ukraine":{"a":"Flag: Ukraine","b":"1F1FA-1F1E6","j":["flag","ua","nation","country","banner"]},"flag-uganda":{"a":"Flag: Uganda","b":"1F1FA-1F1EC","j":["flag","ug","nation","country","banner"]},"flag-us-outlying-islands":{"a":"Flag: U.S. Outlying Islands","b":"1F1FA-1F1F2","j":["flag","flag_u_s_outlying_islands"]},"flag-united-nations":{"a":"Flag: United Nations","b":"1F1FA-1F1F3","j":["flag","un","banner"]},"flag-united-states":{"a":"Flag: United States","b":"1F1FA-1F1F8","j":["flag","united","states","america","nation","country","banner"]},"flag-uruguay":{"a":"Flag: Uruguay","b":"1F1FA-1F1FE","j":["flag","uy","nation","country","banner"]},"flag-uzbekistan":{"a":"Flag: Uzbekistan","b":"1F1FA-1F1FF","j":["flag","uz","nation","country","banner"]},"flag-vatican-city":{"a":"Flag: Vatican City","b":"1F1FB-1F1E6","j":["flag","vatican","city","nation","country","banner"]},"flag-st-vincent--grenadines":{"a":"Flag: St. Vincent & Grenadines","b":"1F1FB-1F1E8","j":["flag","flag_st_vincent_grenadines","saint","vincent","grenadines","nation","country","banner"]},"flag-venezuela":{"a":"Flag: Venezuela","b":"1F1FB-1F1EA","j":["flag","ve","bolivarian","republic","nation","country","banner"]},"flag-british-virgin-islands":{"a":"Flag: British Virgin Islands","b":"1F1FB-1F1EC","j":["flag","british","virgin","islands","bvi","nation","country","banner"]},"flag-us-virgin-islands":{"a":"Flag: U.S. Virgin Islands","b":"1F1FB-1F1EE","j":["flag","flag_u_s_virgin_islands","virgin","islands","us","nation","country","banner"]},"flag-vietnam":{"a":"Flag: Vietnam","b":"1F1FB-1F1F3","j":["flag","viet","nam","nation","country","banner"]},"flag-vanuatu":{"a":"Flag: Vanuatu","b":"1F1FB-1F1FA","j":["flag","vu","nation","country","banner"]},"flag-wallis--futuna":{"a":"Flag: Wallis & Futuna","b":"1F1FC-1F1EB","j":["flag","flag_wallis_futuna","wallis","futuna","nation","country","banner"]},"flag-samoa":{"a":"Flag: Samoa","b":"1F1FC-1F1F8","j":["flag","ws","nation","country","banner"]},"flag-kosovo":{"a":"Flag: Kosovo","b":"1F1FD-1F1F0","j":["flag","xk","nation","country","banner"]},"flag-yemen":{"a":"Flag: Yemen","b":"1F1FE-1F1EA","j":["flag","ye","nation","country","banner"]},"flag-mayotte":{"a":"Flag: Mayotte","b":"1F1FE-1F1F9","j":["flag","yt","nation","country","banner"]},"flag-south-africa":{"a":"Flag: South Africa","b":"1F1FF-1F1E6","j":["flag","south","africa","nation","country","banner"]},"flag-zambia":{"a":"Flag: Zambia","b":"1F1FF-1F1F2","j":["flag","zm","nation","country","banner"]},"flag-zimbabwe":{"a":"Flag: Zimbabwe","b":"1F1FF-1F1FC","j":["flag","zw","nation","country","banner"]},"flag-england":{"a":"Flag: England","b":"1F3F4-E0067-E0062-E0065-E006E-E0067-E007F","j":["flag","english"]},"flag-scotland":{"a":"Flag: Scotland","b":"1F3F4-E0067-E0062-E0073-E0063-E0074-E007F","j":["flag","scottish"]},"flag-wales":{"a":"Flag: Wales","b":"1F3F4-E0067-E0062-E0077-E006C-E0073-E007F","j":["flag","welsh"]}},"aliases":{}}
\ No newline at end of file
diff --git a/vector/src/main/res/values-ar/strings.xml b/vector/src/main/res/values-ar/strings.xml
index d82181d374..9249228546 100644
--- a/vector/src/main/res/values-ar/strings.xml
+++ b/vector/src/main/res/values-ar/strings.xml
@@ -62,7 +62,7 @@
أرسلتَ صورةً.أرسلتَ ملصقًا.
- دعوة منك
+ دعوتكأنشأ %1$s الغرفةأنشأتَ الغرفةدعوتَ %1$s
@@ -1135,4 +1135,99 @@
المزامنة الأولية:
\nينتظر رد الخادم…غير %1$s اسمه الى %2$s
+
+ %1$s أضاف %2$s كعنوان لهذه الغرفة.
+ %1$s أضاف %2$s كعنوان لهذه الغرفة.
+ %1$s أضاف %2$s كعنوانين لهذه الغرفة.
+ %1$s أضاف %2$s كعناوين لهذه الغرفة.
+ %1$s أضاف %2$s كعناوين لهذه الغرفة.
+ %1$s أضاف %2$s كعناوين لهذه الغرفة.
+
+ فقط في هذه الغُرفة
+ لن يكونوا جزءًا من %s
+ إنضم إلى مساحتي %1$s %2$s
+ تخطي في الوقت الراهن
+ إنشاء مساحة
+ انضم إلى المساحة
+ الانضمام على أي حال
+ هذا الاسم المستعار غير متوفر في الوقت الحالي.
+\nحاول مرة أخرى لاحقًا، أو اطلب من مسؤول الغرفة التحقق مما إذا كان لديك وصول.
+ أنت لست في أي غرفة حتى الآن. فيما يلي بعض الغرف المقترحة، ولكن يمكنك رؤية المزيد بالزر الأخضر أسفل اليمين.
+ مرحبًا بك في %1$s، %2$s.
+
+ %d شخص تعرفه قد انضم بالفعل
+ %d شخص تعرفه قد انضم بالفعل
+ %d شخصان تعرفهم قد انضموا بالفعل
+ %d أشخاص تعرفهم قد انضموا بالفعل
+ %d أشخاص تعرفهم قد انضموا بالفعل
+ %d أشخاص تعرفهم قد انضموا بالفعل
+
+ استكشِف الغُرف
+ أضف غُرف
+ غادر المساحة
+ هل أنت متأكد أنك تريد مغادرة المساحة؟
+ انت الشخص الوحيد هنا إذا غادرت، فلن يتمكن أي شخص من الانضمام في المستقبل، بما في ذلك أنت.
+ هذه المساحة ليست عامة. لن تتمكن من الانضمام مرة أخرى بدون دعوة.
+ أنت المسؤول عن هذه المساحة، تأكد من أنك قمت بنقل حق المسؤول إلى عضو آخر قبل المغادرة.
+ أضف الغُرف الموجودة ومساحة
+ أضف غُرف
+ مرحبًا بك في المساحات!
+ تعد المساحات طريقة جديدة لتجميع الغرف والأشخاص.
+ أنت مدعو
+ مساحة تجريبية - غُرفة مقيدة.
+ علم كمقترحة
+ علم كغير مقترحة
+ إدارة الغُرف والمساحات
+ مساحة تجريبية - فقط أعرض المُيتِّمة في الصفحة الرئيسية
+ تشعر بالتجربة؟
+\nيمكنك إضافة مساحات موجودة إلى مساحة.
+ يرجى الاتصال بمسؤول الخادم الخاص بك للحصول على مزيد من المعلومات
+ يبدو أن خادمك لا يدعم المساحات بعد
+ هذه المساحة لا تحتوي على غُرف
+ قد تكون بعض الغُرف مخفية لأنها خاصة وأنك بحاجة إلى دعوة.
+\nليس لديك إذن لإضافة غُرف.
+ قد تكون بعض الغُرف مخفية لأنها خاصة وأنك بحاجة إلى دعوة.
+ يتطلب التحذير دعم الخادم وإصدار الغرفة التجريبية
+ %s يدعوك
+ تبحث عن شخص ما ليس في %s؟
+ إدارة الغُرف
+ إجعل هَذِهِ المساحة عَامَّة
+ مقترح
+
+ %1$s أضاف العنوان البديل %2$s لهذه الغرفة.
+ %1$s أضاف العنوان البديل %2$s لهذه الغرفة.
+ %1$s أضاف العنوانين البديل %2$s لهذه الغرفة.
+ %1$s أضاف العناوين البديل %2$s لهذه الغرفة.
+ %1$s أضاف العناوين البديل %2$s لهذه الغرفة.
+ %1$s أضاف العناوين البديل %2$s لهذه الغرفة.
+
+ أنت أزلت العنوان الرئيسي لهذه الغرفة.
+ %1$s أزال العنوان الرئيسي لهذه الغُرفة.
+ أنت غيرت العنوان الرئيسي لهذه الغرفة إلى %1$s.
+ أنت أضفت %1$s وحذفت %2$s كعنوان لهذه الغرفة.
+ %1$s أضاف %2$s وحذف %3$s كعناوين لهذه الغرفة.
+
+ أنت أزلت %1$s كعنوان لهذه الغرفة.
+ أنت أزلت %1$s كعنوان لهذه الغرفة.
+ أنت أزلت %1$s كعنوانين لهذه الغرفة.
+ أنت أزلت %1$s كعناوين لهذه الغرفة.
+ أنت أزلت %1$s كعناوين لهذه الغرفة.
+ أنت أزلت %1$s كعناوين لهذه الغرفة.
+
+
+ %1$s أزال %2$s كعنوان لهذه الغرفة.
+ %1$s أزال %2$s كعنوان لهذه الغرفة.
+ %1$s أزال %2$s كعنوانين لهذه الغرفة.
+ %1$s أزال %2$s كعناوين لهذه الغرفة.
+ %1$s أزال %2$s كعناوين لهذه الغرفة.
+ %1$s أزال %2$s كعناوين لهذه الغرفة.
+
+
+ أنت أضفت %1$s كعنوان لهذه الغرفة.
+ أنت أضفت %1$s كعنوان لهذه الغرفة.
+ أنت أضفت %1$s كعنوانين لهذه الغرفة.
+ أنت أضفت %1$s كعناوين لهذه الغرفة.
+ أنت أضفت %1$s كعناوين لهذه الغرفة.
+ أنت أضفت %1$s كعناوين لهذه الغرفة.
+
\ No newline at end of file
diff --git a/vector/src/main/res/values-bg/strings.xml b/vector/src/main/res/values-bg/strings.xml
index cf51e0546d..13e254acf7 100644
--- a/vector/src/main/res/values-bg/strings.xml
+++ b/vector/src/main/res/values-bg/strings.xml
@@ -2402,4 +2402,38 @@
Директно съобщениеИзпрати историята на заявките за споделяне на ключовеНяма повече резултати
+ Съобщението беше изпратено
+ Начална синхронизация:
+\nИзтегляне на данни…
+ Начална синхронизация:
+\nИзчакване на отговор от сървъра…
+ Празна стая (беше %s)
+
+ %1$s, %2$s, %3$s и %4$d друг
+ %1$s, %2$s, %3$s и %4$d други
+
+ %1$s, %2$s, %3$s и %4$s
+ %1$s, %2$s и %3$s
+ Променихте видео конференцията
+ Видео конференцията беше променена от %1$s
+ Прекратихте видео конференцията
+ Видео конференцията беше прекратена от %1$s
+ Стартирахте видео конференция
+ Беше стартирана видео конференция от %1$s
+ 🎉 Забранено е участието на всякакви сървъри! Тази стая вече е неизползваема.
+ Няма промени.
+ • Сървърите съдържащи IP адреси ще бъдат блокирани.
+ • Сървърите съдържащи IP адреси ще бъдат разрешени.
+ • Сървърите съдържащи %s бяха премахнати от списъка с разрешени.
+ • Сървърите съдържащи %s ще бъдат разрешени.
+ "• Сървърите съдържащи %s бяха премахнати от списъка с блокирани."
+ "• Сървърите съдържащи %s ще бъдат блокирани."
+ Променихте сървърните разрешения (ACL) за тази стая.
+ %s промени разрешенията (ACL) за тази стая.
+ • Сървърите съдържащи IP адрес са блокирани.
+ • Сървърите съдържащи IP адрес са разрешени.
+ • Сървърите съдържащи %s са разрешени.
+ • Сървърите съдържащи %s са блокирани.
+ Настроихте сървърните разрешения (ACL) за тази стая.
+ %s настрой разрешенията (ACL) за тази стая.
\ No newline at end of file
diff --git a/vector/src/main/res/values-cs/strings.xml b/vector/src/main/res/values-cs/strings.xml
index 663ee6b641..7523be029e 100644
--- a/vector/src/main/res/values-cs/strings.xml
+++ b/vector/src/main/res/values-cs/strings.xml
@@ -384,7 +384,7 @@
Založit účetPřihlásit seOdhlásit se
- Adresa URL domácího serveru
+ Adresa domovského serveruAdresa URL serveru identitHledatZačít novou konverzaci
@@ -430,7 +430,7 @@
Prosím, zkontrolujte své e-maily, abyste mohli pokračovat v registraciTento domovský server by se rád přesvědčil, že nejste robotUživatelské jméno již použito
- Domácí server:
+ Domovský server:Server identity:Ověřil/a jsem svoji e-mailovou adresuK resetování hesla zadejte e-mailovou adresu spojenou s vaším účtem:
@@ -775,7 +775,7 @@
PřehledNení konfigurován žádný ověřovací server.Volání se nezdařilo kvůli chybné konfiguraci serveru
- Prosím, požádejte administrátora homeserveru (%1$s) o konfiguraci TURN serveru, aby hovory fungovaly spolehlivě.
+ Prosím, požádejte administrátora domovského serveru (%1$s) o konfiguraci TURN serveru, aby hovory fungovaly spolehlivě.
\n
\nPřípadně můžete zkusit použít veřejný server %2$s, ale nebude tak spolehlivý a budu sdílet Vaši IP adresu s tímto serverem. V nastavení lze toto změnit.Zkuste použít %s
@@ -787,10 +787,10 @@
Nastavte e-mail pro obnovení účtu. Použijte e-mail nebo telefonní číslo volitelně později, aby je našli lidé, kteří vás znají.Toto URL není dostupné, prosím, prověřteTo není platná adresa Matrix serveru
- Homeserver není dostupný na tomto URL, prosím, prověřte
+ Domovský server není dostupný na této adrese, zkontrolujte ji prosímVaše zařízení používá zastaralý bezpečnostní protokol TLS, zranitelný útokem, pro Vaše bezpečí se nebudete moci spojitPovolit server fallback call assist
- Použiiji %s jako nápomoc, pokud Váš homeserver žádnou nenabízí (Vaše IP adresa bude sdělena během hovoru)
+ Použiiji %s jako nápomoc, pokud Váš domovský server žádnou nenabízí (Vaše IP adresa bude sdělena během hovoru)Pro provedení této akce přidat server identit v nastavení.Potvrďte své hesloNelze provést z ${app_name} mobile
@@ -841,8 +841,8 @@
\nTato chyba je mimo kontrolu ${app_name}u. V telefonu není žádný účet Google. Prosím, spusťte správce účtů a doplňte účet Google.Přidat účetRegistrace tokenu
- FCM token se podařilo úspěšné registrovat na homeserveru.
- Registrace FCM tokenu na homeserveru se nezdařila:
+ FCM token se podařilo úspěšné registrovat na domovském serveru.
+ Registrace FCM tokenu na domovském serveru se nezdařila:
\n%1$sSlužba oznámeníSlužba oznámení je v chodu.
@@ -870,10 +870,10 @@
NormálníSnížené soukromíAplikaci potřebuje svolení k chodu na pozadí
- Aplikace na pozadí opravdu nepotřebuje spojení k homeserveru, to by mělo snížit spotřebu
+ Aplikace na pozadí opravdu nepotřebuje spojení k domovskému serveru, to by mělo snížit spotřebu• Oznámení se posílají pomocí Firebase Cloud Messaging• Oznámení pouze obsahují metadata
- • Obsah oznámení je bezpečně uložen přímo na homeserveru Matrixu
+ • Obsah oznámení je bezpečně uložen přímo na domovském serveru Matrixu• Oznámení obsahují metadata a data zprávy• Oznámení neukážou obsah zprávyZvuk oznámení
@@ -937,7 +937,7 @@
Připnout místnosti s nepřečtenými zprávamiRelaceInterní náhled URL
- Náhled odkazů v chatu, pokud Váš homeserver podporuje tuto funkci.
+ Náhled odkazů v chatu, pokud Váš domovský server podporuje tuto funkci.Poslat oznámení o psaníDejte ostatním vědět, že právě píšete.Formát markdown
@@ -956,8 +956,8 @@
Tlačítko enter na dotykové klávesnici odešle zprávu místo nového řádkuDeaktivace účtuDeaktivovat můj účet
- Odhalení
- Správa Vašich nastaveni pro odhalení.
+ Objevování
+ Správa Vašich nastavení pro objevování.Soukromí ohledně oznámení${app_name} může běžet na pozadí, aby spravoval Vaše oznámení bezpečně a v soukromí. To může mít vliv na baterii.Udělit oprávnění
@@ -985,7 +985,7 @@
Heslo:OdeslatPřihlášen jako
- Home server
+ Domovský serverServer identitPovolit integraceSprávce integrací
@@ -1183,8 +1183,8 @@
\nNeznámé relace:Vybrat adresář místnostíServer je partně nedostupný nebo přetížený
- Zadejte homeserver, z něhož si žádáte seznam veřejných místností
- URL homeserveru
+ Zadejte domovský server, z něhož si žádáte seznam veřejných místností
+ Adresa domovského serveruVšechny místnosti na serveru %sVšech %s vlastních místnostíZadat zde…
@@ -1343,7 +1343,7 @@
Avatar přijetíAvatar vypovězeníAvatar
- Abyste mohli dále používat homeserver %1$s, musíte prohlédnout všeobecné podmínky a souhlasit s nimi.
+ Abyste mohli dále používat domovský server %1$s, musíte prohlédnout všeobecné podmínky a souhlasit s nimi.Prohlédnout nyníDeaktivovat účetTo učiní Váš účet trvale nepoužitelným. Nebudete se moci přihlásit a nikdo nebude moci registrovat stejné uživatelské ID. Způsobí odchod Vašeho účtu ze všech místností, jichž se účastní a odstraní podrobnosti Vašeho účtu z ověřovacího serveru. Tato akce je nevratná.
@@ -1363,15 +1363,15 @@
Mez zdrojů překročenaKontaktovat správcekontaktovat Vašeho správce služby
- Tento homeserver překročil jednu ze svých mezí zdrojů, a tak se někteří uživatelé nebudou moci přihlásit.
- Tento homeserver překročil jednu ze svých mezí zdrojů.
- Tent homeserver narazil na svoji měsíční mez aktivních uživatelů, a tak se někteří uživatelé nebudou moci přihlásit.
- Tento homeserver narazil na svoji měsíční mez aktivních uživatelů.
+ Tento domovský server překročil jednu ze svých mezí zdrojů, a tak se někteří uživatelé nebudou moci přihlásit.
+ Tento domovský server překročil jednu ze svých mezí zdrojů.
+ Tent domovský server narazil na svoji měsíční mez aktivních uživatelů, a tak se někteří uživatelé nebudou moci přihlásit.
+ Tento domovský server narazil na svoji měsíční mez aktivních uživatelů.Prosím, %s, aby zvýšili mez.Prosím, %s, abyste mohli službu dále používate.Pomalé načítání členů místnostíZvýší výkon tím, že načte členy místnosti při prvním náhledu.
- Váš homeserver dosud nepodporuje pomalé načtení členů místností. Zkuste později.
+ Váš domovský server dosud nepodporuje pomalé načtení členů místností. Zkuste později.Omlouváme se, došlo k chyběrozbalitsbalit
@@ -1399,7 +1399,7 @@
Začít používat zálohu klíčů(Pokročilé)Zabezpečit zálohu přístupovou frází.
- Uložíme zašifrovanou kopii Vašich klíčů na Vašem homeserveru. Chraňte svoji zálohu přístupovou frází, abyste ji udrželi v bezpečí.
+ Uložíme zašifrovanou kopii Vašich klíčů na Vašem domovském serveru. Chraňte svoji zálohu přístupovou frází, abyste ji udrželi v bezpečí.
\n
\nZ důvodu nejvyšší bezpečnosti by se měla lišit od hesla účtu.Nastavit přístupovou frází
@@ -1418,7 +1418,7 @@
Klíč obnovy byl uložen do %s\'.
\n
\nVarování: může dojít ke smazání tohoto souboru, pokud odstraníte aplikaci.
- Záloha již existuje na Vašem homeserveru
+ Záloha již existuje na Vašem domovském serveruVypadá to, že jste již nastavili zálohu klíče z jiné relace. Chcete ji nahradit zálohou, již právě provádíte\?NahraditZastavit
@@ -1480,7 +1480,7 @@
VerzeAlgoritmusPodpis
- Neplatná odpověď z hledání homeserverů
+ Neplatná odpověď z hledání domovských serverůVolby serveru automaticky${app_name} nalezl vlastní konfiguraci serveru pro doménu Vašeho uživatelského Id \"%1$s\":
\n%2$s
@@ -1525,7 +1525,7 @@
Neznámá chybaNepoužíváte žádný server pro identityNení konfigurován žádný server pro identity, musíte přenastavit heslo.
- Vypadá to, že se chcete připojit k jinému homeserveru. Chcete se odhlásit\?
+ Vypadá to, že se chcete připojit k jinému domovskému serveru. Chcete se odhlásit\?UpravitOdpovědětOpakovat
@@ -1606,7 +1606,7 @@
(upraveno)Úpravy zprávÚpravy nenalezeny
- Vytřídit konverzace…
+ Filtrovat konverzace…Nemůžete najít, co hledáte\?Založit novou místnostPoslat novou přímou zprávu
@@ -1649,7 +1649,7 @@
Souhlaste se všeobecnými podmínkami serveru identit (%s), abyste byli k nalezení podle emailové adresy nebo telefonního čísla.Zapnout podrobné záznamy.Podrobné záznamy pomohou vývojářům mnoha podrobnostmi, odešlete-li RageShake. I když jsou zapnuty, aplikace nezaznamenává obsah zpráv nebo jakákoli soukromá data.
- Prosím, opakujte, jakmile jste přijali všeobecné podmínky svého homeserveru.
+ Prosím, opakujte, jakmile jste přijali všeobecné podmínky svého domovského serveru.Vypadá to, že serveru dlouho trvá odpovědět, to může být způsobeno buď slabým spojením nebo chybou na serveru. Prosím, opakujte za chvíli.Poslat přílohuOtevřít navigační zásuvku
@@ -1746,7 +1746,7 @@
\n
\nChcete se přihlásit webovým klientem\?Omlouváme se, tento server již nepřijímá nové účty.
- Aplikace nemůže založit účet na tomto homeserveru.
+ Aplikace nemůže založit účet na tomto domovském serveru.
\n
\nChcete se přihlásit webovým klientem\?Tato emailová adresa se nevztahuje k žádnému účtu.
@@ -1799,15 +1799,15 @@
\nZastavit registrační proces\?Vybrat matrix.orgVybrat Element Matrix Services
- Vybrat upravený homeserver
+ Vybrat vlastní domovský serverProsím, proveďte vybídnutí captchaPřijmout všeobecné podmínky a pokračovatProsím, nahlédněte do svého emailuPrávě jsme odeslali email na %1$s.
\nNež budete pokračovat se založením účtu, prosím, klikněte na odkaz v něm obsažený.Zadaný kód není správný. Prosím, zkontrolujte.
- Zastaralý homeserver
- Tento homeserver používá za účelem spojení příliš starou verzi. Požádejte správce, aby provedl aktualizaci.
+ Zastaralý domovský server
+ Tento domovský server používá za účelem spojení příliš starou verzi. Požádejte správce, aby provedl aktualizaci.Bylo odesláno příliš mnoho požadavků. Můžete opakovat za %1$d vteřinu…Bylo odesláno příliš mnoho požadavků. Můžete opakovat za %1$d vteřiny…
@@ -1825,7 +1825,7 @@
Znovu se přihlásitPrávě jste se odhlásiliPřihlásit se
- Správce Vašeho homeserveru (%1$s) Vás odhlásil z Vašeho účtu %2$s (%3$s).
+ Správce Vašeho domovského serveru (%1$s) Vás odhlásil z Vašeho účtu %2$s (%3$s).Přihlašte se, abyste získali přístup k šifrovacím klíčům uloženým výlučně v tomto zařízení. Potřebujete je ke čtení všech svých zpráv na jakémkoli zařízení.PřihlásitVyčistit osobní údaje
@@ -1870,8 +1870,8 @@
NezabezpečenéNěco z následujích je patrně narušeno:
\n
-\n- Váš homeserver
-\n- Homeserver uživatele, jejž právě ověřujete
+\n- Váš domovský server
+\n- Domovský server uživatele, jejž právě ověřujete
\n- Spojení do internetu Vaše či dalších uživatelů
\n- Zařízení Vaše či dalších uživatelůVideo.
@@ -2043,7 +2043,7 @@
Jedno z následujících může být ohroženo:
\n
\n- Vaše heslo
-\n- Váš homeserver
+\n- Váš domovský server
\n- Toto zařízení nebo to druhé
\n- Spojení do internetu obou zařízení
\n
@@ -2144,7 +2144,7 @@
Jinak, máte-li již účet a znáte-li svůj identifikátor a heslo, můžete použít tuto metodu:Přihlásit se s mým identifikátorem MatrixuPřihlásit se
- Pokud založíte účet na homeserveru, použijte své Matrix ID (např. @user:domain.com) a heslo níže.
+ Pokud založíte účet na domovském serveru, použijte své Matrix ID (např. @user:domain.com) a heslo níže.Identifikátor uživateleTo není platný identifikátor uživatele. Platný formát: \'@uživatel:homeserver.org\'Nemohu najít platný domovský server. Prosím, zkontrolujte svůj identifikátor
@@ -2229,7 +2229,7 @@
OznámeníVolání ${app_name}u se nezdařiloZaložit spojení v reálném čase se nezdařilo.
-\nProsím, požádejte správce svého homeserveru o konfiguraci TURN serveru, aby volání fungovala spolehlivě.
+\nProsím, požádejte správce svého domovského serveru o konfiguraci TURN serveru, aby volání fungovala spolehlivě.Vybrat zvukové zařízeníTelefonReproduktor
@@ -2458,7 +2458,7 @@
\n
\nVaše zprávy jsou zabezpečeny zámky a pouze Vy a příjemce máte jedinečné klíče k jejich odemknutí.Zprávy zde nejsou e2e šifrovány.
- Tento homeserver používá starou verzi. Požádejte správce svého homeserveru o aktualizaci. Můžete pokračovat, ale některé funkce možná nebudou správně pracovat.
+ Tento domovský server používá starou verzi. Požádejte správce svého domovského serveru o aktualizaci. Můžete pokračovat, ale některé funkce možná nebudou správně pracovat.Omezili jste na pouze pro pozvané.%1$s omezili na pouze pro pozvané.Odebrat z nízké priority
@@ -2521,7 +2521,7 @@
Prosím, zadejte adresu místnostiTato adresa je již obsazenaAdresa místnosti
- Můžete zapnout, pokud bude tato místnost využita pro spolupráci interních týmů na Vašem homeserveru. Později nelze změnit.
+ Můžete zapnout, pokud bude tato místnost využita pro spolupráci interních týmů na Vašem domovském serveru. Později nelze změnit.Trvale blokovat vstup do této místnosti všem, kdo nejsou členy %sSkrýt pokročiléUkázat pokročilé
@@ -2571,7 +2571,7 @@
Zveřejnit tuto adresuPřidat lokální adresuTato místnost nemá žádné lokální adresy
- Nastavte adresy pro tuto místnost, aby uživatelé mohli tuto místnost nalézt přes Váš homeserver (%1$s)
+ Nastavte adresy pro tuto místnost, aby uživatelé mohli tuto místnost nalézt přes Váš domovský server (%1$s)Lokální adresaNová zveřejněná adresa (např. #alias:server)Zatím žádné zveřejněné adresy.
@@ -2726,7 +2726,7 @@
Zpráva odeslánaNeoznačenoExperimentální, prostor - omezená místnost.
- Prostory jsou způsob organizace místností a lidí k práci, zábavě anebo jen pro Vás.
+ Prostory představují nový způsob seskupování místností a osob.Založme pro každé místnost. Později můžete přidat i další, včetně již existujících.Na jakých tématech pracujete\?Založíme pro ně místnosti. Můžete přidat další později.
@@ -2824,4 +2824,39 @@
Komprimuji obrázek…Použít výchozí a dále se neptatVždy se dotázat
+ Některé místnosti mohou být skryté, protože jsou soukromé a potřebujete pozvánku.
+ Některé místnosti mohou být skryté, protože jsou soukromé a potřebujete pozvánku.
+\nK přidávání místností nemáte oprávnění.
+ Tento prostor nemá žádné místnosti
+ Další informace získáte od správce domovského serveru
+ Vypadá to, že váš domovský server zatím Prostory nepodporuje
+ Chcete experimentovat\?
+\nDo prostoru můžete přidat existující prostory.
+ Experimentální prostor - Zobrazit pouze sirotky v Domově
+ Přidat místnosti
+ Jste administrátorem tohoto prostoru, ujistěte se, že jste před odchodem převedli administrátorská práva na jiného člena.
+ Tento prostor není veřejný. Bez pozvánky se do něj nebudete moci znovu připojit.
+ Jste tu jediný člověk. Pokud odejdete, nikdo se k vám v budoucnu nebude moci připojit, včetně vás.
+ Pozvat do %s
+ Tato funkce je ve fázi beta
+ Poskytněte zpětnou vazbu
+ Zpětnou vazbu se nepodařilo odeslat (%s)
+ Děkujeme, vaše zpětná vazba byla úspěšně odeslána
+ V případě dalších dotazů se na mě můžete obrátit
+ Používáte beta verzi prostorů. Vaše zpětná vazba pomůže při tvorbě dalších verzí. Vaše platforma a uživatelské jméno budou zaznamenány, abychom mohli vaši zpětnou vazbu co nejlépe využít.
+ Zpětná vazba
+ Zpětná vazba prostorů
+ Omlouváme se, při pokusu o připojení ke konferenci došlo k chybě
+ Nepojmenovaná místnost
+ Soukromý prostor
+ Veřejný prostor
+ Tento Prostor je veřejný
+ Neznámá osoba
+ Převod na %1$s
+ Konzultace s %1$s
+ Tento server je již uveden v seznamu
+ Nelze najít tento server nebo jeho seznam místností
+ Zadejte název nového serveru, který chcete prozkoumat.
+ Přidat nový server
+ Váš server
\ No newline at end of file
diff --git a/vector/src/main/res/values-de/strings.xml b/vector/src/main/res/values-de/strings.xml
index 03e03cb845..fa6d20d007 100644
--- a/vector/src/main/res/values-de/strings.xml
+++ b/vector/src/main/res/values-de/strings.xml
@@ -280,7 +280,7 @@
AblehnenAnruf beenden
- OK
+ OkAbbrechenSpeichernVerlassen
@@ -292,22 +292,22 @@
SpäterWeiterleitenPermalink
- Quellcode anzeigen
- Entschlüsselten Quellcode anzeigen
+ Rohdaten anzeigen
+ Entschlüsselte Rohdaten anzeigenLöschenUmbenennenInhalt meldenAktives Gespräch
- Konferenzgespräch läuft.
+ Laufendes Konferenzgespräch
\nPer %1$s oder %2$s beitretenSpracheVideo
- Das Gespräch kann nicht gestartet werden, bitte später erneut versuchen
+ Das Gespräch kann nicht gestartet werden, bitte versuche es später erneutAufgrund fehlender Berechtigungen stehen einige Funktionen eventuell nicht zur Verfügung…
- Ihnen fehlt die Berechtigung, ein Konferenzgespräch in diesem Raum zu starten
+ Du kannst in diesem Raum keine Videokonferenz startenKann Gespräch nicht startenSitzungsinformationen
- Konferenzgespräche werden in verschlüsselten Räumen nicht unterstützt
+ Konferenzgespräche in verschlüsselten Räumen werden nicht unterstütztTrotzdem sendenoderEinladen
@@ -350,7 +350,7 @@
RäumeRaumverzeichnisKeine Räume
- Keine öffentl. Räume verfügbar
+ Keine öffentlichen Räume%d Benutzer%d Benutzer
@@ -361,12 +361,12 @@
Problem meldenBitte beschreibe das Problem. Was hast du genau gemacht\? Was sollte passieren\? Was ist tatsächlich passiert\?Problembeschreibung
- Um Probleme diagnostizieren zu können, werden Protokolle dieses Clients zusammen mit dem Fehlerbericht übermittelt. Dieser Fehlerbericht wird, wie die Protokolle und der Screenshot, nicht öffentlich sichtbar sein. Wenn du nur den oben eingegebenen Text senden möchtest, die nachfolgenden Haken entsprechend entfernen:
+ Um Probleme diagnostizieren zu können, werden Protokolle des Clients zusammen mit dem Fehlerbericht übermittelt. Dieser Fehlerbericht wird, wie die Protokolle und der Screenshot, nicht öffentlich sichtbar sein. Wenn du nur den oben eingegebenen Text senden möchtest, die nachfolgenden Haken entsprechend entfernen:Du scheinst dein Telefon frustriert zu schütteln. Möchtest du das Fenster zum Senden eines Fehlerberichts öffnen\?
- Der Fehlerbericht wurde erfolgreich übermittelt
+ Dein Fehlerbericht wurde erfolgreich übermitteltDer Fehlerbericht konnte nicht übermittelt werden (%s)Fortschritt (%s%%)
- Die Anwendung ist während der letzten Benutzung abgestürzt. Möchtest du das Fehler-melden-Fenster öffnen?
+ Die Anwendung ist während der letzten Benutzung abgestürzt. Möchtest du den Fehler melden\?Sende Datei nachGelesenRaum betreten
@@ -374,8 +374,8 @@
Konto erstellenAnmeldenAbmelden
- Home-Server-URL
- Identitätsserver-URL
+ Heimserver-Adresse
+ Identitätsserver-AdresseSuchenNeuen Chat startenSprachanruf starten
@@ -387,8 +387,8 @@
Konto erstellenAbsendenÜberspringen
- Rücksetz-E-Mail senden
- Zur Anmeldemaske zurückkehren
+ Reset-E-Mail senden
+ Zum Anmeldebildschirm zurückkehrenE-Mail oder BenutzernamePasswortNeues Passwort
@@ -415,12 +415,12 @@
Benutzerdefinierte Server-Optionen (erweitert)Bitte überprüfe deinen E-Mail-Posteingang, um die Registrierung abzuschließenRegistrierung mit E-Mail und Telefonnummer zusammen wird zurzeit nicht unterstützt, da die zugrundeliegende Schnittstelle noch nicht existiert. Nur die Telefonnummer wird in den Account übernommen.\n\nDu kannst aber deine E-Mail-Adresse in den Einstellungen zu deinem Profil hinzufügen.
- Dieser Home-Server möchte sicherstellen, dass du kein Roboter bist
- Benutzername wird schon verwendet
- Home-Server:
+ Dieser Homeserver möchte sicherstellen, dass du kein Roboter bist
+ Benutzername bereits vergeben
+ Heimserver:Identitätsserver:Ich habe meine E-Mail-Adresse verifiziert
- Um dein Passwort zurückzusetzen, gib deine mit deinem Account verknüpfte E-Mail-Adresse ein:
+ Um dein Passwort zurückzusetzen, gib die mit deinem Account verknüpfte E-Mail-Adresse ein:Die E-Mail-Adresse, die mit deinem Account verknüpft ist, muss eingegeben werden.Ein neues Passwort muss eingegeben werden.Eine E-Mail wurde an %s gesendet. Bitte dem in der E-Mail enthaltenen Link folgen und anschließend unten klicken.
@@ -470,7 +470,7 @@
Anruf beendetEs klingelt…Eingehender Anruf
- Eingehender Video-Anruf
+ Eingehender VideoanrufEingehender SprachanrufAnruf aktiv…Die Gegenseite hat den Anruf nicht angenommen.
@@ -525,8 +525,8 @@
1 MitgliedRaum verlassen
- Bist du sicher, dass du den Raum verlassen möchtest?
- Bist du sicher, dass du %s aus diesem Chat entfernen möchtest?
+ Raum wirklich verlassen\?
+ %s wirklich aus diesem Chat entfernen möchtest\?ErstellenOnlineOffline
@@ -548,7 +548,7 @@
Nutzer-ID, Name oder E-Mail-AdresseErwähnenSitzungsliste anzeigen
- Du wirst diese Änderung nicht rückgängig machen können, da der Benutzer dieselbe Berechtigungsstufe wie du erhalten wirst.
+ Du wirst diese Änderung nicht rückgängig machen können, da der Benutzer dieselbe Berechtigungsstufe wie du erhalten wird.
\nBist du sicher\?"Bist du sicher, dass du %s in diesen Chat einladen willst?"
@@ -693,7 +693,7 @@
Passwort:AbsendenAngemeldet als
- Home-Server
+ HeimserverIdentitätsserverVerifizierung ausstehendBitte prüfe deinen E-Mail-Posteingang und klicke auf den in der E-Mail enthaltenen Link. Klicke anschließend auf Fortsetzen.
@@ -836,7 +836,7 @@
Raum-Verzeichnis auswählenDer Server kann nicht verfügbar oder überlastet seinGib einen Home-Server ein, um seine öffentlichen Räume aufzulisten
- Home-Server-URL
+ Server-NameAlle Räume auf dem %s-ServerAlle nativen %s-Räume
@@ -853,7 +853,7 @@
1 MonatUnbegrenztOffline
- Nutzer-Verzeichnis
+ NutzerverzeichnisBENUTZER-VERZEICHNIS (%s)Datensparsamer ModusSchriftgröße
@@ -893,7 +893,7 @@
Verifizierung beginnenAnrufLaute Benachrichtigungen
- Lautlose Benachrichtigungen
+ Stumme BenachrichtigungenFoto aufnehmenVideo aufnehmenSystemeigene Kamera verwenden
@@ -913,7 +913,7 @@
Verschlüsselte NachrichtCommunity-DetailsLädt…
- Schließen
+ BeendenCommunitiesCommunity-Namen filternEinladen
@@ -1006,7 +1006,7 @@
%d Mitgliedsänderungen%1$s in %2$s
- Öffne Header
+ Header öffnenProfilbild für LesebestätigungenProfilbild für BemerkungenDatenschutz für Benachrichtigungen
@@ -1022,8 +1022,8 @@
${app_name} kann im Hintergrund laufen um deine Benachrichtigungen sicher und privat zu verwalten. Dies kann den Energieverbrauch beeinflussen.Berechtigung gewährenWähle eine andere Option
- Sende einen Sticker
- Sende Sticker
+ Sticker senden
+ Sticker sendenDu hast aktuell keine Stickerpakete aktiviert.
\n
\nMöchtest du welche hinzufügen\?
@@ -1050,7 +1050,7 @@
DownloadSprechenLeeren
- Verschlüsselungsschlüssel von deinen anderen Sitzungen erneut anfragen.
+ Schlüssel von deinen anderen Sitzungen erneut anfordern.Schlüsselanfrage gesendet.Anfrage gesendetBitte öffne ${app_name} auf einem anderen Gerät, das die Nachricht entschlüsseln kann, damit es die Schlüssel an diese Sitzung senden kann.
@@ -1171,7 +1171,7 @@
Klingelton für eingehende AnrufeWähle Klingelton für Anrufe:Akzeptieren
- Bitte prüfe und akzeptiere die Richtlinien dieses Home-Servers:
+ Bitte lese und akzeptiere die Richtlinien dieses Home-Servers:Tests ausführenLäuft… (%1$d von %2$d)Einer oder mehrere Tests sind fehlgeschlagen. Versuche vorgeschlagene Lösung(en).
@@ -1240,8 +1240,8 @@
Weitere Information: %sKeine validen Google-Play-Dienste gefunden. Benachrichtigungen könnten nicht richtig funktionieren.Videogespräch aktiv…
- Schlüssel-Sicherung
- Schlüssel-Sicherung verwenden
+ Schlüsselsicherung
+ Schlüsselsicherung verwendenSchlüsselsicherung ist nicht abgeschlossen. Bitte warten…ÜberspringenFertig
@@ -1297,7 +1297,7 @@
\n
\nWarnung: Diese Datei wird gelöscht, wenn die Anwendung deinstalliert wird.Wiederherstellungsschlüssel aus Passphrase generieren. Dies kann mehrere Sekunden brauchen.
- Deine Verschlüsselungsschlüssel werden nun im Hintergrund auf deinem Home-Server gesichert. Die initiale Sicherung kann mehrere Minuten dauern.
+ Deine Schlüssel werden nun im Hintergrund auf deinem Home-Server gesichert. Die initiale Sicherung kann mehrere Minuten dauern.Du verlierst möglicherweise den Zugang zu deinen Nachrichten, wenn du dich abmeldest oder das Gerät verlierst.Rufe Backup-Version ab…Nutze deine Wiederherstellungspassphrase, um deinen verschlüsselten Chatverlauf lesen zu können
@@ -1331,19 +1331,19 @@
Die Sicherung hat eine ungültige Signatur von der nicht verifizierten Sitzung %sAbfrage der Vertrauensinformationen für die Sicherung fehlgeschlagen (%s).Um die Schlüsselsicherung für diese Sitzung zu verwenden, stelle sie jetzt mit deiner Passphrase oder deinem Wiederherstellungsschlüssel wieder her.
- Deine gesicherten Verschlüsselungsschlüssel vom Server löschen\? Du wirst deinen Wiederherstellungsschlüssel nicht mehr nutzen können, um deinen verschlüsselten Chatverlauf zu lesen.
- Beim Ausloggen gehen deine verschlüsselten Nachrichten verloren
- Schlüssel-Sicherung wird durchgeführt. Wenn du dich jetzt ausloggst, gehen deine verschlüsselten Nachrichten verloren.
- Schlüssel-Sicherung sollte bei allen Sitzungen aktiviert sein, um den Verlust verschlüsselter Nachrichten zu verhindern.
+ Deine gesicherten Schlüssel vom Server löschen\? Du wirst deinen Wiederherstellungsschlüssel nicht mehr nutzen können, um deinen verschlüsselten Chatverlauf zu lesen.
+ Beim Abmelden gehen deine verschlüsselten Nachrichten verloren
+ Schlüssel-Sicherung wird durchgeführt. Wenn du dich jetzt abmeldest, gehen deine verschlüsselten Nachrichten verloren.
+ Schlüsselsicherung sollte bei allen Sitzungen aktiviert sein, um den Verlust verschlüsselter Nachrichten zu verhindern.Ich möchte meine verschlüsselten Nachrichten nichtSichere Schlüssel…
- Schlüssel-Sicherung verwenden
+ Schlüsselsicherung verwendenSicher\?Sicherung
- Alle verschlüsselten Nachrichten gehen verloren, wenn Du dich ausloggst ohne eine Sicherung der Schlüssel gemacht zu haben.
+ Alle verschlüsselten Nachrichten gehen verloren, wenn Du dich abmeldest ohne die Schlüssel gesichert zu haben.BleibenAbbrechen
- Sicher, dass du dich ausloggen möchtest\?
+ Wirklich abmelden\?Wiederherstellung verschlüsselter NachrichtenBitte gib einen Benutzernamen ein.Der datensparsame Modus sorgt dafür, dass die Präsenz- und Tipp-Benachrichtigungen ausgefiltert werden.
@@ -1427,10 +1427,10 @@
Entschuldigung, Konferenzanrufe mit Jitsi werden auf älteren Geräten (mit älteren Android-Versionen als 6.0) nicht unterstütztSitzung verifizierenUnbekannte IP-Adresse
- Eine neue Sitzung fordert Verschlüsselungsschlüssel an.
-\nSitzungsname: %1$s
-\nZuletzt gesehen: %2$s
-\nWenn du dich nicht mit einer anderen Sitzung angemeldet hast, ignoriere diese Anfrage.
+ Eine neue Sitzung fordert Schlüssel an.
+\nSitzungsname: %1$s
+\nZuletzt gesehen: %2$s
+\nWenn du nicht mit einer anderen Sitzung angemeldet bist, ignoriere diese Anfrage.Eine unverifizierte Sitzung fordert Verschlüsselungs-Schlüssel an.
\nSitzungsname: %1$s
\nZuletzt gesehen: %2$s
@@ -1530,19 +1530,19 @@
Schnelle ReaktionenAllgemeinEinstellungen
- Sicherheit & Privatsphäre
+ Sicherheit und PrivatsphäreExpertePush-RegelnKeine Push-Regeln definiertKeine registrierten Push-Gateways
- Sprache & Video
- Hilfe & Über
+ Sprache und Video
+ Hilfe und ÜberToken registrierenMache einen VorschlagBitte schreibe unten deine Anmerkungen.Beschreibe hier deine AnmerkungVersteckte Ereignisse in der Zeitleiste anzeigen
- Direkte Nachrichten
+ DirektnachrichtenWarten…Miniaturbild wird verschlüsselt…Datei wird verschlüsselt…
@@ -1580,7 +1580,7 @@
KeineWiderrufenTrennen
- Kein Integrationsserver konfiguriert.
+ Kein Identitätsserver konfiguriert.Anruf aufgrund eines falsch konfigurierten Servers fehlgeschlagenVersuche es mit %sNicht erneut fragen
@@ -1618,13 +1618,13 @@
ausstehendGib einen neuen Identitätsserver einKonnte keine Verbindung zum Home-Server herstellen
- Bitte frage den Administrator deines Home-Servers (%1$s) nach der Einrichtung eines TURN-Servers, damit Anrufe zuverlässig funktionieren.
+ Bitte bitte den Administrator deines Heimservers (%1$s) einen \"TURN-Server\" einzurichten, damit Anrufe zuverlässig funktionieren.
\n
-\nAlternativ kann ein öffentlicher Server auf %2$s genutzt werden. Dies wird jedoch weniger zuverlässig sein und deine IP-Adresse wird gegenüber diesem Server preisgegeben. Du kannst den Server auch in den Einstellungen anpassen.
+\nAlternativ kann ein öffentlicher Server auf %2$s genutzt werden. Dies wird jedoch weniger zuverlässig sein und deine IP-Adresse gegenüber diesem Server preisgeben. Du kannst den Server auch in den Einstellungen anpassen.Dies ist keine Adresse eines Matrixservers
- Kann Home-Server nicht bei dieser URL erreichen. Bitte überprüfen
- Wir nutzen %s als Assistenten wenn dein Home-Server keinen anbietet (Deine IP-Adresse wird während des Anrufs geteilt)
- Führe einen Identitätsserver in deinen Einstellungen hinzu um diese Aktion auszuführen.
+ Kann Home-Server nicht unter dieser URL erreichen. Bitte überprüfen
+ Wir nutzen %s als Ersatz, wenn dein Heimserver keinen anbietet (Deine IP-Adresse wird während des Anrufs geteilt)
+ Füge einen Identitätsserver in deinen Einstellungen hinzu, um diese Aktion auszuführen.Passwort bestätigenDu kannst dies nicht auf einem mobilen ${app_name} tunAuthentifizierung benötigt
@@ -1774,7 +1774,7 @@
E-MailNeues PasswortAchtung!
- Eine Änderung deines Passworts wird alle Ende-zu-Ende-Verschlüsselungsschlüssel zurücksetzen. Dein verschlüsselter Chatverlauf wird dadurch unlesbar. Richte eine Schlüsselsicherung ein oder exportiere deine Raumschlüssel von einer anderen Sitzung bevor du dein Passwort zurücksetzt.
+ Eine Änderung deines Passworts wird alle Ende-zu-Ende-Schlüssek zurücksetzen. Dein verschlüsselter Chatverlauf wird dadurch unlesbar. Richte die Schlüsselsicherung ein oder exportiere deine Raumschlüssel aus einer anderen Sitzung, bevor du dein Passwort zurücksetzt.FortfahrenDiese E-Mail-Adresse ist mit keinem Benutzerkonto verknüpftPrüfe deinen Posteingang
@@ -1855,18 +1855,18 @@
Du bist abgemeldetAnmeldenDein Home-Server-Administrator (%1$s) hat dich von deinem Konto %2$s (%3$s) abgemeldet.
- Melde dich an, um ausschließlich auf diesem Gerät gespeicherte Verschlüsselungsschlüssel wiederherzustellen. Du benötigst sie, um deine verschlüsselten Nachrichten auf jedem Gerät zu lesen.
+ Melde dich an, um ausschließlich auf diesem Gerät gespeicherte Schlüssel wiederherzustellen. Du benötigst sie, um deine verschlüsselten Nachrichten auf jedem Gerät zu lesen.AnmeldenPasswortPersönliche Daten löschen
- Warnung: Persönliche Daten (einschließlich Verschlüsselungsschlüssel) werden weiterhin auf diesem Gerät gespeichert.
-\n
+ Warnung: Persönliche Daten (einschließlich Schlüssel) werden weiterhin auf diesem Gerät gespeichert.
+\n
\nDeaktiviere diese Option, wenn dieses Gerät nicht mehr verwendet wird oder sich bei einem anderen Konto angemeldet werden soll.Alle Daten löschenDaten löschenAlle aktuell auf diesem Gerät gespeicherten Daten löschen\?
\nMelde dich erneut an, um auf deine Kontodaten und Nachrichten zuzugreifen.
- Du verlierst den Zugriff auf verschlüsselte Nachrichten, außer, du meldest dich an, um den Verschlüsselungsschlüssel wiederherzustellen.
+ Du verlierst den Zugriff auf verschlüsselte Nachrichten, außer, du meldest dich an, um den Schlüssel wiederherzustellen.Daten löschenDie aktuelle Sitzung gehört dem Benutzer %1$s. Die angegebenen Anmeldeinformationen sind vom Benutzer %2$s. Dies wird nicht von ${app_name} unterstützt.
\nBitte zuerst die Daten löschen und dann erneut anmelden.
@@ -2207,21 +2207,21 @@
AblehnenErfolgEchtzeitverbindung konnte nicht hergestellt werden.
-\nBitte den Administrator deines Home-Servers, einen TURN-Server so zu konfigurieren, dass Anrufe zuverlässig funktionieren.
- Wähle Audiogerät aus
+\nBitte den Administrator deines Home-Servers, einen TURN-Server zu konfigurieren, dass Anrufe zuverlässig funktionieren.
+ Audiogerät auswählenTelefonieLautsprecher
- Headset
- Drahtloses Headset
- Wechsle Kamera
+ Kopfhörer
+ Drahtloser Kopfhörer
+ Kamera wechselnFrontkameraHintere Kamera
- Deaktiviere HD-Qualität
- Aktiviere HD-Qualität
+ HD-Qualität deaktivieren
+ HD-Qualität aktivierenSSL-Fehler: Die Identität des Gegenüber ist noch nicht verifiziert.SSL Fehler.Aktiver Anruf (%s)
- Zum Anruf zurückkehren
+ Zurück zum AnrufEinladung zurückziehenMöchtest du dich zurückstufen\?Du kannst die Zurückstufung nicht rückgängig machen und du wirst die Rechte nur mit einem anderen berechtigten Benutzer im Raum zurückerlangen können.
@@ -2347,7 +2347,7 @@
Du kannst auf diese Nachricht nicht zugreifenWarte auf diese Nachricht. Das könnte eine Weile dauernKann nicht entschlüsselt werden
- Wegen der Ende-zu-Ende-Verschlüsselung könnte es sein, dass du auf jemandes Nachricht warten musst, weil die Verschlüsselungsschlüssel nicht ordnungsgemäß gesendet worden sind.
+ Wegen der Ende-zu-Ende-Verschlüsselung könnte es sein, dass du auf jemandes Nachricht warten musst, weil die Schlüssel nicht ordnungsgemäß gesendet worden sind.Du kannst auf diese Nachricht nicht zugreifen, weil der Sender dich blockiert hatDu kannst auf diese Nachricht nicht zugreifen, weil der Sender deiner Sitzung nicht vertrautDu kannst auf diese Nachricht nicht zugreifen, weil der Sender absichtlich die Schlüssel nicht gesendet hat
@@ -2619,7 +2619,7 @@
OderSendet Schnee ❄️Sendet Konfetti 🎉
- Sendet die nachfolgende Nachricht mit Schnee
+ Nachricht mit Schnee sendenSendet die nachfolgende Nachricht mit KonfettiNachrichtenverlauf bereinigenEinmalanmeldung
@@ -2757,7 +2757,7 @@
Willkommen zu %1$s, %2$s.Warnung benötigt Server Unterstützung und eine experimentelle RaumversionExperimenteller Space - Zugangsbeschränkter Raum.
- Mit Spaces hast du die Möglichkeit Personen und Räume für die Arbeit, zum Spaß oder nur für dich selbst zu gruppieren.
+ Mit Spaces hast du die Möglichkeit Personen und Räume zu gruppieren.Sag hallo zu Spaces!Füge bereits existierende Räume und Spaces hinzuVorübergehend überspringen
@@ -2813,8 +2813,8 @@
Suchst du jemanden außerhalb %s\?Wir erstellen dir für jedes einen Raum. Du kannst jederzeit weitere Räume hinzufügen.Räume und Spaces verwalten
- Als \"vorgeschlagen\" markieren
- Als \"nicht vorgeschlagen\" markieren
+ Als vorgeschlagen markieren
+ Als nicht vorgeschlagen markierenVorgeschlagenTeile deinen öffentlichen Space mit der WeltRäume verwalten
@@ -2834,4 +2834,36 @@
Bild wird komprimiert…Als Standard festsetzen und nicht mehr fragenJedes Mal fragen
+ Gib den Namen eines neuen Servers ein, den du erkunden möchtest.
+ Neuen Server hinzufügen
+ Dein Server
+ Du verwendest die Betaversion von Spaces. Mit Feedback hilfst du uns, die nächsten Versionen zu verbessern. Dabei wird uns deine Platform übermittelt, damit wir deine Rückmeldung optimal nutzen können.
+ Möglicherweise musst du extra eingeladen werden, damit du die Räume siehst.
+ Möglicherweise musst du extra eingeladen werden, damit du die Räume siehst.
+\nDie fehlt die Berechtigung, Räume hinzuzufügen.
+ Du kannst Unterspaces zu einem Space hinzufügen.
+ Experimentelle Spaces - Nur verweiste Räume auf Startseite
+ Leider ist ein Fehler beim Betreten der Konferenz aufgetreten
+ Unbenannter Raum
+ Dieser Space hat noch keine Räume
+ Für weitere Infos kontaktiere bitte die Administration des Homeservers
+ Dein Homeserver scheint Spaces noch nicht zu unterstützen
+ Räume hinzufügen
+ Du bist der Admin von diesem Space. Stelle vor dem Verlassen sicher, dass du die Adminrechte an jemand anderen übergibst.
+ Dieser Raum ist nicht öffentlich. Du wirst ihn ohne Einladung nicht wieder betreten können.
+ Du bist die einzige Person hier. Wenn du den Space verlässt, ist er für immer verloren (eine lange Zeit).
+ Einladen in %s
+ Privater Space
+ Öffentlicher Space
+ Dieser Space ist öffentlich
+ Unbekannte Person
+ Dieses Feature ist in der Beta
+ Feedback geben
+ Fehler beim Senden vom Feedback (%s)
+ Dein Feedback wurde erfolgreich versandt. Danke!
+ Mich bei Fragen kontaktieren
+ Feedback
+ Spaces Feedback
+ Dieser Server ist schon in der Liste vorhanden
+ Server oder Raumliste kann nicht gefunden werden
\ No newline at end of file
diff --git a/vector/src/main/res/values-eo/strings.xml b/vector/src/main/res/values-eo/strings.xml
index 4e506e1d59..36ba941734 100644
--- a/vector/src/main/res/values-eo/strings.xml
+++ b/vector/src/main/res/values-eo/strings.xml
@@ -215,7 +215,7 @@
Malhela haŭtoNigra haŭtoSpegulante…
- Atentante eventojn
+ Atentante okazojnLaŭtaj sciigojSilentaj sciigojMesaĝoj
@@ -586,7 +586,7 @@
La ligilo %1$s kondukas vin al alia retejo: %2$s.
\n
\nĈu vi certe volas daŭrigi\?
- Ni ne povis krei vian rektan interparolon. Bonvolu kontroli la invitotajn uzantojn kaj reprovi.
+ Ni ne povis krei vian individuan ĉambron. Bonvolu kontroli la invitotajn uzantojn kaj reprovi.Por diagnozi problemojn, protokolo de ĉi tiu kliento sendiĝos kune kun ĉi tiu erar-raporto. Ĉi tiu erar-raporto, inkluzive la protokolon kaj la ekrankopion, ne estos publike videbla. Se vi preferus sendi nur la ĉi-supran tekston, bonvolu malmarki:Ŝajnas, ke vi kolere skuas la telefonon. Ĉu vi volas malfermi la erar-raportilon\?La aplikaĵo lastatempe fiaskis. Ĉu vi volas malfermi la fiasko-raportilon\?
@@ -741,9 +741,9 @@
Tiu ĉi salutaĵo ne povas konigi ĉi tiun kontrolon al aliaj viaj salutaĵoj.
\nLa kontrolo konserviĝos loke kaj estos konigota de venonta versio de la aplikaĵo.Reatenti
- ${app_name} renkontis problemon bildigante enhavon de evento kun la identigilo «%1$s»
+ ${app_name} renkontis problemon bildigante enhavon de okazo kun la identigilo «%1$s»${app_name} ne traktas mesaĝojn de speco «%1$s»
- ${app_name} ne traktas eventojn de speco «%1$s»
+ ${app_name} ne traktas okazojn de speco «%1$s»Salti al legokonfirmoPropra (%1$d) en %2$sOrdinara en %1$s
@@ -1030,7 +1030,7 @@
Montri pasvortonFermi rubandon pri savkopiado de ŝlosilojKrei novan ĉambron
- Krei novan rektan interparolon
+ Krei novan individuan ĉambronKunsendiŜajnas, ke la servilo longe ne respondas. Tion povus kaŭzi malbona retkonekto aŭ eraro ĉe la servilo. Bonvolu reprovi iom poste.Bonvolu reprovi leginte la uzokondiĉojn de via hejmservilo.
@@ -1086,9 +1086,9 @@
Sendante bildeton (%1$s / %2$s)Ĉifrante bildeton…Atendante…
- Rektaj interparoloj
+ Individuaj ĉambrojMontri plenan historion en ĉifritaj ĉambroj
- Montri kaŝitajn eventojn en historio
+ Montri kaŝitajn okazojn en historioMalsukcesis sendi la proponon (%s)Dankon, la propono sukcese sendiĝisPriskribu vian proponon ĉi tie
@@ -1119,7 +1119,7 @@
NomoKREINova ĉambro
- Rektaj interparoloj
+ Individuaj ĉambrojĈambrojAntaŭrigardo al ĉambro legebla de ĉiuj ankoraŭ ne estas subtenata de ${app_name}Ne eblas antaŭrigardi ĉi tiun ĉambron
@@ -1129,10 +1129,10 @@
ŜanĝiNeniu reto. Bonvolu kontroli vian retkonekton.Krei novan ĉambron
- Misformita evento, ne povas montri
+ Misformita okazo, ne povas montriLastafoje redaktiĝis de %1$s je %2$s
- Evento reguliĝis de administranto de la ĉambro
- Evento foriĝis de uzanto
+ Okazo reguliĝis de administranto de la ĉambro
+ Okazo foriĝis de uzantoMontri anstataŭaĵon je forigitaj mesaĝojMontri forigitajn mesaĝojnMesaĝo foriĝis
@@ -1142,9 +1142,9 @@
ŜatiKonsentiReagoj
- Viaj ĉambroj montriĝos ĉi tie
+ Viaj ĉambroj montriĝos ĉi tie. Tuŝetu al la «+» dekstre sube por trovi jam ekzistantajn, aŭ fari viajn proprajn.Ĉambroj
- Viaj rektaj interparoloj montriĝos ĉi tie
+ Viaj individuaj ĉambroj montriĝos ĉi tie. Tuŝetu la plus-signon sube dekstre por krei iun.InterparolojRetrovu viajn nelegitajn mesaĝojn ĉi tieBonvenu hejmen!
@@ -1464,7 +1464,7 @@
Nova invitoNovaj mesaĝojĈambro
- Nova evento
+ Nova okazo%1$s kaj %2$s%1$s en %2$s kaj %3$s%1$s en %2$s
@@ -1549,7 +1549,7 @@
Pretendita ŝlosilo kun fingrospuro je Ed25519Identiga ŝlosilo je Curve25519Identigilo de uzanto
- Informoj pri evento
+ Informoj pri okazoInformoj pri tutvoja ĉifrado%s provis enlegi precizan momenton en la historio de ĉambro, sed ne povis ĝin trovi.Haŭto
@@ -1713,11 +1713,11 @@
Antaŭrigardi vidaŭdaĵojn antaŭ sendiVibri je mencio de uzantoInkluzivas ŝanĝojn de profilbildo kaj prezenta nomo.
- Montri eventojn de konto
+ Montri okazojn de kontoInvitoj, forpeloj kaj forbaroj ne estos influitaj.
- Montri eventojn de aliĝo kaj foriro
- Inkluzivas eventojn de invitoj, aliĝoj, foriroj, forpeloj, forbaroj, kaj ŝanĝoj de profilbildo aŭ prezenta nomo.
- Montri stateventojn de ĉambranoj
+ Montri okazojn de aliĝo kaj foriro
+ Inkluzivas okazojn de invitoj, aliĝoj, foriroj, forpeloj, forbaroj, kaj ŝanĝoj de profilbildo aŭ prezenta nomo.
+ Montri statokazojn de ĉambranojKlaku la kvitancojn por detala listo.Montri kvitancojnMontri tempindikojn en 12-hora formo
@@ -1847,7 +1847,7 @@
Solvi problemojn pri diagnozoSolvi problemojn pri sciigojPrivateco de sciigoj
- Graveco de sciigo laŭ evento
+ Graveco de sciigo laŭ okazoAltnivelaj agordoj pri sciigojCertigu, ke vi klakis la ligilon en la reltereo, kiun ni sendis al vi.Ĉu forigi %s\?
@@ -1871,7 +1871,7 @@
Avizoj de eksteraj liverantojUzokondiĉojForiri de interparolo
- Rekta ĉambro
+ Individua ĉambroForigi prioritatonĈiuj mesaĝoj (laŭte)
@@ -1923,7 +1923,7 @@
Ĉu malaltigi vian propran povnivelon\?Nuligi invitonSALUTAĴOJ
- Rektaj ĉambroj
+ Individuaj ĉambrojVOKOADMINISTRILOJPor fari ĉi tion, aldonu identigan servilon en viaj agordoj.
@@ -2000,7 +2000,7 @@
PritraktotaNeniu rezulto troviĝis, uzu «Aldoni per identigilo de Matrix» por serĉi servile.Ŝalti viŝon por respondo en historio
- Sendi novan rektan mesaĝon
+ Sendi novan individuan mesaĝonFormato:Entajpu hejmservilon, kies publikaj ĉambroj listiĝosHejmekrano
@@ -2212,11 +2212,11 @@
Ŝlosilpetoj${app_name} por AndroidŜlosiloj jam estas ĝisdataj!
- Evento foriĝis de administranto de la ĉambro, kialo: %1$s
- Evento foriĝis de uzanto, kialo: %1$s
+ Okazo foriĝis de administranto de la ĉambro, kialo: %1$s
+ Okazo foriĝis de uzanto, kialo: %1$sKialo de redaktoKialigi
- Ĉu vi certe volas forigi ĉi tiun eventon\? Sciu, ke se vi forigos nomon de ĉambro aŭ ŝanĝon de temo, ĝi povus malfari la ŝanĝon.
+ Ĉu vi certe volas forigi ĉi tiun okazon\? Sciu, ke se vi forigos nomon de ĉambro aŭ ŝanĝon de temo, ĝi povus malfari la ŝanĝon.Konfirmi forigonSendi bildon je la originala grando
@@ -2278,7 +2278,7 @@
Administri salutaĵojnMontri ĉiujn salutaĵojnAktivaj salutaĵoj
- La administranto de via servilo malŝaltis implicitan tutvojan ĉifradon en privataj ĉambroj kaj rektaj interparoloj.
+ La administranto de via servilo malŝaltis implicitan tutvojan ĉifradon en privataj kaj individuaj ĉambroj.Delegaj subskriboj ne estas ŝaltitajDelegaj subskriboj estas ŝaltitaj.
\nŜlosiloj ne estas fidataj
@@ -2298,14 +2298,14 @@
Post ŝalto, ne eblas malŝalti ĉifradon de ĉambro. Mesaĝoj en ĉifrita ĉambro ne estas videblaj al la servilo, nur al la partoprenantoj de la ĉambro. Ŝalto de ĉifrado povus malhelpi ĝustan funkciadon de multaj pontoj kaj robotoj.Ĉu ŝalti ĉifradon\?Post ŝalto, ne eblas ĉifradon malŝalti.
- Ŝalti tutvojan ĉifradon
+ Ŝalti tutvojan ĉifradon…Redaktilo de mesaĝojHistorioSendas la donitan faron en ĉielarkaj kolorojĈi tiu konto malaktiviĝis.Neĝusta uzantonomo kaj/aŭ pasvorto. La enigita pasvorto komenciĝas aŭ finiĝas per spaco, bonvolu ĝin kontroli.Sendas mesaĝon kiel platan tekston, sen interpretado de Markdown
- Agordi gravecon de sciigoj laŭ evento
+ Agordi gravecon de sciigoj laŭ okazoSolvi problemojnGradaltigoj de ĉambrojĈifritaj mesaĝoj en grupaj interparoloj
@@ -2404,7 +2404,7 @@
Agordu adresojn por ĉi tiu ĉambro, por ke uzantoj ĝin facile trovu per via hejmservilo (%1$s)Ŝanĝi la temonGradaltigi la ĉambron
- Sendi eventojn de la speco «m.room.server_acl»
+ Sendi okazojn de la speco «m.room.server_acl»Ŝanĝi permesojnŜanĝi nomon de ĉambroŜanĝi videblecon de historio
@@ -2481,4 +2481,302 @@
• Serviloj akordaj kun %s estas forbaritaj.Vi agordis la alirpermesojn por serviloj por ĉi tiu ĉambro.%s agordis la alirpermesojn por serviloj por ĉi tiu ĉambro.
+ Uzantoj
+ Eraris transdonado de voko
+ Transdonu
+ Unue konsulti
+
+ 1 aktiva voko (%1$s) · 1 paŭzigita voko
+ 1 aktiva voko (%1$s) · %2$d paŭzigitaj vokoj
+
+
+ Paŭzigita voko
+ %1$d paŭzigitaj vokoj
+
+ Aktiva voko (%1$s)
+ Eraris serĉado de la telefonnumero
+ Ciferplato
+ Revoki
+ Ĉi tiu voko finiĝis
+ %1$s rifuzis ĉi tiun vokon
+ Vi rifuzis ĉi tiun vokon %1$s
+ Vi nun enas ĉi tiun vokon
+ %1$s komencis vokon
+ Vi komencis vokon
+ Ligilo al Matrix
+ Forĵeti ŝanĝojn
+ Ekzistas nekonservitaj ŝanĝoj. Ĉu ili forĵetiĝu\?
+ Rapidresponda kodo ne estas skanita!
+ Nevalida rapidresponda kodo (nevalida URI)!
+ Ne eblas kun vi mem!
+ Havigi per telefona mesaĝo
+ Ŝanĝi vian nunan personan identigan numeron
+ Ŝanĝi personan identigan numeron
+
+ %d ero
+ %d eroj
+
+ Serĉi kontaktojn en Matrix
+ Agordi profilbildon
+ Konsento de la uzanto ne estas donita.
+ Havigu ĉi tiun kodon al aliuloj, por ke ili povu ekbabili kun vi, skaninte ĝin.
+ Mia kodo
+ Havigi mian kodon
+ Skani rapidrespondan kodon (QR)
+ Tio ne estas valida rapidresponda kodo (QR) de Matrix
+ 🔐️ Aliĝu al mi per ${app_name}
+ Saluton, parolu kun mi per ${app_name}: %s
+ Inviti amikojn
+ Aldoni personojn
+ Malsukcesis agordi delegajn subskribojn
+ sendas neĝon ❄️
+ sendas konfetojn 🎉
+ Sendas la donitan mesaĝon kun neĝo
+ Sendas la donitan mesaĝon kun konfetoj
+ "Temo: "
+ Aldonu temon
+ %s por sciigi, pri kio temas la ĉambro.
+ Ĉi tio estas la komenco de via individua ĉambro kun %s.
+ Ĉi tio estas la komenco de interparolado.
+ Ĉi tio estas la komenco de %s.
+ Sendi vidaŭdaĵojn en originala grandeco
+
+ Sendi filmon en originala grandeco
+ Sendi filmojn en originala grandeco
+
+ La limo ne estas konata.
+ Via hejmservilo akceptas kunsendaĵojn (dosierojn, vidaŭdaĵojn, ktp.) kun grandeco ĝis %s.
+ Datumlimo por alŝutoj al servilo
+ Versio de servilo
+ Nomo de servilo
+ Vi ne havas permeson ŝalti ĉifradon en ĉi tiu ĉambro.
+ Individua ĉambro
+ Kreante ĉambron…
+ Iuj signoj ne estas permesitaj
+ Bonvolu doni adreson de ĉambro
+ Ĉi tiu adreso jam estas uzata
+ Adreso de ĉambro
+ Vi povus ŝalti ĉi tion, ekzemple se la ĉambro nur estus uzata por kunlaborado de internaj skipoj sur en hejmservilo. Ne eblas ŝanĝi ĉi tiun agordon poste.
+ Malebligi aliĝon la ĉambro al tiuj, kiuj ne venas de %s
+ Kaŝi altnivelajn
+ Montri altnivelajn
+ Vakigi historion
+ ununura saluto
+ Saluti per %s
+ Registriĝi per %s
+ Daŭrigi per %s
+ Aŭ
+ Agordoj de ĉambro
+ %1$d el %2$d
+ Ne povis trakti havigitajn datumojn
+ Ĉi tiu dosiero estas tro granda por alŝuto.
+ Ĉi tiu funkcio ankoraŭ estas prova
+ Krei novan individuan ĉambron per skanado de rapidresponda kodo (QR)
+ Krei novan individuan ĉambron per identigilo de Matrix
+ Vi povas kontakti min okaze de pliaj demandoj
+ Vi uzas provan version de aroj. Viaj prikomentoj helpos formi la sekvajn versiojn. Via platformo kaj uzantonomo notiĝos, por ke ni povus uzi viajn prikomentojn kiel eble plej bone.
+ Prikomentoj
+ Prikomentoj pri aroj
+ Oni ne povas antaŭrigardi ĉi tiun ĉambron. Ĉu vi volas eniri\?
+ Ĉi tiu ĉambro nun ne estas disponebla.
+\nReprovu poste, aŭ petu administranton de ĉambro kontroli, ĉu vi rajtas aliri.
+ Por trovi kontaktojn, kiujn vi jam konas, ĉu vi akceptas sendi informojn pri viaj kontaktoj (telefonnumerojn kaj/aŭ retpoŝtadresojn) al la agordita identiga servilo (%1$s)\?
+\n
+\nPor pli bona privateco, la datumoj haketiĝos antaŭ sendo.
+ Sendi retpoŝtadresojn kaj telefonnumerojn
+ Konsenti
+ Nuligi mian konsenton
+ Vi ne konsentis sendi retpoŝtadresojn kaj telefonnumerojn al ĉi tiu identiga servilo por trovi aliajn uzantojn el viaj kontaktoj.
+ Vi konsentis sendi retpoŝtadresojn kaj telefonnumerojn al ĉi tiu identiga servilo por trovi aliajn uzantojn el viaj kontaktoj.
+ Sendi retpoŝtadresojn kaj telefonnumerojn
+ Rekomendoj
+ Kontaktoj
+ Konataj uzantoj
+ Freŝaj
+ Rapidresponda kodo (QR)
+ Aldoni per rapidresponda kodo (QR)
+ Serĉi per nomo
+ Serĉi per nomo aŭ identigilo
+ Densigante filmon %d%%
+ Densigante bildon…
+ Prikomenti
+ Malsukcesis sendi la prikomentojn (%s)
+ Dankon, viaj prikomentoj sendiĝis sukcese
+ Ĉiu ajn en aro kun ĉi tiu ĉambro povas ĝin trovi kaj aliĝi. Nur administrantoj de ĉi tiu ĉambro povas ĝin arigi.
+ Aroj
+ Ĉiu ajn povas trovi kaj aliĝi la ĉambron
+ Publika
+ Nur invititoj povas trovi kaj aliĝi
+ Privata
+ Nekonata agordo de aliro (%s)
+ Ĉiu ajn povas frapi al la ĉambro, aliaj ĉambranoj poste povas akcepti au rifuzi
+ Lokaj adresoj
+ Nova publikigita adreso (ekz. #kromnomo:servilo)
+ Neniuj aliaj adresoj ankoraŭ publikiĝis.
+ Neniuj aliaj adresoj ankoraŭ publikiĝis, aldonu iun ĉi-sube.
+ Ĉu publikigi ĉi tiun ĉambron al la katalogo de ĉambroj de %1$s\?
+ Ĉu forigi la adreson «%1$s»\?
+ Ĉu malpublikigi la adreson «%1$s»\?
+ Publikigi
+ Publikigi novan adreson permane
+ Aliaj publikigitaj adresoj:
+ Ĉefa adreso
+ Ĉi tio estas la ĉefa adreso
+ Publikigitaj adresoj povas esti uzataj de iu ajn por aliĝi al via ĉambro. Por publikiĝi, adreso devas unue esti loka.
+ Publikigitaj adresoj
+ Adresoj de ĉambro
+ Vidi kaj administri adresojn de ĉi tiu ĉambro, kaj ĝian videblecon en la katalogo de ĉambroj.
+ Adresoj de ĉambro
+ Permesi al gastoj aliĝi
+ Aliro al ĉambro
+ Ŝanĝoj al legebleco de historio aplikiĝos nur al mesaĝoj venontaj al la ĉambro. Videbleco de jama historio restos senŝanĝa.
+ Aldoni butonon por malfermi bildosignan klavaron al la redaktilo de mesaĝoj
+ Montri bildosignan klavaron
+ Uzu la ordonon «/confetti» aŭ sendu mesaĝon enhavantan la signojn ❄️ aŭ 🎉
+ Montri efektojn en babilujo
+ Vi ne rajtas ĝisdatigi la rolojn bezonatajn por ŝanĝi diversajn partojn de la ĉambro
+ Uzi implicite kaj ne plu demandi
+ Ĉiam demandi
+ Aroj
+ Invitoj
+ Rekomendataj ĉambroj
+ Baskuli
+ Mesaĝo sendiĝis
+ Enporti ŝlosilon el dosiero
+ Malfermi fenestraĵojn
+ Ekrankopio
+ Malsukcesis aŭtentikigi
+ ${app_name} postulas enigon de viaj salutiloj por tiu ĉi ago.
+ Pardonu, eraris via aliĝo al la grupa voko
+ Iuj ĉambroj povas esti kaŝitaj ĉar ili estas privataj kaj vi bezonas inviton.
+ Iuj ĉambroj povas esti kaŝitaj, ĉar ili estas privataj kaj vi bezonas inviton.
+\nVi ne havas permeson aldoni ĉambrojn.
+ Ĉi tiu aro ne havas ĉambrojn
+ Bonvolu kontakti administranton de via hejmservilo por pliaj informoj
+ Ŝajnas, ke via hejmservilo ankoraŭ ne subtenas arojn
+ Ĉu vi eksperimentemas\?
+\nVi povas arigi jamajn arojn.
+ Eksperimenta aro – montri nur orfojn en la Hejmo
+ Administri ĉambrojn kaj arojn
+ Marki nerekomendita
+ Marki rekomendita
+ Rekomenditaj
+ Publikigi ĉi tiun aron
+ Administri ĉambrojn
+ Ĉu vi serĉas iun, kiu ne estas en %s\?
+ %s invitas vin
+ Averto: bezonas subtenon de servilo kaj eksperimentan version de ĉambro
+ Eksperimenta aro – limigita ĉambro.
+ Vi estas invitita
+ Aroj prezentas novan manieron grupigi ĉambrojn kaj personojn.
+ Bonvenu al aroj!
+ Aldoni ĉambrojn
+ Aldoni jamajn ĉambrojn kaj arojn
+ Vi estas administranto de ĉi tiu aro. Certigu, ke vi transdonis administrajn rajtojn al alia ano, antaŭ ol vi vere foriros.
+ Ĉi tiu aro ne estas publika. Vi ne povos ree aliĝi sen invito.
+ Vi estas la sola persono ĉi tie. Se vi foriros, neniu plu povos aliĝi, inkluzive vin mem.
+ Ĉu vi certe volas foriri de la aro\?
+ Foriri de aro
+ Aldoni ĉambrojn
+ Esplori ĉambrojn
+
+ %d persono, kiun vi konas, jam aliĝis
+ %d personoj, kiujn vi konas, jam aliĝis
+
+ Bonvenu al %1$s, %2$s.
+ Vi ne jam enas iun ĉambron. Ĉi-sube estas kelkaj proponitaj ĉambroj, sed vi povas vidi pliajn per la verda butono sube-dekstre.
+ Ĉi tiu kromnomo ne estas nun atingebla.
+\nReprovu poste, aŭ petu al administranto de ĉambro kontroli, ĉu vi rajtas aliri.
+ Tamen aliĝi
+ Aliĝi al aro
+ Krei aron
+ Provizore preterpasi
+ Aliĝu al mia aro %1$s %2$s
+ Oni ne apartenos al %s
+ Nur al ĉi tiu ĉambro
+ Oni povos esplori en %s
+ Inviti al %s
+ Havigi ligilon
+ Inviti per uzantonomo
+ Inviti per retpoŝto
+ Nun ĉeestas nur vi. %s eĉ pli bonos kun aliuloj.
+ Inviti al %s
+ Inviti personojn
+ Invitu personojn al via aro
+ Priskribo
+ Kreante aron…
+ Hazarda
+ Ĝenerala
+ Ni kreu por ĉio apartan ĉambron. Vi povos aldoni pliajn poste, inkluzive jam ekzistantajn.
+ Kion vi prilaboras\?
+ Ni kreos ĉambrojn por ili. Vi povos aldoni pliajn poste.
+ Kiajn diskutojn vi volus havi en %s\?
+ Donu al ĝi nomon kaj pluiĝu.
+ Aldonu kelkajn detalojn por helpi identigi la aron. Vi povos ilin ŝanĝi iam ajn.
+ Aldonu kelkajn detalojn por elstarigi ĝin. Vi povos ilin ŝanĝi iam ajn.
+ Krei aron
+ Nur por invititoj, plej bona por vi mem aŭ skipoj
+ Privata
+ Malfermita al ĉiuj, plej bona por komunumoj
+ Publika
+ Privata spaco por vi kaj viaj kolegoj
+ Mi kaj kolegoj
+ Privata aro por organizi viajn ĉambrojn
+ Nur mi
+ Certigu, ke la ĝustaj personoj povas aliri al %s. Vi povas ŝanĝi ĉi tion pli poste.
+ Kun kiu laboras vi\?
+ Por aliĝi al jam ekzistanta aro, vi bezonos inviton.
+ Vi povos ŝanĝi ĉi tion poste
+ Kian aron volas vi krei\?
+ Aroj estas nova maniero grupigi ĉambrojn kaj personojn
+ Via privata aro
+ Via publika aro
+ Aldoni aron
+ Ĉu vi certe volas forigi ĉiujn nesenditajn mesaĝojn en ĉi tiu ĉambro\?
+ Forigi nesenditajn mesaĝojn
+ Malsukcesis sendi mesaĝojn
+ Ĉu vi certe volas nuligi sendon de mesaĝo\?
+ Forigi ĉiujn malsukcesitajn mesaĝoj
+ Malsukcesis
+ Sendite
+ Sendante
+ Foriri de ĉambro kun la donita identigilo (aŭ de la nuna ĉambro, kun nenio)
+ Aliĝi al aro kun la donita identigilo
+ Krei aron
+ Enhavo de okazo
+ Sendiĝis statokazo!
+ Sendiĝis okazo!
+ Misformita okzao
+ Mankas speco de mesaĝo
+ Neniu enhavo
+ Enhavo de okzao
+ Statŝlosilo
+ Speco
+ Sendi propran statokazon
+ Redakti enhavon
+ Statokazoj
+ Sendi statokazon
+ Sendi propran okazon
+ Esplori staton de ĉambro
+ Programistaj iloj
+ Ĉi tiu ĉambro estas publika
+ Vidi legokonfirmojn
+ Ne sciigi
+ Sciigi sen sono
+ Sciigi per sono
+ Mesaĝo ne sendiĝis pro eraro
+ Nekontrolite
+ Kontrolite
+ Fermi elektilon de bildosignoj
+ Malfermi elektilon de bildosignoj
+ Fidata fidnivelo
+ Averta fidnivelo
+ Implicita fidnivelo
+ Elektitaj
+ Filmo
+ Ĉi tiu ĉambro havas nesenditan malneton
+ Iuj mesaĝoj ne sendiĝis
+ Forigi profilbildon
+ Ŝanĝi profilbildon
+ Bildo
\ No newline at end of file
diff --git a/vector/src/main/res/values-es/strings.xml b/vector/src/main/res/values-es/strings.xml
index 076ca3ffed..5e5b4727e6 100644
--- a/vector/src/main/res/values-es/strings.xml
+++ b/vector/src/main/res/values-es/strings.xml
@@ -384,7 +384,7 @@
Crear cuentaEnviarOmitir
- Enviar Correo Electrónico de Restauración
+ Enviar un Correo Electrónico de RestauraciónRegresar a la pantalla de inicio de sesiónCorreo electrónico o nombre de usuarioContraseña
@@ -1012,7 +1012,7 @@ Por favor permite el acceso en la próxima ventana emergente para descubrir usua
Enviar una pegatina
- Actualmente no tienes ningún paquete de pegatinas habilitado.
+ Actualmente no tienes ningún paquete de stickers habilitado.
\n
\n¿Añadir algunos ahora\?Desactivar Cuenta
@@ -1173,7 +1173,7 @@ Por favor permite el acceso en la próxima ventana emergente para descubrir usua
CancelarIgnorarMarcar como leído
- Iniciar sesión con single-sign-on
+ Iniciar sesión con un solo registroTu dispositivo usa una versión anticuada e insegura del protocolo de seguridad TLS. Por tu seguridad no puedes conectarteAjustes avanzados de notificacionesImportancia de notificación por evento
@@ -2589,7 +2589,7 @@ Por favor permite el acceso en la próxima ventana emergente para descubrir usua
EsperarContinuarVolver
- Los espacios son una manera de agrupar salas y personas por trabajo, diversión o lo que quieras.
+ Los espacios son una nueva manera para agrupar salas y personas.¡Bienvenido a los Espacios!Únete a un EspacioCrea un Espacio
@@ -2599,4 +2599,176 @@ Por favor permite el acceso en la próxima ventana emergente para descubrir usua
Los Espacios son una nueva forma de agrupar salas y personasSincronización inicial:
\nEsperando respuesta del servidor…
+ El mensaje no se pudo enviar por un error
+ Ver confirmaciones de recibido
+ Esta sala es publica
+ Herramientas de Desarrollador
+ Enviar Evento Personalizado
+ Enviar Estado del Evento
+ Enviar Estado del Evento Personalizado
+ Estado de los Eventos
+ Algunas salas pueden estar ocultas debido a que son privadas y necesitas una invitación.
+\nTu no tenes permiso para añadir salas.
+ Algunas salas pueden estar ocultas debido a que son privadas y necesitas una invitación para verlas.
+ Este espacio no tiene salas
+ Marcar como no sugerido
+ Marcar como sugerido
+ Sugerido
+ Hacer este espacio publico
+ %s te invita
+ Espacio Experimental - Sala Restringida.
+ Estas invitado
+ Añadir salas
+ Estas seguro de que quieres salir de este espacio\?
+ Salir de este espacio
+ Añadir salas
+ Explorar salas
+ Unirte igualmente
+ Saltar por ahora
+ Solo esta sala
+ Invitar a %s
+ Compartir enlace
+ Invitar por nombre de usuario
+ Invitar por correo
+ Invitar a %s
+ Invitar gente a tu espacio
+ Invitar gente
+ Descripción
+ Creando espacio…
+ Aleatorio
+ General
+ En que cosas estas trabajando\?
+ Dale un nombre para continuar.
+ Solo por invitación, lo mejor para tu mismo o para equipos
+ Privado
+ Abierto a cualquiera, lo mejor para comunidades
+ Publico
+ Yo y mis compañeros
+ Solo yo
+ Tu espacio privado
+ Tu espacio publico
+ Borrar todos los mensajes fallidos
+ Falló
+ Enviado
+ Enviando
+ Evento enviado!
+ Contenido del evento
+ Evento malformado
+ Sin contenido
+ Tipo
+ Editar Contenido
+ No notificar
+ Notificar sin sonido
+ Notificar con sonido
+ Sin revisar
+ Revisado
+ Cerrar selector de Emojis
+ Abrir selector de Emojis
+ Seleccionada
+ Video
+ Borrar avatar
+ Cambiar avatar
+ Imagen
+ Importar clave desde un archivo
+ Abrir widgets
+ Captura de pantalla
+ Usuarios
+ Transferir
+ Conectar
+ Preguntar primero
+
+ Llamada pausada
+ %1$d llamadas pausadas
+
+ Llamada activa (%1$s)
+ Pad de marcado
+ Esta llamada ha terminado
+ %1$s ha cortado esta llamada
+ Has cortado esta llamada %1$s
+ Ahora estas en esta llamada
+ %1$s empezó una llamada
+ Has empezado una llamada
+
+ %d entrada
+ %d entradas
+
+ Configurar avatar
+ enviar confeti 🎉
+ enviar nieve ❄️
+
+ Enviar el video con el tamaño original
+ Enviar los videos con el tamaño original
+
+ El limite es desconocido.
+ Versión del servidor
+ Nombre del servidor
+ Creando sala…
+ Esta dirección ya está en uso
+ Dirección de la sala
+ Esconder avanzado
+ Mostrar avanzado
+ Iniciar sesión con %s
+ Registrarse con %s
+ Continuar con %s
+ O
+ Ajustes de la sala
+ %1$d de %2$d
+ El archivo es muy grande como para subirlo.
+ Esta característica esta en fase beta
+ Enviar correos electrónicos y números de teléfono
+ Ha ocurrido un error al enviar reacción (%s)
+ Gracias, tu reacción ha sido enviada satisfactoriamente
+ Dar una reacción
+ Esta sala no tiene una vista previa. Quieres unirte a ella\?
+ Esta sala no es accesible en este momento.
+\nIntentalo de nuevo luego, o pídele al administrador de la sala que se fije si tienes acceso.
+ Salir de la conferencia actual y cambiar a otra\?
+ Lo siento, un error ha ocurrido cuando se intentaba unir a la conferencia
+ Configuración de acceso desconocido (%s)
+ Publicar esta sala públicamente en el directorio de salas %1$s\?
+ Permitir que invitados se unan
+ Quitar publicación de esta dirección
+ No se puede recibir la visibilidad actual de esta sala (%1$s).
+ Borrar la dirección \"%1$s\"\?
+ Quitar publicación de dirección \"%1$s\"\?
+ Publicar
+ Publicar una nueva dirección manualmente
+ Otras direcciones publicadas:
+ Mirar y controlar las direcciones de esta sala, y su visibilidad en la carpeta de salas.
+ Usar como predeterminado y no volver a preguntar
+ Invita
+ Enviar emails y números de teléfono
+ Buscar Nombre
+ Comprimiendo video %d%%
+ Comprimiendo imagen…
+ Feedback de espacios
+ Versión de sala
+ Espacios
+ Cualquiera puede encontrar y unirse a esta sala
+ Publico
+ Privada
+ Publicar esta dirección
+ Añadir una dirección local
+ Esta sala no tiene direcciones locales
+ Direcciones locales
+ Nueva dirección publicada (ej. #alias:servidor)
+ No hay otras direcciones publicadas.
+ Dirección principal
+ Esta es la dirección principal
+ Direcciones publicadas
+ Direcciones de la Sala
+ Direcciones de la sala
+ Acceso a la sala
+ No puedes hacer eso desde ${app_name} móvil
+ Siempre preguntar
+ Espacios
+ mostrar todas las salas en el directorio de salas, incluyendo salas con contenido explícito.
+ Mostrar salas con contenido explícito
+ Directorio de la sala
+ Salas sugeridas
+ Nuevo valor
+ Cambiar
+ Mensaje enviado
+ Sincronización inicial:
+\nDescargando datos…
\ No newline at end of file
diff --git a/vector/src/main/res/values-et/strings.xml b/vector/src/main/res/values-et/strings.xml
index cd58abcbf7..88081c59c5 100644
--- a/vector/src/main/res/values-et/strings.xml
+++ b/vector/src/main/res/values-et/strings.xml
@@ -1514,7 +1514,7 @@
Vali jututubade loendServer kas pole kättesaadav või on ülekoormatudSisesta koduserveri nimi, mille avalike jututubade loendit soovid näha
- Koduserveri aadress
+ Serveri aadressKõik jututoad %s serverisKõik %s jututoadKirjuta siia…
@@ -2676,7 +2676,7 @@
Hoiatus: eeldab serveripoolset tuge ning katselise jututoa versiooni kasutamistKatseline kogukonnakeskus - ligipääs on piiratud.Sa oled saanud kutse
- Kogukonnakeskused on võimalus siduda jututubasid ja inimesi nii tööks, meelelahutuseks kui lihtsalt sinu jaoks.
+ Kogukonnakeskused on uus võimalus siduda jututubasid ja inimesi.Tere tulemast kasutama kogukonnakeskuseid!Lisa olemasolevaid jututubasid ja kogukonnakeskuseidKas oled kindel, et soovid lahkuda kogukonnakeskusest\?
@@ -2771,4 +2771,39 @@
Teen pildi väiksemaks…Kasuta vaikeseadistusena ja ära küsi uuestiAlati küsi
+ Mõned mitteavalikud jututoad võivad olla peidetud. Nendega liitumiseks vajad kutset.
+ Mõned mitteavalikud jututoad võivad olla peidetud. Nendega liitumiseks vajad kutset.
+\nUue jututubade lisamiseks sul õigused puuduvad.
+ Selles kogukonnakeskuses pole jututube
+ Lisateavet saad oma koduserveri haldajalt
+ Tundub, et sinu koduserver veel ei võimalda kogukonnakeskuste kasutamist
+ Kas sa tahad katsetada\?
+\nSa võid kogukonnakeskusele lisada ka teisi kogukonnakeskuseid.
+ Katseline kogukonnakeskus, mis näitab avalehel vaid hüljatud jututube
+ Lisa jututube
+ Sa oled selle kogukonnakeskuse haldaja. Enne oma lahkumist palun lisa siia veel vähemalt üks uus haldaja.
+ See ei ole avalik kogukonnakeskus. Ilma kutseta sa ei saa uuesti liituda.
+ Sa oled siin viimane osaleja. Kui sa nüüd lahkud, siis mitte keegi, kaasa arvatud sa ise, ei saa hiljem enam liituda.
+ Kutse kogukonnakeskusesse %s
+ Tegemist on beeta-taseme funktsionaalsusega
+ Jaga tagasisidet
+ Tagasiside saatmine ei õnnestunud (%s)
+ Tänud, sinu tagasiside saatmine õnnestus
+ Kui sul on lisaküsimusi, siis vastan neile hea meelega
+ Sa kasutad kogukonnakeskuste beetaversiooni. Sinu saadetud teabe alusel saame teha parandusi selle järgmistes versioonides. Saadetud info parimaks kasutamiseks lisame sinna ka sinu kasutatava operatsioonisüsteemi nime ja sinu kasutajanime.
+ Tagasiside
+ Tagasiside kogukonnakeskuste kohta
+ Vabandust, rühmakõnega liitumisel tekkis viga
+ Nimetu jututuba
+ Privaatne kogukonnakeskus
+ Avalik kogukonnakeskus
+ See kogukonnakeskus on avalik
+ Tundmatu isik
+ Suuna kasutajale %1$s
+ Pean nõu kasutajaga %1$s
+ See server on juba loendis olemas
+ Seda serverit kas ei leidu või seal puudub jututubade loend
+ Sisesta serveri nimi, mille sisu sa soovid uurida.
+ Lisa uus server
+ Sinu server
\ No newline at end of file
diff --git a/vector/src/main/res/values-fa/strings.xml b/vector/src/main/res/values-fa/strings.xml
index 0681fed0df..628a6f8379 100644
--- a/vector/src/main/res/values-fa/strings.xml
+++ b/vector/src/main/res/values-fa/strings.xml
@@ -366,7 +366,7 @@
امکان ارسال گزارش اشکال وجود نداشت، دوباره تلاش کنید (%s)پیشرفت (%s%%)ارسال در
- نشانی کارساز خانگی
+ نشانی کارساز(سرور) خانگینشانی کارساز هویتارسال صداآیا مطمئنید میخواهید با %s یک گپ جدید را آغاز کنید؟
@@ -386,7 +386,7 @@
توکن نامعتبر استنشانی رایانامه یا شماره تلفن وارد نشدهاین نشانی رایانامه قبلاً ثبت شده.
- کارساز خانگی:
+ کارساز(سرور) خانگی:کارساز هویت:امکان ورود وجود ندارد%1$dد %2$dث
@@ -602,7 +602,7 @@
گذرواژه:ثبتواردشده به عنوان
- کارساز خانگی
+ کارساز(سرور) خانگیکارساز هویتاجازهٔ یکپارچگیهامدیر یکپارچگی
@@ -2290,7 +2290,7 @@
%d دعوت%d دعوت
- نشانی کارساز خانگی
+ نام کارسازاین اتاق شامل نشستهای تایید نشده هستند.
\nهیچ تضمینی وجود ندارد این نشستهای تائیدنشده متعلق به کاربرانی باشد که فکر میکنید.
\nتوضیه میشود افراد نشستهای خود را تائید کنند. هر چند در صورتی که تمایلی به این کار ندارید، همچنان میتوانید پیام ارسال کنید.
@@ -2525,7 +2525,7 @@
ورود یکپارچهپاکسازی تاریخچهفرستادن پیام داده با کاغذ رنگی
- فرستادن پیام داده با برف
+ فرستادن پیام داده شده با بارش برففرستادن کاغذ رنگی 🎉فرستادن برف ❄️احراز هویت انجام نشد
@@ -2676,7 +2676,7 @@
هشدار به پشتیبانی سرور و نسخه اتاق آزمایشی نیاز داردفضای کاری آزمایشی - اتاق محدود.شما دعوت شدهاید
- فضایهای کاری روش هایی برای دستهبندی اتاقها و افراد برای کار، تفریح یا فقط خودتان است.
+ اسپیس ها یک شیوه جدید برای دسته بندی اتاق ها و افراد هستند.به فضایهای کاری خوشآمدید!اتاقها و فضای کاری موجود را اضافه کنیدآیا مطمئن هستید که می خواهید فضای کاری را ترک کنید؟
@@ -2771,4 +2771,30 @@
فشردهسازی تصویر…به عنوان پیش فرض استفاده کن و دیگر سوال نپرسهمواره بپرس
+ دعوت به %s
+ شخص ناشناس
+ انتقال به %1$s
+ این قابلیت در وضعیت بتا است
+ به ما بازخورد دهید
+ ارسال بازخورد با شکست مواجه شد(%s)
+ سپاس! بازخورد شما با موفقیت ارسال شد
+ شما در حال استفاده از نسخه بتای اسپیس هستید. بازخورد شما به آگاه کردن نسخه های بعدی کمک خواهد کرد. سکو و نام کاربری شما ثبت خواهد شد تا به ما در استفاده هرچه بیشتر از بازخورد شما کمک کند.
+ بازخورد
+ متاسفم، یک خطا زمانی که در تلاش برای اضافه شدن به کنفرانس بود ، اتفاق افتاد
+ این کارساز در حال حاضر در فهرست موجود است
+ نمیتوانم این کارساز یا فهرست اتاقش را بیابم
+ نام کارساز جدیدی که میخواهید در آن به جستجو بپردازید را وارد کنید
+ اضافه کردن یک کارساز(سرور) جدید
+ کارساز شما
+ اتاق نامگذاری نشده
+ بعضی اتاق ها ممکن است پنهان باشند زیرا خصوصی هستند و شما به یک دعوتنامه نیاز دارید.
+ بعضی اتاق ها ممکن است پنهان باشند زیرا خصوصی هستند و شما به یک دعوتنامه نیاز دارید.
+\nشما اجازه اضافه کردن اتاق را ندارید.
+ این اسپیس هیچ اتاقی ندارد
+ لطفا برای آگاهی بیشتر با مدیر کارساز خود تماس بگیرید
+ به نظر می رسد کارساز خانگی شما هنوز از اسپیس ها پشتیبانی نمی کند
+ افزودن اتاق ها
+ شما مدیر این اسپیس هستید،مطمئن شوید قبل از خروج، حق مدیریت را به عضوی دیگر منتقل کرده اید.
+ این اسپیس عمومی نیست. شما نمیتوانید بدون یک دعوتنامه دوباره ملحق شوید.
+ شما تنها فرد اینجا هستید. اگر خارج شوید، هیچ کس از جمله شما قادر نخواهد بود در آینده ملحق شود.
\ No newline at end of file
diff --git a/vector/src/main/res/values-fr-rCA/strings.xml b/vector/src/main/res/values-fr-rCA/strings.xml
index e9e6e66d7c..fe2e08780e 100644
--- a/vector/src/main/res/values-fr-rCA/strings.xml
+++ b/vector/src/main/res/values-fr-rCA/strings.xml
@@ -369,8 +369,8 @@
Saisissez votre suggestion ci-dessous.Faire une suggestionInscrire le jeton
- Aide & à propos
- Voix & vidéo
+ Aide et à propos
+ Voix et vidéoFormat :URL :session_name :
@@ -381,7 +381,7 @@
Aucune règle de notification définieRègles de notificationExpert
- Sécurité & vie privée
+ Sécurité et vie privéePréférencesGénéralRéactions rapides
@@ -2171,7 +2171,7 @@
Désactiver le compteCeci remplacera votre clé ou phrase actuelle.Générer une nouvelle clé de sécurité ou définir une nouvelle phrase de sécurité pour votre sauvegarde existante.
- Protection contre la perte d\'accès aux messages et données chiffrées en sauvegardant les clés de chiffrage sur votre serveur.
+ Protection contre la perte d’accès aux messages et données chiffrées en sauvegardant les clés de chiffrage sur votre serveur.Activer sur cet appareilRéinitialiser la sauvegarde sécuriséeActiver la sauvegarde sécurisée
@@ -2722,4 +2722,76 @@
EspacesInvitationsSalons recommandés
+ Il se peut que certains salons soient masqués parce qu’ils sont privés et vous avez besoin d’une invitation.
+ Il se peut que certains salons soient masqués parce qu’ils sont privés et vous avez besoin d’une invitation.
+\nVous n’avez pas l’autorisation d’ajouter des salons.
+ Cet espace n’a pas de salons
+ Veuillez contacter votre admin de serveur pour plus d’informations
+ Il semble que votre serveur d’accueil ne prend pas encore en charge les espaces
+ Envie d’expérimenter\?
+\nVous pouvez ajouter des espaces existants à un espace.
+ Espace expérimental – afficher seulement les orphelins dans Accueil
+ Gérer les salons et les espaces
+ Marquer comme non recommandé
+ Marquer comme recommandé
+ Recommandé
+ Rendre cet espace public
+ Gérer les salons
+ Vous cherchez quelqu’un qui n’est pas dans %s\?
+ %s vous invite
+ Attention, nécessite la prise en charge par le serveur ainsi qu’une version de salon expérimentale
+ Espace expérimental – salon restreint.
+ Vous êtes invité·e
+ Les espaces sont une nouvelle manière de regrouper les salons et les gens.
+ Bienvenue dans les espaces!
+ Ajouter des salons
+ Ajouter des salons et espaces existants
+ Vous êtes admin de cet espace, assurez-vous d’avoir transféré les droits d’admin à un autre membre avant de partir.
+ Cet espace n’est pas public. Vous ne pourrez pas le rejoindre sans invitation.
+ Vous êtes la seule personne ici. Si vous partez, personne ne pourra entrer à l’avenir, même pas vous.
+ Voulez-vous vraiment quitter l’espace\?
+ Quitter l’espace
+ Ajouter des salons
+ Parcourir les salons
+
+ %d personne que vous connaissez en fait partie
+ %d personnes que vous connaissez en font partie
+
+ Bienvenue dans %1$s, %2$s.
+ Vous ne faites partie d’aucun salon pour l’instant. Vous trouverez ci-dessous les salons recommandés, mais vous pouvez en voir plus avec le bouton vert en bas à droite.
+ Cet alias n’est pas accessible en ce moment.
+\nRéessayez plus tard, ou demandez à un administrateur de ce salon de vérifier que vous pouvez y accéder.
+ Rejoindre quand même
+ Rejoindre l’espace
+ Créer un espace
+ Passer pour l’instant
+ Rejoignez mon espace %1$s %2$s
+ Ne fera pas partie de %s
+ Seulement ce salon
+ Permettra de parcourir les salons de %s
+ Inviter dans %s
+ Partager le lien
+ Inviter par nom d’utilisateur
+ Inviter par courriel
+ Vous êtes seul·e pour l’instant. %s sera plus agréable avec de la compagnie.
+ Inviter à %s
+ Inviter des personnes
+ Invitez des personnes dans votre espace
+ Description
+ Création de l’espace…
+ Aléatoire
+ Général
+ Créons un salon pour chacun d’entre eux. Vous pourrez en ajouter plus tard, y compris certains déjà existant.
+ Sur quels projets travaillez-vous\?
+ Nous allons créer les salons pour ces sujets. Vous pourrez en ajouter d’autres plus tard.
+ De quoi allez-vous parler dans %s\?
+ Cette fonctionnalité est en bêta
+ Envoyer des remarques
+ L’envoi des remarques a échoué (%s)
+ Merci, vos remarques ont bien été envoyées
+ Vous pouvez me contacter si vous avez des questions
+ Vous utilisez une version bêta des espaces. Vos remarques aideront à concevoir les prochaines versions. Votre plateforme et votre nom d’utilisateur seront marqués pour nous aider à utiliser vos remarques autant que possible.
+ Remarques
+ Remarques sur les espaces
+ Désolé, une erreur s’est produite en essayant d’entrer dans la conférence
\ No newline at end of file
diff --git a/vector/src/main/res/values-fr/strings.xml b/vector/src/main/res/values-fr/strings.xml
index 9fb56dd860..2d5cad33f3 100644
--- a/vector/src/main/res/values-fr/strings.xml
+++ b/vector/src/main/res/values-fr/strings.xml
@@ -591,7 +591,7 @@
Supprimer de la liste noireVérifier la sessionSélectionner un répertoire de salons
- URL du serveur d’accueil
+ Nom du serveur d’accueilTous les salons sur le serveur %sTous les salons natifs sur %sRechercher dans l’historique
@@ -1444,7 +1444,7 @@
Réactions rapidesGénéralPréférences
- Sécurité & vie privée
+ Sécurité et vie privéeExpertRègles de notificationAucune règle de notification définie
@@ -1455,8 +1455,8 @@
session_name :URL :Format :
- Voix & vidéo
- Aide & à propos
+ Voix et vidéo
+ Aide et à proposInscrire le jetonFaire une suggestionSaisissez votre suggestion ci-dessous.
@@ -2358,7 +2358,7 @@
RétrograderCeci remplacera votre clé ou phrase actuelle.Générer une nouvelle clé de sécurité ou définir une nouvelle phrase de sécurité pour votre sauvegarde existante.
- Protection contre la perte d\'accès aux messages et données chiffrées en sauvegardant les clés de chiffrage sur votre serveur.
+ Protection contre la perte d’accès aux messages et données chiffrées en sauvegardant les clés de chiffrage sur votre serveur.Activer sur cet appareilGérerInclure les événement d’invitation/ajout/départ/expulsion/exclusion ainsi que les changements d’avatar et de nom d’affichage.
@@ -2705,7 +2705,7 @@
Salons recommandésEspace expérimental – salon restreint.Vous êtes invité
- Les espaces sont un moyen de regrouper les salons et personnes pour travailler, s’amuser, ou juste pour vous-même.
+ Les espaces sont une nouvelle manière de regrouper les salons et les gens.Bienvenue dans les espaces !Ajouter des salons et espaces existantsVoulez-vous vraiment quitter l’espace \?
@@ -2778,4 +2778,39 @@
Envoyer la vidéo en taille originaleEnvoyer les vidéos en taille originale
+ Espace expérimental – afficher seulement les orphelins dans Accueil
+ Vous êtes administrateur de cet espace, assurez-vous d’avoir transféré les droits d’administration à un autre membre avant de partir.
+ Vous utilisez une version bêta des espaces. Vos remarques aideront à concevoir les prochaines versions. Votre plateforme et votre nom d’utilisateur seront marqués pour nous aider à utiliser vos remarques autant que possible.
+ Il se peut que certains salons soient masqués parce qu’ils sont privés et vous avez besoin d’une invitation.
+ Il se peut que certains salons soient masqués parce qu’ils sont privés et vous avez besoin d’une invitation.
+\nVous n’avez pas l’autorisation d’ajouter des salons.
+ Cet espace n’a pas de salons
+ Veuillez contacter l’administrateur de votre serveur d’accueil pour plus d’informations
+ Il semble que votre serveur d’accueil ne prend pas encore en charge les espaces
+ Envie d’expérimenter \?
+\nVous pouvez ajouter des espaces existants à un espace.
+ Ajouter des salons
+ Cet espace n’est pas public. Vous ne pourrez pas le rejoindre sans invitation.
+ Vous êtes la seule personne ici. Si vous partez, personne ne pourra entrer à l’avenir, même pas vous.
+ Inviter à %s
+ Cette fonctionnalité est en bêta
+ Remarques sur les espaces
+ Vous pouvez me contacter si vous avez des questions
+ Envoyer des remarques
+ L’envoi des remarques a échoué (%s)
+ Merci, vos remarques ont bien été envoyées
+ Remarques
+ Désolé, une erreur s’est produite en essayant d’entrer dans la conférence
+ Salon sans nom
+ Espace privé
+ Espace public
+ Cet espace est public
+ Personne inconnue
+ Transférer à %1$s
+ Ce serveur fait déjà partie de la liste
+ Impossible de trouver ce serveur ou la liste de ses salons
+ Saisissez le nom du nouveau serveur que vous souhaitez explorer.
+ Ajouter un nouveau serveur
+ Votre serveur
+ Consultation de %1$s
\ No newline at end of file
diff --git a/vector/src/main/res/values-gl/strings.xml b/vector/src/main/res/values-gl/strings.xml
index 61beb07197..4af9956161 100644
--- a/vector/src/main/res/values-gl/strings.xml
+++ b/vector/src/main/res/values-gl/strings.xml
@@ -854,4 +854,7 @@
\nDescargando datos…Sincr. inicial:
\nAgardando resposta do servidor…
+ Non tes permisos para comezar unha chamada de conferencia nesta sala
+ Non tes permisos para comezar unha chamada de conferencia nesta sala
+ Mensaxe enviada
\ No newline at end of file
diff --git a/vector/src/main/res/values-hu/strings.xml b/vector/src/main/res/values-hu/strings.xml
index 0c6558bcc9..797ea4f036 100644
--- a/vector/src/main/res/values-hu/strings.xml
+++ b/vector/src/main/res/values-hu/strings.xml
@@ -704,7 +704,7 @@ Figyelmeztetés: ez a fájl törlésre kerülhet, ha az alkalmazást törli.Válassz egy szoba könyvtáratA szerver lehet nem elérhető vagy túltöltöttÍrj be egy Matrix szervert, az ott található nyilvános szobák listázásához
- Matrix szerver URL
+ Szerver neveÖsszes szoba a %s szerverenÖsszes anyanyelvi %s szobaElőzmények keresése
@@ -847,11 +847,11 @@ Figyelmeztetés: ez a fájl törlésre kerülhet, ha az alkalmazást törli.%d tag
- 1 új üzenet
+ %d új üzenet%d új üzenet
- 1 szoba
+ %d szoba%d szoba
@@ -859,20 +859,20 @@ Figyelmeztetés: ez a fájl törlésre kerülhet, ha az alkalmazást törli.%1$s szoba található ehhez: %2$s
- 1 olvasatlan üzenet
+ %d olvasatlan üzenet%d olvasatlan üzenet
- 1 olvasatlan üzenet értesítéssel
+ %d olvasatlan üzenet értesítéssel%d olvasatlan üzenet értesítéssel
- 1 szoba
+ %d szoba%d szoba%1$s itt: %2$s
- 1 aktív kisalkalmazás
+ %d aktív kisalkalmazás%d aktív kisalkalmazás
@@ -963,11 +963,11 @@ Matrixban az üzenetek láthatósága hasonlít az e-mailre. Az üzenet törlés
%dp
- 1ó
+ %dó%dó
- 1n
+ %dn%dnMost: %1$s
@@ -976,15 +976,15 @@ Matrixban az üzenetek láthatósága hasonlít az e-mailre. Az üzenet törlés
%1$s és %2$s%2$s %1$s
- 1 kiválasztva
+ %d kiválasztva%d kiválasztva
- 1 tag
+ %d tag%d tag
- 1 szoba
+ %d szoba%d szobaRendszerriasztások
@@ -1279,7 +1279,7 @@ Ha nem te állítottad be a visszaállítási metódust, akkor egy támadó pró
Olvasottnak jelölésAz alkalmazásnak nem kell a háttérben folyamatosan a Matrix szerverrel tartani a kapcsolatot, ez csökkentheti az akkumulátor használatot
- %1$s: 1 üzenet
+ %1$s: %2$d üzenet%1$s: %2$d üzenet
@@ -1361,9 +1361,9 @@ Ha nem te állítottad be a visszaállítási metódust, akkor egy támadó pró
Üdvözöllek itthon!Olvasd el az olvasatlan üzeneteket ittBeszélgetések
- A közvetlen beszélgetéseidet itt láthatod
+ A közvetlen beszélgetéseidet itt láthatod. Koppints a + -ra jobbra lent, hogy indíts egyet.Szobák
- A szobáidat itt láthatod
+ A szobáidat itt láthatod. Koppints a + -ra jobbra lent a meglévők kereséséhez vagy egy saját indításához.ReakciókEgyetértekKedvelem
@@ -1386,7 +1386,7 @@ Ha nem te állítottad be a visszaállítási metódust, akkor egy támadó pró
Közvetlen üzenetekÚj szobaKÉSZÍT
- Szoba neve
+ NévNyilvánosBárki csatlakozhat ehhez a szobáhozSzobák listája
@@ -1474,7 +1474,7 @@ Ha nem te állítottad be a visszaállítási metódust, akkor egy támadó pró
Tartalék hívássegítő kiszolgáló engedélyezéseSegítőként a(z) %s lesz használatban ha a Matrix-kiszolgálója nem biztosít egyet (a hívás ideje alatt az IP-címed megosztásra kerül)A beállításokban adj hozzá egy azonosítási szervert ehhez a művelethez.
- Háttér Szinkronizálási Mód (Kísérleti)
+ Háttér Szinkronizálási MódOptimalizált akkumulátor használat${app_name} a háttérben úgy szinkronizál, hogy a leginkább kímélje az eszköz korlátozott erőforrásait (akkumulátor).
\nAz eszköz erőforrásainak állapotától függően a szinkronizációt az operációs rendszer elhalaszthatja.
@@ -1533,7 +1533,7 @@ Ha nem te állítottad be a visszaállítási metódust, akkor egy támadó pró
%1$s és %2$s olvasták%s olvasta
- 1 felhasználó olvasta
+ %d felhasználó olvasta%d felhasználó olvasta\'%1$s\' (%2$s) fájl túl nagy a feltöltéshez. A korlát: %3$s.
@@ -1555,15 +1555,15 @@ Ha nem te állítottad be a visszaállítási metódust, akkor egy támadó pró
Tartalom bejelentveEz a tartalom bejelentve.
\n
-\nHa nem akarsz ettől a felhasználótól több üzenetet látni akkor blokkolhatod, hogy az üzenetei ne jelenjenek meg számodra
+\nHa nem akarsz ettől a felhasználótól több üzenetet látni akkor blokkolhatod, hogy az üzenetei ne jelenjenek meg számodra.
Bejelentve nem kívántként (spam)Ez a tartalom nem kívántnak (spam) lett bejelentve.
\n
-\n Ha nem akarsz ettől a felhasználótól több üzenetet látni akkor blokkolhatod, hogy az üzenetei ne jelenjenek meg számodra
+\n Ha nem akarsz ettől a felhasználótól több üzenetet látni akkor blokkolhatod, hogy az üzenetei ne jelenjenek meg számodra.
Nem idevalónak bejelentveEz a tartalom nem idevalónak lett bejelentve.
\n
-\n Ha nem akarsz ettől a felhasználótól több üzenetet látni akkor blokkolhatod, hogy az üzenetei ne jelenjenek meg számodra
+\n Ha nem akarsz ettől a felhasználótól több üzenetet látni akkor blokkolhatod, hogy az üzenetei ne jelenjenek meg számodra.
${app_name}nak engedélyre van szüksége ahhoz, hogy a végponttól végpontig titkosító kulcsokat a lemezre menthesse.
\n
\nKérlek a következő felugró ablakban engedélyezd a hozzáférést, hogy a kulcsokat kézzel kimenthesd.
@@ -1622,7 +1622,7 @@ Ha nem te állítottad be a visszaállítási metódust, akkor egy támadó pró
Kezdj nekiVálassz szervertHasonlóan az e-mailhez, egy fiókod van, de bárkivel tudsz beszélgetni
- Csatlakozz a milliónyi felhasználóhoz a legnagyobb nyilvános szerveren
+ Csatlakozz a milliónyi felhasználóhoz ingyen a legnagyobb nyilvános szerverenPrémium szerver üzemeltetés szervezetek részéreTudj meg többetEgyéni
@@ -1838,7 +1838,7 @@ Ha nem te állítottad be a visszaállítási metódust, akkor egy támadó pró
A megadott hangulatjelet szivárvány színben küldi elIdővonalÜzenet szerkesztő
- Végpontok közötti titkosítás engedélyezése
+ Végpontok közötti titkosítás engedélyezése…Ha egyszer bekapcsolod, már nem lehet kikapcsolni.Titkosítás engedélyezése\?Ha egyszer engedélyezve lett, a szoba titkosítását nem lehet kikapcsolni. A titkosított szobákban küldött üzenetek a szerver számára nem, csak a szoba tagjai számára láthatók. A titkosítás bekapcsolása megakadályoz sok botot és hidat a megfelelő működésben.
@@ -2340,4 +2340,475 @@ Ha nem te állítottad be a visszaállítási metódust, akkor egy támadó pró
Nincs több eredményVisszavonásAlapértelmezett rendszertéma
+ A szoba címeit megváltoztattad.
+ %1$s megváltoztatta a szoba címeit.
+ A szoba elsődleges és alternatív címeit megváltoztattad.
+ %1$s megváltoztatta a szoba elsődleges és alternatív címeit.
+ A szoba alternatív címét megváltoztattad.
+ %1$s megváltoztatta a szoba alternatív címét.
+
+ A szobához tartozó alternatív címet törölted: %1$s.
+ A szobához tartozó alternatív címeket törölted: %1$s.
+
+
+ %1$s törölte a szobához tartozó alternatív címet: %2$s.
+ %1$s törölte a szobához tartozó alternatív címeket: %2$s.
+
+
+ A szobához hozzáadtad, mint alternatív cím: %1$s.
+ A szobához hozzáadtad, mint alternatív címek: %1$s.
+
+
+ %1$s hozzáadta a szobához, mint alternatív cím: %2$s.
+ %1$s hozzáadta a szobához, mint alternatív címek: %2$s.
+
+ A szoba elsődleges címét törölted.
+ A szoba elsődleges címét beállítottad erre: %1$s.
+ A szoba címét hozzáadtad: %1$s és törölted: %2$s.
+
+ A szoba címét törölted: %1$s.
+ A szoba címeit törölted: %1$s.
+
+
+ A szobához hozzáadtad mint cím: %1$s.
+ A szobához hozzáadtad mint címek: %1$s.
+
+ %1$s meghívóját visszavontad. Ok: %2$s
+ A meghívót elfogadtad ehhez: %1$s. Ok: %2$s
+ A meghívót visszavontad tőle, hogy beléphessen a szobába: %1$s. Ok: %2$s
+ Meghívót küldtél neki, hogy belépjen a szobába: %1$s. Ok: %2$s
+ Kitiltottad: %1$s. Ok: %2$s
+ Visszaengedted: %1$s. Ok: %2$s
+ Kirúgtad: %1$s. Ok: %2$s
+ A meghívót elutasítottad. Ok: %1$s
+ Kiléptél. Ok: %1$s
+ %1$s kilépett. Ok: %2$s
+ A szobát elhagytad. Ok: %1$s
+ Beléptél. Ok: %1$s
+ %1$s belépett. Ok: %2$s
+ Beléptél a szobába: Ok: %1$s
+ Meghívtad: %1$s. Ok: %2$s
+ Meghívód. Ok: %1$s
+ Üzenet elküldve
+ Kezdeti szinkronizálás:
+\nAdatok letöltése…
+ Kezdeti szinkronizálás:
+\nA szerver válaszára várakozás…
+ Üres szoba (%s volt)
+
+ %1$s, %2$s, %3$s és még %4$d
+ %1$s, %2$s, %3$s és még %4$d
+
+ %1$s, %2$s, %3$s és %4$s
+ %1$s, %2$s és %3$s
+ Videó konferenciát módosítottad
+ Videó konferenciát módosította: %1$s
+ Befejezted a videó konferenciát
+ Videó konferenciát befejezte: %1$s
+ Videó konferenciát indítottál
+ Videó konferenciát elindította: %1$s
+ %s felfüggesztetted a hívást
+ Értesítés megjelenítése
+ Az értesítést látod. Kattints ide!
+ A push-t nem sikerült megkapni. Megoldás lehet az alkalmazás újratelepítése.
+ Az alkalmazás megkapta a PUSH-t
+ Az alkalmazás a PUSH-ra vár
+ Push tesztelése
+ Ellenőrizd, hogy rákattintottál arra a hivatkozásra amit e-mailben küldtünk neked.
+ %s törlése\?
+ Titkosított szobákban való keresés egyelőre nem támogatott.
+ Kitiltott felhasználók szűrése
+ Téma megváltoztatása
+ Szoba fejlesztése
+ m.room.server_acl esemény küldése
+ Jogosultságok megváltoztatása
+ Szoba nevének megváltoztatása
+ Régi üzenetek láthatóságának megváltoztatása
+ Szoba titkosításának bekapcsolása
+ A szoba elsődleges címének megváltoztatása
+ Szoba profilkép megváltoztatása
+ Kisalkalmazások megváltoztatása
+ Mindenki értesítése
+ Mások által küldött üzenetek törlése
+ Felhasználók kitiltása
+ Felhasználók kirúgása
+ Beállítások megváltoztatása
+ Felhasználók meghívása
+ Üzenet küldése
+ Alapértelmezett szerep
+ Nincs jogosultságod a szerepek megváltoztatásához, amik szükségesek a szoba bizonyos részeinek megváltoztatásához
+ A szoba bizonyos beállításainak megváltoztatásához szükséges szerep kiválasztása
+ Jogosultságok
+ Szerepek megjelenítése és megváltoztatása, amik szükségesek a szoba bizonyos részeinek megváltoztatásához.
+ Szoba jogosultságok
+ Ez a szoba nem nyilvános. Kilépés után csak újabb meghívóval tudsz újra belépni a szobába.
+ Felfüggesztetted a hívást
+ Várakoztat
+ Folytatás
+ Jogosulatlan, érvényes azonosítási adatok hiányoznak
+ Használd alapértelmezettként és ne kérdezze újra
+ Mindig kérdez
+ Terek
+ Meghívók
+ Minden szoba megjelenítése ebben a könyvárban, beleértve a szókimondó tartalmú szobákat is.
+ Szókimondó tartalmas szobák megjelenítése
+ Szobák listája
+ Javasolt szobák
+ Új érték
+ Visszatérés
+ Cserél
+ A végpontok közötti titkosítást bekapcsoltad (ismeretlen algoritmus: %1$s).
+ A végpontok közötti titkosítást bekapcsoltad.
+ A vendégeknek megtiltottad, hogy belépjenek a szobába.
+ %1$s megtiltotta a vendégeknek, hogy belépjenek ebbe a szobába.
+ A vendégeknek megtiltottad, hogy belépjenek a szobába.
+ A vendégeknek megengedted, hogy belépjenek ide.
+ %1$s megengedte a vendégeknek, hogy belépjenek ide.
+ A vendégeknek megengedted, hogy belépjenek a szobába.
+ Néhány szoba rejtett lehet, mert privátok és meghívó kell hozzá.
+\nNincs jogosultságod szobák hozzáadásához.
+ Ezen a Téren nincsenek szobák
+ További információért vedd fel a kapcsolatot a matrix szerver adminisztrátorával
+ Úgy látszik a matrix szervered nem támogatja egyelőre a Tereket
+ Szeretsz kísérletezni\?
+\nTereket adhatsz terekhez.
+ Kísérleti tér - Csak árvák mutatása a Kezdőlapon
+ Szobák és terek kezelése
+ Nem javasoltnak jelölés
+ Javasoltnak jelölés
+ Javaslat
+ A tér legyen nyilvános
+ Szobák kezelése
+ Olyant keresel aki még nincs itt: %s\?
+ %s meghívott
+ Figyelmeztetés szerver oldali támogatás és kísérleti szoba verzió szükséges
+ Kísérleti Tér - Korlátozott szobák.
+ Meghívtak
+ Szobák és emberek csoportosításának új lehetősége a Terek használata.
+ Üdv a Terekben!
+ Szobák hozzáadása
+ Létező szobák és tér hozzáadása
+ Most te vagy a tér adminisztrátora, bizonyosodj meg arról, hogy kineveztél mást adminisztrátornak mielőtt elhagyod.
+ Ez a tér nem nyilvános. Kilépés után csak újabb meghívóval lehet újra belépni.
+ Csak te van itt. Ha kilépsz, akkor a jövőben senki nem tud majd ide belépni, beleértve téged is.
+ Biztos el akarod hagyni a teret\?
+ Tér elhagyása
+ Szobák hozzáadása
+ Szobák felderítése
+
+ %d ember már csatlakozott
+ %d ember már csatlakozott
+
+ Üdv itt: %1$s, %2$s.
+ Még egyik szobába sem vagy belépve. Alul van pár javasolt szoba, de többet is láthatsz a zöld gombbal jobb alsó sarokban.
+ Ez az álnév jelenleg nem elérhető.
+\nPróbáld meg később vagy kérdezd meg a szoba adminisztrátorát, hogy van-e hozzáférésed.
+ Belépés mindenképpen
+ Belépés a Térbe
+ Tér készítése
+ Kihagy egyelőre
+ Csatlakozz a Teremhez %1$s %2$s
+ Nem lesznek a részesei ennek: %s
+ Csak ehhez a szobához
+ Felfedezhetik ezt: %s
+ Meghívó ide: %s
+ Megosztás hivatkozás
+ Meghívás felhasználónévvel
+ Meghívás e-maillel
+ Egyelőre csak te vagy itt, %s még jobb lehet másokkal együtt.
+ Meghívó ide: %s
+ Emberek meghívása a teredbe
+ Személyek meghívása
+ Leírás
+ Tér készítése…
+ Véletlen
+ Általános
+ Készítsünk mindegyik szobához egyet. Később is hozzáadhatsz újakat vagy akár meglévőket.
+ Milyen projekteken dolgozol\?
+ Készítünk szobákat számukra. Később még adhatsz hozzájuk.
+ Milyen beszélgetéseket szeretnél itt: %s\?
+ A folytatáshoz adj neki nevet.
+ Adj hozzá információkat amik segítenek az embereknek beazonosítani. Bármikor megváltoztathatod.
+ Adj hozzá pár információt, hogy tűnjön ki. Bármikor megváltoztathatod.
+ Tér készítése
+ Csak meghívóval, saját célra és csoportoknak ideális
+ Privát
+ Nyílt tér mindenkinek, a legjobb a közösségeknek
+ Nyilvános
+ Privát tér neked és a csoporttársaidnak
+ Én és a csoporttársaim
+ Privát tér a szobáid csoportosításához
+ Csak én
+ Ellenőrizd, hogy a megfelelő személyeknek van hozzáférése ide: %s. Később ezt megváltoztathatod.
+ Csak az olvasatlan üzenetek számát mutassa az egyszerű értesítésekben.
+ Kivel dolgozol együtt\?
+ Létező térbe való belépéshez meghívó szükséges.
+ Ezt később meg lehet változtatni
+ Milyen típusú teret szeretnél készíteni\?
+ Szobák és emberek csoportosításának új lehetősége a Terek használata
+ Privát tér
+ Nyilvános tér
+ Tér hozzáadása
+ Biztos, hogy törlöd az összes el nem küldött üzenetet a szobában\?
+ El nem küldött üzenetek törlése
+ Üzeneteket nem lehetett elküldeni
+ Megszakítod az üzenetek küldését\?
+ Minden hibás üzenet törlése
+ Hiba
+ Elküldve
+ Küldés
+ Megadott azonosítójú térbe belépés
+ A megadott azonosítójú szoba elhagyása (vagy az aktuális szoba, ha üres)
+ Tér készítése
+ Esemény tartalma
+ Állapot esemény elküldve!
+ Az esemény elküldve!
+ Hibás esemény
+ Üzenet típus hiányzik
+ Nincs tartalom
+ Esemény tartalma
+ Állapotkulcs
+ Típus
+ Egyedi állapot esemény küldése
+ Állapot esemény küldése
+ Állapot események
+ Tartalom szerkesztése
+ Egyéni esemény elküldése
+ Szoba állapot felderítése
+ Fejlesztői Eszközök
+ Ez egy nyilvános szoba
+ Olvasás visszajelzés megjelenítése
+ Nincs értesítés
+ Értesítés hang nélkül
+ Értesítés hanggal
+ Üzenet hiba miatt nincs elküldve
+ Nem megjelölve
+ Megjelölve
+ Emodzsi választó bezárás
+ Emodzsi választó megnyitás
+ Megbízható megbízhatósági szint
+ Megbízhatóság figyelmeztetési szint
+ Alapértelmezett megbízhatósági szint
+ Kiválasztott
+ Videó
+ Ebben a szobába küldetlen piszkozat van
+ Néhány üzenet nem lett elküldve
+ Profilkép törlése
+ Profilkép megváltoztatása
+ Kép
+ Kulcs betöltése fájlból
+ Kisalkalmazások megnyitása
+ Képernyőkép
+ Azonosítás sikertelen
+ A művelet elvégzéséhez ${app_name} kéri, hogy adja meg az azonosításhoz az adatokat.
+ Újra-Azonosítás szükséges
+ Felhasználók
+ A hívás átadásánál hiba történt
+ Eszközök közötti aláírást nem sikerült beállítani
+ Audit kiexportálása
+ %1$s fiók adatait törlöd\?
+\n
+\nÓvatosan használd, váratlan következményei lehetnek.
+ Ez egy régi verziójú mátrix szerver. Kérd meg a matrix szerver adminisztrátorát, hogy frissítse. Folytathatod, de néhány funkció nem fog megfelelően működni.
+ Mindenki aki ezzel a szobával egy Térben van megtalálhatja és beléphet. Csak a szoba adminisztrátorok tudják Térhez adni.
+ Néhány szoba lehet rejtett, mert privát és meghívóra van szükséged.
+ Átadás
+ Kapcsolódás
+ Először tájékozódj
+
+ 1 aktív hívás (%1$s) · 1 hívás tartásban
+ 1 aktív hívás (%1$s) · %2$d hívás tartásban
+
+
+ Hívás tartásban
+ %1$d hívás tartásban
+
+ Aktív hívás (%1$s)
+ A telefonszám megkeresésekor hiba történt
+ Tárcsázó számlap
+ Visszahívás
+ Hívás befejeződött
+ %1$s elutasította a hívást
+ Elutasítottad ezt a hívást: %1$s
+ Jelenleg ebben a hívásban van
+ %1$s hívást kezdeményezett
+ Hívást kezdeményeztél
+ Matrix hivatkozás
+ Változtatások elvetése
+ Mentetlen változások vannak. Elveted a változásokat\?
+ A szoba még nem készült el. Megszakítod a szoba készítést\?
+ A hivatkozás hibás volt
+ Saját magadnak nem küldhetsz közvetlen üzenetet!
+ Szöveggel megosztás
+ A szoba nem található. Biztos, hogy létezik\?
+ A szoba nem nyitható meg ahonnan kitiltottak.
+ Jelenlegi PIN kód megváltoztatása
+ PIN megváltoztatása
+ ${app_name} megnyitásához mindig PIN kód szükséges.
+ Ha nem használsz ilyent: ${app_name} akkor 2 perc elteltével PIN kód megadása szükséges.
+ 2 perc elteltével PIN szükséges
+ Eszköz specifikus biometrikus azonosítás engedélyezése, mint ujjlenyomat vagy arcfelismerés.
+
+ %d bejegyzés
+ %d bejegyzés
+
+ Kapcsolatok keresése a Matrixban
+ Profilkép beállítása
+ Nincs felhasználói hozzájárulás.
+ Erősítsd meg a személyazonosságod ebben a belépésben, hogy hozzáférj a titkosított üzenetekhez.
+ hóesést küld ❄️
+ konfettit küld 🎉
+ Az üzenet elküldése hóeséssel
+ Az üzenet elküldése konfettivel
+
+ Eszköz megjelenítése amivel most ellenőrizni lehet
+ %d eszköz megjelenítése amivel most ellenőrizni lehet
+
+ Tiszta lappal indulsz, üzenetek, megbízható eszközök és felhasználók nélkül
+ Ha mindent visszaállítasz
+ Csak akkor csináld, ha nincs másik eszközöd amivel ellenőrizni tudnád ezt.
+ Minden visszaállítása
+ Elfelejtetted vagy elvesztetted az összes visszaállítási lehetőséget\? Minden visszaállítása
+ A matrix szervered elfogad csatolmányokat (fájlt, médiát, stb.) egészen eddig a méretig: %s.
+ A titkosítás bekapcsolásához nincs jogosultságod.
+ A szobába soha ne léphessenek be azok, akik nem ezen a szerveren vannak:%s
+ Használd a nemzetközi formátumot (a telefonszámnak „+” jellel kell kezdődnie)
+ Bejelentkezés ezzel: %s
+ Fiókkészítés ezzel: %s
+ "Téma: "
+ Beléptél.
+ %s csatlakozott.
+ Média fájl küldése eredeti méretben
+
+ Videó küldése eredeti méretben
+ Videók küldése eredeti méretben
+
+ Ismeretlen határérték.
+ Szerver fájl feltöltési határérték
+ Szerver verziószám
+ Szerver neve
+ Közvetlen beszélgetés
+ Elhagy
+ A szobában az üzenetek végponttól végpontig titkosítva vannak.
+\n
+\nAz üzeneteidet zárolással vannak biztosítva és csak neked és a címzetteknek van meg a kulcs hozzá.
+ Itt az üzenetek nincsenek végponttól végpontig titkosítva.
+ Azonosítás eredménye
+ Bot Gomb
+ Szavazás
+ Szoba létrehozása…
+ Néhány karakter nem engedélyezett
+ Kérlek add meg a szoba címét
+ Ez a cím már használatban van
+ Szoba címe
+ Beállíthatod, ha a szobát csak egy belső csoport használja majd a matrix szervereden. Ezt később nem lehet megváltoztatni.
+ Haladó elrejtése
+ Speciális megjelenítése
+ Régi üzenetek törlése
+ Egyszeri bejelentkezés
+ Folytatás ezzel: %s
+ Vagy
+ Állíts be címet ehhez a szobához, hogy a felhasználók a matrix szervereden megtalálhassák (%1$s)
+ Meghívásossá tetted.
+ %1$s meghívásossá tette.
+ Szoba beállításai
+ Alacsony prioritásúak közül kivesz
+ Alacsony prioritásúakhoz ad
+ %1$d / %2$d
+ Forgatás és vágás
+ A fájl túl nagy a feltöltéshez.
+ Ez egy béta funkció
+ Közvetlen beszélgetés indítása Matrix azonosítóval
+ Email címek és telefonszámok küldése
+ Beleegyezés adása
+ Beleegyezés visszavonása
+ Nem egyeztél bele abba, hogy e-mail címeket és telefonszámokat küldjél ennek az azonosítási szervernek más felhasználók felderítéséhez a névjegyzékedből.
+ Beleegyeztél abba, hogy e-mail címeket és telefonszámokat küldjél ennek az azonosítási szervernek más felhasználók felderítéséhez a névjegyzékedből.
+ Email címek és telefonszámok küldése
+ Javaslatok
+ Névjegyek
+ Legutóbbi
+ Név keresése
+ Videó tömörítése (%d%%)
+ Kép tömörítése…
+ Teljes tartalom megmutatása titkosított szobákban
+ Visszajelzés adása
+ A visszajelzésed nem sikerült elküldeni (%s)
+ Köszönjük, a visszajelzésed sikeresen elküldésre került
+ Ha további kérdés merülne fel, kapcsolatba léphetnek velem
+ A Terek béta verzióját használod. A visszajelzésed segít a következő verzió elkészítésében. A platform és felhasználói neved feljegyzésre kerül, hogy minél jobban felhasználhassuk a visszajelzésed.
+ Visszajelzés
+ Visszajelzés a Terekről
+ Téma
+ Szoba témája (nem kötelező)
+ Szoba neve
+ Ennek a szobának nincs előnézete. Szeretnél csatlakozni\?
+ Ez a szoba jelenleg nem elérhető.
+\nPróbáld meg később vagy kérdezd meg a szoba adminisztrátorát, hogy van-e hozzáférésed.
+ Elhagyod ezt a konferenciát és átváltasz egy másikba\?
+ Bocsánat, a konferenciába való belépésnél hiba történt
+ %1$s és %2$s
+ %1$s, %2$s és %3$s
+
+ %d meghívó
+ %d meghívó
+
+ Szoba verzió
+ Terek
+ Bárki rátalálhat és beléphet a szobába
+ Nyilvános
+ Csak a meghívott személyek találják meg és tudnak belépni
+ Privát
+ Ismeretlen hozzáférési beállítás (%s)
+ Bárki bekopoghat a szobába, a szoba tagok be tudják engedni vagy el tudják küldeni
+ A jelenlegi szoba láthatóságát a listában nem lehet lekérdezni (%1$s).
+ Publikálod a szobát ennek a domainnek a szoba listájában: %1$s\?
+ A cím nyilvánosságának visszavonása
+ A cím nyilvánossá tétele
+ Helyi cím hozzáadása
+ Ennek a szobának nincs helyi címe
+ Helyi címek
+ Új nyilvános cím (pl.: #becenév:szerver)
+ Nincs másik nyilvánosságra hozott cím.
+ Nincs másik nyilvánosságra hozott cím, alább adj hozzá egyet.
+ Publikálod a szobát ennek a domainnek a szoba listájában: %1$s\?
+ „%1$s” címet törlöd\?
+ „%1$s” cím nyilvánosságát visszavonod\?
+ Nyilvánosságra hoz
+ Új cím nyilvánosságra hozatala manuálisan
+ Más nyilvánosságra hozott címek:
+ Fő cím
+ Ez az elsődleges cím
+ A nyilvánosságra hozott címeket bárki bármelyik szerveren használhatja a szobádba való belépéshez. A cím közzétételéhez először helyi címnek kell beállítani.
+ Nyilvánosságra hozott címek
+ Szoba címek
+ Szoba cím megjelenítése, kezelése és láthatóságának beállítása a szobák listájában.
+ Szoba címek
+ Vendégek csatlakozásának engedélyezése
+ Szoba hozzáfárés
+ A üzenetek olvashatóságának változtatása csak az új üzenetekre lesz érvényes. A régi üzenetek láthatósága nem fog változni.
+ Az üzenet szerkesztőhöz emodzsi billentyűzet gomb hozzáadása
+ Emodzsi billentyűzet megjelenítése
+ Magába foglalja a meghívás/belépés/kilépés/kirúgás/kitiltás eseményt és profilkép/megjelenítési név változtatást.
+ Használd a /confetti parancsot vagy küldj üzenetet ami ❄️-t vagy 🎉-t tartalmaz
+ Beszélgetés effektek megjelenítése
+ Szoba tagok státusz eseményeinek megjelenítése
+
+ %d másodperc
+ %d másodperc
+
+ Az értesítésre kattintottak!
+ Kattints az értesítésre. Ha nem látsz értesítést, ellenőrizd a rendszerbeállításokat.
+ Hívásátirányítás ide: %1$s
+ Névtelen szoba
+ Privát tér
+ Nyilvános tér
+ Ez a Tér nyilvános
+ Ismeretlen személy
+ Konzultáció vele: %1$s
+ Ez a szerver már szerepel a listában
+ A szerver vagy a szoba listája nem található
+ Add meg a felfedezni kívánt új szerver nevét.
+ Új szerver hozzáadása
+ Matrix szervered
\ No newline at end of file
diff --git a/vector/src/main/res/values-it/strings.xml b/vector/src/main/res/values-it/strings.xml
index 520fac1900..2bffefc310 100644
--- a/vector/src/main/res/values-it/strings.xml
+++ b/vector/src/main/res/values-it/strings.xml
@@ -9,17 +9,17 @@
%1$s è uscito dalla stanza%1$s ha rifiutato l\'invito%1$s ha buttato fuori %2$s
- %1$s ha tolto il bando a %2$s
- %1$s ha bandito %2$s
- %1$s ha revocato l\'invito per %2$s
- %1$s ha modificato il suo avatar
- %1$s hanno cambiato il nome visualizzato con %2$s
- %1$s ha cambiato il nome visualizzato da %2$s a %3$s
- %1$s ha rimosso il nome visibile (%2$s)
- %1$s ha cambiato l\'argomento con: %2$s
- %1$s ha cambiato il nome della stanza con: %2$s
- %s ha iniziato una chiamata video.
- %s ha iniziato una chiamata vocale.
+ %1$s ha rimosso il ban nei confronti di %2$s
+ %1$s ha bannato %2$s
+ %1$s ha revocato l\'invito a %2$s
+ %1$s ha modificato la sua immagine profilo
+ %1$s hanno cambiato il nome in %2$s
+ %1$s ha cambiato il nome da %2$s a %3$s
+ %1$s ha rimosso il nome (%2$s)
+ %1$s ha cambiato l\'argomento in: %2$s
+ %1$s ha cambiato il nome della stanza in: %2$s
+ %s ha iniziato una videochiamata.
+ %s ha iniziato una chiamata audio.%s ha risposto alla chiamata.%s ha terminato la chiamata.%1$s ha reso la futura cronologia della stanza visibile a %2$s
@@ -28,19 +28,19 @@
tutti i membri della stanza.chiunque.sconosciuto (%s).
- %1$s ha attivato la crittografia end-to-end (%2$s)
+ %1$s ha attivato la crittografia E2E (%2$s)%1$s ha richiesto una conferenza VoIPConferenza VoIP iniziataConferenza VoIP terminata
- (anche l\'avatar è cambiato)
+ (anche l\'avatar è stato cambiato)%1$s ha rimosso il nome della stanza%1$s ha rimosso l\'argomento della stanza%1$s ha aggiornato il profilo %2$s
- %1$s ha mandato un invito a %2$s per unirsi alla stanza
- %1$s ha accettato l\'invito per %2$s
+ %1$s ha mandato un invito a %2$s per entrare alla stanza
+ %1$s ha accettato l\'invito a %2$s** Impossibile decriptare: %s **
- Il dispositivo del mittente non ci ha inviato le chiavi per questo messaggio.
- Impossibile revisionare
+ Il dispositivo del mittente non ha inviato le chiavi per questo messaggio.
+ Impossibile riscrivereImpossibile inviare il messaggioInvio dell\'immagine fallitoErrore di rete
@@ -48,7 +48,7 @@
Al momento non è possibile rientrare in una stanza vuota.Indirizzo emailNumero di telefono
- %1$s ha inviato un adesivo.
+ %1$s ha inviato uno sticker.Invito da %sInvito nella stanza
@@ -62,37 +62,37 @@
Messaggio rimosso da %1$sMessaggio rimosso [motivo: %1$s]Messaggio rimosso da %1$s [motivo: %2$s]
- Sync iniziale:
+ Sincronizzazione iniziale:
\nImportazione account…
- Sync iniziale:
-\nImportazione cifratura
- Sync iniziale:
+ Sincronizzazione iniziale:
+\nImportazione crittografia
+ Sincronizzazione iniziale:
\nImportazione stanze
- Sync iniziale:
+ Sincronizzazione iniziale:
\nImportazione stanze partecipate
- Sync iniziale:
-\nImportazione stanze invitate
- Sync iniziale:
+ Sincronizzazione iniziale:
+\nImportazione stanze con invito
+ Sincronizzazione iniziale:
\nImportazione stanze lasciate
- Sync iniziale:
+ Sincronizzazione iniziale:
\nImportazione comunità
- Sync iniziale:
+ Sincronizzazione iniziale:
\nImportazione dati account%s ha aggiornato questa stanza.Invio messaggio in corso …Cancella la coda di invio
- %1$s ha revocato l\'invito a %2$s di unirsi alla stanza
+ %1$s ha revocato l\'invito a %2$s per entrare alla stanzaInvito di %1$s. Motivo: %2$s%1$s ha invitato %2$s. Motivo: %3$s%1$s ti ha invitato. Motivo: %2$s%1$s è entrato nella stanza. Motivo: %2$s%1$s è uscito dalla stanza. Motivo: %2$s%1$s ha rifiutato l\'invito. Motivo: %2$s
- %1$s ha buttato fuori %2$s. Motivo: %3$s
+ %1$s ha cacciato fuori %2$s. Motivo: %3$s%1$s ha riammesso %2$s. Motivo: %3$s
- %1$s ha bandito %2$s. Motivo: %3$s
- %1$s ha inviato un invito a %2$s di unirsi alla stanza. Motivo: %3$s
- %1$s ha revocato l\'invito a %2$s di unirsi alla stanza. Motivo: %3$s
+ %1$s ha bannato %2$s. Motivo: %3$s
+ %1$s ha mandato un invito a %2$s per entrare nella stanza. Motivo: %3$s
+ %1$s ha revocato l\'invito a %2$s per entrare nella stanza. Motivo: %3$s%1$s ha accettato l\'invito per %2$s. Motivo: %3$s%1$s ha rifiutato l\'invito di %2$s. Motivo: %3$s
@@ -108,11 +108,11 @@
%1$s ha rimosso l\'indirizzo principale per questa stanza.%1$s ha permesso l\'accesso alla stanza per gli ospiti.%1$s ha impedito l\'accesso alla stanza per gli ospiti.
- %1$s ha attivato la cifratura end-to-end.
- %1$s ha attivato la cifratura end-to-end (algoritmo %2$s non riconosciuto).
+ %1$s ha attivato la crittografia E2E.
+ %1$s ha attivato la crittografia E2E (algoritmo %2$s non riconosciuto).%1$s ha creato la stanzaHai inviato un\'immagine.
- Hai inviato un adesivo.
+ Hai inviato uno sticker.Il tuo invitoHai creato la stanzaHai invitato %1$s
@@ -120,25 +120,25 @@
Sei uscito dalla stanzaHai rifiutato l\'invitoHai buttato fuori %1$s
- Hai riammesso %1$s
- Hai bandito %1$s
- Hai ritirato l\'invito di %1$s
- Hai cambiato il tuo avatar
- Hai impostato il tuo nome visualizzato a %1$s
- Hai cambiato il tuo nome visualizzato da %1$s a %2$s
- Hai rimosso il tuo nome visibile (era %1$s)
- Hai cambiato l\'argomento a: %1$s
+ Hai rimosso il ban nei confronti di %1$s
+ Hai bannato %1$s
+ Hai revocato l\'invito a %1$s
+ Hai cambiato la tua immagine profilo
+ Hai impostato il tuo nome in %1$s
+ Hai cambiato il tuo nome da %1$s a %2$s
+ Hai rimosso il tuo nome (era %1$s)
+ Hai cambiato l\'argomento in: %1$s%1$s ha modificato l\'avatar della stanzaHai modificato l\'avatar della stanza
- Hai cambiato il nome della stanza a: %1$s
+ Hai cambiato il nome della stanza in: %1$sHai iniziato una videochiamata.
- Hai iniziato una telefonata.
- %s ha inviato dati per impostare la chiamata.
- Hai inviato dati per impostare la chiamata.
+ Hai iniziato una chiamata audio.
+ %s ha inviato i dati per impostare la chiamata.
+ Hai inviato i dati per impostare la chiamata.Hai risposto alla chiamata.Hai terminato la chiamata.Hai reso visibile la futura cronologia della stanza a %1$s
- Hai attivato la crittografia end-to-end (%1$s)
+ Hai attivato la crittografia E2E (%1$s)Hai aggiornato questa stanza.Hai richiesto una conferenza VoIPHai rimosso il nome della stanza
@@ -146,9 +146,9 @@
%1$s ha rimosso l\'avatar della stanzaHai rimosso l\'avatar della stanzaHai aggiornato il tuo profilo %1$s
- Hai mandato un invito a %1$s a unirsi alla stanza
- Hai revocato l\'invito per %1$s a unirsi alla stanza
- Hai accettato l\'invito per %1$s
+ Hai mandato un invito a %1$s per entrare nella stanza
+ Hai revocato l\'invito a %1$s per entrare alla stanza
+ Hai accettato l\'invito a %1$s%1$s ha aggiunto il widget %2$sHai aggiunto il widget %1$s%1$s ha rimosso il widget %2$s
@@ -157,22 +157,22 @@
Hai modificato il widget %1$sAmministratoreModeratore
- Predefinito
+ StandardPersonalizzato (%1$d)Personalizzato
- Hai cambiato il livello di potere di %1$s.
- %1$s ha cambiato il livello di potere di %2$s.
+ Hai cambiato le autorizzazioni di %1$s.
+ %1$s ha cambiato le autorizzazioni di %2$s.%1$s da %2$s a %3$sIl tuo invito. Motivo: %1$sHai invitato %1$s. Motivo: %2$sSei entrato nella stanza. Motivo: %1$sSei uscito dalla stanza. Motivo: %1$sHai rifiutato l\'invito. Motivo: %1$s
- Hai buttato fuori %1$s. Motivo: %2$s
+ Hai cacciato %1$s. Motivo: %2$sHai riammesso %1$s. Motivo: %2$s
- Hai bandito %1$s. Motivo: %2$s
- Hai mandato un invito a %1$s a unirsi alla stanza. Motivo: %2$s
- Hai revocato l\'invito a %1$s a unirsi alla stanza. Motivo: %2$s
+ Hai bannato %1$s. Motivo: %2$s
+ Hai mandato un invito a %1$s per entrare nella stanza. Motivo: %2$s
+ Hai revocato l\'invito a %1$s per entrare nella stanza. Motivo: %2$sHai accettato l\'invito per %1$s. Motivo: %2$sHai ritirato l\'invito di %1$s. Motivo: %2$s
@@ -189,7 +189,7 @@
Hai permesso l\'accesso alla stanza per gli ospiti.Hai impedito l\'accesso alla stanza per gli ospiti.Hai attivato la crittografia end-to-end.
- Hai attivato la crittografia end-to-end (algoritmo %1$s sconosciuto).
+ Hai attivato la crittografia E2E (algoritmo %1$s sconosciuto).Hai impedito l\'accesso alla stanza agli ospiti.%1$s ha impedito l\'accesso alla stanza agli ospiti.Hai permesso l\'accesso agli ospiti.
@@ -198,8 +198,8 @@
Sei uscito. Motivo: %1$s%1$s è uscito. Motivo: %2$s%1$s è entrato. Motivo: %2$s
- Hai revocato l\'invito per %1$s
- %1$s ha revocato l\'invito per %2$s
+ Hai revocato l\'invito a %1$s
+ %1$s ha revocato l\'invito a %2$sHai invitato %1$s%1$s ha invitato %2$sHai aggiornato la stanza.
@@ -219,19 +219,19 @@
%1$s, %2$s, %3$s e %4$s%1$s, %2$s e %3$s
- 🎉 Tutti i server sono banditi dalla partecipazione! Questa stanza non può più essere usata.
+ 🎉 Tutti i server sono banditi! Questa stanza non può più essere usata.Nessuna modifica.
- • I server che corrispondono a IP letterali ora sono banditi.
- • I server che corrispondono a IP letterali ora sono permessi.
- • I server che corrispondono a %s sono stati rimossi dalla lista dei consentiti.
- • I server che corrispondono a %s ora sono permessi.
+ • I server che corrispondono a IP alfabetici ora sono banditi.
+ • I server che corrispondono a IP alfabetici ora sono permessi.
+ • I server che corrispondono a %s sono stati rimossi dalla lista degli ammessi.
+ • I server che corrispondono a %s ora sono ammessi.• I server che corrispondono a %s sono stati rimossi dalla lista di ban.• I server che corrispondono a %s ora sono banditi.Hai cambiato le ACL del server per questa stanza.%s ha cambiato le ACL del server per questa stanza.
- • I server che corrispondono a IP letterali sono banditi.
- • I server che corrispondono a IP letterali sono permessi.
- • I server che corrispondono a %s sono permessi.
+ • I server che corrispondono a IP alfabetici sono banditi.
+ • I server che corrispondono a IP alfabetici sono permessi.
+ • I server che corrispondono a %s sono ammessi.• I server che corrispondono a %s sono banditi.Hai impostato le ACL del server per questa stanza.%s ha impostato le ACL del server per questa stanza.
@@ -257,12 +257,12 @@
%1$s ha aggiunto l\'indirizzo alternativo %2$s per questa stanza.%1$s ha aggiunto gli indirizzi alternativi %2$s per questa stanza.
- Hai modificato la video conferenza
- Video conferenza modificata da %1$s
- Hai iniziato la video conferenza
- Hai terminato la video conferenza
- Video conferenza terminata da %1$s
- Video conferenza iniziata da %1$s
+ Hai modificato la videoconferenza
+ Videoconferenza modificata da %1$s
+ Hai iniziato la videoconferenza
+ Hai terminato la videoconferenza
+ Videoconferenza terminata da %1$s
+ Videoconferenza iniziata da %1$sMessaggiStanza
@@ -281,7 +281,7 @@
CondividiUltimiInoltra
- Collegamento permanente
+ URL LinkVedi il codice sorgenteVedi il codice sorgente decifratoElimina
@@ -366,7 +366,7 @@
Crea accountAccediDisconnetti
- URL dell\'Home Server
+ URL dell\'homeserverURL dell\'Identity ServerCercaAvvia una nuova chat diretta
@@ -412,9 +412,9 @@
La registrazione con email e numero di telefono in una volta sola non è ancora supportata. Sarà utilizzato solo il numero di telefono.
\n
\nPotrai aggiungere l\'indirizzo email al tuo profilo dalle impostazioni.
- Questo Home Server vorrebbe assicurarsi che tu non sia un robot
+ Questo homeserver vuole assicurarsi che tu non sia un robotNome utente già in uso
- Home Server:
+ Homeserver:Server identità:Ho verificato il mio indirizzo emailPer reimpostare la password, inserisci l\'indirizzo email associato al tuo account:
@@ -497,7 +497,7 @@
${app_name} può usare tua Rubrica locale per trovare altri utenti Matrix grazie alle loro email e numeri di telefono.
\n
\nTi sta bene comunicare i dati di tutti i tuoi contatti per questo scopo\?
- Purtroppo l\'azione non è stata eseguita poiché mancano i permessi
+ Purtroppo l\'azione non è stata eseguita a causa di autorizzazioni mancantiSalvatoSalvare nei download?
@@ -506,16 +506,16 @@
ContinuaRimuovi
- Unisciti
+ EntraAnteprimaRifiutaVai al primo messaggio non letto.
- Sei stato invitato ad entrare in questa stanza da %s
+ Sei stato invitato da %s a entrare in questa stanzaQuesto invito è stato spedito a %s, che non è associato a questo account.
\nPuoi aggiungere questa email al tuo account o provare ad accedere con un account differente.
- Stai provando ad accedere a %s. Desideri entrare per partecipare alla discussione?
+ Stai provando ad accedere a %s. Vuoi entrare e partecipare alla discussione\?una stanzaQuesta è l\'anteprima della stanza. Le interazioni sono disabilitate.
@@ -530,7 +530,7 @@
OnlineOfflineInattivo
- STRUMENTI ADMIN
+ STRUMENTI DELL\'AMMINISTRATORECHIAMATACHAT DIRETTESESSIONI
@@ -591,7 +591,7 @@
UtentiFileImpostazioni
- ID malformato. Dovrebbe essere un indirizzo email o un ID utente come \'@localpart:domain\'
+ ID malformato. Dovrebbe essere un indirizzo email o un ID utente Matrix come \'@localpart:domain\'INVITATIMEMBRI
@@ -599,8 +599,8 @@
Desideri nascondere tutti i messaggi di questo utente\?
\n
\nTieni presente che questa azione riavvierà l\'app e ciò potrebbe richiedere molto tempo.
- Annulla il caricamento
- Annulla lo scaricamento
+ Annulla l\'Upload
+ Annulla il DownloadCercaCerca tra i membri della stanza
@@ -661,7 +661,7 @@
La richiesta di sincronizzazione sta impiegando troppo tempoRitardo tra ogni sincronizzazioneVersione
- Versione olm
+ Versione OLMTermini e condizioniAvvisi di terze partiCopyright
@@ -696,11 +696,11 @@
Password:InviaAutenticato come
- Home Server
- Server identità
+ Homeserver
+ Server di identitàInterfaccia utenteLingua
- Scegli una lingua
+ Scegli la linguaIn attesa di verificaControlla la tua email e clicca sul link che ti è stato spedito. Fatto questo, clicca su Continua.Impossibile verificare l\'indirizzo email. Controlla la tua email e clicca sul link che ti è stato spedito. Fatto questo, clicca su Continua.
@@ -711,9 +711,9 @@
Password attualeNuova passwordConferma la nuova password
- Fallito l\'aggiornamento della password
+ L\'aggiornamento della password è fallitoLa tua password è stata aggiornata
- Mostrare tutti i messaggi di %s\?
+ Mostra tutti i messaggi di %s\?
\n
\nTieni presente che questa azione riavvierà l\'app e ciò potrebbe richiedere molto tempo.Sicuro di voler rimuovere questo target di notifica?
@@ -723,10 +723,10 @@
Per favore scegli un paeseNumero di telefonoNumero di telefono non valido per il paese selezionato
- Verifica numero di telefono
+ Verifica il numero di telefonoE\' stato spedito un SMS con il codice di attivazione. Per favore inserisci il codice qui sotto.Inserisci un codice di attivazione
- Errore durante la convalida del numero di telefono
+ Errore durante la verifica del numero di telefonoCodice3 giorni
@@ -738,7 +738,7 @@
Icona della stanzaNome della stanzaArgomento
- Etichetta
+ Etichetta dela stanzaEtichetta come:Preferito
@@ -768,12 +768,12 @@
ID interno della stanzaIndirizziLaboratorio
- Queste sono caratteristiche sperimentali che potrebbero dare risultati inattesi. Usare con cautela.
- Crittografia da-utente-a-utente
- La crittografia da-utente-a-utente è attiva
- Devi disconnetterti per abilitare la crittografia.
+ Queste sono caratteristiche sperimentali che potrebbero dare risultati inattesi. Usali con cautela.
+ Crittografia E2E
+ La crittografia E2E è attiva
+ Per abilitare la crittografia devi disconnetterti.Cripta solo per le sessioni verificate
- Non inviare mai da questa sessione messaggi cifrati verso sessioni in questa stanza non verificate.
+ Da questa sessione non inviare mai messaggi cifrati alle sessioni non verificate presenti in questa stanza.Questa stanza non ha indirizzi localiNuovo indirizzo stanza (es. #foo:matrix.org)
@@ -785,15 +785,15 @@
Non usare più come indirizzo principaleCopia ID stanzaCopia indirizzo stanza
- Crittografia abilitata in questa stanza.
- Crittografia disabilitata in questa stanza.
+ La Crittografia in questa stanza é attiva.
+ La Crittografia in questa stanza non è attiva.Attiva crittografia
\n(attenzione: non potrà più essere disattivata!)ElencoTema
- %s stava cercando di caricare un punto specifico tra i messaggi passati di questa stanza, ma non l\'ha trovato.
+ %s stava cercando di caricare un punto specifico nella cronologia di questa stanza ma non è stato in grado di trovarlo.Informazioni sulla crittografia E2EInformazioni sull\'evento
@@ -803,29 +803,29 @@
AlgoritmoID sessioneErrore di decriptazione
- Informazioni sessione del mittente
+ Informazioni sulla sessione del mittenteNome pubblicoNome pubblicoID sessioneChiave sessioneVerificaImpronta digitale Ed25519
- Esporta le chiavi di crittografia delle stanze
+ Esporta le chiavi di crittografia E2E delle stanzeEsporta le chiavi delle stanzeEsporta le chiavi in un file localeEsporta
- Inserisci password
- Conferma password
- Le chiavi di crittografia della stanza sono state salvate su \'%s\'.
+ Inserisci la Passphrase
+ Conferma la Passphrase
+ Le chiavi per la crittografia E2E della stanza sono state salvate su \'%s\'.
\n
-\nAttenzione: se si disinstalla quest\'applicazione il file, viene eliminato.
- Importa le chiavi di crittografia della stanza
+\nAttenzione: se si disinstalla quest\'applicazione il file viene eliminato.
+ Importa le chiavi di crittografia E2E della stanzaImporta le chiavi della stanzaImporta le chiavi da un file localeImportaCripta solo per le sessioni verificate
- Non inviare mai da questa sessione messaggi cifrati verso sessioni non verificate.
- NON verificato
+ Da questa sessione non inviare mai messaggi cifrati verso sessioni non verificate.
+ Non verificatoVerificatoMetti in lista nerasessione sconosciuta
@@ -849,13 +849,13 @@
Scegli un elenco di stanzeIl server potrebbe essere non disponibile o sovraccaricoInserisci un Home Server per vedere le sue stanze pubbliche
- URL dell\'Home Server
+ Nome del serverTutte le stanze sull\'Home Server %sTutte le stanze native %sCerca tra i messaggi passati
- Grandezza font
+ Dimensione fontMinuscoloPiccoloNormale
@@ -902,10 +902,10 @@
Per segnalare un errore agita il dispositivo con rabbiaSicuro di voler avviare una nuova chat con %s\?Sicuro di voler fare una chiamata audio\?
- Sicuro di voler fare una chiamata video\?
+ Sicuro di voler fare una videochiamata\?Elenco gruppiElenco dei membri
- Apri descrizione
+ Apri intestazioneSincronizzazione…%d utente attivo
@@ -938,8 +938,8 @@
StatisticheNotificheNuovo ID della comunità (es. +foo:matrix.org)
- L\'ID comunità non è valido
- \'%s\' non è un ID comunità valido
+ L\'ID della comunità non è valido
+ \'%s\' non è un ID della comunità valido%d messaggio notificato non letto%d messaggi notificati non letti
@@ -999,7 +999,7 @@
Dimentica la stanzaAvatarPredisposizione
- Questa stanza non mostra predisposizione per alcuna comunità
+ Questa stanza non mostra predisposizioni per alcuna comunitàIl livello di potere deve essere un intero positivo.Avatar di avvisoAvatar di ricezione
@@ -1051,7 +1051,7 @@
Richiedi di nuovo le chiavi di crittografia dalle tue altre sessioni.La richiesta della chiave è stata inviata.Richiesta inviata
- Avvia ${app_name} su un altro dispositivo che possa decifrare il messaggio, in modo che possa inviare le chiavi a questa sessione.
+ Avvia ${app_name} su un altro dispositivo capace di decrittare il messaggio in modo che poi possa inviarti le chiavi su questa sessione.Digita qui…Invia messaggio vocaleprosegui con…
@@ -1118,7 +1118,7 @@
Avvisi di sistemaLimite di risorse superato
- Contatta l\'amministratore
+ Contatta l\'Amministratorecontatta l\'amministratore del servizioL\'Home Server ha superato uno dei limiti delle risorse, pertanto alcuni utenti non potranno accedere.L\'Home Server ha superato uno dei limiti delle risorse.
@@ -1132,9 +1132,9 @@
Spiacente, si è verificato un erroreCaricamento differito dei membri della stanzaVersione %s
- Crea una password per mettere al sicuro le chiavi esportate. La stessa password dovrà essere usata per poter importare le chiavi.
- Crea una password
- Le password devono corrispondere
+ Crea una Passphrase per mettere al sicuro le chiavi esportate. La stessa Passphrase dovrà essere usata anche per importare le chiavi.
+ Crea una Passphrase
+ La Passphrase non corrispondeespandiriduciMostra l\'area informazioni
@@ -1172,7 +1172,7 @@
AccettaPer favore, leggi e accetta i termini di servizio di questo Home Server:Diagnostica delle notifiche
- Diagnosi
+ Diagnosi dei problemiEsegui i testIn esecuzione… (%1$d di %2$d)La diagnostica di base risponde correttamente. Se continui a non ricevere notifiche, invia una segnalazione errore per aiutarci a indagare.
@@ -1207,7 +1207,7 @@
Token FCM registrato con successo sull\'Home Server.E\'fallita la registrazione del Token FCM sull\'Home Server:
\n %1$s
- Servizio di notifiche
+ Servizi di notificaServizio di notifiche in esecuzione.Servizio di notifiche non in esecuzione.
\nProva a riavviare l\'applicazione.
@@ -1225,7 +1225,7 @@
${app_name} è stato configurato per funzionare in modo limitato quando è eseguito in background.
\nIl funzionamento dell\'App, quando è eseguita in background, è stato fortemente limitato e ciò potrebbe influenzare la ricezione delle notifiche.
\n%1$s
- Non limitare
+ Disabilita le restrizioniOttimizzazione della batteria${app_name} non è influenzato dall\'ottimizzazione della batteria.Se si lascia un dispositivo scollegato, fermo e con lo schermo spento, dopo un certo tempo questo entra in modalità Doze. Ciò impedisce alle App di accedere alla rete e ritarda le attività, le sincronizzazioni e la ricezione dei normali allarmi.
@@ -1246,14 +1246,14 @@
FattoImpostazioni di notifica avanzateSe ti disconnetti adesso perderai i tuoi messaggi cifrati
- Il Backup delle chiavi è in corso. Se ti disconnetti adesso perderai i tuoi messaggi cifrati.
+ Il Backup delle chiavi è in corso. Se ti disconnetti adesso perderai i tuoi messaggi criptati.Il Backup delle chiavi deve essere attivo su tutte le tue sessioni per evitare di perdere l\'accesso ai tuoi messaggi cifrati.Non voglio i miei messaggi cifratiBackup delle chiavi…Usa il Backup delle chiaviSei sicuro\?Backup
- Perderai l\'accesso ai tuoi messaggi cifrati a meno che tu non faccia il Backup delle chiavi prima di disconnetterti.
+ Perderai l\'accesso ai tuoi messaggi criptati a meno che tu non faccia il Backup delle chiavi prima di disconnetterti.RimaniInterrompiIgnora
@@ -1280,38 +1280,38 @@
Scegli il colore del LED, la vibrazione, il suono…Gestione chiavi crittograficheInvia il messaggio col tasto Invio
- Il tasto Invio della tastiera, invece di andare a capo invierà il messaggio
+ Il tasto Invio della tastiera invece di andare a capo invierà il messaggioLa modalità risparmio dati applica un filtro specifico che esclude gli aggiornamenti di presenza e le notifiche di scrittura.Aggiorna la passwordLa password non è validaLe password non corrispondono
- Ripristino dei messaggi cifrati
+ Ripristino dei messaggi criptatiGestisci il Backup delle chiaviSilenziosoInserisci un nome utente.
- Inserisci una password
- La password è troppo debole
- Cancella la password se vuoi che ${app_name} generi un codice di recupero.
+ Inserisci una Passphrase
+ La Passphrase è troppo debole
+ Cancella la Passphrase se vuoi che ${app_name} generi un codice di recupero.Non c\'è alcuna sessione Matrix disponibileNon perdere mai i messaggi cifrati
- I messaggi nelle stanze cifrate sono protetti con crittografia E2E. Solo tu e il/i destinatario/i avete le chiavi crittografiche per leggere questi messaggi.
-\n
+ I messaggi nelle stanze cifrate sono protetti con crittografia E2E. Solo tu e i destinatarii avete le chiavi crittografiche per leggere questi messaggi.
+\n
\nRicorda di fare un backup delle tue chiavi crittografiche per evitare di perderle.Inizia ad usare il Backup delle chiavi crittografiche(Avanzato)Esporta manualmente le chiavi crittografiche
- Proteggi il tuo backup con una password.
- Una copia cifrata delle tue chiavi crittografiche sarà salvata sul tuo Home Server. Proteggi il tuo Backup con una password per tenerlo al sicuro.
-\n
-\nPer una maggior sicurezza, è meglio che la password del Backup delle chiavi sia diversa da quella del tuo account.
- Imposta password
+ Proteggi il tuo backup con una Passphrase.
+ Una copia criptata delle tue chiavi crittografiche sarà salvata sul tuo Home Server. Proteggi il tuo Backup con una Passphrase per tenerla al sicuro.
+\n
+\nPer una maggior sicurezza, è meglio che la Passphrase del Backup delle chiavi sia diversa dalla password del tuo account.
+ Imposta la PassphraseCreazione backupOppure, proteggi il tuo Backup con un codice di recupero, salvandolo in un luogo sicuro.(Avanzato) Imposta un codice di recuperoFatto!Il Backup delle tue chiavi crittografiche è in corso.
- Il tuo codice di recupero è un\'ancora di salvezza - puoi usarlo per riaccedere ai tuoi messaggi cifrati se dimentichi la password.
-\nSalva il tuo codice di recupero in un luogo sicuro, tipo un password manager (o una cassaforte)
+ Il tuo codice di recupero è un\'ancora di salvezza - puoi usarlo per riaccedere ai tuoi messaggi criptati qualora dimenticassi la Passphrase.
+\nSalva il tuo codice di recupero in un luogo sicuro, come un password manager (o una cassaforte)Salva il tuo codice di recupero in un luogo sicuro, come un password manager (o una cassaforte)FattoHo fatto una copia
@@ -1323,7 +1323,7 @@
\nAttenzione: se l\'applicazione su cui è salvato venisse disinstallata, il codice di recupero verrà perso.Si prega di farne una copiaCondividi il codice di recupero con…
- Generazione del codice di recupero usando la password. Questo processo può durare alcuni secondi.
+ Generazione del codice di recupero basato sulla Passphrase. Questo processo può durare alcuni secondi.Codice di recuperoErrore inattesoBackup avviato
@@ -1331,20 +1331,20 @@
Sei sicuro\?Se ti disconnetti o perdessi questo dispositivo potresti perdere l\'accesso ai tuoi messaggi.Verifica versione backup…
- Usa la tua password di recupero per sbloccare i messaggi cifrati
+ Usa la tua Passphrase per sbloccare i messaggi criptatiusa il tuo codice di recupero
- Se non conosci la tua password di recupero, puoi %s.
+ Se non ricordi la tua Passphrase, puoi %s.Usa il tuo codice di recupero per sbloccare la Timeline dei messaggi cifratiInserisci codice di recuperoRipristino messaggioHai perso il codice di recupero\? Nelle Impostazioni puoi crearne uno nuovo.
- Impossibile decifrare il backup con questa password: verifica che la password di recupero inserita sia corretta.
+ Impossibile decrittare il backup con questa Passphrase: verifica che sia corretta.Errore di rete: controlla la tua connessione e riprova.Ripristino Backup:Codice di recupero in elaborazione…Download chiavi…Importazione chiavi…
- Sblocca Timeline
+ Sblocca CronologiaInserisci un codice di recuperoImpossibile decifrare il backup con questo codice di recupero: verifica di avere inserito il codice di recupero corretto.Backup ripristinato %s !
@@ -1359,7 +1359,7 @@
Rilevazione ultima versione codici di recupero fallita (%s).La cifratura della sessione non è stata attivataRipristina da backup
- Elimina backup
+ Elimina BackupIl backup delle chiavi è stato impostato correttamente per questa sessione.Il backup delle chiavi non è attivo su questa sessione.Questa sessione non sta facendo il backup delle chiavi.
@@ -1370,10 +1370,10 @@
Il backup ha una firma non valida dalla sessione verificata %sIl backup ha una firma non valida dalla sessione non verificata %sImpossibile ottenere info di fiducia per il backup (%s).
- Per usare il backup delle chiavi crittografiche su questa sessione, devi accedervi con la password o con il codice di recupero.
- Eliminazione backup…
+ Per usare il backup delle chiavi crittografiche su questa sessione, devi accedervi con la Passphrase o con il codice di recupero.
+ Eliminazione Backup…Eliminazione backup fallita (%s)
- Elimina backup
+ Elimina BackupEliminare il Backup delle chiavi crittografiche dall\'Home Server\? Non potrai più usare il codice di recupero per leggere i messaggi cifrati.Nuovo Backup delle chiaviÈ stato rilevato un nuovo Backup delle chiavi crittografiche.
@@ -1397,7 +1397,7 @@
FirmaRisposta Home Server non validaOpzioni autocompletamento server
- ${app_name} ha rilevato una configurazione server personalizzata per il tuo dominio userId \"%1$s\":
+ ${app_name} ha rilevato una configurazione server personalizzata per il tuo dominio userID \"%1$s\":
\n%2$sUsa configurazioneInizializzazione del servizio
@@ -1439,13 +1439,13 @@
Richiesta condivisione chiavi crittograficheIgnoraVerifica confrontando una breve stringa.
- Per la massima sicurezza, consigliamo di farlo di persona o di utilizzare un altro metodo di comunicazione fidato.
+ Per una miglior sicurezza consigliamo di farlo di persona o di utilizzare altri metodi di comunicazione sicuri.Inizia la verificaRichiesta di verifica in arrivo
- Verifica questa sessione per segnarla come fidata. Verificare le sessioni dei partner ti dà una maggiore tranquillità quando usi messaggi cifrati end-to-end.
- Verificare questa sessione la segnerà come fidata e segnerà anche la tua sessione come fidata per il tuo partner.
- Verifica questa sessione confermando che le seguenti emoji appaiono sullo schermo del partner
- Verifica questa sessione confermando che i seguenti numeri appaiono sullo schermo del partner
+ Verifica questa sessione per segnarla come affidabile. Verificare le sessioni degli utenti offre maggiori sicurezze quando usi messaggi cifrati end-to-end.
+ Verificando questa sessione verrà contrassegnata come affidabile anche per l\'altro utente.
+ Verifica questa sessione confermando che le seguenti emoji appaiono sullo schermo dell\'altro utente
+ Verifica questa sessione confermando che i seguenti numeri appaiono sullo schermo dell\'altro utenteHai ricevuto una richiesta di verifica.Vedi la richiestaIn attesa che il partner confermi…
@@ -1457,7 +1457,7 @@
Usa la verifica classica.Verifica chiaveRichiesta annullata
- L\'altra parte ha annullato la verifica.
+ L\'altro utente ha annullato la verifica.
\n%sLa verifica è annullata.
\nMotivo: %s
@@ -1468,12 +1468,12 @@
Il processo di verifica è scadutoLa sessione non sa della transazioneLa sessione non riesce ad accordarsi sulla chiave, hash, MAC, o metodo SAS
- L\'hash non corrispondeva
+ L\'hash inviato non corrispondeIl SAS non corrispondevaLa sessione ha ricevuto un messaggio inaspettatoÈ stato ricevuto un messaggio non validoLe chiavi non corrispondono
- Utente non corrispondente
+ L\'utente non corrispondeErrore sconosciutoEsiste già un backup sul tuo Home ServerSembra tu abbia già impostato il backup delle chiavi crittografiche da un\'altra sessione. Vuoi sostituirlo con il backup che stai creando\?
@@ -1566,14 +1566,14 @@
Non trovi quello che cerchi\?Crea un nuova stanzaInvia un nuovo messaggio diretto
- Vedi l\'elenco delle stanze
+ Guarda l\'elenco delle stanze pubblicheNome o ID stanza (#esempio:matrix.org)
- Attiva swipe per rispondere nella timeline
- Collegamento copiato negli appunti
- Gestore dell\'integrazione
+ Attiva lo swipe per rispondere nella timeline
+ Link URL copiato negli appunti
+ Gestore delle integrazioniNon è stato configurato nessun Integration Manager.Aggiungi per ID utente
- Creare una stanza …
+ Creazione stanza …Nessun risultato trovato. Usa \"Aggiungi per ID utente\" per cercare sul server.Inizia a digitare per ottenere risultatiCerca per nome o ID utente …
@@ -1584,7 +1584,7 @@
Per continuare devi accettare i termini di servizio.Termini di servizioLeggi i termini di servizio
- Fatti trovare dagli altri utenti
+ Fatti rintracciare dagli altri utentiUsa bot, bridge, widget e pacchetti di stickerLeggi suNessuno
@@ -1603,7 +1603,7 @@
Imposta un\'email per il ripristino dell\'account in caso di problemi. Email e numero di telefono potranno essere usati, se lo vorrai, anche per permettere a chi li conosce di trovarti.Non è stato trovato alcun Home Server seguendo questo URL. Per favore, controllaloPermetti chiamate dal Server di appoggio
- Se il tuo Home Server non ne ha un proprio Server d\'appoggio verrà usato %s (il Server d\'appoggio verrà a conoscenza del tuo indirizzo IP durante le chiamate)
+ Verrà usato %s come server d\'appoggio quando il tuo homeserver non ha uno proprio (il tuo indirizzo IP verrà esposto durante una chiamata)Per poterlo fare, aggiungi un Identity Server nelle Impostazioni.Modalità sync in backgroundOttimizzato per la batteria
@@ -1629,20 +1629,20 @@
Disconnetti Identity ServerConfigura Identity ServerCambia Identity Server
- Stai usando l\'Identity Server %1$s per trovare e farti trovare da altri utenti.
- In questo momento non stai usando alcun Identity Server. Per trovare e farti trovare dagli altri utenti, configurane uno qua sotto.
+ Stai usando l\'Identity Server %1$s per trovare altri utenti e essere a tua volta rintracciabile da loro.
+ In questo momento non stai usando alcun Identity Server. Per trovare e farti rintracciare dagli altri utenti, configurane uno qua sotto.Indirizzi email visibili pubblicamente
- Le opzioni su come farsi trovare da altri utenti appariranno dopo avere aggiunto un\'email.
- Le opzioni su come farsi trovare da altri utenti appariranno dopo avere aggiunto un numero di telefono.
- Se ti disconnetti dall\'Identity Server gli altri utenti non potranno trovarti e tu non potrai invitarne di nuovi per email o telefono.
+ Le opzioni su come farsi trovare da altri utenti appariranno dopo che avrai aggiunto un\'email.
+ Le opzioni su come farsi trovare da altri utenti appariranno dopo che avrai aggiunto un numero di telefono.
+ Se ti disconnetti dall\'Identity Server gli altri utenti non potranno trovarti e tu non potrai invitarli tramite le loro email e numeri di telefono.Numeri di telefono visibili pubblicamente
- Abbiamo inviato un\'email di conferma a %s, controlla l\'email e clicca sul link di conferma
+ Abbiamo inviato un\'email di conferma a %s. Controlla l\'email e clicca sul link di confermaIn attesa
- Inserisci un URL di server di identità
+ Inserisci l\'URL di un Identity ServerImpossibile connettersi all\'Identity ServerInserisci l\'URL dell\'Identity ServerL\'Identity Server non ha reso noti i propri termini di servizio
- L\'Identity Server che hai scelto non ha freso noti i propri termini di servizio. Continua solo se ti fidi
+ L\'Identity Server che hai scelto non ha reso noti i propri termini di servizio. Continua solo se ti fidiÈ stato inviato un messaggio a %s. Inserisci il codice di verifica che contiene.In questo momento stai condividendo i tuoi indirizzi email o numeri di telefono sull\'Identity Server %1$s. Dovrai riconnetterti a %2$s per interromperne la condivisione.Accetta i termini di servizio dell\'Identity Server (%s) per permettere ad altri utenti di trovarti tramite la tua email o numero di telefono.
@@ -1653,13 +1653,13 @@
Invia allegatoApri il pannello di navigazioneApri il menu \"Crea nuova stanza\"
- Chiudi il menu di \"Crea nuova stanza\"…
+ Chiudi il menu \"Crea nuova stanza\"…Crea una nuova conversazione direttaCrea nuova stanzaChiudi il banner del Backup delle chiaviMostra passwordNascondi password
- Salta in fondo
+ Vai in fondo%1$s, %2$s e %3$s hanno letto%1$s e %2$s hanno letto%s ha letto
@@ -1667,14 +1667,14 @@
%d utente ha letto%d utenti hanno letto
- Il file \'%1$s\' (%2$s) è troppo grande da inviare. Il limite è %3$s.
- Si è verificato un errore ricevendo l\'allegato.
+ Il file \'%1$s\' (%2$s) è troppo grande per essere inviato. Il limite è %3$s.
+ Si è verificato un errore nella ricezione dell\'allegato.FileContattoFotocameraAudioGalleria
- Adesivo
+ StickerErrore nella gestione dei dati condivisiÈ spamÈ inappropriato
@@ -1684,19 +1684,19 @@
SEGNALAIGNORA UTENTEContenuto segnalato
- Questo contenuto è stato segnalato.
-\n
-\nSe non vuoi più vedere contenuti da questo utente, puoi ignorarlo per nascondere i suoi messaggi.
+ Questo contenuto è stato segnalato.
+\n
+\nSe non vuoi più vedere i contenuti di questo utente puoi ignorarlo. Ciò nasconderà i suoi messaggi dalla tua vista.Segnalato come spam
- Questo contenuto è stato segnalato come spam.
-\n
-\nSe non vuoi più vedere contenuti da questo utente, puoi ignorarlo per nascondere i suoi messaggi.
+ Questo contenuto è stato segnalato come spam.
+\n
+\nSe non vuoi più vedere i contenuti di questo utente puoi ignorarlo. Ciò nasconderà i suoi messaggi dalla tua vista.Segnalato come inappropriato
- Questo contenuto è stato segnalato come inappropriato.
-\n
-\nSe non vuoi più vedere contenuti da questo utente, puoi ignorarlo per nascondere i suoi messaggi.
- ${app_name} richiede l\'autorizzazione per salvare le tue chiavi crittografiche sul disco.
-\n
+ Questo contenuto è stato segnalato come inappropriato.
+\n
+\nSe non vuoi più vedere i contenuti di questo utente puoi ignorarlo. Ciò nasconderà i suoi messaggi dalla tua vista.
+ ${app_name} richiede l\'autorizzazione per salvare sul disco le tue chiavi crittografiche.
+\n
\nPermetti l\'accesso nel prossimo pop-up per poter esportare le chiavi manualmente.In questo momento non c\'è nessuna connessione di reteConferma la tua password
@@ -1725,7 +1725,7 @@
Questo widget vuole usare le seguenti risorse:PermettiBlocca tutto
- Usare la fotocamera
+ Usa la fotocameraUsa il microfonoLeggi media protetti da DRMQuesto non è un indirizzo di server Matrix valido
@@ -1735,93 +1735,93 @@
Solo citazioniSilenziosoImpostazioni
- Lascia la stanza
+ Esci dalla stanza%1$s non ha fatto modificheInvia il messaggio come spoilerSpoiler
- Digita parole chiave per trovare una reazione.
+ Digita parole chiave per trovare le reazioni.Non stai ignorando alcun utenteTieni premuto su una stanza per altre opzioni
- %1$s ha reso pubblica la stanza a chiunque conosca il collegamento.
- %1$s ha reso la stanza solo ad invito.
+ %1$s ha reso la stanza pubblica. Ora è raggiungibile da chiunque ne conosca l\'indirizzo.
+ %1$s ha reso la stanza accessibile solo su invito.Messaggi non letti
- È la tua conversazione. Tienitela.
- Chatta con persone direttamente o in gruppi
- Tieni private le conversazioni con la crittografia
+ Le -tue- conversazioni appartengono solo a te.
+ Scambia messaggi diretti o nei gruppi
+ Rendi sicure le tue conversazioni grazie alla crittografiaEstendi e personalizza la tua esperienzaIniziaSeleziona un server
- Proprio come le email, gli account hanno una sola origine, ma puoi parlare con chiunque
- Unisciti a milioni gratuitamente sul server pubblico più grande
+ Proprio come le email: puoi fare un account dove preferisci e interagire con tutti
+ Unisciti gratuitamente a milioni di utenti sul più grande server pubblicoHosting premium per organizzazioniMaggiori infoAltroImpostazioni personalizzate ed avanzateContinuaConnetti a %1$s
- Connetti a Element Matrix Services
- Connetti ad un server personalizzato
+ Connettiti a Element Matrix Services
+ Connettiti a un server personalizzatoAccedi a %1$sRegistratiAccedi
- Continua con SSO
+ Continua con l\'autenticazione (SSO)Indirizzo Element Matrix ServicesIndirizzoHosting premium per organizzazioni
- Inserisci l\'indirizzo del Element Modular o del server che vuoi usare
+ Inserisci l\'indirizzo Element Modular o del server che vuoi usareSi è verificato un errore caricando la pagina: %1$s (%2$d)
- L\'applicazione non riesce ad accedere a questo homeserver. L\'homeserver supporta i seguenti tipi di accesso: %1$s.
+ L\'applicazione non riesce ad accedere a questo Home Server. L\'Home Server supporta i seguenti tipi di accesso: %1$s.
\n
\nVuoi accedere usando un client web\?Spiacenti, questo server non accetta nuovi account.
- L\'applicazione non riesce a creare un account su questo homeserver.
+ L\'applicazione non riesce a creare un account su questo Home Server.
\n
\nVuoi registrarti usando un client web\?Questa email non è associata ad alcun account.
- Reimposta password su %1$s
- Verrà inviata un\'email di verifica nella tua posta per confermare l\'impostazione della nuova password.
+ Reimposta la password su %1$s
+ Per confermare la nuova password ti verrà inviata un\'email di verifica.AvantiEmailNuova passwordAttenzione!
- Cambiare la password reimposterà qualunque chiave di cifratura end-to-end su tutte le tue sessioni, rendendo illeggibile la cronologia delle chat criptate. Imposta il Backup Chiavi o esporta le tue chiavi della stanza da un\'altra sessione prima di reimpostare la password.
+ Cambiando la password verranno reimpostate le chiavi crittografiche E2E di tutte le tue sessioni rendendo illeggibile la cronologia delle chat criptate. Prima di reimpostare la password imposta il Backup delle Chiavi o esporta le chiavi della tua stanza da un\'altra sessione.ContinuaQuesta email non è collegata ad alcun accountControlla la tua postaUn\'email di verifica è stata inviata a %1$s.
- Tocca il collegamento per confermare la tua nuova password. Una volta seguito il collegamento contenuto, clicca sotto.
+ Clicca sul link per confermare la tua nuova password. Una volta fatto, clicca sotto.Ho verificato il mio indirizzo email
- Successo!
+ Fatto!La tua password è stata reimpostata.
- Sei stato disconnesso da tutte le sessioni e non riceverai più notifiche push. Per riattivare le notifiche, riaccedi su ogni dispositivo.
+ Sei stato disconnesso da tutte le sessioni e non riceverai più notifiche push. Per riattivare le notifiche, accedi nuovamente su ogni dispositivo.Torna all\'accessoAttenzioneLa tua password non è ancora cambiata.
\n
\nFermare il processo di cambio password\?Imposta indirizzo email
- Imposta un\'email per recuperare il tuo account. Più tardi potrai permettere facoltativamente alle persone che conosci di trovarti tramite la tua email.
+ Imposta un\'email per recuperare il tuo account. Più tardi potrai decidere se permettere alle persone che conosci di trovarti tramite questa email.EmailEmail (facoltativa)AvantiImposta numero di telefono
- Imposta un numero di telefono per permettere facoltativamente alle persone che conosci di trovarti.
+ Imposta un numero di telefono per permettere alle persone che conosci di trovarti (facoltativo).Si prega di usare il formato internazionale.Numero di telefonoNumero di telefono (facoltativo)Avanti
- Conferma numero di telefono
- Abbiamo inviato un codice a %1$s. Inseriscilo sotto per verificare che sei tu.
- Inserisci codice
+ Conferma il numero di telefono
+ Abbiamo inviato un codice a %1$s. Inseriscilo qui sotto per verificare che sei davvero tu.
+ Inserisci il codiceInvia di nuovoAvantiI numeri di telefono internazionali devono iniziare con \'+\'
- Il numero di telefono non sembra valido. Ricontrollalo
+ Il numero di telefono non sembra valido. Controlla di nuovoRegistrati su %1$sNome utente o emailPasswordAvanti
- Quel nome utente esiste già
+ Questo nome utente è già in usoAttenzioneIl tuo account non è ancora stato creato.
\n
@@ -1829,17 +1829,17 @@
Seleziona matrix.orgSeleziona Element Matrix ServicesSeleziona un server personalizzato
- Completa la verifica Captcha
- Accetta le condizioni per continuare
+ Completa il Captcha
+ Per continuare accetta le condizioniControlla la tua email
- Abbiamo inviato un\'email a %1$s.
-\nClicca il collegamento contenuto per continuare la creazione dell\'account.
- Il codice inserito non è corretto. Ricontrollalo.
- Homeserver obsoleto
- Questo homerserver è di una versione troppo vecchia per connettersi. Chiedi all\'amministratore dell\'homeserver di aggiornarlo.
+ Abbiamo inviato un\'email a %1$s contenente un link.
+\nClicca sul link per continuare la creazione dell\'account.
+ Il codice inserito non è corretto. Controllalo nuovamente.
+ Home Server obsoleto
+ Impossibile connettersi: questo Home Server utilizza una versione obsoleta del software. Chiedi all\'amministratore dell\'Home Server di aggiornarlo.
- Sono state inviate troppe richieste. Puoi riprovare in %1$d secondo…
- Sono state inviate troppe richieste. Puoi riprovare in %1$d secondi…
+ Sono state inviate troppe richieste. Puoi riprovare tra %1$d secondo…
+ Sono state inviate troppe richieste. Puoi riprovare tra %1$d secondi…Visto daSei disconnesso
@@ -1853,54 +1853,54 @@
Accedi di nuovoSei disconnessoAccedi
- L\'amministratore dell\'homeserver (%1$s) ti ha disconnesso dall\'account %2$s (%3$s).
- Accedi per recuperare le chiavi di cifratura memorizzate esclusivamente su questo dispositivo. Ti servono per leggere tutti i tuoi messaggi sicuri su qualsiasi dispositivo.
+ L\'amministratore dell\'Home Server (%1$s) ti ha disconnesso dall\'account %2$s (%3$s).
+ Accedi per recuperare le chiavi crittografiche memorizzate esclusivamente su questo dispositivo. Sono indispensabili per poter leggere i tuoi messaggi criptati su altri dispositivi.AccediPasswordElimina i dati personali
- Attenzione: i tuoi dati personali (incluse chiavi di cifratura) sono ancora in questo dispositivo.
+ Attenzione: i tuoi dati personali (incluse le chiavi crittografiche) sono ancora su questo dispositivo.
\n
-\nEliminali se hai finito di usare questo dispositivo, o se vuoi accedere ad un altro account.
+\nEliminali se non userai più questo dispositivo o se vuoi usare un altro account.Elimina tutti i datiElimina i dati
- Eliminare tutti i dati attualmente presenti in questo dispositivo\?
-\nRiaccedi per avere accesso ai dati dell\'account e ai messaggi.
- Perderai l\'accesso ai messaggi sicuri a meno che non accedi per recuperare le tue chiavi di cifratura.
+ Eliminare tutti i dati attualmente presenti su questo dispositivo\?
+\nAccedi nuovamente per avere accesso ai dati dell\'account e ai messaggi.
+ Se non accedi per recuperare le tue chiavi crittografiche perderai l\'accesso ai messaggi criptati.Elimina i datiLa sessione attuale è per l\'utente %1$s e hai fornito le credenziali per l\'utente %2$s. Ciò non è supportato da ${app_name}.
\nPrima elimina i dati, poi accedi di nuovo con un altro account.
- Il tuo collegamento matrix.to non è corretto
+ Il tuo link matrix.to non è correttoLa descrizione è troppo breve
- Sync iniziale…
+ Sincronizzazione iniziale…Vedi tutte le mie sessioniImpostazioni avanzateModalità sviluppatore
- La modalità sviluppatore abilita funzionalità nascoste e potrebbe anche rendere l\'app meno stabile. Solo per sviluppatori!
+ La modalità sviluppatore abilita funzionalità nascoste che potrebberorendere l\'app instabile. Solo per sviluppatori!Scuotimento
- Soglia di rilevamento
- Scuoti il telefono per testare la soglia di rilevamento
+ Sensibilità scuotimento
+ Agita il telefono per testare la sensibilità di scuotimentoScuotimento rilevato!ImpostazioniSessione attualeAltre sessioni
- Mostrati solo i primi risultati, digita più lettere…
- Crash facile
- ${app_name} potrebbe crashare più spesso quando si verifica un errore imprevisto
- Antepone ¯\\_(ツ)_/¯ ad un messaggio testuale
- Attiva la cifratura
- Una volta attivata, la cifratura non può essere disattivata.
+ Si vedono solo i primi risultati: digita più lettere…
+ Fail-fast
+ Se si verifica un errore imprevisto ${app_name} potrebbe crashare più spesso
+ Antepone ¯\\_(ツ)_/¯ in un messaggio testuale
+ Attiva la crittografia
+ Una volta attivata, la crittografia non può più essere disattivata.Il dominio della tua email non è autorizzato alla registrazione in questo server
- Accesso non fidato
+ Accesso non affidabileCorrispondonoNon corrispondono
- Verifica questo utente confermando che le seguenti emoji appaiono sul suo schermo, nello stesso ordine.
- Per la massima sicurezza, usate un\'altra via di comunicazione fidata o fatelo di persona.
- Cerca lo scudo verde per garantire la fiducia dell\'utente. Fidati di tutti gli utenti in una stanza per garantire che essa sia sicura.
+ Verifica questo utente confermando che le seguenti emoji appaiono sul suo schermo nello stesso ordine.
+ Per avere la massima certezza effettuate l\'operazione tramite un mezzo di comunicazione già fidato oppure fatelo di persona.
+ Il badge verde garantisce che l\'identità dell\'utente è verificata. Verifica tutti gli utenti in una stanza per assicurarti che sia sicura.Non sicuroUno dei seguenti potrebbe essere compromesso:
\n
-\n - Il tuo homeserver
-\n - L\'homeserver al quale è connesso l\'utente che stai verificando
+\n - Il tuo Home Server
+\n - L\'Home Server al quale è connesso l\'utente che stai verificando
\n - La tua connessione internet o quella dell\'altro utente
\n - Il tuo dispositivo o quello dell\'altro utenteVideo.
@@ -1920,19 +1920,19 @@
Scansiona il codice con il dispositivo dell\'altro utente per verificarvi a vicendaScansiona il suo codiceImpossibile scansionare
- Se non siete di persona, confrontate invece le emoji
+ Se non siete fisicamente vicini potete fare la verifica con le emojiVerifica confrontando le emojiVerifica via emoji
- Se non potete scansionare il codice sopra, verificate confrontando una breve selezione univoca di emoji.
+ Se non puoi scansionare il codice qui sopra, potete fare la verifica confrontando una breve sequenza di emoji.Immagine codice QRVerifica %s%s verificatoIn attesa di %s…
- Per maggiore sicurezza, verifica %s controllando un codice univoco su entrambi i dispositivi.
+ Per maggiore sicurezza, verifica %s confrontando un codice univoco su entrambi i dispositivi.
\n
\nPer la massima sicurezza, fatelo di persona.
- I messaggi in questa stanza non sono cifrati end-to-end.
- I messaggi in questa stanza sono cifrati end-to-end.
+ I messaggi in questa stanza non sono cifrati E2E.
+ I messaggi in questa stanza sono cifrati E2E.
\n
\nI tuoi messaggi sono protetti con lucchetti e solo tu e il destinatario avete le chiavi univoche per sbloccarli.Sicurezza
@@ -1945,7 +1945,7 @@
%1$d personeFile caricati
- Lascia stanza
+ Esci dalla stanzaUscita dalla stanza…AmministratoriModeratori
@@ -1959,32 +1959,32 @@
${app_name} non gestisce eventi del tipo \'%1$s\'${app_name} non gestisce messaggi del tipo \'%1$s\'${app_name} ha riscontrato un errore con il rendering del contenuto dell\'evento con id \'%1$s\'
- Non ignorare
+ Non ignorare piùQuesta sessione non riesce a condividere questa verifica con le tue altre sessioni.
\nLa verifica sarà salvata in locale e condivisa in una versione futura dell\'app.Stanze recentiAltre stanze
- Invia il messaggio in questione colorato ad arcobaleno
- Invia l\'emoticon in questione colorata ad arcobaleno
+ Invia il messaggio coi colori dell\'arcobaleno
+ Invia l\'emoticon coi colori dell\'arcobalenoCronologiaEditor messaggi
- Attiva crittografia end-to-end…
- Una volta attivata, la cifratura non può essere disattivata.
- Attivare la cifratura\?
- Una volta attivata, la cifratura di una stanza non può essere disattivata. I messaggi inviati in una stanza cifrata non possono essere visti dal server, solo dai partecipanti della stanza. L\'attivazione della cifratura può impedire il funzionamento di molti bot e bridge.
- Attiva cifratura
- Per sicurezza, verifica %s controllando un codice univoco.
- Per sicurezza, fatelo di persona o usate un\'altra via di comunicazione.
- Confronta le emoji, assicurandoti che appaiono nello stesso ordine.
- Confronta il codice con quello mostrato nello schermo dell\'altro utente.
- I messaggi con questo utente sono cifrati end-to-end e non possono essere letti da terze parti.
- La tua nuova sessione ora è verificata. Ha accesso ai messaggi cifrati e gli altri utenti la vedranno come fidata.
+ Attiva crittografia E2E…
+ Una volta attivata, la crittografia non può più essere disattivata.
+ Attivare la crittografia\?
+ Una volta attivata, la crittografia di una stanza non può più essere disattivata. I messaggi inviati in una stanza criptata non possono essere letti dal server ma solo dai partecipanti della stanza. L\'attivazione della crittografia può impedire il funzionamento di molti bot e bridge.
+ Attiva crittografia
+ Per sicurezza, verifica %s confrontando un codice univoco.
+ Per sicurezza, fatelo di persona o usate un\'altra via di comunicazione fidata.
+ Confronta le emoji assicurandoti che siano nello stesso ordine.
+ Confronta il codice con quello mostrato sullo schermo dell\'altro utente.
+ I messaggi con questo utente sono cifrati E2E e non possono essere letti da altri.
+ La tua nuova sessione ora è verificat ed ha accesso ai messaggi criptati. Gli altri utenti la vedranno come affidabile.Firma incrociataLa firma incrociata è attiva
-\nChiavi private nel dispositivo.
+\nLe chiavi private sono nel dispositivo.
La firma incrociata è attiva
\nLe chiavi sono fidate.
-\nChiavi private non conosciute
+\nChiavi private non sono note
La firma incrociata è attiva.
\nLe chiavi non sono fidateLa firma incrociata non è attiva
@@ -1994,34 +1994,34 @@
Disconnetti questa sessioneNessuna informazione crittografica disponibileQuesta sessione è fidata per i messaggi sicuri perché l\'hai verificata:
- Verifica questa sessione per segnarla come fidata e darle l\'accesso ai messaggi cifrati. Se non hai fatto l\'accesso a questa sessione il tuo account potrebbe essere compromesso:
+ Verifica questa sessione per segnarla come affidabile e darle l\'accesso ai messaggi criptati. Se non hai effettuato l\'accesso a questa sessione il tuo account potrebbe essere compromesso:%d sessione attiva%d sessioni attiveVerifica questo accessoGli altri utenti potrebbero non fidarsi
- Completa la sicurezza
- Usa una sessione esistente per verificare questa, dandole l\'accesso ai messaggi cifrati.
+ Completa la messa in sicurezza
+ Usa una sessione esistente per verificare questa, dandole l\'accesso ai messaggi criptati.VerificaVerificatoAttenzione
- Rilevazione sessioni fallita
+ Rilevamento sessioni fallitoSessioni
- Fidato
- Non fidato
- Questa sessione è fidata per i messaggi sicuri perché %1$s (%2$s) l\'ha verificata:
+ Affidabile
+ Inaffidabile
+ Questa sessione è affidabile per i messaggi criptati perché %1$s (%2$s) l\'ha verificata:%1$s (%2$s) ha fatto l\'accesso con una nuova sessione:
- Finché questo utente non si fida di questa sessione, i messaggi inviati da e verso di essa sono etichettati con avvisi. In alternativa, puoi verificarlo manualmente.
+ Finché questo utente non verificherà questa sessione, i messaggi inviati da e verso di essa saranno etichettati con un avviso. In alternativa, puoi verificarlo manualmente.Inizializza la firma incrociataReimposta chiaviCodice QR
- Quasi fatto! %s sta mostrando lo stesso scudo\?
+ Quasi fatto! %s sta mostrando lo stesso badge\?SìNoLa connessione al server è stata persaNome utente
- Strumenti Svil
+ Strumenti per sviluppatoriDati account%d voto
@@ -2033,11 +2033,11 @@
Opzione selezionataCrea un semplice sondaggio
- Usa una password o chiave di recupero
+ Usa una Passphrase o un codice di recuperoSe non puoi accedere a una sessione esistenteNuovo accessoImpossibile trovare segreti nell\'archivio
- Inserisci la password dell\'archivio segreto
+ Inserisci la Passphrase dell\'archivio segretoAttenzione:Dovresti accedere all\'archivio segreto solo da un dispositivo fidatoRimuovi…
@@ -2050,8 +2050,8 @@
Sei sicuro di volere rimuovere (eliminare) questo evento\? Nota che se elimini il nome della stanza o cambi l\'argomento, ciò potrebbe annullare la modifica.Includi un motivoMotivo della revisione
- Evento eliminato da un utente, motivo: %1$s
- Evento moderato da un admin della stanza, motivo: %1$s
+ Evento eliminato dall\'utente, motivo: %1$s
+ Evento moderato dll\'Amministratore della stanza, motivo: %1$sLe chiavi sono già aggiornate!${app_name} AndroidRichieste di chiavi
@@ -2062,114 +2062,114 @@
Usa questa sessione per verificare quella nuova, dandole l\'accesso ai messaggi cifrati.Non ero ioIl tuo account potrebbe essere compromesso
- Se annulli, non potrai leggere i messaggi cifrati su questo dispositivo e altri utenti non si fideranno di esso
- Se annulli, non potrai leggere i messaggi cifrati sul tuo nuovo dispositivo e altri utenti non si fideranno di esso
+ Se annulli, non potrai leggere i messaggi criptati su questo dispositivo e altri utenti non lo considereranno affidabile
+ Se annulli, non potrai leggere i messaggi criptati sul nuovo dispositivo e altri utenti non lo considereranno affidabileNon verificherai %1$s (%2$s) se annulli adesso. Ricomincia nel suo profilo utente.Uno dei seguenti potrebbe essere compromesso:
\n
\n- La tua password
-\n- Il tuo homeserver
+\n- Il tuo Home Server
\n- Questo dispositivo, o l\'altro
\n- La connessione internet usata da uno dei dispositivi
\n
\nTi consigliamo di cambiare immediatamente la password e le chiavi di recupero nelle impostazioni.
- Verifica i tuoi dispositivi dalle impostazioni.
+ Verifica i tuoi dispositivi nelle impostazioni.Verifica annullata
- Password di ripristino
- chiave dei messaggi
- password dell\'account
+ Passphrase di ripristino
+ Chiave dei messaggi
+ Password dell\'accountImposta una %sGenera una chiave dei messaggiConferma la %sInserisci la tua %s per continuare.
- Proteggi e sblocca i messaggi cifrati e fidati con una %s.
- Inserisci la tua %s di nuovo per confermarla.
- Non riutilizzare la tua password dell\'account.
+ Proteggi e sblocca i messaggi criptati e fidati con una %s.
+ Inserisci di nuovo la tua %s per confermarla.
+ Non riutilizzare la password del tuo account.Potrebbe impiegarci qualche secondo, porta pazienza.Inizializzazione del ripristino.La tua chiave di recuperoHai finito!Tienila al sicuroFine
- Usa questa %1$s come una rete di salvataggio in caso ti dimentichi la tua %2$s.
+ Usa questa %1$s come una rete di salvataggio in caso dimenticassi la tua %2$s.Pubblicazione delle chiavi di identità create
- Generazione della chiave sicura dalla password
+ Generazione di una chiave sicura basata sulla PassphraseDefinizione della chiave predefinita SSSSSincronizzazione della chiave principaleSincronizzazione della chiave utenteSincronizzazione della chiave di auto-firmaInizializzazione del backup chiavi
- La tua %2$s e la %1$s sono ora impostate.
+ La tua %2$s e la %1$s ora sono impostate.
\n
-\nTienile al sicuro! Ti serviranno per sbloccare i messaggi cifrati e informazioni sicure se perdi tutte le tue sessioni attive.
+\nTienile al sicuro! Ti serviranno per poter sbloccare i messaggi criptati se perdessi tutte le tue sessioni attive.Stampala e conservala in un posto sicuroSalvala in una penna USB o disco di backup
- Copiala nella tua archiviazione online
- Non puoi farlo da mobile
- Impostare una password dei messaggi ti consente di proteggere e sbloccare i messaggi cifrati e di fidarti.
+ Copiala sul Cloud
+ Non puoi farlo dallo smartphone
+ Impostare una Passphrase di ripristino ti consente di proteggere e sbloccare i messaggi criptati e le verifiche.
\n
-\nSe non vuoi impostare una password dei messaggi, genera una chiave dei messaggi.
- Impostare una password di ripristino ti consente di proteggere e sbloccare i messaggi cifrati e di fidarti.
- Cifratura attiva
- I messaggi in questa stanza sono cifrati end-to-end. Maggiori info e verifica degli utenti nel loro profilo.
- Cifratura non attiva
- La cifratura usata da questa stanza non è supportata
+\nSe non vuoi impostare una Password dei messaggi puoi generare una chiave dei messaggi.
+ Impostare una Passphrase di ripristino ti consente di proteggere e sbloccare i messaggi criptati e le verifiche.
+ Crittografia attiva
+ I messaggi in questa stanza sono crittografati E2E. Maggiori info e verifica degli utenti nel loro profilo.
+ Crittografia non attiva
+ La crittografia usata in questa stanza non è supportata%s ha creato e configurato la stanza.
- Quasi fatto! L\'altro dispositivo sta mostrando lo stesso scudo\?
+ Quasi fatto! L\'altro dispositivo sta mostrando lo stesso badge\?Quasi fatto! In attesa della conferma…In attesa di %s…Importazione chiavi fallitaConfigurazione delle notificheMessaggi contenenti @room
- Messaggi cifrati in conversazioni private
- Messaggi cifrati in chat di gruppo
+ Messaggi criptati in conversazioni private
+ Messaggi criptati in chat di gruppoQuando le stanze vengono aggiornate
- Risoluzione problemi
- Imposta l\'importanza della notifica per evento
- Invia un messaggio come testo semplice, senza interpretarlo come markdown
- Nome utente e/o password errati. La password inserita inizia o termina con spazi, controllala.
+ Risoluzione dei problemi
+ Personalizza importanza per evento
+ Invia in testo semplice senza interpretarlo come markdown
+ Nome utente e/o password errati. La password inserita inizia o termina con spazi. Controllala.Messaggio…
- Aggiornamento cifratura disponibile
+ È disponibile un aggiornamento della crittografiaVerifica te stesso e gli altri per tenere al sicuro le chatInserisci la tua %s per continuareUsa file
- Inserisci la %s
- Password di ripristino
+ Inserisci %s
+ Passphrase di ripristinoNon è una chiave di ripristino validaInserisci una chiave di ripristinoControllo della chiave di backupControllo della chiave di backup (%s)Rilevazione chiave di curva ellittica
- Generazione chiave SSSS dalla password
- Generazione chiave SSSS dalla password (%s)
+ Generazione chiave SSSS basata sulla Passphrase
+ Generazione chiave SSSS basata sulla Passphrase (%s)Generazione chiave SSSS dalla chiave di ripristinoMemorizzazione segreto della chiave in SSSS%1$s (%2$s)
- Inserisci la password del backup chiavi per continuare.
+ Per continuare inserisci la Passphrase del backup delle chiavi.usare la chiave di ripristino del backup chiavi
- Non conosci la password del backup chiavi, puoi %s.
+ Non conosci la Passphrase del backup delle chiavi, puoi %s.Chiave di ripristino del backup chiaviImpedisci la cattura di schermate dell\'app
- Attivandolo verrà aggiunto FLAG_SECURE a tutte le Activity. Riavvia l\'applicazione per applicare le modifiche.
+ Attivandolo verrà aggiunto FLAG_SECURE a tutte le attività. Riavvia l\'applicazione per applicare le modifiche.File multimediale aggiunto alla galleriaImpossibile aggiungere il file multimediale alla galleriaImposta una nuova password dell\'account…
- Usa l\'ultima versione di ${app_name} sui tuoi altri dispositivi, ${app_name} Web, ${app_name} Desktop, ${app_name} iOS, ${app_name} per Android o un altro client Matrix che supporti la firma incrociata
+ Usa l\'ultima versione di ${app_name} sui tuoi altri dispositivi, ${app_name} Web, ${app_name} Desktop, ${app_name} iOS, ${app_name} Android o un altro client Matrix che supporti la firma incrociata${app_name} Web
\n${app_name} Desktop${app_name} iOS
\n${app_name} Androido un altro client Matrix che supporti la firma incrociata
- Usa l\'ultimo ${app_name} sui tuoi altri dispositivi:
+ Usa l\'ultima versione di ${app_name} anche sui tuoi altri dispositivi:Forza l\'attuale sessione di gruppo in uscita in una stanza cifrata ad essere scartata
- Supportato solo nelle stanze cifrate
+ Supportato solo nelle stanze criptateUsa la tua %1$s o la %2$s per continuare.Usa la chiave di recupero
- Seleziona la tua chiave di recupero, oppure inseriscila a mano digitandola o incollando dagli appunti
+ Seleziona la tua chiave di recupero, oppure digitala a mano o copia/incollalaImpossibile decifrare il backup con questa chiave di recupero: verifica di avere inserito la chiave giusta.Accesso all\'archivio sicuro fallito
- Non cifrato
- Cifrato da un dispositivo non verificato
+ Non criptato
+ Criptato da un dispositivo non verificatoControlla dove hai fatto l\'accessoVerifica tutte le tue sessioni per assicurarti che il tuo account e i messaggi siano protettiVerifica il nuovo accesso entrando nel tuo account: %1$s
@@ -2177,11 +2177,11 @@
Verifica accessoVerifica interattivamente con emojiConferma la tua identità verificando questo accesso da una delle tua altre sessioni, dandole l\'accesso ai messaggi cifrati.
- Segna come fidato
+ Segna come affidabileScegli un nome utente.Scegli una password.
- Verifica questo collegamento
- Il collegamento %1$s ti sta portando ad un altro sito: %2$s.
+ Verifica questo link
+ Il link %1$s aprirà una nuova pagina web: %2$s.
\n
\nSei sicuro di volere continuare\?Impossibile creare il messaggio diretto. Controlla gli utenti che vuoi invitare e riprova.
@@ -2201,39 +2201,39 @@
Messaggio eliminatoMostra messaggi rimossiMostra un segnaposto per i messaggi rimossi
- Ti abbiamo inviato un\'email di conferma a %s, prima controlla la tua posta e clicca sul link di conferma
+ Ti abbiamo inviato un\'email di conferma a %s. Per proseguire controlla la tua posta e clicca sul link di confermaIl codice di verifica non è corretto.MEDIA
- Non ci sono file multimediali in questa stanza
+ In questa stanza non ci sono file multimedialiFILE%1$s alle %2$s
- Non ci sono file in questa stanza
- In alternativa, se hai già un account e conosci il tuo identificativo e password di Matrix, puoi usare questo metodo:
- Accedi con il mio identificativo di Matrix
- Accedi
- Se configuri un account in un homeserver, usa il tuo ID Matrix (es. @utente:dominio.com) e la password qua sotto.
- Identificativo utente
- Non è un identificativo valido. Formato previsto: \'@utente:homeserver.org\'
- Impossibile trovare un homeserver valido. Controlla il tuo identificativo
+ In questa stanza non ci sono file
+ In alternativa, se hai già un account e conosci il tuo ID utente e password, puoi usare questo metodo:
+ Accedi con il tuo ID utente
+ Accedi con il tuo ID utente
+ Se hai un account su un Home Server, usa il tuo ID utente (es. @utente:homeserver.org) e la password qua sotto.
+ ID utente
+ Non è un ID utente valido. Il formato corretto è del tipo: \'@utente:homeserver.org\'
+ Impossibile trovare un Home Server valido. Controlla il tuo ID utenteModalità aereo attivaLingua attualeAltre lingue disponibiliCaricamento lingue disponibili…Apri condizioni di %s
- Disconnettere dal server di identitià %s\?
- Questo server di identità è obsoleto. ${app_name} supporta solo API V2.
- Questa operazione non è possibile. L\'homeserver è obsoleto.
- Prima configura un server di identità.
- Prima accetta le condizioni del server di identità nelle impostazioni.
- Per la tua privacy, ${app_name} supporta solo l\'invio di email utente e numeri di telefono in formato hash.
- L\'associamento è fallito.
- Non c\'è alcun associamento attuale con questo identificativo.
- Il tuo homeserver (%1$s) propone di usare %2$s come tuo server di identità
+ Disconnettere dall\'Identity Server %s\?
+ Questo Identity Server è obsoleto. ${app_name} supporta solo API V2.
+ Questa operazione non è possibile. L\'Home Server è obsoleto.
+ Prima configura un Identity Server.
+ Prima accetta le condizioni dell\'Identity Server nelle impostazioni.
+ Per la tua privacy, ${app_name} supporta solo l\'invio di email e numeri di telefono degli utenti in modalità oscurata (hash).
+ L\'associazione è fallita.
+ Non c\'è alcuna associazione con questo identificativo.
+ Il tuo Home Server (%1$s) propone di usare %2$s come tuo Identity ServerUsa %1$s
- In alternativa, puoi inserire un qualsiasi altro URL di server di identità
- Inserisci l\'URL di un server di identità
+ In alternativa, puoi inserire l\'URL di un qualsiasi altro Identity Server
+ Inserisci l\'URL di un Identity ServerInvia
- Riproduci
+ AvviaPausaAnnullaCopia
@@ -2246,7 +2246,7 @@
TelefonoAltoparlanteCuffie
- Cuffie senza fili
+ Cuffie wirelessCambia fotocameraFrontalePosteriore
@@ -2282,14 +2282,14 @@
Imposta il Backup SicuroReimposta il Backup SicuroConfigura in questo dispositivo
- Proteggiti contro la perdita dell\'accesso ai messaggi e dati cifrati facendo un backup delle chiavi crittografiche sul tuo server.
+ Per evitare di non poter più accedere ai messaggi e dati criptati fai un backup delle chiavi crittografiche sul tuo server.Genera una nuova chiave di sicurezza o imposta una nuova frase di sicurezza per il backup esistente.
- Ciò sostituirà la tua attuale chiave o frase.
+ Questo sostituirà la tua attuale chiave o frase.Le integrazioni sono disattivateAttiva \'Permetti integrazioni\' nelle impostazioni per continuare.
- %d utente bandito
- %d utenti banditi
+ %d utente bannato
+ %d utenti bannatiChiavi esportate correttamenteVEDI
@@ -2298,20 +2298,20 @@
Backup SicuroProteggiti dalla perdita dei messaggi e dati crittografatiImposta il Backup Sicuro
- Aggiungi una scheda dedicata per le notifiche non lette nella schermata principale.
+ Aggiungi una scheda per le notifiche non lette nella schermata principale.Aggiungi ai preferitiRimuovi dai preferitiNon hai fatto modifiche
- Hai reso pubblica la stanza a chiunque conosca il link.
- Hai reso la stanza solo su invito.
+ Hai reso la stanza pubblica. Ora è raggiungibile da chiunque ne conosca l\'indirizzo.
+ Hai reso la stanza accessibile solo su invito.Inserisci l\'indirizzo del server che vuoi usareSe non sai la tua password, torna indietro per reimpostarla.
- Adesivo
- Azioni amministratore
- Predefinito in %1$s
- L\'amministratore del server ha disattivato la crittografia end-to-end in modo predefinito nelle stanze private e nei messaggi diretti.
- Inserisci una frase di sicurezza che conosci solo tu, usata per proteggere i segreti nel tuo server.
- Se annulli ora, potresti perdere i messaggi e dati cifrati se perdi l\'accesso ai tuoi login.
+ Sticker
+ Azioni Amministratore
+ Standard in %1$s
+ L\'amministratore del server ha disattivato di default la crittografia E2E sia nelle stanze private che nei messaggi diretti.
+ Inserisci una frase di sicurezza che conosci solo tu per proteggere i segreti nel tuo server.
+ Se annulli ora, potresti perdere i messaggi e i dati criptati qualora perdessi l\'accesso ai tuoi login.
\n
\nPuoi anche configurare il backup sicuro e gestire le tue chiavi nelle impostazioni.Hai creato e configurato la stanza.
@@ -2327,31 +2327,31 @@
Avvia la fotocameraImposta il Backup SicuroBackup sicuro
- Proteggiti contro la perdita dell\'accesso ai messaggi e dati cifrati facendo un backup delle chiavi crittografiche sul tuo server.
+ Per prevenire la perdita dell\'accesso ai messaggi e dati criptati fai un backup delle chiavi crittografiche sul tuo server.ConfiguraUsa una chiave di sicurezza
- Genera una chiave di sicurezza da conservare in qualche posto sicuro, come un gestore di password o una cassaforte.
+ Genera una chiave di sicurezza da conservare in un posto sicuro, come un gestore di password o una cassaforte.Usa una frase di sicurezzaInserisci una frase segreta che conosci solo tu e genera una chiave per backup.Salva la chiave di sicurezza
- Conserva la chiave di sicurezza in qualche posto sicuro, come un gestore di password o una cassaforte.
+ Conserva la chiave di sicurezza in un posto sicuro, come un password manager o una cassaforte.Imposta una frase di sicurezzaInserisci una frase di sicurezza che conosci solo tu, usata per proteggere i segreti nel tuo server.Frase di sicurezza
- Inserisci la frase di sicurezza di nuovo per confermarla.
+ Inserisci di nuovo la frase di sicurezza per confermarla.Salva la chiave di sicurezza
- Conserva la chiave di sicurezza in qualche posto sicuro, come un gestore di password o una cassaforte.
+ Conserva la chiave di sicurezza in un posto sicuro, come un gestore di password o una cassaforte.Nome stanzaArgomento
- Hai cambiato le impostazioni della stanza correttamente
+ Hai cambiato correttamente le impostazioni della stanzaNon puoi accedere a questo messaggioIn attesa del messaggio, potrebbe volerci un po\'
- Impossibile decifrare
- A causa della crittografia end-to-end, devi aspettare che arrivi un messaggio di qualcuno poiché non ti sono state inviate correttamente le chiavi di crittografia.
+ Impossibile decrittare
+ Per via della crittografia E2E devi aspettare finchè non ti arriva un messaggio da qualcuno poiché al momento non ti sono ancora state inviate le chiavi di crittografia corrette.Non puoi accedere a questo messaggio perché sei stato bloccato dal mittente
- Non puoi accedere a questo messaggio perché la tua sessione non è fidata dal mittente
+ Non puoi accedere a questo messaggio perché il mittente non ha verificato la tua sessioneNon puoi accedere a questo messaggio perché il mittente non ha inviato le chiavi di proposito
- In attesa della cronologia di crittografia
+ In attesa che la cronologia venga crittografataRiot ora si chiama Element!Siamo entusiasti di annunciare che abbiamo cambiato nome! La tua app è aggiornata e hai fatto l\'accesso al tuo account.CAPITO
@@ -2362,11 +2362,11 @@
RubricaCerca nei miei contattiRilevazione dei tuoi contatti…
- Il tuo elenco di contatti è vuoto
+ Il tuo elenco contatti è vuotoElenco contatti
- Revoca invito
+ Revoca l\'invitoRevocare l\'invito a %1$s\?
- Bandito da %1$s
+ Bannato da %1$sRimozione ban fallitaLe notifiche push sono disattivateVerifica le tue impostazioni per attivare le notifiche push
@@ -2375,11 +2375,11 @@
Validazione PIN fallita, inseriscine uno nuovo.Inserisci il tuo PINPIN dimenticato\?
- Reimposta PIN
+ Reimposta il PINNuovo PIN
- Per reimpostare il PIN, dovrai riaccedere e crearne uno nuovo.
- Attiva PIN
- Se vuoi reimpostare il PIN, tocca \"PIN dimenticato\" per disconnetterti e reimpostarlo.
+ Per reimpostare il PIN dovrai riaccedere e crearne uno nuovo.
+ Attiva il PIN
+ Se vuoi reimpostare il PIN tocca \"PIN dimenticato\" per disconnetterti e reimpostarlo.Conferma il PIN per disattivarloImpedisci chiamate accidentaliChiedi conferma prima di iniziare una chiamata
@@ -2409,7 +2409,7 @@
Codice sbagliato, %d tentativo rimastoCodice sbagliato, %d tentativi rimasti
- Attenzione! Ultimo tentativo rimasto prima di venire disconnesso!
+ Attenzione! Ultimo tentativo rimasto prima di esser disconnesso!Troppi errori, sei stato disconnessoQuesto numero di telefono è già definito.Nessun numero di telefono aggiunto al tuo account
@@ -2423,7 +2423,7 @@
CodiceSi prega di usare il formato internazionale (il numero deve iniziare con \'+\')Conferma la tua identità verificando questo accesso, dandogli l\'accesso ai messaggi cifrati.
- Impossibile aprire una stanza dove sei stato bandito.
+ È impossibile entrare in una stanza da cui sei stato bannato.Impossibile trovare questa stanza. Assicurati che esista.Non hai il permesso di avviare una chiamata in questa stanza
@@ -2435,40 +2435,40 @@
SondaggioPulsanti botReagito con: %s
- Conclusione della verifica
- Eliminare i dati dell\'account di tipo %1$s\?
+ Verifica conclusa
+ Vuoi eliminare i dati dell\'account di tipo %1$s\?
\n
-\nUsalo con attenzione, può avere comportamenti imprevisti.
- Il collegamento non è corretto
+\nProcedi con cautela: quest\'azione può provocare comportamenti imprevisti.
+ Il link non è correttoMostra solo il numero di messaggi non letti in una semplice notifica.Mostra dettagli come il nome delle stanze e il contenuto dei messaggi.Mostra il contenuto nelle notificheIl codice PIN è l\'unico modo per sbloccare ${app_name}.
- Attiva la biometria specifica del dispositivo, come impronte e riconoscimento facciale.
+ Attiva la biometria specifica del dispositivo, come le impronte digitali e il riconoscimento facciale.Attiva la biometriaConfigura protezioneProteggi l\'accesso usando un PIN e la biometria.
- Proteggi accesso
+ Proteggi l\'accessoMostra il dispositivo con cui puoi verificare oraMostra %d dispositivi con cui puoi verificare oraRicomincerai senza cronologia, messaggi, dispositivi o utenti fidatiSe reimposti tutto
- Fallo solo se non hai altri dispositivi con cui verificare questo.
+ Fallo solo se non hai altri dispositivi con cui fare la verifica.Reimposta tutto
- Dimenticato o perso tutte le opzioni di recupero\? Reimposta tutto
+ Hai dimenticato o perso tutte le opzioni di ripristino\? Reimposta tuttoSei entrato.
- I messaggi in questa stanza sono cifrati end-to-end.
+ I messaggi in questa stanza sono crittografati E2E.EsciImpostazioni
- I messaggi qui sono cifrati end-to-end.
-\n
+ I messaggi qui sono cifrati E2E.
+\n
\nI tuoi messaggi sono protetti con lucchetti e solo tu e il destinatario avete le chiavi univoche per sbloccarli.
- I messaggi qui non sono cifrati end-to-end.
- L\'homeserver gira su una versione vecchia. Chiedi al tuo amministratore di aggiornare. Puoi continuare, ma alcune funzionalità potrebbero non funzionare correttamente.
- L\'hai resa solo su invito.
- %1$s l\'ha resa solo su invito.
+ I messaggi qui non sono cifrati E2E.
+ Questo Home Server utilizza una versione obsoleta del software: chiedi all\'amministratore dell\'Home Server di aggiornarlo. Puoi connetterti, ma alcune funzionalità potrebbero non funzionare correttamente.
+ Hai reso la stanza accessibile solo su invito.
+ %1$s ha reso la stanza accessibile solo su invito.Mostra la cronologia completa nelle stanze cifrate%1$s e %2$s%1$s in %2$s e %3$s
@@ -2489,15 +2489,15 @@
Non hai il permesso di avviare una chiamata di gruppoReimpostaIl codice PIN è richiesto ogni volta che apri ${app_name}.
- È necessario il codice PIN dopo 2 minuti di inattività con ${app_name}.
+ Il codice PIN è richiesto dopo 2 minuti di inattività su ${app_name}.Richiedi il PIN dopo 2 minuti%s è entrato.L\'applicazione è in attesa del PUSH
- Scarta modifiche
+ Scarta le modificheCi sono modifiche non salvate. Scartare le modifiche\?La stanza non è ancora stata creata. Annullare la creazione della stanza\?
- Rimuovi da priorità bassa
- Aggiungi in priorità bassa
+ Rimuovi da bassa priorità
+ Imposta come bassa prioritàRuota e ritagliaAggiungi immagine daImpostazioni stanza
@@ -2506,52 +2506,52 @@
Nome stanzaEsporta revisioneMessaggio diretto
- Invia cronologia di richieste condivisione chiave
+ Invia cronologia delle richieste di condivisione chiaveNessun altro risultato
- Collegamento Matrix
+ Link MatrixCodice QR non scansionato!Codice QR non valido (URI non valido)!Non puoi messaggiare te stesso!Condividi via testoCerca contatti su Matrix
- Imposta avatar
+ Imposta l\'immagine della stanzaNon è stato fornito il consenso dell\'utente.
- Condividi questo codice con le persone consentendo la scansione per aggiungerti e iniziare a chattare.
+ Condividi questo codice con i tuoi contatti! Basta una scansione per aggiungerti ed iniziare a chattare.Il mio codiceCondividi il mio codiceScansiona un codice QRNon è un codice QR Matrix valido
- 🔐️ Unisciti a me su ${app_name}
- Ehy, parliamo su ${app_name}: %s
+ 🔐️ Puoi trovarmi su ${app_name}
+ Ehy, chattiamo su ${app_name}: %sInvita amiciAggiungi persone"Argomento: "Aggiungi un argomento
- %s per far sapere alle persone di cosa parla questa stanza.
- Questo è l\'inizio della tua cronologia di messaggi diretti con %s.
- Questo è l\'inizio di questa conversazione.
- Questo è l\'inizio di %s.
- Non hai il permesso di attivare la crittografia in questa stanza.
+ %s per far sapere alle persone l\'argomento di questa stanza.
+ Qui comincia la cronologia dei messaggi diretti con %s.
+ Qui comincia questa conversazione.
+ Qui comincia %s.
+ Non sei autorizzato ad attivare la crittografia in questa stanza.Creazione stanza…Alcuni caratteri non sono permessi
- Inserisci un indirizzo della stanza
+ Attribuisci un indirizzo alla stanzaQuesto indirizzo è già in usoIndirizzo stanza
- Dovresti attivarlo se questa stanza verrà usata solo per collaborazioni tra squadre interne nel tuo homeserver. Non può essere cambiato in seguito.
- Impedisci a chiunque non faccia parte di %s di entrare in questa stanza
+ Dovresti attivarlo solo se vuoi che questa stanza sia usata solamente da utenti registrati sul tuo stesso Home Server. Questa impostazione non potrà essere cambiata in seguito.
+ Impedisci a chiunque non sia registrato su %s di entrare in questa stanzaNascondi avanzateMostra avanzate%1$d di %2$dCrea una nuova conversazione diretta scansionando un codice QR
- Crea una nuova conversazione diretta via ID Matrix
- Per trovare i contatti esistenti che conosci, accetti di inviare i dati di contatto (numeri di telefono e/o email) al server d\'identità configurato (%1$s)\?
+ Crea una nuova conversazione diretta tramite ID utente
+ Per trovare gli utenti che già conosci, accetti di inviare le informazioni di contatto (numeri di telefono e/o email) all\'Identity Server configurato (%1$s)\?
\n
-\nPer privacy, sarà inviato solo l\'hash dei dati da inviare.
+\nPer garantire la privacy, i dati verranno inviati in forma oscurata (hashing).Invio di email e numeri di telefonoAccettaRevoca il mio consenso
- Non hai accettato l\'invio di email e numeri di telefono a questo server d\'identità per trovare altri utenti dai tuoi contatti.
- Hai accettato l\'invio di email e numeri di telefono a questo server d\'identità per trovare altri utenti dai tuoi contatti.
+ Non hai acconsentito ad inviare email e numeri di telefono a questo Identity Server per poter rintracciare altri utenti tra i tuoi contatti.
+ Hai acconsentito ad inviare email e numeri di telefono a questo Identity Server per poter rintracciare altri utenti tra i tuoi contatti.Invia email e numeri di telefonoSuggerimentiContatti
@@ -2560,26 +2560,26 @@
Codice QRAggiungi da codice QRCerca per nome o ID
- Per scansionare un codice QR, devi permettere l\'accesso alla fotocamera.
- Permetti l\'autorizzazione per l\'accesso ai contatti.
+ Per scansionare un codice QR devi permettere l\'accesso alla fotocamera.
+ Autorizza ad accedere ai tuoi contatti.Inizia a chattareCambia il tuo PIN attualeCambia PINAnteprima della stanza non disponibile. Vuoi entrare\?Questa stanza non è accessibile al momento.
\nRiprova più tardi, o chiedi ad un admin della stanza di controllare se ne hai l\'accesso.
- Impossibile rilevare l\'attuale visibilità dell\'elenco di stanze (%1$s).
- Pubblicare questa stanza nell\'elenco pubblico delle stanze di %1$s\?
+ Impossibile rilevare l\'attuale visibilità dell\'elenco stanze (%1$s).
+ Inserire questa stanza nell\'elenco delle stanze pubbliche di %1$s\?Revoca questo indirizzoPubblica questo indirizzoAggiungi un indirizzo localeQuesta stanza non ha indirizzi locali
- Imposta gli indirizzi per la stanza affinché gli utenti la trovino attraverso il tuo homeserver (%1$s)
+ Imposta gli indirizzi per la stanza affinché gli utenti la trovino attraverso il tuo Homeserver (%1$s)Indirizzi locali
- Nuovo indirizzo pubblicato (es. #alias:server)
- Nessun altro indirizzo ancora pubblicato.
- Nessun altro indirizzo ancora pubblicato, aggiungine uno sotto.
- Pubblicare questa stanza nell\'elenco pubblico delle stanze di %1$s\?
+ Nuovo indirizzo pubblico (es. #alias:server)
+ Nessun altro indirizzo pubblico finora.
+ Nessun altro indirizzo pubblico finora. Aggiungine uno sotto.
+ Inserire questa stanza nell\'elenco delle stanze pubbliche di %1$s\?Eliminare l\'indirizzo \"%1$s\"\?Revocare la pubblicazione dell\'indirizzo \"%1$s\"\?Pubblica
@@ -2587,21 +2587,21 @@
Altri indirizzi pubblicati:Indirizzo principaleQuesto è l\'indirizzo principale
- Gli indirizzi pubblicati possono essere usati da chiunque su qualsiasi server per entrare nella stanza. Per pubblicare un indirizzo, deve essere prima impostato come indirizzo locale.
- Indirizzi pubblicati
+ Gli indirizzi pubblici possono essere usati da chiunque su qualsiasi server per entrare nella stanza. Per poter impostare un indirizzo pubblico prima è necessario aver dato alla stanza un indirizzo locale.
+ Indirizzi pubbliciIndirizzi stanza
- Vedi e gestisci gli indirizzi di questa stanza e la sua visibilità nell\'elenco delle stanze.
+ Vedi e gestisci gli indirizzi di questa stanza e la sua visibilità nell\'elenco delle stanze pubbliche.Indirizzi stanzaAccesso alla stanza
- La leggibilità della cronologia sarà modificata solo per i futuri messaggi di questa stanza. La visibilità dei messaggi esistenti rimarrà invariata.
+ La visibilità della cronologia sarà modificata solo per i messaggi futuri. La visibilità dei messaggi esistenti rimarrà invariata.Revoca pubblicazioneAggiungiinvia neve ❄️invia coriandoli 🎉
- Invia il messaggio in questione con neve
- Invia il messaggio in questione con coriandoli
+ Invia il messaggio con neve
+ Invia il messaggio con coriandoliSvuota cronologia
- single sign-on
+ Autenticazione unica (SSO)Accedi con %sRegistrati con %sContinua con %s
@@ -2628,16 +2628,16 @@
Invita utentiInvia messaggiRuolo predefinito
- Non hai l\'autorizzazione di aggiornare i ruoli necessari per cambiare varie parti della stanza
+ Non hai l\'autorizzazione ad aggiornare i ruoli necessari per cambiare diverse parti della stanzaSeleziona i ruoli necessari per cambiare varie parti della stanzaAutorizzazioniVedi e aggiorna i ruoli necessari per cambiare varie parti della stanza.Autorizzazioni stanza
- Questa stanza non è pubblica. Non potrai rientrare senza un invito.
+ Questa non è una stanza pubblica. Senza un invito non potrai rientrare.Predefinito di sistemaAutenticazione fallita
- ${app_name} richiede di reinserire le credenziali per eseguire questa azione.
- Necessario riautenticarsi
+ ${app_name} chiede siano reinserite le credenziali per eseguire questa azione.
+ È necessario riautenticarsiUtentiSi è verificato un errore trasferendo la chiamataTrasferisci
@@ -2658,7 +2658,7 @@
Questa chiamata è terminata%1$s ha rifiutato questa chiamataHai rifiutato questa chiamata %1$s
- Sei attualmente in questa chiamata
+ Stai partecipando a questa chiamata%1$s ha iniziato una chiamataHai iniziato una chiamataImpostazione della firma incrociata fallita
@@ -2690,8 +2690,8 @@
Eventi di statoInvia evento di statoInvia evento personalizzato
- Esplora stato stanza
- Strumenti Svil
+ Esplora lo stato della stanza
+ Strumenti per SviluppatoriVedi le conferme di letturaNon notificareNotifica senza suono
@@ -2707,15 +2707,15 @@
VideoQuesta stanza ha una bozza non inviataAlcuni messaggi non sono stati inviati
- Elimina avatar
- Cambia avatar
+ Elimina immagine profilo
+ Cambia immagine profiloImmagineImporta chiave da fileApri i widgetSchermata
- %d elemento
- %d elementi
+ %d inserimento
+ %d inserimentiIl limite è sconosciuto.Il tuo homeserver accetta allegati (file, multimedia, ecc.) di una dimensione fino a %s.
@@ -2730,97 +2730,97 @@
Elenco delle stanzeNuovo valoreCambia
- Sinc. iniziale:
-\nScaricamento dati…
- Sinc. iniziale:
+ Sincronizzazione iniziale:
+\nDownload dei dati…
+ Sincronizzazione iniziale:
\nIn attesa di risposta dal server…Messaggio inviatoL\'avviso richiede il supporto del server e una versione di stanza sperimentaleSpazio sperimentale - stanza riservata.
- Sei invitato
- Gli spazi sono modi di raggruppare stanze e persone per lavoro, divertimento o solo per te stesso.
- Benvenuti negli spazi!
- Aggiungi stanze e spazi esistenti
- Vuoi veramente uscire dallo spazio\?
- Esci dallo spazio
+ Sei stato invitato
+ Gli Spazi sono un nuovo modo per raggruppare stanze e contatti.
+ Benvenuto negli Spazi!
+ Aggiungi stanze e Spazi esistenti
+ Vuoi veramente uscire dallo Spazio\?
+ Esci dallo SpazioAggiungi stanze
- Esplora stanze
+ Guarda le stanze%d persona che conosci si è già unita%d persone che conosci si sono già uniteBenvenuti a %1$s, %2$s.
- Non sei ancora in nessuna stanza. Sotto trovi alcune stanze consigliate, ma puoi vederne altre con il pulsante verde in fondo a destra.
- Questo alias non è accessibile al momento.
-\nRiprova più tardi, o chiedi ad un amministratore della stanza di controllare se hai l\'accesso.
+ Non sei ancora entrato in nessuna stanza. Sotto ne trovi alcune consigliate ma puoi trovarne altre con il pulsante verde in fondo a destra.
+ Al momento questo alias non è accessibile.
+\nRiprova più tardi, o chiedi a un amministratore della stanza di controllare se hai l\'accesso.Unisciti comunque
- Unisciti ad uno spazio
- Crea spazio
- Salta per adesso
- Unisciti al mio spazio %1$s %2$s
+ Unisciti a uno Spazio
+ Crea Spazio
+ Per il momento, salta
+ Unisciti al mio Spazio %1$s %2$sNon faranno parte di %sSolo in questa stanzaPotranno esplorare %sInvita in %s
- Condividi collegamento
+ Condividi linkInvita per nome utenteInvita per email
- Ci sei solo tu al momento. %s sarà ancora meglio con gli altri.
+ Al momento ci sei solo tu. Con più persone %s sarà ancora migliore.Invita persone
- Invita persone nel tuo spazio
+ Invita persone nel tuo SpazioDescrizione
- Creazione spazio…
+ Creazione Spazio…CasualeGenerale
- Creiamo una stanza per ognuno di esse. Puoi aggiungerne altre in seguito, incluse quelle già esistenti.
- Su quali cose stai lavorando\?
+ Creiamo una stanza per ognuno di essi. Potrai sempre aggiungerne altre a quelle già esistenti.
+ A cosa stai lavorando\?Creeremo delle stanze per ognuno di essi. Puoi aggiungerne altre in seguito.Di quali argomenti vorresti parlare in %s\?Dagli un nome per continuare.
- Aggiungi alcuni dettagli per aiutare le persone ad identificarlo. Puoi modificarli in qualsiasi momento.
- Aggiungi alcuni dettagli per renderlo più distinguibile. Puoi modificarli in qualsiasi momento.
- Crea uno spazio
- Solo su invito, consigliato per te o i team
+ Aggiungi alcuni dettagli per aiutare le persone ad identificarlo. Potrai modificarli in qualsiasi momento.
+ Aggiungi alcuni dettagli per renderlo più distinguibile. Potrai modificarli in qualsiasi momento.
+ Crea uno Spazio
+ Solo su invito (consigliato per te e per i team di lavoro)Privato
- Aperto a tutti, consigliato per le comunità
+ Aperto a tutti (consigliato per le comunità pubbliche)Pubblico
- Uno spazio privato per te e i tuoi compagni
+ Uno Spazio privato per te e i tuoi compagniIo e i miei compagni
- Uno spazio privato per organizzare le tue stanze
+ Uno Spazio privato per organizzare le tue stanzeSolo ioAssicurati che le persone giuste abbiano accesso a %s. Puoi cambiarlo in seguito.Con chi stai lavorando\?
- Per unirti ad uno spazio esistente, ti serve un invito.
+ Per unirti ad uno Spazio già esistente, ti serve un invito.Puoi cambiarlo in seguito
- Che tipo di spazio vuoi creare\?
- Gli spazi sono un nuovo modo di raggruppare stanze e persone
- Il tuo spazio privato
- Il tuo spazio pubblico
- Aggiungi spazio
- Esci dalla stanza con un dato ID (o dalla stanza attuale se vuoto)
- Unisciti allo spazio con un dato ID
- Crea uno spazio
- Non controllato
+ Che tipo di Spazio vuoi creare\?
+ Gli Spazi sono un nuovo modo di raggruppare stanze e contatti
+ Il tuo Spazio privato
+ Il tuo Spazio pubblico
+ Aggiungi Spazio
+ Esci dalla stanza con un ID (o dalla stanza attuale se vuota)
+ Unisciti allo Spazio con un ID
+ Crea uno Spazio
+ DeselezionatoCerca nome
- Chiunque in uno spazio con questa stanza può trovarla ed entrarci. Solo gli amministratori della stanza possono aggiungerla ad uno spazio.
+ Chiunque in uno Spazio con questa stanza può trovarla ed entrarci. Solo gli amministratori della stanza possono aggiungerla ad uno Spazio.SpaziChiunque può trovarla ed entrarePubblicaSolo le persone invitate possono trovarla ed entrarePrivataImpostazione di accesso sconosciuta (%s)
- Chiunque può bussare alla porta, poi i membri possono accettare o rifiutare
+ Chiunque può chiedere di poter entrare, poi i membri decidono se accettare o rifiutarePermetti l\'ingresso agli ospitiSpaziInvitiStanze suggerite
- Gestisci stanze e spazi
+ Gestisci stanze e SpaziSegna come non consigliatoSegna come consigliatoConsigliato
- Rendi questo spazio pubblico
+ Rendi pubblico questo SpazioGestisci stanze
- Cerchi qualcuno non in %s\?
+ Cerchi qualcuno che non è in %s\?%s ti ha invitatoQuesta stanza è pubblicaInvia i file multimediali nella dimensione originale
@@ -2829,8 +2829,43 @@
Invia i video nella dimensione originaleIl file è troppo grande per essere inviato.
- Compressione video %d%%
- Compressione immagine…
+ Compressione del video %d%%
+ Compressione dell\'immagine…Usa come predefinito e non chiedere piùChiedi sempre
+ In questo Spazio non ci sono stanze
+ Invita a %s
+ Questa funzione è in via di sviluppo
+ Invia un feedback
+ L\'invio del feedback non è riuscito (%s)
+ Grazie! Il tuo feedback è stato ricevuto
+ Se hai altre domande puoi contattarmi
+ Gli Spazi sono ancora in via di sviluppo. Il tuo feedback ci è utile per migliorarli. Il tuo nome utente e i dati sull\'App verranno comunicati per permetterci di utilizzare il tuo feedback al meglio.
+ Feedback
+ Feedback sugli Spazi
+ Ops! Qualcosa è andato storto nel cercar di entrare nella conferenza
+ Sei l\'Amministratore di questo Spazio. Assicurati di aver nominato un altro amministratore prima di uscire.
+ Sei l\'unico utente di questo Spazio. Se esci nessuno potrà più entrarci. Nemmeno tu.
+ Aggiungi stanze
+ Spazio sperimentale - Mostra solo stanze orfane nella Home
+ Alcune stanze potrebbero essere nascoste perché sono private e ti serve il loro invito.
+ Alcune stanze potrebbero essere nascoste perché sono private e ti serve il loro invito.
+\nNon hai il permesso di aggiungere stanze.
+ Per maggiori informazioni contatta il tuo Home Server
+ Pare che il tuo Home Server non supporti ancora gli Spazi
+ Ti piace sperimentare\?
+\nProva ad inserire uno Spazio all\'interno di un altro Spazio.
+ Questo non è uno Spazio pubblico. Senza un invito non potrai più rientrare.
+ Stanza senza nome
+ Spazio privato
+ Spazio pubblico
+ Questo spazio è pubblico
+ Persona sconosciuta
+ Trasferisci a %1$s
+ Consultazione con %1$s
+ Questo server è già presente nell\'elenco
+ Impossibile trovare questo server o il suo elenco di stanze
+ Inserisci il nome di un nuovo server che vuoi esplorare.
+ Aggiungi un nuovo server
+ Il tuo server
\ No newline at end of file
diff --git a/vector/src/main/res/values-ja/strings.xml b/vector/src/main/res/values-ja/strings.xml
index 69aaecc085..84bccec0f6 100644
--- a/vector/src/main/res/values-ja/strings.xml
+++ b/vector/src/main/res/values-ja/strings.xml
@@ -332,11 +332,11 @@
\'%s\' は正しくない形式の住所表記ですこの部屋の本住所表記が設定されていません.本住所表記の警告
- 本住所表記を設定
- 本住所表記を設定解除
+ メインアドレスとして設定
+ メインアドレスとして設定を解除部屋固有IDをコピー部屋の住所表記をコピー
- 装置固有ID
+ セッションID文字の大きさとても小さい小さい
@@ -487,8 +487,7 @@
この部屋へのリンクを作成するには、部屋の住所表記が必要です。この部屋は暗号化されています。この部屋は暗号化されていません。
- 暗号化を開始
-(警告: 部屋の暗号を中止することはできません!)
+ 暗号化を有効化 (警告: 部屋の暗号を再度無効することはできません!)部屋一覧外観エンドツーエンド暗号化についての情報
@@ -1407,7 +1406,7 @@ Matrixでのメッセージの可視性は電子メールと同様です。メ
%1$sの招待です。理由: %2$s送信キューのクリアメッセージを送っています…
- メッセージを送る
+ メッセージを送りました初期同期:
\nアカウントデータをインポート初期同期:
@@ -1556,4 +1555,59 @@ Matrixでのメッセージの可視性は電子メールと同様です。メ
%1$sや %2$sそれに%3$sが読みましたメッセージをマークダウンとして解釈せずにプレーンテキストとして送信する
+ ファイルとして保存
+ 共有
+ 完了
+ 成功!
+ バックアップを作成中
+ パスフレーズを設定
+ 手動でキーをエクスポート
+ キーバックアップを使って開始する
+ パスフレーズが弱すぎます
+ パスフレーズを入力してください
+ Google PlayサービスのAPKが見つかりませんでした。通知がうまく機能しない場合があります。
+ ユーザー名を入力してください。
+ 無視
+ 共有
+ 続けるには利用規約に同意する必要があります。
+ 全てブロック
+ 許可
+ 部屋ID
+ ウィジェットID
+ あなたのテーマ
+ あなたのユーザーID
+ あなたのアバターURL
+ ブラウザで開く
+ ウィジェットをロードする
+ ウィジェット
+ アクティブなウィジェット
+ 自分
+ 新しいメッセージ
+ 部屋
+ 新しいイベント
+ 不明なIP
+
+ キー %1$dと%2$dのインポートに成功。
+
+ キーバックアップを管理
+ キーのエクスポートに成功しました
+ 選択
+ 選択
+ 詳細情報: %s
+ ローカルアドレスを追加する
+ この部屋はローカルアドレスがありません
+ アドレス \"%1$s\" を削除しますか?
+ メインアドレス
+ これがメインアドレスです
+ 電話番号の認証中にエラーが発生しました。
+ リンクを共有
+ %s に招待する
+ Eメールで招待
+ 説明
+ 人を招待する
+ とにかく参加する
+ 部屋を追加する
+ %s はあなたを招待しています
+ この部屋で電話会議をする権利がありません
+ オーディオミーティングを開始する
\ No newline at end of file
diff --git a/vector/src/main/res/values-ml/strings.xml b/vector/src/main/res/values-ml/strings.xml
index b41bdae287..db959072d7 100644
--- a/vector/src/main/res/values-ml/strings.xml
+++ b/vector/src/main/res/values-ml/strings.xml
@@ -985,4 +985,6 @@
കരിമ്പട്ടികയിൽ നിന്നും നീക്കുകഇമ്പോർട്ട്എക്സ്പോർട്ട്
+ ക്ഷണങ്ങൾ
+ ഫ്ലെയർ
\ No newline at end of file
diff --git a/vector/src/main/res/values-nl/strings.xml b/vector/src/main/res/values-nl/strings.xml
index a2e12e99e2..b2c1aff6ec 100644
--- a/vector/src/main/res/values-nl/strings.xml
+++ b/vector/src/main/res/values-nl/strings.xml
@@ -2,7 +2,6 @@
%1$s: %2$s%1$s heeft een afbeelding gestuurd.
-
Uitnodiging van %s%1$s heeft %2$s uitgenodigd%1$s heeft u uitgenodigd
@@ -30,61 +29,45 @@
iedereen.onbekend (%s).%1$s heeft eind-tot-eind-versleuteling aangezet (%2$s)
-
%1$s heeft een VoIP-vergadering aangevraagdVoIP-vergadering gestartVoIP-vergadering gestopt
-
(avatar is ook veranderd)%1$s heeft de gespreksnaam verwijderd%1$s heeft het gespreksonderwerp verwijderd%1$s heeft zijn/haar profiel %2$s bijgewerkt%1$s heeft een uitnodiging naar %2$s gestuurd om het gesprek toe te treden%1$s heeft de uitnodiging voor %2$s aanvaard
-
** Kan niet ontsleutelen: %s **Het apparaat van de afzender heeft geen sleutels voor dit bericht gestuurd.
-
Kon niet verwijderd wordenKan bericht niet verzenden
-
Uploaden van de afbeelding mislukt
-
NetwerkfoutMatrix-fout
-
-
-
Het is momenteel niet mogelijk om een leeg gesprek opnieuw toe te treden.
-
E-mailadresTelefoonnummer
-
%1$s heeft een sticker gestuurd.
-
Uitnodiging van %sGespreksuitnodiging%1$s en %2$sLeeg gesprek
-
%1$s en 1 andere%1$s en %2$d anderen
-
-
Bericht verwijderdBericht verwijderd door %1$sBericht verwijderd [reden: %1$s]Bericht verwijderd door %1$s [reden: %2$s]
-
Initiële synchronisatie:
\nAccount wordt geïmporteerd…Initiële synchronisatie:
@@ -101,12 +84,9 @@
\nGemeenschappen worden geïmporteerdInitiële synchronisatie:
\nAccountgegevens worden geïmporteerd
-
%s heeft dit gesprek opgewaardeerd.
-
Bericht wordt verstuurd…Uitgaande wachtrij legen
-
%1$s heeft de uitnodiging voor %2$s om het gesprek toe te treden ingetrokkenUitnodiging van %1$s. Reden: %2$s%1$s heeft %2$s uitgenodigd. Reden: %3$s
@@ -121,25 +101,19 @@
%1$s heeft de uitnodiging voor %2$s ingetrokken. Reden: %3$s%1$s heeft de uitnodiging voor %2$s aanvaard. Reden: %3$s%1$s heeft de uitnodiging van %2$s ingetrokken. Reden: %3$s
-
%1$s heeft %2$s als gespreksadres toegevoegd.%1$s heeft %2$s als gespreksadressen toegevoegd.
-
%1$s heeft %2$s als gespreksadres verwijderd.%1$s heeft %3$s als gespreksadressen verwijderd.
-
%1$s heeft %2$s als gespreksadres toegevoegd en %3$s verwijderd.
-
%1$s heeft het hoofdadres voor dit gesprek ingesteld op %2$s.%1$s heeft het hoofdadres voor dit gesprek verwijderd.
-
%1$s heeft gasten de toegang tot het gesprek verleend.%1$s heeft gasten de toegang tot het gesprek verhinderd.
-
%1$s heeft eind-tot-eind-versleuteling ingeschakeld.%1$s heeft eind-tot-eind-versleuteling ingeschakeld (onbekend algoritme %2$s).
@@ -1471,4 +1445,36 @@
Iedereen zal dit gesprek kunnen toetredenPauzerenAfspelen
+ Je hebt het hoofdadres voor dit gesprek verwijderd.
+ Je hebt %1$s uitgenodigd. Reden: %2$s
+ Jouw uitnodiging. Reden: %1$s
+ Bericht verstuurd
+ Initiële synchronisatie:
+\nGegevens aan het downloaden…
+ Initiële synchronisatie:
+\nAan het wachten op een antwoord van de server…
+ Lege kamer (was %s)
+ Moderator
+ Je hebt %1$s uitgenodigd
+ %1$s nodigde %2$s uit
+ Geen verandering.
+ Je hebt end-to-end encryptie ingeschakeld (%1$s)
+ Je hebt toekomstige berichten zichtbaar gemaakt voor %1$s
+ %1$s heeft toekomstige berichten zichtbaar gemaakt voor %2$s
+ Je hebt de oproep beëindigd.
+ Je hebt de oproep beantwoord.
+ Je hebt je schermnaam gewijzigd van %1$s naar %2$s
+ Je hebt je schermnaam ingesteld op %1$s
+ Je hebt je avatar aangepast
+ Je hebt de uitnodiging geweigerd
+ Je hebt de kamer verlaten
+ %1$s heeft de kamer verlaten
+ Je hebt de kamer verlaten
+ Jij hebt %1$s uitgenodigd
+ Jij hebt de discussie aangemaakt
+ %1$s heeft de discussie aangemaakt
+ Jij hebt de kamer aangemaakt
+ %1$s heeft de kamer aangemaakt
+ Jouw uitnodiging
+ Je hebt een afbeelding gestuurd.
\ No newline at end of file
diff --git a/vector/src/main/res/values-pt-rBR/strings.xml b/vector/src/main/res/values-pt-rBR/strings.xml
index f55453707f..db7f940e38 100644
--- a/vector/src/main/res/values-pt-rBR/strings.xml
+++ b/vector/src/main/res/values-pt-rBR/strings.xml
@@ -12,17 +12,17 @@
%1$s desbaniu %2$s%1$s baniu %2$s%1$s retirou o convite de %2$s
- %1$s mudou seu avatar
- %1$s definiu seu nome de exibição para %2$s
- %1$s mudou seu nome de exibição de %2$s para %3$s
- %1$s removeu seu nome de exibição (era %2$s)
+ %1$s mudou o avatar dela(e)
+ %1$s definiu o nome de exibição dela(e) para %2$s
+ %1$s mudou o nome de exibição dela(e) de %2$s para %3$s
+ %1$s removeu o nome de exibição dela(e) (era %2$s)%1$s mudou o tópico para: %2$s%1$s mudou o nome da sala para: %2$s%s começou uma chamada de vídeo.%s começou uma chamada de voz.%s atendeu a chamada.%s terminou a chamada.
- %1$s deixou o histórico futuro da sala visível para %2$s
+ %1$s fez histórico da sala futuro visível para %2$stodos os membros da sala, do ponto que foram convidados.todos os mebros da sala, do ponto que se juntaram.todos os membros da sala.
@@ -31,7 +31,7 @@
%1$s ativou a encriptação ponta-a-ponta (%2$s)%1$s requisitou uma conferência de VoIPConferência de VoIP começou
- Conferência de VoIP terminou
+ Conferência de VoIP finalizou(avatar mudou também)%1$s removeu o nome da sala%1$s removeu o tópico da sala
@@ -39,11 +39,11 @@
%1$s enviou um convite para %2$s para se juntar à sala%1$s aceitou o convite para %2$s** Incapaz de decriptar: %s **
- O dispositivo do(a) enviador(a) não nos enviou as chaves para esta mensagem.
+ O dispositivo do/da enviador(a) não nos enviou as chaves para esta mensagem.Não foi possível redigirNão foi possível enviar mensagem
- Upload de imagem falhou
+ Falha para fazer upload de imagemErro de redeErro de Matrix
@@ -51,7 +51,7 @@
- Atualmente não é possível se rejuntar a uma sala vazia.
+ Não é atualmente possível se re-juntar a uma sala vazia.Endereço de emailNúmero de telefone
@@ -92,7 +92,7 @@
Você enviou dados para configurar a chamada.Você atendeu a chamada.Você terminou a chamada.
- Você deixou o histórico futuro da sala visível para %1$s
+ Você fez histórico da sala futuro visível para %1$sVocê ativou a encriptação ponta-a-ponta (%1$s)%s fez o upgrade desta sala.Você fez o upgrade desta sala.
@@ -141,7 +141,7 @@
Sinc Inicial:
\nImportando Dados de ContaEnviando mensagem…
- Limpar a fila de envio
+ Limpar fila de envioConvite de %1$s. Razão: %2$sSeu convite. Razão: %1$s%1$s convidou %2$s. Razão: %3$s
@@ -189,18 +189,18 @@
Você definiu o endereço principal para esta sala para %1$s.%1$s removeu o endereço principal para esta sala.Você removeu o endereço principal para esta sala.
- %1$s tem permitido que visitas se juntem à sala.
- Você tem permitido que visitas se juntem à sala.
- %1$s tem prevenido visitas de se juntarem à sala.
- Você tem prevenido visitas de se juntarem à sala.
+ %1$s tem permitido visitantes se juntarem à sala.
+ Você tem permitido visitantes se juntarem à sala.
+ %1$s tem prevenido visitantes de se juntarem à sala.
+ Você tem prevenido visitantes de se juntarem à sala.%1$s ativou encriptação ponta-a-ponta.Você ativou encriptação ponta-a-ponta.%1$s ativou encriptação ponta-a-ponta (algoritmo irreconhecido %2$s).Você ativou encriptação ponta-a-ponta (algoritmo irreconhecido %1$s).
- Você tem prevenido visitas de se juntarem à sala.
- %1$s tem prevenido visitas de se juntarem à sala.
- Você tem permitido que visitas se juntem aqui.
- %1$s tem permitido que visitas se juntem aqui.
+ Você tem prevenido visitantes de se juntarem à sala.
+ %1$s tem prevenido visitantes de se juntarem à sala.
+ Você tem permitido visitantes se juntarem aqui.
+ %1$s tem permitido visitantes se juntarem aqui.Você saiu. Razão: %1$s%1$s saiu. Razão: %2$sVocê juntou-se. Razão: %1$s
@@ -212,7 +212,7 @@
Você fez o upgrade aqui.%s fez o upgrade aqui.Você deixou mensagens futuras vísiveis para %1$s
- %1$s deixou mensagens futuras visíveis para %2$s
+ %1$s fez mensagens futuras visíveis para %2$sVocê saiu da sala%1$s saiu da salaVocê juntou-se
@@ -292,8 +292,8 @@
Mais TardeEncaminharPermalink
- Ver Fonte
- Ver Fonte Decriptada
+ Visualizar Fonte
+ Visualizar Fonte DecriptadaDeletarRenomearReportar conteúdo
@@ -306,7 +306,7 @@
Devido a permissões faltando, alguns recursos podem estar faltando…Você precisa de permissão para convidar para começar uma conferência nesta salaNão é possível começar chamada
- Informação da sessão
+ Informação de sessãoChamadas de conferência não são suportadas em salas encriptadasEnviar Mesmo Assimou
@@ -352,8 +352,8 @@
Nenhuma salaNenhuma sala pública disponível
- %d usuário
- %d usuários
+ %d usuária(o)
+ %d usuárias(os)Enviar logsEnviar crash logs
@@ -361,20 +361,20 @@
Reportar bugPor favor descreva o bug. O que você fez\? O que você esperava que acontecese\? O que aconteceu na verdade\?Descreva seu problema aqui
- A fim de diagnosticar problemas, logs deste cliente serão enviados com este reporte de bug. Este reporte de bug, incluindo os logs e o screenshot, não será visível publicamente. Se você prefere somente enviar o texto acima, por favor desmarque:
- Você parece estar agitando o celular em frustração. Gostaria de abrir a tela de reporte de bug\?
+ A fim de diagnosticar problemas, logs deste cliente vão ser enviados com este reporte de bug. Este reporte de bug, incluindo os logs e o screenshot, não será visível publicamente. Se você prefere somente enviar o texto acima, por favor desmarque:
+ Você parece estar agitando o telefone em frustração. Você gostaria de abrir a tela de reporte de bug\?O reporte de bug tem sido enviado com sucesso
- O reporte de bug falhou para enviar (%s)
+ O reporte de bug falhou para ser enviado (%s)Progresso (%s%%)
- O aplicativo crashou da última vez. Gostaria de abrir a tela de reporte de crash\?
+ O aplicativo tem crashado da última vez. Você gostaria de abrir a tela de reporte de crash\?Enviar para
- Lido
+ LidaJuntar-se a Sala
- Nome de Usuário
+ Nome de Usuária(o)Criar ContaFazer LoginFazer Signout
- URL de Servidor de Casa
+ URL de ServidorcasaURL de Servidor de IdentidadePesquisarComeçar Novo Chat
@@ -389,18 +389,18 @@
PularEnviar Email de ResetRetornar a tela de login
- Email ou nome de usuário
+ Email ou nome de usuária(o)SenhaNova senha
- Nome de usuário
+ Nome de usuária(o)Endereço de emailEndereço de email (opcional)Número de telefoneNúmero de telefone (opcional)Repetir senhaConfirmar sua nova senha
- Nome de usuário e/ou senha incorreta(s)
- Nomes de usuário só podem conter letras, números, pontos, hifens e underscores
+ Nome de usuária(o) e/ou senha incorreta(s)
+ Nomes de usuária(o) só podem conter letras, números, pontos, hifens e underscoresSenha curta demais (mín 6)Senha faltandoIsto não parece com um endereço de email válido
@@ -410,23 +410,23 @@
Número de telefone faltandoEndereço de email ou número de telefone faltandoToken inválido
- Senhas não batem
+ Senhas não correspondemEsqueceu senha\?
- Usar opções de servidor personalizado (avançado)
+ Usar opções de servidor personalizadas (avançada)Por favor cheque seu email para continuar registroRegistro com email e número de telefone de vez não é suportado ainda até que a api exista. Somente o número de telefone será levado em consideração.
\n
\nVocê pode adicionar seu email a seu perfil em configurações.
- Este Servidor de Casa gostaria de assegurar que você não é um robô
- Nome de usuário em uso
- Servidor de Casa:
+ Este servidorcasa gostaria de assegurar que você não é um robô
+ Nome de usuária(o) em uso
+ Servidorcasa:Servidor de Identidade:Eu tenho verificado meu endereço de emailPara resettar sua senha, entre o endereço de email linkado a sua conta:O endereço de email linkado a sua conta deve ser entrado.Uma nova senha deve ser entrada.Um email tem sido enviado para %s. Uma vez que tenha seguido o link que ele contém, clique abaixo.
- Falha ao verificar endereço de email: assegure-se que clicou no link no email
+ Falha para verificar endereço de email: assegure-se que clicou no link no emailSua senha tem sido resettada.
\n
\nVocê tem sido feito logout de todas as sessões e não vai mais receber notificações push. Para reativar notificações, faça re-login em cada dispositivo.
@@ -438,12 +438,12 @@
Incapaz de registrarIncapaz de registrar: falha de posse de emailPor favor entre um URL válido
- Nome de usuário/senha inválida(o)
+ Nome de usuária(o)/senha inválida(o)O token de acesso especificado não foi reconhecidoJSON malformadoNão continha JSON válidoRequisições demais tem sido enviadas
- Este nome de usuário já é usado
+ Este nome de usuária(o) já é usadoO link de email que não tem sido clicado ainda
@@ -464,8 +464,8 @@
OntemHoje
- Nome da sala
- Tópico da sala
+ Nome de sala
+ Tópico de salaChamada conectadaChamada conectando…
@@ -475,7 +475,7 @@
Chamada de Vídeo RecebendoChamada de Voz RecebendoChamada Em Progresso…
- O lado remoto falhou ao atender.
+ O lado remoto falhou para atender.Conexão de Mídia FalhouNão é possível inicializar a câmerachamada atendida em algum outro lugar
@@ -499,7 +499,7 @@
\n
\nPor favor permita acesso no próximo pop-up para ser capaz de fazer a chamada.${app_name} pode checar seu livro de endereços para achar outras(os) usuárias(os) de Matrix baseado em seus email e números de telefone. Se você concorda em compartilhar seu livro de endereços para este propósito, por favor permita acesso no próximo pop-up.
- ${app_name} pode checar seu livro de endereços para encontrar outras(os) usuásias(os) de Matrix baseado em seus email e números de telefone.
+ ${app_name} pode checar seu livro de endereços para encontrar outras(os) usuásias(os) de Matrix baseado em seus emails e números de telefone.
\n
\nVocê concorda em compartilhar seu livro de endereços para este propósito\?Desculpe. Ação não performada, devido a permissões faltando
@@ -518,9 +518,9 @@
Pular para primeira mensagem não-lida.Você tem sido convidada(o) a juntar-se a esta sala por %s
- Este convite foi enviado a %s, que não está associada(o) com esta conta.
+ Este convite foi enviado para %s, que não está associada(o) a esta conta.
\nVocê pode desejar fazer login com uma conta diferente, ou adicionar este email a sua conta.
- Você está tentando acessar %s. Gostaria de se juntar a fim de participar da discussão\?
+ Você está tentando acessar %s. Você gostaria de se juntar a fim de participar na discussão\?uma salaEsta é uma previsualização desta sala. Interações de sala têm sido desativadas.
@@ -528,9 +528,9 @@
Adicionar membro1 membro
- Sair da sala
- Você tem certeza que quer sair da sala\?
- Você tem certeza que quer remover %s deste chat\?
+ Sair de sala
+ Você tem certeza que você quer sair da sala\?
+ Você tem certeza que você quer remover %s deste chat\?CriarOnlineOffline
@@ -545,16 +545,16 @@
BanirDesbanirResettar a usuária(o) normal
- Tornar moderador(a)
- Tornar admin
+ Fazer moderador(a)
+ Fazer adminIgnorarDesignorar
- ID de usuário, Nome ou email
+ ID de usuária(o), Nome ou emailMencionarMostrar Lista de SessõesVocê não vai ser capaz de desfazer esta mudança já que você está promovendo a(o) usuária(o) para ter o mesmo nível de poder que você.
\nVocê tem certeza\?
- Você tem certeza que quer convidar %s para este chat\?
+ Você tem certeza você que quer convidar %s para este chat\?Convidar por IDCONTATOS LOCAIS (%d)
@@ -586,28 +586,28 @@
Impressão digital (%s):Não foi possível verificar identidade de servidor remoto.Isto poderia significar que alguém está maliciosamente interceptando seu tráfico, ou que seu celular não confia no certificado provido pelo servidor remoto.
- Se o(a) administrador(a) do servidor tem dito que isto é esperado, assegure que a impressão digital abaixo corresponde à impressão digital provida por ele(a).
+ Se o/a administrador(a) de servidor tem dito que isto é esperado, assegure que a impressão digital abaixo corresponde à impressão digital provida por ele(a).O certificado tem mudado de um que era confiado por seu telefone. Isto é ALTAMENTE INCOMUM. É recomendado que você NÃO ACEITE este novo certificado.
- O certificado tem sido mudado de um previamente confiado para um que não é confiado. O servidor pode ter renovado seu certificado. Conacte o(a) administrador(a) do servidor para a impressão digital esperada.
- Somente aceite o certificado se o(a) administrador(a) do servidor tem publicado uma impressão digital que bate com a acima.
+ O certificado tem mudado de um previamente confiado para um que não é confiado. O servidor pode ter renovado seu certificado. Contacte o/a administrador(a) de servidor para a impressão digital esperada.
+ Somente aceite o certificado se o/a administrador(a) de servidor tem publicado uma impressão digital que corresponde com a acima.
- Detalhes da Sala
+ Detalhes de SalaPessoasArquivosConfigurações
- ID malformado. Devia ser um endereço de email ou um ID Matrix como \'@partlocal:dominio\'
+ ID malformada. Devia ser um endereço de email ou uma ID Matrix como \'@partlocal:dominio\'CONVIDADAS(OS)SE JUNTARAMRazão por reportar este conteúdo
- Você quer esconder todas as mensagens deste usuário\?
+ Você quer esconder todas as mensagens desta(e) usuária(o)\?
\n
-\nNote que esta ação irá reiniciar o app e pode levar algum tempo.
+\nNote que esta ação vai recomeçar o app e pode levar algum tempo.Cancelar UploadCancelar DownloadPesquisar
- Filtrar membros da sala
+ Filtrar membros de salaNenhum resultadoSALASMENSAGENS
@@ -624,7 +624,7 @@
Criar salaJuntar-se a salaJuntar-se a uma sala
- Digite um id de sala ou um alias de sala
+ Digite uma id de sala ou um alias de salaNavegar diretórioPesquisando diretório…
@@ -697,7 +697,7 @@
Senha:SubmeterFeito login como
- Servidor de Casa
+ ServidorcasaServidor de IdentidadeVerificação PendentePor favor cheque seu email e clique no link que ele contém. Uma vez que isto for feito, clique em continuar.
@@ -709,13 +709,13 @@
Senha atualSenha novaConfirmar senha nova
- Falha ao atualizar senha
+ Falha para atualizar senhaSua senha tem sido atualizadaMostrar todas as mensagens de %s\?
\n
-\nNote que esta ação vai reiniciar o app e pode levar algum tempo.
- Você tem certeza que quer remover este alvo de notificação\?
- Você tem certeza que quer remover o %1$s %2$s\?
+\nNote que esta ação vai recomeçar o app e pode levar algum tempo.
+ Você tem certeza que você quer remover este alvo de notificação\?
+ Você tem certeza que você quer remover o %1$s %2$s\?Escolha um paísPaísPor favor escolha um país
@@ -729,7 +729,7 @@
Foto da Sala
- Nome da Sala
+ Nome de SalaTópicoEtiqueta da SalaEtiquetada como:
@@ -741,19 +741,19 @@
Acesso e visibilidadeListar esta sala em diretório de salasAcesso a Sala
- Legibilidade de Histórico da Sala
+ Legibilidade de Histórico de SalaQuem pode ler o histórico\?Quem pode acessar esta sala?Qualquer pessoa
- Membros somente (desde o ponto no tempo de selecionar esta opção)
+ Membros somente (desde o ponto no tempo de seleção desta opção)Membros somente (desde que eles foram convidados)Membros somente (desde que eles se juntaram)Para linkar a uma sala ela deve ter um endereço.Somente pessoas que têm sido convidadas
- Qualquer pessoa que saiba o link da sala, exceto visitantes
- Qualquer pessoa que saiba o link da sala, incluindo visitantes
+ Qualquer pessoa que sabe o link da sala, a parte de visitantes
+ Qualquer pessoa que sabe o link da sala, incluindo visitantesUsuárias(os) banidas(os)
@@ -777,41 +777,41 @@
Definir como endereço principalDes-definir como endereço principalCopiar ID de Sala
- Copiar Endereço da Sala
+ Copiar Endereço de SalaEncriptação está ativada nesta sala.Encriptação está desativada nesta sala.Ativar encriptação
-\n(atenção: não pode ser desativado de novo!)
+\n(aviso: não pode ser desativada de novo!)Diretório%s estava tentando carregar um ponto específico na timeline desta sala mas foi incapaz de encontrá-lo.Informação de encriptação ponta-a-ponta
- Informação do evento
+ Informação de eventoId de usuária(o)Chave de identidade Curve25519Chave de impressão digital Ed25519 clamadaAlgoritmoID de SessãoErro de decriptação
- Informação de sessão do(a) enviador(a)
+ Informação de sessão do/da enviador(a)Nome públicoNome públicoID de sessão
- Chave da sessão
+ Chave de sessãoVerificaçãoImpressão digital Ed25519
- Exportar chaves de sala PAP
+ Exportar chaves de sala E2EExportar chaves de salaExportar as chaves para um arquivo localExportarEntrar frasepasseConfirmar frasepasse
- As chaves de sala PAP têm sido salvas em \'%s\'.
+ As chaves de sala E2E têm sido salvas em \'%s\'.
\n
\nAviso: este arquivo pode ser deletado se o aplicativo for desinstalado.
- Importar chaves de sala PAP
+ Importar chaves de sala E2EImportar chaves de salaImportar as chaves de um arquivo localImportar
@@ -828,27 +828,27 @@
Retirar da lista negraVerificar sessãoConfirme ao comparar o seguinte com as Configurações de Usuária(o) em sua outra sessão:
- Se não baterem, a segurança de sua comunicação pode estar comprometida.
- Eu verifico que as chaves batem
+ Se não corresponderem, a segurança de sua comunicação pode estar comprometida.
+ Eu verifico que as chaves correspondemSala contém sessões desconhecidasEsta sala contém sessões desconhecidas que não têm sido verificadas.
-\nIsto significa que não há nenhuma garantia que as sessões pertencem às(aos) usuárias(os) às(aos) quais elas clamam pertencer.
+\nIsto significa que não há nenhuma garantia que as sessões pertencem às/aos usuárias(os) às/aos quais elas clamam pertencer.
\nNós recomendamos que você passe pelo processo de verificação para cada sessão antes de continuar, mas você pode reenviar a mensagem sem verificar se você preferir.
\n
\nSessões desconhecidas:
- Selecione um diretório de salas
+ Selecionar um diretório de salasO servidor pode estar indisponível ou sobrecarregado
- Digite um servidor de casa para de onde listar salas públicas
- URL de servidorcasa
+ Digite um servidorcasa para de onde listar salas públicas
+ Nome de servidorTodas as salas em servidor %sTodas as salas nativas de %sPesquisar por históricoOffline
- Diretório de usuários
- DIRETÓRIO DE USUÁRIOS (%s)
+ Diretório de usuárias(os)
+ DIRETÓRIO DE USUÁRIAS(OS) (%s)Começar em bootLimpar cache de mídiaManter mídia
@@ -862,7 +862,7 @@
1 mêsPara sempreTema
- Tamanho da fonte
+ Tamanho de fonteMinúsculoPequenoNormal
@@ -878,7 +878,7 @@
Notificações barulhentasNotificações silenciosasReporte de bug
- Detalhes de Comunidade
+ Detalhes de comunidadeCarregando…SairComunidades
@@ -886,25 +886,25 @@
ConvidarComunidadesNenhum grupo
- Você tem certeza que quer começar um novo chat com %s\?
- Você tem certeza que quer começar uma chamada de voz\?
- Você tem certeza que quer começar uma chamada de vídeo\?
+ Você tem certeza que você quer começar um novo chat com %s\?
+ Você tem certeza que você quer começar uma chamada de voz\?
+ Você tem certeza que você quer começar uma chamada de vídeo\?Tirar fotoTirar vídeoLista de GruposChamarBanir usuária(o) vai expulsá-la(o) desta sala e preveni-la(o) de se juntar de novo.
- Todas as mensagens (barulhento)
+ Todas as mensagens (barulhentas)Todas as mensagensMenções somenteMudoAdicionar a tela de InícioSom de notificaçãoMnsgns contendo meu nome de exibição
- Mnsgns contando meu nome de usuário
+ Mnsgns contendo meu nome de usuária(o)Previsualização de URL emlinhaMostrar timestamps em formato de 12 horas
- Vibrar ao mencionar um(a) usuário(a)
+ Vibrar ao mencionar um/uma usuário(a)AnalíticaFlairNotificações
@@ -915,10 +915,10 @@
Você precisa de permissão para gerenciar widgets nesta salaCriação de widget tem falhadoCriar chamadas de conferência com jitsi
- Você tem certeza que quer deletar o widget desta sala\?
+ Você tem certeza que você quer deletar o widget desta sala\?Incapaz de criar widget.
- Falha ao enviar requisição.
+ Falha para enviar requisição.Nível de poder deve ser um inteiro positivo.Você não está nesta sala.Você não tem permissão para fazer isso nesta sala.
@@ -960,7 +960,7 @@
Convidada(o)Filtrar membros do grupoFiltrar salas do grupo
- O(a) administrador(a) da comunidade não tem provido uma descrição longa para esta comunidade.
+ O/a admin de comunidade não tem provido uma descrição longa para esta comunidade.Você foi expulsa(o) de %1$s por %2$sVocê foi banida(o) de %1$s por %2$sRazão: %1$s
@@ -1033,7 +1033,7 @@
\n
\nAdicionar alguns agora\?continuar com…
- Desculpe, nenhum aplicativo externo foi encontrado para completar esta ação.
+ Desculpe, nenhum aplicativo externo tem sido encontrado para completar esta ação.Re-requisitar chaves de encriptação de suas outras sessões.Requisição de chave enviada.Requisição enviada
@@ -1068,7 +1068,7 @@
Privacidade de notificações• Notificações são enviadas via Firebase Cloud Messaging• Notificações somente contêm meta dados
- • Conteúdo de mensagem da notificação é localizado seguramente direto do servidor de casa de Matrix
+ • Conteúdo de mensagem da notificação é localizado seguramente direto do servidorcasa Matrix• Notificações contêm metadados e dados de mensagem• Notificações não vão mostrar conteúdo de mensagemPrevisualizar mídia antes de enviar
@@ -1091,7 +1091,7 @@
Exibe açãoBane usuária(o) com id dadaDesbane usuária(o) com id dada
- Define nível de poder de um(a) usuário(a)
+ Define nível de poder de um/uma usuário(a)Desopa usuária(o) com id dadaConvida usuária(o) com id dada para esta salaJunta-se a sala com alias dado
@@ -1112,12 +1112,12 @@
Para continuar usando o servidorcasa %1$s você deve revisar e aceitar os termos e condições.Revisar agoraDesativar Conta
- Isto vai fazer sua conta permanentemente inusável. Você não vai ser capaz de fazer login, e ninguém vai poder re-registrar o mesmo ID de usuária(o). Isto vai causar sua conta sair de todas as salas em que ela está participando, e vai remover detalhes de sua conta de seu servidor de identidade. Esta ação é irreversível.
+ Isto vai fazer sua conta permanentemente inusável. Você não vai ser capaz de fazer login, e ninguém vai ser capaz de re-registrar a mesma ID de usuária(o). Isto vai causar sua conta sair de todas as salas em que ela está participando, e vai remover detalhes de sua conta de seu servidor de identidade. Esta ação é irreversível.
\n
-\nDesativar sua conta não nos causa por padrão esquecer mensagens que você tem enviado. Se você gostaria que nós esqueçamos suas mensagens, por favor marque a caixa abaixo.
+\nDesativar sua conta não nos causa por default esquecer mensagens que você tem enviado. Se você gostaria que nós esqueçamos suas mensagens, por favor marque a caixa abaixo.
\n
\nVisibilidade de mensagem em Matrix é similar a email. Nós esquecermos suas mensagens significa que mensagens que você tem enviado não vão ser compartilhadas com nenhum usuária(o) nova(o) ou não-registrada(o), mas usuárias(os) registradas(os) que já têm acesso a estas mensagens vão ainda ter acesso à cópia delas(es).
- Por favor esqueça todas as mensagens que eu tenho enviado quando minha conta for desativada (Aviso: isto vai causar usuárias/os futuras/os terem uma visão incompleta de conversas)
+ Por favor esqueça todas as mensagens que eu tenho enviado quando minha conta for desativada (Aviso: isto vai causar usuárias/os futuras/os terem uma visualização incompleta de conversas)Para continuar, por favor entre sua senha:Desativar ContaPor favor entre sua senha.
@@ -1127,21 +1127,21 @@
Clique aqui para ver mensagens mais antigasLimite de Recurso ExcedidoContactar Administrador(a)
- contacte o(a) administrador(a) de seu serviço
+ contacte o/a administrador(a) de seu serviçoEste servidorcasa tem excedido um de seus limites de recurso, então algumas(ns) usuária(os) não vão ser capazes de fazer login.Este servidorcasa tem excedido um de seus limites de recurso.
- Este servidorcasa tem atingido seu limite de Usuárias(os) Mensalmente Ativos então algumas(ns) usuárias(os) não vão ser capazes de fazer login.
+ Este servidorcasa tem atingido seu limite de Usuárias(os) Mensalmente Ativas(os) então algumas(ns) usuárias(os) não vão ser capazes de fazer login.Este servidorcasa tem atingido seu limite de Usuárias(os) Mensalmente Ativas(os).Por favor %s para ter este limite aumentado.Por favor %s para continuar usando este serviço.Por favor crie uma frasepasse para encriptar as chaves exportadas. Você vai precisar entrar a mesma frasepasse para ser capaz de importar as chaves.AceitarErro
- Por favor revise e aceite as políticas deste servidor de casa:
+ Por favor revise e aceite as políticas deste servidorcasa:ChamadasUsar toque default de ${app_name} para chamadas recebendoToque de chamada recebendo
- Selecione toque para chamadas:
+ Selecionar toque para chamadas:RazãoVersão %sResolver Problemas de Notificação
@@ -1176,22 +1176,22 @@
Token FCM recuperado com sucesso:
\n%1$sLigar Mesmo Assim
- Falha ao recuperar token do FCM:
+ Falha para recuperar token do FCM:
\n%1$sRegistro de TokenToken FCM registrado com sucesso a ServidorCasa.
- Falha ao registrar token FCM a ServidorCasa:
+ Falha para registrar token FCM a ServidorCasa:
\n%1$sServiço de NotificaçõesServiço de Notificações está rodando.Serviço de Notificações não está rodando.
-\nTente reiniciar o aplicativo.
+\nTente recomeçar o aplicativo.Começar ServiçoServiço foi matado e reiniciado automaticamente.
- Falha ao reiniciar serviço
+ Serviço falhou para recomeçarComeçar em bootServiço vai começar quando o dispositivo for reiniciado.
- Serviço não vai começar quando o dispositivo for reiniciado, você não vai receber notificações até que ${app_name} tenha sido aberto uma vez.
+ O serviço não vai começar quando o dispositivo for recomeçado, você não vai receber notificações até que ${app_name} tenha sido aberto uma vez.Ativar Começar em bootChecar restrições de backgroundOtimização de Bateria
@@ -1199,25 +1199,25 @@
Auto-Reinício de Serviço de NotificaçõesDesativar restriçõesIgnorar Otimização
- Previsualize links dentro do chat quando seu servidor de casa suporta este recurso.
+ Previsualizar links dentro do chat quando seu servidorcasa suporta este recurso.Enviar notificações de digitação
- Deixe outras(os) usuárias(os) saberem quando você está digitando.
+ Deixar outras(os) usuárias(os) saberem que você está digitando.Mostrar recibos de leitura
- Clique nos recibos de leitura para uma lista detalhada.
+ Clicar nos recibos de leitura para uma lista detalhada.Mostrar eventos de juntar-se e sairConvites, expulsões e bans são desafetados.Mostrar eventos de contaInclui mudanças de avatar e nome de exibição.Conexão no Background${app_name} precisa manter uma conexão no background de baixo impacto a fim de ter notificações confiáveis.
-\nNa próxima tela você vai ser instigado a permitir que o ${app_name} rode sempre em background, por favor aceite.
+\nNa próxima tela você vai ser instigado a permitir ${app_name} sempre rodar em background, por favor aceite.Restrições de background estão desativadas para ${app_name}. Este teste devia ser rodado usando dados móveis (sem Wi-Fi).
\n%1$sRestrições de background estão ativadas para ${app_name}.
-\nTrabalho que o app tenta fazer vai ser agressivamente restringido enquando ele está em background, e isto pode afetar notificações.
+\nTrabalho que o app tenta fazer vai ser agressivamente restringido enquando ele está no background, e isto poderia afetar notificações.
\n%1$s
- Formatação Markdown
- Formate mensagens usando sintaxe markdown antes que elas são enviadas. Isto permite formatação avançada tal como usar asteriscos para exibir texto itálico.
+ Formatação markdown
+ Formatar mensagens usando sintaxe markdown antes que elas são enviadas. Isto permite formatação avançada tal como usar asteriscos para exibir texto itálico.Conceder permissãoUm erro ocorreu enquanto verificando seu endereço de email.Senha
@@ -1242,21 +1242,21 @@
+%d%d+Nenhum APK de Google Play Services válido encontrado. Notificações podem não funcionar apropriadamente.
- Se um(a) usuário(a) deixa um dispositivo fora do plug e parado por um período de tempo, com a tela desligada, o aparelho entra em modo Doze. Isto previne apps de acessar a rede e adiar seus trabalhos, sincs e alarmes padrões.
+ Se um/uma usuário(a) deixa um dispositivo despluggado e parado por um período de tempo, com a tela desligada, o dispositivo entra em modo Doze. Isto previne apps de acessar a rede e adia seus trabalhos, sincs e alarmes padrões.Criar frasepasse
- Frasepasse não bate
- Carregar preguiçoso membros das salas
+ Frasepasse não corresponde
+ Carregar preguiçoso membros de salasChamada de Vídeo em Progresso…Backup de ChaveUsar Backup de Chave
- Backup de chaves não está terminado, por favor espere…
+ Backup de chaves não está finalizado, por favor espere…Você vai perder suas mensagens encriptadas se fizer signout agoraBackup de chave em progresso. Se você fizer signout agora você vai perder acesso a suas mensagens encriptadas.Backup de Chave Seguro devia estar ativo em todas as suas sessões para evitar perder o acesso a suas mensagens encriptadas.Eu não quero minhas mensagens encriptadasFazendo backup de chaves…Usar Backup de Chave
- Tem certeza\?
+ Você tem certeza\?Fazer backupVocê vai perder acesso a suas mensagens encriptadas a menos que faça backup de suas chaves antes de fazer signout.Assinatura
@@ -1264,16 +1264,16 @@
PularFeitoAbortar
- Você tem certeza que quer fazer sign out\?
+ Você tem certeza que você quer fazer sign out\?Configurações de Notificações Avançadas
- Importância de notificações por evento
+ Importância de notificação por eventoConfigurações Personalizadas.Observe que alguns tipos de mensagens estão definidos para serem silenciosos (vão produzir uma notificação sem nenhum som).Algumas notificações estão desativadas em suas configurações personalizadas.
- Falha ao carregar regras personalizadas, por favor retente.
+ Falha para carregar regras personalizadas, por favor retente.Checar Configurações[%1$s]
-\nEste erro está fora de controle de ${app_name} e de acordo com Google, este erro indica que o dispositivo tem apps demais registrados com FCM. O erro somente ocorre em casos onde há números extremos de apps, então isso não devia afetar a(o) usuária(o) média(o).
+\nEste erro está fora de controle de ${app_name} e de acordo com Google, este erro indica que o dispositivo tem apps demais registrados com FCM. O erro somente ocorre em casos onde há números extremos de apps, então isso não devia afetar a/o usuária(o) média(o).IgnorarFazer sign-in com sign-on únicoEste URL não é alcançável, por favor cheque-o
@@ -1298,21 +1298,21 @@
DeclinarMarcar como lidaNenhum servidor de identidade configurado.
- Chamada falhou devido a servidor configurado errado
+ Chamada falhou devido a servidor malconfiguradoTocarPausarDescartarCopiarSucessoNotificações
- Por favor peça ao administrador do seu servidor de casa (%1$s) para confugurar um servidor TURN a fim que chamadas funcionem confiavelmente.
+ Por favor peça ao/à administrador(a) de seu servidorcasa (%1$s) para configurar um servidor TURN a fim que chamadas funcionem confiavelmente.
\n
-\nAlternativamente, você pode tentar usar o servidor público em %2$s, mas isto não vai set tão confiável, e ele vai compartilhar seu endereço de IP com esse servidor. Você também pode gerir isto em Configurações.
- Tente usar %s
+\nAlternativamente, você pode tentar usar o servidor público em %2$s, mas isto não vai ser tão confiável, e vai compartilhar seu endereço de IP com esse servidor. Você também pode gerenciar isto em Configurações.
+ Tentar usar %sNão me pergunte de novoChamada ${app_name} Falhou
- Falha ao estabelecer conexão em tempo real.
-\nPor favor peça ao administrador do seu servidor de casa para configurar um servidor TURN a fim que chamadas funcionem confiavelmente.
+ Falha para estabelecer conexão em tempo real.
+\nPor favor peça ao/à administrador(a) de seu servidorcasa para configurar um servidor TURN a fim que chamadas funcionem confiavelmente.Selecionar Dispositivo de SomCelularFalante
@@ -1328,11 +1328,11 @@
Defina um email para recuperação de conta. Use mais tarde email ou telefone para ser opcionalmente descobertável por pessoas que conhecem você.Defina um email para recuperação de conta. Use mais tarde email ou telefone para ser opcionalmente descobertável por pessoas que conhecem você.Isto não é um endereço de servidor Matrix válido
- Não é possível alcançar um servidor de casa neste URL, por favor cheque-o
- Erro de SSL: a identidade da(o) peer não tem sido verificada.
+ Não é possível alcançar um servidorcasa neste URL, por favor cheque-o
+ Erro de SSL: a identidade da/do peer não tem sido verificada.Erro de SSL.Permitir servidor fallback de assistência de chamadas
- Vai usar %s como assistência quando seu servidor de casa não oferece um (seu endereço de IP vai ser compartilhado durante uma chamada)
+ Vai usar %s como assistência quando seu servidorcasa não oferece um (seu endereço de IP vai ser compartilhado durante uma chamada)Chamada Ativa (%s)Retornar a chamadaAdicione um servidor de identidade em suas configurações para performar esta ação.
@@ -1347,7 +1347,7 @@
Designorar usuária(o)Designorar esta(e) usuária(o) vai mostrar todas as mensagens dela(e) de novo.Cancelar convite
- Você tem certeza que quer cancelar o convite para esta(e) usuária(o)\?
+ Você tem certeza que você quer cancelar o convite para esta(e) usuária(o)\?Expulsar usuária(o)Razão de expulsãoexpulsar usuária(o) vai removê-la(o) desta sala.
@@ -1356,7 +1356,7 @@
Banir usuária(o)Razão de banDesbanir usuária(o)
- Desbanir usuária(o) vai permitir que ela(e) se junte à sala de novo.
+ Desbanir usuária(o) vai permitir-lhe se juntar à sala de novo.Confirme sua senhaVocê não pode fazer isto de ${app_name} celularAutenticação é requerida
@@ -1370,7 +1370,7 @@
\nIsto vai impactar uso de rádio e bateria, vai ter uma notificação permanente exibida declarando que ${app_name} está à escuta por eventos.Sem sinc no backgroundVocê não vai ser notificada(o) sobre mensagens recebendo quando o app está em background.
- Falha ao atualizar configurações.
+ Falha para atualizar configurações.Intervalo de Sinc Preferido%s
\nA sinc pode ser adiada dependendo dos recursos (bateria) ou estado do dispositivo (sono).
@@ -1383,19 +1383,19 @@
Configurar Backup SeguroResettar Backup SeguroConfigurar neste dispositivo
- Salvaguarde-se contra perder acesso a mensagens & dados encriptados ao fazer backup de chaves de encriptação em seu servidor.
+ Salvaguardar-se contra perda de acesso a mensagens & dados encriptados ao fazer backup de chaves de encriptação em seu servidor.Gere uma nova Chave de Segurança ou defina uma nova Frase de Segurança para seu backup existente.Isto vai substituir sua Chave ou Frase atual.DescobertaGerencie suas configurações de descoberta.
- Modo de economia de dados aplica um filtro específico para que atualizações de presença e notificações de digitação sejam filtrados fora.
+ Modo de economia de dados aplica um filtro específico para que atualizações de presença e notificações de digitação sejam filtradas fora.Permitir integraçõesGerenciador de IntegraçãoIntegrações estão desativadasAtive \'Permitir integrações\' em Configurações para fazer isto.Atualizar SenhaA senha não é válida
- Senhas não batem
+ Senhas não correspondemMídiaCompressão defaultEscolher
@@ -1410,7 +1410,7 @@
O nome público de uma sessão é visível para pessoas com quem você se comunicaChaves exportadas com sucessoRecuperação de Mensagens Encriptadas
- Gerenciar Backup de Chaves
+ Gerenciar Backup de Chaveip desconhecido%1$s: %2$d mensagem
@@ -1425,17 +1425,17 @@
Novas MensagensNovo ConviteEu
- ** Não foi possível enviar - por favor abrir sala
+ ** Falha para enviar - por favor abra sala%1$s: %2$s%1$s: %2$s %3$s
- VISTA
+ VISUALIZARWidgets ativosWidgetCarregar WidgetEste widget foi adicionado por:Usá-lo pode definir cookies e compartilhar dados com %s:Usá-lo pode compartilhar dados com %s:
- Falha ao carregar widget.
+ Falha para carregar widget.
\n%sRecarregar widgetAbrir em browser
@@ -1456,11 +1456,11 @@
Nenhum gerenciador de integração configurado.Para continuar você precisa aceitar os Termos deste serviço.Uma nova sessão está requisitando chaves de encriptação.
-\nNome da sessão: %1$s
+\nNome de sessão: %1$s
\nVisto por último: %2$s
\nSe você não fez login numa outra sessão, ignore esta requisição.Uma sessão não-verificada está requisitando chaves de encriptação.
-\nNome da sessão: %1$s
+\nNome de sessão: %1$s
\nVisto por último: %2$s
\nSe você não fez login numa outra sessão, ignore esta requisição.Verificar
@@ -1468,17 +1468,17 @@
Requisição de Compartilhamento de ChavesIgnorarSilenciosa
- Por favor entre um nome de usuário.
+ Por favor entre um nome de usuária(o).Por favor entre sua frasepasseFrasepasse é fraca demaisPor favor delete a frasepasse se quiser que ${app_name} gere uma chave de recuperação.Nenhuma sessão Matrix disponívelNunca perca mensagens encriptadas
- Mensagens em salas encriptadas são asseguradas com a encriptação ponta-a-ponta. Somente você e a/o(s) recipiente(s) têm as chaves para ler estas mensagens.
+ Mensagens em salas encriptadas são asseguradas com encriptação ponta-a-ponta. Somente você e a(s)/o(s) recipiente(s) têm as chaves para ler estas mensagens.
\n
\nFaça seguramente backup de suas chaves para evitar perdê-las.
- Começar a usar Backup de Chaves
- (Avançado)
+ Começar a usar Backup de Chave
+ (Avançada)Exportar chaves manualmenteAssegure seu backup com uma Frasepasse.Nós vamos armazenar uma cópia encriptada de suas chaves em seu servidorcasa. Proteja seu backup com uma frasepasse para mantê-lo seguro.
@@ -1487,23 +1487,23 @@
Definir FrasepasseCriando BackupOu, assegure seu backup com uma Chave de Recuperação, salvando-a em algum lugar seguro.
- (Avançado) Configurar com Chave de Recuperação
+ (Avançada) Configurar com Chave de RecuperaçãoSucesso !Backup de suas chaves está sendo feito.
- Sua chave de recuperação é uma rede de proteção - você pode usá-la para restaurar acesso a suas mensagens encriptadas se você esquecer sua frasepasse.
-\nMantenha a sua chave de recuperação em algum lugar muito seguro, como um gerenciador de senhas (ou um cofre)
+ Sua chave de recuperação é uma rede de segurança - você pode usá-la para restaurar acesso a suas mensagens encriptadas se você esquecer sua frasepasse.
+\nMantenha sua chave de recuperação em algum lugar muito seguro, como um gerenciador de senhas (ou um cofre)Mantenha sua chave de recuperação em algum lugar muito seguro, como um gerenciador de senhas (ou um cofre)FeitoEu tenho feito uma cópiaSalvar Chave de RecuperaçãoCompartilharSalvar como Arquivo
- A chave de recuperação tem sido salva em \"%s\".
+ A chave de recuperação tem sido salva em \'%s\'.
\n
\nAviso: este arquivo pode ser deletado se o aplicativo for desinstalado.A chave de recuperação tem sido salva.Um backup já existe em seu ServidorCasa
- Parece que você já tem configurado um backup de chaves numa outra sessão. Você quer substituí-lo pelo que está criando\?
+ Parece que você já tem configurado backup de chave de uma outra sessão. Você quer substituí-lo pelo que você está criando\?SubstituirPararPor favor faça uma cópia
@@ -1512,7 +1512,7 @@
Chave de RecuperaçãoErro inesperadoBackup Começado
- Backup de suas chaves está sendo feito. O backup inicial poderia levar muitos minutos.
+ Backup de suas chaves de encriptação está agora sendo feito no background para seu servidorcasa. O backup inicial poderia levar muitos minutos.Você tem certeza\?Você pode perder acesso a suas mensagens se você fizer logout ou perder este dispositivo.Obtendo versão de backup…
@@ -1541,593 +1541,593 @@
%d nova chave tem sido adicionada a esta sessão.%d novas chaves têm sido adicionadas a esta sessão.
- Não foi possível obter a versão mais recente das chaves de recuperação (%s).
- A sessão criptografada não está activa
- Restaurar do backup
- Remover backup
- O backup da chave foi configurado corretamente para esta sessão.
- O backup da chave não está configurado nesta sessão.
- O backup das suas chaves não está sendo feito nesta sessão.
- O backup tem uma assinatura de uma sessão desconhecida com ID %s.
- O backup tem uma assinatura válida desta sessão.
- O backup tem uma assinatura válida da sessão confirmada %s.
- O backup tem uma assinatura válida da sessão não confirmada %s
- O backup tem uma assinatura inválida da sessão confirmada %s
- O backup tem uma assinatura inválida da sessão não confirmada %s
- Não foi possível saber se o backup é confiável (%s).
- Para usar o Backup de Chaves nesta sessão, restaure com a sua frase secreta ou chave de recuperação agora.
- Removendo o backup…
- Não foi possível remover o backup (%s)
- Verificando a situação do backup
- Remover backup
- Excluir as chaves de criptografia do servidor\? Você não será mais capaz de usar a sua chave de recuperação para ler o histórico de mensagens criptografadas.
- Novo backup de chave
- Foi detectado um novo backup de chave.
-\n
-\nSe você não definiu o novo método de recuperação, um invasor pode estar tentando acessar sua conta. Altere a senha da sua conta e defina um novo método de recuperação imediatamente nas Configurações.
+ Falha para obter versão mais recente de chaves de recuperação (%s).
+ A cripto de sessão não está ativada
+ Restaurar de Backup
+ Deletar Backup
+ Backup de Chave tem sido corretamente configurado para esta sessão.
+ Backup de Chave não está ativo nesta sessão.
+ Backup de suas chaves não está sendo feito desta sessão.
+ Backup tem uma assinatura de sessão desconhecida com ID %s.
+ Backup tem uma assinatura válida desta sessão.
+ Backup tem uma assinatura válida de sessão verificada %s.
+ Backup tem uma assinatura válida de sessão não-verificada %s
+ Backup tem uma assinatura inválida de sessão verificada %s
+ Backup tem uma assinatura inválida de sessão não-verificada %s
+ Falha para obter info de confiança para backup (%s).
+ Para usar Backup de Chave nesta sessão, restaure com sua frasepasse ou chave de recuperação agora.
+ Deletando backup…
+ Falha para deletar backup (%s)
+ Checando estado de backup
+ Deletar Backup
+ Deletar suas chaves de encriptação, das quais foi feito backup, do servidor\? Você não vai ser mais capaz de usar sua chave de recuperação para ler histórico de mensagens encriptadas.
+ Novo Backup de Chave
+ Um novo backup de chave de mensagem segura tem sido detectado.
+\n
+\nSe você não definiu o novo método de recuperação, um atacante poderia estar tentando acessar sua conta. Mude a senha de sua conta e defina um novo método de recuperação imediatamente em Configurações.Foi eu
- Nunca perca mensagens criptografadas
- Comece a fazer o backup da chave
- Backup online
- Proteja-se contra a perda de acesso a mensagens e dados criptografados
- Nunca perca mensagens criptografadas
- Fazer o backup da chave
+ Nunca perca mensagens encriptadas
+ Começar a usar Backup de Chave
+ Backup Seguro
+ Salvaguardar-se contra perda de acesso a mensagens & dados encriptados
+ Nunca perca mensagens encriptadas
+ Usar Backup de ChaveNovas chaves de mensagens seguras
- Configurar o backup das chaves
- Fazendo backup das chaves. Isso pode demorar vários minutos…
- Configurar o backup online
- O backup de todas as chaves foi concluído
+ Gerenciar em Backup de Chave
+ Fazendo backup de suas chaves. Isto pode levar muitos minutos…
+ Configurar Backup Seguro
+ Backup de todas as chaves foi feito
- Fazendo o backup de %d chave…
- Fazendo o backup de %d chaves…
+ Fazendo backup de %d chave…
+ Fazendo backup de %d chaves…VersãoAlgoritmo
- Resposta de descoberta inválida no servidor local
- Completar Automaticamente as Opções do Servidor
- ${app_name} detectou uma configuração personalizada do servidor para a sua ID de usuário \"%1$s\":
+ Resposta de descoberta de servidorcasa inválida
+ Autocompletar Opções de Servidor
+ ${app_name} detectou uma configuração de servidor personalizada para seu domínio de userId \"%1$s\":
\n%2$s
- Usar a Configuração
- Você foi desligado devido as credenciais inválidas ou caducadas.
- Confirmar comparando um texto curto.
- Para máxima segurança, recomendamos que você faça isso pessoalmente ou use outro meio de comunicação confiável.
- Iniciar a confirmação
- Recebendo solicitação de confirmação
- Confirme se esta sessão é sua. Confirmar sessões fornece segurança adicional, ao usar mensagens criptografadas de ponta a ponta.
- Ao confirmar se esta sessão é sua, você também a tornará confirmada para o seu contato.
- Confirme esta sessão, comparando os emojis a seguir que serão exibidos para você e seu contato
- Confirme esta sessão, comparando os números a seguir que serão exibidos para você e seu contato
- Você recebeu uma solicitação de confirmação.
- Ver pedido
- Aguardando seu contato confirmar…
- Confirmado!
- Você confirmou essa sessão com êxito.
- As mensagens com este usuário estão criptografadas de ponta a ponta e não podem ser lidas por terceiros.
- Ok, entendi
- Não aparece nada\? Nem todos os clientes suportam a confirmação interativa. Use a confirmação tradicional.
- Use a confirmação tradicional.
- Verificação da chave
- Pedido Cancelado
- Seu contato cancelou a confirmação.
+ Usar Config
+ Você tem sido feito logout devido a credenciais inválidas ou expiradas.
+ Verificar ao comparar um string de texto curto.
+ Para máxima segurança, nós recomendamos que você faça isto em pessoa ou use um outro meio de comunicação confiado.
+ Começar a Verificar
+ Requisição de Verificação Chegando
+ Verifique esta sessão para marcá-la como confiada. Confiar em sessões de parceiras(os) dá a você paz de mente extra quando usando mensagens encriptadas ponta-a-ponta.
+ Verificar esta sessão vai marcá-la como confiada, e também marcar sua sessão como confiada para a/o parceira(o).
+ Verifique esta sessão ao confirmar que os seguintes emoji aparecem na tela da/do parceira(o)
+ Verifique esta sessão ao confirmar que os seguintes números aparecem na tela da/do parceira(o)
+ Você recebeu uma requisição de verificação entrante.
+ Visualizar requisição
+ Esperando por parceira(o) confirmar…
+ Verificada!
+ Você tem confirmado esta sessão com sucesso.
+ Mensagens seguras com esta(e) usuária(o) estão encriptadas ponta-a-ponta e não são capazes de ser lidas por terceiros.
+ Entendido
+ Nada aparecendo\? Não todos os clientes suportam verificação interativa ainda. Use verificação legado.
+ Usar verificação legado.
+ Verificação de Chave
+ Requisição Cancelada
+ A outra parte cancelou a verificação.
\n%s
- A confirmação foi cancelada.
-\nMotivo: %s
- Confirmação interativa da sessão
- Solicitação de confirmação
- %s quer confirmar a sua sessão
- O contato cancelou a confirmação
- O tempo de confirmação expirou
+ A verificação foi cancelada.
+\nRazão: %s
+ Verificação de Sessão Interativa
+ Requisição de Verificação
+ %s quer verificar sua sessão
+ A(o) usuária(o) cancelou a verificação
+ O tempo para processo de verificação expirouA sessão não sabe sobre essa transação
- A sessão não concorda com a chave, método hash, MAC, ou SAS
- O compromisso de hash não coincidiu
- O SAS não corresponde
+ A sessão não concorda com um metódo de acordo de chave, hash, MAC, ou SAS
+ O cometimento de hash não correspondeu
+ O SAS não correspondeuA sessão recebeu uma mensagem inesperadaUma mensagem inválida foi recebida
- Chave incorreta
- Contato não corresponde
+ Disparidade de chave
+ Disparidade de usuária(o)Erro Desconhecido
- Você não está usando algum servidor de identidade
- Nenhum servidor de identidade está configurado. É necessário usar um para redefinir sua senha.
- Parece que você está tentando se conectar com outro servidor local. Deseja sair\?
+ Você não está usando nenhum Servidor de Identidade
+ Nenhum servidor de identidade está configurado, ele é requerido para resettar sua senha.
+ Parece que você está tentando se conectar a um outro servidorcasa. Você quer fazer signout\?EditarResponder
- Tentar novamente
- Conecta-se a uma sala para começar a usar o aplicativo.
- Enviou um convite
- Convidado por %s
- Tudo em dia!
- Você não tem mais mensagens não lidas
+ Retentar
+ Junte-se a uma sala para começar a usar o app.
+ Te enviou um convite
+ Convidada(o) por %s
+ Você está em dia!
+ Você não tem mais nenhuma mensagem não-lidaBoas-vindas!
- Leia mensagens não lidas aqui
+ Fique em dia com suas mensagens não-lidas aquiConversas
- Suas conversas serão exibidas aqui. Toque no botão + abaixo para conversar com alguém.
+ Suas conversas de mensagem direta vai ser exibidas aqui. Toque no + à direita fundo para começar algumas.Salas
- Seus salas serão exibidas aqui. Toque no botão + abaixo para pesquisar as salas existentes ou criar novas.
+ Suas salas vão ser exibidas aqui. Toque no + à direita fundo para encontrar umas existentes ou começar algumas propriamente suas.ReaçõesConcordoCurtir
- Adicionar reação
- Veja as reações
+ Adicionar Reação
+ Visualizar ReaçõesReações
- Mensagem apagada
- Mostrar mensagens apagadas
- Mostrar um espaço reservado para mensagens apagadas
- Evento apagado pelo usuário
- Evento moderado pelo administrador da sala
- Última edição por %1$s em %2$s
- Evento malformado, não pode ser exibido
+ Mensagem deletada
+ Mostrar mensagens removidas
+ Mostrar um placeholder para mensagens removidas
+ Evento deletado por usuária(o)
+ Evento moderado por admin da sala
+ Último editada por %1$s a %2$s
+ Evento malformado, não dá para exibirCriar Nova Sala
- Sem rede. Por favor, verifique sua conexão de internet.
- Alterar
- Alterar a rede
- Por favor, aguarde…
- Todas as comunidades
- Esta sala não pode ser visualizada
- A visualização da sala global ainda não é suportada por ${app_name}
+ Sem rede. Por favor cheque sua conexão de Internet.
+ Mudar
+ Mudar rede
+ Por favor espere…
+ Todas as Comunidades
+ Esta sala não pode ser previsualizada
+ A previsualização de sala legível pelo mundo não é suportada ainda em ${app_name}Salas
- Conversas
+ Mensagens DiretasNova SalaCRIARNomePúblico
- Qualquer pessoa poderá entrar nesta sala
- Lista de Salas
- Publicar esta sala na lista de salas
- Ocorreu um erro ao receber informações de confiança
- Ocorreu um erro ao obter dados de backup de chaves
- Importar as chaves de arquivo \"%1$s\".
- Versão do SDK da Matrix
- Outras licenças de terceiros
- Você já está vendo esta sala!
- Reações rápidas
+ Qualquer pessoa vai ser capaz de se juntar a esta sala
+ Diretório de Salas
+ Publicar esta sala no diretório de salas
+ Um erro ocorreu ao obter info de confiança
+ Um erro ocorreu ao obter dados de backup de chaves
+ Importar as chaves e2e de arquivo \"%1$s\".
+ Versão de SDK de Matrix
+ Outras notas de terceiros
+ Você já está visualizando esta sala!
+ Reações RápidasGeralPreferências
- Segurança e Privacidade
- Experiente
- Regras do Push
- Nenhuma regra Push definida
- Nenhuma entrada Push registrada
+ Segurança & Privacidade
+ Expert
+ Regras de Push
+ Nenhuma regra de push definida
+ Nenhum gateway de push registradoapp_id:
- chave_push:
- nome_da_ tela_ do_app:
- nome_da_sessão:
- Link:
+ push_key:
+ app_display_name:
+ session_name:
+ Url:Formato:
- Voz e vídeo
- Ajuda e Sobre
+ Voz & Vídeo
+ Ajuda & SobreRegistrar token
- Faça uma sugestão
- Por favor, escreva sua sugestão abaixo.
- Descreva aqui sua sugestão
- Obrigado, a sugestão foi enviada com êxito
- A sugestão não foi enviada (%s)
- Mostrar eventos ocultos nas conversas
- Conversas
- Aguardando…
- Criptografando imagem miniatura…
- Enviando imagem miniatura (%1$s / %2$s)
- Criptografando arquivo…
+ Fazer uma sugestão
+ Por favor escreva sua sugestão abaixo.
+ Descreva sua sugestão aqui
+ Obrigado, a sugestão tem sido enviada com sucesso
+ A sugestão falhou para ser enviada (%s)
+ Mostrar eventos escondidos em timeline
+ Mensagens Diretas
+ Esperando…
+ Encriptando thumbnail…
+ Enviando thumbnail (%1$s / %2$s)
+ Encriptando arquivo…Enviando arquivo (%1$s / %2$s)
- Baixando arquivo %1$s…
- O arquivo %1$s foi baixado!
- (editado)
- Edições na mensagem
+ Fazendo download de arquivo %1$s…
+ Download de arquivo %1$s foi feito!
+ (editada)
+ Edições de MensagemNenhuma edição encontradaFiltrar conversas…Não consegue encontrar o que você está procurando\?
- Criar uma sala nova
- Enviar nova mensagem
- Veja lista de salas
- Nome ou ID (#example:matrix.org)
- Ativar o recurso de deslizar para responder nas conversas
- Adicione uma aba dedicada para notificações não lidas na tela principal.
- Link copiado para a memória
- Adicionar por ID do Matrix
- Criando a sala…
- Nenhum resultado encontrado, use adicionar por ID do Matrix para pesquisar no servidor.
+ Criar uma nova sala
+ Enviar uma nova mensagem direta
+ Visualizar o diretório de salas
+ Nome ou ID (#exemplo:matrix.org)
+ Ativar deslize para responder em timeline
+ Adicionar uma aba dedicada para notificações não-lidas em tela principal.
+ Link copiado para clipboard
+ Adicionar por ID matrix
+ Criando sala…
+ Nenhum resultado encontrado, use Adicionar por ID matrix para pesquisar em servidor.Comece a digitar para obter resultados
- Filtrar por nome do usuário ou ID…
- Entrando na sala…
- Veja Histórico das Edições
- Termos de serviço
- Revisar termos
- Seja descoberto por outros
- Use bots, integrações, widgets e pacotes de figurinhas
- Leia em
+ Filtrar por nome de usuária(o) ou ID…
+ Juntando-se a sala…
+ Visualizar Histórico de Edição
+ Termos de Serviço
+ Revisar Termos
+ Ser descobertável por outras(os)
+ Usar Bots, bridges, widgets e pacotes de stickers
+ Lido aServidor de identidadeDesconectar servidor de identidadeConfigurar servidor de identidade
- Alterar servidor de identidade
- Atualmente você está usando %1$s para descobrir e ser descoberto pelos contatos existentes.
- No momento, você não está usando um servidor de identidade. Para descobrir e ser descoberto pelos contatos existentes, adicione um abaixo.
- Endereços de e-mail detectáveis
- As opções de descoberta aparecerão uma vez que você tenha adicionado um e-mail.
- As opções de descoberta aparecerão uma vez que você tenha adicionado um número de telefone.
- Desconectar-se de seu servidor de identidade resultará em que você não poderá ser descoberto por outros usuários e não poderá convidar outros por e-mail ou número de telefone.
- Números de telefone detectáveis
- Enviamos um e-mail de confirmação para %s, verifique seu e-mail e clique no link de confirmação
- Enviamos um e-mail de confirmação para %s. Por favor, verifique seu e-mail e clique no link de confirmação
- Aguardando
- Digite o endereço de um servidor de identidade
- Não foi possível conectar-se ao servidor de identidade
- Digite o endereço do servidor de identidade
- O servidor de identidade não tem termos de serviço
- O servidor de identidade que você escolheu não possui termos de serviço. Continue apenas se você confiar no proprietário do servidor
- Uma mensagem de texto foi enviada para %s. Por favor, digite o código de confirmação que ela contém.
- O código de confirmação não está correto.
- Atualmente, você está compartilhando endereços de e-mail ou números de telefone no servidor de identidade %1$s. Você precisará reconectar-se a %2$s para parar de compartilhá-los.
- Concorde com os Termos de Serviço do servidor de identidade (%s), para que você possa ser descoberto por endereço de e-mail ou por número de telefone.
- Ativar registros detalhados
- Os registros detalhados ajudarão os desenvolvedores, ao fornecerem mais registros quando você usar sacudir o aparelho. Mesmo quando ativado, o aplicativo não registra o conteúdo da mensagem ou qualquer outro dado privado.
- Por favor, tente novamente quando tiver aceitado os termos e condições de seu servidor.
- Parece que o servidor está demorando muito para responder, isto pode ser causado ou por má conectividade ou por um erro com o servidor. Por favor, tente novamente daqui a pouco.
+ Mudar servidor de identidade
+ Você está atualmente usando %1$s para descobrir e ser descobertável por contatos existentes que você conhece.
+ Você não está atualmente usando um servidor de identidade. Para descobrir e ser descobertável por contatos existentes que você conhece, configure um abaixo.
+ Endereços de email descobertáveis
+ Opções de descoberta vão aparecer uma vez que você tenha adicionado um email.
+ Opções de descoberta vão aparecer uma vez que você tenha adicionado um número de telefone.
+ Desconectar-se de seu servidor de identidade vai significar que você não vai ser descobertável por outras(os) usuárias(os) e você não vai ser capaz de convidar outras(os) por email ou telefone.
+ Números de telefone descobertáveis
+ Nós enviamos a você um email de confirmar para %s, cheque seu email e clique no link de confirmação
+ Nós enviamos a você um email de confirmar para %s, por favor primeiro cheque seu email e clique no link de confirmação
+ Pendente
+ Entre um URL de servidor de identidade
+ Não foi possível conectar-se a servidor de identidade
+ Por favor entre o url de servidor de identidade
+ Servidor de identidade não tem termos de serviço
+ O servidor de identidade que você tem escolhido não tem quaisquer termos de serviço. Somente continue se você confia na/do proprietária(o) do serviço
+ Uma mensagem de texto tem sido enviada para %s. Por favor entre o código de verificação que ela contém.
+ O código de verificação não está correto.
+ Você está atualmente compartilhando endereços de email ou números de telefone no servidor de identidade %1$s. Você vai precisar reconectar-se a %2$s para parar de os compartilhar.
+ Concorde com os Termos de Serviço do servidor de identidade (%s) para permitir você mesma(o) ser descobertável por endereço de email ou número de telefone.
+ Ativar verbose logs.
+ Verbose logs vão ajudar desenvolvedoras(es) ao prover mais logs quando você enviar uma RageShake. Mesmo quando ativado, o aplicativo não registra conteúdos de mensagem ou quaisquer outros dados privados.
+ Por favor retente uma vez que você tenha aceitado os termos e condições de seu servidorcasa.
+ Parece que o servidor está demorando muito para responder, isto pode ser causado por ou má conectividade ou um erro com o servidor. Por favor tente de novo daqui a pouco.Enviar anexo
- Abra a gaveta de navegação
- Abra o menu de criar a sala
- Fecha o menu de criar a sala…
+ Abrir a gaveta de navegação
+ Abrir o menu de criar sala
+ Fechar menu de criar sala…Criar uma nova conversa direta
- Criar uma sala nova
- Fechar o aviso de backup das chaves
+ Criar uma nova sala
+ Fechar banner de backup de chavesMostrar senhaEsconder senha
- Saltar para parte inferior
- %1$s, %2$s e %3$s leu
- %1$s e %2$s lê
- %s lê
+ Pular para fundo
+ %1$s, %2$s e %3$s leram
+ %1$s e %2$s leram
+ %s leu
- %d usuário leu
- %d usuários leram
+ %d usuária(o) leu
+ %d usuárias(os) leram
- O arquivo \'%1$s\' (%2$s) é muito grande para ser carregado. O limite é de %3$s.
- Ocorreu um erro durante a recuperação do anexo.
+ O arquivo \'%1$s\' (%2$s) é grande demais para fazer upload. O limite é %3$s.
+ Um erro ocorreu enquando recuperando o anexo.ArquivoContatoCâmeraÁudioGaleria
- Figurinha
- Não conseguia lidar com dados compartilhados
+ Sticker
+ Não deu para lidar com compartilhar dadosMÍDIA
- Nenhuma mídia nesta sala
+ Não tem nenhuma mídia nesta salaARQUIVOS
- %1$s em %2$s
- Nenhum arquivo nesta sala
+ %1$s a %2$s
+ Não tem nenhum arquivo nesta salaÉ spamÉ inapropriado
- Relatório personalizado…
- Denunciar conteúdo
- Motivo para denúnciar este conteúdo
- RELATÓRIO
- BLOQUEAR USUÁRIO
- Conteúdo relatado
+ Reporte personalizado…
+ Reportar este conteúdo
+ Razão para reportar este conteúdo
+ REPORTAR
+ IGNORAR USUÁRIA(O)
+ Conteúdo reportadoEste conteúdo foi reportado.
\n
-\nSe você não quiser ver mais mensagens deste usuário, você pode bloqueá-lo para esconder suas mensagens.
- Denunciado como spam
+\nSe você não quer ver mais nada de conteúdo desta(e) usuária(o), você pode ignorá-la(o) para esconder mensagens dela(e).
+ Reportado como spamEste conteúdo foi reportado como spam.
\n
-\nSe você não quiser ver mais mensagens deste usuário, você pode bloqueá-lo para esconder suas mensagens.
- Denunciado como inadequado
- Este conteúdo foi relatado como inadequado.
+\nSe você não quer ver mais nada de conteúdo desta(e) usuária(o), você pode ignorá-la(o) para esconder mensagens dela(e).
+ Reportado como inapropriado
+ Este conteúdo foi reportado como inapropriado.
\n
-\nSe você não quiser ver mais mensagens deste usuário, você pode bloqueá-lo para esconder suas mensagens.
- ${app_name} precisa de permissão para salvar suas chaves E2E no aparelho.
+\nSe você não quer ver mais nada de conteúdo desta(e) usuária(o), você pode ignorá-la(o) para esconder mensagens dela(e).
+ ${app_name} precisa de permissão para salvar suas chaves E2E em disco.
\n
-\nPermita o acesso na próxima janela para poder exportar suas chaves manualmente.
- Não há conexão de rede no momento
- Bloquear usuário
- Todas as mensagens novas (com som)
- Todas as mensagens novas
- Apenas @menções
- Silenciar
+\nPor favor permita acesso no próximo pop-up para ser capaz de exportar suas chaves manualmente.
+ Não há nenhuma conexão de rede no momento
+ Ignorar usuária(o)
+ Todas as mensagens (barulhentas)
+ Todas as mensagens
+ Menções somente
+ MutarConfigurações
- Adicionar aos favoritos
- Remover dos favoritos
+ Adicionar a favoritos
+ Remover de favoritosSair da sala
- %1$s não fez nenhuma alteração
- Você não fez nenhuma alteração
- Envia esta mensagem como um spoiler
- Estraga-Surpresa
- Digite palavras-chave para encontrar uma reação.
- Nenhum usuário bloqueado
- Clique longo sobre uma sala para ver mais opções
- %1$s tornou a sala pública para quem conhece o link.
- Você tornou a sala pública para quem conhece o link.
- %1$s tornou a sala acessível somente com convite.
- Você tornou a sala acessível somente com convite.
- Mensagens não lidas
- É a sua conversa. Vira um admin.
- Converse com as pessoas diretamente ou em comunidades
- Manter conversas privadas com criptografia
- Amplie e personalize sua experiência
+ %1$s não fez nenhuma mudança
+ Você não fez nenhuma mudança
+ Envia a dada mensagem como um spoiler
+ Spoiler
+ Digite palavrachaves para encontrar uma reação.
+ Você não está ignorando nenhum(a) usuário(a)
+ Clique longo numa sala para ver mais opções
+ %1$s fez a sala pública para qualquer pessoa que sabe o link.
+ Você fez a sala pública para qualquer pessoa que sabe o link.
+ %1$s fez a sala somente convite.
+ Você fez a sala somente convite.
+ Mensagens não-lidas
+ É sua conversa. Tome-a como sua.
+ Faça chat com pessoas diretamente ou em grupos
+ Mantenha conversas privadas com encriptação
+ Extenda & personalize sua experiênciaComece agoraSelecione um servidor
- Assim como o e-mail, as contas têm uma casa, embora você possa falar com qualquer pessoa
- Junte-se gratuitamente aos milhões no maior servidor público
- Hospedagem Premium para organizações
+ Assim como email, contas têm uma casa, embora você pode falar com qualquer pessoa
+ Junte-se a milhões de graça no maior servidor público
+ Hospedagem premium para organizaçõesSaiba maisOutros
- Configurações avançadas e preferências
+ Configurações personalizadas & avançadasContinuar
- Conecte-se a %1$s
- Conecte-se aos serviços de Element no Matrix
+ Conectar-se a %1$s
+ Conectar-se Element Matrix ServicesConectar-se a um servidor personalizado
- Entrar com %1$s
- Cadastre-se
- Entrar
- Continuar com ID único
- Endereço de serviço Element no Matrix
+ Fazer signin a %1$s
+ Fazer Signup
+ Fazer Signin
+ Continuar com SOU
+ Endereço de Element Matrix ServicesEndereço
- Hospedagem Premium para organizações
- Digite o endereço de Element Modular ou Servidor que você deseja usar
- Digite o endereço do servidor que você deseja usar
- Ocorreu um erro ao carregar a página: %1$s (%2$d)
- O aplicativo não pode entrar neste servidor. O servidor suporta os seguintes tipos de login: %1$s.
+ Hospedagem premium para organizações
+ Entre o endereço do Modular Element ou Servidor que você quer usar
+ Entre o endereço do servidor que você quer usar
+ Um erro ocorreu quando carregando a página: %1$s (%2$d)
+ O aplicativo não é capaz de fazer signin a este servidorcasa. O servidorcasa suporta o(s) seguinte(s) tipo(s) de signin: %1$s.
\n
-\nDeseja entrar no servidor usando o Element Web\?
+\nVocê quer fazer signing usando um cliente web\?Desculpe, este servidor não está aceitando novas contas.
- O aplicativo não pode criar uma conta neste servidor.
+ O aplicativo não é capaz de criar uma conta neste servidorcasa.
\n
-\nDeseja criar uma conta no servidor usando o Element Web\?
- Este e-mail não está associado a nenhuma conta.
- Redefinir senha em %1$s
- Um e-mail de confirmação será enviado para sua caixa de entrada, para você confirmar a definição de sua nova senha.
+\nVocê quer fazer signup usando um cliente web\?
+ Este email não está associado a nenhuma conta.
+ Resettar senha em %1$s
+ Um email de verificação vai ser enviado para sua inbox para confirmar definição de sua nova senha.Próximo
- E-mail
+ EmailNova senha
- Atenção!
- Alterar a sua senha redefinirá todas as chaves de criptografia de ponta a ponta existentes em todas as suas sessões, tornando o histórico de mensagens criptografadas ilegível. Faça um backup das suas chaves, ou exporte as chaves de outra sessão antes de alterar a sua senha.
+ Aviso!
+ Mudar sua senha vai resettar quaisquer chaves de encriptação ponta-a-ponta em todas as suas sessões, fazendo histórico de chat encriptado ilegível. Configure Backup de Chave ou exporte suas chaves de sala de uma outra sessão antes de resettar sua senha.Continuar
- Este e-mail não está associado a nenhuma conta
- Verifique sua caixa de entrada no e-mail
- Um e-mail de confirmação foi enviado para %1$s.
- Toque no link para confirmar sua nova senha. Uma vez que você tenha clicado o link que ele contém, clique abaixo.
- Verifiquei meu endereço de e-mail
- Parabéns!
- Sua senha foi alterada.
- Você foi desconectado de todas as sessões e não receberá mais notificações pop-up. Para reativar as notificações, faça o login novamente em cada aparelho.
- Voltar para Entrar
- Atenção
- Sua senha ainda não foi alterada.
+ Este email não está linkado a nenhuma conta
+ Cheque sua inbox
+ Um email de verificação foi enviado para %1$s.
+ Toque no link para confirmar sua nova senha. Uma vez que você tenha seguido o link que ele contém, clique abaixo.
+ Eu tenho verificado meu endereço de email
+ Sucesso!
+ Sua senha tem sido resettada.
+ Você tem sido feito logout de todas suas sessões e você não vai mais receber notificações push. Para reativar notificações, faça signin de novo em cada dispositivo.
+ Voltar para Fazer Signin
+ Aviso
+ Sua senha ainda não tem sido mudada.
\n
-\nInterromper a alteração de senha\?
- Defina um endereço de e-mail
- Defina um e-mail para recuperar sua conta. Mais tarde, você pode, opcionalmente, permitir que as pessoas que você conhece o descubram por seu e-mail.
- E-mail
- E-mail (opcional)
+\nPara o processo de mudança de senha\?
+ Definir endereço de email
+ Defina um email para recuperar sua conta. Mais tarde, você pode opcionalmente permitir pessoas que você conhece descobrirem você por seu email.
+ Email
+ Email (opcional)Próximo
- Defina número de telefone
- Defina um número de telefone para, opcionalmente, permitir que as pessoas que você conhece o encontram.
- Por favor, use o formato internacional.
+ Definir número de telefone
+ Defina um número de telefone para opcionalmente permitir que pessoas que você conhece descubram você.
+ Por favor use o formato internacional.Número de telefoneNúmero de telefone (opcional)Próximo
- Confirme o número de telefone
- Acabamos de enviar um código para %1$s. Digite-o abaixo para confirmar se é você.
- Digite o código
- Enviar novamente
+ Confirmar número de telefone
+ Nós acabamos de enviar um código para %1$s. Entre-o abaixo para verificar que é você.
+ Entrar código
+ Enviar de novoPróximo
- Os números de telefone internacionais devem começar com \'+\'
- O número de telefone parece inválido. Favor verificá-lo
- Registar em %1$s
- Nome de usuário ou e-mail
- Nome de usuário
+ Números de telefone internacionais devem começar com \'+\'
+ Número de telefone parece inválido. Por favor cheque-o
+ Fazer signup a %1$s
+ Nome de usuária(o) ou email
+ Nome de usuária(o)SenhaPróximo
- Esse nome de usuário está indisponível
- Atenção
- Sua conta ainda não foi criada.
+ Esse nome de usuária(o) está tomado
+ Aviso
+ Sua conta não foi criada ainda.
\n
-\nCancelar o processo de registro\?
- Selecione matrix.org
- Selecione Element nos Serviços de Matrix
- Selecione um servidor personalizado
- Por favor, realize o desafio de Captcha
- Aceitar termos para continuar
- Por favor, verifique seu e-mail
- Acabamos de enviar um e-mail para %1$s.
-\nPor favor, clique no link que ele contém para continuar a criação da conta.
- O código digitado não está correto. Por favor, verifique-o.
- Servidor desatualizado
- Este servidor tem uma versão muito antiga que não é compatível com nosso servidor. Peça ao administrador para fazer atualização.
+\nParar o processo de registro\?
+ Selecionar matrix.org
+ Selecionar Element Matrix Services
+ Selecionar um servidorcasa personalizado
+ Por favor performe o desafio de captcha
+ Aceite termos para continuar
+ Por favor cheque seu email
+ Nós acabamos de enviar um email para %1$s.
+\nPor favor clique no link que ele contém para continuar a criação de conta.
+ O código entrado não está correto. Por favor cheque.
+ Servidorcasa desatualizado
+ Este servidorcasa está rodando uma versão antiga demais para se conectar a ele. Peça à/ao admin de seu servidorcasa para fazer upgrade.
- Recebemos demasiado pedidos. Você pode tentar novamente em %1$d segundo…
- Recebemos demasiado pedidos. Você pode tentar novamente em %1$d segundos…
+ Requisições demais têm sido enviadas. Você pode retentar em %1$d segundo…
+ Requisições demais têm sido enviadas. Você pode retentar em %1$d segundos…
- Alternativamente, se você já tem uma conta e conhece a sua ID de usuário na Matrix e a senha, você pode usar este método:
- Entre com ID do Matrix
- Entre com ID do Matrix
- Se você criar uma conta no servidor local, use ID do Matrix (e.g. @user:domain.com) e a senha abaixo.
- ID do Matrix
- Se você não souber sua senha, volte para redefinir-a.
- Este não é um identificador de usuário válido. Formato esperado: \'@user:homeserver.org\'
- Incapaz de encontrar um servidor válido. Por favor, verifique seu identificador
- Lida por
- Você está desconectada/o
- Isso pode ser devido à vários motivos:
+ Alternativamente, se você já tem uma conta e sabe seu identificador Matrix e sua senha, você pode usar este método:
+ Fazer signin com ID Matrix
+ Fazer signin com ID Matrix
+ Se você configurar uma conta em um servidorcasa, use sua ID Matrix (e.g. @usuarix:dominio.com) e senha abaixo.
+ ID Matrix
+ Se você não sabe sua senha, volte para resettá-la.
+ Este não é um identificador de usuária(o) válido. Formato esperado: \'@usuarix:servidorcasa.org\'
+ Incapaz de encontrar um servidorcasa válido. Por favor cheque seu identificador
+ Vista por
+ Você fez signout
+ Pode ser devido a várias razões:
\n
-\n• Você alterou sua senha em outra sessão.
+\n• Você tem mudado sua senha numa outra sessão.
\n
-\n• Você excluiu esta sessão de outra sessão.
+\n• Você tem deletado esta sessão de uma outra sessão.
\n
-\n• O administrador do seu servidor invalidou seu acesso por motivos de segurança.
- Entrar novamente
- Você está desconectada/o
- Entrar
- Administrador do seu servidor (%1$s) invalidou seu acesso %2$s (%3$s).
- Faça login para recuperar as chaves de criptografia armazenadas exclusivamente neste aparelho. Você precisa delas para ler todas as suas mensagens seguras em qualquer aparelho.
- Entrar
+\n• O/a administrador(a) de seu servidor tem invalidado seu acesso por razão de segurança.
+ Fazer signin de novo
+ Você fez signout
+ Fazer signin
+ A/o admin de seu servidorcasa (%1$s) fez seu signout de sua conta %2$s (%3$s).
+ Faça signin para recuperar chaves de encriptação armazenadas exclusivamente neste dispositivo. Você precisa delas para ler todas suas mensagens seguras em qualquer dispositivo.
+ Fazer signinSenhaLimpar dados pessoais
- Atenção: Seus dados pessoais (incluindo chaves de criptografia) ainda estão armazenados neste aparelho.
+ Aviso: Seus dados pessoais (incluindo chaves de encriptação) ainda estão armazenados neste dispositivo.
\n
-\nApague-os quando não usar mais este aparelho, ou se quiser entrar em outra conta.
+\nLimpe-os quando você estiver terminado de usar este dispositivo, ou quiser fazer signin numa outra conta.Limpar todos os dadosLimpar dados
- Limpar todos os dados atualmente armazenados neste aparelho\?
-\nEntre novamente para acessar os dados e mensagens da sua conta.
- Você perderá o acesso as mensagens seguras a menos que você faça login para recuperar suas chaves de criptografia.
+ Limpar todos os dados atualmente armazenados neste dispositivo\?
+\nFaça signin de novo para acessar os dados e mensagens de sua conta.
+ Você vai perder acesso a mensagens seguras a menos que você faça signin para recuperar suas chaves de encriptação.Limpar dados
- A sessão atual é para o usuário %1$s e você fornece credenciais para o usuário %2$s. Isto não é suportado no ${app_name}.
-\nPor favor, limpe os dados do aplicativo, depois faça o login novamente em outra conta.
- Seu link do matrix.to foi malformado
+ A sessão atual é para usuária(o) %1$s e você provê credenciais para usuária(o) %2$s. Isto não é suportado por ${app_name}.
+\nPor favor primeiro limpe dados, então faça signin de novo em uma outra conta.
+ Seu link matrix.to foi malformadoA descrição é curta demais
- Sincronia Inicial…
- Veja todas as minhas sessões
+ Sinc Inicial…
+ Ver todas minhas sessõesConfigurações avançadas
- Modo desenvolvedor
- O modo de desenvolvedor permite ativar recursos ocultos, o que pode tornar o aplicativo menos estável. Somente para desenvolvedores!
- Agitar celular
- Detectar patamar
+ Modo desenvolvedor(a)
+ O modo desenvolvedor(a) ativa funcionalidades escondidas e também pode fazer o aplicativo menos estável. Para desenvolvedores(as) somente!
+ Rageshake
+ Limiar de detecçãoAgite seu telefone para testar o limiar de detecção
- A sacudida detectada!
+ Agitação detectada!ConfiguraçõesSessão atualOutras sessões
- Mostrando apenas os primeiros resultados, digite mais letras…
- Relatar imediatamente as falhas
- ${app_name} poderá quebrar com mais frequência quando ocorrer um erro inesperado
- Adiciona ¯\\_(ツ)_/¯ a uma mensagem de texto
- Ativar criptografia
- Uma vez ativada, a criptografia não poderá ser desativada.
- Seu domínio de e-mail não está permitido a se registrar neste servidor
- Entrada não confiável
- Correspondem
- Não correspondem
- Confirme este usuário, comparando os emojis a seguir que serão exibidos na tela dele, na mesma ordem.
- Para maior segurança, use outro meio de comunicação confiável ou faça isso pessoalmente.
- Procure o escudo verde para garantir que um usuário seja confiável. Confie em todos os usuários numa sala para garantir que a sala é segura.
+ Mostrando somente os primeiros resultados, digite mais letras…
+ Rápida-falha
+ ${app_name} pode crashar com mais frequência quando um erro inesperado ocorre
+ Prepende ¯\\_(ツ)_/¯ a uma mensagem de texto puro
+ Ativar encriptação
+ Uma vez ativada, encriptação não poder ser desativada.
+ Seu domínio de email não está autorizado a se registrar neste servidor
+ Signin desconfiado
+ Eles correspondem
+ Eles não correspondem
+ Verifique esta(e) usuária(o) ao confirmar que os seguintes emoji únicos aparecem na tela dela(e), na mesma ordem.
+ Para máxima segurança, use um outro meio de comunicação confiado ou faça isto em pessoa.
+ Procure pelo escudo verde para assegurar que um/uma usuário(a) é confiado. Confie em todos(as) os/as usuários(as) numa sala para assegurar que a sala é segura.Não seguro
- Um dos seguintes casos pode estar comprometido:
+ Um dos seguintes pode estar comprometido:
\n
-\n·- Seu servidor doméstico
-\n·- O servidor do usuário que você está verificando
-\n·- A sua, ou a conexão de outros usuários à internet
-\n·- O seu, ou o aparelho dos outros usuários
+\n - Seu servidorcasa
+\n - O servidorcasa da/do usuária(o) ao qual você está verificando está conectada(o)
+\n - A conexão de internet sua ou da/do outra(o) usuária(o)
+\n - O dispositivo seu ou da/do outra(o) usuária(o)Vídeo.Imagem.ÁudioArquivo
- Figurinha
- Aguardando…
+ Sticker
+ Esperando…%s canceladoVocê cancelou%s aceitouVocê aceitou
- Confirmação enviada
- Solicitação de confirmação
- Confirmar esta sessão
- Confirmar manualmente
+ Verificação Enviada
+ Requisição de Verificação
+ Verificar esta sessão
+ Verificar manualmenteVocê
- Escaneie o código com a câmera do aparelho do outro usuário para confirmar a segurança entre vocês
- Escanea o código do seu contato
- Não pode escanear
- Se você não está presente, alternativamente compare emoji
- Confirmar comparando emojis
- Confirmar por emojis
- Se você não consegue escanear o código acima, confirme via comparação de emojis.
- Imagem em código QR
- Confirmar %s
- Confirmou %s
- Aguardando por %s…
- Para segurança extra, confirme %s comparando um código único em ambos os aparelhos.
+ Scanne o código com o dispositivo da/do outra(o) usuária(o) para verificar seguramente um/uma a/o outra(o)
+ Scannar código dela(e)
+ Não dá para scannar
+ Se você não está em pessoa, compare emoji em vez disso
+ Verificar ao comparar emojis
+ Verificar por Emoji
+ Se você não pode scannar o código acima, verifique ao comparar uma seleção curta e única de emoji.
+ Imagem de QR code
+ Verificar %s
+ Verificou %s
+ Esperando por %s…
+ Para segurança extra, verifique %s ao checar um código de única vez em ambos seus dispositivos.
\n
-\nPara máxima segurança, faça isso pessoalmente.
- As mensagens nesta sala não estão criptografadas de ponta a ponta.
- As mensagens nesta sala estão criptografadas de ponta a ponta.
+\nPara máxima segurança, faça isto em pessoa.
+ Mensagens nesta sala não são encriptadas ponta-a-ponta.
+ Mensagens nesta sala são encriptadas ponta-a-ponta.
\n
-\nSuas mensagens estão protegidas com cadeados e somente você e o destinatário têm as chaves exclusivas que permitem a leitura delas.
+\nSuas mensagens são asseguradas com cadeados e somente você e a/o recipente têm as chaves únicas para os destrancar.SegurançaSaiba maisMais
- Ações do administrador
- Configurações da sala
+ Ações de Admin
+ Configurações de salaNotificaçõesUma pessoa%1$d pessoas
- Mídia e arquivos
- Sair da sala
- Deixando a sala…
- Administradores
- Moderadores
+ Uploads
+ Sair de Sala
+ Saindo da sala…
+ Admins
+ Moderadoras(es)PersonalizadoConvites
- Usuários
- Administrador em %1$s
- Moderador em %1$s
- Padrão em %1$s
+ Usuárias(os)
+ Admin em %1$s
+ Moderador(a) em %1$s
+ Default em %1$sPersonalizado (%1$d) em %2$s
- Ir para a confirmação de leitura
- ${app_name} não lida com eventos do tipo \'%1$s\'
- ${app_name} não lida com mensagens do tipo \'%1$s\'
- ${app_name} encontrou um problema ao render o conteúdo de um evento com \'%1$s\' ID
- Desbloquear
- Esta sessão não pode compartilhar essa confirmação com suas outras sessões.
-\nA confirmação será salvada localmente e será compartilhada em uma versão futura do aplicativo.
+ Pular para recibo de leitura
+ ${app_name} não lida com eventos de tipo \'%1$s\'
+ ${app_name} não lida com mensagens de tipo \'%1$s\'
+ ${app_name} encontrou um problema ao render conteúdo de evento com id \'%1$s\'
+ Designorar
+ Esta sessão é incapaz de compartilhar essa verificação com suas outras sessões.
+\nA confirmação vai ser salvada localmente e compartilhada numa versão futura do app.Salas recentesOutras salas
- Envia a mensagem colorida como arco-íris
- Envia o emoji colorido como um arco-íris
- Conversas
- Campo de texto
- Ativar a criptografia de ponta a ponta…
- Uma vez ativada, a criptografia não poderá ser desativada.
- Ativar criptografia\?
- Uma vez ativada, a criptografia de uma sala não pode ser desativada. As mensagens enviadas em uma sala criptografada não podem ser lidas pelo servidor, apenas pelos participantes desta sala. A ativação da criptografia pode impedir que muitos bots e integrações funcionem corretamente.
- Ativar criptografia
- Para ficar seguro, confirme %s comparando um código único.
- Para sua segurança, faça isso pessoalmente ou use outra forma confiável de comunicação.
+ Envia a dada mensagem colorida como um arco-íris
+ Envia o dado emote colorido como um arco-íris
+ Timeline
+ Editor de mensagem
+ Ativar encriptação ponta-a-ponta…
+ Uma vez ativada, encriptação não poder ser desativada.
+ Ativar encriptação\?
+ Uma vez ativada, encriptação para uma sala não pode ser desativada. Mensagens enviadas numa sala encriptada não podem ser vistas pelo servidor, somente pelas(os) participantes da sala. Ativar encriptação pode prevenir que muitos bots e bridges de funcionarem corretamente.
+ Ativar encriptação
+ Para estar segura(o), verifique %s ao checar um código de única vez.
+ Para estar segura(o), faça isto em pessoa ou use uma outra forma de se comunicar.Compare os emoji únicos, assegurando que eles apareçam na mesma ordem.
- Compare o código com o exibido na tela do outro usuário.
- As mensagens com este usuário estão criptografadas de ponta a ponta e não podem ser lidas por terceiros.
- Sua nova sessão agora está confirmada. Ela tem acesso às suas mensagens criptografadas, e outros usuários a verão como confirmada.
- Autoverificação
- A autoverificação está ativada
-\nChaves privadas estão no aparelho.
- A autoverificação está ativada
-\nAs chaves são confiáveis.
-\nAs chaves privadas não são conhecidas
- A autoverificação está ativada.
-\nAs chaves não são confiáveis
- A autoverificação não está ativada
- O administrador do servidor desativou a criptografia de ponta a ponta por padrão em salas privadas e em conversas.
- Sessões ativas
- Veja todas as sessões
- Gerenciar sessões
- Sair desta sessão
- Não há informações criptográficas disponíveis
- Esta sessão é confiável para o envio de mensagens seguras porque você a confirmou:
- Confirme esta sessão para conceder para ela o acesso a mensagens criptografadas. Se você não entrou nesta sessão, sua conta pode estar comprometida:
+ Compare o código com aquele exibido na tela da/do outra(o) usuária(o).
+ Mensagens com esta(e) usuária(o) são encriptadas ponta-a-ponta e não podem ser lidas por terceiros.
+ Sua nova sessão agora está confirmada. Ela tem acesso a suas mensagens encriptadas, e outras(os) usuárias(os) vão vê-la como confiada.
+ Assinatura Cruzada
+ Assinatura Cruzada está ativada
+\nChaves Privadas em dispositivo.
+ Assinatura Cruzada está ativada
+\nChaves são confiadas.
+\nChaves privadas não são conhecidas
+ Assinatura Cruzada está ativada.
+\nChaves não são confiadas
+ Assinatura Cruzada não está ativada
+ O/a administrador(a) de seu servidor tem desativado encriptação ponta-a-ponta por default em salas privadas & Mensagens Diretas.
+ Sessões Ativas
+ Mostrar Todas as Sessões
+ Gerenciar Sessões
+ Fazer signout desta sessão
+ Nenhuma informação criptográfica disponível
+ Esta sessão é confiada para mensageria segura porque você a verificou:
+ Verifique esta sessão para marcá-la como confiada & garantir-lhe acesso a mensagens encriptadas. Se você não fez signin a esta sessão sua conta pode estar comprometida:%d sessão ativa%d sessões ativas
- Confirmar este acesso
- Outros usuários podem não confiar nela
- Segurança completa
- Use uma sessão existente para confirmar a nova sessão, dando a ela acesso às mensagens criptografadas.
- Confirmar
- Confirmado
- Atenção
- Falha em obter sessões
+ Verificar este login
+ Outras(os) usuárias(os) podem não confiar nela
+ Completar Segurança
+ Use uma sessão existente para verificar esta aqui, garantindo-lhe acesso a mensagens encriptadas.
+ Verificar
+ Verificada
+ Aviso
+ Falha para obter sessõesSessões
- Confiável
- Não confiável
- Esta sessão está confirmada para trocar mensagens seguras porque %1$s (%2$s) a confirmou:
- %1$s (%2$s) entrou usando uma nova sessão:
- Até que este usuário confirme esta sessão, as mensagens enviadas de e para ela são etiquetadas com avisos. Alternativamente, é possível confirmar a sessão manualmente.
- Ativar a autoverificação
- Reiniciar Chaves
- Código QR
- Quase lá! Este escudo também aparece para %s\?
+ Confiada
+ Não Confiada
+ Esta sessão está confiada para mensageria segura porque %1$s (%2$s) a verificou:
+ %1$s (%2$s) fez signin usando uma nova sessão:
+ Até que esta(e) usuária(o) confie nesta sessão, mensagens enviadas para e desde ela são etiquetadas com avisos. Alternativamente, você pode verificá-la manualmente.
+ Inicializar AssinaturaCruzada
+ Resettar Chaves
+ QR code
+ Quase lá! %s está mostrando o mesmo escudo\?SimNão
- A conexão com o servidor foi perdida
- O modo de Avião está ativo
- Ferramentas do Desenvolvedor
- Dados da Conta
+ Conectividade ao servidor tem sido perdida
+ Modo avião está ligado
+ Ferramentas Dev
+ Dados de Conta%d voto%d votos
@@ -2137,258 +2137,258 @@
%d votos - Resultados finaisOpção Selecionada
- Cria uma pesquisa simples
- Use a Chave ou a Frase Secreta de Recuperação
- Se você não pode entrar numa sessão existente
- Entrar de Novo
- Não é possível encontrar segredos no armazenamento
- Digite a frase secreta de armazenamento
- Atenção:
- Você só deveria entrar no armazenamento secreto a partir de um aparelho confiável
- Apagar
- Deseja enviar este anexo para %1$s\?
+ Cria uma sondagem simples
+ Use uma Chave ou a Frasepasse de Recuperação
+ Se você não pode acessar uma sessão existente
+ Novo Sign In
+ Não dá para encontrar segredos em armazenamento
+ Entrar frasepasse de armazenamento secreto
+ Aviso:
+ Você somente deveria acessar armazenamento secreto a partir de um dispositivo confiado
+ Remover…
+ Você quer enviar este anexo para %1$s\?
- Enviar imagem no tamanho original
- Enviar imagens no tamanho original
+ Enviar imagem com o tamanho original
+ Enviar imagens com o tamanho original
- Confirmar a exclusão
- Tem certeza de que deseja apagar este evento\? Observe que, se você apagar a alteração do nome ou descrição de uma sala, isso reverterá a alteração.
- Incluir o motivo
- Motivo da edição
- Evento apagado pelo usuário, motivo: %1$s
- Evento moderado pelo administrador da sala, motivo: %1$s
- As chaves já estão atualizadas!
- ${app_name} para Android
- A chave pede
- Desbloquear histórico de mensagens criptografadas
+ Confirmar Remoção
+ Você tem certeza que você deseja remover (deletar) este evento\? Note que se você deletar um nome de sala ou mudança de tópico, poderia desfazer a mudança.
+ Incluir uma razão
+ Razão para redigir
+ Evento deletado por usuária(o), razão: %1$s
+ Evento moderado por admin de sala, razão: %1$s
+ Chaves já estão atualizadas!
+ ${app_name} Android
+ Requisições de Chave
+ Destrancar histórico de mensagens encriptadasRecarregarNovo login. Foi você\?
- Toque para revisar e confirmar
- Use esta sessão para confirmar a sua nova sessão, dando a ela acesso às mensagens criptografadas.
+ Toque para revisar & verificar
+ Use esta sessão para verificar sua nova, garantindo-lhe acesso a mensagens encriptadas.Não foi euSua conta pode estar comprometida
- Se você cancelar, não será capaz de ler mensagens criptografadas neste aparelho, e outros usuários não confiarão nele
- Se você cancelar, você não poderá ler mensagens criptografadas em seu novo aparelho, e outros usuários não confiarão nele
- Você não confirmará %1$s (%2$s) se cancelar agora. Precisará começar novamente no perfil dele.
- Um dos seguintes casos pode estar comprometido:
+ Se você cancelar, você não vai ser capaz de ler mensagens encriptadas neste dispositivo, e outras(os) usuárias(os) não vão confiar nele
+ Se você cancelar, você não vai ser capaz de ler mensagens encriptadas em seu novo dispositivo, e outras(os) usuárias(os) não vão confiar nele
+ Você não vai verificar %1$s (%2$s) se cancelar agora. Comece de novo no perfil de usuária(o) dela(e).
+ Um dos seguintes pode estar comprometido:
\n
\n- Sua senha
-\n- Seu servidor doméstico
-\n- Este aparelho, ou o outro aparelho
-\n- A conexão à internet de qualquer um dos aparelhos que você está usando
+\n- Seu servidorcasa
+\n- Este dispositivo, ou o outro dispositivo
+\n- A conexão de internet que qualquer um dos dois dispositivos está usando
\n
-\nRecomendamos que você altere imediatamente a sua senha e a chave de recuperação em Configurações.
- Confirme seus aparelhos em Configurações.
- Confirmação cancelada
- Digite a frase secreta de recuperação
- Chave da Mensagem
+\nNós recomendamos que você mude sua senha & chave de recuperação em Configurações imediatamente.
+ Verifique seus dispositivos desde Configurações.
+ Verificação Cancelada
+ Frasepasse de Recuperação
+ Chave de MensagemSenha da Conta
- Definir o %s
+ Definir uma %sGerar uma Chave de Mensagem
- Confirme %s
- Digite sua %s para continuar.
- Proteja e desbloqueie mensagens criptografadas e confia com um %s.
- Digite novamente seu %s para confirmar.
- Não use a senha da sua conta.
- Digite uma frase de segurança que só você conheça, usada para proteger os segredos em seu servidor.
- Isto pode levar vários segundos, seja paciente.
- Criação de recuperação.
+ Confirmar %s
+ Entre sua %s para continuar.
+ Assegure & destranque mensagens encriptadas e confie com uma %s.
+ Entre sua %s de novo para confirmá-la.
+ Não use a senha de sua conta.
+ Entre uma frase de segurança que só você conheça, usada para assegurar segredos em seu servidor.
+ Isto pode levar muitos segundos, por favor seja paciente.
+ Configurando recuperação.Sua chave de recuperaçãoTudo pronto!
- Guarde num local seguro
- Encerrar
- Use isto %1$s como uma rede de segurança caso você esqueça sua %2$s.
- Publicando as chaves de identidade criadas
- Gerando uma chave segura a partir de uma frase secreta
- Definindo a chave padrão SSSS
- Sincronização da chave Geral
- Sincronização da chave do Usuário
- Sincronizando a chave de Auto-Assinatura
- Criando o backup da chave
+ Mantenha-a segura
+ Finalizar
+ Use esta %1$s como uma rede de segurança em caso você esqueça sua %2$s.
+ Publicando chaves de identidade criadas
+ Gerando chave segura desde frasepasse
+ Definindo a Chave default SSSS
+ Sincronizando Master key
+ Sincronizando User key
+ Sincronizando Self Signing key
+ Configurando Backup de ChaveSuas %2$s & %1$s estão agora definidas.
\n
-\nSalva arquivos em local seguro! Você precisará deles para desbloquear mensagens criptografadas e proteger informações se perder todas as suas sessões ativas.
- Imprime e armazena em local seguro
- Salve isto em uma chave USB ou unidade de backup
- Copia para sua nuvem pessoal
+\nMantenha-as seguras! Você vai precisar delas para destrancar mensagens encriptadas e informação segura se você perder todas as suas sessões ativas.
+ Imprima-a e armazene-a em algum lugar seguro
+ Salve-a em uma chave USB ou drive de backup
+ Copie-a para seu armazenamento nuvem pessoalVocê não pode fazer isso por celular
- Criptografia ativada
- Criptografia desativada
- Aguardando por %s…
+ Encriptação ativada
+ Encriptação não ativada
+ Esperando por %s…Configuração de notificações
- Solução de problemas
- Digite uma mensagem…
- Use Arquivo
- Digite %s
- Frase Secreta de Recuperação
- Verificando o backup de chave
- Criando uma Frase Secreta de Recuperação permite proteger e desbloquear mensagens criptografadas e estabelecer confiança.
+ Solucionar problemas
+ Mensagem…
+ Usar Arquivo
+ Entrar %s
+ Frasepasse de Recuperação
+ Checando Chave de backup
+ Definir uma Frasepasse de Recuperação permite a você assegurar & destrancar mensagens encriptadas e confiança.
\n
-\nSe você não quiser definir uma Senha de Mensagem, crie antes uma Chave de Mensagem.
- Criar uma Frase Secreta de Recuperação permite proteger e desbloquear mensagens criptografadas e estabelecer confiança.
- Se você cancelar agora, poderá perder mensagens e dados criptografados para sempre se esquecer suas credenciais.
-\n
-\nVocê também pode configurar o Backup online e gerenciar suas chaves em Configurações.
- As mensagens nesta sala estão criptografadas de ponta a ponta. Confirme os usuários em seus perfis.
- A criptografia usada por esta sala não é suportada
+\nSe você não quer definir uma Senha de Mensagem, gere uma Chave de Mensagem em vez disso.
+ Definir uma Frasepasse de Recuperação permite a você assegurar & destrancar mensagens encriptadas e confiança.
+ Se você cancelar agora, você pode perder mensagens & dados encriptados se você perder acesso a seus logins.
+\n
+\nVocê também pode configurar Backup Seguro & gerenciar suas chaves em Configurações.
+ Mensagens nesta sala são encriptadas ponta-a-ponta. Saiba mais & verifique usuárias(os) nos perfis delas(es).
+ A encriptação usada por esta sala não é suportada%s criou e configurou a sala.Você criou e configurou a sala.
- Quase lá! O outro aparelho está mostrando o mesmo escudo\?
- Quase lá! Aguardando confirmação…
- Falha na importação de chaves
+ Quase lá! O outro dispositivo está mostrando o mesmo escudo\?
+ Quase lá! Esperando por confirmação…
+ Falha para importar chavesMensagens contendo @room
- Mensagens criptografadas em conversas individuais
- Mensagens criptografadas em salas
- Quando a versão da sala é atualizada
- Ajustar as notificações por evento
- Envia uma mensagem como texto simples, sem formatar o texto
- Nome de usuário e/ou senha incorretos. A senha digitada começa ou termina com espaços, favor verificá-la.
- Esta conta foi desativada.
- Atualização de criptografia disponível
- Ativar a autoverificação
- Verifique-se e os outros para manter suas conversas seguras
- Digite sua %s para continuar
+ Mensagens encriptadas em conversas um-a-um
+ Mensagens encriptadas em chats de grupo
+ Quando é feito upgrade de salas
+ Definir importância de notificação por evento
+ Envia uma mensagem como texto puro, sem interpretá-la como markdown
+ Nome de usuária(o) e/ou senha incorretos. A senha entrada começa ou termina com espaços, por favor cheque-a.
+ Esta conta tem sido desativada.
+ Upgrade de encriptação disponível
+ Ativar Assinatura Cruzada
+ Verifique-se a si mesma(o) & outras(os) para manter seus chats seguros
+ Entre sua %s para continuarNão é uma chave de recuperação válida
- Digite uma chave de recuperação
- Verificando o backup da chave (%s)
- Obtendo a chave da curva
- Gerando a chave SSSS a partir de uma frase secreta
- Gerando a chave SSSS a partir de uma frase secreta (%s)
- Gerando a chave SSSS a partir da chave de recuperação
- Armazenando backup secreto de chave em SSSS
+ Por favor entre uma chave de recuperação
+ Checando Chave de backup (%s)
+ Obtendo chave de curva
+ Gerando chave SSSS a partir de frasepasse
+ Gerando chave SSSS a partir de frasepasse (%s)
+ Gerando chave SSSS a partir de chave de recuperação
+ Armazenando segredo de backup de chave em SSSS%1$s (%2$s)
- Digite sua Frase Secreta de Chave do Backup para continuar.
- use sua chave de recuperação da Chave do Backup
- Se não se lembrar de sua Frase Secreta do backup de chave, você pode %s.
- Chave de recuperação do backup de chave
- Impedir a captura de tela do aplicativo
- Ativando esta opção acrescenta FLAG_SECURE a todas as atividades. Reinicie o aplicativo para que a alteração tenha efeito.
+ Entre sua Frasepasse de Backup de Chave para continuar.
+ usar sua chave de recuperação da Chave do Backup
+ Se você não sabe sua Frasepasse de Backup de Chave, você pode %s.
+ Chave de recuperação de Backup de Chave
+ Prevenir screenshots do aplicativo
+ Ativar esta configuração adiciona FLAG_SECURE a todas as Atividades. Recomece o aplicativo para que a mudança tenha efeito.Arquivo de mídia adicionado à Galeria
- Não foi possível adicionar o arquivo de mídia à Galeria
- Não foi possível salvar o arquivo de mídia
- Definir uma nova senha da conta…
- Use o ${app_name} mais recente em seus outros aparelhos: ${app_name} Web, ${app_name} para Computador, ${app_name} para iOS, ${app_name} para Android, ou outro cliente Matrix capaz de fazer autoverificação
+ Não foi possível adicionar arquivo de mídia à Galeria
+ Não foi possível salvar arquivo de mídia
+ Definir uma nova senha de conta…
+ Use o ${app_name} mais recente em seus outros dispositivos, ${app_name} Web, ${app_name} Desktop, ${app_name} iOS, ${app_name} para Android, ou um outro cliente Matrix capaz de assinatura cruzada${app_name} Web
-\n${app_name} para Computador
- ${app_name} para iOS
-\n${app_name} para Android
- ou outro cliente da Matrix capaz de fazer autoverificação
- Use o ${app_name} mais recente em seus outros aparelhos:
- Força a atual sessão da comunidade em uma sala criptografada a ser descartada
- Só é suportado em salas criptografadas
- Use seu %1$s ou %2$s para continuar.
- Usar a chave de recuperação
- Selecione sua Chave de Recuperação, ou insira manualmente digitando-a ou colando-a da sua área de transferência
- O backup não pôde ser descriptografado com essa Chave de Recuperação: verifique se você digitou corretamente a Chave de Recuperação.
- Falha ao acessar o armazenamento seguro
- Não criptografado
- Criptografado por um aparelho não confirmado
- Revisar onde você está logado
- Verifique todas as suas sessões para garantir que sua conta e mensagens estão seguras
+\n${app_name} Desktop
+ ${app_name} iOS
+\n${app_name} Android
+ ou um outro cliente Matrix capaz de assinatura cruzada
+ Use o ${app_name} mais recente em seus outros dispositivos:
+ Força a atual sessão de grupo de saída em uma sala encriptada a ser descartada
+ Somente suportado em salas encriptadas
+ Use sua %1$s ou %2$s para continuar.
+ Usar Chave de Recuperação
+ Selecione sua Chave de Recuperação, ou faça manualmente input dela ao digitá-la ou colá-la desde seu clipboard
+ Backup não pôde ser decriptado com esta Chave de Recuperação: por favor verifique que você entrou a Chave de Recuperação correta.
+ Falha para acessar armazenamento seguro
+ Não-encripada
+ Encriptada por um dispositivo não-verificado
+ Revisar onde você está com login feito
+ Verifique todas as suas sessões para assegurar que sua conta & mensagens estão segurasVerifique o novo login acessando sua conta: %1$s
- Confirmação manual por texto
- Confirmar o login
- Confirme interativamente por emojis
- Confirme sua identidade verificando este login a partir de uma de suas outras sessões, concedendo-lhe acesso às mensagens criptografadas.
- Marcar como Confiável
- Escolha um nome de usuário.
- Escolha uma senha.
- Verificar este link
- O link %1$s redirecionará você para outro site: %2$s.
+ Verificar Manualmente por Texto
+ Verificar login
+ Verificar Interativamente por Emoji
+ Confirme sua identidade ao verificar este login desde uma de suas outras sessões, garantindo-lhe acesso a mensagens encriptadas.
+ Marcar como Confiada
+ Por favor escolha um nome de usuária(o).
+ Por favor escolha uma senha.
+ Cheque duplamente este link
+ O link %1$s está levando você para um outro site: %2$s.
\n
-\nDeseja continuar\?
- Não foi possível criar sua DM. Por favor, verifique os usuários que você deseja convidar e tente novamente.
- Adicionar participantes
- CONVITE
- Convidando os usuários…
- Convidar Usuários
+\nVocê tem certeza que você quer continuar\?
+ Nós não conseguimos criar sua DM. Por favor cheque as/os usuárias(os) que você quer convidar e tente de novo.
+ Adicionar membros
+ CONVIDAR
+ Convidando usuárias(os)…
+ Convidar Usuárias(os)Convite enviado para %1$sConvites enviados para %1$s e %2$s
- Convites enviados para %1$s e mais um
- Convites enviados para %1$s e %2$d mais
+ Convites enviados para %1$s e mais um/uma
+ Convites enviados para %1$s e mais %2$d
- Não foi possível convidar os usuários. Por favor, verifique os usuários que você deseja convidar e tente novamente.
- Idioma atual
- Outros idiomas disponíveis
- Carregando os idiomas disponíveis…
- Abra termos de %s
+ Nós não conseguimos convidar usuárias(os). Por favor cheque as/os usuárias(os) que você quer convidar e tente de novo.
+ Língua atual
+ Outras línguas disponíveis
+ Carregando línguas disponíveis…
+ Abrir termos de %sDesconectar-se do servidor de identidade %s\?
- Este servidor de identidade está desatualizado. ${app_name} suporta apenas API V2.
- Esta operação não é possível. O servidor doméstico está desatualizado.
- Por favor, primeiro configure um servidor de identidade.
- Por favor, primeiro aceite os termos do servidor de identidade nas configurações.
- Pela sua privacidade, ${app_name} apenas suporta o envio dos e-mails e números de telefone de usuários em hash.
- A associação falhou.
+ Este servidor de identidade está desatualizado. ${app_name} suporta somente API V2.
+ Esta operação não é possível. O servidorcasa está desatualizado.
+ Por favor primeiro configure um servidor de identidade.
+ Por favor primeiro aceite os termos do servidor de identidade nas configurações.
+ Para sua privacidade, ${app_name} somente suporta enviar emails e números de telefone de usuária(o) hashados.
+ A associação tem falhado.Não há nenhuma associação atual com este identificador.
- Seu servidor doméstico (%1$s) propõe o uso de %2$s para seu servidor de identidade
- Use %1$s
- Como alternativa, você pode digitar o endereço de outro servidor de identidade
- Digite o endereço de um servidor de identidade
- Enviar
- Definir o papel
+ Seu servidorcasa (%1$s) propõe usar %2$s para seu servidor de identidade
+ Usar %1$s
+ Alternativamente, você pode entrar qualquer outro URL de servidor de identidade
+ Entre o URL de um servidor de identidade
+ Submeter
+ Definir papelPapel
- Bate-papo aberto
- Silenciar o microfone
- Ativar o microfone
- Desligue a câmera
- Ativar a câmera
- Configure o backup online
- Backup online
- Previna-se contra perda de acesso a mensagens e dados criptografados, fazendo backup das chaves de criptografia no seu servidor.
- Configure
- Use uma Chave de Segurança
- Gere uma chave de segurança para armazenar num local seguro, como um gerenciador de senhas ou um cofre.
- Use uma Frase de Segurança
- Digite uma frase secreta que só você conhece, e gere uma chave para backup.
- Salve sua Chave de Segurança
- Armazene sua Chave de Segurança num local seguro, como um gerenciador de senhas ou um cofre.
- Defina uma Frase de Segurança
- Digite uma frase de segurança que só você conheça, usada para proteger os segredos no seu servidor.
+ Abrir chat
+ Mutar o microfone
+ Desmutar o microfone
+ Parar a câmera
+ Começar a câmera
+ Configurar Backup Seguro
+ Backup seguro
+ Salvaguardar-se contra perda de acesso a mensagens & dados encriptados ao fazer backup de chaves de encriptação em seu servidor.
+ Configurar
+ Usar uma Chave de Segurança
+ Gere uma chave de segurança para armazenar em algum lugar seguro como um gerenciador de senhas ou um cofre.
+ Usar uma Frase de Segurança
+ Entre uma frase secreta que somente você conhece, e gere uma chave para backup.
+ Salvar sua Chave de Segurança
+ Armazene sua Chave de Segurança em algum lugar seguro, como um gerenciador de senhas ou um cofre.
+ Definir uma Frase de Segurança
+ Entre uma frase de segurança que somente você conheça, usada para assegurar segredos em seu servidor.Frase de Segurança
- Digite sua Frase de Segurança novamente para confirmá-la.
- Salve sua Chave de Segurança
- Armazene sua Chave de Segurança num local seguro, como um gerenciador de senhas ou um cofre.
- Nome da sala
- Descrição
- Você alterou as configurações da sala com êxito
+ Entre sua Frase de Segurança de novo para confirmá-la.
+ Salvar sua Chave de Segurança
+ Armazene sua Chave de Segurança em algum lugar seguro, como um gerenciador de senhas ou um cofre.
+ Nome de Sala
+ Tópico
+ Você mudou configurações de sala com sucessoVocê não pode acessar esta mensagem
- Aguardando esta mensagem. Pode demorar um pouco
- Não é possível decifrar
- Devido à criptografia de ponta a ponta, pode ser necessário aguardar que as chaves de criptografia de alguém cheguem, para ler as mensagens enviadas para você.
- Você não pode acessar esta mensagem porque você foi bloqueado pelo remetente
- Você não pode acessar esta mensagem porque a sessão não foi definida como confiável pelo remetente
- Você não pode acessar esta mensagem porque o remetente intencionalmente não enviou as chaves
- Aguardando o histórico de criptografia
+ Esperando por esta mensagem, isto pode levar algum tempo
+ Não Dá para Decifrar
+ Devido a encriptação ponta-a-ponta, pode ser que você precise esperar para que a mensagem de alguém chegue porque as chaves de encriptação não foram enviadas apropriadamente para você.
+ Você não pode acessar esta mensagem porque você foi bloqueada(o) pelo(a) enviador(a)
+ Você não pode acessar esta mensagem porque sua sessão não é confiada pelo(a) enviador(a)
+ Você não pode acessar esta mensagem porque o/a enviador(a) propositalmente não enviou as chaves
+ Esperando por histórico de encriptaçãoRiot agora é Element!
- Estamos felizes em anunciar que mudamos de nome! Seu aplicativo está atualizado e você está conectado à sua conta.
- OK, ENTENDI
- APRENDA MAIS
+ Nós estamos animados em anunciar que nós mudamos de nome! Seu app está atualizado e o signin está feito a sua conta.
+ ENTENDI
+ SABER MAISSalvar chave de recuperação em
- Adicionar da minha lista de contatos
- Sua lista de contatos está vazia
- Lista de Contatos
- Procure em meus contatos
- Extraindo seus contatos…
- Sua lista de contatos está vazia
- Lista de contatos
- Revogar o convite
- Revogar o convite para %1$s\?
- Banido por %1$s
- Não foi possível remover o banimento do usuário
- As notificações Push estão desativadas
- Revise suas configurações para permitir notificações Push
- Escolha um PIN de segurança
+ Adicionar de meu livro de telefone
+ Seu livro de telefone está vazio
+ Livro de Telefone
+ Pesquisar em meus contatos
+ Recuperando seus contatos…
+ Seu livro de contatos está vazio
+ Livro de Contatos
+ Revogar convite
+ Revogar convite para %1$s\?
+ Banida(o) por %1$s
+ Falha para DesBanir usuária(o)
+ Notificações push estão desativadas
+ Revise suas configurações para permitir notificações push
+ Escolha um PIN por segurançaConfirme PIN
- Falha na validação do PIN, por favor, digite um novo.
- Digite seu PIN
- Esqueceu o PIN\?
- Redefinir o PIN
+ Falha para validar PIN, por favor toque um novo.
+ Entre seu PIN
+ Esqueceu PIN\?
+ Resettar PINNovo PIN
- Para redefinir seu PIN, você precisará fazer um novo login e em seguida criar um novo PIN.
- Ativar o PIN
- Se você quiser redefinir seu PIN, toque no Esqueci o PIN para sair e redefinir-lo.
- Confirme o PIN para desativar o PIN
+ Para resettar seu PIN, você vai precisar refazer login e criar um novo.
+ Ativar PIN
+ Se você quer resettar seu PIN, toque em Esqueceu PIN para fazer logout e resettá-lo.
+ Confirmar PIN para desativar PINPrevenir chamada acidentalPedir por confirmação antes de começar uma chamadaVocê não tem permissão para começar uma chamada de conferência nesta sala
@@ -2398,27 +2398,27 @@
Reuniões usam políticas de segurança e permissão de Jitsi. Todas as pessoas atualmente na sala vão ver um convite para se juntarem enquanto sua reunião estiver acontecendo.Você não pode começar uma chamada com você mesma(o)Você não pode começar uma chamada com você mesma(o), espere pelas(os) participantes aceitarem convite
- Falha ao adicionar widget
- Falha ao remover widget
+ Falha para adicionar widget
+ Falha para remover widget%1$d/%2$d chave importada com êxito.%1$d/%2$d chaves importadas com êxito.Gerenciar IntegraçõesNenhum widget ativo
- A sala foi criada, mas alguns convites não foram enviados pelo seguinte motivo:
+ A sala tem sido criada, mas alguns convites não têm sido enviados pela seguinte razão:
\n
\n%s
- %1$s, %2$s e %3$d outro leu
- %1$s, %2$s e %3$d outros leram
+ %1$s, %2$s e %3$d outra(o) leu
+ %1$s, %2$s e %3$d outras(os) leramCódigo errado, %d tentativa restanteCódigo errado, %d tentativas restantes
- Atenção! Última tentativa restante antes de você ser desconectada/o!
- Muitos erros, você foi desconectada/o
+ Aviso! Última tentativa restante antes de logout!
+ Erros demais, você tem sido feito logoutVocê não tem permissão para começar uma chamada nesta salaNenhum número de telefone tem sido adicionado a sua contaEndereços de email
@@ -2434,141 +2434,141 @@
Emails e números de telefoneGerenciar emails e números de telefone linkados a sua conta MatrixCódigo
- Por favor, use o formato internacional (o número de telefone precisa começar com \'+\')
- Confirme sua identidade verificando este login, concedendo a ele acesso a mensagens criptografadas.
- Não é possível carregar uma sala da qual você foi banido.
- Não foi possível encontrar esta sala. Certifique-se de que ela existe.
- O link não está correto
+ Por favor use o formato internacional (número de telefone deve começar com \'+\')
+ Confirme sua identidade ao verificar este login, garantindo-lhe acesso a mensagens encriptadas.
+ Não dá para abrir uma sala de onde você foi banida(o).
+ Não dá para encontrar esta sala. Assegure-se que ela existe.
+ O link foi malformadoEste número de telefone já está definido.
- Mostrar eventos de estado de membros da sala
- Votação
- Botões do bot
+ Mostrar eventos de estado de membros de sala
+ Sondagem
+ Botões de BotReagiu com: %s
- Confirmação concluída
- Remover os dados de %1$s desta conta\?
+ Conclusão de Verificação
+ Deletar os dados de conta de tipo %1$s\?
\n
-\nProssiga com cuidado, pois não há como reverter esta escolha.
- O código PIN é solicitado todas as vezes que você abre o ${app_name}.
- O código PIN é solicitado após 2 minutos sem usar o ${app_name}.
- Solicitar o PIN depois de 2 minutos
- Exibir apenas o número de mensagens não lidas em uma notificação.
- Exibir o nome das salas e o conteúdo das mensagens.
- Exibir o conteúdo das mensagens nas notificações
- O código PIN é a única maneira de desbloquear o ${app_name}.
- Ativa a biometria específica do dispositivo, como impressões digitais e reconhecimento de rosto.
- Ativar a biometria
+\nUse com caução, pode levar a comportamento inesperado.
+ Código PIN é requerido toda vez que você abre ${app_name}.
+ Código PIN é requerido depois de 2 minutos de não usar ${app_name}.
+ Requerer PIN depois de 2 minutos
+ Somente mostrar número de mensagens não-lidas em uma notificação simples.
+ Mostrar detalhes como nomes de salas e conteúdo de mensagens.
+ Mostrar conteúdo em notificações
+ Código PIN é a única maneira de destrancar ${app_name}.
+ Ativar biometria específica de dispositivo, como impressões digitais e reconhecimento de face.
+ Ativar biometriaConfigurar a proteção
- Proteger o acesso usando PIN e biometria.
- Acesso restrito
+ Proteger acesso usando PIN e biometria.
+ Proteger acesso
- Exibir o aparelho com o qual você pode se verificar
- Exibir %d aparelhos com os quais você pode se verificar
+ Mostrar o dispositivo com o qual você pode verificar agora
+ Mostrar %d dispositivos com os quais você pode verificar agora
- Você não terá mais o histórico de mensagens, aparelhos confiáveis e contatos confirmados
- Se você redefinir tudo
- Apenas faça isso se você não tiver outro aparelho para confirmar este aparelho.
- Redefinir tudo
- Esqueceu as senhas ou perdeu todas as opções de recuperação\? Redefina tudo
- Você entrou.
- As mensagens nesta sala estão criptografadas de ponta a ponta.
+ Você vai recomeçar com nada de histórico, mensagens, dispositivos confiados ou usuárias(os) confiadas(os)
+ Se você resettar tudo
+ Somente faça isto se você não tem nenhum outro dispositivo com o qual você pode verificar este dispositivo.
+ Resettar tudo
+ Esqueceu ou perdeu todas as opções de recuperação\? Resette tudo
+ Você juntou-se.
+ Mensagens nesta sala são encriptadas ponta-a-ponta.SairConfigurações
- As mensagens nesta conversa estão criptografadas de ponta a ponta.
+ Mensagens aqui são encriptadas ponta-a-ponta.
\n
-\nSuas mensagens estão protegidas, pois só você e seu contato têm as chaves únicas para desbloqueá-las.
- As mensagens nesta sala não estão criptografadas de ponta a ponta.
- Este servidor local está executando uma versão antiga do Element. Peça ao administrador do servidor para atualizá-lo. Você pode prosseguir, mas alguns recursos poderão não funcionar corretamente.
- Exibir histórico completo em salas criptografadas
+\nSuas mensagens são asseguradas com cadeados e somente você e a/o recipiente têm as chaves únicas para os destrancar.
+ Mensagens aqui não são encriptadas ponta-a-ponta.
+ Este servidorcasa está rodando uma versão antiga. Peça à/ao admin de seu servidorcasa para fazer upgrade. Você pode continuar, mas algumas funcionalidades podem não funcionar corretamente.
+ Mostrar histórico completo em salas encriptadas%1$s e %2$s%1$s em %2$s e %3$sA notificação tem sido clicada!Por favor clique na notificação. Se você não vê a notificação, por favor cheque as configurações de sistema.Exibição de NotificaçõesVocê está visualizando a notificação! Clique em mim!
- Falha ao receber push. Solução podia ser reinstalar o aplicativo.
+ Falha para receber push. Solução podia ser reinstalar o aplicativo.O aplicativo está recebendo PUSHO aplicativo está esperando pelo PUSHPesquisar em salas encriptadas não é suportado ainda.Você não tem permissão para começar uma chamadaVocê não tem permissão para começar uma chamada de conferênciaResettar
- %1$s tornou a sala acessível somente com convite.
- Você definiu que a sala só receberá integrantes com convite.
- %s entrou.
+ %1$s fez isto somente convite.
+ Você fez isto somente convite.
+ %s juntou-se.Filtrar usuárias(os) banidas(os)Testar Push%d convite%d convites
- Remover baixa prioridade
- Definir como baixa prioridade
- Adicionar imagem
- Descartar alterações
- Existem alterações não salvas. Descartar as alterações\?
- A sala ainda não foi criada. Cancelar a criação da sala\?
- Girar e recortar
- Configurações da sala
- Descrição
- Descrição da sala (opcional)
- Nome da sala
+ Remover de baixa prioridade
+ Adicionar a baixa prioridade
+ Adicionar imagem de
+ Descartar mudanças
+ Existem mudanças não-salvas. Descartar as mudanças\?
+ A sala ainda não está criada. Cancelar a criação de sala\?
+ Rotar e recortar
+ Configurações de sala
+ Tópico
+ Tópico da sala (opcional)
+ Nome de salaEnviar histórico de requisições de compartilhamento de chavesMais nenhum resultado
- Exportar auditoria
- Enviar mensagem
- Mostrar mais
- Esconder mais
- Link na Matrix
- %s para que as pessoas saibam do que se trata esta sala.
- Digite o endereço da sala
- Recentes
- Código QR não escaneado!
- Código QR inválido (URL inválido)!
- Não é possível enviar mensagens para si mesmo!
+ Exportar Auditoria
+ Mensagem direta
+ Mostrar avançadas
+ Esconder avançadas
+ Link Matrix
+ %s para deixar pessoas sabendo do que esta sala se trata.
+ Por favor proveja um endereço de sala
+ Recente
+ QR code não scannado!
+ QR code inválido (URI Inválido)!
+ Não dá para enviar DM para si mesma(o)!Compartilhar por texto
- Pesquisar contatos na Matrix
- Definir foto
- A autorização do usuário não foi fornecida.
- Compartilhe este código com as pessoas, para que possam escaneá-lo, de modo a adicionar seu contato e começar a conversar.
+ Pesquisar por contatos na Matrix
+ Definir avatar
+ O consentimento de usuária(o) não tem sido provido.
+ Compartilhe este código com pessoas para que elas possam scanná-lo para adicionar você e começar a fazer chat.Meu códigoCompartilhar meu código
- Escanear um código QR
- Não é um código QR da Matrix válido
- 🔐️ Junte-se a mim no ${app_name}
- Ei, fale comigo no ${app_name}: %s
- Convidar amigos
+ Scannar um QR code
+ Não é um QR code matrix válido
+ 🔐️ Junte-se a mim em ${app_name}
+ Hey, fale comigo em ${app_name}: %s
+ Convidar amigas(os)Adicionar pessoas
- "Descrição:· "
- Adicionar uma descrição
- Este é o começo do seu histórico de mensagens com %s.
+ "Tópico: "
+ Adicionar um tópico
+ Este é o começo de seu histórico de mensagem direta com %s.Este é o começo desta conversa.
- Este é o início de %s.
- Você não tem permissão para ativar a criptografia nesta sala.
+ Este é o começo de %s.
+ Você não tem permissão para ativar encriptação nesta sala.Criando sala…Alguns caracteres não são permitidosEste endereço já está em uso
- Endereço da sala
- Você pode habilitar essa opção se a sala for usada apenas para colaboração com equipes internas em seu servidor local. Essa opção não poderá ser alterada mais tarde.
- Impedir que qualquer pessoa que não faça parte de %s jamais entre nesta sala
+ Endereço de sala
+ Você pode ativar isto se a sala vai somente ser usada para colaborar com times internos em seu servidorcasa. Isto não poder ser mudado mais tarde.
+ Bloquear qualquer pessoa que não é parte de %s de nunca se juntar a esta sala%1$d de %2$d
- Começar uma nova conversa escaneando um código QR
- Começar uma nova conversa com um ID na Matrix
- De modo a descobrir contatos a partir de pessoas que você conhece, você aceita enviar seus dados de contato (números de telefone e/ou e-mails) para o servidor de identidade configurado (%1$s)\?
+ Criar uma nova conversa direta ao scannar um QR code
+ Criar uma nova conversa direta por ID Matrix
+ A fim de descobrir contatos existentes que você conhece, você aceita enviar seus dados de contato (números de telefone e/ou emails) para o Servidor de Identidade configurado (%1$s)\?
\n
-\nPara obter mais privacidade, os dados enviados serão criptografados antes de serem enviados.
- Enviar e-mails e números de telefone
- Autorizar
- Revogar minha autorização
- Você não autorizou o envio de e-mails e números de telefone para este servidor de identidade, de modo a descobrir outras pessoas a partir dos seus contatos.
- Você autorizou o envio de e-mails e números de telefone para este servidor de identidade, de modo a descobrir outras pessoas a partir dos seus contatos.
- Enviar e-mails e números de telefone
+\nPara mais privacidade, os dados enviados serão hashados antes de serem enviados.
+ Enviar emails e números de telefone
+ Dar consentimento
+ Revogar meu consentimento
+ Você não tem dado seu consentimento para enviar emails e números de telefone para este servidor de identidade para descobrir outras(os) usuárias(os) de seus contatos.
+ Você tem dado seu consentimento para enviar emails e números de telefone para este servidor de identidade para descobrir outras(os) usuárias(os) de seus contatos.
+ Enviar emails e números de telefoneSugestõesContatos
- Pessoas conhecidas
- Código QR
- Adicionar por código QR
- Pesquise por nome ou ID
- Aceite permissão para acessar seus contatos.
+ Usuárias(os) Conhecidas(os)
+ QR code
+ Adicionar por QR code
+ Pesquisar por nome ou ID
+ Aceitar permissão para acessar seus contatos.Para scannear um QR code, você precisa permitir acesso a câmera.Começar a ConversarPublicar este endereço
@@ -2583,37 +2583,37 @@
Este é o endereço principalEndereços publicados podem ser usados por qualquer pessoa em qualquer servidor para se junta a sua sala. Para publicar um endereço, ele precisa ser definido como um endereço local primeiro.Endereços Publicados
- Endereços da Sala
- Veja e gerencie endereços desta sala, e sua visibilidade no diretório de salas.
- Endereços da sala
+ Endereços de Sala
+ Ver e gerenciar endereços desta sala, e sua visibilidade no diretório de salas.
+ Endereços de salaAdicionar
- Alterar o seu PIN atual
- Alterar o PIN
- Esta sala não pode ser visualizada. Você quer entrar nela\?
- Esta sala não está acessível no momento.
-\nTente novamente mais tarde, ou peça ao administrador da sala para verificar se você tem acesso.
+ Mudar seu PIN atual
+ Mudar PIN
+ Esta sala não pode ser previsualizada. Você quer se judar a ela\?
+ Esta sala não está acessível neste momento.
+\nTente de novo mais tarde, ou peça a um/uma admin da sala para checar se você tem acesso.Incapaz de recuperar a visibilidade atual de diretório de salas (%1$s).
- Publicar esta sala ao público no direitório de salas de %1$s\?
+ Publicar esta sala ao público no diretório de salas de %1$s\?Despublicar este endereço
- Defina endereços para esta sala para que usuárias(os) possam encontrar esta sala através de eu servidor de casa (%1$s)
+ Defina endereços para esta sala para que usuárias(os) possam encontrar esta sala através de seu servidorcasa (%1$s)Novo endereço publicado (e.g. #alias:servidor)Nenhum outro endereço publicado ainda.Nenhum outro endereço publicado ainda, adicione um abaixo.Publicar esta sala ao público no diretório de salas de %1$s\?Despublicar o endereço \"%1$s\"\?Acesso a sala
- Mundaças de quem pode ler o histórico só se vão aplicar a mensagens futuras nesta sala. A visibilidade do histórico existente vai ser inalterada.
+ Mundaças de quem pode ler o histórico só se vão aplicar a mensagens futuras nesta sala. A visibilidade de histórico existente vai ser inalterada.Despublicar
- login único
+ sign-on únicoAdicionar um botão em compositor de mensagem para abrir teclado de emoji
- Notificar todo mundo
- enviar neve ❄️
- enviar confetes 🎉
- Enviar a mensagem com neve
- Enviar a mensagem com confetes
- Limpar o histórico
- Entrar com %s
- Registrar-se com %s
+ Notificar todas as pessoas
+ envia queda de neve ❄️
+ envia confetti 🎉
+ Envia a dada mensagem com queda de neve
+ Envia a dada mensagem com confetti
+ Limpar histórico
+ Fazer signin com %s
+ Fazer signup com %sContinuar com %sOuMostrar teclado de emoji
@@ -2623,7 +2623,7 @@
Fazer upgrade da salaEnviar eventos m.room.server_aclMudar permissões
- Mudar nome da sala
+ Mudar nome de salaMudar visibilidade do históricoAtivar encriptação da salaMudar endereço principal para a sala
@@ -2638,59 +2638,59 @@
Papel defaultVocê não tem permissão para atualizar os papéis necessários para mudar várias partes da salaSelecione os papéis requeridos para mudar várias partes da sala
- Visualize e atualize os papéis requeridos para mudar várias partes da sala.
+ Visualizar e atualizar os papéis requeridos para mudar várias partes da sala.Permissões
- Permissões da sala
+ Permissões de salaEsta sala não é pública. Você não vai ser capaz de se rejuntar sem um convite.Default de Sistema
- Falha ao se autenticar
- O ${app_name} precisa que você insira suas credenciais para executar esta ação.
- Necessário autenticar-se novamente
+ Falha para autenticar
+ ${app_name} requer que você entre suas credenciais para performar esta ação.
+ Re-Autenticação NecessitadaNão autorizada(o), credenciais de autenticação válidas faltando
- Pessoas
- Ocorreu um erro ao transferir a chamada
+ Usuárias(os)
+ Um erro ocorreu enquanto transferindo chamadaTransferirConectarConsultar primeiro
- 1 chamada em andamento (%1$s) · 1 chamada pausada
- 1 chamada em andamento (%1$s) · %2$d chamadas pausadas
+ 1 chamada ativa (%1$s) · 1 chamada pausada
+ 1 chamada ativa (%1$s) · %2$d chamadas pausadasChamada pausada%1$d chamadas pausadas
- Chamada em andamento (%1$s)
- Ocorreu um erro ao pesquisar o número de telefone
- Teclado de discagem
- Ligar de volta
- Essa chamada foi encerrada
- %1$s recusou essa chamada
- Você recusou essa chamada %1$s
- Você está nessa chamada
+ Chamada ativa (%1$s)
+ Houve um erro ao procurar o número de telefone
+ Pad de disco
+ Chamar de volta
+ Esta chamada tem terminado
+ %1$s declinou esta chamada
+ Você declinou esta chamada %1$s
+ Você está atualmente nesta chamada%1$s começou uma chamadaVocê começou uma chamada
- Falha ao fazer a autoverificação
+ Falha para configurar Asinatura CruzadaVocê pôs a chamada em espera%s pôs a chamada em esperaPôr em esperaRetomarRetornar
- Nível de confiança padrão
- Selecionado
+ Nível de confiança default
+ SelecionadaVídeo
- Algumas mensagens não foram enviadas
- Remover foto de perfil
- Mudar foto de perfil
+ Algumas mensagens não têm sido enviadas
+ Deletar avatar
+ Mudar avatarImagem
- Importar chave do arquivo
+ Importar chave desde arquivoAbrir widgets
- Captura de tela
+ ScreenshotO limite é desconhecido.
- O seu servidor local aceita anexos (arquivos, mídia, etc) com tamanhos de até %s.
+ Seu servidorcasa aceita anexos (arquivos, mídia, etc.) com um tamanho de até %s.Versão do servidorNome do servidor
- Configurações da sala
+ Configurações de salaSair da conferência atual e trocar para a outra\?Versão da salaMostrar todas as salas no diretório de salas, incluindo salas com conteúdo explícito.
@@ -2702,54 +2702,54 @@
\nFazendo download de dados…Sinc Inicial:
\nEsperando por resposta de servidor…
- Nível de confiança: confiável
- Nível de confiança: alerta
- Deseja mesmo excluir todas as mensagens não enviadas nesta sala\?
- Excluir as mensagens não enviadas
- Falha ao enviar as mensagens
- Quer cancelar o envio da mensagem\?
- Excluir todas as mensagens com falha
+ Nível de confiança confiado
+ Nível de confiança alerta
+ Você tem certeza que você quer deletar todas as mensagens não-enviadas nesta sala\?
+ Deletar mensagens não-enviadas
+ Mensagens falharam para enviar
+ Você quer cancelar enviar mensagem\?
+ Deletar todas as mensagens falhadasFalhouEnviadoEnviando
- Conteúdo do evento
- Evento do estado enviado!
+ Conteúdo de evento
+ Evento de estado enviado!Evento enviado!Evento malformado
- Tipo de mensagem ausente
- Nenhum conteúdo
- Conteúdo do evento
- Chave do estado
+ Tipo de mensagem faltando
+ Sem conteúdo
+ Conteúdo de Evento
+ Chave de EstadoTipo
- Enviar evento de estado personalizado
- Editar conteúdo
- Eventos do estado
- Enviar evento do estado
- Enviar evento personalizado
- Explorar o estado da sala
- Ferramentas de desenvolvimento
- Ver confirmações de leitura
+ Enviar Evento de Estado Personalizado
+ Editar Conteúdo
+ Eventos de Estado
+ Enviar Evento de Estado
+ Enviar Evento Personalizado
+ Explorar Estado de Sala
+ Ferramentas Dev
+ Visualizar recibos de leituraNão notificarNotificar sem somNotificar com som
- Mensagem não enviada devido a um erro
- Verificado
- Fechar o selecionador de emojis
- Abrir o selecionador de emojis
- Esta sala tem rascunho não enviado
+ Mensagem não enviada devido a erro
+ Checado
+ Fechar Seletor de Emoji
+ Abrir seletor de Emoji
+ Esta sala tem rascunho não-enviado%d entrada%d entradas
- Limite do envio de arquivo do servidor
- Qualquer pessoa num espaço com esta sala pode encontrar e juntar-se a ela. Somente admins desta sala podem adicioná-la a um espaço.
+ Limite de upload de arquivo do servidor
+ Qualquer pessoa num espaço com esta sala pode encontrá-la e juntar-se a ela. Somente admins desta sala podem adicioná-la a um espaço.EspaçosQualquer pessoa pode encontrar a sala e juntar-sePúblicaSomente pessoas convidadas podem encontrar e juntar-sePrivadaConfiguração de acesso desconhecida (%s)
- Qualquer pessoa que possa tocar na sala, membros pdem então aceitar ou rejeitar
+ Qualquer pessoa pode tocar na sala, membros podem então aceitar ou rejeitarPermitir visitantes se juntaremUsar como default e não perguntar de novoSempre perguntar
@@ -2757,4 +2757,123 @@
ConvitesSalas SugeridasMensagem enviada
+ O arquivo é grande demais para fazer upload.
+ Esta funcionalidade está em beta
+ Pesquisar Nome
+ Comprimindo vídeo %d%%
+ Comprimindo imagem…
+ Dar Feedback
+ O feedback falhou para ser enviado (%s)
+ Obrigado, seu feedback tem sido enviado com sucesso
+ Vocês podem me contactar se vocês tiverem quaisquer perguntas subsequentes
+ Você está usando uma versão beta de espaços. Seu feedback vai ajudar a informar as próximas versões. Sua plataforma e nome de usuária(o) vão ser anotados para nos ajudar a usar o seu feedback tanto quanto nós pudermos.
+ Feedback
+ Feedback de espaços
+ Desculpe, um erro ocorreu enquanto tentando se juntar à conferência
+ Juntar-se ao Espaço com a dada id
+ Esta sala é pública
+ Não-checado
+ Pessoa desconhecida
+ Transferir para %1$s
+ Consultando com %1$s
+ Marcar como não sugerida(o)
+ Marcar como sugerida(o)
+ Sugerida(o)
+ Você não está em nenhuma sala ainda. Abaixo estão algumas salas sugeridas, mas você pode ver mais com o botão verde direito fundo.
+ Este alias não é acessível neste momento.
+\nTente de novo mais tarde, ou peça a um/uma admin de sala para checar se você tem acesso.
+ Juntar-Se Mesmo Assim
+ Pular por enquanto
+ Elas não vão fazer parte de %s
+ Só a esta sala
+ Compartilhar link
+ Convidar por nome de usuária(o)
+ Convidar por email
+ Convidar pessoas
+ Boas-vindas a %1$s, %2$s.
+ Você está convidada(o)
+ Aviso requer suporte de servidor e versão de sala experimental
+ %s convida você
+ Sala Não-Nomeada
+ Algumas salas podem estar escondidas porque elas são privadas e você precisa de um convite.
+ Algumas salas podem estar escondidas porque elas são privadas e você precisa de um convite.
+\nVocê não tem permissão para adicionar salas.
+ Este espaço não tem nenhuma sala
+ Por favor contacte sua/seu admin de servidorcasa para mais informação
+ Parece que seu servidorcasa não suporta Espaços ainda
+ Se sentindo experimental\?
+\nVocê pode adicionar espaços existentes a um espaço.
+ Espaço Experimental - Somente mostrar órfãos em Home
+ Gerenciar salas e espaços
+ Fazer este espaço público
+ Gerenciar salas
+ Procurando por alguém que não está em %s\?
+ Espaço Experimental - Sala Restringida.
+ Espaços são uma nova forma de agrupar salas e pessoas.
+ Boas-vindas a Espaços!
+ Adicionar salas
+ Adicionar salas e espaços existentes
+ Você é admin deste espaço, assegure-se que você tem transferido direito de admin a um outro membro antes de sair.
+ Este espaço não é público. Você não vai ser capaz de se rejuntar sem um convite.
+ Você é a única pessoa aqui. Se você sair, ninguém vai ser capaz de se juntar no futuro, incluindo você.
+ Você tem certeza que você quer sair do espaço\?
+ Sair de Espaço
+ Adicionar salas
+ Explorar salas
+
+ %d pessoa que você conhece já tem se juntado
+ %d pessoas que você conhece já têm se juntado
+
+ Juntar-Se a Espaço
+ Criar Espaço
+ Junte-se a meu espaço %1$s %2$s
+ Elas vão ser capazes de explorar %s
+ Convidar a %s
+ É só você no momento. %s vai ser ainda melhor com outras(os).
+ Convidar a %s
+ Convidar pessoas a seu espaço
+ Descrição
+ Criando Espaço…
+ Aleatório
+ Geral
+ Vamos criar uma sala para cada uma delas. Você pode adicionar outras mais tarde também, incluindo umas já existentes.
+ Em que coisas você está trabalhando\?
+ Nós vamos criar salas para elas. Você pode adicionar outras mais tarde também.
+ Quais são algumas discussões que você quer ter em %s\?
+ Dê-lhe um nome para continuar.
+ Adicione alguns detalhes para ajudar pessoas a identificá-lo. Você pode mudar isto a qualquer ponto.
+ Adicione alguns detalhes para ajudá-lo a se destacar. Você pode mudar isto a qualquer ponto.
+ Criar um espaço
+ Somente convite, o melhor para você mesma(o) ou equipes
+ Privado
+ Aberto para qualquer pessoa, o melhor para comunidades
+ Público
+ Um espaço privado para você & suas/seus colegas de equipe
+ Eu e minhas/meus colegas de equipe
+ Um espaço privado para organizar suas salas
+ Só eu
+ Assegure-se que as pessoas certas têm acesso a %s. Você pode mudar isto mais tarde.
+ Com quem você está trabalhando\?
+ Para se juntar a um espaço existente, você precisa de um convite.
+ Você pode mudar isto mais tarde
+ Que tipo de espaço você quer criar\?
+ Espaços são uma nova forma de agrupar salas e pessoas
+ Seu espaço privado
+ Seu espaço público
+ Adicionar Espaço
+ Espaço privado
+ Espaço público
+ Criar um Espaço
+ Este Espaço é público
+ Sair de sala com dada id (ou sala atual se nula)
+ Este servidor já está presente na lista
+ Não dá para encontrar este servidor ou sua lista de salas
+ Entre o nome de um novo servidor que você quer explorar.
+ Adicionar um novo servidor
+ Seu servidor
+ Enviar mídia com o tamanho original
+
+ Enviar vídeo com o tamanho original
+ Enviar vídeos com o tamanho original
+
\ No newline at end of file
diff --git a/vector/src/main/res/values-pt/strings.xml b/vector/src/main/res/values-pt/strings.xml
index 8220b08dd4..0cf47bd339 100644
--- a/vector/src/main/res/values-pt/strings.xml
+++ b/vector/src/main/res/values-pt/strings.xml
@@ -2,7 +2,6 @@
%1$s: %2$s%1$s enviou uma imagem.
-
convite de %s%1$s convidou %2$s%1$s convidou-o
@@ -30,55 +29,39 @@
todos.desconhecida (%s).%1$s ativou a criptografia ponta-a-ponta (%2$s)
-
%1$s solicitou uma conferência VoIPA conferência VoIP começouA conferência VoIP terminou
-
(o avatar também foi alterado)%1$s removeu o nome da sala%1$s removeu o tópico da sala%1$s atualizou o seu perfil %2$s%1$s enviou um convite para que %2$s se junte à sala%1$s aceitou o convite para %2$s
-
** Impossível decifrar: %s **O dispositivo de quem enviou a mensagem não nos enviou as chaves para esta mensagem.
-
Não foi possível apagarNão foi possível enviar a mensagem
-
O envio da imagem falhou
-
Erro de conexão à InternetErro do Matrix
-
-
-
-
Ainda não é possível voltar a entrar numa sala vazia.
-
Endereço de e-mailNúmero de telefone
-
Convite de %sConvite para sala%1$s e %2$sSala vazia
-
-
%1$s enviou um sticker.
-
%s fez o upgrade da sala.
-
Mensagem removidaMensagem removida por %1$s
@@ -1044,4 +1027,6 @@ Por favor, verifique configurações de aplicação
Escolha cor de LED, vibração, som…A iniciar o serviçoVerificar sessão
+ ${app_name} irá sincronizar em fundo periodicamente em tempo preciso (configurável).
+\nIsto terá impacto na utilização do rádio e da bateria, será exibida uma notificação permanente declarando que ${app_name} está à escuta dos eventos.
\ No newline at end of file
diff --git a/vector/src/main/res/values-ro/strings.xml b/vector/src/main/res/values-ro/strings.xml
index 866c827cf2..c5bae614bb 100644
--- a/vector/src/main/res/values-ro/strings.xml
+++ b/vector/src/main/res/values-ro/strings.xml
@@ -197,4 +197,97 @@
Mesaje directeMesaje directeNu vreau mesajele mele criptate
+ Format Markdown
+ Sesiuni
+ Contacte locale
+ Criptografie
+ Integrări
+ Avansat
+ Utilizatori ignorați
+ Notificări
+ Setările utilizatorului
+ Politica de confidențialitate
+ Drepturi de autor
+ Termene și condiții
+ Versiune olm
+ Versiune
+ Optimizat pentru baterie
+ Când sunt invitat într-o cameră
+ Configurează notificările silențioase
+ Sunet de notificare
+ Confidențialitate redusă
+ Adaugă un cont
+ Repară serviciile Google Play
+ Verifică setările
+ Setări personalizate.
+ Activează
+ Setările sesiunii.
+ Activează
+ Setările contului.
+ Deschide setările
+ Setări de sistem.
+ Numere de telefon
+ Nu a fost adăugat nicio adresă de e-mail pentru contul dumneavoastră
+ Adrese de e-mail
+ Adaugă un număr de telefon
+ Nu a fost adăugat niciun număr de telefon pentru contul dumneavoastră
+ Telefon
+ Adaugă o adresă de e-mail
+ E-mail
+ Numele afișat
+ Poza de profil
+ Setări
+ Adaugă la ecranul de pornire
+ Uită
+ Părăsește conversația
+ Deprioritizează
+ Favorite
+ Mut
+ Doar mențiunile
+ Toate mesajele
+ Schimbă setările
+ Explorează camerele
+ Invită persoane
+ Adaugă spațiu
+ Bine ai venit acasă!
+ Acasă
+ Acasă
+ E-mailuri și numere de telefon
+ Generale
+ Generale
+ Voce și video
+ Avansat
+ Ajutor și despre
+ Utilizați camera dispozitivului
+ Criptarea end-to-end este activă
+ Experimental
+ Securitate și confidențialitate
+ Setări
+ Setările camerei
+ Setări avansate
+ Modul dezvoltator
+ Setări
+ Setările camerei
+ Setări
+ Sesiuni active
+ Afișează toate sesiunile
+ Numele serverului
+ Versiunea serverului
+
+ %d sesiune activă
+ %d sesiuni active
+ %d de sesiuni active
+
+ Instrumente de dezvoltare
+ Depanare
+ Subiect
+ Numele camerei
+ Afișează conținutul în notificări
+ Șterge toate datele
+ Șterge datele personale
+ Parolă
+ Conectare
+ Conectare
+ Deconectare
+ Deconectare
\ No newline at end of file
diff --git a/vector/src/main/res/values-sq/strings.xml b/vector/src/main/res/values-sq/strings.xml
index 2a597dd978..73512f103c 100644
--- a/vector/src/main/res/values-sq/strings.xml
+++ b/vector/src/main/res/values-sq/strings.xml
@@ -394,7 +394,7 @@
Harruat fjalëkalimin?Përdor mundësi vetjake shërbyesi (e përparuar)Ju lutemi, që të vazhdojë regjistrimi, kontrolloni email-in tuaj
- Ky Shërbyes Home do të donte të sigurohej se s’jeni robot
+ Ky shërbyes Home do të donte të sigurohej se s’jeni robotEmër përdoruesi në përdorimShërbyes Home:Shërbyes Identitetesh:
@@ -1022,7 +1022,7 @@
Hiqe nga listë e zezëRipohojeni duke krahasuar sa vijon me Rregullimet e Përdoruesit te sesioni juaj tjetër:Nëse s’përputhen, siguria e komunikimeve tuaja mund të jetë komprometuar.
- URL Shërbyesi Home
+ Emër shërbyesi%d dhomë%d dhoma
@@ -2120,7 +2120,7 @@
Ftesa u dërgua te %1$s dhe %2$sU dërguan ftesa te %1$s dhe një tjetër
- U dërguan ftesa te %1$s dhe %2$s të tjerë
+ U dërguan ftesa te %1$s dhe %2$d të tjerëS’ftuam dot përdorues. Ju lutemi, kontrolloni përdoruesit që doni të ftoni dhe riprovoni.Mesazhi u fshi
@@ -2662,7 +2662,7 @@
\nPo shkarkohen të dhëna…
Njëkohësimi Fillestar:
\nPo pritet për përgjigje nga shërbyesi…
- Hapësirat janë mënyra për të grupuar dhoma dhe persona për punë, zbavitje ose thjesht për veten tuaj.
+ Hapësirat janë mënyra për të grupuar dhoma dhe persona.Sinjalizimi lyp mbulim nga shërbyesi dhe version eksperimental dhomeHapësirë Eksperimentale - Dhomë e Kufizuar.Jeni ftuar
@@ -2747,7 +2747,7 @@
Bëje publike këtë hapësirëAdministroni dhomaPo kërkoni për dikë jo në %s\?
- %1$s ju fton
+ %s ju ftonKjo dhomë është publikeE pakontrolluarU kontrollua
@@ -2761,4 +2761,39 @@
Po ngjeshet figurë…Përdore si parazgjedhje dhe mos pyet sërishPyet përherë
+ Disa dhoma mund të jenë të fshehura, ngaqë janë private dhe mund t’ju duhet një ftesë.
+ Disa dhoma mund të jenë të fshehura, ngaqë janë private dhe ju duhet një ftesë.
+\nS’keni leje të shtoni dhoma.
+ Kjo hapësirë s’ka dhoma
+ Ju lutemi, për më tepër hollësi, lidhuni me përgjegjësin e shërbyesit tuaj Home
+ Duket sikur shërbyesi juaj Home nuk mbulon ende Hapësira
+ Ndiheni eksperimentues\?
+\nMund të shtoni te një hapësirë hapësira ekzistuese.
+ Hapësirë Eksperimentale - Shfaq jetimë te Kreu
+ Shtoni dhoma
+ Jeni përgjegjës i kësaj hapësirë, sigurohuni se keni shpërngulur të drejt përgjegjësi te një anëtar tjetër, përpara braktisjes.
+ Kjo hapësirë s’është publike. S’do të jeni në gjendje të rihyni pa një ftesë.
+ Jeni personi i vetëm këtu. Nëse ikni, askush s’do të jetë në gjendje të marrë pjesë në të ardhmen, përfshi ju.
+ Ftojeni te %s
+ Kjo veçori është në fazë beta
+ Jepni Përshtypje
+ Dështoi dërgimi i përshtypjeve (%s)
+ Faleminderit, përshtypjet tuaja u dërguan me sukses
+ Mund të lidheni me mua, nëse keni ndonjë pyetje më tej
+ Po përdorni një version beta të hapësirave. Përshtypjet tuaja do të ndihmojnë në përmirësimin e versioneve të ardhshëm. Platforma dhe emri juaj i përdoruesit do të mbahen shënim, për të na ndihmuar të përdoren përshtypjet tuaja sa më shumë që të jetë e mundur.
+ Përshtypje
+ Përshtypje për hapësirat
+ Na ndjeni, ndodhi një gabim teksa provohej të hyhej te konferenca
+ Dhomë e Paemërtuar
+ Hapësirë private
+ Hapësirë publike
+ Kjo Hapësirë është publike
+ Person i panjohur
+ Shpërngule te %1$s
+ Po konsultohet me %1$s
+ Ky shërbyes është tashmë i pranishëm te lista
+ S’gjendet dot ky shërbyes ose lista e dhomave të tij
+ Jepni emrin e e një shërbyesi të ri që doni të eksploroni.
+ Shtoni shërbyes të ri
+ Shërbyesi juaj
\ No newline at end of file
diff --git a/vector/src/main/res/values-sv/strings.xml b/vector/src/main/res/values-sv/strings.xml
index 0cd51a3f0d..ce65fd9a5a 100644
--- a/vector/src/main/res/values-sv/strings.xml
+++ b/vector/src/main/res/values-sv/strings.xml
@@ -662,7 +662,7 @@
%s försökte ladda en specifik punkt i det här rummets tidslinje, men kunde inte hitta den.Skriv en hemserver att visa listan över offentliga rum frånAlla rum på %s-servern
- Alla %s-rum på Matrix
+ Alla nativa %srum%d rum%d rum
@@ -1712,7 +1712,7 @@
Om de inte matchar så kan kommunikationens säkerhet vara äventyrad.Jag verifierar att nycklarna matcharServern kan vara otillgänglig eller överbelastad
- Hemserver-URL
+ ServernamnSkriv här…%1$s i %2$sNy händelse
@@ -2534,9 +2534,9 @@
RumsadresserRumsåtkomstÄndringar av vilka som kan läsa historik kommer bara gälla för framtida meddelanden i det här rummet. Synligheten för existerande historik kommer att vara oförändrad.
- skickar snö ❄️
+ skickar snöfall ❄️skickar konfetti 🎉
- Skickar det givna meddelandet med snö
+ Skickar det givna meddelandet med snöfallSkickar de givna meddelandet med konfettiRensa historikexternt konto
@@ -2734,7 +2734,7 @@
Varning kräver serverstöd och experimentell rumsversionExperimentellt utrymme - Begränsat rum.Du är inbjuden
- Utrymmen är nya sätt att gruppera rum och personer för arbete, skoj eller bara för dig själv.
+ Utrymmen är ett nytt sätt att gruppera rum och personer.Välkommen till utrymmen!Lägg till existerande rum och utrymmeÄr du säker på att du vill lämna utrymmet\?
@@ -2771,4 +2771,39 @@
Komprimerar bild…Använd som förval och fråga inte igenFråga alltid
+ Vissa rum kan vara dolda för att de är privata och du behöver en inbjudan.
+ Vissa rum kan vara dolda för att de är privata och du behöver en inbjudan.
+\nDu har inte behörighet att lägga till rum.
+ Det här utrymmet har inga rum
+ Vänligen kontakta din hemserveradmin för vidare information
+ Det verkar som att din hemserver inte stöder utrymmen än
+ Känner du dig äventyrlig\?
+\nDu kan lägga till existerande utrymmen till ett utrymme.
+ Experimentellt utrymme - Visa bara övergivna i Hem
+ Lägg till rum
+ Du är administratör för det här utrymmet, se till att du har överfört administratörsrättigheter till en annan medlem innan du lämnar.
+ Det här utrymmet är inte offentligt. Du kommer inte att kunna gå med igen utan en inbjudan.
+ Du är den enda personen här. Om du lämnar så kommer ingen kunna gå med i framtiden, inklusive du.
+ Bjud in till %s
+ Den här funktionen är i beta
+ Ge återkoppling
+ Din återkoppling misslyckades att skickas (%s)
+ Tack, din återkoppling har skickats framgångsrikt
+ Ni kan kontakta mig om ni har några fler frågor
+ Du använder en betaversion av utrymmen. Din återkoppling kommer att hjälpa till att utveckla nästa version. Din plattform och ditt användarnamn kommer att noteras för att hjälpa oss att få så mycket användning för din återkoppling som vi kan.
+ Återkoppling
+ Utrymmesåterkoppling
+ Tyvärr så inträffade ett fel vid försök att gå med i gruppsamtalet
+ Namnlöst rum
+ Privat utrymme
+ Offentligt utrymme
+ Det här utrymmet är offentligt
+ Ökänd person
+ Överför till %1$s
+ Rådfrågar %1$s
+ Den här servern finns redan i listan
+ Kan inte hitta den här servern eller dess rumslista
+ Ange namnet för en ny server du vill utforska.
+ Lägg till en ny server
+ Din server
\ No newline at end of file
diff --git a/vector/src/main/res/values-th/strings.xml b/vector/src/main/res/values-th/strings.xml
index 1fbb9c70c3..a55bb93992 100644
--- a/vector/src/main/res/values-th/strings.xml
+++ b/vector/src/main/res/values-th/strings.xml
@@ -320,4 +320,14 @@
ห้ามผู้ใช้ลายนิ้วมือ (%s):เพิกเฉยผู้ใช้
+ ไม่สามารถอัปเดตรหัสผ่าน
+ อัปเดตรหัสผ่าน
+ ยืนยันรหัสผ่านใหม่
+ รหัสผ่านใหม่
+ รหัสผ่านปัจจุบัน
+ เลือกภาษา
+ ภาษา
+ ค่าใหม่
+ สลับ
+ ไดเรกทอรีห้อง
\ No newline at end of file
diff --git a/vector/src/main/res/values-uk/strings.xml b/vector/src/main/res/values-uk/strings.xml
index 4d8cd05f6e..5c9bf9595e 100644
--- a/vector/src/main/res/values-uk/strings.xml
+++ b/vector/src/main/res/values-uk/strings.xml
@@ -91,7 +91,7 @@
%1$s, %2$s, %3$s та %4$s%1$s, %2$s та %3$s
- Типово
+ ТиповийМодераторАдміністраторВи вилучили %1$s знадіб
@@ -156,8 +156,8 @@
Початкова синхронізація:
\nІмпортування даних облікового запису…Порожня кімната (була %s)
- Власний
- Власний (%1$d)
+ Не типовий
+ Не типовий (%1$d)Ви змінили знадіб %1$s%1$s змінює знадіб %2$sВи оновили кімнату.
@@ -284,7 +284,7 @@
ЗареєструватисяУвійтиВийти
- URL сервера
+ URL-адреса домашнього сервераURL сервера ідентифікаціїПошукПочати новий чат
@@ -325,9 +325,9 @@
Використовувати особливі налаштування сервераПеревірте email для продовження реєстраціїРеєстрація за допомогою Email та номеру телефона водночас поки не підтримується. Лише номер телефону буде додано до облікового запису.\n\nВи можете додати email в налаштуваннях.
- Цей сервер хоче переконатися, що ви не робот
+ Цей домашній сервер хоче переконатися, що ви не роботЛогін вже використовується
- Сервер:
+ Домашній сервер:Сервер ідентифікації:Я перевірив(ла) свою email адресуДля скидання паролю введіть email прив\'язаний до облікового запису:
@@ -603,7 +603,7 @@
Пароль:НадіслатиЗалоговано як
- Cервер
+ Домашній серверСервер ідентифікаціїІнтерфейс користувачаМова
@@ -756,7 +756,7 @@
Вибір каталогу кімнатМожливо сервер недоступний чи перевантаженийВведіть сервер для показу каталогу публічних кімнат
- URL сервера
+ Ім\'я сервераВсі кімнати на сервері %sВсі місцеві кімнати %s
@@ -1005,7 +1005,7 @@
ПрикладID Спільнотиприклад
- Початок
+ ДомівкаЛюдиКімнатиНемає користувачів
@@ -1111,7 +1111,7 @@
Відправити нове пряме повідомленняДодає ¯\\_(ツ)_/¯ перед текстовим повідомленням${app_name} не підтримує повідомлення типу \'%1$s\'
- Відправляє повідомлення розмальоване веселково
+ Надсилає повідомлення розмальоване веселковоРедактор повідомленьВідправляє повідомлення як текст без інтерпретації його як MarkdownПовідомлення…
@@ -1387,7 +1387,7 @@
Немає активних знадобівКерувати інтеграціямиМенеджер інтеграції не налаштовано.
- Читати захищені DRM засоби масової інформації
+ Читати медіа захищені DRMВикористовувати мікрофонВикористовувати камеруЗаблокувати все
@@ -1627,7 +1627,7 @@
Щоб сканувати QR-код необхідно дозволити доступ до камери.Повернутися до викликуТриває відеовиклик…
- Використовуватиме %s допоміжним, коли ваш домашній сервер не пропонує такого (вашу IP-адресу буде надана під час виклику)
+ Застосовуватиме %s допоміжним, коли ваш домашній сервер не пропонує такого (вашу IP-адресу буде надано під час виклику)Дозволити допоміжний сервер викликівВаш пристрій використовує застарілий протокол безпеки TLS, вразливий до атак, для вашої безпеки ви не зможете під\'єднатисяПомилка SSL: особу співрозмовника не підтверджено.
@@ -1642,7 +1642,7 @@
Всі повідомленняВсі повідомлення (гучно)Нехтувати користувача
- Рознехтувати
+ Не нехтуватиПідписАлгоритмВерсія
@@ -1817,9 +1817,9 @@
Надіслано скаргу, як на неприйнятнеЗабагато помилок, вам довелось вийтиНезашифроване
- надсилає сніг ❄️
+ надсилає снігопад ❄️надсилає конфетті 🎉
- Надсилає вказане повідомлення зі снігом
+ Надсилає вказане повідомлення зі снігопадомНадсилає вказане повідомлення з конфеттіПоказати пристрій, з якого ви можете звірити цей сеанс просто зараз
@@ -2058,4 +2058,32 @@
УвійтиУвійти до %1$sУвійти через %s
+ Після увімкнення, шифрування не може бути вимкнено.
+ Увімкнути шифрування
+ Увімкнути шифрування
+ Увімкнути шифрування\?
+ Після увімкнення, шифрування не може бути вимкнено.
+ Надсилає емоджі розмальоване веселково
+ Недавні кімнати
+ Безпосереднє повідомлення
+ Не типовий (%1$d) у %2$s
+ Не типовий
+ %1$s з %2$s до %3$s
+ %1$s змінює рівень доступу %2$s.
+ Ви змінили відеоконференцію
+ %1$s змінює відеоконференцію
+ Ви завершили відеоконфернцію
+ %1$s розпочинає відеоконференцію
+ %1$s завершує відеоконференцію
+ Ви розпочали відеоконференцію
+ Дії адміністратора
+ Запрошення
+ Модератори
+ Адміністратори
+ Залишення кімнати…
+ Типово у %1$s
+ Модератор у %1$s
+ Адміністратор у %1$s
+ Користувачі
+ Запрошення
\ No newline at end of file
diff --git a/vector/src/main/res/values-v23/theme_black.xml b/vector/src/main/res/values-v23/theme_black.xml
deleted file mode 100644
index ad6abc9fbe..0000000000
--- a/vector/src/main/res/values-v23/theme_black.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vector/src/main/res/values-v23/theme_dark.xml b/vector/src/main/res/values-v23/theme_dark.xml
deleted file mode 100644
index c9fb7dab28..0000000000
--- a/vector/src/main/res/values-v23/theme_dark.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vector/src/main/res/values-v27/theme_black.xml b/vector/src/main/res/values-v27/theme_black.xml
deleted file mode 100644
index f8650c7e8b..0000000000
--- a/vector/src/main/res/values-v27/theme_black.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vector/src/main/res/values-v27/theme_dark.xml b/vector/src/main/res/values-v27/theme_dark.xml
deleted file mode 100644
index ef0a39902a..0000000000
--- a/vector/src/main/res/values-v27/theme_dark.xml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vector/src/main/res/values-vi/strings.xml b/vector/src/main/res/values-vi/strings.xml
index 1a55e22451..ec2de261f7 100644
--- a/vector/src/main/res/values-vi/strings.xml
+++ b/vector/src/main/res/values-vi/strings.xml
@@ -549,4 +549,242 @@
Xác minhURL máy chủ nhàLịch sử
+ Bạn có chắc bạn muốn rời khỏi phòng không\?
+ Rời khỏi phòng
+
+ %d ngày
+
+
+ %d tiếng
+
+
+ %d phút
+
+
+ %d giây
+
+ 1 thành viên
+
+ %d thành viên
+
+
+ %d thành viên hoạt động
+
+ Thêm thành viên
+ Trò chuyện mới
+ Thêm một máy chủ danh tính trong cài đặt của bạn để thực hiện hành động này.
+ Đây là một bản xem trước của phòng này. Các sự tương tác phòng đã bị tắt.
+ một phòng
+ Bạn đang cố truy cập %s. Bạn có muốn tham gia để tham dự vào cuộc thảo luận không\?
+ Lời mời này đã được gửi đến %s, nó không được liên kết với tài khoản này.
+\nBạn có thể muốn đăng nhập bằng một tài khoản khác, hoặc thêm email này vào tài khoản của bạn.
+ Bạn đã được %s mời tham gia phòng này
+ Nhảy đến tin nhắn chưa đọc đầu tiên.
+ Đang đồng bộ…
+ Mở tiêu đề
+ Liệt kê các thành viên
+ Từ chối
+ Xem trước
+ Tham gia
+ Xoá
+ Tiếp tục
+ KHÔNG
+ CÓ
+ Lưu vào mục tải xuống\?
+ Đã lưu
+ Cho phép quyền truy cập danh bạ của bạn.
+ Để quét mã QR, bạn cần cho phép quyền truy cập máy ảnh.
+ Xin lỗi. Hành động không được thực hiện do thiếu quyền
+ ${app_name} có thể kiểm tra sổ địa chỉ của bạn để tìm những người dùng Matrix khác dựa trên email và số điện thoại của họ.
+\n
+\nBạn có đồng ý chia sẻ sổ địa chỉ của bạn vì mục đích này không\?
+ ${app_name} có thể kiểm tra sổ địa chỉ của bạn để tìm những người dùng Matrix khác dựa trên email và số điện thoại của họ. Nếu bạn đồng ý chia sẻ sổ địa chỉ vì mục đích này, vui lòng cho phép quyền truy cập trên cửa sổ popup tiếp theo.
+ ${app_name} cần quyền truy cập máy ảnh và micro của bạn để thực hiện các cuộc gọi video.
+\n
+\nVui lòng cho phép quyền truy cập trên các cửa sổ popup tiếp theo để có thể thực hiện cuộc gọi.
+ "
+\n
+\nVui lòng cho phép quyền truy cập trên cửa sổ popup tiếp theo để có thể thực hiện cuộc gọi."
+ ${app_name} cần quyền truy cập micro của bạn để thực hiện các cuộc gọi âm thanh.
+ "
+\n
+\nVui lòng cho phép quyền truy cập trên cửa sổ popup tiếp theo để có thể thực hiện cuộc gọi."
+ ${app_name} cần quyền truy cập máy ảnh để chụp ảnh và thực hiện các cuộc gọi video.
+ ${app_name} cần quyền truy cập thư viện ảnh và video của bạn để gửi và lưu các tệp đính kèm.
+\n
+\nVui lòng cho phép quyền truy cập trên cửa sổ popup tiếp theo để có thể gửi các tệp từ điện thoại của bạn.
+ Thông tin
+ Không thể quay video
+ Chụp ảnh hoặc quay video
+ cuộc gọi đã được trả lời ở nơi khác
+ Không thể khởi tạo máy ảnh
+ Kết nối phương tiện thất bại
+ Bên ở xa không thể nhấc máy.
+ Giữ máy
+ Bạn đã giữ máy
+ %s đã giữ máy
+ Tiếp tục
+ Quay về cuộc gọi
+ Cuộc gọi đang hoạt động (%s)
+ Cuộc gọi video đang diễn ra…
+ Cuộc gọi đang diễn ra…
+ Cuộc gọi thoại đến
+ Cuộc gọi video đến
+ Cuộc gọi đến
+ Đang gọi…
+ Cuộc gọi đã kết thúc
+ Sẽ sử dụng %s làm hỗ trợ khi máy chủ nhà không có một máy chủ (địa chỉ IP của bạn sẽ được chia sẻ trong cuộc gọi)
+ Cho phép máy chủ hỗ trợ cuộc gọi dự phòng
+ Cuộc gọi
+ Hôm qua
+ %1$d phút %2$d giây
+ %d giây
+ Huỷ tải lên\?
+ Huỷ tải xuống\?
+ Nhỏ
+ Trung bình
+ Lớn
+ Nguyên gốc
+ Gửi dưới dạng
+
+ %d thay đổi thành viên
+
+ Danh sách nhóm
+ Danh sách xác nhận đã đọc
+ Vui lòng khởi chạy ${app_name} trên một thiết bị khác mà có thể giải mã tin nhắn để nó có thể gửi các mã khoá vào phiên làm việc này.
+ Đã gửi yêu cầu
+ Đã gửi yêu cầu mã khoá.
+ Yêu cầu lại các mã khoá mã hoá từ các phiên làm việc khác của bạn.
+ Liên kết email mà chưa được nhấn vào
+ Quá nhiều yêu cầu đã được gửi
+ Đã không chứa JSON hợp lệ
+ Token truy cập được chỉ định đã không được nhận ra
+ Không được uỷ quyền, thiếu thông tin xác thực hợp lệ
+ Không thể kết nối đến máy chủ nhà tại URL này, vui lòng kiểm tra nó
+ Vui lòng nhập URL hợp lệ
+ Không thể đăng ký: lỗi sở hữu email
+ Vui lòng xem xét và chấp nhận chính sách của máy chủ nhà này:
+ Mật khẩu của bạn đã được đặt lại.
+\n
+\nBạn đã bị đăng xuất ra khỏi tất cả phiên làm việc và sẽ không nhận thông báo đẩy nữa. Để bật lại thông báo, hãy đăng nhập lại trên mỗi thiết bị.
+ Xác minh địa chỉ email thất bại: hãy chắc chắn là bạn đã nhấn vào liên kết trong email
+ Hiện tất cả phòng trong thư mục phòng, bao gồm cả các phòng có nội dung phản cảm.
+ Hiện các phòng có nội dung phản cảm
+ Thư mục phòng
+ Mặc định hệ thống
+ Bạn đã bật mã hoá đầu cuối (thuật toán không được nhận ra %1$s).
+ %1$s đã bật mã hoá đầu cuối (thuật toán không được nhận ra %2$s).
+ Bạn đã bật mã hoá đầu cuối.
+ %1$s đã bật mã hoá đầu cuối.
+ Bạn đã ngăn chặn khách tham gia phòng.
+ %1$s đã ngăn chặn khách tham gia phòng.
+ Bạn đã ngăn chặn khách tham gia phòng.
+ %1$s đã ngăn chặn khách tham gia phòng.
+ Bạn đã cho phép khách tham gia vào đây.
+ %1$s đã cho phép khách tham gia vào đây.
+ Bạn đã cho phép khách tham gia phòng.
+ %1$s đã cho phép khách tham gia phòng.
+ Bạn đã thay đổi các địa chỉ cho phòng này.
+ %1$s đã thay đổi các địa chỉ cho phòng này.
+ Bạn đã thay đổi các địa chỉ chính và thay thế cho phòng này.
+ %1$s đã thay đổi các địa chỉ chính và thay thế cho phòng này.
+ Bạn đã thay đổi các địa chỉ thay thế cho phòng này.
+ %1$s đã thay đổi các địa chỉ thay thế cho phòng này.
+
+ Bạn đã xoá các địa chỉ thay thế %1$s cho phòng này.
+
+
+ %1$s đã xoá các địa chỉ thay thế %2$s cho phòng này.
+
+
+ Bạn đã thêm các địa chỉ thay thế %1$s cho phòng này.
+
+
+ %1$s đã thêm các địa chỉ thay thế %2$s cho phòng này.
+
+ Bạn đã xoá địa chỉ chính cho phòng này.
+ %1$s đã xoá địa chỉ chính cho phòng này.
+ Bạn đã đặt địa chỉ chính cho phòng này thành %1$s.
+ %1$s đã đặt địa chỉ chính cho phòng này thành %2$s.
+ Bạn đã thêm %1$s và xoá %2$s với tư cách là các địa chỉ cho phòng này.
+ %1$s đã thêm %2$s và xoá %3$s với tư cách là các địa chỉ cho phòng này.
+
+ Bạn đã xoá %1$s với tư cách là các địa chỉ cho phòng này.
+
+
+ %1$s đã xoá %2$s với tư cách là các địa chỉ cho phòng này.
+
+
+ Bạn đã thêm %1$s làm các địa chỉ cho phòng này.
+
+
+ %1$s đã thêm %2$s làm các địa chỉ cho phòng này.
+
+ Bạn đã rút lại lời mời của %1$s. Lý do: %2$s
+ %1$s đã rút lại lời mời của %2$s. Lý do: %3$s
+ Bạn đã chấp nhận lời mời đối với %1$s. Lý do: %2$s
+ %1$s đã chấp nhận lời mời đối với %2$s. Lý do: %3$s
+ Bạn đã thu hồi lời mời để %1$s tham gia phòng. Lý do: %2$s
+ %1$s đã thu hồi lời mời để %2$s tham gia phòng. Lý do: %3$s
+ Bạn đã gửi lời mời đến %1$s để tham gia phòng. Lý do: %2$s
+ %1$s đã gửi lời mời đến %2$s để tham gia phòng. Lý do: %3$s
+ Bạn đã cấm %1$s. Lý do: %2$s
+ %1$s đã cấm %2$s. Lý do: %3$s
+ Bạn đã bỏ cấm %1$s. Lý do: %2$s
+ %1$s đã bỏ cấm %2$s. Lý do: %3$s
+ Bạn đã đá %1$s. Lý do: %2$s
+ %1$s đã đá %2$s. Lý do: %3$s
+ Bạn đã từ chối lời mời. Lý do: %1$s
+ %1$s đã từ chối lời mời. Lý do: %2$s
+ Bạn đã rời đi. Lý do: %1$s
+ %1$s đã rời đi. Lý do: %2$s
+ Bạn đã tham gia. Lý do: %1$s
+ %1$s đã tham gia. Lý do: %2$s
+ Bạn đã tham gia phòng. Lý do: %1$s
+ %1$s đã tham gia phòng. Lý do: %2$s
+ %1$s đã mời bạn. Lý do: %2$s
+ Bạn đã mời %1$s. Lý do: %2$s
+ %1$s đã mời %2$s. Lý do: %3$s
+ Lời mời của bạn. Lý do: %1$s
+ Lời mời của %1$s. Lý do: %2$s
+ Xoá hàng chờ gửi
+ Đang gửi tin nhắn…
+ Đã gửi tin nhắn
+ Đồng bộ ban đầu:
+\nĐang nhập dữ liệu tài khoản
+ Đồng bộ ban đầu:
+\nĐang nhập các cộng đồng
+ Đồng bộ ban đầu:
+\nĐang nhập các phòng đã rời khỏi
+ Đồng bộ ban đầu:
+\nĐang nhập các phòng đã mời vào
+ Đồng bộ ban đầu:
+\nĐang nhập các phòng đã tham gia
+ Đồng bộ ban đầu:
+\nĐang nhập các phòng
+ Đồng bộ ban đầu:
+\nĐang nhập mã hoá
+ Đồng bộ ban đầu:
+\nĐang nhập tài khoản…
+ Đồng bộ ban đầu:
+\nĐang tải xuống dữ liệu…
+ Đồng bộ ban đầu:
+\nĐang đợi phản hồi từ máy chủ…
+ Phòng trống (đã là %s)
+ Phòng trống
+
+ %1$s và %2$d người khác
+
+
+ %1$s, %2$s, %3$s và %4$d người khác
+
+ %1$s, %2$s, %3$s và %4$s
+ %1$s, %2$s và %3$s
+ %1$s và %2$s
+ Lời mời vào phòng
+ Lời mời từ %s
+ • Máy chủ khớp với IP bây giờ sẽ bị cấm.
+ • Máy chủ khớp với IP bây giờ sẽ được cho phép.
+ • Máy chủ khớp với IP bị cấm.
+ • Máy chủ khớp với IP được cho phép.
\ No newline at end of file
diff --git a/vector/src/main/res/values-zh-rCN/strings.xml b/vector/src/main/res/values-zh-rCN/strings.xml
index 82ec8fc36d..d3cc148943 100644
--- a/vector/src/main/res/values-zh-rCN/strings.xml
+++ b/vector/src/main/res/values-zh-rCN/strings.xml
@@ -3,7 +3,7 @@
%1$s 发送了一张图片。%s 的邀请%1$s 邀请了 %2$s
- %1$s 邀请了您
+ %1$s 邀请了你%1$s 加入了聊天室%1$s 离开了聊天室%1$s 拒绝了邀请
@@ -73,7 +73,7 @@
初始化同步:
\n正在导入已离开的聊天室初始化同步:
-\n正在导入社区
+\n正在导入社群
初始化同步:
\n正在导入账号数据%s 升级了此聊天室。
@@ -82,7 +82,7 @@
%1$s 撤回了对 %2$s 加入聊天室的邀请%1$s 的邀请。理由:%2$s%1$s 邀请了 %2$s。理由:%3$s
- %1$s 邀请了您。理由:%2$s
+ %1$s 邀请了你。理由:%2$s%1$s 加入了聊天室。理由:%2$s%1$s 离开了聊天室。理由:%2$s%1$s 已拒绝邀请。理由:%2$s
@@ -100,107 +100,107 @@
%1$s 移除了 %2$s 作为此聊天室额地址。%1$s 为此聊天室新增了 %2$s 并移除 %3$s 地址。
- %1$s 将此聊天室的主地址设为了 %2$s。
- %1$s 为此聊天室移除了主地址。
+ %1$s 将此聊天室的主要地址设为了 %2$s。
+ %1$s 为此聊天室移除了主要地址。%1$s 已允许访客加入聊天室。%1$s 已禁止访客加入聊天室。%1$s 已开启端对端加密。%1$s 已开启端对端加密(无法识别的演算法 %2$s)。%1$s 创建了这个聊天室
- 您发送了一张图片。
- 您发送了一张贴纸。
- 您的邀请
- 您创建了这个聊天室
- 您邀请了 %1$s
- 您加入了聊天室
- 您离开了聊天室
- 您拒绝了邀请
- 您移除了 %1$s
- 您解封了 %1$s
- 您封禁了 %1$s
- 您撤回了对 %1$s 的邀请
- 您更换了您的头像
- 您将您的昵称设置为 %1$s
- 您将您的昵称从 %1$s 改为 %2$s
- 您移除了您的昵称 (%1$s)
- 您把主题改为:%1$s
- %1$s 变更了聊天室头像
- 您变更了聊天室头像
- 您把聊天室名称改为:%1$s
- 您发起了一次视频通话。
- 您发起了一次语音通话。
+ 你发送了一张图片。
+ 你发送了一张贴纸。
+ 你的邀请
+ 你创建了这个聊天室
+ 你邀请了 %1$s
+ 你加入了聊天室
+ 你离开了聊天室
+ 你拒绝了邀请
+ 你移除了 %1$s
+ 你解封了 %1$s
+ 你封禁了 %1$s
+ 你撤回了对 %1$s 的邀请
+ 你更换了你的头像
+ 你将你的昵称设置为 %1$s
+ 你将你的昵称从 %1$s 改为 %2$s
+ 你移除了你的昵称 (%1$s)
+ 你把主题改为:%1$s
+ %1$s 更改了聊天室头像
+ 你更改了聊天室头像
+ 你把聊天室名称改为:%1$s
+ 你发起了一次视频通话。
+ 你发起了一次语音通话。%s 发送了数据以建立通话。
- 您发送了数据以建立通话。
- 您接听了通话。
- 您结束了通话。
- 您已让未来的聊天室记录对 %1$s 可见
- 您开启了端对端加密(%1$s)
- 您升级了此聊天室。
- 您请求了 VoIP 会议
- 您移除了聊天室名称
- 您移除了聊天室主题
+ 你发送了数据以建立通话。
+ 你接听了通话。
+ 你结束了通话。
+ 你已让未来的聊天室记录对 %1$s 可见
+ 你开启了端对端加密(%1$s)
+ 你升级了此聊天室。
+ 你请求了 VoIP 会议
+ 你移除了聊天室名称
+ 你移除了聊天室主题%1$s 移除了聊天室头像
- 您移除了聊天室头像
- 您更新了您的资料 %1$s
- 您向 %1$s 发送了加入聊天室的邀请
- 您已撤回了对 %1$s 加入聊天室的邀请
- 您接受了 %1$s 的邀请
+ 你移除了聊天室头像
+ 你更新了你的资料 %1$s
+ 你向 %1$s 发送了加入聊天室的邀请
+ 你已撤回了对 %1$s 加入聊天室的邀请
+ 你接受了 %1$s 的邀请%1$s 添加了 %2$s 挂件
- 您添加了 %1$s 挂件
+ 你添加了 %1$s 挂件%1$s 移除了 %2$s 挂件
- 您移除了 %1$s 挂件
+ 你移除了 %1$s 挂件%1$s 修改了 %2$s 挂件
- 您修改了 %1$s 挂件
+ 你修改了 %1$s 挂件管理员审核员默认自定义(%1$d)自定义
- 您更改了%1$s 的权力等级。
+ 你更改了%1$s 的权力等级。%1$s 更改了 %2$s 的权力等级。%1$s 从 %2$s 到 %3$s
- 您的邀请。理由:%1$s
- 您邀请了 %1$s。理由:%2$s
- 您加入了聊天室。理由:%1$s
- 您离开了聊天室。理由:%1$s
- 您拒绝了邀请。理由:%1$s
- 您踢走了 %1$s。理由:%2$s
- 您解封了 %1$s。理由:%2$s
- 您封禁了 %1$s。理由:%2$s
- 您已发送邀请给 %1$s 来加入聊天室。理由:%2$s
- 您撤销了 %1$s 加入聊天室的邀请。理由:%2$s
- 您接受了 %1$s 的邀请。理由:%2$s
- 您撤回了 %1$s 的邀请。理由:%2$s
+ 你的邀请。理由:%1$s
+ 你邀请了 %1$s。理由:%2$s
+ 你加入了聊天室。理由:%1$s
+ 你离开了聊天室。理由:%1$s
+ 你拒绝了邀请。理由:%1$s
+ 你踢走了 %1$s。理由:%2$s
+ 你解封了 %1$s。理由:%2$s
+ 你封禁了 %1$s。理由:%2$s
+ 你已发送邀请给 %1$s 来加入聊天室。理由:%2$s
+ 你撤销了 %1$s 加入聊天室的邀请。理由:%2$s
+ 你接受了 %1$s 的邀请。理由:%2$s
+ 你撤回了 %1$s 的邀请。理由:%2$s
- 您新增了 %1$s 为此聊天室的地址。
+ 你新增了 %1$s 为此聊天室的地址。
- 您移除了此聊天室的 %1$s 地址。
+ 你移除了此聊天室的 %1$s 地址。
- 您为此聊天室新增了 %1$s 并移除了 %2$s 地址。
- 您将此聊天室的主地址设为了 %1$s。
- 您移除了此聊天室的主地址。
- 您已允许访客加入聊天室。
- 您已禁止访客加入聊天室。
- 您已开启端对端加密。
- 您已开启端对端加密(无法识别的算法 %1$s)。
- 您已离开。理由:%1$s
+ 你为此聊天室新增了 %1$s 并移除了 %2$s 地址。
+ 你将此聊天室的主要地址设为了 %1$s。
+ 你移除了此聊天室的主要地址。
+ 你已允许访客加入聊天室。
+ 你已禁止访客加入聊天室。
+ 你已开启端对端加密。
+ 你已开启端对端加密(无法识别的算法 %1$s)。
+ 你已离开。理由:%1$s%1$s 已离开。理由:%2$s
- 您已加入。理由:%1$s
+ 你已加入。理由:%1$s%1$s 已加入。理由:%2$s
- 您撤回了对 %1$s 的邀请
+ 你撤回了对 %1$s 的邀请%1$s 撤回了对 %2$s 的邀请
- 您邀请了 %1$s
+ 你邀请了 %1$s%1$s 邀请了 %2$s
- 您在此处升级。
+ 你在此处升级。%s 在此处升级。
- 您使未来的消息对 %1$s 可见
+ 你使未来的消息对 %1$s 可见%1$s 使未来的消息对 %2$s 可见
- 您离开了聊天室
+ 你离开了聊天室%1$s 离开了聊天室
- 您已加入
+ 你已加入%1$s 已加入
- 您创建了讨论
+ 你创建了讨论%1$s 创建了讨论你已阻止客人加入房间。%1$s已阻止客人加入房间。
@@ -240,12 +240,12 @@
加入查看拒绝
- %s 邀请您加入这个聊天室
+ %s 邀请你加入这个聊天室新的聊天添加成员退出聊天室
- 您确定要退出聊天室吗?
- 您确定要把 %s 从这个聊天中移除吗?
+ 你确定要退出聊天室吗?
+ 你确定要把 %s 从这个聊天中移除吗?在线离线搜索
@@ -263,8 +263,8 @@
登出禁用警告
- 请描述您遇到的问题。您做了什么?您期望发生什么?实际上发生了什么?
- 在这里描述您的问题
+ 请描述你遇到的问题。你做了什么?你期望发生什么?实际上发生了什么?
+ 在这里描述你的问题进度(%s%%)主服务器 URL身份服务器 URL
@@ -282,7 +282,7 @@
电子邮箱地址(可选)手机号码手机号码(可选)
- 确认您的新密码
+ 确认你的新密码用户名和/或密码错误用户名仅可由字母、数字、点、连字符与下划线组成密码太短(至少 6 位)
@@ -298,8 +298,8 @@
主服务器:身份服务器:我已验证了我的电子邮箱地址
- 要重置您的密码,请输入与您的账号关联的电子邮箱地址:
- 必须输入与您账号关联的电子邮箱地址。
+ 要重置你的密码,请输入与你的账号关联的电子邮箱地址:
+ 必须输入与你账号关联的电子邮箱地址。必须输入新密码。URL 必须以 http[s]:// 开头无法登录:网络错误
@@ -353,7 +353,7 @@
新密码确认新密码密码更新失败
- 您的密码已更新
+ 你的密码已更新手机号码Curve25519 认证密钥算法
@@ -384,23 +384,23 @@
拍摄照片或视频重复密码使用自定义服务器选项(高级)
- 请检查您的电子邮箱以继续注册
- 此主服务器想确认您不是机器人
+ 请检查你的电子邮箱以继续注册
+ 此主服务器想确认你不是机器人一封电子邮件已发送至 %s。点击了其中的链接后,请点击下面。
- 电子邮箱地址验证失败:请确保您已点击邮件中的链接
- 密码已重置。
+ 电子邮箱地址验证失败:请确保你已点击邮件中的链接
+ 密码已重置。
\n
-\n您已经退出所有会话,将不再收到推送通知。要重新启用通知,请在每台设备上重新登录。
+\n你已经退出所有会话,将不再收到推送通知。要重新启用通知,请在每台设备上重新登录。原始%d 秒通话已连接通话正在连接…
- 为发送或保存附件,${app_name} 需要权限以访问您的图片和视频库。
+ 为发送或保存附件,${app_name} 需要权限以访问你的图片和视频库。
\n
\n请在接下来的弹出窗口中授权允许访问,以便从此设备中发送文件。
- ${app_name} 需要权限来访问您的相机,以拍摄照片或进行视频通话。
- ${app_name} 需要权限以访问您的麦克风来进行语音通话。
- 您试图访问聊天室 %s。您是否愿意加入这个聊天室?
+ ${app_name} 需要权限来访问你的相机,以拍摄照片或进行视频通话。
+ ${app_name} 需要权限以访问你的麦克风来进行语音通话。
+ 你试图访问聊天室 %s。你是否愿意加入这个聊天室?管理工具私聊设备列表
@@ -417,7 +417,7 @@
用户 ID,姓名或电子邮箱提及显示设备列表
- 您确定要邀请 %s 到这个聊天吗?
+ 你确定要邀请 %s 到这个聊天吗?本地联系人(%d 个)%1$s 和 %2$s 正在输入…%1$s 和 %2$s 及其他人正在输入…
@@ -431,7 +431,7 @@
重新发送未发送的消息删除未发送的消息文件未找到
- 您没有发送到这个聊天室的权限
+ 你没有发送到这个聊天室的权限信任不信任注销
@@ -442,7 +442,7 @@
设置已邀请已加入
- 您要隐藏所有来自这个用户的消息吗?
+ 你要隐藏所有来自这个用户的消息吗?
\n
\n注意,此操作会重启应用并将花费一些时间。取消上传
@@ -472,8 +472,8 @@
通知已忽略的用户通讯录权限
- 这个操作需要额外的身份认证。
-\n请输入您的密码以继续。
+ 这个操作需要额外的身份认证。
+\n请输入你的密码以继续。身份认证当前密码是否重新显示所有来自 %s 的消息?
@@ -485,7 +485,7 @@
手机验证我们已经发送了一条含有一个激活码的短信。请在下面输入这个激活码。输入激活码
- 在验证您的手机号码的时候发生了错误
+ 在验证你的手机号码的时候发生了错误聊天室名称主题把这个聊天室列在聊天室目录中
@@ -505,7 +505,7 @@
地址这些是实验性功能,可能会出现不可预料的错误。请谨慎使用。端对端加密
- 您需要注销以启用加密。
+ 你需要注销以启用加密。对于当前会话,从在不此聊天室中向未验证的设备发送加密消息。这个聊天室没有本地地址新地址(例如 #foo:matrix.org)
@@ -549,22 +549,22 @@
\n请以 %1$s 或 %2$s 的形式加入语音视频
- 您需要在此聊天室中发起会议的权限
+ 你需要在此聊天室中发起会议的权限仍然发送问题反馈
- 为分析此问题,本客户端的日志将会随此问题反馈发送。本问题反馈,包括日志与截图,将不会被公开显示。若您希望仅发送上面的文字,请取消选择:
+ 为分析此问题,本客户端的日志将会随此问题反馈发送。本问题反馈,包括日志与截图,将不会被公开显示。若你希望仅发送上面的文字,请取消选择:问题反馈发送成功问题反馈发送失败(%s)阅读无效令牌在新的 API 出现之前,尚不支持同时使用电子邮件和电话号码注册,所以只有电话号码会被记录。
\n
-\n在设置中,您可以在个人资料里添加您的电子邮件。
+\n在设置中,你可以在个人资料里添加你的电子邮件。用户名已被使用无法注册:电子邮箱所有权验证失败无法识别指定的访问令牌异常的 JSON
- 您还未点击电子邮件链接
+ 你还未点击电子邮件链接%1$d 分钟 %2$d 秒正在呼叫…呼入的通话
@@ -582,19 +582,19 @@
"
\n
\n请在接下来弹出的窗口中授权允许访问。"
- ${app_name} 需要权限以访问您的摄像机和麦克风来进行视频通话。
+ ${app_name} 需要权限以访问你的摄像机和麦克风来进行视频通话。
\n
\n请在接下来的弹出窗口中授权允许访问,以便进行通话。对不起。因为权限不足,操作已取消保存至下载?移除此邀请已发送至未与此账号关联的 %s。
-\n您可能希望用一个不同的账号登录,或者把这个电子邮箱加入到你的账号。
+\n你可能希望用一个不同的账号登录,或者把这个电子邮箱加入到你的账号。这是此聊天室的预览。与聊天室的交互已禁用。通话
- 您将不能撤销这个修改,因为您正在让这个用户和您拥有相同的特权级别。
-\n您确定吗?
- 这可能意味着有人正在恶意劫持您的流量,或者您的手机不信任远程服务器提供的数字证书。
+ 你将不能撤销这个修改,因为你正在让这个用户和你拥有相同的特权级别。
+\n你确定吗?
+ 这可能意味着有人正在恶意劫持你的流量,或者你的手机不信任远程服务器提供的数字证书。如果服务器管理员说这是预期的情况,请确保下面的指纹与管理员提供的指纹相匹配。报告这个内容的原因目录
@@ -611,13 +611,13 @@
其他通知目标登录为
- 请检查您的电子邮箱并点击里面包含的链接。完成时请点击继续。
- 无法验证电子邮箱地址。请检查您的邮件并点击其中的链接。完成后,请点击“继续”。
+ 请检查你的电子邮箱并点击里面包含的链接。完成时请点击继续。
+ 无法验证电子邮箱地址。请检查你的邮件并点击其中的链接。完成后,请点击“继续”。此电子邮箱地址已被使用。找不到此电子邮箱地址。此手机号码已被使用。
- 您确认要移除此通知目标吗?
- 您确认要移除 %1$s %2$s 吗?
+ 你确认要移除此通知目标吗?
+ 你确认要移除 %1$s %2$s 吗\?无效的已选国家的手机号码聊天室图片聊天室标签
@@ -627,10 +627,10 @@
无要链接一个聊天室,必须有一个地址。仅向已验证的设备发送加密消息
- 您没有指定此聊天室的主地址。
- 主地址警告
- 设置为主地址
- 取消设置为主地址
+ 你没有指定此聊天室的主要地址。
+ 主要地址警告
+ 设置为主要地址
+ 取消设置为主要地址复制聊天室 ID复制聊天室地址声称的 Ed25519 指纹密钥
@@ -640,17 +640,17 @@
移出黑名单确认移除
- 您似乎沮丧地摇了摇手机。您想打开问题反馈界面吗?
+ 你似乎沮丧地摇了摇手机。你想打开问题反馈界面吗?发送至已读标签清单发送为
- ${app_name} 可以检查您的通讯录,并基于他们的邮箱地址和电话号码,来查找其他 Matrix 用户。若您同意本应用以此目的访问您的通讯录,请在接下来的弹出窗口中授权允许访问。
- ${app_name} 可以检查您的通讯录,并基于他们的邮箱地址和电话号码,来查找其他 Matrix 用户。
+ ${app_name} 可以检查你的通讯录,并基于他们的邮箱地址和电话号码,来查找其他 Matrix 用户。若你同意本应用以此目的访问你的通讯录,请在接下来的弹出窗口中授权允许访问。
+ ${app_name} 可以检查你的通讯录,并基于他们的邮箱地址和电话号码,来查找其他 Matrix 用户。
\n
-\n您是否同意本应用以此目的访问您的通讯录\?
+\n你是否同意本应用以此目的访问你的通讯录\?空闲仅 Matrix 用户
- 证书已从一个先前受您的设备信任的证书更改为另一个。这非常反常!建议您不要接受此新证书。
+ 证书已从一个先前受你的设备信任的证书更改为另一个。这非常反常!建议你不要接受此新证书。证书已从曾受信任的证书更改为不受信任的证书。服务器可能已更新其证书,请联系管理员并核对服务器的指纹。请仅在服务器管理员发布了与上述指纹匹配的指纹的情况下接受该证书。成员
@@ -675,10 +675,10 @@
%s 已尝试在这个聊天室的时间线上加载一个特定的时间点,但无法找到它。公开名称为验证此设备是否可信,请通过其他方式(例如面对面交换或拨打电话)与其拥有者联系,并询问他们该设备的用户设置中的密钥是否与以下密钥匹配:
- 如果它们不匹配,您通讯的安全性可能会受到影响。
+ 如果它们不匹配,你通讯的安全性可能会受到影响。这个聊天室包含未经验证的未知设备。
\n这意味着无法保证该设备属于其声称的用户。
-\n我们建议您在继续操作之前,先验证每个设备,但如果您愿意也可以不验证而重新发送消息。
+\n我们建议你在继续操作之前,先验证每个设备,但如果你愿意也可以不验证而重新发送消息。
\n
\n未知设备:历史消息
@@ -701,7 +701,7 @@
只显示 Matrix 联系人没有对话没有结果
- 您没有授予 ${app_name} 访问本地通讯录的权限
+ 你没有授予 ${app_name} 访问本地通讯录的权限聊天室聊天室目录
@@ -715,7 +715,7 @@
选择一个聊天室目录服务器可能不可用或过载请输入一个要列出公共聊天室的主服务器
- 主服务器 URL
+ 服务器名称%s 服务器上的所有聊天室所有本地 %s 聊天室
@@ -727,7 +727,7 @@
输入聊天室 ID 或者聊天室别名跳到第一条未读消息。主页显示
- 置顶含有错过的通知的聊天室
+ 固定含错过通知的聊天室置顶含有未读消息的聊天室用户界面语言
@@ -758,16 +758,16 @@
黑色主题通知声音使用12小时制显示时间戳
- 您需要权限来管理这个聊天室的挂件
+ 你需要权限来管理这个聊天室的挂件创建挂件失败用 jitsi 创建会议通话
- 您确定要删除这个挂件吗?
+ 你确定要删除这个挂件吗?无法创建挂件。发送请求失败。特权级别必须是正整数。
- 您不在这个聊天室。
- 您没有在当前聊天室中执行此操作的权限。
+ 你不在这个聊天室。
+ 你没有在当前聊天室中执行此操作的权限。请求中缺失 room_id。请求中缺失 user_id。聊天室 %s 不可见。
@@ -777,8 +777,8 @@
通话包含我昵称的消息包含我用户名的消息
- 您添加了一个新设备 “%s”,它正在请求加密密钥。
- 您有一台未验证设备 “%s” 正在请求加密密钥。
+ 你添加了一个新设备 “%s”,它正在请求加密密钥。
+ 你有一台未验证设备 “%s” 正在请求加密密钥。开始验证不验证而分享忽略请求
@@ -802,9 +802,9 @@
正在加载…退出邀请
- 您确定要与 %s 发起新的聊天吗?
- 您确定要发起语音通话吗?
- 您确定要发起视频通话吗?
+ 你确定要与 %s 发起新的聊天吗?
+ 你确定要发起语音通话吗?
+ 你确定要发起视频通话吗?封禁踢掉将从聊天室中踢掉他们并阻止他们再次加入。全部消息只限提及
@@ -821,11 +821,11 @@
重新加入忘记聊天室所有消息(响铃)
- 社区信息
+ 社群信息操作
- 社区
- 按社区名称过滤
- 社区
+ 社群
+ 按社群名称过滤
+ 社群没有群组摇一摇快捷反馈问题群组列表
@@ -839,12 +839,12 @@
%d 位成员
- 社区 ID 无效
- “%s” 不是有效的社区 ID
+ 社群 ID 无效
+ “%s” 不是有效的社群 ID%d 条未读消息
- 创建社区
+ 创建社群显示成员显示顶栏
@@ -860,8 +860,8 @@
已启用 %d 个挂件
- 社区名称
- 社区 ID
+ 社群名称
+ 社群 ID主页用户聊天室
@@ -869,10 +869,10 @@
没有用户已加入已邀请
- 过滤社区成员
- 过滤社区聊天室
- 您已被 %2$s 从 %1$s 中移除
- 您已被 %2$s 从 %1$s 中封禁
+ 过滤社群成员
+ 过滤社群聊天室
+ 你已被 %2$s 从 %1$s 中移除
+ 你已被 %2$s 从 %1$s 中封禁理由:%1$s头像已读提示头像
@@ -885,14 +885,14 @@
%d 条未读消息通知隐私
- ${app_name} 可以在后台运行以安全隐密地管理您的通知(这可能会影响电池消耗)。
+ ${app_name} 可以在后台运行以安全隐密地管理你的通知(这可能会影响电池消耗)。获取权限选择其他选项• 通知通过 Firebase Cloud Messaging 发送• 通知只含有元数据• 通知不会显示消息内容
- 新的社区 ID(如 +foo:matrix.org)
- 社区管理员没有提供这个社区的具体描述。
+ 新的社群 ID(如 +foo:matrix.org)
+ 社群管理员没有提供这个社群的具体描述。标准低隐私模式停用账号
@@ -902,26 +902,26 @@
请允许资料分析以帮助我们改进 ${app_name}。是的,我愿意帮助!停用账号
- 这将使您的账号永远不再可用。您将无法登录,也不能使用相同的用户 ID 重新注册。您的账号将退出所有已加入的聊天室,您在身份服务器上的账号信息也会被删除。此操作是不可逆的。
+ 这将使你的账号永远不再可用。你将无法登录,也不能使用相同的用户 ID 重新注册。你的账号将退出所有已加入的聊天室,你在身份服务器上的账号信息也会被删除。此操作是不可逆的。
\n
-\n停用您的账号不会默认忘记您已发送的消息。如果您希望我们忘记您发送的消息,请勾选下面的选择框。
+\n停用你的账号不会默认忘记你已发送的消息。如果你希望我们忘记你发送的消息,请勾选下面的选择框。
\n
-\nMatrix 中的消息可见性类似于电子邮件。我们忘记您的消息意味着您发送的消息不会被发给新注册或未注册的用户,但是已收到您的消息的注册用户依旧可以看到这些消息的副本。
+\nMatrix 中的消息可见性类似于电子邮件。我们忘记你的消息意味着你发送的消息不会被发给新注册或未注册的用户,但是已收到你的消息的注册用户依旧可以看到这些消息的副本。请在我停用账号的同时忘记我发送的所有消息(警告:这将导致未来的用户看到残缺的对话)
- 请输入您的密码以继续:
+ 请输入你的密码以继续:停用账号发送贴纸发送贴纸
- 您目前没有启用任何贴纸包。
+ 你目前没有启用任何贴纸包。
\n
\n要添加一些吗?• 通知中的消息内容直接从 Matrix 主服务器安全地获取• 通知含有消息与元数据
- 此聊天室不会显示任何社区徽章
+ 此聊天室不会显示任何社群徽章缺少所需的参数。无效参数。样例 ID
- 要想继续使用主服务器 %1$s 您必须阅读并同意其服务条款。
+ 要想继续使用主服务器 %1$s 你必须阅读并同意其服务条款。现在阅读第三方开源协议下载
@@ -935,7 +935,7 @@
请在其他可解密此消息的设备上启动 ${app_name},以便其将密钥发送至当前设备。在此输入…发送语音消息
- 请输入您的密码。
+ 请输入你的密码。发言如果可能的话,请使用英文撰写问题描述。发送加密回复…
@@ -952,14 +952,14 @@
离开聊天室设置聊天室主题按照 ID 踢出用户
- 更改您显示的昵称
+ 更改你显示的昵称打开/关闭 markdown修复 Matrix Apps 管理这个聊天室已经被替换并且不再活跃对话在此继续这个聊天室是另一个对话的延续点击此处查看更早的消息
- 您目前不是任何社区的成员。
+ 你目前不是任何社群的成员。由于缺少权限,此操作无法完成。%d 个用户
@@ -993,7 +993,7 @@
系统警告超出资源限制联系管理员
- 联系您的服务管理员
+ 联系你的服务管理员本服务器其中一项资源已超出限制,部分用户将无法登录。本服务器其中一项资源已超出限制。 本服务器已达到每月活跃用户限制,部分用户将无法登录。
@@ -1015,7 +1015,7 @@
故障排除诊断运行测试正在测试…(%2$d 中的 %1$d)
- 基本诊断结果正常。若您还是沒有收到通知,请提交错误报告以协助我们调查此问题。
+ 基本诊断结果正常。若你还是沒有收到通知,请提交错误报告以协助我们调查此问题。一个或多个测试没有通过,请尝试建议的修复方法。一个或多个测试没有通过,请提交错误反馈以协助我们调查此问题。系统设置。
@@ -1024,8 +1024,8 @@
\n请检查系统设置。打开设置账号设置。
- 您的账号已启用通知。
- 您的账号已禁用通知。
+ 你的账号已启用通知。
+ 你的账号已禁用通知。
\n请检查账号设置。启用设备设置。
@@ -1060,9 +1060,9 @@
电池优化若主服务器支持此功能,在聊天中预览链接内容。发送正在输入通知
- 让聊天室中的其他用户知道您正在输入。
+ 让聊天室中的其他用户知道你正在输入。Markdown 格式化
- 在消息发出之前使用 Markdown 语法格式化消息。这允许您使用高级的文字格式,例如使用星号显示斜体文字。
+ 在消息发出之前使用 Markdown 语法格式化消息。这允许你使用高级的文字格式,例如使用星号显示斜体文字。显示已阅回执点击已阅回执以显示所有已经阅读过某条消息的用户。显示加入与离开事件
@@ -1071,11 +1071,11 @@
包括头像与显示名称的变动。后台连接${app_name} 需要保持低影响的后台连接,以便获得可靠的通知。
-\n下一个屏幕中,系统将提示您允许 ${app_name} 始终在后台运行,请点击“允许“。
+\n下一个屏幕中,系统将提示你允许 ${app_name} 始终在后台运行,请点击“允许“。授予权限
- 在验证您的电子邮件地址时发生了一个错误。
+ 在验证你的电子邮件地址时发生了一个错误。密码
- 在验证您的手机号码时发生了一个错误。
+ 在验证你的手机号码时发生了一个错误。额外信息:%s%d++%d
@@ -1088,7 +1088,7 @@
收起展开抱歉,发生了一个错误
- 您的主服务器尚未支持延迟加载聊天室成员,请稍候再试。
+ 你的主服务器尚未支持延迟加载聊天室成员,请稍候再试。通过仅载入最近聊天中出现的聊天室成员来提升性能。延迟加载聊天室成员Markdown 已禁用。
@@ -1098,7 +1098,7 @@
服务被停止,并已自动重启。服务重启失败服务将在设备重启后启动。
- 服务不会在设备重启后启动,在您打开 ${app_name} 一次之前您将不会收到消息通知。
+ 服务不会在设备重启后启动,在你打开 ${app_name} 一次之前你将不会收到消息通知。已禁用对 ${app_name} 的后台限制。此测试应使用移动数据(非Wi-Fi)进行。
\n%1$s已启用对 ${app_name} 的后台限制。
@@ -1116,31 +1116,31 @@
密钥备份使用备份密钥密钥备份尚未完成,请等待…
- 如果您此时登出账号,您将会失去您的已加密消息
- 密钥备份进行中。如果您此时登出账号将无法再访问您的已加密消息。
- 您的所有设备都应当启用安全密钥备份以确保您不会失去您的已加密消息的访问权。
+ 如果你此时登出账号,你将会失去你的已加密消息
+ 密钥备份进行中。如果你此时登出账号将无法再访问你的已加密消息。
+ 你的所有设备都应当启用安全密钥备份以确保你不会失去你的已加密消息的访问权。我不想要我的已加密消息正在备份密钥…使用备份密钥确定吗?备份
- 如果您在登出账号之前不备份密钥,您将失去您的已加密消息的访问权。
+ 如果你在登出账号之前不备份密钥,你将失去你的已加密消息的访问权。留下跳过完成中止
- 您确定要登出账号吗?
+ 你确定要登出账号吗?高级通知设置事件的通知重要程度自定义设置。请注意一些消息类型已设置为静音(将会生成一条没有铃声的通知)。
- 有些通知已在您的自定义设置中被禁用。
+ 有些通知已在你的自定义设置中被禁用。自定义规则加载失败,请重试。检查设置[%1$s]
\n此错误不受 ${app_name} 控制,根据 Google 的说法,此错误表示该设备在 FCM 中注册了太多应用。该错误仅在应用程序数量极多的情况下发生,因此不应影响普通用户。[%1$s]
-\n此错误不受 ${app_name} 控制。它的发生可能有几个原因。也许您稍后重试就有效了,您也可以检查一下 Google Play 服务是否被系统设置限制了数据使用,或者您的设备时钟是否正确,或者可能发生在自定义的 ROM 中。
+\n此错误不受 ${app_name} 控制。它的发生可能有几个原因。也许你稍后重试就有效了,你也可以检查一下 Google Play 服务是否被系统设置限制了数据使用,或者你的设备时钟是否正确,或者可能发生在自定义的 ROM 中。[%1$s]
\n此错误不受 ${app_name} 控制。此设备上没有登录 Google 账号。请打开账号管理器并添加一个 Google 账号。添加账号
@@ -1156,28 +1156,28 @@
请输入一个用户名。请输入密语密语太弱了
- 如果您想要 ${app_name} 生成一个恢复密钥,请删除密语。
+ 如果你想要 ${app_name} 生成一个恢复密钥,请删除密语。没有可用的 Matrix 会话永不丢失已加密消息
- 加密聊天室中的信息会被端对端加密以确保安全。只有您和拥有密钥的接收方可以读取这些信息。
+ 加密聊天室中的信息会被端对端加密以确保安全。只有你和拥有密钥的接收方可以读取这些信息。
\n
-\n安全地备份您的密钥以免丢失信息。
+\n安全地备份你的密钥以免丢失信息。开始使用备份密钥(高级)手动导出密钥
- 使用密语保护您的备份。
- 我们将会在主服务器上为您的密钥保存一份加密拷贝。设置一个密语来保护您的备份的安全。
+ 使用密语保护你的备份。
+ 我们将会在主服务器上为你的密钥保存一份加密拷贝。设置一个密语来保护你的备份的安全。
\n
-\n为了最大的安全性,此密语应当与您的账号密码不同。
+\n为了最大的安全性,此密语应当与你的账号密码不同。设置密语正在创建备份
- 或者用一个恢复密钥来保护您的备份,将其保存到另一个安全的地方。
+ 或者用一个恢复密钥来保护你的备份,将其保存到另一个安全的地方。(高级)设置一个恢复密钥成功!
- 正在备份您的密钥。
- 您的恢复密钥是一张安全网——如果您忘记了密语,您可以利用它重获您的已加密消息的访问权。
-\n请将您的恢复密钥保存在一个非常安全的地方,比如密码管理器中(或保险箱里)
- 将您的恢复密钥保存在一个非常安全的地方,比如密码管理器中(或保险箱里)
+ 正在备份你的密钥。
+ 你的恢复密钥是一张安全网——如果你忘记了密语,你可以利用它重获你的已加密消息的访问权。
+\n请将你的恢复密钥保存在一个非常安全的地方,比如密码管理器中(或保险箱里)
+ 将你的恢复密钥保存在一个非常安全的地方,比如密码管理器中(或保险箱里)完成我已经制作了一份拷贝保存恢复密钥
@@ -1192,26 +1192,26 @@
恢复密钥意外错误备份开始
- 您的加密密钥正在后台被备份到您的主服务器上。初始备份可能花费几分钟。
- 您确定吗?
- 如果您登出账号或者丢失此设备,您可能再也无法访问您的信息。
+ 你的加密密钥正在后台被备份到你的主服务器上。初始备份可能花费几分钟。
+ 你确定吗?
+ 如果你登出账号或者丢失此设备,你可能再也无法访问你的信息。正在获取备份的版本 …
- 使用恢复密语解锁您的已加密历史消息
- 使用您的恢复密钥
- 如果不知道您的恢复密语,您可以 %s。
- 使用恢复密钥解锁您的已加密历史消息
+ 使用恢复密语解锁你的已加密历史消息
+ 使用你的恢复密钥
+ 如果不知道你的恢复密语,你可以 %s。
+ 使用恢复密钥解锁你的已加密历史消息输入恢复密钥消息恢复
- 丢失了恢复密钥?您可以在设置中新建一个。
- 无法使用此密语解密备份:请检查您输入的恢复密语是否正确。
- 网络错误:请检查您的网络连接并重试。
+ 丢失了恢复密钥?你可以在设置中新建一个。
+ 无法使用此密语解密备份:请检查你输入的恢复密语是否正确。
+ 网络错误:请检查你的网络连接并重试。正在恢复备份:正在计算恢复密钥…正在下载密钥…正在导入密钥…解锁历史请输入恢复密钥
- 无法使用此恢复密钥解密备份:请检查您输入的恢复密钥是否正确。
+ 无法使用此恢复密钥解密备份:请检查你输入的恢复密钥是否正确。备份已恢复 %s !恢复了一个包含 %d 个密钥的备份。
@@ -1225,7 +1225,7 @@
删除备份已为此设备正确设置密钥备份。密钥备份在此设备上未激活。
- 您的密钥未从此设备备份。
+ 你的密钥未从此设备备份。备份含有一个来自 ID 为 %s 的未知设备的签名。备份具有此设备的有效签名。备份具有已验证设备 %s 的有效签名。
@@ -1237,11 +1237,11 @@
正在删除备份…备份(%s)删除失败删除备份
- 要从此服务器中删除您备份的加密密钥吗?您将无法再使用恢复密钥来读取加密的历史消息。
+ 要从此服务器中删除你备份的加密密钥吗?你将无法再使用恢复密钥来读取加密的历史消息。备份新密钥已检测到新的安全消息密钥备份。
\n
-\n如果您并未设置新的恢复方法,可能是有攻击者试图侵入您的账号。请立即更改您的账号密码并在设置中设定一个新的恢复方法。
+\n如果你并未设置新的恢复方法,可能是有攻击者试图侵入你的账号。请立即更改你的账号密码并在设置中设定一个新的恢复方法。
那是我永不丢失已加密消息开始使用备份密钥
@@ -1260,7 +1260,7 @@
忽略以单点登录方式登录无法连接到此 URL,请检查
- 您的设备使用了过时的 TLS 安全协议,容易受到攻击,为保证安全,您将无法进行连接
+ 你的设备使用了过时的 TLS 安全协议,容易受到攻击,为保证安全,你将无法进行连接按回车发送消息软键盘的 Enter 按钮将发送消息而不是添加换行符密码更新
@@ -1268,7 +1268,7 @@
密码不匹配无效的主服务器探测响应自动完成服务器选项
- ${app_name} 侦测到您的 userId 域名 \"%1$s\" 有自定义的服务器设置:
+ ${app_name} 侦测到你的 userId 域名 \"%1$s\" 有自定义的服务器设置:
\n%2$s使用设置正在初始化服务
@@ -1298,11 +1298,11 @@
一个新设备正在请求加密密钥。
\n设备名称:%1$s
\n最近上线于:%2$s
-\n若您未曾在另一个设备上登录,请忽略此请求。
+\n若你未曾在另一个设备上登录,请忽略此请求。一个未验证的设备正在请求加密密钥。
\n设备名称:%1$s
\n最近上线于:%2$s
-\n若您未曾在另一个设备上登录,请忽略此请求。
+\n若你未曾在另一个设备上登录,请忽略此请求。
验证分享密钥分享请求
@@ -1311,13 +1311,13 @@
终止正在检查备份状态通过对比一段简短的文本字符串来验证设备。
- 为保证尽可能高的安全性,我们建议您与对方当面交换,或使用另一种可信任的通讯方式。
+ 为保证尽可能高的安全性,我们建议你与对方当面交换,或使用另一种可信任的通讯方式。开始验证传入的验证请求查看请求正在等待对方确认…已验证!
- 您已成功验证此设备。
+ 你已成功验证此设备。了解了什么都没有出现?并非所有的客户端都已支持交互式验证。使用旧版验证吧。使用旧版验证。
@@ -1325,12 +1325,12 @@
请求已取消交互式设备验证验证请求
- %s 想验证您的装置
+ %s 想验证你的装置未知错误编辑回复重试
- 向您发送邀请
+ 向你发送邀请由 %s 邀请欢迎回家!对话
@@ -1345,7 +1345,7 @@
创建新聊天室修改请稍候…
- 所有社区
+ 所有社群无法预览此聊天室聊天室创建
@@ -1355,7 +1355,7 @@
快捷响应通用选项
- 安全与隐私
+ 隐私安全高级推送规则尚未定义任何推送规则
@@ -1376,15 +1376,15 @@
拒绝没有设置身份服务器。服务器的错误配置导致通话失败
- 请要求您的主服务器 (%1$s) 的管理员配置 TURN 服务器,以使通话可靠地工作。
+ 请要求你的主服务器 (%1$s) 的管理员配置 TURN 服务器,以使通话可靠地工作。
\n
-\n或者,您可以尝试使用 %2$s 的公共服务器,但这将不那么可靠,并且它将与该服务器共享您的 IP 地址。您也可以在“设置”中进行管理。
+\n或者,你可以尝试使用 %2$s 的公共服务器,但这将不那么可靠,并且它将与该服务器共享你的 IP 地址。你也可以在“设置”中进行管理。尝试使用 %s不要再问我
- 设置用于恢复账号的电子邮件,然后就可以让认识您的人选择性探索到您。
- 设定电话,然后就可以让认识您的人选择性探索到您。
- 设定电子邮件以供恢复账号。然后就可以让认识您的人用电子邮件或电话选择性探索到您。
- 设定电子邮件以供恢复账号。然后就可以让认识您的人用电子邮件或电话选择性探索到您。
+ 设置用于恢复账号的电子邮件,然后就可以让认识你的人选择性探索到你。
+ 设定电话,然后就可以让认识你的人选择性探索到你。
+ 设定电子邮件以供恢复账号。然后就可以让认识你的人用电子邮件或电话选择性探索到你。
+ 设定电子邮件以供恢复账号。然后就可以让认识你的人用电子邮件或电话选择性探索到你。這不是有效的 Matrix 服务器位置无法在此 URL 找到主服务器,请检查允许后备呼叫协助服务器
@@ -1396,7 +1396,7 @@
通知${app_name} 呼叫失败无法建立实时连接。
-\n请要求您的主服务器管理员配置 TURN 服务器以使通话可靠工作。
+\n请要求你的主服务器管理员配置 TURN 服务器以使通话可靠工作。
选择声音设备电话扬声器
@@ -1409,60 +1409,60 @@
打开 HDSSL 错误:尚未验证对等端身份。SSL 错误。
- 当您的主服务器未提供时将使用 %s 作为辅助(在通话时将分享您的 IP 地址)
+ 当你的主服务器未提供时将使用 %s 作为辅助(在通话时将分享你的 IP 地址)活动通话 (%s)返回通话
- 在您的设置中添加身份服务器以执行此操作。
+ 在你的设置中添加身份服务器以执行此操作。取消邀请
- 降低您自己的级别?
- 您家无法撤销此操作因为您正在降低您的级别,如果您是聊天室中最后一个特权用户将无法恢复特权。
+ 降低你自己的级别?
+ 你家无法撤销此操作因为你正在降低你的级别,如果你是聊天室中最后一个特权用户将无法恢复特权。降级忽略用户
- 忽略此用户将从您共享的聊天室移除他们的消息。
+ 忽略此用户将从你共享的聊天室移除他们的消息。
\n
-\n您随时可以在通用设置中反转此操作。
+\n你随时可以在通用设置中反转此操作。取消忽略用户取消忽略此用户将重新显示来自他们的全部消息。取消邀请
- 您确定想要取消邀请此用户吗?
+ 你确定想要取消邀请此用户吗?踢掉用户踢掉理由踢掉用户将从此聊天室移除他们。
\n
-\n为防止他们再次加入,您应当封禁他们。
+\n为防止他们再次加入,你应当封禁他们。
封禁用户封禁理由取消封禁用户取消封禁用户将允许他们再次加入聊天室。
- 确认您的密码
- 您无法在 ${app_name} 移动版中这么做
+ 确认你的密码
+ 你无法在 ${app_name} 移动版中这么做需要身份认证后台同步模式电池优化${app_name} 将在后台以保留设备有限资源(电池)的方式同步。
-\n取决于您的设备资源状态,同步可能被操作系统推迟。
+\n取决于你的设备资源状态,同步可能被操作系统推迟。
实时优化${app_name} 将在后台定期准时同步(可配置)。
\n这将影响网络和电池的使用,将显示一个永久通知表明 ${app_name} 正在监听事件。无后台同步
- 应用在后台时您不会收到消息通知。
+ 应用在后台时你不会收到消息通知。更新设置失败。偏好同步间隔%s
\n取决于资源(电量)或设备状态(睡眠)同步可能会延迟。集成使用集成管理器管理机器人,桥接,部件和贴纸包。
-\n集成管理器接收配置数据,可以代表您修改部件,发送聊天室邀请及设置特权等级。
+\n集成管理器接收配置数据,可以代表你修改部件,发送聊天室邀请及设置特权等级。
安全备份管理设置安全备份重置安全备份在此设备上设置
- 通过在您的服务器上备份加密密钥,防止失去对加密信息和数据的访问。
- 为您已有的备份生成新的安全密钥或设置新的安全口令。
- 这将替换您的当前密钥或短语。
+ 通过在你的服务器上备份加密密钥,防止失去对加密信息和数据的访问。
+ 为你已有的备份生成新的安全密钥或设置新的安全口令。
+ 这将替换你的当前密钥或短语。发现
- 管理您的发现设置。
+ 管理你的发现设置。允许集成集成管理器集成已禁用
@@ -1470,8 +1470,8 @@
%d 个封禁用户
- 公开名称(对与您通讯的人可见)
- 会话的公开名称对与您通讯的人可见
+ 公开名称(对与你通讯的人可见)
+ 会话的公开名称对与你通讯的人可见成功导出密钥%1$s: %2$s%1$s: %2$s %3$s
@@ -1487,10 +1487,10 @@
重载挂件在浏览器中打开撤消我的访问权限
- 您的昵称
- 您的头像 URL
- 您的用户 ID
- 您的主题
+ 你的昵称
+ 你的头像 URL
+ 你的用户 ID
+ 你的主题挂件 ID聊天室 ID挂件想使用以下资源:
@@ -1502,17 +1502,17 @@
未配置集成管理器。若要继续请接受服务条款。恢复密钥已保存。
- 您的主服务器上已存在备份
- 您似乎已在另一个会话中设置密钥备份。您想要将其替换为正在创建的吗?
+ 你的主服务器上已存在备份
+ 你似乎已在另一个会话中设置密钥备份。你想要将其替换为正在创建的吗?安全备份保护加密信息及数据的访问权设置安全备份
- 由于无效或过期的凭据您已登出。
- 验证此会话以将其标记为可信任。当使用端对端加密消息时,信任参与者的会话可以使您更加安心。
- 验证会话将标记其为可信任,同时将您的会话对对方标记为可信任。
+ 由于无效或过期的凭据你已登出。
+ 验证此会话以将其标记为可信任。当使用端对端加密消息时,信任参与者的会话可以使你更加安心。
+ 验证会话将标记其为可信任,同时将你的会话对对方标记为可信任。通过确认以下表情符号出现在对方的屏幕上来验证此会话通过确认屏幕上对方显示以下数字来验证此会话
- 您收到传入验证请求。
+ 你收到传入验证请求。与此用户的安全消息端对端加密,无法被第三方读取。对方取消了验证。
\n%s
@@ -1528,22 +1528,22 @@
收到一条无效消息密钥不匹配用户不匹配
- 您未使用身份服务器
- 未配置身份服务器,需要重置您的密码。
- 您似乎正在试图连接到另一个主服务器。您想要登出吗?
+ 你未使用身份服务器
+ 未配置身份服务器,需要重置你的密码。
+ 你似乎正在试图连接到另一个主服务器。你想要登出吗?加入一个聊天室开始使用应用。
- 您已经跟上了!
- 您没有未读消息
+ 你已经跟上了!
+ 你没有未读消息从这里跟上未读消息
- 您的私聊消息将显示在此处。点击右下角的 + 开始一些对话。
- 您的聊天室将显示在此处。点击右下角的 + 来找到现有的聊天室或者创建你自己的聊天室。
+ 你的私聊消息将显示在此处。点击右下角的 + 开始一些对话。
+ 你的聊天室将显示在此处。点击右下角的 + 来找到现有的聊天室或者创建你自己的聊天室。消息已删除显示已移除消息对已移除消息显示占位符聊天室管理员主持的事件最后由 %1$s 编辑于 %2$s格式错误事件,无法显示
- 无网络。请检查您的网络连接。
+ 无网络。请检查你的网络连接。更改网络${app_name} 尚不支持公开聊天室预览私聊消息
@@ -1555,11 +1555,11 @@
获取密钥备份数据时发生错误从文件 \"%1$s\" 导入端对端密钥。其他第三方通知
- 您已经在查看此聊天室!
+ 你已经在查看此聊天室!注册令牌提出建议
- 请在下方写下您的建议。
- 请在此描述您的建议
+ 请在下方写下你的建议。
+ 请在此描述你的建议谢谢,建议已成功发送建议发送失败 (%s)在时间线上显示隐藏事件
@@ -1574,7 +1574,7 @@
消息编辑未找到编辑过滤对话…
- 找不到您要找的?
+ 找不到你要找的?创建新聊天室发送新私聊消息查看聊天室目录
@@ -1598,28 +1598,28 @@
断开身份服务器配置身份服务器更改身份服务器
- 您正在使用 %1$s 与您知道的现有联系人相互发现。
- 您当前未使用身份服务器。若要与您知道的现有联系人相互发现,请在下方配置。
+ 你正在使用 %1$s 与你知道的现有联系人相互发现。
+ 你当前未使用身份服务器。若要与你知道的现有联系人相互发现,请在下方配置。可发现电子邮件地址
- 发现选项将在您添加电子邮件后出现。
- 发现选项将在您添加电话号码后出现。
- 与您的身份服务器断开意味着您将无法被其它用户发现并且无法通过电子邮件和电话邀请他人。
+ 发现选项将在你添加电子邮件后出现。
+ 发现选项将在你添加电话号码后出现。
+ 与你的身份服务器断开意味着你将无法被其它用户发现并且无法通过电子邮件和电话邀请他人。可发现电话号码
- 我们向 %s 给您发送了确认电子邮件,检查您的电子邮件并点击确认链接
- 我们向 %s 给您发送了确认电子邮件,请先检查您的电子邮件并点击确认链接
+ 我们向 %s 给你发送了确认电子邮件,检查你的电子邮件并点击确认链接
+ 我们向 %s 给你发送了确认电子邮件,请先检查你的电子邮件并点击确认链接正在等待输入身份服务器 URL无法连接到身份服务器请输入身份服务器 url身份服务器无服务条款
- 您选择的身份服务器无任何服务条款。仅在您信任服务所有者时继续
+ 你选择的身份服务器无任何服务条款。仅在你信任服务所有者时继续已向 %s 发送文字消息。请输入它包含的验证码。验证码不正确。
- 您当前在身份服务器 %1$s 上分享电子邮件地址或电话号码。您需要重连接 %2$s 已停止分享。
- 同意身份服务器 (%s) 服务条款使您可以通过电子邮件地址或电话号码被发现。
+ 你当前在身份服务器 %1$s 上分享电子邮件地址或电话号码。你需要重连接 %2$s 已停止分享。
+ 同意身份服务器 (%s) 服务条款使你可以通过电子邮件地址或电话号码被发现。启用详细日志。
- 当您发送 RageShake 时详细日志将帮助开发者提供更多日志。即使启用,应用也不会记录消息内容或任何其他私有数据。
- 接收您的主服务器条款和条件后请重试。
+ 当你发送 RageShake 时详细日志将帮助开发者提供更多日志。即使启用,应用也不会记录消息内容或任何其他私有数据。
+ 接收你的主服务器条款和条件后请重试。服务器似乎响应时间太长,这可能是由于连接不良或服务器错误引起的。 请稍后再试。发送附件打开导航菜单
@@ -1659,20 +1659,20 @@
报告忽略用户内容已报告
- 此内容已报告。
-\n
-\n如果您不希望再看到此用户的更多内容,您可以忽略他们以隐藏他们的信息。
- 报告为垃圾信息
- 此内容已报告为垃圾信息。
-\n
-\n如果您不希望再看到此用户的更多内容,您可以忽略他们以隐藏他们的信息。
- 报告为不合适的内容
- 此内容已报告为不合适。
-\n
-\n如果您不希望再看到此用户的更多内容,您可以忽略他们以隐藏他们的消息。
- ${app_name} 需要权限以在磁盘上保存您的端对端密钥。
+ 此内容已报告。
\n
-\n请在接下来的弹出窗口中授权允许访问,以便您手动导出密钥。
+\n如果你不希望再看到此用户的更多内容,你可以忽略他们以隐藏他们的信息。
+ 报告为垃圾信息
+ 此内容已报告为垃圾信息。
+\n
+\n如果你不希望再看到此用户的更多内容,你可以忽略他们以隐藏他们的信息。
+ 报告为不合适的内容
+ 此内容已报告为不合适。
+\n
+\n如果你不希望再看到此用户的更多内容,你可以忽略他们以隐藏他们的消息。
+ ${app_name} 需要权限以在磁盘上保存你的端对端密钥。
+\n
+\n请在接下来的弹出窗口中授权允许访问,以便你手动导出密钥。目前没有网络连接忽略用户全部消息(嘈杂)
@@ -1684,21 +1684,21 @@
从收藏中移除离开聊天室%1$s 未做更改
- 您未做更改
- 您未忽略任何用户
+ 你未做更改
+ 你未忽略任何用户长按聊天室查看更多选项%1$s 将聊天室设为对任何知道链接的用户公开。
- 您将聊天室设为对任何知道链接的用户公开。
+ 你将聊天室设为对任何知道链接的用户公开。%1$s 将聊天室设为仅限邀请。
- 您将聊天室设为仅限邀请。
+ 你将聊天室设为仅限邀请。未读消息这是你的对话。拥有它。与人们私聊或群聊通过加密保证对话私密
- 扩展 & 自定义您的体验
+ 扩展 & 自定义你的体验开始吧选择服务器
- 就像电子邮件,账号有一个家,尽管您可以与任何人聊天
+ 就像电子邮件,账号有一个家,尽管你可以与任何人聊天在最大的公共服务器上免费加入数百万用户面向组织的高级托管了解更多
@@ -1715,51 +1715,51 @@
Element Matrix 服务地址地址面向组织的高级托管
- 输入 Modular Element 或您想使用的服务器地址
- 输入您想使用的服务器的地址
+ 输入 Modular Element 或你想使用的服务器地址
+ 输入你想使用的服务器的地址载入页面时出错:%1$s (%2$d)应用无法登录到此主服务器。主服务器支持以下登录类型:%1$s。
\n
-\n您想要通过网页客户端登录吗?
+\n你想要通过网页客户端登录吗?
抱歉,此服务器不接受新账号。应用无法在此服务器上创建账号。
\n
-\n您想要通过网页客户端注册吗?
+\n你想要通过网页客户端注册吗?
电子邮件未关联到任何账号。在 %1$s 上重置密码
- 验证邮件将发送到您的收件箱以确认设置您的新密码。
+ 验证邮件将发送到你的收件箱以确认设置你的新密码。下一个电子邮件新密码注意!
- 更改您的密码将重置所有会话上的端对端加密密钥,从而使加密聊天记录无法读取。在重设密码之前,请设置“密钥备份”或从另一个会话中导出聊天室密钥。
+ 更改你的密码将重置所有会话上的端对端加密密钥,从而使加密聊天记录无法读取。在重设密码之前,请设置“密钥备份”或从另一个会话中导出聊天室密钥。继续电子邮件未链接到任何账号
- 检查您的收件箱
+ 检查你的收件箱验证电子邮件已发送到 %1$s。
- 点击链接以确认您的新密码。跟随包含的链接验证后,请点击下方。
+ 点击链接以确认你的新密码。跟随包含的链接验证后,请点击下方。我已验证我的电子邮件地址成功!
- 您的密码已重置。
- 您已登出全部会话,不会再接收到推送通知。若要重新启用通知,请在每个设备上再次登录。
+ 你的密码已重置。
+ 你已登出全部会话,不会再接收到推送通知。若要重新启用通知,请在每个设备上再次登录。返回登录注意
- 您的密码尚未更改。
+ 你的密码尚未更改。
\n
\n是否中止密码更改过程?设置电子邮件地址
- 设置电子邮件用于恢复您的账号。之后,您可以选择允许您认识的人通过电子邮件发现您。
+ 设置电子邮件用于恢复你的账号。之后,你可以选择允许你认识的人通过电子邮件发现你。电子邮件电子邮件(可选)下一个设置电话号码
- 设置电话号码,以选择允许您认识的人发现您。
+ 设置电话号码,以选择允许你认识的人发现你。请使用国际格式。电话号码电话号码(可选)下一个确认电话号码
- 我们向 %1$s 发送了验证码。在下方输入它以验证您的身份。
+ 我们向 %1$s 发送了验证码。在下方输入它以验证你的身份。输入验证码重新发送下一个
@@ -1772,7 +1772,7 @@
下一个用户名已占用注意
- 您的账号尚未创建。
+ 你的账号尚未创建。
\n
\n是否中止注册过程?选择 matrix.org
@@ -1780,51 +1780,51 @@
选择自定义主服务器请进行人机验证接受条款以继续
- 请检查您的电子邮件
+ 请检查你的电子邮件我们向 %1$s 发送了电子邮件。
\n请点击其中包含的链接继续账号创建。输入的验证码不正确。请检查。过时的主服务器
- 此主服务器运行的版本过旧以至于无法连接。要求您的主服务器管理员升级。
+ 此主服务器运行的版本过旧以至于无法连接。要求你的主服务器管理员升级。
- 发送了太多请求。您可以在 %1$d 秒后重试…
+ 发送了太多请求。你可以在 %1$d 秒后重试…
- 或者,如果您已经拥有账号并知道您的 Matrix 标识符和密码,您可以使用这种方式:
+ 或者,如果你已经拥有账号并知道你的 Matrix 标识符和密码,你可以使用这种方式:使用 Matrix ID 登录使用 Matrix ID 登录
- 如果您在主服务器上设置了账号,在下方使用您的 Matrix ID(例 @user:domain.com)和密码。
+ 如果你在主服务器上设置了账号,在下方使用你的 Matrix ID(例 @user:domain.com)和密码。Matrix ID
- 如果您不知道您的密码,返回并重置。
+ 如果你不知道你的密码,返回并重置。这不是一个有效的用户标识符。期望的格式:\'@user:homeserver.org\'
- 无法找到有效的主服务器。请检查您的标识符
- 您已登出
+ 无法找到有效的主服务器。请检查你的标识符
+ 你已登出这可能由于多种原因:
\n
-\n• 您已在其他会话中更改了您的密码。
+\n• 你已在其他会话中更改了你的密码。
\n
-\n• 您已从其他会话删除了此会话。
+\n• 你已从其他会话删除了此会话。
\n
-\n• 您的服务器管理员出于安全原因已取消您的访问权限。
+\n• 你的服务器管理员出于安全原因已取消你的访问权限。重新登录
- 您已登出
+ 你已登出登录
- 您的主服务器 (%1$s) 管理员将您从您的账号 %2$s (%3$s) 登出。
- 登录以恢复仅存储在此设备上的加密密钥。 您需要使用它们在任何设备上阅读所有安全消息。
+ 你的主服务器 (%1$s) 管理员将你从你的账号 %2$s (%3$s) 登出。
+ 登录以恢复仅存储在此设备上的加密密钥。 你需要使用它们在任何设备上阅读所有安全消息。登录密码清除个人数据
- 注意:您的个人数据(包括加密密钥)仍存储在此设备上。
+ 注意:你的个人数据(包括加密密钥)仍存储在此设备上。
\n
-\n如果您不再使用此设备,或想登录另一个账号,请清除它。
+\n如果你不再使用此设备,或想登录另一个账号,请清除它。清除全部数据清除数据是否清除当前存储在此设备上的全部数据?
-\n再次登录以访问您的账号数据和消息。
- 除非您登录以恢复加密密钥,否则您将无法访问安全消息。
+\n再次登录以访问你的账号数据和消息。
+ 除非你登录以恢复加密密钥,否则你将无法访问安全消息。清除数据
- 当前会话用于用户 %1$s 而您提供了用户 %2$s 的凭证。${app_name} 不支持此功能。
+ 当前会话用于用户 %1$s 而你提供了用户 %2$s 的凭证。${app_name} 不支持此功能。
\n请先清除数据,然后重新登录另一个账号。
- 您的 matrix.to 链接更是不正确
+ 你的 matrix.to 链接更是不正确描述太短初始同步…查看我的全部会话
@@ -1844,7 +1844,7 @@
在明文消息前添加 ¯\\_(ツ)_/¯启用加密加密一经启用,便无法禁用。
- 您的电子邮件域无权注册此服务器
+ 你的电子邮件域无权注册此服务器未信任的登录匹配不匹配
@@ -1854,10 +1854,10 @@
不安全以下其中一项可能会受到威胁:
\n
-\n - 您的主服务器
-\n - 您验证的用户连接到的主服务器
-\n - 您或其它用户的网络连接
-\n - 您或其他用户的设备
+\n - 你的主服务器
+\n - 你验证的用户连接到的主服务器
+\n - 你或其它用户的网络连接
+\n - 你或其他用户的设备视频。图片。音频
@@ -1865,21 +1865,21 @@
贴纸正在等待…%s 已取消
- 您已取消
+ 你已取消%s 已接受
- 您已接受
+ 你已接受验证已发送验证请求验证此会话手动验证
- 您
+ 你使用其他用户的设备扫描此码以安全地相互验证扫描他们的码无法扫描
- 如果您不在现场,请比较表情符号
+ 如果你不在现场,请比较表情符号通过比较表情符号验证通过表情验证
- 如果您无法扫描上方的码,通过比较简短独特的表情序列验证。
+ 如果你无法扫描上方的码,通过比较简短独特的表情序列验证。二维码图片验证 %s已验证 %s
@@ -1890,7 +1890,7 @@
此聊天室的消息未经端对端加密。该聊天室的消息已被端对端加密。
\n
-\n您的消息受加密保护,并且只有您和消息接收者拥有唯一解密密钥。
+\n你的消息受加密保护,并且只有你和消息接收者拥有唯一解密密钥。
安全了解更多更多
@@ -1916,7 +1916,7 @@
${app_name} 无法处理类型为 \'%1$s\' 的消息${app_name} 在渲染 id 为 \'%1$s\' 的事件内容时遇到了一个问题取消忽略
- 该会话无法与您的其他会话共享此验证。
+ 该会话无法与你的其他会话共享此验证。
\n验证将保存在本地,并在此应用的未来版本中共享。最近使用的聊天室其他聊天室
@@ -1934,7 +1934,7 @@
比较独特表情,确保它们以相同顺序出现。与其他用户设备上显示的代码比较。与此用户的消息端对端加密,无法被第三方读取。
- 您的新会话已验证。它可以访问您的加密消息,其他用户会将其视为可信任。
+ 你的新会话已验证。它可以访问你的加密消息,其他用户会将其视为可信任。交叉签名交叉签名已启用
\n设备上的私钥。
@@ -1944,14 +1944,14 @@
交叉签名已启用。
\n密钥未信任交叉签名未启用
- 您的服务器管理员已默认禁用私有聊天室和私聊消息端对端加密。
+ 你的服务器管理员已默认禁用私有聊天室和私聊消息端对端加密。激活会话显示全部会话管理会话登出此会话加密信息不可用
- 此会话对安全消息可信因为您已验证它:
- 验证此会话以将其标记为可信,并授予其访问加密消息的权限。如果您未登录此会话,则您的账号可能已被盗:
+ 此会话对安全消息可信因为你已验证它:
+ 验证此会话以将其标记为可信,并授予其访问加密消息的权限。如果你未登录此会话,则你的账号可能已被盗:%d 个活动会话
@@ -1968,7 +1968,7 @@
未信任此会话可信任,可以用于收发加密消息,因为 %1$s(%2$s)已验证了它:%1$s (%2$s) 使用新会话登录:
- 在此用户信任此会话之前,发送到该会话和从该会话发送的消息均标有警告。或者,您可以手动进行验证。
+ 在此用户信任此会话之前,发送到该会话和从该会话发送的消息均标有警告。或者,你可以手动进行验证。初始化交叉签名重置密钥二维码
@@ -1988,19 +1988,19 @@
已选选项创建简单调查使用恢复密语或密钥
- 如果您无法访问已有会话
+ 如果你无法访问已有会话新登录无法在存储中找到秘密输入秘密存储密语警告:
- 您应仅在可信任的设备上访问秘密存储
+ 你应仅在可信任的设备上访问秘密存储移除…
- 您想要发送此附件到 %1$s 吗?
+ 你想要发送此附件到 %1$s 吗?发送原始尺寸图片确认移除
- 您确实想要移除(删除)此事件吗?注意如果您删除聊天室名或话题更改,可以撤销更改。
+ 你确实想要移除(删除)此事件吗?注意如果你删除聊天室名或话题更改,可以撤销更改。附加理由编辑理由事件被用户删除,理由:%1$s
@@ -2008,23 +2008,23 @@
密钥请求解锁加密消息历史刷新
- 新登录。是您吗?
+ 新登录。是你吗?轻按以审核和验证使用此会话验证新的会话,授权访问加密消息。这不是我
- 您的账号可能已被盗用
- 如果您取消,您将无法在此设备上读取加密消息,其他用户不会信任它
- 如果您取消,您将无法在新设备上读取加密消息,其他用户不会信任它
- 如果您现在取消将不会验证 %1$s (%2$s)。在他们的用户个人档案中重新开始。
+ 你的账号可能已被盗用
+ 如果你取消,你将无法在此设备上读取加密消息,其他用户不会信任它
+ 如果你取消,你将无法在新设备上读取加密消息,其他用户不会信任它
+ 如果你现在取消将不会验证 %1$s (%2$s)。在他们的用户个人档案中重新开始。以下其中一项可能有风险:
\n
-\n- 您的密码
-\n- 您的主服务器
+\n- 你的密码
+\n- 你的主服务器
\n- 此设备或其它设备
\n- 设备使用的网络连接
\n
-\n我们推荐您在设置中立即更换您的密码和恢复密钥。
- 通过设置验证您的设备。
+\n我们推荐你在设置中立即更换你的密码和恢复密钥。
+ 通过设置验证你的设备。验证已取消恢复密语消息密钥
@@ -2032,17 +2032,17 @@
设置 %s生成消息密钥确认 %s
- 输入您的 %s 以继续。
- 再次输入您的 %s 确认。
- 不要使用您的账号密码。
+ 输入你的 %s 以继续。
+ 再次输入你的 %s 确认。
+ 不要使用你的账号密码。输入只有你知道的安全口令,用于保护服务器上的秘密。这可能会花费数秒,请耐心等待。设置恢复。
- 您的恢复密钥
+ 你的恢复密钥完成了!保持安全完成
- 使用此 %1$s 作为安全网以防您忘记您的 %2$s。
+ 使用此 %1$s 作为安全网以防你忘记你的 %2$s。发布创建的身份密钥从密语生成安全密钥正在定义 SSSS 默认密钥
@@ -2050,9 +2050,9 @@
正在同步用户密钥正在同步自签名密钥正在设置密钥备份
- 您的 %2$s 和 %1$s 已设置。
+ 你的 %2$s 和 %1$s 已设置。
\n
-\n请安全地保管它。如果您丢失了全部活动会话您将需要使用它们解锁加密消息和安全信息。
+\n请安全地保管它。如果你丢失了全部活动会话你将需要使用它们解锁加密消息和安全信息。将它打印出来并存放在安全的地方发送爆雷信息爆雷
@@ -2063,21 +2063,21 @@
密钥已是最新!保护与解锁已加密消息并信任 %s。保存到优盘或者备份盘
- 复制到您的个人云存储
- 您无法在移动设备上执行此操作
- 设置恢复密语让您能够保护和解锁加密信息并信任设备。
+ 复制到你的个人云存储
+ 你无法在移动设备上执行此操作
+ 设置恢复密语让你能够保护和解锁加密信息并信任设备。
\n
-\n如果您不希望设置文本密码,那么生成密钥亦可。
- 设置恢复密语让您能够保护和解锁加密信息并信任设备。
- 如果您现在取消,那么当您失去登录权限时也会丢失加密的信息和数据。
+\n如果你不希望设置文本密码,那么生成密钥亦可。
+ 设置恢复密语让你能够保护和解锁加密信息并信任设备。
+ 如果你现在取消,那么当你失去登录权限时也会丢失加密的信息和数据。
\n
-\n您也可以通过设置菜单来建立保护备份以及管理您的密钥。
+\n你也可以通过设置菜单来建立保护备份以及管理你的密钥。加密开启本聊天室信息已经端对端加密。验证成员时,请查看其个人档案以了解更多信息。加密未开启不支持本聊天室使用的加密方式%s 创建并配置了聊天室。
- 您创建并配置了聊天室。
+ 你创建并配置了聊天室。接近完成!另外的设备是否正显示相同的盾牌图标?接近完成!等候确认……正在等候 %s…
@@ -2095,8 +2095,8 @@
消息…加密升级可用启用交叉签名
- 验证您自己和其他人以保证您的聊天安全
- 输入您的 %s 以继续
+ 验证你自己和其他人以保证你的聊天安全
+ 输入你的 %s 以继续使用文件输入 %s恢复密语
@@ -2110,9 +2110,9 @@
从恢复密钥生成 SSSS 密钥正在在 SSSS 中保存密钥备份秘密%1$s (%2$s)
- 输入您的密钥备份密语以继续。
- 使用您的密钥备份恢复密钥
- 不知道您的密钥备份密语,您可以 %s。
+ 输入你的密钥备份密语以继续。
+ 使用你的密钥备份恢复密钥
+ 不知道你的密钥备份密语,你可以 %s。密钥备份恢复密钥阻止应用内屏幕截图启用此设置添加 FLAG_SECURE 到所有活动。重启应用使更改生效。
@@ -2126,31 +2126,31 @@
${app_name} iOS
\n${app_name} Android或其他能够交叉签名的 Matrix 客户端
- 在您的其他设备上使用最新的 ${app_name}:
+ 在你的其他设备上使用最新的 ${app_name}:强制丢弃加密聊天室中的当前出站群组会话仅在加密聊天室中支持
- 使用您的 %1$s 或使用您的 %2$s 继续。
+ 使用你的 %1$s 或使用你的 %2$s 继续。使用恢复密钥
- 选择您的恢复密钥,或手动输入或从剪贴板粘贴
- 无法使用此恢复密钥解密备份:请确认您输入了正确的恢复密钥。
+ 选择你的恢复密钥,或手动输入或从剪贴板粘贴
+ 无法使用此恢复密钥解密备份:请确认你输入了正确的恢复密钥。访问安全存储失败未加密由未验证设备加密
- 查看您的登录位置
- 验证您的全部会话确保您的账号和消息安全
- 验证访问您的账号的新登录:%1$s
+ 查看你的登录位置
+ 验证你的全部会话确保你的账号和消息安全
+ 验证访问你的账号的新登录:%1$s使用文本手动验证验证登录使用表情交互式验证
- 通过从您的其他会话验证此登录确认您的身份,授权它访问您的加密消息。
+ 通过从你的其他会话验证此登录确认你的身份,授权它访问你的加密消息。标记为信任请选择用户名。请选择密码。仔细检查此链接
- 链接 %1$s 正在将您带到另一个站点:%2$s。
+ 链接 %1$s 正在将你带到另一个站点:%2$s。
\n
-\n您确定想要继续吗?
- 我们无法创建您的私聊消息。请检查您要邀请的用户并重试。
+\n你确定想要继续吗?
+ 我们无法创建你的私聊消息。请检查你要邀请的用户并重试。添加成员邀请正在邀请用户…
@@ -2160,7 +2160,7 @@
邀请已发送到 %1$s 和 %2$d等
- 我们无法邀请用户,请检查您想要邀请的用户并重试。
+ 我们无法邀请用户,请检查你想要邀请的用户并重试。当前语言其他可用语言正在载入可用语言…
@@ -2170,12 +2170,12 @@
无法执行此操作。主服务器已过期。请先配置身份服务器。请先在设置中接受身份服务器的条款。
- 为了您的隐私,${app_name} 仅支持发送用户电子邮件和电话号码的哈希值。
+ 为了你的隐私,${app_name} 仅支持发送用户电子邮件和电话号码的哈希值。关联失败。目前与此标识符没有关联。
- 您的主服务器(%1$s)建议使用 %2$s 作为您的身份服务器
+ 你的主服务器(%1$s)建议使用 %2$s 作为你的身份服务器使用 %1$s
- 或者,您可以输入任何其他身份服务器 URL
+ 或者,你可以输入任何其他身份服务器 URL输入身份服务器 URL提交设置角色
@@ -2187,69 +2187,69 @@
启动相机设置安全备份安全备份
- 通过在您的服务器上备份加密密钥,防止失去对加密信息和数据的访问。
+ 通过在你的服务器上备份加密密钥,防止失去对加密信息和数据的访问。设置使用安全密钥生成安全密钥存储在安全的地方如密码管理器或保险箱。使用安全口令
- 输入仅有您知道的安全口令,生成备份用的密钥。
- 保存您的安全密钥
- 将您的安全密钥存储在安全的地方,例如密码管理器或保险箱。
+ 输入仅有你知道的安全口令,生成备份用的密钥。
+ 保存你的安全密钥
+ 将你的安全密钥存储在安全的地方,例如密码管理器或保险箱。设置安全口令
- 输入只有您知道的安全口令,用于保护您的服务器上的秘密。
+ 输入只有你知道的安全口令,用于保护你的服务器上的秘密。安全口令
- 再次输入您的安全口令以确认。
- 保存您的安全密钥
- 将您的安全密钥存储在安全的地方如密码管理器或保险箱。
+ 再次输入你的安全口令以确认。
+ 保存你的安全密钥
+ 将你的安全密钥存储在安全的地方如密码管理器或保险箱。聊天室名称主题
- 您已成功更改聊天室设置
- 您无法访问此消息
+ 你已成功更改聊天室设置
+ 你无法访问此消息正在等待此消息,可能会花费一些时间无法解密
- 由于端对端加密,您可能需要等待某人的消息到达因为加密密钥未正确发送给您。
- 您无法访问此消息因为您已屏蔽此发送者
- 您无法访问此消息,因为您的会话不被发送者信任
- 您无法访问此消息因为发送者有意不发送密钥
+ 由于端对端加密,你可能需要等待某人的消息到达因为加密密钥未正确发送给你。
+ 你无法访问此消息因为你已屏蔽此发送者
+ 你无法访问此消息,因为你的会话不被发送者信任
+ 你无法访问此消息因为发送者有意不发送密钥正在等待加密历史Riot 现已成为 Element!
- 我们很高兴地宣布我们改名了!您的应用已经更新到最新版本,并且您已登录您的账号。
+ 我们很高兴地宣布我们改名了!你的应用已经更新到最新版本,并且你已登录你的账号。明白了了解更多将恢复密钥保存到从我的通讯录添加
- 您的通讯录是空的
+ 你的通讯录是空的通讯录搜索我的联系人
- 正在获取您的联系人…
- 您的通讯录是空的
+ 正在获取你的联系人…
+ 你的通讯录是空的通讯录撤销邀请是否撤销对 %1$s 的邀请?被 %1$s 封禁解封用户失败推送通知已禁用
- 查看您的设置以启用推送通知
+ 查看你的设置以启用推送通知选择 PIN 以确保安全确认 PIN验证 PIN 失败,请输入新的。
- 输入您的 PIN
+ 输入你的 PIN忘记 PIN?重置 PIN新 PIN
- 为重置您的 PIN,您将需要重新登录并创建新的。
+ 为重置你的 PIN,你将需要重新登录并创建新的。启用 PIN
- 如果您想要重置您的 PIN,点按忘记 PIN 登出并重置。
+ 如果你想要重置你的 PIN,点按忘记 PIN 登出并重置。确认 PIN 并禁用 PIN防止意外通话发起通话之前要求确认
- 您没有权限在此聊天室发起会议通话
+ 你没有权限在此聊天室发起会议通话会议正在进行!发起视频会议发起音频会议
- 会议使用 Jitsi 安全与许可政策。您的会议进行期间当前聊天室内的所有人将看到加入邀请。
- 您无法呼叫您自己
- 您无法与自己通话,请等待参与者接受邀请
+ 会议使用 Jitsi 安全与许可政策。你的会议进行期间当前聊天室内的所有人将看到加入邀请。
+ 你无法呼叫你自己
+ 你无法与自己通话,请等待参与者接受邀请添加挂件失败移除挂件失败
@@ -2267,27 +2267,27 @@
错误代码,剩余 %d 次尝试注意!登出前最后一次尝试!
- 错误次数过多,您已被登出
+ 错误次数过多,你已被登出此电话号码已定义。
- 您的账号尚未添加电话号码
+ 你的账号尚未添加电话号码电子邮件地址
- 您的账号尚未添加电子邮件
+ 你的账号尚未添加电子邮件电话号码移除 %s?
- 请确认您已点击我们向您发送的电子邮件中的链接。
+ 请确认你已点击我们向你发送的电子邮件中的链接。电子邮件和电话号码
- 管理链接到您的 Matrix 账号的电子邮件和电话号码
+ 管理链接到你的 Matrix 账号的电子邮件和电话号码代码请使用国际格式(电话号码必须以 ‘+’ 开始)
- 通过验证此登录确认您的身份,授权它访问加密信息。
- 无法打开您被封禁的聊天室。
+ 通过验证此登录确认你的身份,授权它访问加密信息。
+ 无法打开你被封禁的聊天室。无法找到此聊天室。请确认它存在。
- 您没有权限在此聊天室发起通话
+ 你没有权限在此聊天室发起通话%d 秒显示聊天室成员状态事件
- 包括邀请/加入/离开/踢掉/封禁事件和头像/昵称变更。
+ 包括邀请/加入/离开/踢掉/封禁事件和头像/昵称更改。轮询机器人按钮回应:%s
@@ -2311,22 +2311,22 @@
显示 %d 部设备,这些设备是你现在可以验证的
- 您将重新启动,没有历史记录,消息,受信任的设备或受信任的用户
- 如果您重置一切
+ 你将重新启动,没有历史记录,消息,受信任的设备或受信任的用户
+ 如果你重置一切仅当没有其他设备可用来验证此设备时,才执行此操作。
- 重置一切
+ 全部重置忘记或丢失了所有的恢复选项?重置一切
- 您已加入。
+ 你已加入。%s 已加入。此聊天室的消息是端对端加密的。离开设置此处的消息已被端对端加密。
\n
-\n您的消息受加密保护,并且只有您和消息接收者拥有唯一解密密钥。
+\n你的消息受加密保护,并且只有你和消息接收者拥有唯一解密密钥。
此处的消息未经端对端加密。
- 此主服务器正在运行较旧版本。要求您的主服务器管理员升级。您可以继续,但一些功能可能无法正确工作。
- 您仅发出此邀请。
+ 此主服务器正在运行较旧版本。要求你的主服务器管理员升级。你可以继续,但一些功能可能无法正确工作。
+ 你仅发出此邀请。%1$s 仅发出此邀请。在加密聊天室显示完整历史%1$s 和 %2$s
@@ -2335,20 +2335,20 @@
%d 个邀请通知已点击!
- 请点击通知。如果您未看到通知,请检查系统设置。
+ 请点击通知。如果你未看到通知,请检查系统设置。通知显示
- 您正在查看通知!点我!
+ 你正在查看通知!点我!接受推送失败。重装应用或可解决。应用正在接受推送应用正在等待推送测试推送尚不支持在加密聊天室中搜索。过滤被封禁的用户
- 您没有权限发起通话
- 您没有权限发起会议通话
+ 你没有权限发起通话
+ 你没有权限发起会议通话重置
- 允许访问您的联系人。
- 如需扫描二维码,您须允许相机访问权限。
+ 允许访问你的联系人。
+ 如需扫描二维码,你须允许相机访问权限。没有更多结果开始畅聊删除地址 \"%1$s\"?
@@ -2356,9 +2356,9 @@
发布手动发布新地址其它发布的地址:
- 主地址
- 这是主地址
- 发布的地址可以被任何服务器上的任何人用来加入您的聊天室。要发布一个地址,它必须先被设为一个本地地址。
+ 主要地址
+ 这是主要地址
+ 发布的地址可以被任何服务器上的任何人用来加入你的聊天室。要发布一个地址,它必须先被设为一个本地地址。发布的地址聊天室地址查看和管理此聊天室的地址,以及它在聊天室目录中的可见性。
@@ -2376,18 +2376,18 @@
"话题: "添加一个话题%s 使人们知道此聊天室关于什么。
- 这是您和 %s 的私聊消息历史记录的开始。
+ 这是你和 %s 的私聊消息历史记录的开始。这是此对话的开始。这是 %s 的开始。导出审计
- 您没有权限在此聊天室启用加密。
+ 你没有权限在此聊天室启用加密。私聊消息正在创建聊天室…一些字符不被允许请提供一个聊天室地址此地址已被使用聊天室地址
- 您可以启用此选项如果此聊天室将仅用于您的主服务器上的内部团队协作。此选项之后无法更改。
+ 你可以启用此选项如果此聊天室将仅用于你的主服务器上的内部团队协作。此选项之后无法更改。屏蔽不是 %s 一部分的任何人加入此聊天室隐藏高级显示高级
@@ -2404,14 +2404,14 @@
添加图像自通过扫描二维码创建新的私聊对话通过 Matrix ID 创建新的私聊对话
- 为发现您已知的现存联系人,您是否接受发送您的联系人数据(电话号码和/或电子邮件)到已配置的身份服务器(%1$s)?
+ 为发现你已知的现存联系人,你是否接受发送你的联系人数据(电话号码和/或电子邮件)到已配置的身份服务器(%1$s)?
\n
\n为加强隐私,发送的数据将在发送前计算散列值。发送电子邮件和电话号码授予许可撤销我的许可
- 您尚未同意发送电子邮件和电话号码到身份服务器以从您的联系人发现其他用户。
- 您已同意发送电子邮件和电话号码到身份服务器以从您的联系人发现其他用户。
+ 你尚未同意发送电子邮件和电话号码到身份服务器以从你的联系人发现其他用户。
+ 你已同意发送电子邮件和电话号码到身份服务器以从你的联系人发现其他用户。发送电子邮件和电话号码建议联系人
@@ -2424,16 +2424,16 @@
主题聊天室话题(可选)聊天室名称
- 此聊天室无法预览。您想加入吗?
+ 此聊天室无法预览。你想加入吗?目前无法访问此聊天室。
-\n请稍候重试,或询问聊天室管理员以确认您是否拥有访问权限。
+\n请稍候重试,或询问聊天室管理员以确认你是否拥有访问权限。无法获取当前聊天室目录可见性(%1$s)。是否将此聊天室发布至 %1$s 的聊天室目录中?取消发布此地址发布此地址添加本地地址此聊天室没有本地地址
- 为此聊天室设置地址以便用户通过您的主服务器(%1$s)找到此聊天室
+ 为此聊天室设置地址以便用户通过你的主服务器(%1$s)找到此聊天室本地地址新的发布的地址(例如 #alias:server)尚无其他已发布地址。
@@ -2450,7 +2450,7 @@
更改聊天室名称更改历史记录可见性启用聊天室加密
- 更改聊天室主地址
+ 更改聊天室主要地址更改聊天室头像修改挂件通知每个人
@@ -2461,13 +2461,13 @@
邀请用户发送消息默认角色
- 您没有权限更新更改聊天室多个部分所需角色
+ 你没有权限更新更改聊天室多个部分所需角色选择更改聊天室各个部分所需的角色权限需要查看和更新角色以更改聊天室多个部分。聊天室权限
- 此聊天室不公开。您没有邀请将无法重新加入。
- 您保持通话
+ 此聊天室不公开。你没有邀请将无法重新加入。
+ 你保持通话%s 保持通话保持继续
@@ -2487,10 +2487,10 @@
需要重新验证删除失败的消息
- 您确定要取消发送消息吗?
+ 你确定要取消发送消息吗?消息发送失败删除未发送的消息
- 您确定要删除此聊天室中所有未发送的消息吗?
+ 你确定要删除此聊天室中所有未发送的消息吗?失败状态事件已发送!事件已发送!
@@ -2512,7 +2512,7 @@
用户回拨%1$s 发起了通话
- 您发起了通话
+ 你发起了通话%d 个条目
@@ -2534,11 +2534,11 @@
%1$s,%2$s,%3$s 和 %4$s%1$s,%2$s 和 %3$s%1$s 发起了视频会议
- 您发起了视频会议
+ 你发起了视频会议%1$s 启用了视频会议
- 您启用了视频会议
+ 你启用了视频会议%1$s 修改了视频会议
- 您修改了视频会议
+ 你修改了视频会议设置头像聊天室设置聊天室版本
@@ -2558,10 +2558,10 @@
你修改了此聊天室的服务器访问控制列表。%s 修改了此聊天室的服务器访问控制列表。%s 为此聊天室设置了服务器访问控制列表。
- 您为此聊天室设置了服务器访问控制列表。
+ 你为此聊天室设置了服务器访问控制列表。在 Matrix 上查找联系人用户尚未同意条款。
- 分享此二维码,其他人扫描后即可添加您,并开始聊天。
+ 分享此二维码,其他人扫描后即可添加你,并开始聊天。我的二维码分享我的二维码消息类型缺失
@@ -2575,4 +2575,192 @@
从文件中导入密钥发生错误,消息未能发送状态键
+ 有些聊天室可能被隐藏,因为其为私有聊天室,你需要得到邀请。
+ 有些聊天室可能被隐藏,因为其为私有聊天室,你需要得到邀请。
+\n你没有权限添加聊天室。
+ 此空间没有聊天室
+ 请联系你的主服务器管理员以取得进一步资讯
+ 看来你的主服务器尚未支持空间
+ 想要做点实验?
+\n你可以将现有的空间添加到其他空间中。
+ 实验性空间 - 仅在首页显示无人看管的聊天室
+ 管理聊天室和空间
+ 标记为不建议
+ 标记为建议
+ 建议
+ 使此空间公开
+ 管理聊天室
+ 正在寻找不在 %s 中的人?
+ %s 邀请了你
+ 警告!需要服务支持实验性聊天室版本
+ 实验性空间 - 受限的聊天室。
+ 你被邀请
+ 空间是一种将聊天室和人们进行分组的新方式
+ 空间是一种将聊天室和人们进行重新分组的新方式。
+ 欢迎来到空间!
+ 添加聊天室
+ 添加现有聊天室和空间
+ 你是此空间的管理员,请确保你在离开前已将管理权限转让给另一位成员。
+ 此空间并非公开空间。你将无法在没有邀请的情况下重新加入。
+ 你是这唯一的人。如果你离开,包括你在内的所有人都将无法加入此空间。
+ 你确定你想要离开此空间吗?
+ 离开空间
+ 添加聊天室
+ 探索聊天室
+
+ 你认识的 %d 个人已加入
+
+ 欢迎来到 %1$s,%2$s。
+ 你还没有任何聊天室。下面是一些推荐的聊天室,你也可以通过右下方的按钮查看更多。
+ 此别名当前无法被访问。
+\n请稍后再试,或询问聊天室管理员你身份有权访问。
+ 无论以何种方式加入
+ 加入空间
+ 创建空间
+ 暂且略过
+ 加入我的空间 %1$s %2$s
+ 他们不会成为 %s 的一部分
+ 刚到此房间
+ 他们将可以探索 %s
+ 邀请至 %s
+ 分享链接
+ 通过用户名进行邀请
+ 通过电子邮件进行邀请
+ 此刻仅有你自己。%s 与他人一道会更好。
+ 邀请至 %s
+ 邀请人们
+ 邀请人们加入你的空间
+ 描述
+ 正在创建空间……
+ 随机
+ 一般性
+ 让我们为每个主题创建一个聊天室。你也可以稍后再进行增加,包括现有聊天室。
+ 你在做些什么?
+ 我们将会为此创建聊天室。你也可以在稍后增加更多。
+ 你希望在 %s 中进行哪些讨论?
+ 为它取名以继续。
+ 增加一些详细信息以帮助人们识别。你可以随时更改这些信息。
+ 增加一些详细信息以帮助其脱颖而出。你可以随时更改这些详细信息。
+ 创建空间
+ 仅邀请,最适合你自己或团队
+ 私有
+ 对任何人开放,最适合社群
+ 公开
+ 供你和你的伙伴使用的私有空间
+ 我和伙伴
+ 用于整理你聊天室的私有空间
+ 仅我
+ 确保对的人可以访问 %s。你可以稍后进行更改。
+ 你与谁一同工作?
+ 要加入现有空间,你需要获得邀请。
+ 你可以稍后更改
+ 你想要创建哪种类型的空间?
+ 你的私有空间
+ 你的公开空间
+ 添加空间
+ 离开指定 id 的聊天室(如果为空值则为当前所处的聊天室)
+ 使用指定的 id 加入空间
+ 创建空间
+ 此聊天室为公开聊天室
+ 未检查
+ 开启挂件
+ 屏幕截图
+ ${app_name} 要求你输入凭据才能执行此操作。
+ 呼叫转移时发生错误
+ 先询问
+
+ 1 个通话中(%1$s) · %2$d 暂停通话
+
+ 查找电话号码时发生了错误
+ 此通话已结束
+ %1$s 拒绝了此通话
+ 你拒绝了此通话 %1$s
+ 你当前正处于此通话中
+ 有未保存的更改。要放弃更改吗?
+ 聊天室尚未创建。取消创建聊天室?
+ 未扫描二维码!
+ 无效的二维码(无效的 URI)!
+ 无法向你自己发送私聊消息!
+ 通过文字分享
+ 更改你当前的 PIN
+ 更改 PIN
+ 🔐️ 在 ${app_name} 上加入我的行列
+ 嗨,和我在 ${app_name} 上聊天吧:%s
+ 发送原始大小的媒体
+
+ 发送原始大小的视频
+
+ 限制未知。
+ 你的主服务器能接受大小最大为 %s 的附件(文件、媒体等)。
+ 服务器文件上传限制
+ 此文件过大,无法上传。
+ 此功能仍处于测试中
+ 搜索名称
+ 正在压缩视频 %d%%
+ 正在压缩图片……
+ 意见反馈
+ 反馈发送失败(%s)
+ 感谢,你的反馈已成功送达
+ 如果你后续有任何问题,欢迎联系我
+ 你正在使用空间的测试版。你的反馈将有助于改善下一版本。我们将会记录你的平台和用户名以帮助我们尽我们所能多发挥你的反馈的作用。
+ 反馈
+ 空间反馈
+ 离开当前的回忆并切换至其他会议?
+ 抱歉,在尝试加入会议时发生了错误
+ 所有在此空间中的人都可以找到并加入它。仅有此聊天室的管理员可以将其添加到空间中。
+ 空间
+ 任何人都能找到聊天室并加入
+ 公开
+ 仅有被邀请的人才能找到并加入
+ 私有
+ 未知的访问设置(%s)
+ 任何人都可以要求加入聊天室,成员可以接受或拒绝
+ 允许访客加入
+ 设置为默认值,并不再询问
+ 总是询问
+ 空间
+ 邀请
+ 显示聊天室目录中的所有聊天室,包括带有脏标的聊天室。
+ 显示带有脏标的聊天室
+ 聊天室目录
+ 推荐的聊天室
+ 新值
+ 你更改了此聊天室的地址。
+ %1$s 更改了此聊天室的地址。
+ 你为此聊天室更改了主要和备用地址。
+ %1$s 已为此聊天室更改了主要和备用地址。
+ %1$s 更改了此聊天室的备用地址。
+ 你已为此聊天室更改了备用地址。
+
+ 你已为此聊天室移除了备用地址 %1$s。
+
+
+ %1$s 已为此聊天室移除了备用地址 %2$s。
+
+
+ 你已为此聊天室添加了备用地址 %1$s。
+
+
+ %1$s 已为此聊天室添加了备用地址 %2$s。
+
+ 消息已发送
+ 🎉 所有服务器都被禁止参与!此聊天室已无法再使用。
+ 无更改。
+ • 服务器匹配 IP 常量,现已被封禁。
+ • 服务器匹配 IP 常量,现已被允许。
+ • 服务器符合 %s 已从允许列表中移除。
+ • 服务器符合 %s 现已被允许。
+ • 服务器符合 %s 已从封禁列表中移除。
+ 未命名的聊天室
+ 私有空间
+ 公开空间
+ 此空间为公开空间
+ 陌生人
+ 转移给 %1$s
+ 与 %1$s 商量
+ 该服务器已经存在于列表中
+ 找不到此服务器或它的聊天室列表
+ 输入你想要探索的新服务器的名称。
+ 添加一个新的服务器
+ 你的服务器
\ No newline at end of file
diff --git a/vector/src/main/res/values-zh-rTW/strings.xml b/vector/src/main/res/values-zh-rTW/strings.xml
index b495cea7c9..1c67fdbbcd 100644
--- a/vector/src/main/res/values-zh-rTW/strings.xml
+++ b/vector/src/main/res/values-zh-rTW/strings.xml
@@ -885,7 +885,7 @@
選擇一個聊天室目錄伺服器可能不可用或超載輸入一個主伺服器來列出所有公開聊天室
- 家伺服器 URL
+ 伺服器名稱在 %s 伺服器上的所有聊天室所有本地 %s 聊天室在此輸入…
@@ -2486,9 +2486,9 @@
對可讀取歷史紀錄的人的變更將僅試用於此聊天室中的未來訊息。現有歷史紀錄的可見性將保持不便。取消發佈新增
- 傳送雪 ❄️
+ 傳送下雪特效 ❄️傳送五彩紙屑 🎉
- 與雪一同傳送指定的訊息
+ 與下雪特效一同傳送指定的訊息與五彩紙屑一同傳送指定的訊息清除歷史紀錄單一登入
@@ -2625,7 +2625,7 @@
警告需要伺服器支援與實驗性聊天室版本實驗性空間 - 受限制的聊天室。您被邀請了
- 空間是將聊天室與夥伴依工作、娛樂或是您自己的喜好分組的方式。
+ 空間是將聊天室與人們分組的新方式。歡迎使用空間!新增既有的聊天室與空間您確定您想要離開空間嗎?
@@ -2718,4 +2718,39 @@
正在壓縮圖片……預設使用,不再詢問總是詢問
+ 有些聊天室可能是隱藏的,因為其為私人聊天室,您需要邀請。
+ 有些聊天室可能是隱藏的,因為其為私人聊天室,您需要邀請。
+\n您沒有權限新增聊天室。
+ 此空間沒有聊天室
+ 請聯絡您的家伺服器管理員以取得進一步的資訊
+ 看來您的家伺服器尚未支援空間
+ 想要做點實驗嗎?
+\n您可以將既有的空間新增至其他空間中。
+ 實驗性空間,僅在首頁顯示無人看管的聊天室
+ 新增聊天室
+ 您是此空間的管理員,請確保在您離開前已將管理權轉交給另一個成員。
+ 此空間並非公開。您將無法在無邀請的狀況下重新加入。
+ 您是這裡唯一的人。如果您離開,包含您在內的所有人都將無法加入。
+ 邀請至 %s
+ 此功能仍在測試版
+ 給予回饋
+ 回饋傳送失敗 (%s)
+ 謝謝,您的回饋已成功傳送
+ 如果您有任何後續的問題,歡迎聯絡我
+ 您正在使用空間的測試版本。您的回饋有助於改善未來的版本。我們將會紀錄您的平台與使用者名稱以協助我們使用您的回饋。
+ 回饋
+ 空間回饋
+ 抱歉,嘗試加入會議時發生錯誤
+ 未命名聊天室
+ 私人空間
+ 公開空間
+ 此空間是公開的
+ 未知的人
+ 轉移至 %1$s
+ 與 %1$s 進行諮詢
+ 此伺服器已在清單中
+ 找不到此伺服器或其聊天室清單
+ 輸入您想要探索的新伺服器名稱。
+ 加入新的伺服器
+ 您的伺服器
\ No newline at end of file
diff --git a/vector/src/main/res/values/strings.xml b/vector/src/main/res/values/strings.xml
index 80120b51bf..54356db664 100644
--- a/vector/src/main/res/values/strings.xml
+++ b/vector/src/main/res/values/strings.xml
@@ -771,6 +771,7 @@
YESNOContinue
+ Continue AnywayRemove
@@ -1413,6 +1414,8 @@
Room addressesSee and managed addresses of this room, and its visibility in the room directory.
+ Space addresses
+ See and managed addresses of this space.Room AddressesPublished Addresses
@@ -2584,6 +2587,7 @@
You might enable this if the room will only be used for collaborating with internal teams on your homeserver. This cannot be changed later.Room address
+ Space addressThis address is already in usePlease provide a room addressSome characters are not allowed
@@ -3399,4 +3403,7 @@
Some rooms may be hidden because they’re private and you need an invite.Unnamed Room
+
+ "Teammate spaces aren’t quite ready but you can still give them a try"
+ "At the moment people might not be able to join any private rooms you make.\n\nWe’ll be improving this as part of the beta, but just wanted to let you know."
diff --git a/vector/src/main/res/values/styles_dial_pad.xml b/vector/src/main/res/values/styles_dial_pad.xml
deleted file mode 100644
index 9a2737c0d4..0000000000
--- a/vector/src/main/res/values/styles_dial_pad.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/vector/src/main/res/values/styles_riot.xml b/vector/src/main/res/values/styles_riot.xml
deleted file mode 100644
index 091472b221..0000000000
--- a/vector/src/main/res/values/styles_riot.xml
+++ /dev/null
@@ -1,237 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/vector/src/main/res/values/text_appearances.xml b/vector/src/main/res/values/text_appearances.xml
deleted file mode 100644
index 750dcaf10e..0000000000
--- a/vector/src/main/res/values/text_appearances.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file