From 422935a9dce2975cb000c8ff990e5b5b8671f345 Mon Sep 17 00:00:00 2001 From: Jelv Date: Mon, 10 Mar 2025 22:07:16 +0100 Subject: [PATCH 01/29] Translated using Weblate (Dutch) Currently translated at 100.0% (764 of 764 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/nl/ --- assets/l10n/intl_nl.arb | 193 +++++++++++++++++++++++++++++----------- 1 file changed, 143 insertions(+), 50 deletions(-) diff --git a/assets/l10n/intl_nl.arb b/assets/l10n/intl_nl.arb index fc98ad721..cf358ca5b 100644 --- a/assets/l10n/intl_nl.arb +++ b/assets/l10n/intl_nl.arb @@ -352,7 +352,7 @@ "type": "String", "placeholders": {} }, - "changeTheme": "Stijl veranderen", + "changeTheme": "Je stijl veranderen", "@changeTheme": { "type": "String", "placeholders": {} @@ -587,7 +587,7 @@ } } }, - "createNewSpace": "Nieuwe space", + "createNewSpace": "Maak nieuwe space aan", "@createNewSpace": { "type": "String", "placeholders": {} @@ -1208,7 +1208,7 @@ "type": "String", "placeholders": {} }, - "noGoogleServicesWarning": "Firebase Cloud Messaging lijkt niet beschikbaar op je apparaat. Om nog steeds meldingen te krijgen, adviseren we om ntfy te installeren. Met ntfy of een andere Unified Push provider kun je meldingen ontvangen op een veilige manier. Je kunt ntfy downloaden van de PlayStore of van F-Droid.", + "noGoogleServicesWarning": "Firebase Cloud Messaging lijkt niet beschikbaar op je apparaat. Om nog steeds pushmeldingen te krijgen, adviseren we om ntfy te installeren. Met ntfy of een andere Unified Push provider kun je pushmeldingen ontvangen op een veilige manier. Je kunt ntfy downloaden van de PlayStore of van F-Droid.", "@noGoogleServicesWarning": { "type": "String", "placeholders": {} @@ -1245,7 +1245,7 @@ "type": "String", "placeholders": {} }, - "notifications": "Notificaties", + "notifications": "Meldingen", "@notifications": { "type": "String", "placeholders": {} @@ -1423,7 +1423,7 @@ "type": "String", "placeholders": {} }, - "publicRooms": "Publieke Kamers", + "publicRooms": "Openbare kamers", "@publicRooms": { "type": "String", "placeholders": {} @@ -2010,7 +2010,7 @@ "type": "String", "placeholders": {} }, - "waitingPartnerEmoji": "Wachten tot partner de emoji accepteert …", + "waitingPartnerEmoji": "Wachten tot je partner de emoji accepteert…", "@waitingPartnerEmoji": { "type": "String", "placeholders": {} @@ -2055,7 +2055,7 @@ "type": "String", "placeholders": {} }, - "withTheseAddressesRecoveryDescription": "Met deze adressen kan je je wachtwoord herstellen.", + "withTheseAddressesRecoveryDescription": "Met deze adressen kun je je wachtwoord herstellen.", "@withTheseAddressesRecoveryDescription": { "type": "String", "placeholders": {} @@ -2243,7 +2243,7 @@ "@widgetVideo": {}, "widgetEtherpad": "Tekstnotitie", "@widgetEtherpad": {}, - "separateChatTypes": "Gescheiden directe chats en groepen", + "separateChatTypes": "Directe chats en groepen los weergeven", "@separateChatTypes": { "type": "String", "placeholders": {} @@ -2405,7 +2405,7 @@ "@otherCallingPermissions": {}, "newGroup": "Nieuwe groep", "@newGroup": {}, - "newSpace": "Nieuwe space", + "newSpace": "Space aanmaken", "@newSpace": {}, "enterRoom": "Kamer betreden", "@enterRoom": {}, @@ -2527,7 +2527,7 @@ "@exportEmotePack": {}, "replace": "Vervang", "@replace": {}, - "report": "rapporteer", + "report": "Rapporteer", "@report": {}, "reportErrorDescription": "😭 Oh nee. Er is iets misgegaan. Probeer het later nog eens. Als je wilt, kun je de bug rapporteren aan de ontwikkelaars.", "@reportErrorDescription": {}, @@ -2600,7 +2600,7 @@ "@inviteGroupChat": {}, "invitePrivateChat": "📨 Privé-chat uitnodiging", "@invitePrivateChat": {}, - "emoteKeyboardNoRecents": "Recent-gebruikte emoticons zullen hier verschijnen...", + "emoteKeyboardNoRecents": "Recent gebruikte emoticons zullen hier verschijnen...", "@emoteKeyboardNoRecents": { "type": "String", "placeholders": {} @@ -2622,7 +2622,7 @@ "@removeDevicesDescription": {}, "unbanUserDescription": "De persoon zal weer in staat zijn om de chat te betreden als ze het proberen.", "@unbanUserDescription": {}, - "pushNotificationsNotAvailable": "Meldingen zijn niet beschikbaar", + "pushNotificationsNotAvailable": "Pushmeldingen zijn niet beschikbaar", "@pushNotificationsNotAvailable": {}, "makeAdminDescription": "Wanneer je deze persoon beheerder maakt kun je dit niet ongedaan maken als jullie dezelfde rechten hebben.", "@makeAdminDescription": {}, @@ -2642,7 +2642,7 @@ "@roomUpgradeDescription": {}, "pleaseEnterANumber": "Vul een getal in groter dan 0", "@pleaseEnterANumber": {}, - "kickUserDescription": "De persoon is verwijderd uit de chat, maar is niet verbannen. In publieke chats kan de persoon op elk moment opnieuw deelnemen.", + "kickUserDescription": "De persoon is verwijderd uit de chat, maar is niet verbannen. In openbare chats kan de persoon op elk moment opnieuw deelnemen.", "@kickUserDescription": {}, "alwaysUse24HourFormat": "true", "@alwaysUse24HourFormat": { @@ -2665,11 +2665,11 @@ "@swipeRightToLeftToReply": {}, "calls": "Gesprekken", "@calls": {}, - "customEmojisAndStickers": "Aangepaste emojis and stickers", + "customEmojisAndStickers": "Aangepaste emoticons en stickers", "@customEmojisAndStickers": {}, "accessAndVisibilityDescription": "Wie mag meedoen in deze chat en hoe de chat ontdekt kan worden.", "@accessAndVisibilityDescription": {}, - "customEmojisAndStickersBody": "Voeg toe of deel aangepaste emojis of stickers die gebruikt kunnen worden in elke chat.", + "customEmojisAndStickersBody": "Voeg toe of deel aangepaste emoji's of stickers die gebruikt kunnen worden in elke chat.", "@customEmojisAndStickersBody": {}, "hideRedactedMessages": "Verberg verwijderde berichten", "@hideRedactedMessages": {}, @@ -2695,7 +2695,7 @@ "@hidePresences": {}, "noOneCanJoin": "Niemand kan deelnemen", "@noOneCanJoin": {}, - "yourGlobalUserIdIs": "Je globale gebruikers-ID is: ", + "yourGlobalUserIdIs": "Je Matrix ID is: ", "@yourGlobalUserIdIs": {}, "appLockDescription": "Vergendel de app wanneer het niet gebruikt wordt met een pincode", "@appLockDescription": {}, @@ -2711,11 +2711,11 @@ } } }, - "publicSpaces": "Publieke spaces", + "publicSpaces": "Openbare spaces", "@publicSpaces": {}, "blockUsername": "Negeer gebruikersnaam", "@blockUsername": {}, - "publicChatAddresses": "Publieke chat adressen", + "publicChatAddresses": "Openbare chat adressen", "@publicChatAddresses": {}, "createNewAddress": "Creëer nieuw adres", "@createNewAddress": {}, @@ -2741,7 +2741,7 @@ "@space": {}, "spaces": "Spaces", "@spaces": {}, - "unread": "Zet als ongelezen", + "unread": "Ongelezen", "@unread": {}, "databaseBuildErrorBody": "Het aanmaken van de SQlite database is mislukt. De app probeert nu een traditionele database te gebruiken. Meldt alsjeblieft deze fout aan de ontwikkelaars via deze {url}. De foutmelding is: {error}", "@databaseBuildErrorBody": { @@ -2757,7 +2757,7 @@ }, "groupName": "Groepsnaam", "@groupName": {}, - "changeGeneralChatSettings": "Wijzig algemene chat instellingen", + "changeGeneralChatSettings": "Algemene chat instellingen wijzigen", "@changeGeneralChatSettings": {}, "restricted": "Beperkt", "@restricted": {}, @@ -2765,7 +2765,7 @@ "@searchForUsers": {}, "searchMore": "Zoek meer...", "@searchMore": {}, - "noPublicLinkHasBeenCreatedYet": "Publieke link is nog niet gecreëerd", + "noPublicLinkHasBeenCreatedYet": "Openbare link is nog niet gecreëerd", "@noPublicLinkHasBeenCreatedYet": {}, "groupCanBeFoundViaSearch": "Groep kan gevonden worden via zoeken", "@groupCanBeFoundViaSearch": {}, @@ -2794,12 +2794,12 @@ }, "noDatabaseEncryption": "Database versleuteling is niet ondersteund op dit platform", "@noDatabaseEncryption": {}, - "thereAreCountUsersBlocked": "Nu zijn er {count} personen geblokkeerd.", + "thereAreCountUsersBlocked": "Momenteel zijn er {count} personen geblokkeerd.", "@thereAreCountUsersBlocked": { "type": "String", "count": {} }, - "markAsUnread": "Markeer als ongelezen", + "markAsUnread": "Als ongelezen markeren", "@markAsUnread": {}, "userLevel": "{level} - Persoon", "@userLevel": { @@ -2819,7 +2819,7 @@ } } }, - "adminLevel": "{level} - Administrator", + "adminLevel": "{level} - Beheerder", "@adminLevel": { "type": "String", "placeholders": { @@ -2893,7 +2893,7 @@ }, "website": "Website", "@website": {}, - "hideMemberChangesInPublicChats": "Verberg persoon veranderingen in publieke chats", + "hideMemberChangesInPublicChats": "Verberg persoon veranderingen in openbare chats", "@hideMemberChangesInPublicChats": {}, "hideMemberChangesInPublicChatsBody": "Verberg in de tijdlijn van de chat als iemand zich aanmeldt bij een openbare chat of deze verlaat om de leesbaarheid te verbeteren.", "@hideMemberChangesInPublicChatsBody": {}, @@ -2910,7 +2910,7 @@ } } }, - "createGroupAndInviteUsers": "Maak een groep en nodig personen uit", + "createGroupAndInviteUsers": "Maak groep en nodig personen uit", "@createGroupAndInviteUsers": {}, "userWouldLikeToChangeTheChat": "{user} wil graag deelnemen aan de chat.", "@userWouldLikeToChangeTheChat": { @@ -2946,13 +2946,13 @@ "@databaseMigrationBody": {}, "commandHint_sendraw": "Stuur kale json", "@commandHint_sendraw": {}, - "passwordIsWrong": "Je ingevoerd wachtwoord is onjuist", + "passwordIsWrong": "Je ingevoerde wachtwoord is fout", "@passwordIsWrong": {}, "newPassword": "Nieuw wachtwoord", "@newPassword": {}, - "pleaseChooseAStrongPassword": "Kies een sterk wachtwoord", + "pleaseChooseAStrongPassword": "Kies a.j.b. een sterk wachtwoord", "@pleaseChooseAStrongPassword": {}, - "publicLink": "Publieke link", + "publicLink": "Openbare link", "@publicLink": {}, "select": "Selecteer", "@select": {}, @@ -2970,25 +2970,25 @@ "@decline": {}, "thisDevice": "Dit apparaat:", "@thisDevice": {}, - "contentNotificationSettings": "Content notificatie instellingen", + "contentNotificationSettings": "Contentmelding instellingen", "@contentNotificationSettings": {}, - "roomNotificationSettings": "Kamer notificatie instellingen", + "roomNotificationSettings": "Kamermelding instellingen", "@roomNotificationSettings": {}, - "userSpecificNotificationSettings": "Persoon specifieke notificatie instellingen", + "userSpecificNotificationSettings": "Persoon specifieke melding instellingen", "@userSpecificNotificationSettings": {}, - "otherNotificationSettings": "Andere notificatie instellingen", + "otherNotificationSettings": "Andere melding instellingen", "@otherNotificationSettings": {}, "notificationRuleContainsUserName": "Bevat naam van persoon", "@notificationRuleContainsUserName": {}, - "notificationRuleContainsUserNameDescription": "Stuurt een notificatie als een bericht de persoon vermeld.", + "notificationRuleContainsUserNameDescription": "Stuurt een melding als een bericht de persoon vermeld.", "@notificationRuleContainsUserNameDescription": {}, - "notificationRuleMaster": "Demp alle notificaties", + "notificationRuleMaster": "Alle meldingen uitschakelen", "@notificationRuleMaster": {}, - "notificationRuleMasterDescription": "Overschrijf alle andere regels en schakel alle notificaties uit.", + "notificationRuleMasterDescription": "Overschrijf alle andere regels en meldingen uitschakelen.", "@notificationRuleMasterDescription": {}, - "notificationRuleMemberEventDescription": "Verberg notificaties voor een kamer-gebeurtenissen.", + "notificationRuleMemberEventDescription": "Meldingen voor kamer-gebeurtenissen uitschakelen.", "@notificationRuleMemberEventDescription": {}, - "notificationRuleIsUserMention": "Persoon vermelding", + "notificationRuleIsUserMention": "Persoonvermelding", "@notificationRuleIsUserMention": {}, "initAppError": "Er is een fout opgetreden bij het laden van de app", "@initAppError": {}, @@ -3021,17 +3021,17 @@ "@opacity": {}, "verifyOtherUserDescription": "Als je een persoon verifieert ben je er zeker van dat je echt met haar contact hebt. 💪\n\nWanneer je een verificatie start ziet de persoon een popup in de app. Hier staat een serie van emoji's of getallen die je met elkaar moet vergelijken.\n\nDe beste manier om dit te doen is in persoon of met een videogesprek. 👭", "@verifyOtherUserDescription": {}, - "changeTheVisibilityOfChatHistory": "Wijzig de zichtbaarheid van de chat-geschiedenis", + "changeTheVisibilityOfChatHistory": "Zichtbaarheid van de chat-geschiedenis wijzigen", "@changeTheVisibilityOfChatHistory": {}, "whatIsAHomeserver": "Wat is een server?", "@whatIsAHomeserver": {}, - "sendRoomNotifications": "Een @room-notificatie versturen", + "sendRoomNotifications": "@room-meldingen versturen", "@sendRoomNotifications": {}, "noticeChatBackupDeviceVerification": "Opmerking: Als al je apparaten zijn verbonden met de chat back-up worden ze automatisch geverifieerd.", "@noticeChatBackupDeviceVerification": {}, "notificationRuleMemberEvent": "Kamer-gebeurtenis", "@notificationRuleMemberEvent": {}, - "notificationRuleSuppressNotices": "Verberg automatische berichten", + "notificationRuleSuppressNotices": "Automatische berichten uitschakelen", "@notificationRuleSuppressNotices": {}, "setWallpaper": "Wallpaper instellen", "@setWallpaper": {}, @@ -3045,19 +3045,19 @@ "@noContactInformationProvided": {}, "waitingForServer": "Wachten op server...", "@waitingForServer": {}, - "generalNotificationSettings": "Algemene notificatie instellingen", + "generalNotificationSettings": "Algemene melding instellingen", "@generalNotificationSettings": {}, - "notificationRuleInviteForMeDescription": "Stuur een notificatie wanneer een persoon wordt uitgenodigd voor een kamer.", + "notificationRuleInviteForMeDescription": "Stuur een melding wanneer een persoon wordt uitgenodigd voor een kamer.", "@notificationRuleInviteForMeDescription": {}, - "notificationRuleSuppressNoticesDescription": "Verberg notificaties van automatische accounts zoals bots.", + "notificationRuleSuppressNoticesDescription": "Meldingen van automatische accounts zoals bots uitschakelen.", "@notificationRuleSuppressNoticesDescription": {}, "notificationRuleInviteForMe": "Uitnodiging voor mij", "@notificationRuleInviteForMe": {}, - "inviteOtherUsers": "Andere personen uitnodigen voor deze chat", + "inviteOtherUsers": "Personen voor deze chat uitnodigen", "@inviteOtherUsers": {}, "changeTheChatPermissions": "Chat-rechten wijzigen", "@changeTheChatPermissions": {}, - "changeTheCanonicalRoomAlias": "Het standaard publieke chat-adres veranderen", + "changeTheCanonicalRoomAlias": "Standaard openbaar chat-adres wijzigen", "@changeTheCanonicalRoomAlias": {}, "blur": "Vervaag:", "@blur": {}, @@ -3175,13 +3175,13 @@ } } }, - "sendReadReceipts": "Ontvangstbevestigingen versturen", + "sendReadReceipts": "Leesbevestigingen versturen", "@sendReadReceipts": {}, - "formattedMessages": "Bericht opmaken", + "formattedMessages": "Opgemaakte berichten", "@formattedMessages": {}, "chatPermissionsDescription": "Stel het gewenste rechten-niveau in voor bepaalde acties in deze chat. Het rechten-niveau 0, 50 en 100 zijn gebruikelijk voor deelnemer, moderator en beheerder, maar elke verdeling is mogelijk.", "@chatPermissionsDescription": {}, - "changeTheDescriptionOfTheGroup": "De omschrijving van de chat veranderen", + "changeTheDescriptionOfTheGroup": "Chatomschrijving wijzigen", "@changeTheDescriptionOfTheGroup": {}, "userRole": "Rol", "@userRole": {}, @@ -3245,5 +3245,98 @@ } }, "homeserverDescription": "Al je data is opgeslagen op de server, net als bij een email-leverancier. Je kan kiezen welke server je gebruikt en toch communiceren met iedereen. Lees meer op https://matrix.org.", - "@homeserverDescription": {} + "@homeserverDescription": {}, + "notificationRuleContainsDisplayName": "Bevat de naam", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleIsUserMentionDescription": "Stuur een melding als de persoon direct genoemd wordt in een bericht.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayNameDescription": "Stuur een melding als de persoon genoemd wordt in het bericht.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleIsRoomMention": "Kamervermelding", + "@notificationRuleIsRoomMention": {}, + "notificationRuleIsRoomMentionDescription": "Stuur een melding naar de persoon als er in een kamervermelding is.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomnotif": "Kamermelding", + "@notificationRuleRoomnotif": {}, + "notificationRuleRoomnotifDescription": "Stuur een melding naar de persoon wanneer een bericht '@room' bevat.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleTombstone": "Sleutingsbericht", + "@notificationRuleTombstone": {}, + "notificationRuleReaction": "Reactie", + "@notificationRuleReaction": {}, + "notificationRuleRoomServerAcl": "Kamer Server ACL", + "@notificationRuleRoomServerAcl": {}, + "notificationRuleTombstoneDescription": "Stuur een melding naar de persoon over kamersluitingsberichten.", + "@notificationRuleTombstoneDescription": {}, + "notificationRuleReactionDescription": "Meldingen voor reacties uitschakelen.", + "@notificationRuleReactionDescription": {}, + "notificationRuleRoomServerAclDescription": "Meldingen voor kamer server toegangscontrolelijst (ACL) uitschakelen.", + "@notificationRuleRoomServerAclDescription": {}, + "notificationRuleSuppressEdits": "Bewerkingen uitschakelen", + "@notificationRuleSuppressEdits": {}, + "notificationRuleCall": "Oproep", + "@notificationRuleCall": {}, + "notificationRuleSuppressEditsDescription": "Meldingen voor bewerkte berichten uitschakelen.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleEncryptedRoomOneToOneDescription": "Stuur een melding naar de persoon over berichten in versleutelde een-op-een kamers.", + "@notificationRuleEncryptedRoomOneToOneDescription": {}, + "notificationRuleEncryptedRoomOneToOne": "Versleutelde een-op-een kamer", + "@notificationRuleEncryptedRoomOneToOne": {}, + "notificationRuleRoomOneToOne": "Een-op-een kamer", + "@notificationRuleRoomOneToOne": {}, + "notificationRuleMessage": "Bericht", + "@notificationRuleMessage": {}, + "notificationRuleEncrypted": "Versleuteld", + "@notificationRuleEncrypted": {}, + "notificationRuleRoomOneToOneDescription": "Stuur een melding naar de persoon over berichten in een-op-een kamers.", + "@notificationRuleRoomOneToOneDescription": {}, + "notificationRuleMessageDescription": "Stuur een melding naar de persoon over algemene berichten.", + "@notificationRuleMessageDescription": {}, + "notificationRuleJitsi": "Jitsi", + "@notificationRuleJitsi": {}, + "notificationRuleEncryptedDescription": "Stuur een melding naar de persoon over berichten in versleutelde kamers.", + "@notificationRuleEncryptedDescription": {}, + "notificationRuleJitsiDescription": "Stuur een melding naar de persoon over Jitsi widget gebeurtenissen.", + "@notificationRuleJitsiDescription": {}, + "unknownPushRule": "Onbekende notificatieregel '{rule}'", + "@unknownPushRule": { + "type": "String", + "placeholders": { + "rule": { + "type": "String" + } + } + }, + "notificationRuleServerAcl": "Server ACL gebeurtenissen uitschakelen", + "@notificationRuleServerAcl": {}, + "notificationRuleServerAclDescription": "Meldingen over server ACL gebeurtenissen uitschakelen.", + "@notificationRuleServerAclDescription": {}, + "more": "Meer", + "@more": {}, + "enterNewChat": "Nieuwe chat openen", + "@enterNewChat": {}, + "crossVerifiedDevices": "Kruislings geverifieerde apparaten", + "@crossVerifiedDevices": {}, + "allDevices": "Alle apparaten", + "@allDevices": {}, + "shareKeysWithDescription": "Welke apparaten moeten vertrouwd worden zodat ze je berichten kunnen lezen in versleutelde chats?", + "@shareKeysWithDescription": {}, + "verifiedDevicesOnly": "Alleen geverifieerde apparaten", + "@verifiedDevicesOnly": {}, + "crossVerifiedDevicesIfEnabled": "Kruislings geverifieerde apparaten als ingeschakeld", + "@crossVerifiedDevicesIfEnabled": {}, + "shareKeysWith": "Deel sleutels met...", + "@shareKeysWith": {}, + "notificationRuleCallDescription": "Stuur een melding naar de persoon over oproepen.", + "@notificationRuleCallDescription": {}, + "deletePushRuleCanNotBeUndone": "Als je deze melding-instelling verwijderd, kan dit niet ongedaan gemaakt worden.", + "@deletePushRuleCanNotBeUndone": {}, + "takeAPhoto": "Neem een foto", + "@takeAPhoto": {}, + "recordAVideo": "Neem een video", + "@recordAVideo": {}, + "optionalMessage": "(Optioneel) bericht...", + "@optionalMessage": {}, + "notSupportedOnThisDevice": "Niet ondersteund op dit apparaat", + "@notSupportedOnThisDevice": {} } From 5c0aec51f5c4c500a0abf6680a4f8b636b3d2c01 Mon Sep 17 00:00:00 2001 From: katakam chakri Date: Wed, 12 Mar 2025 10:39:27 +0100 Subject: [PATCH 02/29] Added translation using Weblate (Telugu) --- assets/l10n/intl_te.arb | 1 + 1 file changed, 1 insertion(+) create mode 100644 assets/l10n/intl_te.arb diff --git a/assets/l10n/intl_te.arb b/assets/l10n/intl_te.arb new file mode 100644 index 000000000..0967ef424 --- /dev/null +++ b/assets/l10n/intl_te.arb @@ -0,0 +1 @@ +{} From 3d7142f765314897f0127fdab7105086a4bdc69b Mon Sep 17 00:00:00 2001 From: Jelv Date: Wed, 12 Mar 2025 10:48:06 +0100 Subject: [PATCH 03/29] Translated using Weblate (Dutch) Currently translated at 100.0% (764 of 764 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/nl/ --- assets/l10n/intl_nl.arb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/assets/l10n/intl_nl.arb b/assets/l10n/intl_nl.arb index cf358ca5b..bf79a82e3 100644 --- a/assets/l10n/intl_nl.arb +++ b/assets/l10n/intl_nl.arb @@ -2539,11 +2539,11 @@ "@signInWithPassword": {}, "chatPermissions": "Chat toestemmingen", "@chatPermissions": {}, - "chatDescription": "Chatbeschrijving", + "chatDescription": "Chatomschrijving", "@chatDescription": {}, - "chatDescriptionHasBeenChanged": "Chatbeschrijving gewijzigd", + "chatDescriptionHasBeenChanged": "Chatomschrijving gewijzigd", "@chatDescriptionHasBeenChanged": {}, - "noChatDescriptionYet": "Nog geen chatbeschrijving gemaakt.", + "noChatDescriptionYet": "Nog geen chatomschrijving gemaakt.", "@noChatDescriptionYet": {}, "tryAgain": "Opnieuw proberen", "@tryAgain": {}, @@ -2569,7 +2569,7 @@ "@inviteContactToGroupQuestion": {}, "optionalRedactReason": "(Optioneel) Reden voor aanpassing van dit bericht...", "@optionalRedactReason": {}, - "addChatDescription": "Voeg een chatbeschrijving toe...", + "addChatDescription": "Voeg een chatomschrijving toe...", "@addChatDescription": {}, "invalidServerName": "Foute servernaam", "@invalidServerName": {}, @@ -2588,7 +2588,7 @@ }, "directChat": "Directe chat", "@directChat": {}, - "setChatDescription": "Chatbeschrijving instellen", + "setChatDescription": "Chatomschrijving instellen", "@setChatDescription": {}, "setTheme": "Thema instellen:", "@setTheme": {}, From d1501f2d443e28a33bb91e54a9129d6d5125fe17 Mon Sep 17 00:00:00 2001 From: katakam chakri Date: Wed, 12 Mar 2025 10:41:07 +0100 Subject: [PATCH 04/29] Translated using Weblate (Telugu) Currently translated at 0.5% (4 of 764 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/te/ --- assets/l10n/intl_te.arb | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/assets/l10n/intl_te.arb b/assets/l10n/intl_te.arb index 0967ef424..60cbd30c8 100644 --- a/assets/l10n/intl_te.arb +++ b/assets/l10n/intl_te.arb @@ -1 +1,15 @@ -{} +{ + "alwaysUse24HourFormat": "తప్పుడు", + "@alwaysUse24HourFormat": { + "description": "Set to true to always display time of day in 24 hour format." + }, + "notAnImage": "ఇమేజ్ ఫైల్ కాదు.", + "@notAnImage": {}, + "repeatPassword": "పాస్‌వర్డ్‌ను పునరావృతం చేయండి", + "@repeatPassword": {}, + "remove": "తొలగించు", + "@remove": { + "type": "String", + "placeholders": {} + } +} From ede9a21adbda9e3faae002769a70bef992ed6e1b Mon Sep 17 00:00:00 2001 From: nautilusx Date: Sun, 16 Mar 2025 12:25:03 +0100 Subject: [PATCH 05/29] Translated using Weblate (German) Currently translated at 96.5% (738 of 764 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/de/ --- assets/l10n/intl_de.arb | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/assets/l10n/intl_de.arb b/assets/l10n/intl_de.arb index a364e036c..bff044f66 100644 --- a/assets/l10n/intl_de.arb +++ b/assets/l10n/intl_de.arb @@ -3273,5 +3273,21 @@ "notificationRuleJitsi": "Jitsi", "@notificationRuleJitsi": {}, "allDevices": "Alle Geräte", - "@allDevices": {} + "@allDevices": {}, + "enterNewChat": "Neuen Chat starten", + "@enterNewChat": {}, + "shareKeysWith": "Schlüssel teilen mit...", + "@shareKeysWith": {}, + "shareKeysWithDescription": "Welchen Geräten sollte vertraut werden, damit sie deine Nachrichten in verschlüsselten Chats mitlesen können?", + "@shareKeysWithDescription": {}, + "verifiedDevicesOnly": "Nur verifizierte Geräte", + "@verifiedDevicesOnly": {}, + "takeAPhoto": "Foto aufnehmen", + "@takeAPhoto": {}, + "recordAVideo": "Video aufnehmen", + "@recordAVideo": {}, + "optionalMessage": "(Optionale) Nachricht...", + "@optionalMessage": {}, + "notSupportedOnThisDevice": "Nicht unterstützt auf diesem Gerät", + "@notSupportedOnThisDevice": {} } From f28eae31c49e1ba52f48cb9c45604dbed02eecfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Priit=20J=C3=B5er=C3=BC=C3=BCt?= Date: Sun, 23 Mar 2025 07:46:18 +0100 Subject: [PATCH 06/29] Translated using Weblate (Estonian) Currently translated at 100.0% (765 of 765 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/et/ --- assets/l10n/intl_et.arb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/assets/l10n/intl_et.arb b/assets/l10n/intl_et.arb index c1c694544..5cefa835e 100644 --- a/assets/l10n/intl_et.arb +++ b/assets/l10n/intl_et.arb @@ -3343,5 +3343,7 @@ "notSupportedOnThisDevice": "See pole antud seadmes toetatud", "@notSupportedOnThisDevice": {}, "enterNewChat": "Liitu uue vestlusega", - "@enterNewChat": {} + "@enterNewChat": {}, + "commandHint_roomupgrade": "Uuenda see jututuba antud jututoa versioonini", + "@commandHint_roomupgrade": {} } From 1a525b7b33eec40d27f074f6d8e7c46dc45e4447 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Aindri=C3=BA=20Mac=20Giolla=20Eoin?= Date: Sun, 23 Mar 2025 11:26:08 +0100 Subject: [PATCH 07/29] Translated using Weblate (Irish) Currently translated at 100.0% (765 of 765 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/ga/ --- assets/l10n/intl_ga.arb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/assets/l10n/intl_ga.arb b/assets/l10n/intl_ga.arb index 003709d97..bc8642a98 100644 --- a/assets/l10n/intl_ga.arb +++ b/assets/l10n/intl_ga.arb @@ -3348,5 +3348,7 @@ "optionalMessage": "Teachtaireacht (Roghnach)…", "@optionalMessage": {}, "enterNewChat": "Cuir isteach comhrá nua", - "@enterNewChat": {} + "@enterNewChat": {}, + "commandHint_roomupgrade": "Uasghrádaigh an seomra seo go dtí an leagan seomra a thugtar", + "@commandHint_roomupgrade": {} } From dc495d028ecaa14b6af60af68a7fdc6891aaa361 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E7=8E=8B=E5=8F=AB=E6=88=91=E6=9D=A5=E5=B7=A1?= =?UTF-8?q?=E5=B1=B1?= Date: Sun, 23 Mar 2025 13:16:57 +0100 Subject: [PATCH 08/29] Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (765 of 765 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/zh_Hans/ --- assets/l10n/intl_zh.arb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/assets/l10n/intl_zh.arb b/assets/l10n/intl_zh.arb index b8a5858ed..377750632 100644 --- a/assets/l10n/intl_zh.arb +++ b/assets/l10n/intl_zh.arb @@ -3343,5 +3343,7 @@ "notSupportedOnThisDevice": "此设备上不受支持", "@notSupportedOnThisDevice": {}, "enterNewChat": "进入新聊天", - "@enterNewChat": {} + "@enterNewChat": {}, + "commandHint_roomupgrade": "将此聊天室升级到给定的聊天室版本", + "@commandHint_roomupgrade": {} } From 1bff52eeb1b4064a360d98cf657daf4c172c2b8a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?jos=C3=A9=20m?= Date: Mon, 24 Mar 2025 07:00:21 +0100 Subject: [PATCH 09/29] Translated using Weblate (Galician) Currently translated at 100.0% (765 of 765 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/gl/ --- assets/l10n/intl_gl.arb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/assets/l10n/intl_gl.arb b/assets/l10n/intl_gl.arb index 1c5fc9533..d81422e84 100644 --- a/assets/l10n/intl_gl.arb +++ b/assets/l10n/intl_gl.arb @@ -3341,5 +3341,9 @@ "takeAPhoto": "Facer foto", "@takeAPhoto": {}, "recordAVideo": "Gravar vídeo", - "@recordAVideo": {} + "@recordAVideo": {}, + "enterNewChat": "Entrar na nova conversa", + "@enterNewChat": {}, + "commandHint_roomupgrade": "Actualizar esta sala á versión de sala indicada", + "@commandHint_roomupgrade": {} } From 23ea28ea1694615e842cc54d8f8286a4cfe7f73b Mon Sep 17 00:00:00 2001 From: Jelv Date: Mon, 24 Mar 2025 08:52:15 +0100 Subject: [PATCH 10/29] Translated using Weblate (Dutch) Currently translated at 100.0% (765 of 765 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/nl/ --- assets/l10n/intl_nl.arb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/assets/l10n/intl_nl.arb b/assets/l10n/intl_nl.arb index bf79a82e3..ba3d090db 100644 --- a/assets/l10n/intl_nl.arb +++ b/assets/l10n/intl_nl.arb @@ -2431,7 +2431,7 @@ } } }, - "commandHint_googly": "Wat wiebelogen versturen", + "commandHint_googly": "Wiebel-ogen versturen", "@commandHint_googly": {}, "commandHint_cuddle": "Een knuffel versturen", "@commandHint_cuddle": {}, @@ -3338,5 +3338,7 @@ "optionalMessage": "(Optioneel) bericht...", "@optionalMessage": {}, "notSupportedOnThisDevice": "Niet ondersteund op dit apparaat", - "@notSupportedOnThisDevice": {} + "@notSupportedOnThisDevice": {}, + "commandHint_roomupgrade": "Upgradeer deze kamer naar de aangegeven kamerversie", + "@commandHint_roomupgrade": {} } From f3cfcc19373577c94b5d777babbed9040eba43ac Mon Sep 17 00:00:00 2001 From: Edgars Andersons Date: Mon, 24 Mar 2025 09:28:13 +0100 Subject: [PATCH 11/29] Translated using Weblate (Latvian) Currently translated at 100.0% (765 of 765 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/lv/ --- assets/l10n/intl_lv.arb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/assets/l10n/intl_lv.arb b/assets/l10n/intl_lv.arb index c26a15c01..3eeb6193c 100644 --- a/assets/l10n/intl_lv.arb +++ b/assets/l10n/intl_lv.arb @@ -3321,5 +3321,7 @@ "notSupportedOnThisDevice": "Šajā ierīcē nav atbalstīts", "@notSupportedOnThisDevice": {}, "enterNewChat": "Ieiet jaunajā tērzēšanā", - "@enterNewChat": {} + "@enterNewChat": {}, + "commandHint_roomupgrade": "Uzlabot šo istabu uz norādīto istabas versiju", + "@commandHint_roomupgrade": {} } From fee8d393a25583dec8ef92bd9be1aba090532f3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=84=82=F0=9D=95=A0=F0=9D=95=A0=F0=9D=95=A0=F0=9D=95=9D?= =?UTF-8?q?=20=28=F0=9D=95=98=F0=9D=95=9A=F0=9D=95=A5=F0=9D=95=99?= =?UTF-8?q?=F0=9D=95=A6=F0=9D=95=93=2E=F0=9D=95=94=F0=9D=95=A0=F0=9D=95=9E?= =?UTF-8?q?/=E2=84=82=F0=9D=95=A0=F0=9D=95=A0=F0=9D=95=A0=F0=9D=95=9D=29?= Date: Mon, 24 Mar 2025 09:26:21 +0100 Subject: [PATCH 12/29] Translated using Weblate (Latvian) Currently translated at 100.0% (765 of 765 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/lv/ --- assets/l10n/intl_lv.arb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/l10n/intl_lv.arb b/assets/l10n/intl_lv.arb index 3eeb6193c..9ec64399b 100644 --- a/assets/l10n/intl_lv.arb +++ b/assets/l10n/intl_lv.arb @@ -1680,7 +1680,7 @@ "type": "String", "placeholders": {} }, - "chooseAStrongPassword": "Jāizvēlas stipra parole", + "chooseAStrongPassword": "Jāizvēlas droša parole", "@chooseAStrongPassword": { "type": "String", "placeholders": {} From 0eedf6a6828912b1351ce904c5bd627d69615158 Mon Sep 17 00:00:00 2001 From: Ihor Hordiichuk Date: Thu, 27 Mar 2025 20:30:42 +0100 Subject: [PATCH 13/29] Translated using Weblate (Ukrainian) Currently translated at 95.9% (734 of 765 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/uk/ --- assets/l10n/intl_uk.arb | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/assets/l10n/intl_uk.arb b/assets/l10n/intl_uk.arb index 4bd6cdef8..6240a8b28 100644 --- a/assets/l10n/intl_uk.arb +++ b/assets/l10n/intl_uk.arb @@ -3258,5 +3258,23 @@ "notificationRuleMemberEventDescription": "Забороняє сповіщення про події учасників.", "@notificationRuleMemberEventDescription": {}, "notificationRuleSuppressNoticesDescription": "Забороняє сповіщення від автоматизованих клієнтів, таких як боти.", - "@notificationRuleSuppressNoticesDescription": {} + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleIsUserMention": "Згадки користувачів", + "@notificationRuleIsUserMention": {}, + "commandHint_roomupgrade": "Оновити цю кімнату до версії даної кімнати", + "@commandHint_roomupgrade": {}, + "notificationRuleIsUserMentionDescription": "Сповіщає користувачів, коли безпосередньо їх згадують у повідомленні.", + "@notificationRuleIsUserMentionDescription": {}, + "notificationRuleContainsDisplayName": "Містить показуване ім’я", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleIsRoomMentionDescription": "Сповіщає користувача, коли є згадка всієї кімнати.", + "@notificationRuleIsRoomMentionDescription": {}, + "notificationRuleRoomnotif": "Сповіщення кімнати", + "@notificationRuleRoomnotif": {}, + "notificationRuleRoomnotifDescription": "Сповіщає користувача, коли повідомлення містить '@room'.", + "@notificationRuleRoomnotifDescription": {}, + "notificationRuleContainsDisplayNameDescription": "Сповіщає користувача, коли повідомлення містить показуване ім'я.", + "@notificationRuleContainsDisplayNameDescription": {}, + "notificationRuleIsRoomMention": "Згадки кімнати", + "@notificationRuleIsRoomMention": {} } From dc98c1f817be37d0bcc306726e393b4e86195bad Mon Sep 17 00:00:00 2001 From: Linerly Date: Thu, 27 Mar 2025 11:21:37 +0100 Subject: [PATCH 14/29] Translated using Weblate (Indonesian) Currently translated at 100.0% (765 of 765 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/id/ --- assets/l10n/intl_id.arb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/assets/l10n/intl_id.arb b/assets/l10n/intl_id.arb index 5732fb7ea..6e072cdd9 100644 --- a/assets/l10n/intl_id.arb +++ b/assets/l10n/intl_id.arb @@ -3342,5 +3342,7 @@ "notSupportedOnThisDevice": "Tidak didukung pada perangkat ini", "@notSupportedOnThisDevice": {}, "enterNewChat": "Masuk ke obrolan baru", - "@enterNewChat": {} + "@enterNewChat": {}, + "commandHint_roomupgrade": "Tingkatkan ruangan ini ke versi ruangan yang ditentukan", + "@commandHint_roomupgrade": {} } From 75a61980b3eb1bf64dc1256be712785fa910ea11 Mon Sep 17 00:00:00 2001 From: xegim Date: Fri, 28 Mar 2025 21:11:45 +0100 Subject: [PATCH 15/29] fix: Consistent element padding between server picker and login view --- lib/pages/login/login_view.dart | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/pages/login/login_view.dart b/lib/pages/login/login_view.dart index 5b04bbad0..45fb77e3d 100644 --- a/lib/pages/login/login_view.dart +++ b/lib/pages/login/login_view.dart @@ -55,7 +55,7 @@ class LoginView extends StatelessWidget { ), const SizedBox(height: 16), Padding( - padding: const EdgeInsets.symmetric(horizontal: 8.0), + padding: const EdgeInsets.symmetric(horizontal: 24.0), child: TextField( readOnly: controller.loading, autocorrect: false, @@ -77,7 +77,7 @@ class LoginView extends StatelessWidget { ), const SizedBox(height: 16), Padding( - padding: const EdgeInsets.symmetric(horizontal: 8.0), + padding: const EdgeInsets.symmetric(horizontal: 24.0), child: TextField( readOnly: controller.loading, autocorrect: false, @@ -107,7 +107,7 @@ class LoginView extends StatelessWidget { ), const SizedBox(height: 16), Padding( - padding: const EdgeInsets.symmetric(horizontal: 8.0), + padding: const EdgeInsets.symmetric(horizontal: 24.0), child: ElevatedButton( style: ElevatedButton.styleFrom( backgroundColor: theme.colorScheme.primary, @@ -121,7 +121,7 @@ class LoginView extends StatelessWidget { ), const SizedBox(height: 16), Padding( - padding: const EdgeInsets.symmetric(horizontal: 8.0), + padding: const EdgeInsets.symmetric(horizontal: 24.0), child: TextButton( onPressed: controller.loading ? () {} From 5a96438ceb0f72c21c3205488f611c33b6bbfbb0 Mon Sep 17 00:00:00 2001 From: Krille Date: Sat, 29 Mar 2025 16:04:24 +0100 Subject: [PATCH 16/29] refactor: Migrate more config options to config viewer Signed-off-by: Krille --- lib/config/setting_keys.dart | 14 +++++++++----- lib/pages/chat/chat.dart | 11 +++++------ lib/pages/settings_security/settings_security.dart | 8 ++++---- lib/utils/client_manager.dart | 3 ++- .../flutter_matrix_dart_sdk_database/cipher.dart | 4 ++-- 5 files changed, 22 insertions(+), 18 deletions(-) diff --git a/lib/config/setting_keys.dart b/lib/config/setting_keys.dart index 05ccef14e..14d259470 100644 --- a/lib/config/setting_keys.dart +++ b/lib/config/setting_keys.dart @@ -32,11 +32,6 @@ abstract class SettingKeys { 'chat.fluffy.swipeRightToLeftToReply'; static const String experimentalVoip = 'chat.fluffy.experimental_voip'; static const String showPresences = 'chat.fluffy.show_presences'; - static const String displayChatDetailsColumn = - 'chat.fluffy.display_chat_details_column'; - static const String noEncryptionWarningShown = - 'chat.fluffy.no_encryption_warning_shown'; - static const String shareKeysWith = 'chat.fluffy.share_keys_with_2'; } enum AppSettings { @@ -53,6 +48,15 @@ enum AppSettings { pushNotificationsPusherFormat( 'pushNotificationsPusherFormat', 'event_id_only', + ), + shareKeysWith('chat.fluffy.share_keys_with_2', 'all'), + noEncryptionWarningShown( + 'chat.fluffy.no_encryption_warning_shown', + false, + ), + displayChatDetailsColumn( + 'chat.fluffy.display_chat_details_column', + false, ); final String key; diff --git a/lib/pages/chat/chat.dart b/lib/pages/chat/chat.dart index c39977677..94c1ed431 100644 --- a/lib/pages/chat/chat.dart +++ b/lib/pages/chat/chat.dart @@ -302,8 +302,7 @@ class ChatController extends State WidgetsBinding.instance.addPostFrameCallback(_shareItems); super.initState(); _displayChatDetailsColumn = ValueNotifier( - Matrix.of(context).store.getBool(SettingKeys.displayChatDetailsColumn) ?? - false, + AppSettings.displayChatDetailsColumn.getItem(Matrix.of(context).store), ); sendingClient = Matrix.of(context).client; @@ -1297,10 +1296,10 @@ class ChatController extends State late final ValueNotifier _displayChatDetailsColumn; void toggleDisplayChatDetailsColumn() async { - await Matrix.of(context).store.setBool( - SettingKeys.displayChatDetailsColumn, - !_displayChatDetailsColumn.value, - ); + await AppSettings.displayChatDetailsColumn.setItem( + Matrix.of(context).store, + !_displayChatDetailsColumn.value, + ); _displayChatDetailsColumn.value = !_displayChatDetailsColumn.value; } diff --git a/lib/pages/settings_security/settings_security.dart b/lib/pages/settings_security/settings_security.dart index 98b69981a..944abae9b 100644 --- a/lib/pages/settings_security/settings_security.dart +++ b/lib/pages/settings_security/settings_security.dart @@ -111,10 +111,10 @@ class SettingsSecurityController extends State { void changeShareKeysWith(ShareKeysWith? shareKeysWith) async { if (shareKeysWith == null) return; - Matrix.of(context).store.setString( - SettingKeys.shareKeysWith, - shareKeysWith.name, - ); + AppSettings.shareKeysWith.setItem( + Matrix.of(context).store, + shareKeysWith.name, + ); Matrix.of(context).client.shareKeysWith = shareKeysWith; setState(() {}); } diff --git a/lib/utils/client_manager.dart b/lib/utils/client_manager.dart index 5170dfee7..34016065a 100644 --- a/lib/utils/client_manager.dart +++ b/lib/utils/client_manager.dart @@ -24,6 +24,7 @@ import 'matrix_sdk_extensions/flutter_matrix_dart_sdk_database/builder.dart'; abstract class ClientManager { static const String clientNamespace = 'im.fluffychat.store.clients'; + static Future> getClients({ bool initialize = true, required SharedPreferences store, @@ -101,7 +102,7 @@ abstract class ClientManager { : NativeImplementationsIsolate(compute); static Client createClient(String clientName, SharedPreferences store) { - final shareKeysWith = store.getString(SettingKeys.shareKeysWith) ?? 'all'; + final shareKeysWith = AppSettings.shareKeysWith.getItem(store); return Client( clientName, diff --git a/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/cipher.dart b/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/cipher.dart index 021cd4636..ae463532e 100644 --- a/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/cipher.dart +++ b/lib/utils/matrix_sdk_extensions/flutter_matrix_dart_sdk_database/cipher.dart @@ -53,7 +53,7 @@ Future getDatabaseCipher() async { void _sendNoEncryptionWarning(Object exception) async { final store = await SharedPreferences.getInstance(); - final isStored = store.getBool(SettingKeys.noEncryptionWarningShown); + final isStored = AppSettings.noEncryptionWarningShown.getItem(store); if (isStored == true) return; @@ -63,5 +63,5 @@ void _sendNoEncryptionWarning(Object exception) async { exception.toString(), ); - await store.setBool(SettingKeys.noEncryptionWarningShown, true); + await AppSettings.noEncryptionWarningShown.setItem(store, true); } From 7ef6e8bbfc96c1e9863887f267ad72f227911e7c Mon Sep 17 00:00:00 2001 From: Krille Date: Sat, 29 Mar 2025 17:09:48 +0100 Subject: [PATCH 17/29] refactor: Reuse unused kotlin imports Signed-off-by: Krille --- .../main/kotlin/chat/fluffy/fluffychat/FcmPushService.kt | 8 -------- 1 file changed, 8 deletions(-) diff --git a/android/app/src/main/kotlin/chat/fluffy/fluffychat/FcmPushService.kt b/android/app/src/main/kotlin/chat/fluffy/fluffychat/FcmPushService.kt index d9930f557..0db8bdcae 100644 --- a/android/app/src/main/kotlin/chat/fluffy/fluffychat/FcmPushService.kt +++ b/android/app/src/main/kotlin/chat/fluffy/fluffychat/FcmPushService.kt @@ -2,17 +2,9 @@ import com.famedly.fcm_shared_isolate.FcmSharedIsolateService -import chat.fluffy.fluffychat.MainActivity - -import io.flutter.embedding.android.FlutterActivity import io.flutter.embedding.engine.FlutterEngine -import io.flutter.view.FlutterMain import io.flutter.embedding.engine.dart.DartExecutor.DartEntrypoint - import android.content.Context -import android.os.Bundle -import android.util.Log -import android.view.WindowManager class FcmPushService : FcmSharedIsolateService() { override fun getEngine(): FlutterEngine { From d8c2fca484d6a806e4361d726d109d9eda453bb5 Mon Sep 17 00:00:00 2001 From: Krille Date: Sun, 30 Mar 2025 10:34:45 +0200 Subject: [PATCH 18/29] chore: Update pubspec.lock Signed-off-by: Krille --- pubspec.lock | 94 ++++++++++++------------- windows/flutter/generated_plugins.cmake | 1 - 2 files changed, 47 insertions(+), 48 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 03544879b..e5369f057 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -90,10 +90,10 @@ packages: dependency: "direct main" description: name: async - sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + sha256: d2872f9c19731c2e5f10444b14686eb7cc85c76274bd6c16e1816bff9a3bab63 url: "https://pub.dev" source: hosted - version: "2.11.0" + version: "2.12.0" audio_session: dependency: transitive description: @@ -138,10 +138,10 @@ packages: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" canonical_json: dependency: transitive description: @@ -154,10 +154,10 @@ packages: dependency: transitive description: name: characters - sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.0" charcode: dependency: transitive description: @@ -194,18 +194,18 @@ packages: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.2" collection: dependency: "direct main" description: name: collection - sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" url: "https://pub.dev" source: hosted - version: "1.19.0" + version: "1.19.1" colorize: dependency: transitive description: @@ -354,10 +354,10 @@ packages: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + sha256: "6a95e56b2449df2273fd8c45a662d6947ce1ebb7aafe80e550a3f68297f3cacc" url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.2" ffi: dependency: transitive description: @@ -370,10 +370,10 @@ packages: dependency: transitive description: name: file - sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 url: "https://pub.dev" source: hosted - version: "7.0.0" + version: "7.0.1" file_picker: dependency: "direct main" description: @@ -1047,18 +1047,18 @@ packages: dependency: transitive description: name: leak_tracker - sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + sha256: c35baad643ba394b40aac41080300150a4f08fd0fd6a10378f8f7c6bc161acec url: "https://pub.dev" source: hosted - version: "10.0.7" + version: "10.0.8" leak_tracker_flutter_testing: dependency: transitive description: name: leak_tracker_flutter_testing - sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573 url: "https://pub.dev" source: hosted - version: "3.0.8" + version: "3.0.9" leak_tracker_testing: dependency: transitive description: @@ -1135,10 +1135,10 @@ packages: dependency: transitive description: name: matcher - sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.16+1" + version: "0.12.17" material_color_utilities: dependency: transitive description: @@ -1159,10 +1159,10 @@ packages: dependency: transitive description: name: meta - sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 + sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.16.0" mgrs_dart: dependency: transitive description: @@ -1271,10 +1271,10 @@ packages: dependency: "direct main" description: name: path - sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" path_provider: dependency: "direct main" description: @@ -1383,10 +1383,10 @@ packages: dependency: transitive description: name: platform - sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65" + sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" url: "https://pub.dev" source: hosted - version: "3.1.5" + version: "3.1.6" platform_detect: dependency: transitive description: @@ -1463,10 +1463,10 @@ packages: dependency: transitive description: name: process - sha256: "21e54fd2faf1b5bdd5102afd25012184a6793927648ea81eea80552ac9405b32" + sha256: "107d8be718f120bbba9dcd1e95e3bd325b1b4a4f07db64154635ba03f2567a0d" url: "https://pub.dev" source: hosted - version: "5.0.2" + version: "5.0.3" proj4dart: dependency: transitive description: @@ -1780,10 +1780,10 @@ packages: dependency: transitive description: name: source_span - sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c" url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.10.1" sprintf: dependency: transitive description: @@ -1836,26 +1836,26 @@ packages: dependency: transitive description: name: stack_trace - sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" + sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" url: "https://pub.dev" source: hosted - version: "1.12.0" + version: "1.12.1" stream_channel: dependency: transitive description: name: stream_channel - sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" string_scanner: dependency: transitive description: name: string_scanner - sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.4.1" string_validator: dependency: transitive description: @@ -1900,34 +1900,34 @@ packages: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" test: dependency: transitive description: name: test - sha256: "713a8789d62f3233c46b4a90b174737b2c04cb6ae4500f2aa8b1be8f03f5e67f" + sha256: "301b213cd241ca982e9ba50266bd3f5bd1ea33f1455554c5abb85d1be0e2d87e" url: "https://pub.dev" source: hosted - version: "1.25.8" + version: "1.25.15" test_api: dependency: transitive description: name: test_api - sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" + sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "0.7.4" test_core: dependency: transitive description: name: test_core - sha256: "12391302411737c176b0b5d6491f466b0dd56d4763e347b6714efbaa74d7953d" + sha256: "84d17c3486c8dfdbe5e12a50c8ae176d15e2a771b96909a9442b40173649ccaa" url: "https://pub.dev" source: hosted - version: "0.6.5" + version: "0.6.8" timezone: dependency: transitive description: @@ -2164,10 +2164,10 @@ packages: dependency: transitive description: name: vm_service - sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b + sha256: "0968250880a6c5fe7edc067ed0a13d4bae1577fe2771dcf3010d52c4a9d3ca14" url: "https://pub.dev" source: hosted - version: "14.3.0" + version: "14.3.1" wakelock_plus: dependency: "direct main" description: @@ -2297,5 +2297,5 @@ packages: source: hosted version: "3.1.2" sdks: - dart: ">=3.5.1 <4.0.0" + dart: ">=3.7.0-0 <4.0.0" flutter: ">=3.24.0" diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index d2a3efb85..438aafbad 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -21,7 +21,6 @@ list(APPEND FLUTTER_PLUGIN_LIST ) list(APPEND FLUTTER_FFI_PLUGIN_LIST - flutter_local_notifications_windows ) set(PLUGIN_BUNDLED_LIBRARIES) From fe390ca09b7d46d9b10028f5070113064fe58fe2 Mon Sep 17 00:00:00 2001 From: Krille Date: Sun, 30 Mar 2025 10:37:31 +0200 Subject: [PATCH 19/29] Revert "build: Install flutter via git in snapcraft" This reverts commit cd12f773fe9786556589a9078a3303c516f81634. --- snap/snapcraft.yaml | 33 +++++---------------------------- 1 file changed, 5 insertions(+), 28 deletions(-) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 7aa1d882c..87efdcd88 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -61,41 +61,18 @@ parts: build-packages: - g++ - flutter-git: - source: https://github.com/flutter/flutter.git - source-tag: 3.29.2 - plugin: nil - override-build: | - set -eux - mkdir -p $CRAFT_PART_INSTALL/usr/bin - mkdir -p $CRAFT_PART_INSTALL/usr/libexec - cp -r $CRAFT_PART_SRC $CRAFT_PART_INSTALL/usr/libexec/flutter - ln -sf $CRAFT_PART_INSTALL/usr/libexec/flutter/bin/flutter $CRAFT_PART_INSTALL/usr/bin/flutter - export PATH="$CRAFT_PART_INSTALL/usr/bin:$PATH" - flutter doctor - build-packages: - - clang - - cmake - - curl - - ninja-build - - unzip - override-prime: '' - fluffychat: - after: [ flutter-git ] - plugin: nil + plugin: flutter source: . override-build: | - flutter pub get || true - flutter build linux --release -v - mkdir -p $CRAFT_PART_INSTALL/bin - cp -r build/linux/*/release/bundle/* $CRAFT_PART_INSTALL/bin/ + # Workaround for Flutter build error: + rm -rf build + craftctl default build-packages: - libsecret-1-dev - libjsoncpp-dev - libssl-dev - curl - - jq stage-packages: - libsecret-1-0 - libjsoncpp25 @@ -108,7 +85,7 @@ slots: apps: fluffychat: - command: bin/fluffychat + command: fluffychat extensions: [ gnome ] plugs: - audio-playback From fad17f04c9dd9de899648a7c887f16f550424ae2 Mon Sep 17 00:00:00 2001 From: Krille Date: Sun, 30 Mar 2025 10:42:16 +0200 Subject: [PATCH 20/29] chore: Update locale config for localizations Signed-off-by: Krille --- android/app/src/main/res/xml/locale_config.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/android/app/src/main/res/xml/locale_config.xml b/android/app/src/main/res/xml/locale_config.xml index 46d66d7b8..b3bb1ff7a 100644 --- a/android/app/src/main/res/xml/locale_config.xml +++ b/android/app/src/main/res/xml/locale_config.xml @@ -45,6 +45,7 @@ + From 38a223f44daef7138b0fd977b7f462afed387670 Mon Sep 17 00:00:00 2001 From: Krille Date: Sun, 30 Mar 2025 10:51:33 +0200 Subject: [PATCH 21/29] build: Add libpciaccess0 package to snap Signed-off-by: Krille --- snap/snapcraft.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/snap/snapcraft.yaml b/snap/snapcraft.yaml index 87efdcd88..65dbd7e82 100644 --- a/snap/snapcraft.yaml +++ b/snap/snapcraft.yaml @@ -76,6 +76,7 @@ parts: stage-packages: - libsecret-1-0 - libjsoncpp25 + - libpciaccess0 slots: dbus-svc: From df64409eeb4c3b6eaefdfd1c8aab53032b42b9c8 Mon Sep 17 00:00:00 2001 From: Jelv Date: Sun, 30 Mar 2025 12:39:51 +0200 Subject: [PATCH 22/29] Translated using Weblate (Dutch) Currently translated at 100.0% (765 of 765 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/nl/ --- assets/l10n/intl_nl.arb | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/assets/l10n/intl_nl.arb b/assets/l10n/intl_nl.arb index ba3d090db..0706f6d94 100644 --- a/assets/l10n/intl_nl.arb +++ b/assets/l10n/intl_nl.arb @@ -69,7 +69,7 @@ } } }, - "anyoneCanJoin": "Iedereen kan deelnemen", + "anyoneCanJoin": "Iedereen kan toetreden", "@anyoneCanJoin": { "type": "String", "placeholders": {} @@ -294,7 +294,7 @@ } } }, - "changedTheJoinRules": "{username} heeft de deelnameregels gewijzigd", + "changedTheJoinRules": "{username} heeft de toetredingsregels gewijzigd", "@changedTheJoinRules": { "type": "String", "placeholders": { @@ -303,7 +303,7 @@ } } }, - "changedTheJoinRulesTo": "{username} heeft de deelnameregels gewijzigd in: {joinRules}", + "changedTheJoinRulesTo": "{username} heeft de toetredingsregels gewijzigd in: {joinRules}", "@changedTheJoinRulesTo": { "type": "String", "placeholders": { @@ -426,7 +426,7 @@ "type": "String", "description": "Usage hint for the command /invite" }, - "commandHint_join": "Deelnemen aan de kamer", + "commandHint_join": "Toetreden tot de vermelde kamer", "@commandHint_join": { "type": "String", "description": "Usage hint for the command /join" @@ -530,7 +530,7 @@ "type": "String", "placeholders": {} }, - "containsUserName": "Bevat gebruikersnaam", + "containsUserName": "Bevat inlognaam", "@containsUserName": { "type": "String", "placeholders": {} @@ -844,7 +844,7 @@ "type": "String", "placeholders": {} }, - "fromJoining": "Vanaf deelname", + "fromJoining": "Vanaf toetreden", "@fromJoining": { "type": "String", "placeholders": {} @@ -1027,7 +1027,7 @@ } } }, - "joinRoom": "Deelnemen", + "joinRoom": "Toetreden tot de kamer", "@joinRoom": { "type": "String", "placeholders": {} @@ -1938,7 +1938,7 @@ } } }, - "username": "Gebruikersnaam", + "username": "Inlognaam", "@username": { "type": "String", "placeholders": {} @@ -2648,7 +2648,7 @@ "@alwaysUse24HourFormat": { "description": "Set to true to always display time of day in 24 hour format." }, - "joinSpace": "Deelname aan space", + "joinSpace": "Toetreden tot de space", "@joinSpace": {}, "block": "Blokkeren", "@block": {}, @@ -2667,7 +2667,7 @@ "@calls": {}, "customEmojisAndStickers": "Aangepaste emoticons en stickers", "@customEmojisAndStickers": {}, - "accessAndVisibilityDescription": "Wie mag meedoen in deze chat en hoe de chat ontdekt kan worden.", + "accessAndVisibilityDescription": "Wie mag toetreden tot deze chat en hoe de chat ontdekt kan worden.", "@accessAndVisibilityDescription": {}, "customEmojisAndStickersBody": "Voeg toe of deel aangepaste emoji's of stickers die gebruikt kunnen worden in elke chat.", "@customEmojisAndStickersBody": {}, @@ -2677,7 +2677,7 @@ "@hideRedactedMessagesBody": {}, "hideInvalidOrUnknownMessageFormats": "Verberg ongeldige of onbekende berichtformaten", "@hideInvalidOrUnknownMessageFormats": {}, - "passwordRecoverySettings": "Wachtwoord herstel instellingen", + "passwordRecoverySettings": "Wachtwoordherstel-instellingen", "@passwordRecoverySettings": {}, "youInvitedToBy": "📩 Je bent uitgenodigd via een link voor:\n{alias}", "@youInvitedToBy": { @@ -2687,11 +2687,11 @@ } } }, - "knock": "Kloppen", + "knock": "Klop", "@knock": {}, "overview": "Overzicht", "@overview": {}, - "hidePresences": "Verberg Status Lijst?", + "hidePresences": "Verberg statuslijst?", "@hidePresences": {}, "noOneCanJoin": "Niemand kan deelnemen", "@noOneCanJoin": {}, @@ -2713,7 +2713,7 @@ }, "publicSpaces": "Openbare spaces", "@publicSpaces": {}, - "blockUsername": "Negeer gebruikersnaam", + "blockUsername": "Negeer inlognaam", "@blockUsername": {}, "publicChatAddresses": "Openbare chat adressen", "@publicChatAddresses": {}, @@ -2733,7 +2733,7 @@ }, "noMoreChatsFound": "Geen chats gevonden...", "@noMoreChatsFound": {}, - "joinedChats": "Deelnemende chats", + "joinedChats": "Chats waaraan je deelneemt", "@joinedChats": {}, "knocking": "Kloppen", "@knocking": {}, @@ -2832,7 +2832,7 @@ "@stickers": {}, "nothingFound": "Niets gevonden...", "@nothingFound": {}, - "gallery": "Gallerij", + "gallery": "Galerij", "@gallery": {}, "transparent": "Transparant", "@transparent": {}, @@ -2840,11 +2840,11 @@ "@incomingMessages": {}, "discover": "Ontdek", "@discover": {}, - "commandHint_ignore": "Negeer de gegeven matrix ID", + "commandHint_ignore": "Negeer de gegeven Matrix ID", "@commandHint_ignore": {}, "noChatsFoundHere": "Hier zijn nog geen chats. Begin een nieuwe chat met iemand door op de onderstaande knop te klikken. ⤵️", "@noChatsFoundHere": {}, - "unableToJoinChat": "Kan niet deelnemen aan chat. Misschien heeft de andere partij het gesprek al afgesloten.", + "unableToJoinChat": "Kan niet toetreden tot de chat. Misschien heeft de andere partij het gesprek al afgesloten.", "@unableToJoinChat": {}, "aboutHomeserver": "Over {homeserver}", "@aboutHomeserver": { From 62ecb354adcd864b5d9ab6a18cdff355f0e6cf42 Mon Sep 17 00:00:00 2001 From: miullu Date: Sun, 30 Mar 2025 06:03:06 +0200 Subject: [PATCH 23/29] Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 93.3% (714 of 765 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/zh_Hant/ --- assets/l10n/intl_zh_Hant.arb | 83 +++++++++++++++++++++++++++++++++++- 1 file changed, 82 insertions(+), 1 deletion(-) diff --git a/assets/l10n/intl_zh_Hant.arb b/assets/l10n/intl_zh_Hant.arb index 3a8c26014..c23b96f2e 100644 --- a/assets/l10n/intl_zh_Hant.arb +++ b/assets/l10n/intl_zh_Hant.arb @@ -3164,5 +3164,86 @@ "type": "String" } } - } + }, + "contentNotificationSettings": "內容通知設定", + "@contentNotificationSettings": {}, + "generalNotificationSettings": "常規通知設定", + "@generalNotificationSettings": {}, + "roomNotificationSettings": "聊天室通知設定", + "@roomNotificationSettings": {}, + "userSpecificNotificationSettings": "用戶特定通知設定", + "@userSpecificNotificationSettings": {}, + "otherNotificationSettings": "其他通知設定", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserName": "包含用户名稱", + "@notificationRuleContainsUserName": {}, + "notificationRuleContainsUserNameDescription": "當訊息帶有用户名稱時通知用戶。", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMaster": "靜音所有通知", + "@notificationRuleMaster": {}, + "notificationRuleMasterDescription": "覆蓋所有其他規則並禁止所有通知。", + "@notificationRuleMasterDescription": {}, + "notificationRuleInviteForMe": "邀請我", + "@notificationRuleInviteForMe": {}, + "notificationRuleSuppressNoticesDescription": "隱藏來自bot等的自動化消息。", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleSuppressNotices": "隱藏自動化消息", + "@notificationRuleSuppressNotices": {}, + "notificationRuleMemberEvent": "成員事件", + "@notificationRuleMemberEvent": {}, + "notificationRuleMemberEventDescription": "隱藏成員事件的通知。", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsUserMention": "用户提及", + "@notificationRuleIsUserMention": {}, + "notificationRuleInviteForMeDescription": "當用户被邀請到聊天室時,通知他們。", + "@notificationRuleInviteForMeDescription": {}, + "commandHint_roomupgrade": "升級此聊天室至指定版本", + "@commandHint_roomupgrade": {}, + "serverInformation": "伺服器資訊 :", + "@serverInformation": {}, + "name": "名稱", + "@name": {}, + "website": "網站", + "@website": {}, + "compress": "壓縮", + "@compress": {}, + "newChatRequest": "📩 新的聊天邀請", + "@newChatRequest": {}, + "enterNewChat": "進入新聊天室", + "@enterNewChat": {}, + "version": "版本", + "@version": {}, + "unableToJoinChat": "無法加入聊天室。對話可能以被其他方結束。", + "@unableToJoinChat": {}, + "appWantsToUseForLogin": "使用伺服器「{server} 」登入", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "italicText": "斜體", + "@italicText": {}, + "boldText": "粗體", + "@boldText": {}, + "strikeThrough": "刪除線", + "@strikeThrough": {}, + "pleaseFillOut": "請填充", + "@pleaseFillOut": {}, + "invalidUrl": "無效 url", + "@invalidUrl": {}, + "appWantsToUseForLoginDescription": "你特此允許該應用程式和網站分享關於你的信息。", + "@appWantsToUseForLoginDescription": {}, + "open": "打開", + "@open": {}, + "waitingForServer": "等待伺服器中...", + "@waitingForServer": {}, + "appIntroduction": "FluffyChat 讓你和你的朋友跨越工具聊天。在 https://matrix.org 了解更多或*繼續*。", + "@appIntroduction": {}, + "previous": "上一個", + "@previous": {}, + "otherPartyNotLoggedIn": "對方現未登入,未能接收訊息。", + "@otherPartyNotLoggedIn": {} } From bc067b48742a43cbd771b911a720ae6989fbd1bf Mon Sep 17 00:00:00 2001 From: Yurt Page Date: Tue, 1 Apr 2025 11:03:12 +0200 Subject: [PATCH 24/29] Translated using Weblate (Russian) Currently translated at 95.6% (732 of 765 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/ru/ --- assets/l10n/intl_ru.arb | 90 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 88 insertions(+), 2 deletions(-) diff --git a/assets/l10n/intl_ru.arb b/assets/l10n/intl_ru.arb index 3a59b50c5..d986499a9 100644 --- a/assets/l10n/intl_ru.arb +++ b/assets/l10n/intl_ru.arb @@ -2476,7 +2476,7 @@ "@noOtherDevicesFound": {}, "reportErrorDescription": "😭 О, нет. Что-то пошло не так. При желании вы можете сообщить об этой ошибке разработчикам.", "@reportErrorDescription": {}, - "report": "сообщить", + "report": "пожаловаться", "@report": {}, "allRooms": "Все группы", "@allRooms": { @@ -3184,5 +3184,91 @@ } }, "compress": "Сжатие", - "@compress": {} + "@compress": {}, + "notificationRuleMessage": "Сообщение", + "@notificationRuleMessage": {}, + "appWantsToUseForLoginDescription": "Вы позволяете приложению и веб-сайту делиться информацией о вас.", + "@appWantsToUseForLoginDescription": {}, + "newChatRequest": "📩 Запрос нового чата", + "@newChatRequest": {}, + "allDevices": "Все устройства", + "@allDevices": {}, + "roomNotificationSettings": "Настройки уведомлений комнаты", + "@roomNotificationSettings": {}, + "notificationRuleContainsUserName": "Содержит имя пользователя", + "@notificationRuleContainsUserName": {}, + "notificationRuleMaster": "Отключить все уведомления", + "@notificationRuleMaster": {}, + "notificationRuleSuppressNoticesDescription": "Отключить уведомления от автоматизированных клиентов, таких как боты.", + "@notificationRuleSuppressNoticesDescription": {}, + "notificationRuleInviteForMe": "Приглашение для меня", + "@notificationRuleInviteForMe": {}, + "notificationRuleMemberEventDescription": "Отключить уведомления о событиях о членстве.", + "@notificationRuleMemberEventDescription": {}, + "notificationRuleIsRoomMention": "Упоминание комнаты", + "@notificationRuleIsRoomMention": {}, + "notificationRuleReactionDescription": "Отключить уведомления о реакциях.", + "@notificationRuleReactionDescription": {}, + "notificationRuleCall": "Звонок", + "@notificationRuleCall": {}, + "notificationRuleSuppressEditsDescription": "Отключить уведомления о отредактированных сообщениях.", + "@notificationRuleSuppressEditsDescription": {}, + "notificationRuleEncrypted": "Зашифровано", + "@notificationRuleEncrypted": {}, + "more": "Больше", + "@more": {}, + "synchronizingPleaseWaitCounter": " Синхронизация… ({percentage}%)", + "@synchronizingPleaseWaitCounter": { + "type": "String", + "placeholders": { + "percentage": { + "type": "String" + } + } + }, + "appWantsToUseForLogin": "Использовать '{server}' для входа", + "@appWantsToUseForLogin": { + "type": "String", + "placeholders": { + "server": { + "type": "String" + } + } + }, + "contentNotificationSettings": "Настройки уведомлений по тексту", + "@contentNotificationSettings": {}, + "generalNotificationSettings": "Общие настройки уведомлений", + "@generalNotificationSettings": {}, + "userSpecificNotificationSettings": "Настроки уведомлений пользователя", + "@userSpecificNotificationSettings": {}, + "otherNotificationSettings": "Другие настройки уведомлений", + "@otherNotificationSettings": {}, + "notificationRuleContainsUserNameDescription": "Уведомляет пользователя когда сообщение содержит его имя пользователя.", + "@notificationRuleContainsUserNameDescription": {}, + "notificationRuleMasterDescription": "Перекрывает все другие правила и отключает все уведомления.", + "@notificationRuleMasterDescription": {}, + "notificationRuleSuppressNotices": "Отключить автоматические сообщения", + "@notificationRuleSuppressNotices": {}, + "notificationRuleIsUserMention": "Упоминание пользователя", + "@notificationRuleIsUserMention": {}, + "notificationRuleContainsDisplayName": "Содержит отображаемое имя", + "@notificationRuleContainsDisplayName": {}, + "notificationRuleReaction": "Реакция", + "@notificationRuleReaction": {}, + "takeAPhoto": "Снять фото", + "@takeAPhoto": {}, + "recordAVideo": "Записать видео", + "@recordAVideo": {}, + "enterNewChat": "Введите новый чат", + "@enterNewChat": {}, + "otherPartyNotLoggedIn": "Другая сторона в настоящее время не вошла в систему и поэтому не может получать сообщения!", + "@otherPartyNotLoggedIn": {}, + "open": "Открыть", + "@open": {}, + "waitingForServer": "Ожидание сервера...", + "@waitingForServer": {}, + "appIntroduction": "FluffyChat позволяет вам общаться с друзьями с разными мессенджерами. Узнайте больше на https://matrix.org или просто нажмите *Продолжить*.", + "@appIntroduction": {}, + "previous": "Предыдущий", + "@previous": {} } From 7c1c1ad25c6030d2a116df8e5fd993ba8bd8c32f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Hirsch?= Date: Fri, 28 Mar 2025 22:00:19 +0100 Subject: [PATCH 25/29] chore: upgrade chewie and video_player packages This bumps the minimum Flutter version to 3.27. I think this is not an issue, since e93fdebe2017f6c6491ceb93d57c71148d1b4f0d upgraded to 3.29.2 already. --- pubspec.lock | 34 +++++++++++++++++----------------- pubspec.yaml | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index e5369f057..51d98a87b 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -178,10 +178,10 @@ packages: dependency: "direct main" description: name: chewie - sha256: "335df378c025588aef400c704bd71f0daea479d4cd57c471c88c056c1144e7cd" + sha256: "0bf6f7692cb65f7b8f59a2a17025b9cbe8f75ab4251e66161a4fc86162475fb6" url: "https://pub.dev" source: hosted - version: "1.8.5" + version: "1.11.0" cli_util: dependency: transitive description: @@ -2124,42 +2124,42 @@ packages: dependency: "direct main" description: name: video_player - sha256: "4a8c3492d734f7c39c2588a3206707a05ee80cef52e8c7f3b2078d430c84bc17" + sha256: "7d78f0cfaddc8c19d4cb2d3bebe1bfef11f2103b0a03e5398b303a1bf65eeb14" url: "https://pub.dev" source: hosted - version: "2.9.2" + version: "2.9.5" video_player_android: dependency: transitive description: name: video_player_android - sha256: ae5287ca367e206eb74d7b3dc1ce0b8912ab9a3fc0597b6a101a0a5239f229d3 + sha256: ae7d4f1b41e3ac6d24dd9b9d5d6831b52d74a61bdd90a7a6262a33d8bb97c29a url: "https://pub.dev" source: hosted - version: "2.7.9" + version: "2.8.2" video_player_avfoundation: dependency: transitive description: name: video_player_avfoundation - sha256: cd5ab8a8bc0eab65ab0cea40304097edc46da574c8c1ecdee96f28cd8ef3792f + sha256: "84b4752745eeccb6e75865c9aab39b3d28eb27ba5726d352d45db8297fbd75bc" url: "https://pub.dev" source: hosted - version: "2.6.2" + version: "2.7.0" video_player_platform_interface: dependency: transitive description: name: video_player_platform_interface - sha256: "229d7642ccd9f3dc4aba169609dd6b5f3f443bb4cc15b82f7785fcada5af9bbb" + sha256: df534476c341ab2c6a835078066fc681b8265048addd853a1e3c78740316a844 url: "https://pub.dev" source: hosted - version: "6.2.3" + version: "6.3.0" video_player_web: dependency: transitive description: name: video_player_web - sha256: "6dcdd298136523eaf7dfc31abaf0dfba9aa8a8dbc96670e87e9d42b6f2caf774" + sha256: "3ef40ea6d72434edbfdba4624b90fd3a80a0740d260667d91e7ecd2d79e13476" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.3.4" vm_service: dependency: transitive description: @@ -2172,18 +2172,18 @@ packages: dependency: "direct main" description: name: wakelock_plus - sha256: bf4ee6f17a2fa373ed3753ad0e602b7603f8c75af006d5b9bdade263928c0484 + sha256: b90fbcc8d7bdf3b883ea9706d9d76b9978cb1dfa4351fcc8014d6ec31a493354 url: "https://pub.dev" source: hosted - version: "1.2.8" + version: "1.2.11" wakelock_plus_platform_interface: dependency: transitive description: name: wakelock_plus_platform_interface - sha256: "422d1cdbb448079a8a62a5a770b69baa489f8f7ca21aef47800c726d404f9d16" + sha256: "70e780bc99796e1db82fe764b1e7dcb89a86f1e5b3afb1db354de50f2e41eb7a" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" watcher: dependency: transitive description: @@ -2298,4 +2298,4 @@ packages: version: "3.1.2" sdks: dart: ">=3.7.0-0 <4.0.0" - flutter: ">=3.24.0" + flutter: ">=3.27.0" diff --git a/pubspec.yaml b/pubspec.yaml index 82fa2aff7..5bfee702e 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -14,7 +14,7 @@ dependencies: async: ^2.11.0 badges: ^3.1.2 blurhash_dart: ^1.2.1 - chewie: ^1.8.1 + chewie: ^1.11.0 collection: ^1.18.0 cross_file: ^0.3.4+2 cupertino_icons: any From d9ee3fbec68eb61577261c72f978325f5894dfce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Hirsch?= Date: Wed, 2 Apr 2025 21:04:01 +0200 Subject: [PATCH 26/29] fix: properly dispose VideoPlayerController This ensures that a playing video stops playing when we navigate away from the chat. I also reorganized the code a little. --- lib/pages/chat/events/video_player.dart | 63 ++++++++++++++----------- 1 file changed, 35 insertions(+), 28 deletions(-) diff --git a/lib/pages/chat/events/video_player.dart b/lib/pages/chat/events/video_player.dart index ad3dfaf15..59bb06694 100644 --- a/lib/pages/chat/events/video_player.dart +++ b/lib/pages/chat/events/video_player.dart @@ -37,22 +37,30 @@ class EventVideoPlayer extends StatefulWidget { } class EventVideoPlayerState extends State { - ChewieController? _chewieManager; + ChewieController? _chewieController; + VideoPlayerController? _videoPlayerController; bool _isDownloading = false; - String? _networkUri; - File? _tmpFile; void _downloadAction() async { if (PlatformInfos.isDesktop) { widget.event.saveFile(context); return; } + setState(() => _isDownloading = true); + try { final videoFile = await widget.event.downloadAndDecryptAttachment(); + + // Dispose the controllers if we already have them. + _disposeControllers(); + late VideoPlayerController videoPlayerController; + + // Create the VideoPlayerController from the contents of videoFile. if (kIsWeb) { final blob = html.Blob([videoFile.bytes]); - _networkUri = html.Url.createObjectUrlFromBlob(blob); + final networkUri = Uri.parse(html.Url.createObjectUrlFromBlob(blob)); + videoPlayerController = VideoPlayerController.networkUrl(networkUri); } else { final tempDir = await getTemporaryDirectory(); final fileName = Uri.encodeComponent( @@ -62,25 +70,19 @@ class EventVideoPlayerState extends State { if (await file.exists() == false) { await file.writeAsBytes(videoFile.bytes); } - _tmpFile = file; - } - final tmpFile = _tmpFile; - final networkUri = _networkUri; - if (kIsWeb && networkUri != null && _chewieManager == null) { - _chewieManager ??= ChewieController( - videoPlayerController: - VideoPlayerController.networkUrl(Uri.parse(networkUri)), - autoPlay: true, - autoInitialize: true, - ); - } else if (!kIsWeb && tmpFile != null && _chewieManager == null) { - _chewieManager ??= ChewieController( - useRootNavigator: false, - videoPlayerController: VideoPlayerController.file(tmpFile), - autoPlay: true, - autoInitialize: true, - ); + videoPlayerController = VideoPlayerController.file(file); } + _videoPlayerController = videoPlayerController; + + await videoPlayerController.initialize(); + + // Create a ChewieController on top. + _chewieController = ChewieController( + videoPlayerController: videoPlayerController, + useRootNavigator: !kIsWeb, + autoPlay: true, + autoInitialize: true, + ); } on IOException catch (e) { ScaffoldMessenger.of(context).showSnackBar( SnackBar( @@ -90,15 +92,20 @@ class EventVideoPlayerState extends State { } catch (e, s) { ErrorReporter(context, 'Unable to play video').onErrorCallback(e, s); } finally { - // Workaround for Chewie needs time to get the aspectRatio - await Future.delayed(const Duration(milliseconds: 100)); setState(() => _isDownloading = false); } } + void _disposeControllers() { + _chewieController?.dispose(); + _videoPlayerController?.dispose(); + _chewieController = null; + _videoPlayerController = null; + } + @override void dispose() { - _chewieManager?.dispose(); + _disposeControllers(); super.dispose(); } @@ -118,7 +125,7 @@ class EventVideoPlayerState extends State { const width = 300.0; - final chewieManager = _chewieManager; + final chewieController = _chewieController; return Column( mainAxisSize: MainAxisSize.min, spacing: 8, @@ -128,8 +135,8 @@ class EventVideoPlayerState extends State { borderRadius: BorderRadius.circular(AppConfig.borderRadius), child: SizedBox( height: width, - child: chewieManager != null - ? Center(child: Chewie(controller: chewieManager)) + child: chewieController != null + ? Center(child: Chewie(controller: chewieController)) : Stack( children: [ if (hasThumbnail) From cfcbf944ffaccffcec3a90e5a9080ab16471fdc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Hirsch?= Date: Wed, 2 Apr 2025 21:04:01 +0200 Subject: [PATCH 27/29] feat: support inline video playback on macOS It turns out that video_player supports macOS, so we can simply enable it. --- lib/pages/chat/events/video_player.dart | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/pages/chat/events/video_player.dart b/lib/pages/chat/events/video_player.dart index 59bb06694..dd7917b34 100644 --- a/lib/pages/chat/events/video_player.dart +++ b/lib/pages/chat/events/video_player.dart @@ -41,8 +41,12 @@ class EventVideoPlayerState extends State { VideoPlayerController? _videoPlayerController; bool _isDownloading = false; + // The video_player package only doesn't support Windows and Linux. + final _supportsVideoPlayer = + !PlatformInfos.isWindows && !PlatformInfos.isLinux; + void _downloadAction() async { - if (PlatformInfos.isDesktop) { + if (!_supportsVideoPlayer) { widget.event.saveFile(context); return; } From 706d0bf060a63d77a50b695a3583fe659c37725f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Hirsch?= Date: Wed, 2 Apr 2025 21:27:09 +0200 Subject: [PATCH 28/29] feat: clearly mark when a video is to be downloaded This shows a download icon instead of the play icon on top of the video if the video player isn't supported. --- lib/pages/chat/events/video_player.dart | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/pages/chat/events/video_player.dart b/lib/pages/chat/events/video_player.dart index dd7917b34..5cb5cf913 100644 --- a/lib/pages/chat/events/video_player.dart +++ b/lib/pages/chat/events/video_player.dart @@ -170,7 +170,9 @@ class EventVideoPlayerState extends State { strokeWidth: 2, ), ) - : const Icon(Icons.play_circle_outlined), + : _supportsVideoPlayer + ? const Icon(Icons.play_circle_outlined) + : const Icon(Icons.file_download_outlined), tooltip: _isDownloading ? L10n.of(context).loadingPleaseWait : L10n.of(context).videoWithSize( From 490990203f29583c382afcd3b08fce27c9eab1fc Mon Sep 17 00:00:00 2001 From: miullu Date: Thu, 3 Apr 2025 14:34:02 +0200 Subject: [PATCH 29/29] Translated using Weblate (Chinese (Traditional Han script)) Currently translated at 93.7% (717 of 765 strings) Translation: FluffyChat/Translations Translate-URL: https://hosted.weblate.org/projects/fluffychat/translations/zh_Hant/ --- assets/l10n/intl_zh_Hant.arb | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/assets/l10n/intl_zh_Hant.arb b/assets/l10n/intl_zh_Hant.arb index c23b96f2e..c4f77b844 100644 --- a/assets/l10n/intl_zh_Hant.arb +++ b/assets/l10n/intl_zh_Hant.arb @@ -186,7 +186,7 @@ } } }, - "changedTheChatDescriptionTo": "{username} 變更了聊天室介紹為:「{description}」", + "changedTheChatDescriptionTo": "{username} 把聊天室介紹變更為:「{description}」", "@changedTheChatDescriptionTo": { "type": "String", "placeholders": { @@ -198,7 +198,7 @@ } } }, - "changedTheChatNameTo": "{username} 變更了聊天室名稱為:「{chatname}」", + "changedTheChatNameTo": "{username} 把聊天室名稱變更為:「{chatname}」", "@changedTheChatNameTo": { "type": "String", "placeholders": { @@ -2750,7 +2750,7 @@ "@disableEncryptionWarning": {}, "deviceKeys": "裝置密鑰:", "@deviceKeys": {}, - "fileIsTooBigForServer": "伺服器報告該文件太大,無法傳送。", + "fileIsTooBigForServer": "無法發送!該伺服器僅支援最大到 {max} 的附件。", "@fileIsTooBigForServer": {}, "fileHasBeenSavedAt": "文件已保存在 {path}", "@fileHasBeenSavedAt": { @@ -3244,6 +3244,10 @@ "@appIntroduction": {}, "previous": "上一個", "@previous": {}, - "otherPartyNotLoggedIn": "對方現未登入,未能接收訊息。", - "@otherPartyNotLoggedIn": {} + "otherPartyNotLoggedIn": "對方現未登入,未能接收訊息 !", + "@otherPartyNotLoggedIn": {}, + "supportPage": "幫助頁面", + "@supportPage": {}, + "addLink": "插入連結", + "@addLink": {} }