diff --git a/app/src/main/kotlin/io/element/android/x/di/AppModule.kt b/app/src/main/kotlin/io/element/android/x/di/AppModule.kt index b57542354b..93f65cb58a 100644 --- a/app/src/main/kotlin/io/element/android/x/di/AppModule.kt +++ b/app/src/main/kotlin/io/element/android/x/di/AppModule.kt @@ -23,6 +23,7 @@ import androidx.preference.PreferenceManager import com.squareup.anvil.annotations.ContributesTo import dagger.Module import dagger.Provides +import io.element.android.appconfig.ApplicationConfig import io.element.android.features.messages.impl.timeline.components.customreaction.DefaultEmojibaseProvider import io.element.android.features.messages.impl.timeline.components.customreaction.EmojibaseProvider import io.element.android.libraries.core.coroutine.CoroutineDispatchers @@ -84,7 +85,9 @@ object AppModule { fun providesBuildMeta(@ApplicationContext context: Context, buildType: BuildType) = BuildMeta( isDebuggable = BuildConfig.DEBUG, buildType = buildType, - applicationName = context.getString(R.string.app_name), + applicationName = ApplicationConfig.APPLICATION_NAME.takeIf { it.isNotEmpty() } ?: context.getString(R.string.app_name), + productionApplicationName = ApplicationConfig.PRODUCTION_APPLICATION_NAME, + desktopApplicationName = ApplicationConfig.DESKTOP_APPLICATION_NAME, applicationId = BuildConfig.APPLICATION_ID, // TODO EAx Config.LOW_PRIVACY_LOG_ENABLE, lowPrivacyLoggingEnabled = false, diff --git a/appconfig/src/main/kotlin/io/element/android/appconfig/ApplicationConfig.kt b/appconfig/src/main/kotlin/io/element/android/appconfig/ApplicationConfig.kt new file mode 100644 index 0000000000..21af158ad6 --- /dev/null +++ b/appconfig/src/main/kotlin/io/element/android/appconfig/ApplicationConfig.kt @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2023 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 io.element.android.appconfig + +object ApplicationConfig { + /** + * Application name used in the UI for string. If empty, the value is taken from the resources `R.string.app_name`. + * Note that this value is not used for the launcher icon. + * For Element, the value is empty, and so read from `R.string.app_name`, which depends on the build variant: + * - "Element X" for release builds; + * - "Element X dbg" for debug builds; + * - "Element X nightly" for nightly builds. + */ + const val APPLICATION_NAME: String = "" + + /** + * Used in the strings to reference the Element client. + * Cannot be empty. + * For Element, the value is "Element". + */ + const val PRODUCTION_APPLICATION_NAME: String = "Element" + + /** + * Used in the strings to reference the Element Desktop client, for instance Element Web. + * Cannot be empty. + * For Element, the value is "Element". We use the same name for desktop and mobile for now. + */ + const val DESKTOP_APPLICATION_NAME: String = "Element" +} diff --git a/features/createroom/impl/src/main/res/values-be/translations.xml b/features/createroom/impl/src/main/res/values-be/translations.xml index 3c81815d7d..1ab27b86e4 100644 --- a/features/createroom/impl/src/main/res/values-be/translations.xml +++ b/features/createroom/impl/src/main/res/values-be/translations.xml @@ -1,7 +1,6 @@ "Новы пакой" - "Запрасіце сяброў у Element" "Запрасіць карыстальникаў" "Пры стварэнні пакоя адбылася памылка" "Паведамленні ў гэтым пакоі зашыфраваны. Гэта шыфраванне нельга адключыць." diff --git a/features/createroom/impl/src/main/res/values-bg/translations.xml b/features/createroom/impl/src/main/res/values-bg/translations.xml index df991482be..28f42b4156 100644 --- a/features/createroom/impl/src/main/res/values-bg/translations.xml +++ b/features/createroom/impl/src/main/res/values-bg/translations.xml @@ -1,7 +1,6 @@ "Нова стая" - "Поканване на хора в Element" "Поканване на хора" "Възникна грешка при създаването на стаята" "Съобщенията в тази стая са шифровани. Шифроването не може да бъде изключено впоследствие." diff --git a/features/createroom/impl/src/main/res/values-cs/translations.xml b/features/createroom/impl/src/main/res/values-cs/translations.xml index b015abbffe..7ea28fc293 100644 --- a/features/createroom/impl/src/main/res/values-cs/translations.xml +++ b/features/createroom/impl/src/main/res/values-cs/translations.xml @@ -1,7 +1,6 @@ "Nová místnost" - "Pozvat přátele do Elementu" "Pozvat přátele" "Při vytváření místnosti došlo k chybě" "Zprávy v této místnosti jsou šifrované. Šifrování nelze později vypnout." diff --git a/features/createroom/impl/src/main/res/values-de/translations.xml b/features/createroom/impl/src/main/res/values-de/translations.xml index 903d3f4122..03b45ffa56 100644 --- a/features/createroom/impl/src/main/res/values-de/translations.xml +++ b/features/createroom/impl/src/main/res/values-de/translations.xml @@ -1,7 +1,6 @@ "Neuer Raum" - "Zu Element einladen" "Personen einladen" "Beim Erstellen des Raums ist ein Fehler aufgetreten" "Die Nachrichten in diesem Raum sind verschlüsselt. Die Verschlüsselung kann nicht nachträglich deaktiviert werden." diff --git a/features/createroom/impl/src/main/res/values-es/translations.xml b/features/createroom/impl/src/main/res/values-es/translations.xml index 50fe3c6a72..5946dab102 100644 --- a/features/createroom/impl/src/main/res/values-es/translations.xml +++ b/features/createroom/impl/src/main/res/values-es/translations.xml @@ -1,7 +1,6 @@ "Nueva sala" - "Invita a alguien a Element" "Invitar personas" "Se ha producido un error al crear la sala" "Los mensajes de esta sala están cifrados. La encriptación no se puede desactivar después." diff --git a/features/createroom/impl/src/main/res/values-fr/translations.xml b/features/createroom/impl/src/main/res/values-fr/translations.xml index f65cb22ebc..51d335571b 100644 --- a/features/createroom/impl/src/main/res/values-fr/translations.xml +++ b/features/createroom/impl/src/main/res/values-fr/translations.xml @@ -1,7 +1,6 @@ "Nouveau salon" - "Inviter des amis sur Element" "Inviter des amis" "Une erreur s’est produite lors de la création du salon" "Les messages dans ce salon sont chiffrés. Le chiffrement ne pourra pas être désactivé par la suite." diff --git a/features/createroom/impl/src/main/res/values-hu/translations.xml b/features/createroom/impl/src/main/res/values-hu/translations.xml index 9549d6b848..e00de669a6 100644 --- a/features/createroom/impl/src/main/res/values-hu/translations.xml +++ b/features/createroom/impl/src/main/res/values-hu/translations.xml @@ -1,7 +1,6 @@ "Új szoba" - "Hívja meg ismerőseit az Elementbe" "Ismerősök meghívása" "Hiba történt a szoba létrehozásakor" "A szobában lévő üzenetek titkosítottak. A titkosítást utólag nem lehet kikapcsolni." diff --git a/features/createroom/impl/src/main/res/values-in/translations.xml b/features/createroom/impl/src/main/res/values-in/translations.xml index e76d0af727..fba0e8aa3f 100644 --- a/features/createroom/impl/src/main/res/values-in/translations.xml +++ b/features/createroom/impl/src/main/res/values-in/translations.xml @@ -1,7 +1,6 @@ "Ruangan baru" - "Undang orang-orang ke Element" "Undang orang-orang" "Terjadi kesalahan saat membuat ruangan" "Pesan di ruangan ini dienkripsi. Enkripsi tidak dapat dinonaktifkan setelahnya." diff --git a/features/createroom/impl/src/main/res/values-it/translations.xml b/features/createroom/impl/src/main/res/values-it/translations.xml index 89b15f6d87..205f1db36a 100644 --- a/features/createroom/impl/src/main/res/values-it/translations.xml +++ b/features/createroom/impl/src/main/res/values-it/translations.xml @@ -1,7 +1,6 @@ "Nuova stanza" - "Invita persone su Element" "Invita persone" "Si è verificato un errore durante la creazione della stanza" "I messaggi in questa stanza sono cifrati. La crittografia non può essere disattivata in seguito." diff --git a/features/createroom/impl/src/main/res/values-ro/translations.xml b/features/createroom/impl/src/main/res/values-ro/translations.xml index 79eca6984f..baf7661fb8 100644 --- a/features/createroom/impl/src/main/res/values-ro/translations.xml +++ b/features/createroom/impl/src/main/res/values-ro/translations.xml @@ -1,7 +1,6 @@ "Cameră nouă" - "Invitați prieteni în Element" "Invitați prieteni" "A apărut o eroare la crearea camerei" "Mesajele din această cameră sunt criptate. Criptarea nu poate fi dezactivată ulterior." diff --git a/features/createroom/impl/src/main/res/values-ru/translations.xml b/features/createroom/impl/src/main/res/values-ru/translations.xml index bd0459ff09..f6da7fffa0 100644 --- a/features/createroom/impl/src/main/res/values-ru/translations.xml +++ b/features/createroom/impl/src/main/res/values-ru/translations.xml @@ -1,7 +1,6 @@ "Новая комната" - "Пригласите друзей в Element" "Пригласить друзей" "Произошла ошибка при создании комнаты" "Сообщения в этой комнате зашифрованы. Отключить шифрование позже будет невозможно." diff --git a/features/createroom/impl/src/main/res/values-sk/translations.xml b/features/createroom/impl/src/main/res/values-sk/translations.xml index 6191275471..932e463e32 100644 --- a/features/createroom/impl/src/main/res/values-sk/translations.xml +++ b/features/createroom/impl/src/main/res/values-sk/translations.xml @@ -1,7 +1,6 @@ "Nová miestnosť" - "Pozvať ľudí na Element" "Pozvať ľudí" "Pri vytváraní miestnosti došlo k chybe" "Správy v tejto miestnosti sú šifrované. Šifrovanie už potom nie je možné vypnúť." diff --git a/features/createroom/impl/src/main/res/values-sv/translations.xml b/features/createroom/impl/src/main/res/values-sv/translations.xml index d1e3047d8a..70d1740592 100644 --- a/features/createroom/impl/src/main/res/values-sv/translations.xml +++ b/features/createroom/impl/src/main/res/values-sv/translations.xml @@ -1,7 +1,6 @@ "Nytt rum" - "Bjud in personer till Element" "Bjud in personer" "Ett fel uppstod när rummet skapades" "Meddelanden i det här rummet är krypterade. Kryptering kan inte inaktiveras efteråt." diff --git a/features/createroom/impl/src/main/res/values-uk/translations.xml b/features/createroom/impl/src/main/res/values-uk/translations.xml index 4fee58b885..139abe5ccc 100644 --- a/features/createroom/impl/src/main/res/values-uk/translations.xml +++ b/features/createroom/impl/src/main/res/values-uk/translations.xml @@ -1,7 +1,6 @@ "Нова кімната" - "Запросити людей до Element" "Запросити людей" "Під час створення кімнати сталася помилка" "Повідомлення в цій кімнаті зашифровані. Пізніше шифрування вимкнути не можна." diff --git a/features/createroom/impl/src/main/res/values-zh-rTW/translations.xml b/features/createroom/impl/src/main/res/values-zh-rTW/translations.xml index bd81974b6f..68fd480b97 100644 --- a/features/createroom/impl/src/main/res/values-zh-rTW/translations.xml +++ b/features/createroom/impl/src/main/res/values-zh-rTW/translations.xml @@ -1,7 +1,6 @@ "建立聊天室" - "邀請朋友使用 Element" "邀請夥伴" "建立聊天室時發生錯誤" "聊天室裡的訊息會被加密。聊天室建立後,無法停用加密功能。" diff --git a/features/createroom/impl/src/main/res/values/localazy.xml b/features/createroom/impl/src/main/res/values/localazy.xml index c9f5686c49..251541f610 100644 --- a/features/createroom/impl/src/main/res/values/localazy.xml +++ b/features/createroom/impl/src/main/res/values/localazy.xml @@ -1,7 +1,6 @@ "New room" - "Invite people to Element" "Invite people" "An error occurred when creating the room" "Messages in this room are encrypted. Encryption can’t be disabled afterwards." diff --git a/features/ftue/impl/src/main/res/values-be/translations.xml b/features/ftue/impl/src/main/res/values-be/translations.xml index 0b46417dd3..0079bcf36d 100644 --- a/features/ftue/impl/src/main/res/values-be/translations.xml +++ b/features/ftue/impl/src/main/res/values-be/translations.xml @@ -2,13 +2,18 @@ "Вы можаце змяніць налады пазней." "Дазвольце апавяшчэнні і ніколі не прапускайце іх" - "Адкрыйце Element на настольнай прыладзе" + "Устанаўленне злучэння" + "Адкрыйце %1$s на настольнай прыладзе" "Націсніце на свой аватар" "Выберыце %1$s" "“Звязаць новую прыладу”" "Выберыце %1$s" "“Паказаць QR-код”" - "Адкрыйце Element на іншай прыладзе, каб атрымаць QR-код" + "Адкрыйце %1$s на іншай прыладзе, каб атрымаць QR-код" + "Выкарыстоўвайце QR-код, паказаны на іншай прыладзе." + "Паўтарыць спробу" + "Няправільны QR-код" + "Сканаваць QR-код" "Званкі, апытанні, пошук і многае іншае будзе дададзена пазней у гэтым годзе." "Гісторыя паведамленняў для зашыфраваных пакояў пакуль недаступна." "Мы будзем рады пачуць вашае меркаванне, паведаміце нам аб гэтым праз старонку налад." diff --git a/features/ftue/impl/src/main/res/values-de/translations.xml b/features/ftue/impl/src/main/res/values-de/translations.xml index 151500adda..e647e37686 100644 --- a/features/ftue/impl/src/main/res/values-de/translations.xml +++ b/features/ftue/impl/src/main/res/values-de/translations.xml @@ -2,6 +2,13 @@ "Du kannst deine Einstellungen später ändern." "Erlaube Benachrichtigungen und verpasse keine Nachricht" + "%1$s auf einem Desktop-Gerät öffnen" + "Klick auf deinen Avatar" + "Wähle %1$s" + "\"Neues Gerät verknüpfen\"" + "Wähle %1$s" + "\"QR-Code anzeigen\"" + "Öffne %1$s auf einem anderen Gerät, um den QR-Code zu erhalten" "Anrufe, Umfragen, Suchfunktionen und mehr werden im Laufe des Jahres hinzugefügt." "Der Nachrichtenverlauf für verschlüsselte Räume wird in diesem Update nicht verfügbar sein." "Wir würden uns freuen, von dir zu hören. Teile uns deine Meinung über die Einstellungsseite mit." diff --git a/features/ftue/impl/src/main/res/values-fr/translations.xml b/features/ftue/impl/src/main/res/values-fr/translations.xml index 9fc11413cb..cc2809b4a8 100644 --- a/features/ftue/impl/src/main/res/values-fr/translations.xml +++ b/features/ftue/impl/src/main/res/values-fr/translations.xml @@ -2,6 +2,18 @@ "Vous pourrez modifier vos paramètres ultérieurement." "Autorisez les notifications et ne manquez aucun message" + "Établissement de la connexion" + "Ouvrez %1$s sur un ordinateur" + "Cliquez sur votre image de profil" + "Choisissez %1$s" + "“Associer une nouvelle session”" + "Choisissez %1$s" + "“Afficher le QR code”" + "Ouvrez %1$s sur un autre appareil pour obtenir le QR code" + "Scannez le QR code affiché sur l’autre appareil." + "Réessayer" + "QR code erroné" + "Scannez le QR code" "Les appels, les sondages, les recherches et plus encore seront ajoutés plus tard cette année." "L’historique des messages pour les salons chiffrés ne sera pas disponible dans cette mise à jour." "N’hésitez pas à nous faire part de vos commentaires via l’écran des paramètres." diff --git a/features/ftue/impl/src/main/res/values-in/translations.xml b/features/ftue/impl/src/main/res/values-in/translations.xml index 1004f8a643..56c4b86fe3 100644 --- a/features/ftue/impl/src/main/res/values-in/translations.xml +++ b/features/ftue/impl/src/main/res/values-in/translations.xml @@ -2,6 +2,13 @@ "Anda dapat mengubah pengaturan Anda nanti." "Izinkan pemberitahuan dan jangan pernah melewatkan pesan" + "Buka %1$s di perangkat desktop" + "Klik pada avatar Anda" + "Pilih %1$s" + "“Tautkan perangkat baru”" + "Pilih %1$s" + "“Tampilkan kode QR”" + "Buka %1$s di perangkat lain untuk mendapatkan kode QR" "Panggilan, pemungutan suara, pencarian, dan lainnya akan ditambahkan di tahun ini." "Riwayat pesan untuk ruangan terenkripsi tidak akan tersedia dalam pembaruan ini." "Kami ingin mendengar dari Anda, beri tahu kami pendapat Anda melalui halaman pengaturan." diff --git a/features/ftue/impl/src/main/res/values-ru/translations.xml b/features/ftue/impl/src/main/res/values-ru/translations.xml index 895c7068ff..6dc9c5c543 100644 --- a/features/ftue/impl/src/main/res/values-ru/translations.xml +++ b/features/ftue/impl/src/main/res/values-ru/translations.xml @@ -2,13 +2,13 @@ "Вы можете изменить настройки позже." "Разрешите уведомления и никогда не пропустите сообщение" - "Откройте Element на настольном устройстве" + "Откройте %1$s на настольном устройстве" "Нажмите на свое изображение" "Выбрать %1$s" "\"Привязать новое устройство\"" "Выбрать %1$s" "\"Показать QR-код\"" - "Откройте Element на другом устройстве, чтобы получить QR-код" + "Откройте %1$s на другом устройстве, чтобы получить QR-код" "Звонки, опросы, поиск и многое другое будут добавлены позже в этом году." "История сообщений для зашифрованных комнат в этом обновлении будет недоступна." "Мы будем рады услышать ваше мнение, сообщите нам об этом через страницу настроек." diff --git a/features/ftue/impl/src/main/res/values-sk/translations.xml b/features/ftue/impl/src/main/res/values-sk/translations.xml index d963dbd734..7dd1d5e867 100644 --- a/features/ftue/impl/src/main/res/values-sk/translations.xml +++ b/features/ftue/impl/src/main/res/values-sk/translations.xml @@ -2,6 +2,13 @@ "Svoje nastavenia môžete neskôr zmeniť." "Povoľte oznámenia a nikdy nezmeškajte žiadnu správu" + "Otvorte %1$s na stolnom zariadení" + "Kliknite na svoj obrázok" + "Vyberte %1$s" + "„Prepojiť nové zariadenie“" + "Vyberte %1$s" + "„Zobraziť QR kód“" + "Ak chcete získať QR kód, otvorte %1$s na inom zariadení" "Hovory, ankety, vyhľadávanie a ďalšie funkcie pribudnú neskôr v tomto roku." "História správ pre zašifrované miestnosti nebude v tejto aktualizácii k dispozícii." "Radi by sme od vás počuli, dajte nám vedieť, čo si myslíte, prostredníctvom stránky nastavení." diff --git a/features/ftue/impl/src/main/res/values/localazy.xml b/features/ftue/impl/src/main/res/values/localazy.xml index ba227878c1..8c43ef0a81 100644 --- a/features/ftue/impl/src/main/res/values/localazy.xml +++ b/features/ftue/impl/src/main/res/values/localazy.xml @@ -2,13 +2,18 @@ "You can change your settings later." "Allow notifications and never miss a message" - "Open Element on a desktop device" + "Establishing connection" + "Open %1$s on a desktop device" "Click on your avatar" "Select %1$s" "“Link new device”" "Select %1$s" "“Show QR code”" - "Open Element on another device to get the QR code" + "Open %1$s on another device to get the QR code" + "Use the QR code shown on the other device." + "Try Again" + "Wrong QR code" + "Scan the QR code" "Calls, polls, search and more will be added later this year." "Message history for encrypted rooms isn’t available yet." "We’d love to hear from you, let us know what you think via the settings page." diff --git a/features/lockscreen/impl/src/main/res/values-de/translations.xml b/features/lockscreen/impl/src/main/res/values-de/translations.xml index 40f22c7cab..c24e9744c4 100644 --- a/features/lockscreen/impl/src/main/res/values-de/translations.xml +++ b/features/lockscreen/impl/src/main/res/values-de/translations.xml @@ -16,7 +16,7 @@ "PIN bestätigen" "Aus Sicherheitsgründen kann dieser PIN-Code nicht verwendet werden." "Bitte eine andere PIN verwenden." - "Sperre %1$s, mit einem PIN Code um den Zugriff auf Element X zu beschränken. + "Sperre %1$s mit einem PIN Code, um den Zugriff auf Deine Chats zu beschränken. Wähle etwas Einprägsames. Bei falscher Eingabe wirst du aus der App ausgeloggt." "Bitte gib die gleiche PIN wie zuvor ein." diff --git a/features/lockscreen/impl/src/main/res/values-sv/translations.xml b/features/lockscreen/impl/src/main/res/values-sv/translations.xml index c0ffcd9cdf..ac64f04efa 100644 --- a/features/lockscreen/impl/src/main/res/values-sv/translations.xml +++ b/features/lockscreen/impl/src/main/res/values-sv/translations.xml @@ -1,8 +1,19 @@ + "Glömt PIN-kod?" "Byt PIN-kod" "Tillåt biometrisk upplåsning" "Ta bort PIN-kod" + "Är du säker på att du vill ta bort PIN-koden?" "Ta bort PIN-koden?" + "Du blir utloggad" + + "Du har %1$d försök att låsa upp" + "Du har %1$d försök att låsa upp" + + + "Fel PIN-kod. Du har %1$d försök kvar" + "Fel PIN-kod. Du har %1$d försök kvar" + "Loggar ut …" diff --git a/features/login/impl/src/main/res/values-hu/translations.xml b/features/login/impl/src/main/res/values-hu/translations.xml index d469e76630..f81e84a86f 100644 --- a/features/login/impl/src/main/res/values-hu/translations.xml +++ b/features/login/impl/src/main/res/values-hu/translations.xml @@ -13,19 +13,19 @@ "Egyéb" "Másik fiókszolgáltató, például a saját privát kiszolgáló vagy egy munkahelyi fiók használata." "Fiókszolgáltató módosítása" - "Nem sikerült elérni ezt a Matrix-kiszolgálót. Ellenőrizze, hogy helyesen adta-e meg a Matrix-kiszolgáló webcímét. Ha a webcím helyes, akkor további segítségért lépjen kapcsolatba a Matrix-kiszolgáló rendszergazdájával." + "Nem sikerült elérni ezt a Matrix-kiszolgálót. Ellenőrizze, hogy helyesen adta-e meg a Matrix-kiszolgáló webcímét. Ha a webcím helyes, akkor további segítségért lépjen kapcsolatba a Matrix-kiszolgáló adminisztrátorával." "A Sliding sync protokoll a well-known fájl problémája miatt nem érhető el: %1$s" "A kiszolgáló jelenleg nem támogatja a Sliding sync protokollt." "Matrix-kiszolgáló webcíme" - "Csak olyan meglévő kiszolgálóhoz csatlakozhat, amely támogatja a Sliding sync protokollt. Ezt a Matrix-kiszolgáló rendszergazdájának kell beállítania. %1$s" + "Csak olyan meglévő kiszolgálóhoz csatlakozhat, amely támogatja a Sliding sync protokollt. Ezt a Matrix-kiszolgáló adminisztrátorának kell beállítania. %1$s" "Mi a kiszolgálója címe?" "Válassza ki a kiszolgálóját" "Ez a fiók deaktiválva lett." "Helytelen felhasználónév vagy jelszó" "Ez nem érvényes felhasználóazonosító. A várt formátum: „@user:homeserver.org”" "Ez a kiszolgáló frissítési tokenek használatára van beállítva. Ezek jelszó alapú bejelentkezés esetén nem támogatottak." - "A kiválasztott Matrix-kiszolgáló nem támogatja a jelszavas vagy OIDC-alapú bejelentkezést. Lépjen kapcsolatba a kiszolgáló rendszergazdájával, vagy válasszon másik Matrix-kiszolgálót." + "A kiválasztott Matrix-kiszolgáló nem támogatja a jelszavas vagy OIDC-alapú bejelentkezést. Lépjen kapcsolatba a kiszolgáló adminisztrátorával, vagy válasszon másik Matrix-kiszolgálót." "Adja meg adatait" "A Matrix egy nyitott hálózat a biztonságos, decentralizált kommunikációhoz." "Örülünk, hogy visszatért!" diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerStateProvider.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerStateProvider.kt index fb7f616e12..82a4692a53 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerStateProvider.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/messagecomposer/MessageComposerStateProvider.kt @@ -22,6 +22,7 @@ import io.element.android.features.messages.impl.mentions.MentionSuggestion import io.element.android.libraries.matrix.api.core.UserId import io.element.android.libraries.matrix.api.permalink.PermalinkData import io.element.android.libraries.matrix.api.permalink.PermalinkParser +import io.element.android.libraries.textcomposer.aRichTextEditorState import io.element.android.libraries.textcomposer.model.MessageComposerMode import io.element.android.wysiwyg.compose.RichTextEditorState import kotlinx.collections.immutable.ImmutableList @@ -35,7 +36,7 @@ open class MessageComposerStateProvider : PreviewParameterProvider"Szimbólumok" "Felhasználó letiltása" "Jelölje be, ha el akarja rejteni az összes jelenlegi és jövőbeli üzenetet ettől a felhasználótól" - "Ez az üzenet jelentve lesz a Matrix-kiszolgáló rendszergazdájának. Nem fogja tudni elolvasni a titkosított üzeneteket." + "Ez az üzenet jelentve lesz a Matrix-kiszolgáló adminisztrátorának. Nem fogja tudni elolvasni a titkosított üzeneteket." "A tartalom jelentésének oka" "Kamera" "Fénykép készítése" diff --git a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenter.kt b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenter.kt index a514637026..bfe6c06e00 100644 --- a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenter.kt +++ b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenter.kt @@ -33,6 +33,7 @@ class OnBoardingPresenter @Inject constructor( override fun present(): OnBoardingState { return OnBoardingState( isDebugBuild = buildMeta.buildType != BuildType.RELEASE, + productionApplicationName = buildMeta.productionApplicationName, canLoginWithQrCode = OnBoardingConfig.CAN_LOGIN_WITH_QR_CODE, canCreateAccount = OnBoardingConfig.CAN_CREATE_ACCOUNT, ) diff --git a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingState.kt b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingState.kt index 5bd7718033..7b7b9f7eec 100644 --- a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingState.kt +++ b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingState.kt @@ -18,6 +18,7 @@ package io.element.android.features.onboarding.impl data class OnBoardingState( val isDebugBuild: Boolean, + val productionApplicationName: String, val canLoginWithQrCode: Boolean, val canCreateAccount: Boolean, ) diff --git a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingStateProvider.kt b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingStateProvider.kt index 926d2a2303..2e29a881aa 100644 --- a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingStateProvider.kt +++ b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingStateProvider.kt @@ -31,10 +31,12 @@ open class OnBoardingStateProvider : PreviewParameterProvider { fun anOnBoardingState( isDebugBuild: Boolean = false, + productionApplicationName: String = "Element", canLoginWithQrCode: Boolean = false, canCreateAccount: Boolean = false ) = OnBoardingState( isDebugBuild = isDebugBuild, + productionApplicationName = productionApplicationName, canLoginWithQrCode = canLoginWithQrCode, canCreateAccount = canCreateAccount ) diff --git a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingView.kt b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingView.kt index 2e122898e1..d87fb36c03 100644 --- a/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingView.kt +++ b/features/onboarding/impl/src/main/kotlin/io/element/android/features/onboarding/impl/OnBoardingView.kt @@ -129,7 +129,7 @@ private fun OnBoardingContent( ) Spacer(modifier = Modifier.height(8.dp)) Text( - text = stringResource(id = R.string.screen_onboarding_welcome_message), + text = stringResource(id = R.string.screen_onboarding_welcome_message, state.productionApplicationName), color = ElementTheme.materialColors.secondary, style = ElementTheme.typography.fontBodyLgRegular.copy(fontSize = 17.sp), textAlign = TextAlign.Center diff --git a/features/onboarding/impl/src/main/res/values-be/translations.xml b/features/onboarding/impl/src/main/res/values-be/translations.xml index e6605b9378..1ca6c172bb 100644 --- a/features/onboarding/impl/src/main/res/values-be/translations.xml +++ b/features/onboarding/impl/src/main/res/values-be/translations.xml @@ -3,7 +3,7 @@ "Увайдзіце ўручную" "Увайдзіце з QR-кодам" "Стварыць уліковы запіс" - "Сардэчна запрашаем у самы хуткі Element. Перавага ў хуткасці і прастаце." + "Сардэчна запрашаем у самы хуткі %1$s. Перавага ў хуткасці і прастаце." "Сардэчна запрашаем у %1$s. Зараджаны, для хуткасці і прастаты." " Адчуйце сябе ў сваім element" diff --git a/features/onboarding/impl/src/main/res/values-bg/translations.xml b/features/onboarding/impl/src/main/res/values-bg/translations.xml index 0eff69eacf..67a3fe4a28 100644 --- a/features/onboarding/impl/src/main/res/values-bg/translations.xml +++ b/features/onboarding/impl/src/main/res/values-bg/translations.xml @@ -3,7 +3,7 @@ "Влизане ръчно" "Влизане с QR код" "Създаване на акаунт" - "Добре дошли в най-бързия Element досега. Супер зареден за скорост и простота." + "Добре дошли в най-бързия %1$s досега. Супер зареден за скорост и простота." "Добре дошли в %1$s. Супер зареден за скорост и простота." "Бъдете в стихията си" diff --git a/features/onboarding/impl/src/main/res/values-cs/translations.xml b/features/onboarding/impl/src/main/res/values-cs/translations.xml index de8b00cd70..057fdff4ee 100644 --- a/features/onboarding/impl/src/main/res/values-cs/translations.xml +++ b/features/onboarding/impl/src/main/res/values-cs/translations.xml @@ -3,7 +3,7 @@ "Ruční přihlášení" "Přihlásit se pomocí QR kódu" "Vytvořit účet" - "Vítejte u dosud nejrychlejšího Elementu. Vylepšený pro rychlost a jednoduchost." + "Vítejte u dosud nejrychlejšího %1$su. Vylepšený pro rychlost a jednoduchost." "Vítejte v %1$s. Vylepšený, pro rychlost a jednoduchost." "Buďte ve svém živlu" diff --git a/features/onboarding/impl/src/main/res/values-de/translations.xml b/features/onboarding/impl/src/main/res/values-de/translations.xml index ec802a1ba1..56edc949a1 100644 --- a/features/onboarding/impl/src/main/res/values-de/translations.xml +++ b/features/onboarding/impl/src/main/res/values-de/translations.xml @@ -3,7 +3,7 @@ "Manuell anmelden" "Mit QR-Code anmelden" "Konto erstellen" - "Willkommen beim schnellsten Element aller Zeiten. Optimiert für Geschwindigkeit und Einfachheit." + "Willkommen beim schnellsten %1$s aller Zeiten. Optimiert für Geschwindigkeit und Einfachheit." "Willkommen zu %1$s. Aufgeladen, für Geschwindigkeit und Einfachheit." "Sei in deinem Element" diff --git a/features/onboarding/impl/src/main/res/values-es/translations.xml b/features/onboarding/impl/src/main/res/values-es/translations.xml index fb348b123d..c794e3b9ab 100644 --- a/features/onboarding/impl/src/main/res/values-es/translations.xml +++ b/features/onboarding/impl/src/main/res/values-es/translations.xml @@ -3,7 +3,7 @@ "Iniciar sesión manualmente" "Iniciar sesión con un código QR" "Crear cuenta" - "Bienvenido al Element más rápido de todos los tiempos. Diseñado para la velocidad y la simplicidad." + "Bienvenido al %1$s más rápido de todos los tiempos. Diseñado para la velocidad y la simplicidad." "Bienvenido a %1$s. Vitaminado, para mayor rapidez y sencillez." "Siéntete en tu Elemento" diff --git a/features/onboarding/impl/src/main/res/values-fr/translations.xml b/features/onboarding/impl/src/main/res/values-fr/translations.xml index 94b9461a88..0d8a7fa347 100644 --- a/features/onboarding/impl/src/main/res/values-fr/translations.xml +++ b/features/onboarding/impl/src/main/res/values-fr/translations.xml @@ -3,7 +3,7 @@ "Se connecter manuellement" "Se connecter avec un QR code" "Créer un compte" - "Bienvenue dans l’Element le plus rapide de tous les temps. Boosté pour plus de rapidité et de simplicité." + "Bienvenue dans l’application %1$s la plus rapide de tous les temps. Boosté pour plus de rapidité et de simplicité." "Bienvenue sur %1$s. Boosté, pour plus de rapidité et de simplicité." "Soyez dans votre Element" diff --git a/features/onboarding/impl/src/main/res/values-hu/translations.xml b/features/onboarding/impl/src/main/res/values-hu/translations.xml index 8acd47c566..308478f88b 100644 --- a/features/onboarding/impl/src/main/res/values-hu/translations.xml +++ b/features/onboarding/impl/src/main/res/values-hu/translations.xml @@ -3,7 +3,7 @@ "Kézi bejelentkezés" "Bejelentkezés QR-kóddal" "Fiók létrehozása" - "Üdvözöljük a valaha volt leggyorsabb Elementben. Felturbózva, a sebesség és az egyszerűség érdekében." + "Üdvözöljük a valaha volt leggyorsabb %1$sben. Felturbózva, a sebesség és az egyszerűség érdekében." "Üdvözli az %1$s. Felturbózva, a sebesség és az egyszerűség jegyében." "Legyen elemében" diff --git a/features/onboarding/impl/src/main/res/values-in/translations.xml b/features/onboarding/impl/src/main/res/values-in/translations.xml index 06946a3cd8..e9b7b479a8 100644 --- a/features/onboarding/impl/src/main/res/values-in/translations.xml +++ b/features/onboarding/impl/src/main/res/values-in/translations.xml @@ -3,7 +3,7 @@ "Masuk secara manual" "Masuk dengan kode QR" "Buat akun" - "Selamat datang di Element tercepat yang pernah ada. Berdaya besar untuk kecepatan dan kesederhanaan." + "Selamat datang di %1$s tercepat yang pernah ada. Berdaya besar untuk kecepatan dan kesederhanaan." "Selamat datang di %1$s. Berdaya penuh, untuk kecepatan dan kesederhanaan." "Berada di elemen Anda" diff --git a/features/onboarding/impl/src/main/res/values-it/translations.xml b/features/onboarding/impl/src/main/res/values-it/translations.xml index 738c4c8947..e134337d64 100644 --- a/features/onboarding/impl/src/main/res/values-it/translations.xml +++ b/features/onboarding/impl/src/main/res/values-it/translations.xml @@ -3,7 +3,7 @@ "Accedi manualmente" "Accedi con codice QR" "Crea account" - "Benvenuti nell\'Element più veloce di sempre. Potenziato per velocità e semplicità." + "Benvenuti nell\'%1$s più veloce di sempre. Potenziato per velocità e semplicità." "Benvenuto su %1$s. Potenziato in velocità e semplicità." "Sii nel tuo elemento" diff --git a/features/onboarding/impl/src/main/res/values-ro/translations.xml b/features/onboarding/impl/src/main/res/values-ro/translations.xml index b6db94d213..7275680729 100644 --- a/features/onboarding/impl/src/main/res/values-ro/translations.xml +++ b/features/onboarding/impl/src/main/res/values-ro/translations.xml @@ -3,7 +3,7 @@ "Conectați-vă manual" "Conectați-vă cu un cod QR" "Creați un cont" - "Bine ați venit la cel mai rapid Element din toate timpurile. Supraalimentat pentru viteză și simplitate." + "Bine ați venit la cel mai rapid %1$s din toate timpurile. Supraalimentat pentru viteză și simplitate." "Bun venit în %1$s. Supraalimentat, pentru viteză și simplitate." "Fii în Elementul tău" diff --git a/features/onboarding/impl/src/main/res/values-ru/translations.xml b/features/onboarding/impl/src/main/res/values-ru/translations.xml index 2a0ab37e1d..201687b0cf 100644 --- a/features/onboarding/impl/src/main/res/values-ru/translations.xml +++ b/features/onboarding/impl/src/main/res/values-ru/translations.xml @@ -3,7 +3,7 @@ "Вход в систему вручную" "Войти с помощью QR-кода" "Создать учетную запись" - "Добро пожаловать в самый быстрый Element. Сверхзаряженность на скорость и простоту." + "Добро пожаловать в самый быстрый %1$s. Сверхзаряженность на скорость и простоту." "Добро пожаловать в %1$s. Сверхзаряжен для скорости и простоты." "Будьте в своем element" diff --git a/features/onboarding/impl/src/main/res/values-sk/translations.xml b/features/onboarding/impl/src/main/res/values-sk/translations.xml index 9639f7c903..7ed548d025 100644 --- a/features/onboarding/impl/src/main/res/values-sk/translations.xml +++ b/features/onboarding/impl/src/main/res/values-sk/translations.xml @@ -3,7 +3,7 @@ "Prihlásiť sa manuálne" "Prihlásiť sa pomocou QR kódu" "Vytvoriť účet" - "Vitajte v najrýchlejšom Element vôbec. Nadupaný pre rýchlosť a jednoduchosť." + "Vitajte v najrýchlejšom %1$s vôbec. Nadupaný pre rýchlosť a jednoduchosť." "Vitajte v %1$s. Nadupaný, pre rýchlosť a jednoduchosť." "Buďte vo svojom elemente" diff --git a/features/onboarding/impl/src/main/res/values-sv/translations.xml b/features/onboarding/impl/src/main/res/values-sv/translations.xml index e37264f74f..6ffadf355b 100644 --- a/features/onboarding/impl/src/main/res/values-sv/translations.xml +++ b/features/onboarding/impl/src/main/res/values-sv/translations.xml @@ -3,7 +3,7 @@ "Logga in manuellt" "Logga in med QR-kod" "Skapa konto" - "Välkommen till den snabbaste Element någonsin. Superladdad för snabbhet och enkelhet." + "Välkommen till den snabbaste %1$s någonsin. Superladdad för snabbhet och enkelhet." "Välkommen till %1$s. Superladdad, för snabbhet och enkelhet." "Var i ditt rätta element" diff --git a/features/onboarding/impl/src/main/res/values-uk/translations.xml b/features/onboarding/impl/src/main/res/values-uk/translations.xml index 4195ef2a6a..8c834d9bd0 100644 --- a/features/onboarding/impl/src/main/res/values-uk/translations.xml +++ b/features/onboarding/impl/src/main/res/values-uk/translations.xml @@ -3,7 +3,7 @@ "Увійти вручну" "Увійти за допомогою QR-коду" "Створити обліковий запис" - "Ласкаво просимо до найшвидшого Element. Заряджений для швидкості та простоти." + "Ласкаво просимо до найшвидшого %1$s. Заряджений для швидкості та простоти." "Ласкаво просимо до %1$s. Заряджений, для швидкості та простоти." "Будьте у своєму element" diff --git a/features/onboarding/impl/src/main/res/values-zh-rTW/translations.xml b/features/onboarding/impl/src/main/res/values-zh-rTW/translations.xml index 22c9d70004..885e557409 100644 --- a/features/onboarding/impl/src/main/res/values-zh-rTW/translations.xml +++ b/features/onboarding/impl/src/main/res/values-zh-rTW/translations.xml @@ -3,6 +3,6 @@ "手動登入" "使用 QR code 登入" "建立帳號" - "歡迎使用有史以來最快的 Element。速度超快,操作簡便。" + "歡迎使用有史以來最快的 %1$s。速度超快,操作簡便。" "Be in your element" diff --git a/features/onboarding/impl/src/main/res/values/localazy.xml b/features/onboarding/impl/src/main/res/values/localazy.xml index 2e8d8724d4..78acc7ffb4 100644 --- a/features/onboarding/impl/src/main/res/values/localazy.xml +++ b/features/onboarding/impl/src/main/res/values/localazy.xml @@ -3,7 +3,7 @@ "Sign in manually" "Sign in with QR code" "Create account" - "Welcome to the fastest Element ever. Supercharged for speed and simplicity." + "Welcome to the fastest %1$s ever. Supercharged for speed and simplicity." "Welcome to %1$s. Supercharged, for speed and simplicity." "Be in your element" diff --git a/features/onboarding/impl/src/test/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenterTest.kt b/features/onboarding/impl/src/test/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenterTest.kt index 51d1ccc932..1eaf60a8f9 100644 --- a/features/onboarding/impl/src/test/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenterTest.kt +++ b/features/onboarding/impl/src/test/kotlin/io/element/android/features/onboarding/impl/OnBoardingPresenterTest.kt @@ -33,12 +33,19 @@ class OnBoardingPresenterTest { @Test fun `present - initial state`() = runTest { - val presenter = OnBoardingPresenter(aBuildMeta()) + val presenter = OnBoardingPresenter( + aBuildMeta( + applicationName = "A", + productionApplicationName = "B", + desktopApplicationName = "C", + ) + ) moleculeFlow(RecompositionMode.Immediate) { presenter.present() }.test { val initialState = awaitItem() assertThat(initialState.isDebugBuild).isTrue() + assertThat(initialState.productionApplicationName).isEqualTo("B") assertThat(initialState.canLoginWithQrCode).isFalse() assertThat(initialState.canCreateAccount).isFalse() } diff --git a/features/roomdetails/impl/src/main/res/values-be/translations.xml b/features/roomdetails/impl/src/main/res/values-be/translations.xml index be2ac558fd..85fb82b96a 100644 --- a/features/roomdetails/impl/src/main/res/values-be/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-be/translations.xml @@ -31,6 +31,7 @@ "Панізіць сябе?" "%1$s (У чаканні)" "(У чаканні)" + "Адміністратары аўтаматычна маюць права мадэратара" "Рэдагаваць мадэратараў" "Адміністратары" "Мадэратары" @@ -58,6 +59,7 @@ "Назва пакоя" "Бяспека" "Падзяліцца пакоем" + "Інфармацыя аб пакоі" "Тэма" "Ідзе абнаўленне пакоя…" "Заблакіраваць" @@ -66,9 +68,9 @@ "У гэтым пакоі няма заблакіраваных удзельнікаў." "Блакіроўка %1$s" - "%1$d карыстальнік" - "%1$d карыстальніка" - "%1$d карыстальнікаў" + "%1$d удзельнік" + "%1$d удзельніка" + "%1$d удзельнікаў" "Выдаліць і заблакіраваць удзельніка" "Выдаліць удзельніка з пакоя" diff --git a/features/roomdetails/impl/src/main/res/values-cs/translations.xml b/features/roomdetails/impl/src/main/res/values-cs/translations.xml index 93e7fcf389..f44cdd210a 100644 --- a/features/roomdetails/impl/src/main/res/values-cs/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-cs/translations.xml @@ -30,6 +30,8 @@ "Tuto změnu nebudete moci vrátit zpět, protože sami degradujete, pokud jste posledním privilegovaným uživatelem v místnosti, nebude možné znovu získat oprávnění." "Degradovat se?" "%1$s (čekající)" + "(Čeká na vyřízení)" + "Správci mají automaticky oprávnění moderátora" "Upravit moderátory" "Správci" "Moderátoři" @@ -57,6 +59,7 @@ "Název místnosti" "Zabezpečení" "Sdílet místnost" + "Informace o místnosti" "Téma" "Aktualizace místnosti…" "Vykázat" diff --git a/features/roomdetails/impl/src/main/res/values-de/translations.xml b/features/roomdetails/impl/src/main/res/values-de/translations.xml index 980f149bad..5a403643c6 100644 --- a/features/roomdetails/impl/src/main/res/values-de/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-de/translations.xml @@ -24,12 +24,14 @@ "Raumthema ändern" "Nachrichten senden" "Admins bearbeiten" - "Du vergibst das selbe Rolle, die auch Du hast. Diese Aktion kann daher nicht mehr rückgängig gemacht werden." + "Du kannst diese Aktion nicht mehr rückgängig machen. Du vergibst dieselbe Rolle, wie auch Du sie hast." "Als Administrator hinzufügen?" "Zurückstufen" "Du stufst dich selbst herab. Diese Änderung kann nicht rückgängig gemacht werden. Wenn du der letzte Benutzer mit dieser Rolle bist, ist es nicht möglich, diese Rolle wiederzuerlangen." "Möchtest Du Dich selbst herabstufen?" "%1$s (Ausstehend)" + "(Ausstehend)" + "Administratoren haben automatisch Moderatorenrechte" "Moderatoren bearbeiten" "Administratoren" "Moderatoren" @@ -57,6 +59,7 @@ "Raumname" "Sicherheit" "Raum teilen" + "Raum Informationen" "Thema" "Raum wird aktualisiert…" "Sperren" diff --git a/features/roomdetails/impl/src/main/res/values-fr/translations.xml b/features/roomdetails/impl/src/main/res/values-fr/translations.xml index 005531b3db..d4f4cab64c 100644 --- a/features/roomdetails/impl/src/main/res/values-fr/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-fr/translations.xml @@ -31,6 +31,7 @@ "Vous rétrograder ?" "%1$s (En attente)" "(En attente)" + "Les administrateurs ont automatiquement les privilèges des modérateurs" "Modifier les modérateurs" "Administrateurs" "Modérateurs" @@ -58,6 +59,7 @@ "Nom du salon" "Sécurité" "Partager le salon" + "Informations du salon" "Sujet" "Mise à jour du salon…" "Bannir" diff --git a/features/roomdetails/impl/src/main/res/values-hu/translations.xml b/features/roomdetails/impl/src/main/res/values-hu/translations.xml index 66c05c38a7..4fa200ee58 100644 --- a/features/roomdetails/impl/src/main/res/values-hu/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-hu/translations.xml @@ -9,29 +9,31 @@ "Hiba történt az értesítési beállítás frissítésekor." "A Matrix-kiszolgálója nem támogatja ezt a beállítást a titkosított szobákban, előfordulhat, hogy egyes szobákban nem kap értesítést." "Szavazások" - "Csak rendszergazdák" + "Csak adminisztrátorok" "Emberek kitiltása" "Üzenetek eltávolítása" "Mindenki" "Emberek meghívása" "Tagok moderálása" "Üzenetek és tartalom" - "Rendszergazdák és moderátorok" + "Adminisztrátorok és moderátorok" "Emberek eltávolítása" "Szoba profilképének módosítása" "Szoba részletei" "Szoba nevének módosítása" "Szoba témájának módosítása" "Üzenetek küldése" - "Rendszergazdák szerkesztése" + "Adminisztrátorok szerkesztése" "Ezt a műveletet nem fogja tudja visszavonni. Ugyanarra a szintre lépteti elő a felhasználót, mint amellyel Ön is rendelkezik." - "Rendszergazda hozzáadása?" + "Adminisztrátor hozzáadása?" "Lefokozás" "Ezt a változtatást nem fogja tudni visszavonni, mivel lefokozza magát, ha Ön az utolsó jogosultságokkal rendelkező felhasználó a szobában, akkor lehetetlen lesz visszaszerezni a jogosultságokat." "Lefokozza magát?" "%1$s (függőben)" + "(Függőben)" + "Az adminisztrátorok automatikusan moderátori jogosultságokkal rendelkeznek" "Moderátorok szerkesztése" - "Rendszergazdák" + "Adminisztrátorok" "Moderátorok" "Tagok" "Mentetlen módosításai vannak." @@ -57,6 +59,7 @@ "Szoba neve" "Biztonság" "Szoba megosztása" + "Szobainformációk" "Téma" "Szoba frissítése…" "Kitiltás" @@ -81,7 +84,7 @@ "Tagok" "Függőben" "%1$s eltávolítása…" - "Rendszergazda" + "Adminisztrátor" "Moderátor" "Szoba tagjai" "%1$s tiltásának feloldása" @@ -99,7 +102,7 @@ "Összes üzenet" "Csak említések és kulcsszavak" "Ebben a szobában, értesítés ezekről:" - "Rendszergazdák" + "Adminisztrátorok" "Saját szerepkör módosítása" "Lefokozás taggá" "Lefokozás moderátorrá" diff --git a/features/roomdetails/impl/src/main/res/values-in/translations.xml b/features/roomdetails/impl/src/main/res/values-in/translations.xml index ddfd4859ea..c9aedeefd1 100644 --- a/features/roomdetails/impl/src/main/res/values-in/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-in/translations.xml @@ -30,6 +30,8 @@ "Anda tidak akan dapat mengurungkan perubahan ini karena Anda sedang menurunkan Anda sendiri, jika Anda merupakan pengguna dengan hak khusus dalam ruangan maka tidak akan memungkinkan untuk mendapatkan hak tersebut lagi." "Turunkan Anda sendiri?" "%1$s (Tertunda)" + "(Tertunda)" + "Admin secara otomatis memiliki hak moderator" "Sunting Moderator" "Admin" "Moderator" @@ -57,6 +59,7 @@ "Nama ruangan" "Keamanan" "Bagikan ruangan" + "Info ruangan" "Topik" "Memperbarui ruangan…" "Cekal" diff --git a/features/roomdetails/impl/src/main/res/values-it/translations.xml b/features/roomdetails/impl/src/main/res/values-it/translations.xml index 77b46cdeda..8326d592e8 100644 --- a/features/roomdetails/impl/src/main/res/values-it/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-it/translations.xml @@ -11,7 +11,7 @@ "Sondaggi" "Solo amministratori" "Escludi membri" - "Eliminare messaggi" + "Rimuovi messaggi" "Tutti" "Invitare persone" "Moderazione dei membri" diff --git a/features/roomdetails/impl/src/main/res/values-ru/translations.xml b/features/roomdetails/impl/src/main/res/values-ru/translations.xml index 200b2ef3c7..9e6b963efb 100644 --- a/features/roomdetails/impl/src/main/res/values-ru/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-ru/translations.xml @@ -30,6 +30,8 @@ "Вы не сможете отменить это изменение, так как понижаете себя статус. Если вы являетесь последним привилегированным пользователем в комнате, восстановить привилегии будет невозможно." "Понизить свой уровень?" "%1$s (Ожидание)" + "(В ожидании)" + "Администраторы автоматически получают права модератора" "Редактировать роль модераторов" "Администраторы" "Модераторы" @@ -57,6 +59,7 @@ "Название комнаты" "Безопасность" "Поделиться комнатой" + "Информация о комнате" "Тема" "Обновление комнаты…" "Заблокировать" diff --git a/features/roomdetails/impl/src/main/res/values-sk/translations.xml b/features/roomdetails/impl/src/main/res/values-sk/translations.xml index c85b04017c..7feb1d4e41 100644 --- a/features/roomdetails/impl/src/main/res/values-sk/translations.xml +++ b/features/roomdetails/impl/src/main/res/values-sk/translations.xml @@ -30,6 +30,8 @@ "Túto zmenu nebudete môcť vrátiť späť, pretože znižujete svoju úroveň. Ak ste posledným privilegovaným používateľom v miestnosti, nebude možné získať znova oprávnenia." "Znížiť svoju úroveň?" "%1$s (Čaká sa)" + "(Čaká sa)" + "Správcovia majú automaticky oprávnenia moderátora" "Upraviť moderátorov" "Správcovia" "Moderátori" @@ -57,6 +59,7 @@ "Názov miestnosti" "Bezpečnosť" "Zdieľať miestnosť" + "Informácie o miestnosti" "Téma" "Aktualizácia miestnosti…" "Zakázať" diff --git a/features/roomdirectory/impl/src/main/res/values-it/translations.xml b/features/roomdirectory/impl/src/main/res/values-it/translations.xml new file mode 100644 index 0000000000..04a9602d78 --- /dev/null +++ b/features/roomdirectory/impl/src/main/res/values-it/translations.xml @@ -0,0 +1,5 @@ + + + "Caricamento fallito" + "Elenco delle stanze" + diff --git a/features/roomlist/impl/src/main/res/values-be/translations.xml b/features/roomlist/impl/src/main/res/values-be/translations.xml index 39cbd31bc6..8da1365931 100644 --- a/features/roomlist/impl/src/main/res/values-be/translations.xml +++ b/features/roomlist/impl/src/main/res/values-be/translations.xml @@ -11,6 +11,8 @@ "Дадаць чат у абранае можна ў наладах чата. На дадзены момант вы можаце прыбраць фільтры, каб убачыць іншыя вашыя чаты." "У вас пакуль няма абраных чатаў" + "Запрашэнні" + "У вас няма непрынятых запрашэнняў." "Нізкі прыярытэт" "Вы можаце прыбраць фільтры, каб убачыць іншыя вашыя чаты." "У вас няма чатаў для гэтай катэгорыі" diff --git a/features/roomlist/impl/src/main/res/values-cs/translations.xml b/features/roomlist/impl/src/main/res/values-cs/translations.xml index 417e64863b..3a91eb04dc 100644 --- a/features/roomlist/impl/src/main/res/values-cs/translations.xml +++ b/features/roomlist/impl/src/main/res/values-cs/translations.xml @@ -11,6 +11,8 @@ "V nastavení chatu můžete přidat chat k oblíbeným. Prozatím můžete zrušit výběr filtrů, abyste viděli své další chaty" "Zatím nemáte oblíbené chaty" + "Pozvánky" + "Nemáte žádné nevyřízené pozvánky." "Nízká priorita" "Můžete zrušit výběr filtrů, abyste viděli své další chaty" "Nemáte chaty pro tento výběr" diff --git a/features/roomlist/impl/src/main/res/values-de/translations.xml b/features/roomlist/impl/src/main/res/values-de/translations.xml index a2cf494b1b..d02870ccd1 100644 --- a/features/roomlist/impl/src/main/res/values-de/translations.xml +++ b/features/roomlist/impl/src/main/res/values-de/translations.xml @@ -11,6 +11,8 @@ "In den Chat-Einstellungen kannst du einen Chat als Favorit hinzufügen. Um deine anderen Chats zu sehen wähle diesen Filter ab." "Du hast noch keine Chats als Favorit markiert." + "Einladungen" + "Du hast keine ausstehenden Einladungen." "Niedrige Priorität" "Wähle Filter ab, um Deine Chats zu sehen." "Du hast keine Chats für diese Auswahl" diff --git a/features/roomlist/impl/src/main/res/values-fr/translations.xml b/features/roomlist/impl/src/main/res/values-fr/translations.xml index 602b1ccd35..fd8606c96b 100644 --- a/features/roomlist/impl/src/main/res/values-fr/translations.xml +++ b/features/roomlist/impl/src/main/res/values-fr/translations.xml @@ -11,6 +11,8 @@ "Vous pouvez ajouter une discussion aux favoris depuis les paramètres de la discussion. En attendant, vous pouvez désélectionner des filtres pour voir vos autres salons." "Vous n’avez pas encore de discussions favorites" + "Invitations" + "Vous n’avez aucune invitation en attente." "Priorité basse" "Veuillez désélectionner des filtres pour voir vos discussions" "Vous n’avez pas de discussions pour cette sélection" diff --git a/features/roomlist/impl/src/main/res/values-hu/translations.xml b/features/roomlist/impl/src/main/res/values-hu/translations.xml index 559a481246..e25c493b13 100644 --- a/features/roomlist/impl/src/main/res/values-hu/translations.xml +++ b/features/roomlist/impl/src/main/res/values-hu/translations.xml @@ -11,6 +11,8 @@ "A csevegési beállításokban csevegéseket adhat hozzá a kedvencekhez. Egyelőre törölheti a szűrőket a többi csevegés megtekintéséhez." "Még nincsenek kedvenc csevegései" + "Meghívások" + "Nincsenek függőben lévő meghívásai." "Alacsony prioritás" "Kikapcsolhatja a szűrőket a többi csevegés megtekintéséhez" "Ehhez a kiválasztáshoz nem tartoznak csevegések" diff --git a/features/roomlist/impl/src/main/res/values-in/translations.xml b/features/roomlist/impl/src/main/res/values-in/translations.xml index 74c90c1319..8f194e1e34 100644 --- a/features/roomlist/impl/src/main/res/values-in/translations.xml +++ b/features/roomlist/impl/src/main/res/values-in/translations.xml @@ -11,6 +11,8 @@ "Anda dapat menambahkan percakapan ke favorit Anda dalam pengaturan percakapan. Untuk sementara, Anda dapat membatalkan pilihan saringan untuk melihat percakapan Anda yang lain" "Anda belum memiliki percakapan favorit" + "Undangan" + "Anda tidak memiliki undangan yang tertunda." "Prioritas Rendah" "Anda dapat membatalkan pilihan saringan untuk melihat percakapan Anda yang lain" "Anda tidak memiliki percakapan untuk pemilihan ini" diff --git a/features/roomlist/impl/src/main/res/values-it/translations.xml b/features/roomlist/impl/src/main/res/values-it/translations.xml index cd1261f3b3..05e41594a2 100644 --- a/features/roomlist/impl/src/main/res/values-it/translations.xml +++ b/features/roomlist/impl/src/main/res/values-it/translations.xml @@ -24,6 +24,7 @@ Non hai messaggi non letti!" "Tutte le conversazioni" "Segna come letto" "Segna come non letto" + "Sfoglia tutte le stanze" "Sembra che tu stia usando un nuovo dispositivo. Verificati con un altro dispositivo per accedere ai tuoi messaggi cifrati." "Verifica che sei tu" diff --git a/features/roomlist/impl/src/main/res/values-ru/translations.xml b/features/roomlist/impl/src/main/res/values-ru/translations.xml index d18fc1fd03..68cb98436d 100644 --- a/features/roomlist/impl/src/main/res/values-ru/translations.xml +++ b/features/roomlist/impl/src/main/res/values-ru/translations.xml @@ -1,7 +1,10 @@ "В настоящее время резервная копия вашего чата не синхронизирована. Требуется подтвердить вашим ключом восстановления, чтобы сохранить доступ к резервной копии чата." - "Подтвердите ключ восстановления" + + "Введите " + "ключ восстановления" + "Это одноразовый процесс, спасибо, что подождали." "Настройка учетной записи." "Создайте новую беседу или комнату" @@ -11,6 +14,8 @@ "Добавить чат в избранное можно в настройках чата. На данный момент вы можете убрать фильтры, чтобы увидеть другие ваши чаты." "У вас пока нет избранных чатов" + "Приглашает" + "У вас нет отложенных приглашений." "Низкий приоритет" "Вы можете убрать фильтры, чтобы увидеть другие ваши чаты." "У вас нет чатов для этой подборки" diff --git a/features/roomlist/impl/src/main/res/values-sk/translations.xml b/features/roomlist/impl/src/main/res/values-sk/translations.xml index 08320d1c30..101df1792d 100644 --- a/features/roomlist/impl/src/main/res/values-sk/translations.xml +++ b/features/roomlist/impl/src/main/res/values-sk/translations.xml @@ -11,6 +11,8 @@ "Môžete pridať konverzáciu medzi obľúbené v nastaveniach konverzácie. Zatiaľ môžete zrušiť výber filtrov, aby ste videli ostatné konverzácie" "Zatiaľ nemáte obľúbené konverzácie" + "Pozvánky" + "Nemáte žiadne čakajúce pozvánky." "Nízka priorita" "Môžete zrušiť výber filtrov, aby ste videli svoje ostatné konverzácie" "Nemáte konverzácie pre tento výber" diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/createkey/CreateNewRecoveryKeyNode.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/createkey/CreateNewRecoveryKeyNode.kt index df1e2d9528..33b52a4497 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/createkey/CreateNewRecoveryKeyNode.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/createkey/CreateNewRecoveryKeyNode.kt @@ -24,16 +24,19 @@ import com.bumble.appyx.core.plugin.Plugin import dagger.assisted.Assisted import dagger.assisted.AssistedInject import io.element.android.anvilannotations.ContributesNode +import io.element.android.libraries.core.meta.BuildMeta import io.element.android.libraries.di.SessionScope @ContributesNode(SessionScope::class) class CreateNewRecoveryKeyNode @AssistedInject constructor( @Assisted buildContext: BuildContext, @Assisted plugins: List, + private val buildMeta: BuildMeta, ) : Node(buildContext, plugins = plugins) { @Composable override fun View(modifier: Modifier) { CreateNewRecoveryKeyView( + desktopApplicationName = buildMeta.desktopApplicationName, modifier = modifier, onBackClicked = ::navigateUp, ) diff --git a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/createkey/CreateNewRecoveryKeyView.kt b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/createkey/CreateNewRecoveryKeyView.kt index ed3a5cd339..8974d1faa2 100644 --- a/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/createkey/CreateNewRecoveryKeyView.kt +++ b/features/securebackup/impl/src/main/kotlin/io/element/android/features/securebackup/impl/createkey/CreateNewRecoveryKeyView.kt @@ -49,6 +49,7 @@ import io.element.android.libraries.designsystem.theme.components.TopAppBar @OptIn(ExperimentalMaterial3Api::class) @Composable fun CreateNewRecoveryKeyView( + desktopApplicationName: String, onBackClicked: () -> Unit, modifier: Modifier = Modifier, ) { @@ -66,15 +67,15 @@ fun CreateNewRecoveryKeyView( title = stringResource(R.string.screen_create_new_recovery_key_title), iconStyle = BigIcon.Style.Default(CompoundIcons.Computer()) ) - Content() + Content(desktopApplicationName = desktopApplicationName) } } } @Composable -private fun Content() { +private fun Content(desktopApplicationName: String) { Column(modifier = Modifier.padding(horizontal = 16.dp), verticalArrangement = Arrangement.spacedBy(24.dp)) { - Item(index = 1, text = AnnotatedString(stringResource(R.string.screen_create_new_recovery_key_list_item_1))) + Item(index = 1, text = AnnotatedString(stringResource(R.string.screen_create_new_recovery_key_list_item_1, desktopApplicationName))) Item(index = 2, text = AnnotatedString(stringResource(R.string.screen_create_new_recovery_key_list_item_2))) Item( index = 3, @@ -129,6 +130,7 @@ private fun ItemNumber( internal fun CreateNewRecoveryKeyViewPreview() { ElementPreview { CreateNewRecoveryKeyView( + desktopApplicationName = "Element", onBackClicked = {}, ) } diff --git a/features/securebackup/impl/src/main/res/values-be/translations.xml b/features/securebackup/impl/src/main/res/values-be/translations.xml index 58011bad6e..9710ac77b1 100644 --- a/features/securebackup/impl/src/main/res/values-be/translations.xml +++ b/features/securebackup/impl/src/main/res/values-be/translations.xml @@ -9,7 +9,7 @@ "Ваша рэзервовая копія чата зараз не сінхранізавана." "Наладзьце аднаўленне" "Атрымайце доступ да зашыфраваных паведамленняў, калі вы страціце ўсе свае прылады або выйдзеце з сістэмы %1$s усюды." - "Адкрыйце Element на настольнай прыладзе" + "Адкрыйце %1$s на настольнай прыладзе" "Увайдзіце ў свой уліковы запіс яшчэ раз" "Калі будзе прапанавана пацвердзіць вашу прыладу, выберыце %1$s" "“Скінуць усе”" @@ -20,8 +20,8 @@ "Вы страціце зашыфраваныя паведамленні, калі выйдзеце з усіх прылад." "Вы ўпэўнены, што хочаце адключыць рэзервовае капіраванне?" "Адключэнне рэзервовага капіравання прывядзе да выдалення бягучай рэзервовай копіі ключа шыфравання і адключэння іншых функцый бяспекі. У гэтым выпадку вы:" - "Няма зашыфраванай гісторыі паведамленняў на новых прыладах" - "Калі вы выходзіце з сістэмы, то губляеце доступ да зашыфраваных паведамленняў %1$s усюды" + "Не будзеце мець зашыфраванай гісторыі паведамленняў на новых прыладах" + "Страціце доступ да зашыфраваных паведамленняў, калі вы выйдзеце з усіх %1$s сеансаў" "Вы ўпэўнены, што хочаце адключыць рэзервовае капіраванне?" "Атрымайце новы ключ аднаўлення, калі вы страцілі існуючы. Пасля змены ключа аднаўлення ваш стары больш не будзе працаваць." "Стварыць новы ключ аднаўлення" diff --git a/features/securebackup/impl/src/main/res/values-cs/translations.xml b/features/securebackup/impl/src/main/res/values-cs/translations.xml index f8a2fe8747..5f9ef80e54 100644 --- a/features/securebackup/impl/src/main/res/values-cs/translations.xml +++ b/features/securebackup/impl/src/main/res/values-cs/translations.xml @@ -9,7 +9,7 @@ "Vaše záloha chatu není aktuálně synchronizována." "Nastavení obnovy" "Získejte přístup ke svým zašifrovaným zprávám, pokud ztratíte všechna zařízení nebo jste všude odhlášeni z %1$s." - "Otevřít Element na stolním počítači" + "Otevřít %1$s na stolním počítači" "Znovu se přihlaste ke svému účtu" "Když budete vyzváni k ověření vašeho zařízení, vyberte %1$s" "\"Resetovat vše\"" diff --git a/features/securebackup/impl/src/main/res/values-de/translations.xml b/features/securebackup/impl/src/main/res/values-de/translations.xml index 7336b28b70..f78f0cb3e3 100644 --- a/features/securebackup/impl/src/main/res/values-de/translations.xml +++ b/features/securebackup/impl/src/main/res/values-de/translations.xml @@ -11,7 +11,7 @@ "Erhalte Zugriff auf deine verschlüsselten Nachrichten, wenn du alle deine Geräte verlierst oder von %1$s überall abgemeldet bist." "Öffne " - "Element" + "%1$s" " auf einem " "Desktop-Gerät" diff --git a/features/securebackup/impl/src/main/res/values-fr/translations.xml b/features/securebackup/impl/src/main/res/values-fr/translations.xml index 9f3f304b25..5cedec5328 100644 --- a/features/securebackup/impl/src/main/res/values-fr/translations.xml +++ b/features/securebackup/impl/src/main/res/values-fr/translations.xml @@ -9,6 +9,13 @@ "La sauvegarde des discussions est désynchronisée." "Configurer la récupération" "Accédez à vos messages chiffrés si vous perdez tous vos appareils ou que vous êtes déconnectés de %1$s partout." + "Ouvrez %1$s sur un ordinateur" + "Connectez-vous à nouveau à votre compte" + "Lorsque vous devrez vérifier la session, choisissez %1$s" + "“Réinitialiser”" + "Suivez les instructions pour créer une nouvelle clé de récupération" + "Enregistrez votre nouvelle clé dans un gestionnaire de mots de passe ou dans une note chiffrée" + "Réinitialisez le chiffrement de votre compte en utilisant un autre appareil" "Désactiver" "Vous perdrez vos messages chiffrés si vous vous déconnectez de toutes vos sessions." "Êtes-vous certain de vouloir désactiver la sauvegarde?" @@ -21,13 +28,15 @@ "Assurez-vous de conserver la clé dans un endroit sûr." "Clé de récupération modifée" "Changer la clé de récupération?" - "Saisissez votre clé de récupération pour accéder à l’historique de vos discussions." + "Créer une nouvelle clé de récupération" + "Assurez vous que personne d’autre ne regarde l’écran!" "Veuillez réessayer pour accéder à votre historique chiffré." "Clé de récupération incorrecte" - "Saisissez la clé à 48 caractères." + "Si vous avez une clé de sécurité ou une phrase de sécurité, cela fonctionnera également." + "Clé de récupération" "Saisissez la clé ici…" "Clé de récupération confirmée" - "Confirmez votre clé de récupération" + "Saisissez votre clé de récupération" "Clé de récupération copiée" "Génération…" "Enregistrer la clé" diff --git a/features/securebackup/impl/src/main/res/values-hu/translations.xml b/features/securebackup/impl/src/main/res/values-hu/translations.xml index 1bd37c4b64..a3fed4e584 100644 --- a/features/securebackup/impl/src/main/res/values-hu/translations.xml +++ b/features/securebackup/impl/src/main/res/values-hu/translations.xml @@ -9,7 +9,7 @@ "A csevegéselőzményei nincsenek szinkronban." "Helyreállítás beállítása" "Szerezzen hozzáférést a titkosított üzeneteihez, ha elvesztette az összes eszközét, vagy ha mindenütt kijelentkezett az %1$sből." - "Nyissa meg az Elementet egy asztali eszközön" + "Nyissa meg az %1$set egy asztali eszközön" "Jelentkezzen be újra a fiókjába" "Amikor az eszköz ellenőrzését kéri, válassza ezt a lehetőséget: %1$s" "„Minden visszaállítása”" diff --git a/features/securebackup/impl/src/main/res/values-in/translations.xml b/features/securebackup/impl/src/main/res/values-in/translations.xml index 016d0e3057..60c277d6c3 100644 --- a/features/securebackup/impl/src/main/res/values-in/translations.xml +++ b/features/securebackup/impl/src/main/res/values-in/translations.xml @@ -9,7 +9,7 @@ "Pencadangan percakapan Anda saat ini tidak tersinkron." "Siapkan pemulihan" "Dapatkan akses ke pesan terenkripsi Anda jika Anda kehilangan semua perangkat Anda atau keluar dari %1$s di mana pun." - "Buka Element di perangkat desktop" + "Buka %1$s di perangkat desktop" "Masuk ke akun Anda lagi" "Saat diminta untuk memverifikasi perangkat Anda, pilih %1$s" "“Atur ulang semua”" @@ -32,7 +32,7 @@ "Pastikan tidak ada yang bisa melihat layar ini!" "Silakan coba lagi untuk mengonfirmasi akses ke cadangan percakapan Anda." "Kunci pemulihan salah" - "Jika Anda memiliki frasa sandi pemulihan atau frasa/kunci sandi rahasia, ini juga dapat digunakan." + "Jika Anda memiliki kunci keamanan atau frasa keamanan, ini juga bisa digunakan." "Kunci pemulihan atau kode sandi" "Masukkan…" "Kunci pemulihan dikonfirmasi" diff --git a/features/securebackup/impl/src/main/res/values-ru/translations.xml b/features/securebackup/impl/src/main/res/values-ru/translations.xml index acacc8d60b..b311575c4b 100644 --- a/features/securebackup/impl/src/main/res/values-ru/translations.xml +++ b/features/securebackup/impl/src/main/res/values-ru/translations.xml @@ -15,7 +15,7 @@ "Резервная копия чата в настоящее время не синхронизирована." "Настроить восстановление" "Получите доступ к зашифрованным сообщениям, если вы потеряете все свои устройства или выйдете из системы %1$s отовсюду." - "Откройте Element на настольном устройстве" + "Откройте %1$s на настольном устройстве" "Войдите в свой аккаунт еще раз" "Когда вас попросят подтвердить устройство, выберите %1$s" "“Сбросить все”" diff --git a/features/securebackup/impl/src/main/res/values-sk/translations.xml b/features/securebackup/impl/src/main/res/values-sk/translations.xml index fdc70027b3..8b6be92219 100644 --- a/features/securebackup/impl/src/main/res/values-sk/translations.xml +++ b/features/securebackup/impl/src/main/res/values-sk/translations.xml @@ -9,7 +9,7 @@ "Vaša záloha konverzácie nie je momentálne synchronizovaná." "Nastaviť obnovovanie" "Získajte prístup k vašim šifrovaným správam aj keď stratíte všetky svoje zariadenia alebo sa odhlásite zo všetkých %1$s zariadení." - "Otvoriť Element v stolnom počítači" + "Otvoriť %1$s v stolnom počítači" "Znova sa prihláste do svojho účtu" "Keď sa zobrazí výzva na overenie vášho zariadenia, vyberte %1$s" "\"Obnoviť všetko\"" @@ -32,7 +32,7 @@ "Uistite sa, že túto obrazovku nikto nevidí!" "Skúste prosím znova potvrdiť prístup k vašej zálohe konverzácie." "Nesprávny kľúč na obnovenie" - "Ak máte frázu na obnovenie alebo tajné heslo/kľúč, bude to tiež fungovať." + "Ak máte bezpečnostný kľúč alebo bezpečnostnú frázu, bude to fungovať tiež." "Kľúč na obnovenie alebo prístupový kód" "Zadať…" "Kľúč na obnovu potvrdený" diff --git a/features/securebackup/impl/src/main/res/values/localazy.xml b/features/securebackup/impl/src/main/res/values/localazy.xml index 9e188d1251..d3fb41857e 100644 --- a/features/securebackup/impl/src/main/res/values/localazy.xml +++ b/features/securebackup/impl/src/main/res/values/localazy.xml @@ -9,7 +9,7 @@ "Your chat backup is currently out of sync." "Set up recovery" "Get access to your encrypted messages if you lose all your devices or are signed out of %1$s everywhere." - "Open Element in a desktop device" + "Open %1$s in a desktop device" "Sign into your account again" "When asked to verify your device, select %1$s" "“Reset all”" diff --git a/features/signedout/impl/src/main/res/values-hu/translations.xml b/features/signedout/impl/src/main/res/values-hu/translations.xml index a73be9ea55..2b8bd3528e 100644 --- a/features/signedout/impl/src/main/res/values-hu/translations.xml +++ b/features/signedout/impl/src/main/res/values-hu/translations.xml @@ -2,7 +2,7 @@ "Megváltoztatta a jelszavát egy másik munkamenetben" "Törölte a munkamenetet egy másik munkamenetből" - "A kiszolgáló rendszergazdája érvénytelenítette a hozzáférését" - "Előfordulhat, hogy az alábbiakban felsorolt okok valamelyike miatt került kijelentkezésre. Kérjük, jelentkezzen be újra, hogy folytatni tudja a %s használatát." + "A kiszolgáló adminisztrátora érvénytelenítette a hozzáférését" + "Előfordulhat, hogy az alábbiakban felsorolt okok valamelyike miatt került kijelentkeztetésre. Jelentkezzen be újra, hogy folytatni tudja az %s használatát." "Kijelentkezett" diff --git a/features/verifysession/impl/src/main/res/values-fr/translations.xml b/features/verifysession/impl/src/main/res/values-fr/translations.xml index a37a51f8c5..9f75e36ad9 100644 --- a/features/verifysession/impl/src/main/res/values-fr/translations.xml +++ b/features/verifysession/impl/src/main/res/values-fr/translations.xml @@ -1,5 +1,6 @@ + "Créer une nouvelle clé de récupération" "Vérifier cette session pour configurer votre messagerie sécurisée." "Confirmez votre identité" "Vous pouvez désormais lire ou envoyer des messages en toute sécurité, et toute personne avec qui vous discutez peut également faire confiance à cette session." diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index a4cb123520..f638e4d4fc 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -38,7 +38,7 @@ serialization_json = "1.6.3" showkase = "1.0.2" appyx = "1.4.0" sqldelight = "2.0.2" -wysiwyg = "2.36.0" +wysiwyg = "2.37.0" telephoto = "0.9.0" # DI @@ -175,7 +175,7 @@ opusencoder = "io.element.android:opusencoder:1.1.0" kotlinpoet = "com.squareup:kotlinpoet:1.16.0" # Analytics -posthog = "com.posthog:posthog-android:3.1.16" +posthog = "com.posthog:posthog-android:3.1.17" sentry = "io.sentry:sentry-android:7.8.0" # Note: only 0.19.0 will compile properly # main branch can be tested replacing the version with main-SNAPSHOT diff --git a/libraries/core/src/main/kotlin/io/element/android/libraries/core/meta/BuildMeta.kt b/libraries/core/src/main/kotlin/io/element/android/libraries/core/meta/BuildMeta.kt index cac30e02e4..ad5581f631 100644 --- a/libraries/core/src/main/kotlin/io/element/android/libraries/core/meta/BuildMeta.kt +++ b/libraries/core/src/main/kotlin/io/element/android/libraries/core/meta/BuildMeta.kt @@ -20,6 +20,8 @@ data class BuildMeta( val buildType: BuildType, val isDebuggable: Boolean, val applicationName: String, + val productionApplicationName: String, + val desktopApplicationName: String, val applicationId: String, val lowPrivacyLoggingEnabled: Boolean, val versionName: String, diff --git a/libraries/eventformatter/impl/src/main/res/values-hu/translations.xml b/libraries/eventformatter/impl/src/main/res/values-hu/translations.xml index 5bcb239126..c23e973217 100644 --- a/libraries/eventformatter/impl/src/main/res/values-hu/translations.xml +++ b/libraries/eventformatter/impl/src/main/res/values-hu/translations.xml @@ -11,7 +11,7 @@ "Eltávolította a megjelenítendő nevét (ez volt: %1$s)" "%1$s beállította a megjelenítendő nevét: %2$s" "Beállította a megjelenítendő nevét: %1$s" - "%1$s elő lett léptetve rendszergazdává" + "%1$s elő lett léptetve adminisztrátorrá" "%1$s elő lett léptetve moderátorrá" "%1$s megváltoztatta a szoba profilképét" "Megváltoztatta a szoba profilképét" diff --git a/libraries/eventformatter/impl/src/main/res/values-ru/translations.xml b/libraries/eventformatter/impl/src/main/res/values-ru/translations.xml index 459b4919a6..5e1cde283e 100644 --- a/libraries/eventformatter/impl/src/main/res/values-ru/translations.xml +++ b/libraries/eventformatter/impl/src/main/res/values-ru/translations.xml @@ -1,7 +1,7 @@ - "(аватар тоже был изменен)" - "%1$s сменили свой аватар" + "(изображение тоже было изменено)" + "%1$s сменили свое изображение" "Вы сменили изображение" "%1$s был понижен в должности до участника" "%1$s был понижен в должности до модератора" @@ -13,10 +13,10 @@ "Вы установили отображаемое имя на %1$s" "%1$s был повышен до уровня администратора" "%1$s был повышен до модератора" - "%1$s изменил аватар комнаты" - "Вы изменили аватар комнаты" - "%1$s удалил аватар комнаты" - "Вы удалили аватар комнаты" + "%1$s изменил изображение комнаты" + "Вы изменили изображение комнаты" + "%1$s удалил изображение комнаты" + "Вы удалили изображение комнаты" "%1$s заблокировал %2$s" "Вы заблокировали %1$s" "%1$s создал комнату" diff --git a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/core/BuildMeta.kt b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/core/BuildMeta.kt index f3a704ddc5..2a70a56051 100644 --- a/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/core/BuildMeta.kt +++ b/libraries/matrix/test/src/main/kotlin/io/element/android/libraries/matrix/test/core/BuildMeta.kt @@ -23,6 +23,8 @@ fun aBuildMeta( buildType: BuildType = BuildType.DEBUG, isDebuggable: Boolean = true, applicationName: String = "", + productionApplicationName: String = applicationName, + desktopApplicationName: String = applicationName, applicationId: String = "", lowPrivacyLoggingEnabled: Boolean = true, versionName: String = "", @@ -32,15 +34,17 @@ fun aBuildMeta( flavorDescription: String = "", flavorShortDescription: String = "", ) = BuildMeta( - buildType, - isDebuggable, - applicationName, - applicationId, - lowPrivacyLoggingEnabled, - versionName, - versionCode, - gitRevision, - gitBranchName, - flavorDescription, - flavorShortDescription + buildType = buildType, + isDebuggable = isDebuggable, + applicationName = applicationName, + productionApplicationName = productionApplicationName, + desktopApplicationName = desktopApplicationName, + applicationId = applicationId, + lowPrivacyLoggingEnabled = lowPrivacyLoggingEnabled, + versionName = versionName, + versionCode = versionCode, + gitRevision = gitRevision, + gitBranchName = gitBranchName, + flavorDescription = flavorDescription, + flavorShortDescription = flavorShortDescription ) diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/TextComposer.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/TextComposer.kt index caa5e9f96b..2ac322827c 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/TextComposer.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/TextComposer.kt @@ -637,7 +637,7 @@ internal fun TextComposerSimplePreview() = ElementPreview { }, { ATextComposer( - aRichTextEditorState(initialText = "A message without focus", initialFocus = false), + aRichTextEditorState(initialText = "A message without focus"), voiceMessageState = VoiceMessageState.Idle, composerMode = MessageComposerMode.Normal, enableTextFormatting = true, @@ -654,7 +654,7 @@ internal fun TextComposerSimplePreview() = ElementPreview { internal fun TextComposerFormattingPreview() = ElementPreview { PreviewColumn(items = persistentListOf({ ATextComposer( - aRichTextEditorState(initialText = "", initialFocus = false), + aRichTextEditorState(), voiceMessageState = VoiceMessageState.Idle, showTextFormatting = true, composerMode = MessageComposerMode.Normal, @@ -664,7 +664,7 @@ internal fun TextComposerFormattingPreview() = ElementPreview { ) }, { ATextComposer( - aRichTextEditorState(initialText = "A message", initialFocus = false), + aRichTextEditorState(initialText = "A message"), voiceMessageState = VoiceMessageState.Idle, showTextFormatting = true, composerMode = MessageComposerMode.Normal, @@ -676,7 +676,6 @@ internal fun TextComposerFormattingPreview() = ElementPreview { ATextComposer( aRichTextEditorState( initialText = "A message\nWith several lines\nTo preview larger textfields and long lines with overflow", - initialFocus = false ), voiceMessageState = VoiceMessageState.Idle, showTextFormatting = true, @@ -710,7 +709,7 @@ internal fun TextComposerReplyPreview() = ElementPreview { items = persistentListOf( { ATextComposer( - aRichTextEditorState(""), + aRichTextEditorState(), voiceMessageState = VoiceMessageState.Idle, composerMode = MessageComposerMode.Reply( isThreaded = false, @@ -728,7 +727,7 @@ internal fun TextComposerReplyPreview() = ElementPreview { }, { ATextComposer( - RichTextEditorState(""), + aRichTextEditorState(), voiceMessageState = VoiceMessageState.Idle, composerMode = MessageComposerMode.Reply( isThreaded = true, @@ -839,7 +838,7 @@ internal fun TextComposerVoicePreview() = ElementPreview { fun VoicePreview( voiceMessageState: VoiceMessageState ) = ATextComposer( - RichTextEditorState("", initialFocus = true), + aRichTextEditorState(initialFocus = true), voiceMessageState = voiceMessageState, composerMode = MessageComposerMode.Normal, enableTextFormatting = true, diff --git a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/TextFormatting.kt b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/TextFormatting.kt index 670bb96049..7662828a14 100644 --- a/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/TextFormatting.kt +++ b/libraries/textcomposer/impl/src/main/kotlin/io/element/android/libraries/textcomposer/components/TextFormatting.kt @@ -35,6 +35,7 @@ import io.element.android.libraries.designsystem.preview.ElementPreview import io.element.android.libraries.designsystem.preview.PreviewsDayNight import io.element.android.libraries.textcomposer.R import io.element.android.libraries.textcomposer.TextComposerLinkDialog +import io.element.android.libraries.textcomposer.aRichTextEditorState import io.element.android.wysiwyg.compose.RichTextEditorState import io.element.android.wysiwyg.view.models.InlineFormat import io.element.android.wysiwyg.view.models.LinkAction @@ -209,5 +210,5 @@ private fun ActionState?.toButtonState(): FormattingOptionState = @PreviewsDayNight @Composable internal fun TextFormattingPreview() = ElementPreview { - TextFormatting(state = RichTextEditorState()) + TextFormatting(state = aRichTextEditorState()) } diff --git a/libraries/ui-strings/src/main/res/values-be/translations.xml b/libraries/ui-strings/src/main/res/values-be/translations.xml index 659f71e754..31ce0e9ffe 100644 --- a/libraries/ui-strings/src/main/res/values-be/translations.xml +++ b/libraries/ui-strings/src/main/res/values-be/translations.xml @@ -192,7 +192,7 @@ "Захаваныя змены" "Захаванне" "Блакіроўка экрана" - "Шукаць карыстальніка" + "Шукаць кагосьці" "Вынікі пошуку" "Бяспека" "Прагледжана" @@ -249,6 +249,12 @@ "Гэй, пагавары са мной у %1$s: %2$s" "%1$s Android" "Паведаміць аб памылцы з дапамогай Rageshake" + "Далучыцца да пакоя" + "Націсніце, каб далучыцца" + "Націсніце кнопку ніжэй, і адміністратар пакоя атрымае апавяшчэнне. Вы зможаце далучыцца да размовы пасля зацвярджэння." + "Вы павінны быць удзельнікам гэтага пакоя каб прагледзець гісторыю паведамленняў." + "Вы хочаце далучыцца да гэтага пакоя?" + "Папярэдні прагляд недаступны" "Не ўдалося выбраць носьбіт, паўтарыце спробу." "Не атрымалася апрацаваць медыяфайл для загрузкі, паспрабуйце яшчэ раз." "Не атрымалася загрузіць медыяфайлы, паспрабуйце яшчэ раз." diff --git a/libraries/ui-strings/src/main/res/values-de/translations.xml b/libraries/ui-strings/src/main/res/values-de/translations.xml index b7f24c80c6..9de81a7beb 100644 --- a/libraries/ui-strings/src/main/res/values-de/translations.xml +++ b/libraries/ui-strings/src/main/res/values-de/translations.xml @@ -247,6 +247,12 @@ "Hey, sprich mit mir auf %1$s: %2$s" "%1$s Android" "Schüttel heftig zum Melden von Fehlern" + "Raum beitreten" + "Anklopfen" + "Klopfe an um einen Raumadministrator zu benachrichtigen. Nach der Freigabe kannst du dich an der Unterhaltung beteiligen." + "Du musst Mitglied in diesem Raum sein, um den Nachrichtenverlauf zu sehen." + "Willst du diesem Raum beitreten?" + "Vorschau nicht verfügbar" "Medienauswahl fehlgeschlagen, bitte versuche es erneut." "Fehler beim Verarbeiten des hochgeladenen Mediums. Bitte versuche es erneut." "Das Hochladen der Medien ist fehlgeschlagen. Bitte versuche es erneut." diff --git a/libraries/ui-strings/src/main/res/values-fr/translations.xml b/libraries/ui-strings/src/main/res/values-fr/translations.xml index 1b9befbc45..037634e46b 100644 --- a/libraries/ui-strings/src/main/res/values-fr/translations.xml +++ b/libraries/ui-strings/src/main/res/values-fr/translations.xml @@ -245,6 +245,12 @@ "Salut, parle-moi sur %1$s : %2$s" "%1$s Android" "Rageshake pour signaler un problème" + "Rejoindre" + "Demander à joindre" + "Cliquez ci-dessous et un administrateur sera prévenu. Une fois votre demande approuvée, pour pourrez rejoindre la discussion." + "Vous devez être un membre du salon pour pouvoir lire l’historique des messages." + "Vous souhaitez rejoindre ce salon?" + "La prévisualisation n’est pas disponible" "Échec de la sélection du média, veuillez réessayer." "Échec du traitement des médias à télécharger, veuillez réessayer." "Échec du téléchargement du média, veuillez réessayer." @@ -253,6 +259,7 @@ "Bloquer" "Les utilisateurs bloqués ne pourront pas vous envoyer de messages et tous leurs messages seront masqués. Vous pouvez les débloquer à tout moment." "Bloquer l’utilisateur" + "Profil" "Débloquer" "Vous pourrez à nouveau voir tous ses messages." "Débloquer l’utilisateur" diff --git a/libraries/ui-strings/src/main/res/values-in/translations.xml b/libraries/ui-strings/src/main/res/values-in/translations.xml index fdbf31da25..4968a05e1f 100644 --- a/libraries/ui-strings/src/main/res/values-in/translations.xml +++ b/libraries/ui-strings/src/main/res/values-in/translations.xml @@ -241,6 +241,12 @@ "Hai, bicaralah dengan saya di %1$s: %2$s" "%1$s Android" "Rageshake untuk melaporkan kutu" + "Gabung dengan ruangan" + "Ketuk untuk bergabung" + "Klik tombol di bawah ini dan administrator kamar akan diberi tahu. Anda akan dapat bergabung dengan percakapan setelah disetujui." + "Anda harus menjadi anggota ruangan ini untuk melihat riwayat pesan." + "Ingin bergabung dengan ruangan ini?" + "Pratinjau tidak tersedia" "Gagal memilih media, silakan coba lagi." "Gagal memproses media untuk diunggah, silakan coba lagi." "Gagal mengunggah media, silakan coba lagi." diff --git a/libraries/ui-strings/src/main/res/values-sk/translations.xml b/libraries/ui-strings/src/main/res/values-sk/translations.xml index f777ed6b31..591b2ad7b8 100644 --- a/libraries/ui-strings/src/main/res/values-sk/translations.xml +++ b/libraries/ui-strings/src/main/res/values-sk/translations.xml @@ -248,6 +248,12 @@ "Ahoj, porozprávajte sa so mnou na %1$s: %2$s" "%1$s Android" "Zúrivo potriasť pre nahlásenie chyby" + "Pripojiť sa do miestnosti" + "Zaklopaním sa pripojíte" + "Kliknite na tlačidlo nižšie a správca miestnosti bude informovaný. Po schválení sa budete môcť pripojiť ku konverzácii." + "Ak chcete zobraziť históriu správ, musíte byť členom tejto miestnosti." + "Chcete sa pripojiť do tejto miestnosti?" + "Náhľad nie je k dispozícii" "Nepodarilo sa vybrať médium, skúste to prosím znova." "Nepodarilo sa spracovať médiá na odoslanie, skúste to prosím znova." "Nepodarilo sa nahrať médiá, skúste to prosím znova." diff --git a/libraries/ui-strings/src/main/res/values/localazy.xml b/libraries/ui-strings/src/main/res/values/localazy.xml index f19696065a..c927eec7cd 100644 --- a/libraries/ui-strings/src/main/res/values/localazy.xml +++ b/libraries/ui-strings/src/main/res/values/localazy.xml @@ -245,6 +245,12 @@ "Hey, talk to me on %1$s: %2$s" "%1$s Android" "Rageshake to report bug" + "Join room" + "Knock to join" + "Click the button below and a room administrator will be notified. You’ll be able to join the conversation once approved." + "You must be a member of this room to view the message history." + "Want to join this room?" + "Preview is not available" "Failed selecting media, please try again." "Failed processing media to upload, please try again." "Failed uploading media, please try again." diff --git a/plugins/src/main/kotlin/Versions.kt b/plugins/src/main/kotlin/Versions.kt index d1c61e4285..5489393e86 100644 --- a/plugins/src/main/kotlin/Versions.kt +++ b/plugins/src/main/kotlin/Versions.kt @@ -56,7 +56,7 @@ private const val versionMinor = 4 // Note: even values are reserved for regular release, odd values for hotfix release. // When creating a hotfix, you should decrease the value, since the current value // is the value for the next regular release. -private const val versionPatch = 8 +private const val versionPatch = 9 object Versions { val versionCode = 4_000_000 + versionMajor * 1_00_00 + versionMinor * 1_00 + versionPatch diff --git a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/Singleton.kt b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/Singleton.kt index 06e8fb02f4..9c09d0bc98 100644 --- a/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/Singleton.kt +++ b/samples/minimal/src/main/kotlin/io/element/android/samples/minimal/Singleton.kt @@ -33,6 +33,8 @@ object Singleton { isDebuggable = true, buildType = BuildType.DEBUG, applicationName = "EAX-Minimal", + productionApplicationName = "EAX-Minimal", + desktopApplicationName = "EAX-Minimal-Desktop", applicationId = "io.element.android.samples.minimal", lowPrivacyLoggingEnabled = false, versionName = "0.1.0", diff --git a/screenshots/html/script.js b/screenshots/html/script.js index 763d4b1abf..5e4fb18133 100644 --- a/screenshots/html/script.js +++ b/screenshots/html/script.js @@ -18,6 +18,7 @@ import { screenshots } from './data.js'; const URL_PARAM_LANGUAGES = "l"; const URL_PARAM_IMAGE_WIDTH = "w"; const URL_PARAM_ALL_SCREENSHOTS = "a"; +const URL_PARAM_IF_MODIFIED_AFTER = "d"; // Get the base url of the current page const baseUrl = window.location.href.split('/').slice(0, -1).join('/'); @@ -53,6 +54,8 @@ if (width) { } // Read showAllScreenshots from the url params let showAllScreenshots = urlParams.get(URL_PARAM_ALL_SCREENSHOTS) === 1; +// Read the minimum date of modification from the url params +let minModifiedDayTime = urlParams.get(URL_PARAM_IF_MODIFIED_AFTER); function updatePageUrl() { // Update the URL displayed in the browser without loading again the page @@ -74,6 +77,11 @@ function updatePageUrl() { } else { queryParams.delete(URL_PARAM_ALL_SCREENSHOTS); } + if (minModifiedDayTime > 0) { + queryParams.set(URL_PARAM_IF_MODIFIED_AFTER, minModifiedDayTime); + } else { + queryParams.delete(URL_PARAM_IF_MODIFIED_AFTER); + } // Replace the current URL with the new one, including the fragment history.replaceState(null, '', `${window.location.pathname}?${queryParams}${window.location.hash}`); } @@ -141,6 +149,30 @@ function addForm() { }; label2.appendChild(input2); form.appendChild(label2); + // Add a date picker to input the minimum date of modification + const label3 = document.createElement('label'); + label3.textContent = 'If modified since:'; + form.appendChild(label3); + const dateInput = document.createElement('input'); + dateInput.type = 'date'; + if (minModifiedDayTime > 0) { + dateInput.value = new Date(minModifiedDayTime * 86400000).toISOString().split('T')[0]; + } + dateInput.onchange = (e) => { + if (e.target.value === "") { + minModifiedDayTime = 0; + } else { + minModifiedDayTime = new Date(e.target.value).getTime() / 86400000; + } + updatePageUrl(); + addTable(); + }; + form.appendChild(dateInput); + // Add a span with id result to display the number of lines + const lines = document.createElement('span'); + lines.id = 'lines'; + lines.textContent = "..."; + form.appendChild(lines); document.getElementById('form_container').appendChild(form); } @@ -159,17 +191,27 @@ function createMissingImageElement() { return text; } -function createImageElement(fullFile) { +function convertToHumanReadableDate(modifiedDayTime) { + var date = new Date(modifiedDayTime * 86400000); + return date.toLocaleDateString(); +} + +function createImageElement(fullFile, modifiedDayTime) { const img = document.createElement('img'); img.className = "screenshot"; img.src = `${baseUrl}/${fullFile}`; - img.title = fullFile; + if(modifiedDayTime > 0) { + img.title = fullFile + "\n\nModified on " + convertToHumanReadableDate(modifiedDayTime); + } else { + img.title = fullFile; + } img.alt = "Missing image"; img.width = imageWidth; return img; } function addTable() { + var linesCounter = 0; // Remove any previous table document.getElementById('screenshots_container').innerHTML = ''; // screenshots contains a table of screenshots, lets convert to an html table @@ -209,30 +251,31 @@ function addTable() { const td = document.createElement('td'); if (languageIndex == 0) { // English file - td.appendChild(createImageElement(`${englishBasePath}/${englishFile}.png`)); + td.appendChild(createImageElement(`${englishBasePath}/${englishFile}.png`, 0)); } else if (languageIndex == 1) { // Dark English file if (screenshots[screenshotIndex][1].length > 0) { hasTranslatedFiles = true; - td.appendChild(createImageElement(`${englishBasePath}/${screenshots[screenshotIndex][1]}.png`)); + td.appendChild(createImageElement(`${englishBasePath}/${screenshots[screenshotIndex][1]}.png`, 0)); } else { td.appendChild(createMissingImageElement()); } } else { - let hasFile = screenshots[screenshotIndex][languageIndex]; - if (hasFile === 0) { + let modifiedDayTime = screenshots[screenshotIndex][languageIndex]; + if (modifiedDayTime === 0) { td.appendChild(createMissingImageElement()); - } else { + } else if(modifiedDayTime >= minModifiedDayTime) { hasTranslatedFiles = true; // Foreign file is the same as the english file, replacing the language const foreignFile = englishFile.replace("en]", `${dataLanguages[languageIndex]}]`).replace("_S_", "_T_") const fullForeignFile = `${dataLanguages[languageIndex]}/${foreignFile}.png`; - td.appendChild(createImageElement(fullForeignFile)); + td.appendChild(createImageElement(fullForeignFile, modifiedDayTime)); } } tr.appendChild(td); } if (showAllScreenshots || hasTranslatedFiles) { + linesCounter++; // Add a header for row, if different from previous if (niceName != currentHeaderValue) { currentHeaderValue = niceName; @@ -255,6 +298,8 @@ function addTable() { // Add the table to the div with id screenshots_container document.getElementById('screenshots_container').appendChild(table); + // Update the number of lines + document.getElementById('lines').textContent = `${linesCounter} lines`; } addForm(); diff --git a/tools/localazy/checkForbiddenTerms.py b/tools/localazy/checkForbiddenTerms.py new file mode 100755 index 0000000000..e642f32c54 --- /dev/null +++ b/tools/localazy/checkForbiddenTerms.py @@ -0,0 +1,62 @@ +#!/usr/bin/env python3 + +import sys +from xml.dom import minidom + +file = sys.argv[1] + +# Dict of forbidden terms, with exceptions for some String name +# Keys are the terms, values are the exceptions. +forbiddenTerms = { + "Element": [ + # Those 2 strings are only used in debug version + "screen_advanced_settings_element_call_base_url", + "screen_advanced_settings_element_call_base_url_description", + # only used for element.io homeserver, so it's fine + "screen_server_confirmation_message_login_element_dot_io", + # "Be in your element", will probably be changed on the forks, so we can ignore. + "screen_onboarding_welcome_title", + ] +} + +content = minidom.parse(file) + +errors = [] + +### Strings +for elem in content.getElementsByTagName('string'): + name = elem.attributes['name'].value + # Continue if value is empty + child = elem.firstChild + if child is None: + # Should not happen + continue + value = child.nodeValue + # If value contains a forbidden term, add the error to errors + for (term, exceptions) in forbiddenTerms.items(): + if term in value and name not in exceptions: + errors.append('Forbidden term "' + term + '" in string: "' + name + '": ' + value) + +### Plurals +for elem in content.getElementsByTagName('plurals'): + name = elem.attributes['name'].value + for it in elem.childNodes: + if it.nodeType != it.ELEMENT_NODE: + continue + # Continue if value is empty + child = it.firstChild + if child is None: + # Should not happen + continue + value = child.nodeValue + # If value contains a forbidden term, add the error to errors + for (term, exceptions) in forbiddenTerms.items(): + if term in value and name not in exceptions: + errors.append('Forbidden term "' + term + '" in plural: "' + name + '": ' + value) + +# If errors is not empty print the report +if errors: + print('Error(s) in file ' + file + ":", file=sys.stderr) + for error in errors: + print(" - " + error, file=sys.stderr) + sys.exit(1) diff --git a/tools/localazy/downloadStrings.sh b/tools/localazy/downloadStrings.sh index 43e916a8a4..a447a5c16f 100755 --- a/tools/localazy/downloadStrings.sh +++ b/tools/localazy/downloadStrings.sh @@ -40,6 +40,9 @@ fi echo "Importing the strings..." localazy download --config ./tools/localazy/localazy.json +echo "Removing the generated config" +rm ./tools/localazy/localazy.json + echo "Formatting the resources files..." find . -name 'localazy.xml' -exec ./tools/localazy/formatXmlResourcesFile.py {} \; if [[ $allFiles == 1 ]]; then @@ -54,7 +57,10 @@ echo "Deleting all the folders values-id..." find . -type d -name 'values-id' -exec rm -rf {} 2> /dev/null \; set -e -echo "Removing the generated config" -rm ./tools/localazy/localazy.json +echo "Checking forbidden terms..." +find . -name 'localazy.xml' -exec ./tools/localazy/checkForbiddenTerms.py {} \; +if [[ $allFiles == 1 ]]; then + find . -name 'translations.xml' -exec ./tools/localazy/checkForbiddenTerms.py {} \; +fi echo "Success!" diff --git a/tools/test/generateAllScreenshots.py b/tools/test/generateAllScreenshots.py index 89050f88e9..e92f69b0fd 100755 --- a/tools/test/generateAllScreenshots.py +++ b/tools/test/generateAllScreenshots.py @@ -103,7 +103,7 @@ def detectRecordedLanguages(): def computeDarkFileName(lightFileName): if "-Day_0" in lightFileName: return lightFileName.replace("-Day_0", "-Night_1") - match = re.match("(.*)-Day-(\d+)_(\d+)(.*)", lightFileName, flags=re.ASCII) + match = re.match("(.*)-Day-(\\d+)_(\\d+)(.*)", lightFileName, flags=re.ASCII) if match: return match.group(1) + "-Night-" + match.group(2) + "_" + str((int(match.group(3)) + 1)) + match.group(4) return "" @@ -132,7 +132,10 @@ def generateJavascriptFile(): simpleFile = file[:3] + "T" + file[4:-7] + l + file[-5:-4] translatedFile = "./screenshots/" + l + "/" + simpleFile + ".png" if os.path.exists(translatedFile): - dataForFile.append(1) + # Get the last modified date of the file in seconds and round to days + date = os.popen("git log -1 --format=%ct -- \"" + translatedFile + "\"").read().strip() + dateDay = int(date) // 86400 + dataForFile.append(dateDay) else: dataForFile.append(0) data.append(dataForFile) diff --git a/upstream_infra/CHANGES.md b/upstream_infra/CHANGES.md index cdb2e4006e..72c9a9cf65 100644 --- a/upstream_infra/CHANGES.md +++ b/upstream_infra/CHANGES.md @@ -1,3 +1,8 @@ +Changes in Element X v0.4.9 (2024-04-12) +======================================== + +- Synchronize Localazy Strings. + Changes in Element X v0.4.8 (2024-04-10) ======================================== diff --git a/upstream_infra/CONTRIBUTING.md b/upstream_infra/CONTRIBUTING.md index c65cd25105..5c541bc199 100644 --- a/upstream_infra/CONTRIBUTING.md +++ b/upstream_infra/CONTRIBUTING.md @@ -9,6 +9,7 @@ * [Strings](#strings) * [I want to add new strings to the project](#i-want-to-add-new-strings-to-the-project) * [I want to help translating Element](#i-want-to-help-translating-element) + * [Element X Android Gallery](#element-x-android-gallery) * [I want to submit a PR to fix an issue](#i-want-to-submit-a-pr-to-fix-an-issue) * [Kotlin](#kotlin) * [Changelog](#changelog) @@ -69,6 +70,14 @@ To help translating, please go to [https://localazy.com/p/element](https://local More information can be found [in this README.md](./tools/localazy/README.md). +Once a language is sufficiently translated, it will be added to the app. The core team will decide when a language is sufficiently translated. + +### Element X Android Gallery + +Once added to Localazy, translations can be checked screen per screen using our tool Element X Android Gallery, available at https://element-hq.github.io/element-x-android/. + +Localazy syncs occur every Monday and the screenshots on this page are generated every Tuesday, so you'll have to wait to see your change appearing on Element X Android Gallery. + ## I want to submit a PR to fix an issue Please have a look in the [dedicated documentation](./docs/pull_request.md) about pull request. diff --git a/upstream_infra/README.md b/upstream_infra/README.md index 77d76adc3e..0029966aa7 100644 --- a/upstream_infra/README.md +++ b/upstream_infra/README.md @@ -19,6 +19,7 @@ Learn more about why we are building Element X in our blog post: [https://elemen * [Screenshots](#screenshots) +* [Translations](#translations) * [Rust SDK](#rust-sdk) * [Status](#status) * [Contributing](#contributing) @@ -50,6 +51,16 @@ adb shell am broadcast -a com.android.systemui.demo -e command exit |-|-|-|-| ||||| +## Translations + +Element X Android supports many languages. You can help us to translate the app in your language by joining our [Localazy project](https://localazy.com/p/element). You can also help us to improve the existing translations. + +Note that for now, we keep control on the French and German translations. + +Translations can be checked screen per screen using our tool Element X Android Gallery, available at https://element-hq.github.io/element-x-android/. Note that this page is updated every Tuesday. + +More instructions about translating the application can be found at [CONTRIBUTING.md](CONTRIBUTING.md#strings). + ## Rust SDK Element X leverages the [Matrix Rust SDK](https://github.com/matrix-org/matrix-rust-sdk) through an FFI layer that the final client can directly import and use. diff --git a/upstream_infra/fastlane/metadata/android/en-US/changelogs/40004090.txt b/upstream_infra/fastlane/metadata/android/en-US/changelogs/40004090.txt new file mode 100644 index 0000000000..06f69e53ea --- /dev/null +++ b/upstream_infra/fastlane/metadata/android/en-US/changelogs/40004090.txt @@ -0,0 +1,2 @@ +Main changes in this version: Enable room moderation feature. +Full changelog: https://github.com/element-hq/element-x-android/releases