Compare commits

..

125 Commits

Author SHA1 Message Date
Evgeny Poberezkin 77adc5817d Revert "core: revert build to use two branches (#4052)"
This reverts commit c8c81a840b.
2024-04-19 21:19:08 +01:00
Evgeny Poberezkin c8c81a840b core: revert build to use two branches (#4052)
* Revert "scripts: ghc version update (#4010)"

This reverts commit 35b7f2cb1c.

* Revert "Force include hs_init_with_rtsopts (#4028)"

This reverts commit 76a33a3743.

* Revert "core: fix nix config (#4003)"

This reverts commit f8e6a78a3b.

* Revert "ci: build armv7a with 8.10.7 in the main branches (master, stable) (#3733)"

This reverts commit 0d7a32877f.
2024-04-19 21:17:22 +01:00
Stanislav Dmitrenko 925cb39397 desktop: using system sound in screenshare (#4035)
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-04-19 17:37:47 +01:00
Stanislav Dmitrenko f6ceb89c4b android, desktop: forward ui (#4039)
* android, desktop: forward ui

* changes

* attachment icon

* reorder lines

* reorder lines

* change

* inline content + formatted text

* fix header padding

* fix

* fix2

* Revert "fix header padding"

This reverts commit 63f2b15f02.

* broken default parameter

* changes

* more checks for file forwarding

* paddings

* padding

* padding and fix

---------

Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
2024-04-19 17:36:32 +01:00
Evgeny Poberezkin a35d392f76 core: update simplexmq 2024-04-19 17:25:34 +01:00
spaced4ndy 1306c84938 ios: in item context menu don't show forward button if file doesn't exist, add download button (#4048) 2024-04-19 17:21:35 +01:00
Stanislav Dmitrenko 6484e36b82 ios: fix mute/unmute button state (#4046) 2024-04-19 17:20:31 +01:00
Stanislav Dmitrenko 918be31f2c desktop: fix freeze that happened when new chat items arrives while scrolling via scrollbar (#4050) 2024-04-19 15:57:00 +01:00
spaced4ndy 648884044f core: prohibit forwarding file if it's not found (#4047) 2024-04-19 11:31:44 +04:00
Stanislav Dmitrenko 505c6cb062 ios: prevent a crash when exiting the app (#4041)
* ios: prevent a crash when exiting the app

* log
2024-04-19 07:23:13 +01:00
Stanislav Dmitrenko 065c8f8861 ios: fix typing using keyboard suggestions (#4045) 2024-04-19 07:17:17 +01:00
spaced4ndy 6c509027f7 docs: IP address protection rfc (#4036) 2024-04-17 13:53:45 +04:00
Evgeny Poberezkin 4eafdc3723 blog: metadata in messengers (#4038)
* blog: metadata in messengers

* readme

* call.js

* picture

* revert call.js
2024-04-16 20:18:22 +01:00
spaced4ndy 77f5c678d5 ios: forward ui (#4024)
* wip

* wip

* fixes

* improvements

* info

* fix

* dont cleanup file

* info design, text

* text

* rework with LazyVStack

* delay

* refactor

* move delay

* fix

* refactor

* refactor 2

* keep current message

* forward with quote, context icons

* info

* preserve draft

* remove newline

* improve search

* info

* layout

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-04-16 09:28:39 +01:00
Stanislav Dmitrenko 5e71d00ace android, desktop: workaround of missing stuns support in calls (#4033)
* android, desktop: workaround of missing stuns support in calls

* const
2024-04-16 08:38:46 +01:00
Stanislav Dmitrenko c2169f7813 desktop: fix video calls in Firefox (#4034)
* desktop: fix video calls in Firefox

* one more play()
2024-04-16 08:22:40 +01:00
spaced4ndy 7ff4b05c90 core: remember new origin for received forwarded messages (#4032) 2024-04-15 17:19:37 +04:00
Evgeny Poberezkin d7f8bff957 Merge branch 'stable' 2024-04-15 11:16:33 +01:00
sh bda0917787 github: fix cla action (#4030) 2024-04-15 10:51:24 +01:00
Evgeny Poberezkin 0eae7f56f3 5.7-beta.0: ios 207, android 196, desktop 37 2024-04-14 21:14:15 +01:00
Stanislav Dmitrenko 24e3806b25 webrtc: updated credentials (#4011)
* webrtc: updated credentials

* no udp

* change

* stuns

* added stun back

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-04-14 19:18:12 +01:00
Evgeny Poberezkin f606e5742c ios: update library 2024-04-14 19:11:15 +01:00
Evgeny Poberezkin c6af2c285a core: 5.7.0.0 (#4027) 2024-04-14 17:31:56 +01:00
Stanislav Dmitrenko 35b7f2cb1c scripts: ghc version update (#4010) 2024-04-14 16:42:04 +01:00
Evgeny Poberezkin 76a33a3743 Force include hs_init_with_rtsopts (#4028)
Co-authored-by: Moritz Angermann <moritz.angermann@gmail.com>
2024-04-14 16:12:34 +01:00
Evgeny Poberezkin b6fd5e61b6 Merge branch 'stable' 2024-04-13 12:12:51 +01:00
artur fe639eed48 docs: Add Polish translation (#4001)
* docs: Add polish translation

* README: Add link to polish translation

* docs: Polish version of README - Fix links

* docs: Add links to polish translation, fix

* docs: Fix polish translation thanks to support team

* docs: Add links to polish translation in english version of docs

* fix links

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-04-13 12:12:21 +01:00
spaced4ndy 638fd3756a core: correctly populate data for items forwarded from groups (#4025) 2024-04-13 11:52:39 +01:00
Stanislav Dmitrenko de81434b36 android, desktop: role-based preferences, SimpleX links preference (#4023)
* android, desktop: role-based preferences, SimpleX links preference

* disable for now

* different way of disabling send button

* mic icon filled

* icons

* braces

* colors

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-04-13 11:51:10 +01:00
Evgeny Poberezkin 433b3652fb core: simplexmq 5.6.2.2 2024-04-13 09:33:37 +01:00
Alexander Bondarenko 86fe2212c3 chat: forward files with streaming re-encryption (#4022)
* chat: forward files with streaming re-encryption

* refactor
2024-04-13 09:32:43 +01:00
Evgeny Poberezkin 182225a5b1 ios: role-based preferences, SimpleX links preference (#4021)
* ios: role-based preferences, SimpleX links preference

* disable some options
2024-04-12 11:29:58 +01:00
spaced4ndy e10c63dc64 ui: deletable field (#4019) 2024-04-12 13:10:47 +04:00
spaced4ndy 29941729d2 ui: forwarded item header (#4017) 2024-04-12 12:56:09 +04:00
spaced4ndy ee53377070 core: fix forwarded item deletion (#4018) 2024-04-12 12:55:04 +04:00
spaced4ndy 0deb6a4eb1 ui: forward types (#4008)
* ios: forward types

* android

* move
2024-04-11 13:58:56 +01:00
Stanislav Dmitrenko b84ef0ce35 android: network observer (#3992)
* android: network observer

* removed unused code

* rename

* rename

* new line

* rename

* changes in logic

* adapted to ios logic

* change

* change

* change

* networkLost

* item in settings

* reorder

* changes

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-04-11 13:26:24 +01:00
Stanislav Dmitrenko 34dee32def android, desktop: sound prompts and vibration (#3997)
* android, desktop: sound prompts and vibration

* moved audio playing to js

* Revert "moved audio playing to js"

This reverts commit a9355c2d88.

* sound from speaker/earpiece

* better

* changes

* license of audio

* reorder lines

* loop fix

* awaiting call receipt

* desktop

* new line
2024-04-11 13:19:00 +01:00
Stanislav Dmitrenko 94851f177b ios: noRcvUser handling while downloading a file in migration process (#4012) 2024-04-11 12:05:01 +01:00
Stanislav Dmitrenko e560b49d14 ios: sound prompts and vibration during calls (#4005)
* ios: sound prompts and vibration

* awaiting call receipt

* update

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-04-11 12:02:41 +01:00
Stanislav Dmitrenko d8b52ee0d3 ios: network observer (#3996)
* ios: network observer

* update

* remove metered

* update tcpTimeoutPerKb

* network connection in settings

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-04-11 11:31:30 +01:00
Evgeny Poberezkin a9c0f356b4 ios: update core library 2024-04-11 11:25:06 +01:00
Evgeny Poberezkin 8a3710482b core: update simplexmq 2024-04-11 10:47:51 +01:00
Evgeny Poberezkin b3a4ea8e57 core: api to update user network state (#3998)
* core: api to update user network state

* simplexmq

* update simplexmq

* simplexmq
2024-04-10 23:32:55 +01:00
Evgeny Poberezkin 4be6c69633 core: update simplexmq 2024-04-10 08:49:06 +01:00
Evgeny Poberezkin 005d99ad50 docs: trasparency reports (#4007) 2024-04-09 21:45:48 +01:00
Narasimha-sc 36f86beafd docs: device linking info on downloads page #4004 2024-04-09 20:30:08 +01:00
Evgeny Poberezkin 1fa79a2654 android, desktop: fix incorrect event type for critical/internal error alerts 2024-04-09 18:18:11 +01:00
Evgeny Poberezkin 72611084d3 core: debug events (#4006) 2024-04-09 17:31:52 +01:00
Evgeny Poberezkin a5db36469d core: api to forward messages (#3968)
* wip

* wip

* test

* mute

* tests

* simplify (only bool flag)

* re-encrypt file

* tests

* more tests (wip)

* fix relative paths, refactor

* more tests

* more locks

* fix, tests

* more tests

* rework (revert from bool to ids)

* update schema

* more tests

* add to info

* ForwardedMsg container

* Revert "ForwardedMsg container"

This reverts commit bb57f12151.

* parser

* more tests

* rework api

* more locks

* test

* move

* remove from

* view

* prohibit editing

* item info view

---------

Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
2024-04-09 16:02:59 +04:00
Evgeny Poberezkin f8e6a78a3b core: fix nix config (#4003)
* bump

* more compilers

* i686 32bit only 8.10.7

---------

Co-authored-by: Moritz Angermann <moritz.angermann@gmail.com>
2024-04-09 08:15:29 +01:00
spaced4ndy 5b0c8e0f76 core: improve some tests (#4000) 2024-04-08 18:16:29 +04:00
Evgeny Poberezkin 2968cd0460 rfc: protocol extensions for channels/super-peers (#3980) 2024-04-05 16:46:37 +01:00
Evgeny Poberezkin 8ffb4e500e Merge branch 'stable' 2024-04-05 15:30:09 +01:00
Stanislav Dmitrenko 6133993cfe android, desktop: fix build error related to JVM version (#3995) 2024-04-05 15:29:41 +01:00
Evgeny Poberezkin 0d7a32877f ci: build armv7a with 8.10.7 in the main branches (master, stable) (#3733)
Co-authored-by: Moritz Angermann <moritz.angermann@gmail.com>
2024-04-05 12:24:34 +01:00
Evgeny Poberezkin 18efc28d16 core: additional group preferences: prohibit SimpleX links, restrict some features to specific roles (#3964)
* core: additional group preferences: prohibit SimpleX links, restrict some features to specific roles

* add role to group preference items, tests
2024-04-04 20:41:56 +01:00
spaced4ndy 069395c2a0 core: entity locks (#3962)
* core: entity locks

* more locks

* update sha256map

* add delay

* clean up

* empty

* fix tests

* empty

* empty

* more delays

* empty

* comment delays

* Revert "comment delays"

This reverts commit 4245b545fb.

* Revert "Revert "comment delays""

This reverts commit f803386945.

* take lock in the beginning of processing loop

* empty

* empty

* remove lock

* rework file locks

* empty

* fix

* empty

* add connection locks

* empty

* fix test

* empty

* remove commented delays

* add to debug locks

* update

* refactor

* refactor

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-04-04 19:24:42 +01:00
Stanislav Dmitrenko a725d2efac desktop (windows): fix build (#3990) 2024-04-04 14:18:33 +01:00
Evgeny Poberezkin 5f9710e4bb blog: post 2024-04-04 13:17:20 +01:00
Evgeny Poberezkin ea6c5bfb0b 5.6.1: ios 206, android 193, desktop 36 2024-04-04 08:58:24 +01:00
Stanislav Dmitrenko 14c279d1e0 android: possibly, prevent TooManyRequests exception (#3989)
* android: possibly, prevent TooManyRequests exception

* new line
2024-04-03 15:15:44 +01:00
Stanislav Dmitrenko d2de81100d android: workaround of pager's bug (#3988) 2024-04-03 15:11:04 +01:00
Stanislav Dmitrenko 9b28ae6d9e desktop: remote connection host/port fix (#3987) 2024-04-03 11:58:32 +01:00
Evgeny Poberezkin ea862a8f34 core: 5.6.1.1 (simplexmq 5.6.2.1) 2024-04-03 11:43:42 +01:00
Evgeny Poberezkin 2bd1a82b7d core: revert "deps: switch to base64 via simplexmq (#3957)" (#3985)
* Revert "deps: switch to base64 via simplexmq (#3957)"

This reverts commit d65137882b.

* update simplexmq
2024-04-03 10:47:38 +01:00
Evgeny Poberezkin 97a37634ef ios: 5.6.1 build 205 2024-04-03 01:47:01 +01:00
Stanislav Dmitrenko 28fbc1cd84 desktop: correct height of a window (#3982) 2024-04-02 20:05:14 +01:00
Stanislav Dmitrenko b8ee2af5b7 deskop: show window icon (#3983)
* deskop: show window icon

* size
2024-04-02 18:57:23 +01:00
Stanislav Dmitrenko c234809894 ios: improvement of chat item context menu (#3981)
* ios: improvement of chat item context menu

* rename

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-04-02 17:00:24 +01:00
Evgeny Poberezkin e1a997877a rfc: groups based on super-peers (WIP) (#3917) 2024-04-01 15:04:13 +01:00
Evgeny Poberezkin 69218952c3 core: 5.6.1.0 2024-04-01 14:36:45 +01:00
Evgeny Poberezkin dc2591b0bf ios: build settings (#3978) 2024-04-01 13:55:26 +01:00
Evgeny Poberezkin 2272b77b53 ios: refactor notifications (#3976)
* ios: refactor notifications

* refactor
2024-04-01 13:52:28 +01:00
Evgeny Poberezkin d90e2f4436 core: remove mtl typeclasses to reduce overhead (#3975)
* core: remove mtl typeclasses to reduce overhead

* strict data, optimization

* update simplexmq, clean up

* un-unlift attachRevHTTP2Client

* remote

---------

Co-authored-by: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com>
2024-04-01 13:34:45 +01:00
Evgeny Poberezkin 9b6ca23dcb ios: fix UI freezes on start and when exiting background (#3972)
* ios: fix UI freezes on start and when exiting background

* remove unused code

* comments
2024-03-29 22:58:36 +00:00
Evgeny Poberezkin 1410b4bd85 ios: prevent call to apiContactInfo after the app is suspended 2024-03-29 19:43:16 +00:00
Evgeny Poberezkin 42a35e8c72 ios: prevent call to listUsers after the app is suspended and database is closed 2024-03-29 18:58:55 +00:00
Evgeny Poberezkin 86fe28f1ed core: chat hooks allowing to extend or customize chat core (#3953)
* core: chat hooks allowing to extend or customize chat core

* update

* json

* custom response

* user in db queries
2024-03-29 18:30:17 +00:00
Evgeny Poberezkin 735359c279 android: strings for permissions 2024-03-29 18:28:54 +00:00
Stanislav Dmitrenko 3d20465662 android: more user-friendly way of granting permissions in call (#3945)
* android: more user-friendly way of granting permissions in call

* changes

* ask permissions without click at first

* changes in logic and UI

* enhancements

* show alert only when non in PiP

* change

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-03-29 18:19:36 +00:00
Stanislav Dmitrenko b64ae90850 ios: NotificationService refactoring (#3961)
* ios: NotificationService refactoring

* refactor

* removed unused code

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-03-28 17:28:10 +00:00
spaced4ndy 366b58ead5 core: don't save async commands records for ack (#3904) 2024-03-28 19:52:06 +04:00
spaced4ndy 32bcaad126 ui: add missing error types (#3925) 2024-03-28 17:49:09 +04:00
Alexander Bondarenko d65137882b deps: switch to base64 via simplexmq (#3957)
* deps: switch to base64 via simplexmq

* update error text

* update nix

* set simplexmq to master

* update paths
2024-03-28 13:09:04 +00:00
spaced4ndy 095d613f01 website: translations (#3960)
* Translated using Weblate (Polish)

Currently translated at 100.0% (254 of 254 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/pl/

* Translated using Weblate (Russian)

Currently translated at 100.0% (254 of 254 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/ru/

* Translated using Weblate (Hebrew)

Currently translated at 100.0% (254 of 254 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/he/

* Translated using Weblate (Finnish)

Currently translated at 100.0% (254 of 254 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/fi/

* Translated using Weblate (Finnish)

Currently translated at 100.0% (254 of 254 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/fi/

---------

Co-authored-by: Jakub <fioletowy.temp@tutanota.com>
Co-authored-by: whoami11 <hvhdinik@gmail.com>
Co-authored-by: You and me <trash.93m78@slmail.me>
Co-authored-by: Jiri Grönroos <jiri.gronroos@iki.fi>
2024-03-28 12:30:31 +00:00
spaced4ndy f22beefbd4 ui: translations (#3959)
* Translated using Weblate (German)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/

* Translated using Weblate (Russian)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/

* Translated using Weblate (German)

Currently translated at 100.0% (1478 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/de/

* Translated using Weblate (Russian)

Currently translated at 100.0% (1478 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/

* Translated using Weblate (French)

Currently translated at 100.0% (1478 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (1478 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/fr/

* Translated using Weblate (Italian)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Italian)

Currently translated at 100.0% (1478 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/it/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (1478 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/es/

* Translated using Weblate (Japanese)

Currently translated at 98.3% (1659 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ja/

* Translated using Weblate (Czech)

Currently translated at 98.2% (1657 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/cs/

* Translated using Weblate (Arabic)

Currently translated at 95.9% (1619 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/uk/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (1478 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/uk/

* Translated using Weblate (Portuguese)

Currently translated at 0.3% (5 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pt/

* Translated using Weblate (Hebrew)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/he/

* Translated using Weblate (Hebrew)

Currently translated at 41.7% (617 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/he/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (1478 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1478 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1478 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Japanese)

Currently translated at 98.4% (1661 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ja/

* Translated using Weblate (Portuguese)

Currently translated at 45.2% (763 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pt/

* Translated using Weblate (Portuguese)

Currently translated at 3.7% (55 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pt/

* Translated using Weblate (Hebrew)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/he/

* Translated using Weblate (Japanese)

Currently translated at 99.4% (1678 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ja/

* Translated using Weblate (Portuguese)

Currently translated at 3.7% (56 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pt/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (1478 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/

* Translated using Weblate (Portuguese)

Currently translated at 7.3% (109 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pt/

* Translated using Weblate (Bulgarian)

Currently translated at 96.7% (1430 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/bg/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/bg/

* Translated using Weblate (Vietnamese)

Currently translated at 5.6% (96 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/vi/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ja/

* Translated using Weblate (German)

Currently translated at 100.0% (1688 of 1688 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (1688 of 1688 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (1688 of 1688 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ja/

* Translated using Weblate (Bulgarian)

Currently translated at 99.4% (1470 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/bg/

* Translated using Weblate (Bulgarian)

Currently translated at 99.9% (1687 of 1688 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/bg/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1688 of 1688 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Vietnamese)

Currently translated at 6.0% (102 of 1688 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/vi/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1688 of 1688 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* android

* ios import

* ios export

---------

Co-authored-by: mlanp <github@lang.xyz>
Co-authored-by: subjection yogirt <subjectiongithub@yogirt.com>
Co-authored-by: whoami11 <hvhdinik@gmail.com>
Co-authored-by: khalidbelk <khalid.belkassmi-el-hafi@epitech.eu>
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
Co-authored-by: Miyu Sakatsuki <miyu-sakatsuki@outlook.jp>
Co-authored-by: zenobit <zen@osowoso.xyz>
Co-authored-by: jonnysemon <jonnysemon@users.noreply.hosted.weblate.org>
Co-authored-by: You and me <trash.93m78@slmail.me>
Co-authored-by: summoner001 <summoner@vivaldi.net>
Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me>
Co-authored-by: Andre <andrefeliciano@duck.com>
Co-authored-by: M1K4 <oomikaoo@gmail.com>
Co-authored-by: elgratea <weblate@fastmail.com>
Co-authored-by: tuananh-ng <158744840+tuananh-ng@users.noreply.github.com>
2024-03-28 12:27:58 +00:00
spaced4ndy c9bf36291b ios: fix default (#3958) 2024-03-27 09:59:15 +00:00
spaced4ndy 42ebe8bc60 core: batch broadcast send db operations (#3956)
* core: batch broadcast send db operations

* refactor

* Update src/Simplex/Chat.hs

Co-authored-by: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com>

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
Co-authored-by: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com>
2024-03-27 11:49:14 +04:00
Stanislav Dmitrenko 96fb61ccfc desktop: show toast if failed to show notification (#3955)
* desktop: show toast if failed to show notification

* longer timeout

* returned old version of the lib
2024-03-26 12:43:45 +00:00
spaced4ndy 1d698c114f docs: communicate rejection rfc (#3946) 2024-03-26 11:29:28 +04:00
Stanislav Dmitrenko 154ce5843d android, desktop: update dependencies (#3954)
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-03-25 15:59:00 +00:00
Evgeny Poberezkin a5817d9feb core: fix cabal paths (#3952)
* fixed install cabal file paths.

* updated package.yaml

* fix

---------

Co-authored-by: Andor Kesselman <andor@magic-pro-3.local>
2024-03-25 08:24:46 +00:00
Evgeny Poberezkin 72082af139 docs: update version 2024-03-23 19:20:37 +00:00
Evgeny Poberezkin eb36704f59 Merge branch 'stable' 2024-03-23 18:42:53 +00:00
Evgeny Poberezkin 84fbff6148 blog: v5.6 release, non-profit governance (#3951)
* blog: v5.6 release

* images, preview

* corrections

* update image

* update readme
2024-03-23 18:42:18 +00:00
Evgeny Poberezkin dd75d30c08 blog: update PQ encryption post (#3948)
* blog: update pq encryption post

* correction
2024-03-23 18:29:05 +00:00
spaced4ndy 52803ae976 core: add delays to some failing tests (#3947) 2024-03-22 22:01:11 +04:00
spaced4ndy ec73a31cb5 directory: fix double logic inversion on roles check, incorrect error message (#3944) 2024-03-22 15:07:01 +04:00
Evgeny Poberezkin 6ad5048b58 5.6: ios 204, android 191, desktop 35 2024-03-21 22:30:30 +00:00
Stanislav Dmitrenko ca0ce4dfdd ios: making chat state .active when starting chat, correctly handle hidden users when deleting the last profile (#3936)
* ios: making chat state .active when starting chat

* changes

* refactor

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-03-21 19:36:05 +00:00
spaced4ndy d27502ec47 ios: restore reveal/hide animation (#3933)
* ios: restore reveal/hide animation

* remove comment

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-03-21 19:12:47 +00:00
spaced4ndy 655ad4d813 ui: translations (#3940)
* Translated using Weblate (Dutch)

Currently translated at 96.6% (1622 of 1679 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (Dutch)

Currently translated at 96.2% (1624 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (Dutch)

Currently translated at 97.0% (1638 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (Dutch)

Currently translated at 96.9% (1433 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/

* Translated using Weblate (Dutch)

Currently translated at 98.5% (1456 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (1478 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/

* Translated using Weblate (Hungarian)

Currently translated at 97.0% (1637 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (German)

Currently translated at 96.6% (1631 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/

* Translated using Weblate (French)

Currently translated at 97.2% (1640 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/

* Translated using Weblate (Italian)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Italian)

Currently translated at 97.4% (1441 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/it/

* Translated using Weblate (Czech)

Currently translated at 95.2% (1607 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/cs/

* Translated using Weblate (Hungarian)

Currently translated at 97.0% (1637 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (German)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/

* Translated using Weblate (German)

Currently translated at 100.0% (1478 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/de/

* Translated using Weblate (French)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (1478 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/fr/

* Translated using Weblate (Italian)

Currently translated at 100.0% (1478 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/it/

* Translated using Weblate (Czech)

Currently translated at 98.2% (1657 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/cs/

* Translated using Weblate (Polish)

Currently translated at 99.9% (1686 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pl/

* Translated using Weblate (Polish)

Currently translated at 95.1% (1406 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pl/

* Translated using Weblate (Turkish)

Currently translated at 97.2% (1438 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/tr/

* Translated using Weblate (Hungarian)

Currently translated at 99.6% (1681 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 99.6% (1681 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Polish)

Currently translated at 99.9% (1686 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pl/

* Translated using Weblate (Polish)

Currently translated at 100.0% (1478 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pl/

* Translated using Weblate (Hungarian)

Currently translated at 99.8% (1685 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 99.8% (1476 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Arabic)

Currently translated at 95.8% (1617 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1478 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1478 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Italian)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Italian)

Currently translated at 100.0% (1478 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/it/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/

* Translated using Weblate (Spanish)

Currently translated at 95.9% (1619 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/

* Translated using Weblate (Spanish)

Currently translated at 95.8% (1417 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/es/

* Translated using Weblate (Russian)

Currently translated at 100.0% (1687 of 1687 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/

* Translated using Weblate (Russian)

Currently translated at 100.0% (1478 of 1478 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/

* android

* import

* export

* ru corrections

* export/update ru

---------

Co-authored-by: M1K4 <oomikaoo@gmail.com>
Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me>
Co-authored-by: mlanp <github@lang.xyz>
Co-authored-by: Ophiushi <41908476+ishi-sama@users.noreply.github.com>
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
Co-authored-by: zenobit <zen@osowoso.xyz>
Co-authored-by: summoner001 <summoner@vivaldi.net>
Co-authored-by: B.O.S.S <BxOxSxS@protonmail.com>
Co-authored-by: cervezagua <cervezagua@pm.me>
Co-authored-by: jonnysemon <jonnysemon@users.noreply.hosted.weblate.org>
Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: No name <CertainBot@users.noreply.hosted.weblate.org>
Co-authored-by: khalidbelk <khalid.belkassmi-el-hafi@epitech.eu>
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-03-21 19:07:12 +00:00
Evgeny Poberezkin e0566599a4 core: 5.6.0.4 (#3939) 2024-03-21 19:00:19 +00:00
Evgeny Poberezkin 2546ad5351 Translated using Weblate (Czech) (#3941)
Currently translated at 99.2% (252 of 254 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/cs/

Co-authored-by: zenobit <zen@osowoso.xyz>
2024-03-21 17:37:56 +00:00
Stanislav Dmitrenko 0706e6e464 android: stopping chat after deleting the last user (#3937)
* android: stopping chat after deleting the last user

* fix for hidden users + onboarding
2024-03-21 14:02:38 +00:00
spaced4ndy c2adf40b5a ui: align finalize migration destructive/default button colors (#3938)
* ios: align finalize migration destructive/default button colors

* android
2024-03-21 14:00:27 +00:00
Stanislav Dmitrenko b220ea23e2 ios: stop chat after deleting the last profile (#3935) 2024-03-21 13:58:04 +00:00
spaced4ndy a16e3eebd1 ui: improve "allow PQ" button (#3932)
* ios: improve "allow PQ" button

* android
2024-03-21 09:13:18 +00:00
Stanislav Dmitrenko 6d54c21774 ios: chatitem height with menu workaround (#3930)
* ios: chatitem height with menu workaround

* turned on animation

* disabled animation in some places again
2024-03-20 17:49:53 +00:00
spaced4ndy d2e6313ce3 ui: swap finalize migration buttons (make destructive harder to reach, consistent order of primary and destructive with previous page) (#3931) 2024-03-20 20:20:10 +04:00
Evgeny Poberezkin c2707d3c2b 5.6-beta.1: ios 203, android 190, desktop 34 2024-03-19 17:58:29 +00:00
Stanislav Dmitrenko 43381b5cf0 desktop: scroll bars (#3920)
* desktop: scroll bar

* more places with scrollbar

* removed unused code

* color

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-03-19 16:56:36 +00:00
Evgeny Poberezkin 3f1d86623a core: 5.6.0.3 2024-03-19 15:20:04 +00:00
Stanislav Dmitrenko 5fde879fea ios: better layout performance for chat item (#3911)
* ios: better layout performance for chat item

* different way of disabling menu

* two fixes

---------

Co-authored-by: Avently <avently@local>
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-03-19 14:40:46 +00:00
Evgeny Poberezkin 157c4722ca ui: increase chunk size for new allocations in core to 64mb (#3928) 2024-03-19 14:35:40 +00:00
Alexander Bondarenko 5bc8bbe16c chat: use context-less compression (#3913)
* chat: use context-less compression

* update sha256map

* space

---------

Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-03-19 13:33:27 +00:00
Alexander Bondarenko d835f9df3d ios: remove recursion in receiveMsgLoop (#3922)
* ios: remove recursion in receiveMsgLoop

* comment

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-03-19 11:44:30 +00:00
Evgeny Poberezkin 8f04e13750 ios: add Hungarian interface language (#3927) 2024-03-19 11:34:11 +00:00
spaced4ndy 39167ab3dd multiplatform: 5.6 what's new (#3926) 2024-03-19 11:27:05 +00:00
spaced4ndy e925d87548 ios: 5.6 what's new (#3923)
* ios: 5.6 what's new

* update

* update

* release announcement stub, update link

* Hungarian

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-03-19 10:53:46 +00:00
Evgeny Poberezkin c2e2408394 website: translations (#3919)
* ios: update library

* Translated using Weblate (Finnish)

Currently translated at 97.2% (245 of 252 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/fi/

* Translated using Weblate (French)

Currently translated at 100.0% (254 of 254 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/fr/

* Translated using Weblate (German)

Currently translated at 100.0% (254 of 254 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/de/

* Translated using Weblate (Arabic)

Currently translated at 100.0% (254 of 254 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/ar/

* Translated using Weblate (Italian)

Currently translated at 100.0% (254 of 254 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/it/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (254 of 254 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/zh_Hans/

* Translated using Weblate (Polish)

Currently translated at 100.0% (254 of 254 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/pl/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (254 of 254 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/es/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (254 of 254 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/pt_BR/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (254 of 254 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/nl/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (254 of 254 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/uk/

* Translated using Weblate (Bulgarian)

Currently translated at 1.5% (4 of 254 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/bg/

* Translated using Weblate (Arabic)

Currently translated at 100.0% (254 of 254 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/ar/

* Translated using Weblate (Japanese)

Currently translated at 100.0% (254 of 254 strings)

Translation: SimpleX Chat/SimpleX Chat website
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/ja/

---------

Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com>
Co-authored-by: Jiri Grönroos <jiri.gronroos@iki.fi>
Co-authored-by: Ophiushi <41908476+ishi-sama@users.noreply.github.com>
Co-authored-by: mlanp <github@lang.xyz>
Co-authored-by: jonnysemon <jonnysemon@users.noreply.hosted.weblate.org>
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
Co-authored-by: Float <float.hu+@gmail.com>
Co-authored-by: Jakub <fioletowy.temp@tutanota.com>
Co-authored-by: muralito <muralito@montevideo.com.uy>
Co-authored-by: N1DH0GG <janpstrunn@duck.com>
Co-authored-by: M1K4 <oomikaoo@gmail.com>
Co-authored-by: Maksym Lukashenko <livelmaxim@gmail.com>
Co-authored-by: Salif Mehmed <mail@salif.eu>
Co-authored-by: ActiveTK <webmaster@activetk.jp>
2024-03-19 09:53:25 +00:00
Evgeny Poberezkin bb16922634 ui: translations (#3918)
* Added translation using Weblate (Hungarian)

* Translated using Weblate (Turkish)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (1605 of 1605 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/tr/

* Translated using Weblate (Persian)

Currently translated at 9.2% (149 of 1605 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fa/

* Translated using Weblate (Italian)

Currently translated at 100.0% (1605 of 1605 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Italian)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/it/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/bg/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (1605 of 1605 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/bg/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (1605 of 1605 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1605 of 1605 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Italian)

Currently translated at 100.0% (1607 of 1607 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Arabic)

Currently translated at 99.7% (1603 of 1607 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (1607 of 1607 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/tr/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1607 of 1607 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 0.2% (4 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Hungarian)

Currently translated at 0.2% (4 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Hungarian)

Currently translated at 0.6% (9 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Hungarian)

Currently translated at 5.9% (84 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (1608 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1608 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 20.8% (292 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1608 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1608 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 29.8% (419 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Hungarian)

Currently translated at 29.8% (419 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Arabic)

Currently translated at 99.7% (1604 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1608 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 43.6% (613 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (German)

Currently translated at 100.0% (1608 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/

* Translated using Weblate (German)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/de/

* Translated using Weblate (French)

Currently translated at 100.0% (1608 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/fr/

* Translated using Weblate (Italian)

Currently translated at 100.0% (1608 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Spanish)

Currently translated at 98.0% (1577 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (1608 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/

* Translated using Weblate (Lithuanian)

Currently translated at 45.2% (727 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/lt/

* Translated using Weblate (Polish)

Currently translated at 100.0% (1608 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pl/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1608 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1608 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 99.6% (1398 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Hungarian)

Currently translated at 99.6% (1398 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Update translation files

Updated by "Remove blank strings" hook in Weblate.

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/

* Translated using Weblate (Persian)

Currently translated at 9.6% (155 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fa/

* Translated using Weblate (German)

Currently translated at 100.0% (1608 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/

* Translated using Weblate (German)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/de/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (1608 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/tr/

* Translated using Weblate (Ukrainian)

Currently translated at 99.9% (1607 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/uk/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (1608 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/es/

* Translated using Weblate (Czech)

Currently translated at 95.5% (1536 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/cs/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (1608 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/bg/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1608 of 1608 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (German)

Currently translated at 100.0% (1611 of 1611 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (1611 of 1611 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/

* Translated using Weblate (Japanese)

Currently translated at 97.3% (1568 of 1611 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ja/

* Translated using Weblate (Ukrainian)

Currently translated at 87.9% (1234 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/uk/

* Added translation using Weblate (Vietnamese)

* Translated using Weblate (French)

Currently translated at 100.0% (1611 of 1611 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/

* Translated using Weblate (Italian)

Currently translated at 100.0% (1611 of 1611 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (1611 of 1611 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/es/

* Translated using Weblate (Arabic)

Currently translated at 100.0% (1611 of 1611 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1611 of 1611 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 99.9% (1612 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pt_BR/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pt_BR/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pt_BR/

* Translated using Weblate (French)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pt_BR/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (German)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/

* Translated using Weblate (Italian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/

* Translated using Weblate (French)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/fr/

* Translated using Weblate (Arabic)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 87.2% (1224 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/

* Translated using Weblate (Polish)

Currently translated at 99.9% (1612 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pl/

* Translated using Weblate (Portuguese (Brazil))

Currently translated at 59.7% (838 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pt_BR/

* Translated using Weblate (Dutch)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/

* Translated using Weblate (French)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/fr/

* Translated using Weblate (Turkish)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/tr/

* Translated using Weblate (Persian)

Currently translated at 10.0% (162 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fa/

* Translated using Weblate (Vietnamese)

Currently translated at 1.4% (24 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/vi/

* Translated using Weblate (Vietnamese)

Currently translated at 1.4% (24 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/vi/

* Translated using Weblate (Ukrainian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/uk/

* Translated using Weblate (Ukrainian)

Currently translated at 88.5% (1243 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/uk/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Vietnamese)

Currently translated at 3.0% (49 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/vi/

* Translated using Weblate (Vietnamese)

Currently translated at 3.0% (49 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/vi/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Japanese)

Currently translated at 85.9% (1206 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Bulgarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/bg/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Vietnamese)

Currently translated at 4.0% (66 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/vi/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Spanish)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/

* Translated using Weblate (French)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/fr/

* Translated using Weblate (Arabic)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Czech)

Currently translated at 96.4% (1555 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/cs/

* Translated using Weblate (Vietnamese)

Currently translated at 5.0% (81 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/vi/

* Translated using Weblate (Czech)

Currently translated at 97.5% (1574 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/cs/

* Translated using Weblate (Czech)

Currently translated at 98.8% (1594 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/cs/

* Translated using Weblate (French)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/fr/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Vietnamese)

Currently translated at 5.3% (87 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/vi/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/

* Translated using Weblate (Chinese (Simplified))

Currently translated at 96.1% (1349 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1613 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/

* Translated using Weblate (Hungarian)

Currently translated at 100.0% (1403 of 1403 strings)

Translation: SimpleX Chat/SimpleX Chat iOS
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/

* Translated using Weblate (Vietnamese)

Currently translated at 5.6% (91 of 1613 strings)

Translation: SimpleX Chat/SimpleX Chat Android
Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/vi/

* fix android strings

* ios: import

* ios: export

---------

Co-authored-by: z0rden <kaanpeker196@gmail.com>
Co-authored-by: Siavash <ciavash@proton.me>
Co-authored-by: Random <random-r@users.noreply.hosted.weblate.org>
Co-authored-by: elgratea <weblate@fastmail.com>
Co-authored-by: M1K4 <oomikaoo@gmail.com>
Co-authored-by: summoner001 <summoner@vivaldi.net>
Co-authored-by: jonnysemon <jonnysemon@users.noreply.hosted.weblate.org>
Co-authored-by: Ghost of Sparta <makesocialfoss32@keemail.me>
Co-authored-by: 大王叫我来巡山 <hamburger2048@users.noreply.hosted.weblate.org>
Co-authored-by: mlanp <github@lang.xyz>
Co-authored-by: Ophiushi <41908476+ishi-sama@users.noreply.github.com>
Co-authored-by: Dan Hessel Kennet Miranda Cardona <kennetmiranda@skiff.com>
Co-authored-by: Moo <hazap@hotmail.com>
Co-authored-by: Jakub <fioletowy.temp@tutanota.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Cooly <whiteglass67@proton.me>
Co-authored-by: No name <CertainBot@users.noreply.hosted.weblate.org>
Co-authored-by: zenobit <zen@osowoso.xyz>
Co-authored-by: tomato potato <tomato.games@protonmail.com>
Co-authored-by: sr sr <sr1919os@gmail.com>
Co-authored-by: N1DH0GG <janpstrunn@duck.com>
Co-authored-by: axmfs <axmfs@proton.me>
Co-authored-by: Zhiyounihao <jilywen@outlook.com>
Co-authored-by: K0RR <rdkracz@gmail.com>
Co-authored-by: tuananh-ng <github.zvjhi@slmail.me>
Co-authored-by: tuananh-ng <158744840+tuananh-ng@users.noreply.github.com>
Co-authored-by: Groovy394 <groovy394@gmail.com>
Co-authored-by: Deleted User <noreply+78511@weblate.org>
Co-authored-by: ActiveTK <webmaster@activetk.jp>
Co-authored-by: sith-on-mars <groguko36@pm.me>
2024-03-19 09:53:01 +00:00
spaced4ndy a3310cd62e ios: fix decoder crashing (#3921)
* ios: fix ios decoder crashing

* change

* fix

* refactor

* simplify

---------

Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>
2024-03-18 18:38:49 +00:00
spaced4ndy 94a6f300ed core: fix creation of empty files (#3912) 2024-03-15 18:17:31 +04:00
383 changed files with 34637 additions and 3970 deletions
+4 -4
View File
@@ -55,22 +55,22 @@ jobs:
ghc: "8.10.7"
cache_path: ~/.cabal/store
- os: ubuntu-20.04
ghc: "9.6.3"
ghc: "9.6.4"
cache_path: ~/.cabal/store
asset_name: simplex-chat-ubuntu-20_04-x86-64
desktop_asset_name: simplex-desktop-ubuntu-20_04-x86_64.deb
- os: ubuntu-22.04
ghc: "9.6.3"
ghc: "9.6.4"
cache_path: ~/.cabal/store
asset_name: simplex-chat-ubuntu-22_04-x86-64
desktop_asset_name: simplex-desktop-ubuntu-22_04-x86_64.deb
- os: macos-latest
ghc: "9.6.3"
ghc: "9.6.4"
cache_path: ~/.cabal/store
asset_name: simplex-chat-macos-x86-64
desktop_asset_name: simplex-desktop-macos-x86_64.dmg
- os: windows-latest
ghc: "9.6.3"
ghc: "9.6.4"
cache_path: C:/cabal
asset_name: simplex-chat-windows-x86-64
desktop_asset_name: simplex-desktop-windows-x86_64.msi
+9 -3
View File
@@ -5,14 +5,20 @@ on:
pull_request_target:
types: [opened, closed, synchronize]
permissions:
actions: write
contents: write
pull-requests: write
statuses: write
jobs:
CLAssistant:
runs-on: ubuntu-latest
steps:
- name: "CLA Assistant"
if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request'
if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target'
# Beta Release
uses: cla-assistant/github-action@v2.1.3-beta
uses: cla-assistant/github-action@v2.3.0
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# the below token should have repo scope and must be manually added by you in the repository's secret
@@ -33,4 +39,4 @@ jobs:
#custom-pr-sign-comment: 'The signature to be committed in order to sign the CLA'
#custom-allsigned-prcomment: 'pull request comment when all contributors has signed, defaults to **CLA Assistant Lite bot** All Contributors have signed the CLA.'
#lock-pullrequest-aftermerge: false - if you don't want this bot to automatically lock the pull request after merging (default - true)
#use-dco-flag: true - If you are using DCO instead of CLA
#use-dco-flag: true - If you are using DCO instead of CLA
+1 -1
View File
@@ -8,7 +8,7 @@ FROM ubuntu:${TAG} AS build
RUN apt-get update && apt-get install -y curl git build-essential libgmp3-dev zlib1g-dev llvm-12 llvm-12-dev libnuma-dev libssl-dev
# Specify bootstrap Haskell versions
ENV BOOTSTRAP_HASKELL_GHC_VERSION=9.6.3
ENV BOOTSTRAP_HASKELL_GHC_VERSION=9.6.4
ENV BOOTSTRAP_HASKELL_CABAL_VERSION=3.10.1.0
# Install ghcup
+5 -2
View File
@@ -4,7 +4,7 @@
[![Join on Reddit](https://img.shields.io/reddit/subreddit-subscribers/SimpleXChat?style=social)](https://www.reddit.com/r/SimpleXChat)
<a rel="me" href="https://mastodon.social/@simplex">![Follow on Mastodon](https://img.shields.io/mastodon/follow/108619463746856738?domain=https%3A%2F%2Fmastodon.social&style=social)</a>
| 30/03/2023 | EN, [FR](/docs/lang/fr/README.md), [CZ](/docs/lang/cs/README.md) |
| 30/03/2023 | EN, [FR](/docs/lang/fr/README.md), [CZ](/docs/lang/cs/README.md), [PL](/docs/lang/pl/README.md) |
<img src="images/simplex-chat-logo.svg" alt="SimpleX logo" width="100%">
@@ -234,6 +234,8 @@ You can use SimpleX with your own servers and still communicate with people usin
Recent and important updates:
[Mar 23, 2024. SimpleX network: real privacy and stable profits, non-profits for protocols, v5.6 released with quantum resistant e2e encryption and simple profile migration.](./blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.md)
[Mar 14, 2024. SimpleX Chat v5.6 beta: adding quantum resistance to Signal double ratchet algorithm.](./blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md)
[Jan 24, 2024. SimpleX Chat: free infrastructure from Linode, v5.5 released with private notes, group history and a simpler UX to connect.](./blog/20240124-simplex-chat-infrastructure-costs-v5-5-simplex-ux-private-notes-group-history.md)
@@ -377,8 +379,9 @@ Please also join [#simplex-devs](https://simplex.chat/contact#/?v=1-2&smp=smp%3A
- ✅ Using mobile profiles from the desktop app.
- ✅ Private notes.
- ✅ Improve sending videos (including encryption of locally stored videos).
- ✅ Post-quantum resistant key exchange in double ratchet protocol.
- 🏗 Improve stability and reduce battery usage.
- 🏗 Improve experience for the new users.
- 🏗 Post-quantum resistant key exchange in double ratchet protocol.
- 🏗 Large groups, communities and public channels.
- 🏗 Message delivery relay for senders (to conceal IP address from the recipients' servers and to reduce the traffic).
- Privacy & security slider - a simple way to set all settings at once.
+19
View File
@@ -103,6 +103,7 @@ final class ChatModel: ObservableObject {
// tracks keyboard height via subscription in AppDelegate
@Published var keyboardHeight: CGFloat = 0
@Published var pasteboardHasStrings: Bool = UIPasteboard.general.hasStrings
@Published var networkInfo = UserNetworkInfo(networkType: .other, online: true)
var messageDelivery: Dictionary<Int64, () -> Void> = [:]
@@ -778,6 +779,24 @@ final class Chat: ObservableObject, Identifiable {
var viewId: String { get { "\(chatInfo.id) \(created.timeIntervalSince1970)" } }
func groupFeatureEnabled(_ feature: GroupFeature) -> Bool {
if case let .group(groupInfo) = self.chatInfo {
let p = groupInfo.fullGroupPreferences
return switch feature {
case .timedMessages: p.timedMessages.on
case .directMessages: p.directMessages.on(for: groupInfo.membership)
case .fullDelete: p.fullDelete.on
case .reactions: p.reactions.on
case .voice: p.voice.on(for: groupInfo.membership)
case .files: p.files.on(for: groupInfo.membership)
case .simplexLinks: p.simplexLinks.on(for: groupInfo.membership)
case .history: p.history.on
}
} else {
return true
}
}
public static var sampleData: Chat = Chat(chatInfo: ChatInfo.sampleData.direct, chatItems: [])
}
@@ -0,0 +1,73 @@
//
// NetworkObserver.swift
// SimpleX (iOS)
//
// Created by Avently on 05.04.2024.
// Copyright © 2024 SimpleX Chat. All rights reserved.
//
import Foundation
import Network
import SimpleXChat
class NetworkObserver {
static let shared = NetworkObserver()
private let queue: DispatchQueue = DispatchQueue(label: "chat.simplex.app.NetworkObserver")
private var prevInfo: UserNetworkInfo? = nil
private var monitor: NWPathMonitor?
private let monitorLock: DispatchQueue = DispatchQueue(label: "chat.simplex.app.monitorLock")
func restartMonitor() {
monitorLock.sync {
monitor?.cancel()
let mon = NWPathMonitor()
mon.pathUpdateHandler = { [weak self] path in
self?.networkPathChanged(path: path)
}
mon.start(queue: queue)
monitor = mon
}
}
private func networkPathChanged(path: NWPath) {
let info = UserNetworkInfo(
networkType: networkTypeFromPath(path),
online: path.status == .satisfied
)
if (prevInfo != info) {
prevInfo = info
setNetworkInfo(info)
}
}
private func networkTypeFromPath(_ path: NWPath) -> UserNetworkType {
if path.usesInterfaceType(.wiredEthernet) {
.ethernet
} else if path.usesInterfaceType(.wifi) {
.wifi
} else if path.usesInterfaceType(.cellular) {
.cellular
} else if path.usesInterfaceType(.other) {
.other
} else {
.none
}
}
private static var networkObserver: NetworkObserver? = nil
private func setNetworkInfo(_ info: UserNetworkInfo) {
logger.debug("setNetworkInfo Network changed: \(String(describing: info))")
DispatchQueue.main.sync {
ChatModel.shared.networkInfo = info
}
if !hasChatCtrl() { return }
self.monitorLock.sync {
do {
try apiSetNetworkInfo(info)
} catch let err {
logger.error("setNetworkInfo error: \(responseError(err))")
}
}
}
}
+49 -53
View File
@@ -21,6 +21,8 @@ public let CURRENT_CHAT_VERSION: Int = 2
// version range that supports establishing direct connection with a group member (xGrpDirectInvVRange in core)
public let CREATE_MEMBER_CONTACT_VRANGE = VersionRange(minVersion: 2, maxVersion: CURRENT_CHAT_VERSION)
private let networkStatusesLock = DispatchQueue(label: "chat.simplex.app.network-statuses.lock")
enum TerminalItem: Identifiable {
case cmd(Date, ChatCommand)
case resp(Date, ChatResponse)
@@ -351,11 +353,20 @@ func apiGetChatItemInfo(type: ChatType, id: Int64, itemId: Int64) async throws -
throw r
}
func apiForwardChatItem(toChatType: ChatType, toChatId: Int64, fromChatType: ChatType, fromChatId: Int64, itemId: Int64) async -> ChatItem? {
let cmd: ChatCommand = .apiForwardChatItem(toChatType: toChatType, toChatId: toChatId, fromChatType: fromChatType, fromChatId: fromChatId, itemId: itemId)
return await processSendMessageCmd(toChatType: toChatType, cmd: cmd)
}
func apiSendMessage(type: ChatType, id: Int64, file: CryptoFile?, quotedItemId: Int64?, msg: MsgContent, live: Bool = false, ttl: Int? = nil) async -> ChatItem? {
let chatModel = ChatModel.shared
let cmd: ChatCommand = .apiSendMessage(type: type, id: id, file: file, quotedItemId: quotedItemId, msg: msg, live: live, ttl: ttl)
return await processSendMessageCmd(toChatType: type, cmd: cmd)
}
private func processSendMessageCmd(toChatType: ChatType, cmd: ChatCommand) async -> ChatItem? {
let chatModel = ChatModel.shared
let r: ChatResponse
if type == .direct {
if toChatType == .direct {
var cItem: ChatItem? = nil
let endTask = beginBGTask({
if let cItem = cItem {
@@ -395,7 +406,7 @@ func apiCreateChatItem(noteFolderId: Int64, file: CryptoFile?, msg: MsgContent)
}
private func sendMessageErrorAlert(_ r: ChatResponse) {
logger.error("apiSendMessage error: \(String(describing: r))")
logger.error("send message error: \(String(describing: r))")
AlertManager.shared.showAlertMsg(
title: "Error sending message",
message: "Error: \(String(describing: r))"
@@ -532,6 +543,12 @@ func setNetworkConfig(_ cfg: NetCfg, ctrl: chat_ctrl? = nil) throws {
throw r
}
func apiSetNetworkInfo(_ networkInfo: UserNetworkInfo) throws {
let r = chatSendCmdSync(.apiSetNetworkInfo(networkInfo: networkInfo))
if case .cmdOk = r { return }
throw r
}
func reconnectAllServers() async throws {
try await sendCommandOkResp(.reconnectAllServers)
}
@@ -1295,6 +1312,7 @@ func initializeChat(start: Bool, confirmStart: Bool = false, dbKey: String? = ni
defer { m.ctrlInitInProgress = false }
(m.chatDbEncrypted, m.chatDbStatus) = chatMigrateInit(dbKey, confirmMigrations: confirmMigrations)
if m.chatDbStatus != .ok { return }
NetworkObserver.shared.restartMonitor()
// If we migrated successfully means previous re-encryption process on database level finished successfully too
if encryptionStartedDefault.get() {
encryptionStartedDefault.set(false)
@@ -1460,6 +1478,8 @@ class ChatReceiver {
private var receiveMessages = true
private var _lastMsgTime = Date.now
var messagesChannel: ((ChatResponse) -> Void)? = nil
static let shared = ChatReceiver()
var lastMsgTime: Date { get { _lastMsgTime } }
@@ -1473,14 +1493,15 @@ class ChatReceiver {
}
func receiveMsgLoop() async {
// TODO use function that has timeout
if let msg = await chatRecvMsg() {
self._lastMsgTime = .now
await processReceivedMsg(msg)
}
if self.receiveMessages {
while self.receiveMessages {
if let msg = await chatRecvMsg() {
self._lastMsgTime = .now
await processReceivedMsg(msg)
if let messagesChannel {
messagesChannel(msg)
}
}
_ = try? await Task.sleep(nanoseconds: 7_500_000)
await receiveMsgLoop()
}
}
@@ -1568,34 +1589,30 @@ func processReceivedMsg(_ res: ChatResponse) async {
m.removeChat(mergedContact.id)
}
}
case let .contactsSubscribed(_, contactRefs):
await updateContactsStatus(contactRefs, status: .connected)
case let .contactsDisconnected(_, contactRefs):
await updateContactsStatus(contactRefs, status: .disconnected)
case let .contactSubSummary(_, contactSubscriptions):
await MainActor.run {
for sub in contactSubscriptions {
// no need to update contact here, and it is slow
// if active(user) {
// m.updateContact(sub.contact)
// }
if let err = sub.contactError {
processContactSubError(sub.contact, err)
} else {
m.setContactNetworkStatus(sub.contact, .connected)
}
}
}
case let .networkStatus(status, connections):
await MainActor.run {
// dispatch queue to synchronize access
networkStatusesLock.sync {
var ns = m.networkStatuses
// slow loop is on the background thread
for cId in connections {
m.networkStatuses[cId] = status
ns[cId] = status
}
// fast model update is on the main thread
DispatchQueue.main.sync {
m.networkStatuses = ns
}
}
case let .networkStatuses(_, statuses): ()
await MainActor.run {
// dispatch queue to synchronize access
networkStatusesLock.sync {
var ns = m.networkStatuses
// slow loop is on the background thread
for s in statuses {
m.networkStatuses[s.agentConnId] = s.networkStatus
ns[s.agentConnId] = s.networkStatus
}
// fast model update is on the main thread
DispatchQueue.main.sync {
m.networkStatuses = ns
}
}
case let .newChatItem(user, aChatItem):
@@ -1795,7 +1812,6 @@ func processReceivedMsg(_ res: ChatResponse) async {
}
case let .sndFileCompleteXFTP(user, aChatItem, _):
await chatItemSimpleUpdate(user, aChatItem)
Task { cleanupFile(aChatItem) }
case let .sndFileError(user, aChatItem, _):
if let aChatItem = aChatItem {
await chatItemSimpleUpdate(user, aChatItem)
@@ -1946,26 +1962,6 @@ func chatItemSimpleUpdate(_ user: any UserLike, _ aChatItem: AChatItem) async {
}
}
func updateContactsStatus(_ contactRefs: [ContactRef], status: NetworkStatus) async {
let m = ChatModel.shared
await MainActor.run {
for c in contactRefs {
m.networkStatuses[c.agentConnId] = status
}
}
}
func processContactSubError(_ contact: Contact, _ chatError: ChatError) {
let m = ChatModel.shared
var err: String
switch chatError {
case .errorAgent(agentError: .BROKER(_, .NETWORK)): err = "network"
case .errorAgent(agentError: .SMP(smpErr: .AUTH)): err = "contact deleted"
default: err = String(describing: chatError)
}
m.setContactNetworkStatus(contact, .error(connectionError: err))
}
func refreshCallInvitations() throws {
let m = ChatModel.shared
let callInvitations = try justRefreshCallInvitations()
@@ -9,6 +9,7 @@
import SwiftUI
import WebKit
import SimpleXChat
import AVFoundation
struct ActiveCallView: View {
@EnvironmentObject var m: ChatModel
@@ -21,6 +22,7 @@ struct ActiveCallView: View {
@Binding var canConnectCall: Bool
@State var prevColorScheme: ColorScheme = .dark
@State var pipShown = false
@State var wasConnected = false
var body: some View {
ZStack(alignment: .topLeading) {
@@ -69,6 +71,11 @@ struct ActiveCallView: View {
Task { await m.callCommand.setClient(nil) }
AppDelegate.keepScreenOn(false)
client?.endCall()
CallSoundsPlayer.shared.stop()
try? AVAudioSession.sharedInstance().setCategory(.soloAmbient)
if (wasConnected) {
CallSoundsPlayer.shared.vibrate(long: true)
}
}
.background(m.activeCallViewIsCollapsed ? .clear : .black)
// Quite a big delay when opening/closing the view when a scheme changes (globally) this way. It's not needed when CallKit is used since status bar is green with white text on it
@@ -103,6 +110,11 @@ struct ActiveCallView: View {
call.callState = .invitationSent
call.localCapabilities = capabilities
}
if call.supportsVideo {
try? AVAudioSession.sharedInstance().setCategory(.playback, options: .defaultToSpeaker)
}
CallSoundsPlayer.shared.startConnectingCallSound()
activeCallWaitDeliveryReceipt()
}
case let .offer(offer, iceCandidates, capabilities):
Task {
@@ -126,6 +138,8 @@ struct ActiveCallView: View {
}
await MainActor.run {
call.callState = .negotiated
CallSoundsPlayer.shared.stop()
try? AVAudioSession.sharedInstance().setCategory(.soloAmbient)
}
}
case let .ice(iceCandidates):
@@ -144,6 +158,10 @@ struct ActiveCallView: View {
: CallController.shared.reportIncomingCall(call: call, connectedAt: nil)
call.callState = .connected
call.connectedAt = .now
if !wasConnected {
CallSoundsPlayer.shared.vibrate(long: false)
wasConnected = true
}
}
if state.connectionState == "closed" {
closeCallView(client)
@@ -161,6 +179,10 @@ struct ActiveCallView: View {
call.callState = .connected
call.connectionInfo = connectionInfo
call.connectedAt = .now
if !wasConnected {
CallSoundsPlayer.shared.vibrate(long: false)
wasConnected = true
}
case .ended:
closeCallView(client)
call.callState = .ended
@@ -187,6 +209,22 @@ struct ActiveCallView: View {
}
}
private func activeCallWaitDeliveryReceipt() {
ChatReceiver.shared.messagesChannel = { msg in
guard let call = ChatModel.shared.activeCall, call.callState == .invitationSent else {
ChatReceiver.shared.messagesChannel = nil
return
}
if case let .chatItemStatusUpdated(_, msg) = msg,
msg.chatInfo.id == call.contact.id,
case .sndCall = msg.chatItem.content,
case .sndRcvd = msg.chatItem.meta.itemStatus {
CallSoundsPlayer.shared.startInCallSound()
ChatReceiver.shared.messagesChannel = nil
}
}
}
private func closeCallView(_ client: WebRTCClient) {
if m.activeCall != nil {
m.showCallView = false
@@ -8,6 +8,7 @@
import Foundation
import AVFoundation
import UIKit
class SoundPlayer {
static let shared = SoundPlayer()
@@ -43,3 +44,63 @@ class SoundPlayer {
audioPlayer = nil
}
}
class CallSoundsPlayer {
static let shared = CallSoundsPlayer()
private var audioPlayer: AVAudioPlayer?
private var playerTask: Task = Task {}
private func start(_ soundName: String, delayMs: Double) {
audioPlayer?.stop()
playerTask.cancel()
logger.debug("start \(soundName)")
guard let path = Bundle.main.path(forResource: soundName, ofType: "mp3", inDirectory: "sounds") else {
logger.debug("start: file not found")
return
}
do {
let player = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: path))
if player.prepareToPlay() {
audioPlayer = player
}
} catch {
logger.debug("start: AVAudioPlayer error \(error.localizedDescription)")
}
playerTask = Task {
while let player = audioPlayer {
player.play()
do {
try await Task.sleep(nanoseconds: UInt64((player.duration * 1_000_000_000) + delayMs * 1_000_000))
} catch {
break
}
}
}
}
func startConnectingCallSound() {
start("connecting_call", delayMs: 0)
}
func startInCallSound() {
// Taken from https://github.com/TelegramOrg/Telegram-Android
// https://github.com/TelegramOrg/Telegram-Android/blob/master/LICENSE
start("in_call", delayMs: 1000)
}
func stop() {
playerTask.cancel()
audioPlayer?.stop()
audioPlayer = nil
}
func vibrate(long: Bool) {
// iOS just don't want to vibrate more than once after a short period of time, and all 'styles' feel the same
if long {
AudioServicesPlayAlertSound(kSystemSoundID_Vibrate)
} else {
UIImpactFeedbackGenerator(style: .heavy).impactOccurred()
}
}
}
+4 -3
View File
@@ -431,17 +431,18 @@ struct RTCIceServer: Codable, Equatable {
}
// the servers are expected in this format:
// stun:stun.simplex.im:443?transport=tcp
// turn:private:yleob6AVkiNI87hpR94Z@turn.simplex.im:443?transport=tcp
// stuns:stun.simplex.im:443?transport=tcp
// turns:private2:Hxuq2QxUjnhj96Zq2r4HjqHRj@turn.simplex.im:443?transport=tcp
func parseRTCIceServer(_ str: String) -> RTCIceServer? {
var s = replaceScheme(str, "stun:")
s = replaceScheme(s, "stuns:")
s = replaceScheme(s, "turn:")
s = replaceScheme(s, "turns:")
if let u: URL = URL(string: s),
let scheme = u.scheme,
let host = u.host,
let port = u.port,
u.path == "" && (scheme == "stun" || scheme == "turn" || scheme == "turns") {
u.path == "" && (scheme == "stun" || scheme == "stuns" || scheme == "turn" || scheme == "turns") {
let query = u.query == nil || u.query == "" ? "" : "?" + (u.query ?? "")
return RTCIceServer(
urls: ["\(scheme):\(host):\(port)\(query)"],
@@ -49,7 +49,7 @@ final class WebRTCClient: NSObject, RTCVideoViewDelegate, RTCFrameEncryptorDeleg
}
private let rtcAudioSession = RTCAudioSession.sharedInstance()
private let audioQueue = DispatchQueue(label: "audio")
private let audioQueue = DispatchQueue(label: "chat.simplex.app.audio")
private var sendCallResponse: (WVAPIMessage) async -> Void
var activeCall: Binding<Call?>
private var localRendererAspectRatio: Binding<CGFloat?>
@@ -65,14 +65,14 @@ final class WebRTCClient: NSObject, RTCVideoViewDelegate, RTCFrameEncryptorDeleg
self.localRendererAspectRatio = localRendererAspectRatio
rtcAudioSession.useManualAudio = CallController.useCallKit()
rtcAudioSession.isAudioEnabled = !CallController.useCallKit()
logger.debug("WebRTCClient: rtcAudioSession has manual audio \(self.rtcAudioSession.useManualAudio) and audio enabled \(self.rtcAudioSession.isAudioEnabled)}")
logger.debug("WebRTCClient: rtcAudioSession has manual audio \(self.rtcAudioSession.useManualAudio) and audio enabled \(self.rtcAudioSession.isAudioEnabled)")
super.init()
}
let defaultIceServers: [WebRTC.RTCIceServer] = [
WebRTC.RTCIceServer(urlStrings: ["stun:stun.simplex.im:443"]),
WebRTC.RTCIceServer(urlStrings: ["turn:turn.simplex.im:443?transport=udp"], username: "private", credential: "yleob6AVkiNI87hpR94Z"),
WebRTC.RTCIceServer(urlStrings: ["turn:turn.simplex.im:443?transport=tcp"], username: "private", credential: "yleob6AVkiNI87hpR94Z"),
WebRTC.RTCIceServer(urlStrings: ["stuns:stun.simplex.im:443"]),
//WebRTC.RTCIceServer(urlStrings: ["turns:turn.simplex.im:443?transport=udp"], username: "private2", credential: "Hxuq2QxUjnhj96Zq2r4HjqHRj"),
WebRTC.RTCIceServer(urlStrings: ["turns:turn.simplex.im:443?transport=tcp"], username: "private2", credential: "Hxuq2QxUjnhj96Zq2r4HjqHRj"),
]
func initializeCall(_ iceServers: [WebRTC.RTCIceServer]?, _ mediaType: CallMediaType, _ aesKey: String?, _ relay: Bool?) -> Call {
@@ -579,7 +579,7 @@ struct ChatInfoView: View {
let ct = try await apiSetContactPQ(contact.apiId, true)
contact = ct
await MainActor.run {
chatModel.updateContact(contact)
chatModel.updateContact(ct)
dismiss()
}
} catch let error {
@@ -11,6 +11,7 @@ import SimpleXChat
struct CIChatFeatureView: View {
@EnvironmentObject var m: ChatModel
@ObservedObject var chat: Chat
var chatItem: ChatItem
@Binding var revealed: Bool
var feature: Feature
@@ -18,7 +19,7 @@ struct CIChatFeatureView: View {
var iconColor: Color
var body: some View {
if !revealed, let fs = mergedFeautures() {
if !revealed, let fs = mergedFeatures() {
HStack {
ForEach(fs, content: featureIconView)
}
@@ -47,7 +48,7 @@ struct CIChatFeatureView: View {
}
}
private func mergedFeautures() -> [FeatureInfo]? {
private func mergedFeatures() -> [FeatureInfo]? {
var fs: [FeatureInfo] = []
var icons: Set<String> = []
if var i = m.getChatItemIndex(chatItem) {
@@ -67,8 +68,8 @@ struct CIChatFeatureView: View {
switch ci.content {
case let .rcvChatFeature(feature, enabled, param): FeatureInfo(feature, enabled.iconColor, param)
case let .sndChatFeature(feature, enabled, param): FeatureInfo(feature, enabled.iconColor, param)
case let .rcvGroupFeature(feature, preference, param): FeatureInfo(feature, preference.enable.iconColor, param)
case let .sndGroupFeature(feature, preference, param): FeatureInfo(feature, preference.enable.iconColor, param)
case let .rcvGroupFeature(feature, preference, param, role): FeatureInfo(feature, preference.enabled(role, for: chat.chatInfo.groupInfo?.membership).iconColor, param)
case let .sndGroupFeature(feature, preference, param, role): FeatureInfo(feature, preference.enabled(role, for: chat.chatInfo.groupInfo?.membership).iconColor, param)
default: nil
}
}
@@ -103,6 +104,6 @@ struct CIChatFeatureView: View {
struct CIChatFeatureView_Previews: PreviewProvider {
static var previews: some View {
let enabled = FeatureEnabled(forUser: false, forContact: false)
CIChatFeatureView(chatItem: ChatItem.getChatFeatureSample(.fullDelete, enabled), revealed: Binding.constant(true), feature: ChatFeature.fullDelete, iconColor: enabled.iconColor)
CIChatFeatureView(chat: Chat.sampleData, chatItem: ChatItem.getChatFeatureSample(.fullDelete, enabled), revealed: Binding.constant(true), feature: ChatFeature.fullDelete, iconColor: enabled.iconColor)
}
}
@@ -69,19 +69,12 @@ struct CIFileView: View {
return false
}
private func fileSizeValid() -> Bool {
if let file = file {
return file.fileSize <= getMaxFileSize(file.fileProtocol)
}
return false
}
private func fileAction() {
logger.debug("CIFileView fileAction")
if let file = file {
switch (file.fileStatus) {
case .rcvInvitation:
if fileSizeValid() {
if fileSizeValid(file) {
Task {
logger.debug("CIFileView fileAction - in .rcvInvitation, in Task")
if let user = m.currentUser {
@@ -143,7 +136,7 @@ struct CIFileView: View {
case .sndCancelled: fileIcon("doc.fill", innerIcon: "xmark", innerIconSize: 10)
case .sndError: fileIcon("doc.fill", innerIcon: "xmark", innerIconSize: 10)
case .rcvInvitation:
if fileSizeValid() {
if fileSizeValid(file) {
fileIcon("arrow.down.doc.fill", color: .accentColor)
} else {
fileIcon("doc.fill", color: .orange, innerIcon: "exclamationmark", innerIconSize: 12)
@@ -201,6 +194,13 @@ struct CIFileView: View {
}
}
func fileSizeValid(_ file: CIFile?) -> Bool {
if let file = file {
return file.fileSize <= getMaxFileSize(file.fileProtocol)
}
return false
}
func saveCryptoFile(_ fileSource: CryptoFile) {
if let cfArgs = fileSource.cryptoArgs {
let url = getAppFilePath(fileSource.filePath)
@@ -70,14 +70,14 @@ struct CIImageView: View {
}
private func imageView(_ img: UIImage) -> some View {
let w = img.size.width <= img.size.height ? maxWidth * 0.75 : img.imageData == nil ? .infinity : maxWidth
let w = img.size.width <= img.size.height ? maxWidth * 0.75 : maxWidth
DispatchQueue.main.async { imgWidth = w }
return ZStack(alignment: .topTrailing) {
if img.imageData == nil {
Image(uiImage: img)
.resizable()
.scaledToFit()
.frame(maxWidth: w)
.frame(width: w)
} else {
SwiftyGif(image: img)
.frame(width: w, height: w * img.size.height / img.size.width)
@@ -126,7 +126,7 @@ struct CIVideoView: View {
if !decryptionInProgress {
Button {
decrypt(file: file) {
if let decrypted = urlDecrypted {
if urlDecrypted != nil {
videoPlaying = true
player?.play()
}
@@ -243,13 +243,13 @@ struct CIVideoView: View {
}
private func imageView(_ img: UIImage) -> some View {
let w = img.size.width <= img.size.height ? maxWidth * 0.75 : .infinity
let w = img.size.width <= img.size.height ? maxWidth * 0.75 : maxWidth
DispatchQueue.main.async { videoWidth = w }
return ZStack(alignment: .topTrailing) {
Image(uiImage: img)
.resizable()
.scaledToFit()
.frame(maxWidth: w)
.frame(width: w)
loadingIndicator()
}
}
@@ -65,6 +65,8 @@ struct FramedItemView: View {
}
}
}
} else if let itemForwarded = chatItem.meta.itemForwarded {
framedItemHeader(icon: "arrowshape.turn.up.forward", caption: Text(itemForwarded.text(chat.chatInfo.chatType)).italic(), pad: true)
}
ChatItemContentView(chat: chat, chatItem: chatItem, revealed: $revealed, msgContentView: framedMsgContentView)
@@ -163,7 +165,7 @@ struct FramedItemView: View {
)
}
@ViewBuilder func framedItemHeader(icon: String? = nil, caption: Text) -> some View {
@ViewBuilder func framedItemHeader(icon: String? = nil, caption: Text, pad: Bool = false) -> some View {
let v = HStack(spacing: 6) {
if let icon = icon {
Image(systemName: icon)
@@ -178,7 +180,7 @@ struct FramedItemView: View {
.foregroundColor(.secondary)
.padding(.horizontal, 12)
.padding(.top, 6)
.padding(.bottom, chatItem.quotedItem == nil ? 6 : 0) // TODO think how to regroup
.padding(.bottom, pad || (chatItem.quotedItem == nil && chatItem.meta.itemForwarded == nil) ? 6 : 0)
.overlay(DetermineWidth())
.frame(minWidth: msgWidth, alignment: .leading)
.background(chatItemFrameContextColor(chatItem, colorScheme))
@@ -253,6 +255,7 @@ struct FramedItemView: View {
ciQuotedMsgTextView(qi, lines: 3)
}
}
.fixedSize(horizontal: false, vertical: true)
.padding(.top, 6)
.padding(.horizontal, 12)
}
@@ -352,9 +355,9 @@ private struct MetaColorPreferenceKey: PreferenceKey {
func onlyImageOrVideo(_ ci: ChatItem) -> Bool {
if case let .image(text, _) = ci.content.msgContent {
return ci.meta.itemDeleted == nil && !ci.meta.isLive && ci.quotedItem == nil && text == ""
return ci.meta.itemDeleted == nil && !ci.meta.isLive && ci.quotedItem == nil && ci.meta.itemForwarded == nil && text == ""
} else if case let .video(text, _, _) = ci.content.msgContent {
return ci.meta.itemDeleted == nil && !ci.meta.isLive && ci.quotedItem == nil && text == ""
return ci.meta.itemDeleted == nil && !ci.meta.isLive && ci.quotedItem == nil && ci.meta.itemForwarded == nil && text == ""
}
return false
}
@@ -0,0 +1,152 @@
//
// ChatItemForwardingView.swift
// SimpleX (iOS)
//
// Created by spaced4ndy on 12.04.2024.
// Copyright © 2024 SimpleX Chat. All rights reserved.
//
import SwiftUI
import SimpleXChat
struct ChatItemForwardingView: View {
@EnvironmentObject var chatModel: ChatModel
@Environment(\.dismiss) var dismiss
var ci: ChatItem
var fromChatInfo: ChatInfo
@Binding var composeState: ComposeState
@State private var searchText: String = ""
@FocusState private var searchFocused
var body: some View {
NavigationView {
forwardListView()
.toolbar {
ToolbarItem(placement: .navigationBarLeading) {
Button("Cancel") {
dismiss()
}
}
ToolbarItem(placement: .principal) {
Text("Forward")
.bold()
}
}
}
}
@ViewBuilder private func forwardListView() -> some View {
VStack(alignment: .leading) {
let chatsToForwardTo = filterChatsToForwardTo()
if !chatsToForwardTo.isEmpty {
ScrollView {
LazyVStack(alignment: .leading, spacing: 8) {
searchFieldView(text: $searchText, focussed: $searchFocused)
.padding(.leading, 2)
let s = searchText.trimmingCharacters(in: .whitespaces).localizedLowercase
let chats = s == "" ? chatsToForwardTo : chatsToForwardTo.filter { filterChatSearched($0, s) }
ForEach(chats) { chat in
Divider()
forwardListNavLinkView(chat)
.disabled(chatModel.deletedChats.contains(chat.chatInfo.id))
}
}
.padding(.horizontal)
.padding(.vertical, 8)
.background(Color(uiColor: .systemBackground))
.cornerRadius(12)
.padding(.horizontal)
}
.background(Color(.systemGroupedBackground))
} else {
emptyList()
}
}
}
private func filterChatsToForwardTo() -> [Chat] {
var filteredChats = chatModel.chats.filter({ canForwardToChat($0) })
if let index = filteredChats.firstIndex(where: { $0.chatInfo.chatType == .local }) {
let privateNotes = filteredChats.remove(at: index)
filteredChats.insert(privateNotes, at: 0)
}
return filteredChats
}
private func filterChatSearched(_ chat: Chat, _ searchStr: String) -> Bool {
let cInfo = chat.chatInfo
return switch cInfo {
case let .direct(contact):
viewNameContains(cInfo, searchStr) ||
contact.profile.displayName.localizedLowercase.contains(searchStr) ||
contact.fullName.localizedLowercase.contains(searchStr)
default:
viewNameContains(cInfo, searchStr)
}
func viewNameContains(_ cInfo: ChatInfo, _ s: String) -> Bool {
cInfo.chatViewName.localizedLowercase.contains(s)
}
}
private func canForwardToChat(_ chat: Chat) -> Bool {
switch chat.chatInfo {
case let .direct(contact): contact.sendMsgEnabled && !contact.nextSendGrpInv
case let .group(groupInfo): groupInfo.sendMsgEnabled
case let .local(noteFolder): noteFolder.sendMsgEnabled
case .contactRequest: false
case .contactConnection: false
case .invalidJSON: false
}
}
private func emptyList() -> some View {
Text("No filtered chats")
.foregroundColor(.secondary)
.frame(maxWidth: .infinity)
}
@ViewBuilder private func forwardListNavLinkView(_ chat: Chat) -> some View {
Button {
dismiss()
if chat.id == fromChatInfo.id {
composeState = ComposeState(
message: composeState.message,
preview: composeState.linkPreview != nil ? composeState.preview : .noPreview,
contextItem: .forwardingItem(chatItem: ci, fromChatInfo: fromChatInfo)
)
} else {
composeState = ComposeState.init(forwardingItem: ci, fromChatInfo: fromChatInfo)
chatModel.chatId = chat.id
}
} label: {
HStack {
ChatInfoImage(chat: chat)
.frame(width: 30, height: 30)
.padding(.trailing, 2)
Text(chat.chatInfo.chatViewName)
.foregroundColor(.primary)
.lineLimit(1)
if chat.chatInfo.incognito {
Spacer()
Image(systemName: "theatermasks")
.resizable()
.scaledToFit()
.frame(width: 22, height: 22)
.foregroundColor(.secondary)
}
}
.frame(maxWidth: .infinity, alignment: .leading)
}
}
}
#Preview {
ChatItemForwardingView(
ci: ChatItem.getSample(1, .directSnd, .now, "hello"),
fromChatInfo: .direct(contact: Contact.sampleData),
composeState: Binding.constant(ComposeState(message: "hello"))
)
}
@@ -11,6 +11,7 @@ import SimpleXChat
struct ChatItemInfoView: View {
@EnvironmentObject var chatModel: ChatModel
@Environment(\.dismiss) var dismiss
@Environment(\.colorScheme) var colorScheme
var ci: ChatItem
@Binding var chatItemInfo: ChatItemInfo?
@@ -21,6 +22,7 @@ struct ChatItemInfoView: View {
enum CIInfoTab {
case history
case quote
case forwarded
case delivery
}
@@ -68,9 +70,20 @@ struct ChatItemInfoView: View {
if ci.quotedItem != nil {
numTabs += 1
}
if chatItemInfo?.forwardedFromChatItem != nil {
numTabs += 1
}
return numTabs
}
private var local: Bool {
switch ci.chatDir {
case .localSnd: true
case .localRcv: true
default: false
}
}
@ViewBuilder private func itemInfoView() -> some View {
if numTabs > 1 {
TabView(selection: $selection) {
@@ -93,6 +106,13 @@ struct ChatItemInfoView: View {
}
.tag(CIInfoTab.quote)
}
if let forwardedFromItem = chatItemInfo?.forwardedFromChatItem {
forwardedFromTab(forwardedFromItem)
.tabItem {
Label(local ? "Saved" : "Forwarded", systemImage: "arrowshape.turn.up.forward")
}
.tag(CIInfoTab.forwarded)
}
}
.onAppear {
if chatItemInfo?.memberDeliveryStatuses != nil {
@@ -275,6 +295,75 @@ struct ChatItemInfoView: View {
: Color(uiColor: .tertiarySystemGroupedBackground)
}
@ViewBuilder private func forwardedFromTab(_ forwardedFromItem: AChatItem) -> some View {
ScrollView {
VStack(alignment: .leading, spacing: 16) {
details()
Divider().padding(.vertical)
Text(local ? "Saved from" : "Forwarded from")
.font(.title2)
.padding(.bottom, 4)
forwardedFromView(forwardedFromItem)
}
.padding()
}
.frame(maxHeight: .infinity, alignment: .top)
}
private func forwardedFromView(_ forwardedFromItem: AChatItem) -> some View {
VStack(alignment: .leading, spacing: 8) {
Button {
Task {
await MainActor.run {
chatModel.chatId = forwardedFromItem.chatInfo.id
dismiss()
}
}
} label: {
forwardedFromSender(forwardedFromItem)
}
if !local {
Divider().padding(.top, 32)
Text("Recipient(s) can't see who this message is from.")
.font(.caption)
.foregroundColor(.secondary)
}
}
}
@ViewBuilder private func forwardedFromSender(_ forwardedFromItem: AChatItem) -> some View {
HStack {
ChatInfoImage(chat: Chat(chatInfo: forwardedFromItem.chatInfo))
.frame(width: 48, height: 48)
.padding(.trailing, 6)
if forwardedFromItem.chatItem.chatDir.sent {
VStack(alignment: .leading) {
Text("you")
.italic()
.foregroundColor(.primary)
Text(forwardedFromItem.chatInfo.chatViewName)
.foregroundColor(.secondary)
.lineLimit(1)
}
} else if case let .groupRcv(groupMember) = forwardedFromItem.chatItem.chatDir {
VStack(alignment: .leading) {
Text(groupMember.chatViewName)
.foregroundColor(.primary)
.lineLimit(1)
Text(forwardedFromItem.chatInfo.chatViewName)
.foregroundColor(.secondary)
.lineLimit(1)
}
} else {
Text(forwardedFromItem.chatInfo.chatViewName)
.foregroundColor(.primary)
.lineLimit(1)
}
}
}
@ViewBuilder private func deliveryTab(_ memberDeliveryStatuses: [MemberDeliveryStatus]) -> some View {
ScrollView {
VStack(alignment: .leading, spacing: 16) {
@@ -46,7 +46,7 @@ struct ChatItemView: View {
let ci = chatItem
if chatItem.meta.itemDeleted != nil && (!revealed || chatItem.isDeletedContent) {
MarkedDeletedItemView(chat: chat, chatItem: chatItem, revealed: $revealed)
} else if ci.quotedItem == nil && ci.meta.itemDeleted == nil && !ci.meta.isLive {
} else if ci.quotedItem == nil && ci.meta.itemForwarded == nil && ci.meta.itemDeleted == nil && !ci.meta.isLive {
if let mc = ci.content.msgContent, mc.isText && isShortEmoji(ci.content.text) {
EmojiItemView(chat: chat, chatItem: ci)
} else if ci.content.text.isEmpty, case let .voice(_, duration) = ci.content.msgContent {
@@ -102,9 +102,9 @@ struct ChatItemContentView<Content: View>: View {
case let .rcvChatPreference(feature, allowed, param):
CIFeaturePreferenceView(chat: chat, chatItem: chatItem, feature: feature, allowed: allowed, param: param)
case let .sndChatPreference(feature, _, _):
CIChatFeatureView(chatItem: chatItem, revealed: $revealed, feature: feature, icon: feature.icon, iconColor: .secondary)
case let .rcvGroupFeature(feature, preference, _): chatFeatureView(feature, preference.enable.iconColor)
case let .sndGroupFeature(feature, preference, _): chatFeatureView(feature, preference.enable.iconColor)
CIChatFeatureView(chat: chat, chatItem: chatItem, revealed: $revealed, feature: feature, icon: feature.icon, iconColor: .secondary)
case let .rcvGroupFeature(feature, preference, _, role): chatFeatureView(feature, preference.enabled(role, for: chat.chatInfo.groupInfo?.membership).iconColor)
case let .sndGroupFeature(feature, preference, _, role): chatFeatureView(feature, preference.enabled(role, for: chat.chatInfo.groupInfo?.membership).iconColor)
case let .rcvChatFeatureRejected(feature): chatFeatureView(feature, .red)
case let .rcvGroupFeatureRejected(feature): chatFeatureView(feature, .red)
case .sndModerated: deletedItemView()
@@ -149,7 +149,7 @@ struct ChatItemContentView<Content: View>: View {
}
private func chatFeatureView(_ feature: Feature, _ iconColor: Color) -> some View {
CIChatFeatureView(chatItem: chatItem, revealed: $revealed, feature: feature, iconColor: iconColor)
CIChatFeatureView(chat: chat, chatItem: chatItem, revealed: $revealed, feature: feature, iconColor: iconColor)
}
private var mergedGroupEventText: Text? {
+78 -20
View File
@@ -17,6 +17,7 @@ struct ChatView: View {
@Environment(\.colorScheme) var colorScheme
@Environment(\.dismiss) var dismiss
@Environment(\.presentationMode) var presentationMode
@Environment(\.scenePhase) var scenePhase
@State @ObservedObject var chat: Chat
@State private var showChatInfoSheet: Bool = false
@State private var showAddMembersSheet: Bool = false
@@ -82,7 +83,11 @@ struct ChatView: View {
initChatView()
}
.onChange(of: chatModel.chatId) { cId in
if cId != nil {
showChatInfoSheet = false
if let cId {
if let c = chatModel.getChat(cId) {
chat = c
}
initChatView()
} else {
dismiss()
@@ -178,7 +183,7 @@ struct ChatView: View {
.disabled(!contact.ready || !contact.active)
}
searchButton()
toggleNtfsButton(chat)
ToggleNtfsButton(chat: chat)
.disabled(!contact.ready || !contact.active)
} label: {
Image(systemName: "ellipsis")
@@ -207,7 +212,7 @@ struct ChatView: View {
}
Menu {
searchButton()
toggleNtfsButton(chat)
ToggleNtfsButton(chat: chat)
} label: {
Image(systemName: "ellipsis")
}
@@ -234,7 +239,9 @@ struct ChatView: View {
private func initChatView() {
let cInfo = chat.chatInfo
if case let .direct(contact) = cInfo {
// This check prevents the call to apiContactInfo after the app is suspended, and the database is closed.
if case .active = scenePhase,
case let .direct(contact) = cInfo {
Task {
do {
let (stats, _) = try await apiContactInfo(chat.chatInfo.apiId)
@@ -248,7 +255,8 @@ struct ChatView: View {
}
}
}
if chatModel.draftChatId == cInfo.id, let draft = chatModel.draft {
if chatModel.draftChatId == cInfo.id && !composeState.forwarding,
let draft = chatModel.draft {
composeState = draft
}
if chat.chatStats.unreadChat {
@@ -293,7 +301,7 @@ struct ChatView: View {
}
private func voiceWithoutFrame(_ ci: ChatItem) -> Bool {
ci.content.msgContent?.isVoice == true && ci.content.text.count == 0 && ci.quotedItem == nil
ci.content.msgContent?.isVoice == true && ci.content.text.count == 0 && ci.quotedItem == nil && ci.meta.itemForwarded == nil
}
private func chatItemsList() -> some View {
@@ -339,8 +347,8 @@ struct ChatView: View {
.onChange(of: searchText) { _ in
loadChat(chat: chat, search: searchText)
}
.onChange(of: chatModel.chatId) { _ in
if let chatId = chatModel.chatId, let c = chatModel.getChat(chatId) {
.onChange(of: chatModel.chatId) { chatId in
if let chatId, let c = chatModel.getChat(chatId) {
chat = c
showChatInfoSheet = false
loadChat(chat: c)
@@ -511,6 +519,7 @@ struct ChatView: View {
chat: chat,
chatItem: ci,
maxWidth: maxWidth,
itemWidth: maxWidth,
composeState: $composeState,
selectedMember: $selectedMember,
chatView: self
@@ -523,6 +532,7 @@ struct ChatView: View {
@ObservedObject var chat: Chat
var chatItem: ChatItem
var maxWidth: CGFloat
@State var itemWidth: CGFloat
@Binding var composeState: ComposeState
@Binding var selectedMember: GMember?
var chatView: ChatView
@@ -534,6 +544,7 @@ struct ChatView: View {
@State private var revealed = false
@State private var showChatItemInfoSheet: Bool = false
@State private var chatItemInfo: ChatItemInfo?
@State private var showForwardingSheet: Bool = false
@State private var allowMenu: Bool = true
@@ -557,7 +568,12 @@ struct ChatView: View {
chatItemView(ci, nil, prev)
}
} else {
chatItemView(chatItem, range, prevItem)
// Switch branches just to work around context menu problem when 'revealed' changes but size of item isn't
if revealed {
chatItemView(chatItem, range, prevItem)
} else {
chatItemView(chatItem, range, prevItem)
}
}
}
}
@@ -646,7 +662,7 @@ struct ChatView: View {
playbackState: $playbackState,
playbackTime: $playbackTime
)
.uiKitContextMenu(menu: uiMenu, allowMenu: $allowMenu)
.uiKitContextMenu(hasImageOrVideo: ci.content.msgContent?.isImageOrVideo == true, maxWidth: maxWidth, itemWidth: $itemWidth, menu: uiMenu, allowMenu: $allowMenu)
.accessibilityLabel("")
if ci.content.msgContent != nil && (ci.meta.itemDeleted == nil || revealed) && ci.reactions.count > 0 {
chatItemReactions(ci)
@@ -657,7 +673,7 @@ struct ChatView: View {
Button("Delete for me", role: .destructive) {
deleteMessage(.cidmInternal)
}
if let di = deletingItem, di.meta.editable && !di.localNote {
if let di = deletingItem, di.meta.deletable && !di.localNote {
Button(broadcastDeleteButtonText, role: .destructive) {
deleteMessage(.cidmBroadcast)
}
@@ -683,6 +699,14 @@ struct ChatView: View {
}) {
ChatItemInfoView(ci: ci, chatItemInfo: $chatItemInfo)
}
.sheet(isPresented: $showForwardingSheet) {
if #available(iOS 16.0, *) {
ChatItemForwardingView(ci: ci, fromChatInfo: chat.chatInfo, composeState: $composeState)
.presentationDetents([.fraction(0.8)])
} else {
ChatItemForwardingView(ci: ci, fromChatInfo: chat.chatInfo, composeState: $composeState)
}
}
}
private func showMemberImage(_ member: GroupMember, _ prevItem: ChatItem?) -> Bool {
@@ -761,10 +785,17 @@ struct ChatView: View {
} else {
menu.append(saveFileAction(fileSource))
}
} else if let file = ci.file, case .rcvInvitation = file.fileStatus, fileSizeValid(file) {
menu.append(downloadFileAction(file))
}
if ci.meta.editable && !mc.isVoice && !live {
menu.append(editAction(ci))
}
if ci.meta.itemDeleted == nil
&& (ci.file == nil || (fileSource != nil && fileExists))
&& !ci.isLiveDummy && !live {
menu.append(forwardUIAction(ci))
}
if !ci.isLiveDummy {
menu.append(viewInfoUIAction(ci))
}
@@ -816,6 +847,15 @@ struct ChatView: View {
}
}
private func forwardUIAction(_ ci: ChatItem) -> UIAction {
UIAction(
title: NSLocalizedString("Forward", comment: "chat item action"),
image: UIImage(systemName: "arrowshape.turn.up.forward")
) { _ in
showForwardingSheet = true
}
}
private func reactionUIMenuPreiOS16(_ rs: [UIAction]) -> UIMenu {
UIMenu(
title: NSLocalizedString("React…", comment: "chat item menu"),
@@ -913,7 +953,21 @@ struct ChatView: View {
saveCryptoFile(fileSource)
}
}
private func downloadFileAction(_ file: CIFile) -> UIAction {
UIAction(
title: NSLocalizedString("Download", comment: "chat item action"),
image: UIImage(systemName: "arrow.down.doc")
) { _ in
Task {
logger.debug("ChatView downloadFileAction, in Task")
if let user = m.currentUser {
await receiveFile(user: user, fileId: file.fileId)
}
}
}
}
private func editAction(_ ci: ChatItem) -> UIAction {
UIAction(
title: NSLocalizedString("Edit", comment: "chat item action"),
@@ -1162,14 +1216,18 @@ struct ChatView: View {
}
}
@ViewBuilder func toggleNtfsButton(_ chat: Chat) -> some View {
Button {
toggleNotifications(chat, enableNtfs: !chat.chatInfo.ntfsEnabled)
} label: {
if chat.chatInfo.ntfsEnabled {
Label("Mute", systemImage: "speaker.slash")
} else {
Label("Unmute", systemImage: "speaker.wave.2")
struct ToggleNtfsButton: View {
@ObservedObject var chat: Chat
var body: some View {
Button {
toggleNotifications(chat, enableNtfs: !chat.chatInfo.ntfsEnabled)
} label: {
if chat.chatInfo.ntfsEnabled {
Label("Mute", systemImage: "speaker.slash")
} else {
Label("Unmute", systemImage: "speaker.wave.2")
}
}
}
}
@@ -23,6 +23,7 @@ enum ComposeContextItem {
case noContextItem
case quotedItem(chatItem: ChatItem)
case editingItem(chatItem: ChatItem)
case forwardingItem(chatItem: ChatItem, fromChatInfo: ChatInfo)
}
enum VoiceMessageRecordingState {
@@ -72,6 +73,13 @@ struct ComposeState {
}
}
init(forwardingItem: ChatItem, fromChatInfo: ChatInfo) {
self.message = ""
self.preview = .noPreview
self.contextItem = .forwardingItem(chatItem: forwardingItem, fromChatInfo: fromChatInfo)
self.voiceMessageRecordingState = .noRecording
}
func copy(
message: String? = nil,
liveMessage: LiveMessage? = nil,
@@ -102,12 +110,19 @@ struct ComposeState {
}
}
var forwarding: Bool {
switch contextItem {
case .forwardingItem: return true
default: return false
}
}
var sendEnabled: Bool {
switch preview {
case let .mediaPreviews(media): return !media.isEmpty
case .voicePreview: return voiceMessageRecordingState == .finished
case .filePreview: return true
default: return !message.isEmpty || liveMessage != nil
default: return !message.isEmpty || forwarding || liveMessage != nil
}
}
@@ -153,7 +168,7 @@ struct ComposeState {
}
var attachmentDisabled: Bool {
if editing || liveMessage != nil || inProgress { return true }
if editing || forwarding || liveMessage != nil || inProgress { return true }
switch preview {
case .noPreview: return false
case .linkPreview: return false
@@ -161,6 +176,16 @@ struct ComposeState {
}
}
var attachmentPreview: Bool {
switch preview {
case .noPreview: false
case .linkPreview: false
case let .mediaPreviews(mediaPreviews): !mediaPreviews.isEmpty
case .voicePreview: false
case .filePreview: true
}
}
var empty: Bool {
message == "" && noPreview
}
@@ -234,6 +259,7 @@ struct ComposeView: View {
@Binding var keyboardVisible: Bool
@State var linkUrl: URL? = nil
@State var hasSimplexLink: Bool = false
@State var prevLinkUrl: URL? = nil
@State var pendingLinkUrl: URL? = nil
@State var cancelledLinks: Set<String> = []
@@ -260,6 +286,16 @@ struct ComposeView: View {
if chat.chatInfo.contact?.nextSendGrpInv ?? false {
ContextInvitingContactMemberView()
}
let simplexLinkProhibited = hasSimplexLink && !chat.groupFeatureEnabled(.simplexLinks)
let fileProhibited = composeState.attachmentPreview && !chat.groupFeatureEnabled(.files)
let voiceProhibited = composeState.voicePreview && !chat.chatInfo.featureEnabled(.voice)
if simplexLinkProhibited {
msgNotAllowedView("SimpleX links not allowed", icon: "link")
} else if fileProhibited {
msgNotAllowedView("Files and media not allowed", icon: "doc")
} else if voiceProhibited {
msgNotAllowedView("Voice messages not allowed", icon: "mic")
}
contextItemView()
switch (composeState.editing, composeState.preview) {
case (true, .filePreview): EmptyView()
@@ -278,7 +314,7 @@ struct ComposeView: View {
.padding(.bottom, 12)
.padding(.leading, 12)
if case let .group(g) = chat.chatInfo,
!g.fullGroupPreferences.files.on {
!g.fullGroupPreferences.files.on(for: g.membership) {
b.disabled(true).onTapGesture {
AlertManager.shared.showAlertMsg(
title: "Files and media prohibited!",
@@ -303,6 +339,7 @@ struct ComposeView: View {
},
nextSendGrpInv: chat.chatInfo.contact?.nextSendGrpInv ?? false,
voiceMessageAllowed: chat.chatInfo.featureEnabled(.voice),
disableSendButton: simplexLinkProhibited || fileProhibited || voiceProhibited,
showEnableVoiceMessagesAlert: chat.chatInfo.showEnableVoiceMessagesAlert,
startVoiceMessageRecording: {
Task {
@@ -337,13 +374,18 @@ struct ComposeView: View {
}
}
}
.onChange(of: composeState.message) { _ in
.onChange(of: composeState.message) { msg in
if composeState.linkPreviewAllowed {
if composeState.message.count > 0 {
showLinkPreview(composeState.message)
if msg.count > 0 {
showLinkPreview(msg)
} else {
resetLinkPreview()
hasSimplexLink = false
}
} else if msg.count > 0 && !chat.groupFeatureEnabled(.simplexLinks) {
(_, hasSimplexLink) = parseMessage(msg)
} else {
hasSimplexLink = false
}
}
.onChange(of: chat.userCanSend) { canSend in
@@ -610,6 +652,18 @@ struct ComposeView: View {
}
}
private func msgNotAllowedView(_ reason: LocalizedStringKey, icon: String) -> some View {
HStack {
Image(systemName: icon).foregroundColor(.secondary)
Text(reason).italic()
}
.padding(12)
.frame(minHeight: 50)
.frame(maxWidth: .infinity, alignment: .leading)
.background(Color(uiColor: .tertiarySystemGroupedBackground))
.padding(.top, 8)
}
@ViewBuilder private func contextItemView() -> some View {
switch composeState.contextItem {
case .noContextItem:
@@ -628,6 +682,14 @@ struct ComposeView: View {
contextIcon: "pencil",
cancelContextItem: { clearState() }
)
case let .forwardingItem(chatItem: forwardedItem, _):
ContextItemView(
chat: chat,
contextItem: forwardedItem,
contextIcon: "arrowshape.turn.up.forward",
cancelContextItem: { composeState = composeState.copy(contextItem: .noContextItem) },
showSender: false
)
}
}
@@ -649,6 +711,11 @@ struct ComposeView: View {
}
if chat.chatInfo.contact?.nextSendGrpInv ?? false {
await sendMemberContactInvitation()
} else if case let .forwardingItem(ci, fromChatInfo) = composeState.contextItem {
sent = await forwardItem(ci, fromChatInfo)
if !composeState.message.isEmpty {
sent = await send(checkLinkPreview(), quoted: sent?.id, live: false, ttl: nil)
}
} else if case let .editingItem(ci) = composeState.contextItem {
sent = await updateMessage(ci, live: live)
} else if let liveMessage = liveMessage, liveMessage.sentMsg != nil {
@@ -694,7 +761,15 @@ struct ComposeView: View {
}
}
}
await MainActor.run { clearState(live: live) }
await MainActor.run {
let wasForwarding = composeState.forwarding
clearState(live: live)
if wasForwarding,
chatModel.draftChatId == chat.chatInfo.id,
let draft = chatModel.draft {
composeState = draft
}
}
return sent
func sending() async {
@@ -815,10 +890,26 @@ struct ComposeView: View {
return nil
}
func forwardItem(_ forwardedItem: ChatItem, _ fromChatInfo: ChatInfo) async -> ChatItem? {
if let chatItem = await apiForwardChatItem(
toChatType: chat.chatInfo.chatType,
toChatId: chat.chatInfo.apiId,
fromChatType: fromChatInfo.chatType,
fromChatId: fromChatInfo.apiId,
itemId: forwardedItem.id
) {
await MainActor.run {
chatModel.addChatItem(chat.chatInfo, chatItem)
}
return chatItem
}
return nil
}
func checkLinkPreview() -> MsgContent {
switch (composeState.preview) {
case let .linkPreview(linkPreview: linkPreview):
if let url = parseMessage(msgText),
if let url = parseMessage(msgText).url,
let linkPreview = linkPreview,
url == linkPreview.uri {
return .link(text: msgText, preview: linkPreview)
@@ -947,7 +1038,7 @@ struct ComposeView: View {
private func showLinkPreview(_ s: String) {
prevLinkUrl = linkUrl
linkUrl = parseMessage(s)
(linkUrl, hasSimplexLink) = parseMessage(s)
if let url = linkUrl {
if url != composeState.linkPreview?.uri && url != pendingLinkUrl {
pendingLinkUrl = url
@@ -964,13 +1055,17 @@ struct ComposeView: View {
}
}
private func parseMessage(_ msg: String) -> URL? {
let parsedMsg = parseSimpleXMarkdown(msg)
let uri = parsedMsg?.first(where: { ft in
private func parseMessage(_ msg: String) -> (url: URL?, hasSimplexLink: Bool) {
guard let parsedMsg = parseSimpleXMarkdown(msg) else { return (nil, false) }
let url: URL? = if let uri = parsedMsg.first(where: { ft in
ft.format == .uri && !cancelledLinks.contains(ft.text) && !isSimplexLink(ft.text)
})
if let uri = uri { return URL(string: uri.text) }
else { return nil }
}) {
URL(string: uri.text)
} else {
nil
}
let simplexLink = parsedMsg.contains(where: { ft in ft.format?.isSimplexLink ?? false })
return (url, simplexLink)
}
private func isSimplexLink(_ link: String) -> Bool {
@@ -15,6 +15,7 @@ struct ContextItemView: View {
let contextItem: ChatItem
let contextIcon: String
let cancelContextItem: () -> Void
var showSender: Bool = true
var body: some View {
HStack {
@@ -23,7 +24,7 @@ struct ContextItemView: View {
.aspectRatio(contentMode: .fit)
.frame(width: 16, height: 16)
.foregroundColor(.secondary)
if let sender = contextItem.memberDisplayName {
if showSender, let sender = contextItem.memberDisplayName {
VStack(alignment: .leading, spacing: 4) {
Text(sender).font(.caption).foregroundColor(.secondary)
msgContentView(lines: 2)
@@ -48,14 +49,26 @@ struct ContextItemView: View {
}
private func msgContentView(lines: Int) -> some View {
MsgContentView(
chat: chat,
text: contextItem.text,
formattedText: contextItem.formattedText,
showSecrets: false
)
.multilineTextAlignment(isRightToLeft(contextItem.text) ? .trailing : .leading)
.lineLimit(lines)
contextMsgPreview()
.multilineTextAlignment(isRightToLeft(contextItem.text) ? .trailing : .leading)
.lineLimit(lines)
}
private func contextMsgPreview() -> Text {
return attachment() + messageText(contextItem.text, contextItem.formattedText, nil, preview: true, showSecrets: false)
func attachment() -> Text {
switch contextItem.content.msgContent {
case .file: return image("doc.fill")
case .image: return image("photo")
case .voice: return image("play.fill")
default: return Text("")
}
}
func image(_ s: String) -> Text {
Text(Image(systemName: s)).foregroundColor(Color(uiColor: .tertiaryLabel)) + Text(" ")
}
}
}
@@ -16,7 +16,6 @@ struct NativeTextEditor: UIViewRepresentable {
@Binding var disableEditing: Bool
@Binding var height: CGFloat
@Binding var focused: Bool
let alignment: TextAlignment
let onImagesAdded: ([UploadContent]) -> Void
private let minHeight: CGFloat = 37
@@ -30,13 +29,16 @@ struct NativeTextEditor: UIViewRepresentable {
func makeUIView(context: Context) -> UITextView {
let field = CustomUITextField(height: _height)
field.text = text
field.textAlignment = alignment == .leading ? .left : .right
field.textAlignment = alignment(text)
field.autocapitalizationType = .sentences
field.setOnTextChangedListener { newText, images in
if !disableEditing {
// Speed up the process of updating layout, reduce jumping content on screen
if !isShortEmoji(newText) { updateHeight(field) }
text = newText
field.textAlignment = alignment(text)
updateFont(field)
// Speed up the process of updating layout, reduce jumping content on screen
updateHeight(field)
self.height = field.frame.size.height
} else {
field.text = text
}
@@ -53,10 +55,12 @@ struct NativeTextEditor: UIViewRepresentable {
}
func updateUIView(_ field: UITextView, context: Context) {
field.text = text
field.textAlignment = alignment == .leading ? .left : .right
updateFont(field)
updateHeight(field)
if field.markedTextRange == nil && field.text != text {
field.text = text
field.textAlignment = alignment(text)
updateFont(field)
updateHeight(field)
}
}
private func updateHeight(_ field: UITextView) {
@@ -73,12 +77,19 @@ struct NativeTextEditor: UIViewRepresentable {
}
private func updateFont(_ field: UITextView) {
field.font = isShortEmoji(field.text)
let newFont = isShortEmoji(field.text)
? (field.text.count < 4 ? largeEmojiUIFont : mediumEmojiUIFont)
: UIFont.preferredFont(forTextStyle: .body)
if field.font != newFont {
field.font = newFont
}
}
}
private func alignment(_ text: String) -> NSTextAlignment {
isRightToLeft(text) ? .right : .left
}
private class CustomUITextField: UITextView, UITextViewDelegate {
var height: Binding<CGFloat>
var newHeight: CGFloat = 0
@@ -205,7 +216,6 @@ struct NativeTextEditor_Previews: PreviewProvider{
disableEditing: Binding.constant(false),
height: Binding.constant(100),
focused: Binding.constant(false),
alignment: TextAlignment.leading,
onImagesAdded: { _ in }
)
.fixedSize(horizontal: false, vertical: true)
@@ -20,6 +20,7 @@ struct SendMessageView: View {
var nextSendGrpInv: Bool = false
var showVoiceMessageButton: Bool = true
var voiceMessageAllowed: Bool = true
var disableSendButton = false
var showEnableVoiceMessagesAlert: ChatInfo.ShowEnableVoiceMessagesAlert = .other
var startVoiceMessageRecording: (() -> Void)? = nil
var finishVoiceMessageRecording: (() -> Void)? = nil
@@ -53,13 +54,11 @@ struct SendMessageView: View {
.padding(.vertical, 8)
.frame(maxWidth: .infinity)
} else {
let alignment: TextAlignment = isRightToLeft(composeState.message) ? .trailing : .leading
NativeTextEditor(
text: $composeState.message,
disableEditing: $composeState.inProgress,
height: $teHeight,
focused: $keyboardVisible,
alignment: alignment,
onImagesAdded: onMediaAdded
)
.allowsTightening(false)
@@ -109,6 +108,7 @@ struct SendMessageView: View {
} else if showVoiceMessageButton
&& composeState.message.isEmpty
&& !composeState.editing
&& !composeState.forwarding
&& composeState.liveMessage == nil
&& ((composeState.noPreview && vmrs == .noRecording)
|| (vmrs == .recording && holdingVMR)) {
@@ -184,7 +184,8 @@ struct SendMessageView: View {
!composeState.sendEnabled ||
composeState.inProgress ||
(!voiceMessageAllowed && composeState.voicePreview) ||
composeState.endLiveDisabled
composeState.endLiveDisabled ||
disableSendButton
)
.frame(width: 29, height: 29)
.contextMenu{
@@ -223,7 +224,8 @@ struct SendMessageView: View {
@ViewBuilder private func sendButtonContextMenuItems() -> some View {
if composeState.liveMessage == nil,
!composeState.editing {
!composeState.editing,
!composeState.forwarding {
if case .noContextItem = composeState.contextItem,
!composeState.voicePreview,
let send = sendLiveMessage,
@@ -83,7 +83,7 @@ struct GroupMemberInfoView: View {
Section {
if let contactId = member.memberContactId, let chat = knownDirectChat(contactId) {
knownDirectChatButton(chat)
} else if groupInfo.fullGroupPreferences.directMessages.on {
} else if groupInfo.fullGroupPreferences.directMessages.on(for: groupInfo.membership) {
if let contactId = member.memberContactId {
newDirectChatButton(contactId)
} else if member.activeConn?.peerChatVRange.isCompatibleRange(CREATE_MEMBER_CONTACT_VRANGE) ?? false {
@@ -110,7 +110,7 @@ struct GroupMemberInfoView: View {
Label("Share address", systemImage: "square.and.arrow.up")
}
if let contactId = member.memberContactId {
if knownDirectChat(contactId) == nil && !groupInfo.fullGroupPreferences.directMessages.on {
if knownDirectChat(contactId) == nil && !groupInfo.fullGroupPreferences.directMessages.on(for: groupInfo.membership) {
connectViaAddressButton(contactLink)
}
} else {
@@ -9,6 +9,12 @@
import SwiftUI
import SimpleXChat
private let featureRoles: [(role: GroupMemberRole?, text: LocalizedStringKey)] = [
(nil, "all members"),
(.admin, "admins"),
(.owner, "owners")
]
struct GroupPreferencesView: View {
@Environment(\.dismiss) var dismiss: DismissAction
@EnvironmentObject var chatModel: ChatModel
@@ -24,10 +30,12 @@ struct GroupPreferencesView: View {
List {
featureSection(.timedMessages, $preferences.timedMessages.enable)
featureSection(.fullDelete, $preferences.fullDelete.enable)
featureSection(.directMessages, $preferences.directMessages.enable)
featureSection(.directMessages, $preferences.directMessages.enable, $preferences.directMessages.role)
featureSection(.reactions, $preferences.reactions.enable)
featureSection(.voice, $preferences.voice.enable)
featureSection(.files, $preferences.files.enable)
featureSection(.voice, $preferences.voice.enable, $preferences.voice.role)
featureSection(.files, $preferences.files.enable, $preferences.files.role)
// TODO enable simplexLinks preference in 5.8
// featureSection(.simplexLinks, $preferences.simplexLinks.enable, $preferences.simplexLinks.role)
featureSection(.history, $preferences.history.enable)
if groupInfo.canEdit {
@@ -64,7 +72,7 @@ struct GroupPreferencesView: View {
}
}
private func featureSection(_ feature: GroupFeature, _ enableFeature: Binding<GroupFeatureEnabled>) -> some View {
private func featureSection(_ feature: GroupFeature, _ enableFeature: Binding<GroupFeatureEnabled>, _ enableForRole: Binding<GroupMemberRole?>? = nil) -> some View {
Section {
let color: Color = enableFeature.wrappedValue == .on ? .green : .secondary
let icon = enableFeature.wrappedValue == .on ? feature.iconFilled : feature.icon
@@ -87,6 +95,16 @@ struct GroupPreferencesView: View {
)
.frame(height: 36)
}
if enableFeature.wrappedValue == .on, let enableForRole {
Picker("Enabled for", selection: enableForRole) {
ForEach(featureRoles, id: \.role) { fr in
Text(fr.text)
}
}
.frame(height: 36)
// remove in v5.8
.disabled(true)
}
} else {
settingsRow(icon, color: color) {
infoRow(Text(feature.text), enableFeature.wrappedValue.text)
@@ -94,10 +112,26 @@ struct GroupPreferencesView: View {
if timedOn {
infoRow("Delete after", timeText(preferences.timedMessages.ttl))
}
if enableFeature.wrappedValue == .on, let enableForRole {
HStack {
Text("Enabled for").foregroundColor(.secondary)
Spacer()
Text(
featureRoles.first(where: { fr in fr.role == enableForRole.wrappedValue })?.text
?? "all members"
)
.foregroundColor(.secondary)
}
}
}
} footer: {
Text(feature.enableDescription(enableFeature.wrappedValue, groupInfo.canEdit))
}
.onChange(of: enableFeature.wrappedValue) { enabled in
if case .off = enabled {
enableForRole?.wrappedValue = nil
}
}
}
private func savePreferences() {
@@ -92,7 +92,7 @@ struct ChatListNavLink: View {
.swipeActions(edge: .leading, allowsFullSwipe: true) {
markReadButton()
toggleFavoriteButton()
toggleNtfsButton(chat)
ToggleNtfsButton(chat: chat)
}
.swipeActions(edge: .trailing, allowsFullSwipe: true) {
if !chat.chatItems.isEmpty {
@@ -181,7 +181,7 @@ struct ChatListNavLink: View {
.swipeActions(edge: .leading, allowsFullSwipe: true) {
markReadButton()
toggleFavoriteButton()
toggleNtfsButton(chat)
ToggleNtfsButton(chat: chat)
}
.swipeActions(edge: .trailing, allowsFullSwipe: true) {
if !chat.chatItems.isEmpty {
@@ -12,6 +12,7 @@ private let fillColorLight = Color(uiColor: UIColor(red: 0.99, green: 0.99, blue
struct UserPicker: View {
@EnvironmentObject var m: ChatModel
@Environment(\.colorScheme) var colorScheme
@Environment(\.scenePhase) var scenePhase
@Binding var showSettings: Bool
@Binding var showConnectDesktop: Bool
@Binding var userPickerVisible: Bool
@@ -91,7 +92,10 @@ struct UserPicker: View {
.opacity(userPickerVisible ? 1.0 : 0.0)
.onAppear {
do {
m.users = try listUsers()
// This check prevents the call of listUsers after the app is suspended, and the database is closed.
if case .active = scenePhase {
m.users = try listUsers()
}
} catch let error {
logger.error("Error loading users \(responseError(error))")
}
+33 -10
View File
@@ -11,28 +11,43 @@ import UIKit
import SwiftUI
extension View {
func uiKitContextMenu(menu: Binding<UIMenu>, allowMenu: Binding<Bool>) -> some View {
self.overlay {
if allowMenu.wrappedValue {
self.overlay(Color(uiColor: .systemBackground)).overlay(InteractionView(content: self, menu: menu))
func uiKitContextMenu(hasImageOrVideo: Bool, maxWidth: CGFloat, itemWidth: Binding<CGFloat>, menu: Binding<UIMenu>, allowMenu: Binding<Bool>) -> some View {
Group {
if allowMenu.wrappedValue {
if hasImageOrVideo {
InteractionView(content:
self.environmentObject(ChatModel.shared)
.overlay(DetermineWidthImageVideoItem())
.onPreferenceChange(DetermineWidthImageVideoItem.Key.self) { itemWidth.wrappedValue = $0 == 0 ? maxWidth : $0 }
, maxWidth: maxWidth, itemWidth: itemWidth, menu: menu)
.frame(maxWidth: itemWidth.wrappedValue)
} else {
InteractionView(content: self.environmentObject(ChatModel.shared), maxWidth: maxWidth, itemWidth: itemWidth, menu: menu)
.fixedSize(horizontal: true, vertical: false)
}
} else {
self
}
}
}
}
private struct InteractionConfig<Content: View> {
let content: Content
let menu: UIMenu
private class HostingViewHolder: UIView {
var contentSize: CGSize = CGSizeMake(0, 0)
override var intrinsicContentSize: CGSize { get { contentSize } }
}
private struct InteractionView<Content: View>: UIViewRepresentable {
struct InteractionView<Content: View>: UIViewRepresentable {
let content: Content
var maxWidth: CGFloat
var itemWidth: Binding<CGFloat>
@Binding var menu: UIMenu
func makeUIView(context: Context) -> UIView {
let view = UIView()
let view = HostingViewHolder()
view.backgroundColor = .clear
let hostView = UIHostingController(rootView: content)
view.contentSize = hostView.view.intrinsicContentSize
hostView.view.translatesAutoresizingMaskIntoConstraints = false
let constraints = [
hostView.view.topAnchor.constraint(equalTo: view.topAnchor),
@@ -44,12 +59,20 @@ private struct InteractionView<Content: View>: UIViewRepresentable {
]
view.addSubview(hostView.view)
view.addConstraints(constraints)
view.layer.cornerRadius = 18
hostView.view.layer.cornerRadius = 18
let menuInteraction = UIContextMenuInteraction(delegate: context.coordinator)
view.addInteraction(menuInteraction)
return view
}
func updateUIView(_ uiView: UIView, context: Context) {}
func updateUIView(_ uiView: UIView, context: Context) {
let was = (uiView as! HostingViewHolder).contentSize
(uiView as! HostingViewHolder).contentSize = uiView.subviews[0].sizeThatFits(CGSizeMake(itemWidth.wrappedValue, .infinity))
if was != (uiView as! HostingViewHolder).contentSize {
uiView.invalidateIntrinsicContentSize()
}
}
func makeCoordinator() -> Coordinator {
Coordinator(self)
@@ -21,6 +21,19 @@ struct DetermineWidth: View {
}
}
struct DetermineWidthImageVideoItem: View {
typealias Key = MaximumWidthImageVideoPreferenceKey
var body: some View {
GeometryReader { proxy in
Color.clear
.preference(
key: MaximumWidthImageVideoPreferenceKey.self,
value: proxy.size.width
)
}
}
}
struct MaximumWidthPreferenceKey: PreferenceKey {
static var defaultValue: CGFloat = 0
static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) {
@@ -28,6 +41,13 @@ struct MaximumWidthPreferenceKey: PreferenceKey {
}
}
struct MaximumWidthImageVideoPreferenceKey: PreferenceKey {
static var defaultValue: CGFloat = 0
static func reduce(value: inout CGFloat, nextValue: () -> CGFloat) {
value = max(value, nextValue())
}
}
struct DetermineWidth_Previews: PreviewProvider {
static var previews: some View {
DetermineWidth()
@@ -150,7 +150,7 @@ struct MigrateFromDevice: View {
return Alert(
title: Text(title),
message: Text(text),
primaryButton: .destructive(Text("Delete")) {
primaryButton: .default(Text("Delete")) {
deleteChatAndDismiss()
},
secondaryButton: .cancel()
@@ -333,16 +333,16 @@ struct MigrateFromDevice: View {
ZStack {
List {
Section {
Button(action: { alert = .deleteChat() }) {
settingsRow("trash.fill") {
Text("Delete database from this device").foregroundColor(.accentColor)
}
}
Button(action: { alert = .startChat() }) {
settingsRow("play.fill") {
Text("Start chat").foregroundColor(.red)
}
}
Button(action: { alert = .deleteChat() }) {
settingsRow("trash.fill") {
Text("Delete database from this device").foregroundColor(.accentColor)
}
}
} header: {
Text("Migration complete")
} footer: {
@@ -448,6 +448,9 @@ struct MigrateToDevice: View {
case .rcvFileError:
alert = .error(title: "Download failed", error: "File was deleted or link is invalid")
migrationState = .downloadFailed(totalBytes: totalBytes, link: link, archivePath: archivePath)
case .chatError(_, .error(.noRcvFileUser)):
alert = .error(title: "Download failed", error: "File was deleted or link is invalid")
migrationState = .downloadFailed(totalBytes: totalBytes, link: link, archivePath: archivePath)
default:
logger.debug("unsupported event: \(msg.responseType)")
}
@@ -166,8 +166,10 @@ private func createProfile(_ displayName: String, showAlert: (UserProfileAlert)
)
let m = ChatModel.shared
do {
AppChatState.shared.set(.active)
m.currentUser = try apiCreateActiveUser(profile)
if m.users.isEmpty {
// .isEmpty check is redundant here, but it makes it clearer what is going on
if m.users.isEmpty || m.users.allSatisfy({ $0.user.hidden }) {
try startChat()
withAnimation {
onboardingStageDefault.set(.step3_CreateSimpleXAddress)
@@ -344,6 +344,37 @@ private let versionDescriptions: [VersionDescription] = [
description: "Thanks to the users [contribute via Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!"
),
]
),
VersionDescription(
version: "v5.6",
post: URL(string: "https://simplex.chat/blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.html"),
features: [
FeatureDescription(
icon: "key",
title: "Quantum resistant encryption",
description: "Enable in direct chats (BETA)!"
),
FeatureDescription(
icon: "tray.and.arrow.up",
title: "App data migration",
description: "Migrate to another device via QR code."
),
FeatureDescription(
icon: "phone",
title: "Picture-in-picture calls",
description: "Use the app while in the call."
),
FeatureDescription(
icon: "hand.raised",
title: "Safer groups",
description: "Admins can block a member for all."
),
FeatureDescription(
icon: "character",
title: "Hungarian interface",
description: "Thanks to the users [contribute via Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!"
),
]
)
]
@@ -53,7 +53,7 @@ struct AdvancedNetworkSettings: View {
timeoutSettingPicker("TCP connection timeout", selection: $netCfg.tcpConnectTimeout, values: [7_500000, 10_000000, 15_000000, 20_000000, 30_000000, 45_000000], label: secondsLabel)
timeoutSettingPicker("Protocol timeout", selection: $netCfg.tcpTimeout, values: [5_000000, 7_000000, 10_000000, 15_000000, 20_000000, 30_000000], label: secondsLabel)
timeoutSettingPicker("Protocol timeout per KB", selection: $netCfg.tcpTimeoutPerKb, values: [15_000, 30_000, 45_000, 60_000, 90_000, 120_000], label: secondsLabel)
timeoutSettingPicker("Protocol timeout per KB", selection: $netCfg.tcpTimeoutPerKb, values: [2_500, 5_000, 10_000, 15_000, 20_000, 30_000], label: secondsLabel)
timeoutSettingPicker("PING interval", selection: $netCfg.smpPingInterval, values: [120_000000, 300_000000, 600_000000, 1200_000000, 2400_000000, 3600_000000], label: secondsLabel)
intSettingPicker("PING count", selection: $netCfg.smpPingCount, values: [1, 2, 3, 5, 8], label: "")
Toggle("Enable TCP keep-alive", isOn: $enableKeepAlive)
@@ -24,6 +24,7 @@ private enum NetworkAlert: Identifiable {
}
struct NetworkAndServers: View {
@EnvironmentObject var m: ChatModel
@AppStorage(DEFAULT_DEVELOPER_TOOLS) private var developerTools = false
@State private var cfgLoaded = false
@State private var currentNetCfg = NetCfg.defaults
@@ -82,6 +83,14 @@ struct NetworkAndServers: View {
Text("WebRTC ICE servers")
}
}
Section("Network connection") {
HStack {
Text(m.networkInfo.networkType.text)
Spacer()
Image(systemName: "circle.fill").foregroundColor(m.networkInfo.online ? .green : .red)
}
}
}
}
.onAppear {
@@ -276,6 +276,7 @@ struct UserProfilesView: View {
// Deleting the last visible user while having hidden one(s)
try await deleteUser()
try await changeActiveUserAsync_(nil, viewPwd: nil)
try? await stopChatAsync()
await MainActor.run {
onboardingStageDefault.set(.step1_SimpleXInfo)
m.onboardingStage = .step1_SimpleXInfo
File diff suppressed because it is too large Load Diff
@@ -107,6 +107,10 @@
<target>%@ připojen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ downloaded" xml:space="preserve">
<source>%@ downloaded</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ is connected!" xml:space="preserve">
<source>%@ is connected!</source>
<target>%@ je připojen!</target>
@@ -127,6 +131,10 @@
<target>%@ servery</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ uploaded" xml:space="preserve">
<source>%@ uploaded</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ wants to connect!" xml:space="preserve">
<source>%@ wants to connect!</source>
<target>%@ se chce připojit!</target>
@@ -332,6 +340,10 @@
<target>**Nejsoukromější**: nepoužívejte server oznámení SimpleX Chat, pravidelně kontrolujte zprávy na pozadí (závisí na tom, jak často aplikaci používáte).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." xml:space="preserve">
<source>**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: you will NOT be able to recover or change passphrase if you lose it." xml:space="preserve">
<source>**Please note**: you will NOT be able to recover or change passphrase if you lose it.</source>
<target>**Upozornění**: Pokud heslo ztratíte, NEBUDETE jej moci obnovit ani změnit.</target>
@@ -347,6 +359,10 @@
<target>**Upozornění**: Okamžitě doručovaná oznámení vyžadují přístupové heslo uložené v Klíčence.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Warning**: the archive will be removed." xml:space="preserve">
<source>**Warning**: the archive will be removed.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**e2e encrypted** audio call" xml:space="preserve">
<source>**e2e encrypted** audio call</source>
<target>**e2e šifrovaný** audio hovor</target>
@@ -598,6 +614,10 @@
<target>Změna adresy bude přerušena. Budou použity staré přijímací adresy.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can block a member for all." xml:space="preserve">
<source>Admins can block a member for all.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can create the links to join groups." xml:space="preserve">
<source>Admins can create the links to join groups.</source>
<target>Správci mohou vytvářet odkazy pro připojení ke skupinám.</target>
@@ -651,6 +671,10 @@
<target>Všechny vaše kontakty zůstanou připojeny. Aktualizace profilu bude odeslána vašim kontaktům.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." xml:space="preserve">
<source>All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow" xml:space="preserve">
<source>Allow</source>
<target>Povolit</target>
@@ -774,6 +798,10 @@
<target>Sestavení aplikace: %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App data migration" xml:space="preserve">
<source>App data migration</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App encrypts new local files (except videos)." xml:space="preserve">
<source>App encrypts new local files (except videos).</source>
<target>Aplikace šifruje nové místní soubory (s výjimkou videí).</target>
@@ -809,6 +837,18 @@
<target>Vzhled</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Apply" xml:space="preserve">
<source>Apply</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive and upload" xml:space="preserve">
<source>Archive and upload</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Attach" xml:space="preserve">
<source>Attach</source>
<target>Připojit</target>
@@ -989,6 +1029,10 @@
<target>Zrušit</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel migration" xml:space="preserve">
<source>Cancel migration</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cannot access keychain to save database password" xml:space="preserve">
<source>Cannot access keychain to save database password</source>
<target>Nelze získat přístup ke klíčence pro uložení hesla databáze</target>
@@ -1089,6 +1133,10 @@
<source>Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat preferences" xml:space="preserve">
<source>Chat preferences</source>
<target>Předvolby chatu</target>
@@ -1109,6 +1157,10 @@
<target>Čínské a Španělské rozhranní</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose _Migrate from another device_ on the new device and scan QR code." xml:space="preserve">
<source>Choose _Migrate from another device_ on the new device and scan QR code.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose file" xml:space="preserve">
<source>Choose file</source>
<target>Vybrat soubor</target>
@@ -1178,6 +1230,10 @@
<target>Potvrdit aktualizaci databáze</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm network settings" xml:space="preserve">
<source>Confirm network settings</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm new passphrase…" xml:space="preserve">
<source>Confirm new passphrase…</source>
<target>Potvrdit novou heslovou frázi…</target>
@@ -1188,6 +1244,14 @@
<target>Potvrdit heslo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm that you remember database passphrase to migrate it." xml:space="preserve">
<source>Confirm that you remember database passphrase to migrate it.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm upload" xml:space="preserve">
<source>Confirm upload</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect" xml:space="preserve">
<source>Connect</source>
<target>Připojit</target>
@@ -1428,6 +1492,10 @@ This is your own one-time link!</source>
<target>Vytvořeno na %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating archive link" xml:space="preserve">
<source>Creating archive link</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating link…" xml:space="preserve">
<source>Creating link…</source>
<note>No comment provided by engineer.</note>
@@ -1643,6 +1711,10 @@ This cannot be undone!</source>
<target>Odstranění databáze</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database from this device" xml:space="preserve">
<source>Delete database from this device</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete file" xml:space="preserve">
<source>Delete file</source>
<target>Smazat soubor</target>
@@ -1927,11 +1999,23 @@ This cannot be undone!</source>
<target>Snížit a otevřít chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download failed" xml:space="preserve">
<source>Download failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download file" xml:space="preserve">
<source>Download file</source>
<target>Stáhnout soubor</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Downloading archive" xml:space="preserve">
<source>Downloading archive</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Downloading link details" xml:space="preserve">
<source>Downloading link details</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Duplicate display name!" xml:space="preserve">
<source>Duplicate display name!</source>
<target>Duplicitní zobrazované jméno!</target>
@@ -1986,6 +2070,10 @@ This cannot be undone!</source>
<target>Povolit pro všechny</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable in direct chats (BETA)!" xml:space="preserve">
<source>Enable in direct chats (BETA)!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable instant notifications?" xml:space="preserve">
<source>Enable instant notifications?</source>
<target>Povolit okamžitá oznámení?</target>
@@ -2097,6 +2185,10 @@ This cannot be undone!</source>
<source>Enter group name…</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase" xml:space="preserve">
<source>Enter passphrase</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase…" xml:space="preserve">
<source>Enter passphrase…</source>
<target>Zadejte přístupovou frázi…</target>
@@ -2155,6 +2247,10 @@ This cannot be undone!</source>
<target>Chyba přidávání člena(ů)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error allowing contact PQ encryption" xml:space="preserve">
<source>Error allowing contact PQ encryption</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error changing address" xml:space="preserve">
<source>Error changing address</source>
<target>Chuba změny adresy</target>
@@ -2244,6 +2340,10 @@ This cannot be undone!</source>
<target>Chyba mazání uživatelského profilu</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error downloading the archive" xml:space="preserve">
<source>Error downloading the archive</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error enabling delivery receipts!" xml:space="preserve">
<source>Error enabling delivery receipts!</source>
<target>Chyba povolení potvrzení o doručení!</target>
@@ -2318,6 +2418,10 @@ This cannot be undone!</source>
<target>Při ukládání přístupové fráze do klíčenky došlo k chybě</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error saving settings" xml:space="preserve">
<source>Error saving settings</source>
<note>when migrating</note>
</trans-unit>
<trans-unit id="Error saving user password" xml:space="preserve">
<source>Error saving user password</source>
<target>Chyba ukládání hesla uživatele</target>
@@ -2387,6 +2491,14 @@ This cannot be undone!</source>
<target>Chyba aktualizace soukromí uživatele</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error uploading the archive" xml:space="preserve">
<source>Error uploading the archive</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error verifying passphrase:" xml:space="preserve">
<source>Error verifying passphrase:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error: " xml:space="preserve">
<source>Error: </source>
<target>Chyba: </target>
@@ -2436,6 +2548,10 @@ This cannot be undone!</source>
<target>Exportovaný archiv databáze.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exported file doesn't exist" xml:space="preserve">
<source>Exported file doesn't exist</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exporting database archive…" xml:space="preserve">
<source>Exporting database archive…</source>
<target>Exportuji archiv databáze…</target>
@@ -2505,6 +2621,14 @@ This cannot be undone!</source>
<target>Filtrovat nepřečtené a oblíbené chaty.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration" xml:space="preserve">
<source>Finalize migration</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration on another device." xml:space="preserve">
<source>Finalize migration on another device.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finally, we have them! 🚀" xml:space="preserve">
<source>Finally, we have them! 🚀</source>
<target>Konečně je máme! 🚀</target>
@@ -2790,6 +2914,10 @@ This cannot be undone!</source>
<target>Jak používat servery</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Hungarian interface" xml:space="preserve">
<source>Hungarian interface</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="ICE servers (one per line)" xml:space="preserve">
<source>ICE servers (one per line)</source>
<target>Servery ICE (jeden na řádek)</target>
@@ -2855,6 +2983,14 @@ This cannot be undone!</source>
<target>Import databáze</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Import failed" xml:space="preserve">
<source>Import failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Importing archive" xml:space="preserve">
<source>Importing archive</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Improved message delivery" xml:space="preserve">
<source>Improved message delivery</source>
<note>No comment provided by engineer.</note>
@@ -2869,6 +3005,10 @@ This cannot be undone!</source>
<target>Vylepšená konfigurace serveru</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In order to continue, chat should be stopped." xml:space="preserve">
<source>In order to continue, chat should be stopped.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In reply to" xml:space="preserve">
<source>In reply to</source>
<target>V odpovědi na</target>
@@ -2976,6 +3116,10 @@ This cannot be undone!</source>
<source>Invalid link</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid migration confirmation" xml:space="preserve">
<source>Invalid migration confirmation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid name!" xml:space="preserve">
<source>Invalid name!</source>
<note>No comment provided by engineer.</note>
@@ -3331,6 +3475,10 @@ This is your link for group %@!</source>
<target>Text zprávy</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message too large" xml:space="preserve">
<source>Message too large</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages" xml:space="preserve">
<source>Messages</source>
<target>Zprávy</target>
@@ -3345,11 +3493,47 @@ This is your link for group %@!</source>
<source>Messages from %@ will be shown!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate device" xml:space="preserve">
<source>Migrate device</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate from another device" xml:space="preserve">
<source>Migrate from another device</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate here" xml:space="preserve">
<source>Migrate here</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device" xml:space="preserve">
<source>Migrate to another device</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device via QR code." xml:space="preserve">
<source>Migrate to another device via QR code.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating" xml:space="preserve">
<source>Migrating</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating database archive…" xml:space="preserve">
<source>Migrating database archive…</source>
<target>Přenášení archivu databáze…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration complete" xml:space="preserve">
<source>Migration complete</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration error:" xml:space="preserve">
<source>Migration error:</source>
<target>Chyba přenášení:</target>
@@ -3705,6 +3889,10 @@ This is your link for group %@!</source>
<source>Open group</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Open migration to another device" xml:space="preserve">
<source>Open migration to another device</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Open user profiles" xml:space="preserve">
<source>Open user profiles</source>
<target>Otevřít uživatelské profily</target>
@@ -3719,10 +3907,18 @@ This is your link for group %@!</source>
<source>Opening app…</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
<source>Or paste archive link</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or scan QR code" xml:space="preserve">
<source>Or scan QR code</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or securely share this file link" xml:space="preserve">
<source>Or securely share this file link</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or show this code" xml:space="preserve">
<source>Or show this code</source>
<note>No comment provided by engineer.</note>
@@ -3803,6 +3999,10 @@ This is your link for group %@!</source>
<target>Chyba dešifrování</target>
<note>message decrypt error item</note>
</trans-unit>
<trans-unit id="Picture-in-picture calls" xml:space="preserve">
<source>Picture-in-picture calls</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>Prosím, požádejte kontaktní osobu, aby umožnila odesílání hlasových zpráv.</target>
@@ -3823,6 +4023,10 @@ This is your link for group %@!</source>
<target>Zkontrolujte prosím nastavení své i svého kontaktu.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please confirm that network settings are correct for this device." xml:space="preserve">
<source>Please confirm that network settings are correct for this device.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please contact developers.&#10;Error: %@" xml:space="preserve">
<source>Please contact developers.
Error: %@</source>
@@ -3878,6 +4082,10 @@ Error: %@</source>
<target>Je možné, že otisk certifikátu v adrese serveru je nesprávný</target>
<note>server test error</note>
</trans-unit>
<trans-unit id="Post-quantum E2EE" xml:space="preserve">
<source>Post-quantum E2EE</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Preserve the last message draft, with attachments." xml:space="preserve">
<source>Preserve the last message draft, with attachments.</source>
<target>Zachování posledního návrhu zprávy s přílohami.</target>
@@ -4010,6 +4218,14 @@ Error: %@</source>
<target>Nabízená oznámení</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push server" xml:space="preserve">
<source>Push server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Quantum resistant encryption" xml:space="preserve">
<source>Quantum resistant encryption</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Rate the app" xml:space="preserve">
<source>Rate the app</source>
<target>Ohodnoťte aplikaci</target>
@@ -4192,10 +4408,22 @@ Error: %@</source>
<source>Repeat connection request?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat download" xml:space="preserve">
<source>Repeat download</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat import" xml:space="preserve">
<source>Repeat import</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat join request?" xml:space="preserve">
<source>Repeat join request?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat upload" xml:space="preserve">
<source>Repeat upload</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reply" xml:space="preserve">
<source>Reply</source>
<target>Odpověď</target>
@@ -4295,6 +4523,10 @@ Error: %@</source>
<target>SMP servery</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safer groups" xml:space="preserve">
<source>Safer groups</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Uložit</target>
@@ -4654,6 +4886,10 @@ Error: %@</source>
<target>Nastavit heslo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase" xml:space="preserve">
<source>Set passphrase</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase to export" xml:space="preserve">
<source>Set passphrase to export</source>
<target>Nastavení přístupové fráze pro export</target>
@@ -4708,6 +4944,10 @@ Error: %@</source>
<target>Sdílet s kontakty</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show QR code" xml:space="preserve">
<source>Show QR code</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show calls in phone history" xml:space="preserve">
<source>Show calls in phone history</source>
<target>Ukaž hovory v historii telefonu</target>
@@ -4847,6 +5087,10 @@ Error: %@</source>
<target>Zastavit SimpleX</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Stop chat" xml:space="preserve">
<source>Stop chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stop chat to enable database actions" xml:space="preserve">
<source>Stop chat to enable database actions</source>
<target>Zastavte chat pro povolení akcí databáze</target>
@@ -4887,6 +5131,10 @@ Error: %@</source>
<target>Přestat sdílet adresu?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stopping chat" xml:space="preserve">
<source>Stopping chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Submit" xml:space="preserve">
<source>Submit</source>
<target>Odeslat</target>
@@ -5129,6 +5377,14 @@ Může se to stát kvůli nějaké chybě, nebo pokud je spojení kompromitován
<target>Tuto akci nelze vzít zpět - váš profil, kontakty, zprávy a soubory budou nenávratně ztraceny.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="This chat is protected by end-to-end encryption." xml:space="preserve">
<source>This chat is protected by end-to-end encryption.</source>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This chat is protected by quantum resistant end-to-end encryption." xml:space="preserve">
<source>This chat is protected by quantum resistant end-to-end encryption.</source>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This device name" xml:space="preserve">
<source>This device name</source>
<note>No comment provided by engineer.</note>
@@ -5409,11 +5665,19 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
<target>Zvýšit a otevřít chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload failed" xml:space="preserve">
<source>Upload failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload file" xml:space="preserve">
<source>Upload file</source>
<target>Nahrát soubor</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Uploading archive" xml:space="preserve">
<source>Uploading archive</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use .onion hosts" xml:space="preserve">
<source>Use .onion hosts</source>
<target>Použít hostitele .onion</target>
@@ -5462,6 +5726,10 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
<target>Použít server</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app while in the call." xml:space="preserve">
<source>Use the app while in the call.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>Profil uživatele</target>
@@ -5494,6 +5762,14 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
<source>Verify connections</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify database passphrase" xml:space="preserve">
<source>Verify database passphrase</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify passphrase" xml:space="preserve">
<source>Verify passphrase</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify security code" xml:space="preserve">
<source>Verify security code</source>
<target>Ověření bezpečnostního kódu</target>
@@ -5581,6 +5857,10 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
<target>Čekám na video</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: starting chat on multiple devices is not supported and will cause message delivery failures" xml:space="preserve">
<source>Warning: starting chat on multiple devices is not supported and will cause message delivery failures</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: you may lose some data!" xml:space="preserve">
<source>Warning: you may lose some data!</source>
<target>Upozornění: můžete ztratit nějaká data!</target>
@@ -5601,6 +5881,10 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
<target>Uvítací zpráva</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Welcome message is too long" xml:space="preserve">
<source>Welcome message is too long</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="What's new" xml:space="preserve">
<source>What's new</source>
<target>Co je nového</target>
@@ -5654,6 +5938,10 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu
<target>Vy</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You **must not** use the same database on two devices." xml:space="preserve">
<source>You **must not** use the same database on two devices.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You accepted connection" xml:space="preserve">
<source>You accepted connection</source>
<target>Přijali jste spojení</target>
@@ -5733,6 +6021,10 @@ Repeat join request?</source>
<target>Můžete je povolit později v nastavení Soukromí &amp; Bezpečnosti aplikace</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can give another try." xml:space="preserve">
<source>You can give another try.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can hide or mute a user profile - swipe it to the right." xml:space="preserve">
<source>You can hide or mute a user profile - swipe it to the right.</source>
<target>Profil uživatele můžete skrýt nebo ztlumit - přejeďte prstem doprava.</target>
@@ -6116,7 +6408,7 @@ Servery SimpleX nevidí váš profil.</target>
</trans-unit>
<trans-unit id="blocked" xml:space="preserve">
<source>blocked</source>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="blocked %@" xml:space="preserve">
<source>blocked %@</source>
@@ -6124,7 +6416,7 @@ Servery SimpleX nevidí váš profil.</target>
</trans-unit>
<trans-unit id="blocked by admin" xml:space="preserve">
<source>blocked by admin</source>
<note>blocked chat item</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="bold" xml:space="preserve">
<source>bold</source>
@@ -6550,7 +6842,7 @@ Servery SimpleX nevidí váš profil.</target>
<trans-unit id="moderated by %@" xml:space="preserve">
<source>moderated by %@</source>
<target>moderovaný %@</target>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="months" xml:space="preserve">
<source>months</source>
@@ -6619,6 +6911,10 @@ Servery SimpleX nevidí váš profil.</target>
<target>peer-to-peer</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve">
<source>quantum resistant e2e encryption</source>
<note>chat item text</note>
</trans-unit>
<trans-unit id="received answer…" xml:space="preserve">
<source>received answer…</source>
<target>obdržel odpověď…</target>
@@ -6690,6 +6986,10 @@ Servery SimpleX nevidí váš profil.</target>
<source>set new profile picture</source>
<note>profile update event chat item</note>
</trans-unit>
<trans-unit id="standard end-to-end encryption" xml:space="preserve">
<source>standard end-to-end encryption</source>
<note>chat item text</note>
</trans-unit>
<trans-unit id="starting…" xml:space="preserve">
<source>starting…</source>
<target>začíná…</target>
@@ -107,6 +107,11 @@
<target>%@ wurde mit Ihnen verbunden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ downloaded" xml:space="preserve">
<source>%@ downloaded</source>
<target>%@ heruntergeladen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ is connected!" xml:space="preserve">
<source>%@ is connected!</source>
<target>%@ ist mit Ihnen verbunden!</target>
@@ -127,6 +132,11 @@
<target>%@-Server</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ uploaded" xml:space="preserve">
<source>%@ uploaded</source>
<target>%@ hochgeladen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ wants to connect!" xml:space="preserve">
<source>%@ wants to connect!</source>
<target>%@ will sich mit Ihnen verbinden!</target>
@@ -342,6 +352,11 @@
<target>**Beste Privatsphäre**: Es wird kein SimpleX-Chat-Benachrichtigungs-Server genutzt, Nachrichten werden in periodischen Abständen im Hintergrund geprüft (dies hängt davon ab, wie häufig Sie die App nutzen).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." xml:space="preserve">
<source>**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.</source>
<target>**Bitte beachten Sie**: Aus Sicherheitsgründen wird die Nachrichtenentschlüsselung Ihrer Verbindungen abgebrochen, wenn Sie die gleiche Datenbank auf zwei Geräten nutzen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: you will NOT be able to recover or change passphrase if you lose it." xml:space="preserve">
<source>**Please note**: you will NOT be able to recover or change passphrase if you lose it.</source>
<target>**Bitte beachten Sie**: Das Passwort kann NICHT wiederhergestellt oder geändert werden, wenn Sie es vergessen haben oder verlieren.</target>
@@ -357,6 +372,11 @@
<target>**Warnung**: Sofortige Push-Benachrichtigungen erfordern die Eingabe eines Passworts, welches in Ihrem Schlüsselbund gespeichert ist.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Warning**: the archive will be removed." xml:space="preserve">
<source>**Warning**: the archive will be removed.</source>
<target>**Warnung**: Das Archiv wird gelöscht.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**e2e encrypted** audio call" xml:space="preserve">
<source>**e2e encrypted** audio call</source>
<target>**E2E-verschlüsselter** Audioanruf</target>
@@ -613,6 +633,11 @@
<target>Der Wechsel der Empfängeradresse wird abgebrochen. Die bisherige Adresse wird weiter verwendet.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can block a member for all." xml:space="preserve">
<source>Admins can block a member for all.</source>
<target>Administratoren können ein Gruppenmitglied für Alle blockieren.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can create the links to join groups." xml:space="preserve">
<source>Admins can create the links to join groups.</source>
<target>Administratoren können Links für den Beitritt zu Gruppen erzeugen.</target>
@@ -668,6 +693,11 @@
<target>Alle Ihre Kontakte bleiben verbunden. Es wird eine Profilaktualisierung an Ihre Kontakte gesendet.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." xml:space="preserve">
<source>All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.</source>
<target>Alle Ihre Kontakte, Unterhaltungen und Dateien werden sicher verschlüsselt und in Daten-Paketen auf die konfigurierten XTFP-Server hochgeladen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow" xml:space="preserve">
<source>Allow</source>
<target>Erlauben</target>
@@ -793,6 +823,11 @@
<target>App Build: %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App data migration" xml:space="preserve">
<source>App data migration</source>
<target>App-Daten-Migration</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App encrypts new local files (except videos)." xml:space="preserve">
<source>App encrypts new local files (except videos).</source>
<target>Neue lokale Dateien (außer Video-Dateien) werden von der App verschlüsselt.</target>
@@ -828,6 +863,21 @@
<target>Erscheinungsbild</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Apply" xml:space="preserve">
<source>Apply</source>
<target>Anwenden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive and upload" xml:space="preserve">
<source>Archive and upload</source>
<target>Archivieren und Hochladen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<target>Datenbank wird archiviert</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Attach" xml:space="preserve">
<source>Attach</source>
<target>Anhängen</target>
@@ -1018,6 +1068,11 @@
<target>Abbrechen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel migration" xml:space="preserve">
<source>Cancel migration</source>
<target>Migration abbrechen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cannot access keychain to save database password" xml:space="preserve">
<source>Cannot access keychain to save database password</source>
<target>Die App kann nicht auf den Schlüsselbund zugreifen, um das Datenbank-Passwort zu speichern</target>
@@ -1119,6 +1174,11 @@
<target>Der Chat ist angehalten. Wenn Sie diese Datenbank bereits auf einem anderen Gerät genutzt haben, sollten Sie diese vor dem Starten des Chats wieder zurückspielen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<target>Chat wurde migriert!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat preferences" xml:space="preserve">
<source>Chat preferences</source>
<target>Chat-Präferenzen</target>
@@ -1139,6 +1199,11 @@
<target>Chinesische und spanische Bedienoberfläche</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose _Migrate from another device_ on the new device and scan QR code." xml:space="preserve">
<source>Choose _Migrate from another device_ on the new device and scan QR code.</source>
<target>Wählen Sie auf dem neuen Gerät _Von einem anderen Gerät migrieren_ und scannen Sie den QR-Code.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose file" xml:space="preserve">
<source>Choose file</source>
<target>Datei auswählen</target>
@@ -1209,6 +1274,11 @@
<target>Datenbank-Aktualisierungen bestätigen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm network settings" xml:space="preserve">
<source>Confirm network settings</source>
<target>Bestätigen Sie die Netzwerkeinstellungen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm new passphrase…" xml:space="preserve">
<source>Confirm new passphrase…</source>
<target>Neues Passwort bestätigen…</target>
@@ -1219,6 +1289,16 @@
<target>Passwort bestätigen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm that you remember database passphrase to migrate it." xml:space="preserve">
<source>Confirm that you remember database passphrase to migrate it.</source>
<target>Bitte bestätigen Sie für die Migration, dass Sie sich an Ihr Datenbank-Passwort erinnern.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm upload" xml:space="preserve">
<source>Confirm upload</source>
<target>Hochladen bestätigen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect" xml:space="preserve">
<source>Connect</source>
<target>Verbinden</target>
@@ -1478,6 +1558,11 @@ Das ist Ihr eigener Einmal-Link!</target>
<target>Erstellt am %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating archive link" xml:space="preserve">
<source>Creating archive link</source>
<target>Archiv-Link erzeugen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating link…" xml:space="preserve">
<source>Creating link…</source>
<target>Link wird erstellt…</target>
@@ -1698,6 +1783,11 @@ Das kann nicht rückgängig gemacht werden!</target>
<target>Datenbank löschen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database from this device" xml:space="preserve">
<source>Delete database from this device</source>
<target>Datenbank auf diesem Gerät löschen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete file" xml:space="preserve">
<source>Delete file</source>
<target>Datei löschen</target>
@@ -1988,11 +2078,26 @@ Das kann nicht rückgängig gemacht werden!</target>
<target>Datenbank herabstufen und den Chat öffnen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download failed" xml:space="preserve">
<source>Download failed</source>
<target>Herunterladen fehlgeschlagen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download file" xml:space="preserve">
<source>Download file</source>
<target>Datei herunterladen</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Downloading archive" xml:space="preserve">
<source>Downloading archive</source>
<target>Archiv wird heruntergeladen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Downloading link details" xml:space="preserve">
<source>Downloading link details</source>
<target>Link-Details werden heruntergeladen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Duplicate display name!" xml:space="preserve">
<source>Duplicate display name!</source>
<target>Doppelter Anzeigename!</target>
@@ -2048,6 +2153,11 @@ Das kann nicht rückgängig gemacht werden!</target>
<target>Für Alle aktivieren</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable in direct chats (BETA)!" xml:space="preserve">
<source>Enable in direct chats (BETA)!</source>
<target>Kann in direkten Chats aktiviert werden (BETA)!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable instant notifications?" xml:space="preserve">
<source>Enable instant notifications?</source>
<target>Sofortige Benachrichtigungen aktivieren?</target>
@@ -2163,6 +2273,11 @@ Das kann nicht rückgängig gemacht werden!</target>
<target>Geben Sie den Gruppennamen ein…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase" xml:space="preserve">
<source>Enter passphrase</source>
<target>Passwort eingeben</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase…" xml:space="preserve">
<source>Enter passphrase…</source>
<target>Passwort eingeben…</target>
@@ -2223,6 +2338,11 @@ Das kann nicht rückgängig gemacht werden!</target>
<target>Fehler beim Hinzufügen von Mitgliedern</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error allowing contact PQ encryption" xml:space="preserve">
<source>Error allowing contact PQ encryption</source>
<target>Fehler beim Zulassen der Kontakt-PQ-Verschlüsselung</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error changing address" xml:space="preserve">
<source>Error changing address</source>
<target>Fehler beim Wechseln der Empfängeradresse</target>
@@ -2313,6 +2433,11 @@ Das kann nicht rückgängig gemacht werden!</target>
<target>Fehler beim Löschen des Benutzerprofils</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error downloading the archive" xml:space="preserve">
<source>Error downloading the archive</source>
<target>Fehler beim Herunterladen des Archivs</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error enabling delivery receipts!" xml:space="preserve">
<source>Error enabling delivery receipts!</source>
<target>Fehler beim Aktivieren von Empfangsbestätigungen!</target>
@@ -2388,6 +2513,11 @@ Das kann nicht rückgängig gemacht werden!</target>
<target>Fehler beim Speichern des Passworts in den Schlüsselbund</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error saving settings" xml:space="preserve">
<source>Error saving settings</source>
<target>Fehler beim Abspeichern der Einstellungen</target>
<note>when migrating</note>
</trans-unit>
<trans-unit id="Error saving user password" xml:space="preserve">
<source>Error saving user password</source>
<target>Fehler beim Speichern des Benutzer-Passworts</target>
@@ -2458,6 +2588,16 @@ Das kann nicht rückgängig gemacht werden!</target>
<target>Fehler beim Aktualisieren der Benutzer-Privatsphäre</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error uploading the archive" xml:space="preserve">
<source>Error uploading the archive</source>
<target>Fehler beim Hochladen des Archivs</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error verifying passphrase:" xml:space="preserve">
<source>Error verifying passphrase:</source>
<target>Fehler bei der Überprüfung des Passworts:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error: " xml:space="preserve">
<source>Error: </source>
<target>Fehler: </target>
@@ -2508,6 +2648,11 @@ Das kann nicht rückgängig gemacht werden!</target>
<target>Exportiertes Datenbankarchiv.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exported file doesn't exist" xml:space="preserve">
<source>Exported file doesn't exist</source>
<target>Die exportierte Datei ist nicht vorhanden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exporting database archive…" xml:space="preserve">
<source>Exporting database archive…</source>
<target>Exportieren des Datenbank-Archivs…</target>
@@ -2578,6 +2723,16 @@ Das kann nicht rückgängig gemacht werden!</target>
<target>Nach ungelesenen und favorisierten Chats filtern.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration" xml:space="preserve">
<source>Finalize migration</source>
<target>Die Migration wird abgeschlossen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration on another device." xml:space="preserve">
<source>Finalize migration on another device.</source>
<target>Die Migration auf dem anderen Gerät wird abgeschlossen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finally, we have them! 🚀" xml:space="preserve">
<source>Finally, we have them! 🚀</source>
<target>Endlich haben wir sie! 🚀</target>
@@ -2868,6 +3023,11 @@ Das kann nicht rückgängig gemacht werden!</target>
<target>Wie Sie Ihre Server nutzen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Hungarian interface" xml:space="preserve">
<source>Hungarian interface</source>
<target>Ungarische Bedienoberfläche</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="ICE servers (one per line)" xml:space="preserve">
<source>ICE servers (one per line)</source>
<target>ICE-Server (einer pro Zeile)</target>
@@ -2933,6 +3093,16 @@ Das kann nicht rückgängig gemacht werden!</target>
<target>Datenbank importieren</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Import failed" xml:space="preserve">
<source>Import failed</source>
<target>Import ist fehlgeschlagen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Importing archive" xml:space="preserve">
<source>Importing archive</source>
<target>Archiv wird importiert</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Improved message delivery" xml:space="preserve">
<source>Improved message delivery</source>
<target>Verbesserte Zustellung von Nachrichten</target>
@@ -2948,6 +3118,11 @@ Das kann nicht rückgängig gemacht werden!</target>
<target>Verbesserte Serverkonfiguration</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In order to continue, chat should be stopped." xml:space="preserve">
<source>In order to continue, chat should be stopped.</source>
<target>Um fortzufahren, sollte der Chat beendet werden.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In reply to" xml:space="preserve">
<source>In reply to</source>
<target>Als Antwort auf</target>
@@ -3060,6 +3235,11 @@ Das kann nicht rückgängig gemacht werden!</target>
<target>Ungültiger Link</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid migration confirmation" xml:space="preserve">
<source>Invalid migration confirmation</source>
<target>Migrations-Bestätigung ungültig</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid name!" xml:space="preserve">
<source>Invalid name!</source>
<target>Ungültiger Name!</target>
@@ -3428,6 +3608,11 @@ Das ist Ihr Link für die Gruppe %@!</target>
<target>Nachrichtentext</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message too large" xml:space="preserve">
<source>Message too large</source>
<target>Die Nachricht ist zu lang</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages" xml:space="preserve">
<source>Messages</source>
<target>Nachrichten</target>
@@ -3443,11 +3628,56 @@ Das ist Ihr Link für die Gruppe %@!</target>
<target>Die Nachrichten von %@ werden angezeigt!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<target>Nachrichten, Dateien und Anrufe sind durch **Ende-zu-Ende-Verschlüsselung** mit Perfect Forward Secrecy, Ablehnung und Einbruchs-Wiederherstellung geschützt.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<target>Nachrichten, Dateien und Anrufe sind durch **Quantum-resistente E2E-Verschlüsselung** mit Perfect Forward Secrecy, Ablehnung und Einbruchs-Wiederherstellung geschützt.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate device" xml:space="preserve">
<source>Migrate device</source>
<target>Gerät migrieren</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate from another device" xml:space="preserve">
<source>Migrate from another device</source>
<target>Von einem anderen Gerät migrieren</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate here" xml:space="preserve">
<source>Migrate here</source>
<target>Hierher migrieren</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device" xml:space="preserve">
<source>Migrate to another device</source>
<target>Auf ein anderes Gerät migrieren</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device via QR code." xml:space="preserve">
<source>Migrate to another device via QR code.</source>
<target>Daten können über einen QR-Code auf ein anderes Gerät migriert werden.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating" xml:space="preserve">
<source>Migrating</source>
<target>Migrieren</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating database archive…" xml:space="preserve">
<source>Migrating database archive…</source>
<target>Datenbank-Archiv wird migriert…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration complete" xml:space="preserve">
<source>Migration complete</source>
<target>Migration abgeschlossen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration error:" xml:space="preserve">
<source>Migration error:</source>
<target>Fehler bei der Migration:</target>
@@ -3807,6 +4037,11 @@ Das ist Ihr Link für die Gruppe %@!</target>
<target>Gruppe öffnen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Open migration to another device" xml:space="preserve">
<source>Open migration to another device</source>
<target>Migration auf ein anderes Gerät öffnen</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Open user profiles" xml:space="preserve">
<source>Open user profiles</source>
<target>Benutzerprofile öffnen</target>
@@ -3822,11 +4057,21 @@ Das ist Ihr Link für die Gruppe %@!</target>
<target>App wird geöffnet…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
<source>Or paste archive link</source>
<target>Oder fügen Sie den Archiv-Link ein</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or scan QR code" xml:space="preserve">
<source>Or scan QR code</source>
<target>Oder den QR-Code scannen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or securely share this file link" xml:space="preserve">
<source>Or securely share this file link</source>
<target>Oder teilen Sie diesen Datei-Link sicher</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or show this code" xml:space="preserve">
<source>Or show this code</source>
<target>Oder diesen QR-Code anzeigen</target>
@@ -3912,6 +4157,11 @@ Das ist Ihr Link für die Gruppe %@!</target>
<target>Entschlüsselungsfehler</target>
<note>message decrypt error item</note>
</trans-unit>
<trans-unit id="Picture-in-picture calls" xml:space="preserve">
<source>Picture-in-picture calls</source>
<target>Bild-in-Bild-Anrufe</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>Bitten Sie Ihren Kontakt darum, das Senden von Sprachnachrichten zu aktivieren.</target>
@@ -3932,6 +4182,11 @@ Das ist Ihr Link für die Gruppe %@!</target>
<target>Bitte überprüfen sie sowohl Ihre, als auch die Präferenzen Ihres Kontakts.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please confirm that network settings are correct for this device." xml:space="preserve">
<source>Please confirm that network settings are correct for this device.</source>
<target>Bitte bestätigen Sie, dass die Netzwerkeinstellungen auf diesem Gerät richtig sind.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please contact developers.&#10;Error: %@" xml:space="preserve">
<source>Please contact developers.
Error: %@</source>
@@ -3989,6 +4244,11 @@ Fehler: %@</target>
<target>Der Fingerabdruck des Zertifikats in der Serveradresse ist wahrscheinlich ungültig</target>
<note>server test error</note>
</trans-unit>
<trans-unit id="Post-quantum E2EE" xml:space="preserve">
<source>Post-quantum E2EE</source>
<target>Post-Quantum E2E-Verschlüsselung</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Preserve the last message draft, with attachments." xml:space="preserve">
<source>Preserve the last message draft, with attachments.</source>
<target>Den letzten Nachrichtenentwurf, auch mit seinen Anhängen, aufbewahren.</target>
@@ -4124,6 +4384,16 @@ Fehler: %@</target>
<target>Push-Benachrichtigungen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push server" xml:space="preserve">
<source>Push server</source>
<target>Push-Server</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Quantum resistant encryption" xml:space="preserve">
<source>Quantum resistant encryption</source>
<target>Quantum-resistente Verschlüsselung</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Rate the app" xml:space="preserve">
<source>Rate the app</source>
<target>Bewerten Sie die App</target>
@@ -4309,11 +4579,26 @@ Fehler: %@</target>
<target>Verbindungsanfrage wiederholen?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat download" xml:space="preserve">
<source>Repeat download</source>
<target>Herunterladen wiederholen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat import" xml:space="preserve">
<source>Repeat import</source>
<target>Import wiederholen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat join request?" xml:space="preserve">
<source>Repeat join request?</source>
<target>Verbindungsanfrage wiederholen?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat upload" xml:space="preserve">
<source>Repeat upload</source>
<target>Hochladen wiederholen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reply" xml:space="preserve">
<source>Reply</source>
<target>Antwort</target>
@@ -4414,6 +4699,11 @@ Fehler: %@</target>
<target>SMP-Server</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safer groups" xml:space="preserve">
<source>Safer groups</source>
<target>Sicherere Gruppen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Speichern</target>
@@ -4536,7 +4826,7 @@ Fehler: %@</target>
</trans-unit>
<trans-unit id="Search bar accepts invitation links." xml:space="preserve">
<source>Search bar accepts invitation links.</source>
<target>Von der Suchleiste werden Einladungslinks akzeptiert.</target>
<target>In der Suchleiste werden nun auch Einladungslinks akzeptiert.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Search or paste SimpleX link" xml:space="preserve">
@@ -4779,6 +5069,11 @@ Fehler: %@</target>
<target>Zugangscode einstellen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase" xml:space="preserve">
<source>Set passphrase</source>
<target>Passwort festlegen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase to export" xml:space="preserve">
<source>Set passphrase to export</source>
<target>Passwort für den Export festlegen</target>
@@ -4834,6 +5129,11 @@ Fehler: %@</target>
<target>Mit Kontakten teilen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show QR code" xml:space="preserve">
<source>Show QR code</source>
<target>QR-Code anzeigen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show calls in phone history" xml:space="preserve">
<source>Show calls in phone history</source>
<target>Anrufliste anzeigen</target>
@@ -4974,6 +5274,11 @@ Fehler: %@</target>
<target>Stoppen Sie SimpleX</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Stop chat" xml:space="preserve">
<source>Stop chat</source>
<target>Chat beenden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stop chat to enable database actions" xml:space="preserve">
<source>Stop chat to enable database actions</source>
<target>Chat beenden, um Datenbankaktionen zu erlauben</target>
@@ -5014,6 +5319,11 @@ Fehler: %@</target>
<target>Das Teilen der Adresse beenden?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stopping chat" xml:space="preserve">
<source>Stopping chat</source>
<target>Chat wird beendet</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Submit" xml:space="preserve">
<source>Submit</source>
<target>Bestätigen</target>
@@ -5261,6 +5571,16 @@ Dies kann passieren, wenn es einen Fehler gegeben hat oder die Verbindung kompro
<target>Diese Aktion kann nicht rückgängig gemacht werden! Ihr Profil und Ihre Kontakte, Nachrichten und Dateien gehen unwiderruflich verloren.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="This chat is protected by end-to-end encryption." xml:space="preserve">
<source>This chat is protected by end-to-end encryption.</source>
<target>Dieser Chat ist durch Ende-zu-Ende-Verschlüsselung geschützt.</target>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This chat is protected by quantum resistant end-to-end encryption." xml:space="preserve">
<source>This chat is protected by quantum resistant end-to-end encryption.</source>
<target>Dieser Chat ist durch Quantum-resistente Ende-zu-Ende-Verschlüsselung geschützt.</target>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This device name" xml:space="preserve">
<source>This device name</source>
<target>Dieser Gerätename</target>
@@ -5298,7 +5618,7 @@ Dies kann passieren, wenn es einen Fehler gegeben hat oder die Verbindung kompro
</trans-unit>
<trans-unit id="To ask any questions and to receive updates:" xml:space="preserve">
<source>To ask any questions and to receive updates:</source>
<target>Um Fragen zu stellen und Aktualisierungen zu erhalten:</target>
<target>Um Fragen zu stellen und aktuelle Informationen zu erhalten:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="To connect, your contact can scan QR code or use the link in the app." xml:space="preserve">
@@ -5555,11 +5875,21 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
<target>Aktualisieren und den Chat öffnen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload failed" xml:space="preserve">
<source>Upload failed</source>
<target>Hochladen fehlgeschlagen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload file" xml:space="preserve">
<source>Upload file</source>
<target>Datei hochladen</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Uploading archive" xml:space="preserve">
<source>Uploading archive</source>
<target>Archiv wird hochgeladen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use .onion hosts" xml:space="preserve">
<source>Use .onion hosts</source>
<target>Verwende .onion-Hosts</target>
@@ -5610,6 +5940,11 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
<target>Server nutzen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app while in the call." xml:space="preserve">
<source>Use the app while in the call.</source>
<target>Die App kann während eines Anrufs genutzt werden.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>Benutzerprofil</target>
@@ -5645,6 +5980,16 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
<target>Verbindungen überprüfen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify database passphrase" xml:space="preserve">
<source>Verify database passphrase</source>
<target>Überprüfen Sie das Datenbank-Passwort</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify passphrase" xml:space="preserve">
<source>Verify passphrase</source>
<target>Überprüfen Sie das Passwort</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify security code" xml:space="preserve">
<source>Verify security code</source>
<target>Sicherheitscode überprüfen</target>
@@ -5735,6 +6080,11 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
<target>Auf das Video warten</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: starting chat on multiple devices is not supported and will cause message delivery failures" xml:space="preserve">
<source>Warning: starting chat on multiple devices is not supported and will cause message delivery failures</source>
<target>Warnung: Das Starten des Chats auf mehreren Geräten wird nicht unterstützt und wird zu Fehlern bei der Nachrichtenübermittlung führen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: you may lose some data!" xml:space="preserve">
<source>Warning: you may lose some data!</source>
<target>Warnung: Sie könnten einige Daten verlieren!</target>
@@ -5755,6 +6105,11 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
<target>Begrüßungsmeldung</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Welcome message is too long" xml:space="preserve">
<source>Welcome message is too long</source>
<target>Die Begrüßungsmeldung ist zu lang</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="What's new" xml:space="preserve">
<source>What's new</source>
<target>Was ist neu</target>
@@ -5810,6 +6165,11 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s
<target>Profil</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You **must not** use the same database on two devices." xml:space="preserve">
<source>You **must not** use the same database on two devices.</source>
<target>Sie dürfen die selbe Datenbank **nicht** auf zwei Geräten nutzen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You accepted connection" xml:space="preserve">
<source>You accepted connection</source>
<target>Sie haben die Verbindung akzeptiert</target>
@@ -5897,6 +6257,11 @@ Verbindungsanfrage wiederholen?</target>
<target>Sie können diese später in den Datenschutz &amp; Sicherheits-Einstellungen der App aktivieren.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can give another try." xml:space="preserve">
<source>You can give another try.</source>
<target>Sie können es nochmal probieren.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can hide or mute a user profile - swipe it to the right." xml:space="preserve">
<source>You can hide or mute a user profile - swipe it to the right.</source>
<target>Sie können ein Benutzerprofil verbergen oder stummschalten - wischen Sie es nach rechts.</target>
@@ -6143,7 +6508,7 @@ Sie können diese Verbindung abbrechen und den Kontakt entfernen (und es später
</trans-unit>
<trans-unit id="Your contacts will remain connected." xml:space="preserve">
<source>Your contacts will remain connected.</source>
<target>Ihre Kontakte bleiben verbunden.</target>
<target>Ihre Kontakte bleiben weiterhin verbunden.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your current chat database will be DELETED and REPLACED with the imported one." xml:space="preserve">
@@ -6291,7 +6656,7 @@ SimpleX-Server können Ihr Profil nicht einsehen.</target>
<trans-unit id="blocked" xml:space="preserve">
<source>blocked</source>
<target>Blockiert</target>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="blocked %@" xml:space="preserve">
<source>blocked %@</source>
@@ -6301,7 +6666,7 @@ SimpleX-Server können Ihr Profil nicht einsehen.</target>
<trans-unit id="blocked by admin" xml:space="preserve">
<source>blocked by admin</source>
<target>wurde vom Administrator blockiert</target>
<note>blocked chat item</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="bold" xml:space="preserve">
<source>bold</source>
@@ -6425,7 +6790,7 @@ SimpleX-Server können Ihr Profil nicht einsehen.</target>
</trans-unit>
<trans-unit id="contact %@ changed to %@" xml:space="preserve">
<source>contact %1$@ changed to %2$@</source>
<target>Der Kontaktname %1$@ wurde auf %2$@ geändert</target>
<target>Der Kontaktname wurde von %1$@ auf %2$@ geändert</target>
<note>profile update event chat item</note>
</trans-unit>
<trans-unit id="contact has e2e encryption" xml:space="preserve">
@@ -6700,7 +7065,7 @@ SimpleX-Server können Ihr Profil nicht einsehen.</target>
</trans-unit>
<trans-unit id="member %@ changed to %@" xml:space="preserve">
<source>member %1$@ changed to %2$@</source>
<target>Der Mitgliedsname %1$@ wurde auf %2$@ geändert</target>
<target>Der Mitgliedsname von %1$@ wurde auf %2$@ geändert</target>
<note>profile update event chat item</note>
</trans-unit>
<trans-unit id="member connected" xml:space="preserve">
@@ -6731,7 +7096,7 @@ SimpleX-Server können Ihr Profil nicht einsehen.</target>
<trans-unit id="moderated by %@" xml:space="preserve">
<source>moderated by %@</source>
<target>Von %@ moderiert</target>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="months" xml:space="preserve">
<source>months</source>
@@ -6800,6 +7165,11 @@ SimpleX-Server können Ihr Profil nicht einsehen.</target>
<target>Peer-to-Peer</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve">
<source>quantum resistant e2e encryption</source>
<target>Quantum-resistente E2E-Verschlüsselung</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="received answer…" xml:space="preserve">
<source>received answer…</source>
<target>Antwort erhalten…</target>
@@ -6827,12 +7197,12 @@ SimpleX-Server können Ihr Profil nicht einsehen.</target>
</trans-unit>
<trans-unit id="removed contact address" xml:space="preserve">
<source>removed contact address</source>
<target>Kontaktadresse wurde entfernt</target>
<target>Die Kontaktadresse wurde entfernt</target>
<note>profile update event chat item</note>
</trans-unit>
<trans-unit id="removed profile picture" xml:space="preserve">
<source>removed profile picture</source>
<target>Profil-Bild wurde entfernt</target>
<target>Das Profil-Bild wurde entfernt</target>
<note>profile update event chat item</note>
</trans-unit>
<trans-unit id="removed you" xml:space="preserve">
@@ -6867,14 +7237,19 @@ SimpleX-Server können Ihr Profil nicht einsehen.</target>
</trans-unit>
<trans-unit id="set new contact address" xml:space="preserve">
<source>set new contact address</source>
<target>Neue Kontaktadresse wurde festgelegt</target>
<target>Es wurde eine neue Kontaktadresse festgelegt</target>
<note>profile update event chat item</note>
</trans-unit>
<trans-unit id="set new profile picture" xml:space="preserve">
<source>set new profile picture</source>
<target>Neues Profil-Bild wurde festgelegt</target>
<target>Es wurde ein neues Profil-Bild festgelegt</target>
<note>profile update event chat item</note>
</trans-unit>
<trans-unit id="standard end-to-end encryption" xml:space="preserve">
<source>standard end-to-end encryption</source>
<target>Standard-Ende-zu-Ende-Verschlüsselung</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="starting…" xml:space="preserve">
<source>starting…</source>
<target>Verbindung wird gestartet…</target>
@@ -107,6 +107,11 @@
<target>%@ connected</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ downloaded" xml:space="preserve">
<source>%@ downloaded</source>
<target>%@ downloaded</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ is connected!" xml:space="preserve">
<source>%@ is connected!</source>
<target>%@ is connected!</target>
@@ -127,6 +132,11 @@
<target>%@ servers</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ uploaded" xml:space="preserve">
<source>%@ uploaded</source>
<target>%@ uploaded</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ wants to connect!" xml:space="preserve">
<source>%@ wants to connect!</source>
<target>%@ wants to connect!</target>
@@ -342,6 +352,11 @@
<target>**Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." xml:space="preserve">
<source>**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.</source>
<target>**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: you will NOT be able to recover or change passphrase if you lose it." xml:space="preserve">
<source>**Please note**: you will NOT be able to recover or change passphrase if you lose it.</source>
<target>**Please note**: you will NOT be able to recover or change passphrase if you lose it.</target>
@@ -357,6 +372,11 @@
<target>**Warning**: Instant push notifications require passphrase saved in Keychain.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Warning**: the archive will be removed." xml:space="preserve">
<source>**Warning**: the archive will be removed.</source>
<target>**Warning**: the archive will be removed.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**e2e encrypted** audio call" xml:space="preserve">
<source>**e2e encrypted** audio call</source>
<target>**e2e encrypted** audio call</target>
@@ -613,6 +633,11 @@
<target>Address change will be aborted. Old receiving address will be used.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can block a member for all." xml:space="preserve">
<source>Admins can block a member for all.</source>
<target>Admins can block a member for all.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can create the links to join groups." xml:space="preserve">
<source>Admins can create the links to join groups.</source>
<target>Admins can create the links to join groups.</target>
@@ -668,6 +693,11 @@
<target>All your contacts will remain connected. Profile update will be sent to your contacts.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." xml:space="preserve">
<source>All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.</source>
<target>All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow" xml:space="preserve">
<source>Allow</source>
<target>Allow</target>
@@ -793,6 +823,11 @@
<target>App build: %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App data migration" xml:space="preserve">
<source>App data migration</source>
<target>App data migration</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App encrypts new local files (except videos)." xml:space="preserve">
<source>App encrypts new local files (except videos).</source>
<target>App encrypts new local files (except videos).</target>
@@ -828,6 +863,21 @@
<target>Appearance</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Apply" xml:space="preserve">
<source>Apply</source>
<target>Apply</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive and upload" xml:space="preserve">
<source>Archive and upload</source>
<target>Archive and upload</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<target>Archiving database</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Attach" xml:space="preserve">
<source>Attach</source>
<target>Attach</target>
@@ -1018,6 +1068,11 @@
<target>Cancel</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel migration" xml:space="preserve">
<source>Cancel migration</source>
<target>Cancel migration</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cannot access keychain to save database password" xml:space="preserve">
<source>Cannot access keychain to save database password</source>
<target>Cannot access keychain to save database password</target>
@@ -1119,6 +1174,11 @@
<target>Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<target>Chat migrated!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat preferences" xml:space="preserve">
<source>Chat preferences</source>
<target>Chat preferences</target>
@@ -1139,6 +1199,11 @@
<target>Chinese and Spanish interface</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose _Migrate from another device_ on the new device and scan QR code." xml:space="preserve">
<source>Choose _Migrate from another device_ on the new device and scan QR code.</source>
<target>Choose _Migrate from another device_ on the new device and scan QR code.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose file" xml:space="preserve">
<source>Choose file</source>
<target>Choose file</target>
@@ -1209,6 +1274,11 @@
<target>Confirm database upgrades</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm network settings" xml:space="preserve">
<source>Confirm network settings</source>
<target>Confirm network settings</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm new passphrase…" xml:space="preserve">
<source>Confirm new passphrase…</source>
<target>Confirm new passphrase…</target>
@@ -1219,6 +1289,16 @@
<target>Confirm password</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm that you remember database passphrase to migrate it." xml:space="preserve">
<source>Confirm that you remember database passphrase to migrate it.</source>
<target>Confirm that you remember database passphrase to migrate it.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm upload" xml:space="preserve">
<source>Confirm upload</source>
<target>Confirm upload</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect" xml:space="preserve">
<source>Connect</source>
<target>Connect</target>
@@ -1478,6 +1558,11 @@ This is your own one-time link!</target>
<target>Created on %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating archive link" xml:space="preserve">
<source>Creating archive link</source>
<target>Creating archive link</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating link…" xml:space="preserve">
<source>Creating link…</source>
<target>Creating link…</target>
@@ -1698,6 +1783,11 @@ This cannot be undone!</target>
<target>Delete database</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database from this device" xml:space="preserve">
<source>Delete database from this device</source>
<target>Delete database from this device</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete file" xml:space="preserve">
<source>Delete file</source>
<target>Delete file</target>
@@ -1988,11 +2078,26 @@ This cannot be undone!</target>
<target>Downgrade and open chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download failed" xml:space="preserve">
<source>Download failed</source>
<target>Download failed</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download file" xml:space="preserve">
<source>Download file</source>
<target>Download file</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Downloading archive" xml:space="preserve">
<source>Downloading archive</source>
<target>Downloading archive</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Downloading link details" xml:space="preserve">
<source>Downloading link details</source>
<target>Downloading link details</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Duplicate display name!" xml:space="preserve">
<source>Duplicate display name!</source>
<target>Duplicate display name!</target>
@@ -2048,6 +2153,11 @@ This cannot be undone!</target>
<target>Enable for all</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable in direct chats (BETA)!" xml:space="preserve">
<source>Enable in direct chats (BETA)!</source>
<target>Enable in direct chats (BETA)!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable instant notifications?" xml:space="preserve">
<source>Enable instant notifications?</source>
<target>Enable instant notifications?</target>
@@ -2163,6 +2273,11 @@ This cannot be undone!</target>
<target>Enter group name…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase" xml:space="preserve">
<source>Enter passphrase</source>
<target>Enter passphrase</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase…" xml:space="preserve">
<source>Enter passphrase…</source>
<target>Enter passphrase…</target>
@@ -2223,6 +2338,11 @@ This cannot be undone!</target>
<target>Error adding member(s)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error allowing contact PQ encryption" xml:space="preserve">
<source>Error allowing contact PQ encryption</source>
<target>Error allowing contact PQ encryption</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error changing address" xml:space="preserve">
<source>Error changing address</source>
<target>Error changing address</target>
@@ -2313,6 +2433,11 @@ This cannot be undone!</target>
<target>Error deleting user profile</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error downloading the archive" xml:space="preserve">
<source>Error downloading the archive</source>
<target>Error downloading the archive</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error enabling delivery receipts!" xml:space="preserve">
<source>Error enabling delivery receipts!</source>
<target>Error enabling delivery receipts!</target>
@@ -2388,6 +2513,11 @@ This cannot be undone!</target>
<target>Error saving passphrase to keychain</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error saving settings" xml:space="preserve">
<source>Error saving settings</source>
<target>Error saving settings</target>
<note>when migrating</note>
</trans-unit>
<trans-unit id="Error saving user password" xml:space="preserve">
<source>Error saving user password</source>
<target>Error saving user password</target>
@@ -2458,6 +2588,16 @@ This cannot be undone!</target>
<target>Error updating user privacy</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error uploading the archive" xml:space="preserve">
<source>Error uploading the archive</source>
<target>Error uploading the archive</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error verifying passphrase:" xml:space="preserve">
<source>Error verifying passphrase:</source>
<target>Error verifying passphrase:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error: " xml:space="preserve">
<source>Error: </source>
<target>Error: </target>
@@ -2508,6 +2648,11 @@ This cannot be undone!</target>
<target>Exported database archive.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exported file doesn't exist" xml:space="preserve">
<source>Exported file doesn't exist</source>
<target>Exported file doesn't exist</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exporting database archive…" xml:space="preserve">
<source>Exporting database archive…</source>
<target>Exporting database archive…</target>
@@ -2578,6 +2723,16 @@ This cannot be undone!</target>
<target>Filter unread and favorite chats.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration" xml:space="preserve">
<source>Finalize migration</source>
<target>Finalize migration</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration on another device." xml:space="preserve">
<source>Finalize migration on another device.</source>
<target>Finalize migration on another device.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finally, we have them! 🚀" xml:space="preserve">
<source>Finally, we have them! 🚀</source>
<target>Finally, we have them! 🚀</target>
@@ -2868,6 +3023,11 @@ This cannot be undone!</target>
<target>How to use your servers</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Hungarian interface" xml:space="preserve">
<source>Hungarian interface</source>
<target>Hungarian interface</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="ICE servers (one per line)" xml:space="preserve">
<source>ICE servers (one per line)</source>
<target>ICE servers (one per line)</target>
@@ -2933,6 +3093,16 @@ This cannot be undone!</target>
<target>Import database</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Import failed" xml:space="preserve">
<source>Import failed</source>
<target>Import failed</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Importing archive" xml:space="preserve">
<source>Importing archive</source>
<target>Importing archive</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Improved message delivery" xml:space="preserve">
<source>Improved message delivery</source>
<target>Improved message delivery</target>
@@ -2948,6 +3118,11 @@ This cannot be undone!</target>
<target>Improved server configuration</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In order to continue, chat should be stopped." xml:space="preserve">
<source>In order to continue, chat should be stopped.</source>
<target>In order to continue, chat should be stopped.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In reply to" xml:space="preserve">
<source>In reply to</source>
<target>In reply to</target>
@@ -3060,6 +3235,11 @@ This cannot be undone!</target>
<target>Invalid link</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid migration confirmation" xml:space="preserve">
<source>Invalid migration confirmation</source>
<target>Invalid migration confirmation</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid name!" xml:space="preserve">
<source>Invalid name!</source>
<target>Invalid name!</target>
@@ -3428,6 +3608,11 @@ This is your link for group %@!</target>
<target>Message text</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message too large" xml:space="preserve">
<source>Message too large</source>
<target>Message too large</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages" xml:space="preserve">
<source>Messages</source>
<target>Messages</target>
@@ -3443,11 +3628,56 @@ This is your link for group %@!</target>
<target>Messages from %@ will be shown!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<target>Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<target>Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate device" xml:space="preserve">
<source>Migrate device</source>
<target>Migrate device</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate from another device" xml:space="preserve">
<source>Migrate from another device</source>
<target>Migrate from another device</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate here" xml:space="preserve">
<source>Migrate here</source>
<target>Migrate here</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device" xml:space="preserve">
<source>Migrate to another device</source>
<target>Migrate to another device</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device via QR code." xml:space="preserve">
<source>Migrate to another device via QR code.</source>
<target>Migrate to another device via QR code.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating" xml:space="preserve">
<source>Migrating</source>
<target>Migrating</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating database archive…" xml:space="preserve">
<source>Migrating database archive…</source>
<target>Migrating database archive…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration complete" xml:space="preserve">
<source>Migration complete</source>
<target>Migration complete</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration error:" xml:space="preserve">
<source>Migration error:</source>
<target>Migration error:</target>
@@ -3807,6 +4037,11 @@ This is your link for group %@!</target>
<target>Open group</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Open migration to another device" xml:space="preserve">
<source>Open migration to another device</source>
<target>Open migration to another device</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Open user profiles" xml:space="preserve">
<source>Open user profiles</source>
<target>Open user profiles</target>
@@ -3822,11 +4057,21 @@ This is your link for group %@!</target>
<target>Opening app…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
<source>Or paste archive link</source>
<target>Or paste archive link</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or scan QR code" xml:space="preserve">
<source>Or scan QR code</source>
<target>Or scan QR code</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or securely share this file link" xml:space="preserve">
<source>Or securely share this file link</source>
<target>Or securely share this file link</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or show this code" xml:space="preserve">
<source>Or show this code</source>
<target>Or show this code</target>
@@ -3912,6 +4157,11 @@ This is your link for group %@!</target>
<target>Permanent decryption error</target>
<note>message decrypt error item</note>
</trans-unit>
<trans-unit id="Picture-in-picture calls" xml:space="preserve">
<source>Picture-in-picture calls</source>
<target>Picture-in-picture calls</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>Please ask your contact to enable sending voice messages.</target>
@@ -3932,6 +4182,11 @@ This is your link for group %@!</target>
<target>Please check yours and your contact preferences.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please confirm that network settings are correct for this device." xml:space="preserve">
<source>Please confirm that network settings are correct for this device.</source>
<target>Please confirm that network settings are correct for this device.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please contact developers.&#10;Error: %@" xml:space="preserve">
<source>Please contact developers.
Error: %@</source>
@@ -3989,6 +4244,11 @@ Error: %@</target>
<target>Possibly, certificate fingerprint in server address is incorrect</target>
<note>server test error</note>
</trans-unit>
<trans-unit id="Post-quantum E2EE" xml:space="preserve">
<source>Post-quantum E2EE</source>
<target>Post-quantum E2EE</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Preserve the last message draft, with attachments." xml:space="preserve">
<source>Preserve the last message draft, with attachments.</source>
<target>Preserve the last message draft, with attachments.</target>
@@ -4124,6 +4384,16 @@ Error: %@</target>
<target>Push notifications</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push server" xml:space="preserve">
<source>Push server</source>
<target>Push server</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Quantum resistant encryption" xml:space="preserve">
<source>Quantum resistant encryption</source>
<target>Quantum resistant encryption</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Rate the app" xml:space="preserve">
<source>Rate the app</source>
<target>Rate the app</target>
@@ -4309,11 +4579,26 @@ Error: %@</target>
<target>Repeat connection request?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat download" xml:space="preserve">
<source>Repeat download</source>
<target>Repeat download</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat import" xml:space="preserve">
<source>Repeat import</source>
<target>Repeat import</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat join request?" xml:space="preserve">
<source>Repeat join request?</source>
<target>Repeat join request?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat upload" xml:space="preserve">
<source>Repeat upload</source>
<target>Repeat upload</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reply" xml:space="preserve">
<source>Reply</source>
<target>Reply</target>
@@ -4414,6 +4699,11 @@ Error: %@</target>
<target>SMP servers</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safer groups" xml:space="preserve">
<source>Safer groups</source>
<target>Safer groups</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Save</target>
@@ -4779,6 +5069,11 @@ Error: %@</target>
<target>Set passcode</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase" xml:space="preserve">
<source>Set passphrase</source>
<target>Set passphrase</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase to export" xml:space="preserve">
<source>Set passphrase to export</source>
<target>Set passphrase to export</target>
@@ -4834,6 +5129,11 @@ Error: %@</target>
<target>Share with contacts</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show QR code" xml:space="preserve">
<source>Show QR code</source>
<target>Show QR code</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show calls in phone history" xml:space="preserve">
<source>Show calls in phone history</source>
<target>Show calls in phone history</target>
@@ -4974,6 +5274,11 @@ Error: %@</target>
<target>Stop SimpleX</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Stop chat" xml:space="preserve">
<source>Stop chat</source>
<target>Stop chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stop chat to enable database actions" xml:space="preserve">
<source>Stop chat to enable database actions</source>
<target>Stop chat to enable database actions</target>
@@ -5014,6 +5319,11 @@ Error: %@</target>
<target>Stop sharing address?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stopping chat" xml:space="preserve">
<source>Stopping chat</source>
<target>Stopping chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Submit" xml:space="preserve">
<source>Submit</source>
<target>Submit</target>
@@ -5261,6 +5571,16 @@ It can happen because of some bug or when the connection is compromised.</target
<target>This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="This chat is protected by end-to-end encryption." xml:space="preserve">
<source>This chat is protected by end-to-end encryption.</source>
<target>This chat is protected by end-to-end encryption.</target>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This chat is protected by quantum resistant end-to-end encryption." xml:space="preserve">
<source>This chat is protected by quantum resistant end-to-end encryption.</source>
<target>This chat is protected by quantum resistant end-to-end encryption.</target>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This device name" xml:space="preserve">
<source>This device name</source>
<target>This device name</target>
@@ -5555,11 +5875,21 @@ To connect, please ask your contact to create another connection link and check
<target>Upgrade and open chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload failed" xml:space="preserve">
<source>Upload failed</source>
<target>Upload failed</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload file" xml:space="preserve">
<source>Upload file</source>
<target>Upload file</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Uploading archive" xml:space="preserve">
<source>Uploading archive</source>
<target>Uploading archive</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use .onion hosts" xml:space="preserve">
<source>Use .onion hosts</source>
<target>Use .onion hosts</target>
@@ -5610,6 +5940,11 @@ To connect, please ask your contact to create another connection link and check
<target>Use server</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app while in the call." xml:space="preserve">
<source>Use the app while in the call.</source>
<target>Use the app while in the call.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>User profile</target>
@@ -5645,6 +5980,16 @@ To connect, please ask your contact to create another connection link and check
<target>Verify connections</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify database passphrase" xml:space="preserve">
<source>Verify database passphrase</source>
<target>Verify database passphrase</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify passphrase" xml:space="preserve">
<source>Verify passphrase</source>
<target>Verify passphrase</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify security code" xml:space="preserve">
<source>Verify security code</source>
<target>Verify security code</target>
@@ -5735,6 +6080,11 @@ To connect, please ask your contact to create another connection link and check
<target>Waiting for video</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: starting chat on multiple devices is not supported and will cause message delivery failures" xml:space="preserve">
<source>Warning: starting chat on multiple devices is not supported and will cause message delivery failures</source>
<target>Warning: starting chat on multiple devices is not supported and will cause message delivery failures</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: you may lose some data!" xml:space="preserve">
<source>Warning: you may lose some data!</source>
<target>Warning: you may lose some data!</target>
@@ -5755,6 +6105,11 @@ To connect, please ask your contact to create another connection link and check
<target>Welcome message</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Welcome message is too long" xml:space="preserve">
<source>Welcome message is too long</source>
<target>Welcome message is too long</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="What's new" xml:space="preserve">
<source>What's new</source>
<target>What's new</target>
@@ -5810,6 +6165,11 @@ To connect, please ask your contact to create another connection link and check
<target>You</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You **must not** use the same database on two devices." xml:space="preserve">
<source>You **must not** use the same database on two devices.</source>
<target>You **must not** use the same database on two devices.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You accepted connection" xml:space="preserve">
<source>You accepted connection</source>
<target>You accepted connection</target>
@@ -5897,6 +6257,11 @@ Repeat join request?</target>
<target>You can enable them later via app Privacy &amp; Security settings.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can give another try." xml:space="preserve">
<source>You can give another try.</source>
<target>You can give another try.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can hide or mute a user profile - swipe it to the right." xml:space="preserve">
<source>You can hide or mute a user profile - swipe it to the right.</source>
<target>You can hide or mute a user profile - swipe it to the right.</target>
@@ -6291,7 +6656,7 @@ SimpleX servers cannot see your profile.</target>
<trans-unit id="blocked" xml:space="preserve">
<source>blocked</source>
<target>blocked</target>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="blocked %@" xml:space="preserve">
<source>blocked %@</source>
@@ -6301,7 +6666,7 @@ SimpleX servers cannot see your profile.</target>
<trans-unit id="blocked by admin" xml:space="preserve">
<source>blocked by admin</source>
<target>blocked by admin</target>
<note>blocked chat item</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="bold" xml:space="preserve">
<source>bold</source>
@@ -6731,7 +7096,7 @@ SimpleX servers cannot see your profile.</target>
<trans-unit id="moderated by %@" xml:space="preserve">
<source>moderated by %@</source>
<target>moderated by %@</target>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="months" xml:space="preserve">
<source>months</source>
@@ -6800,6 +7165,11 @@ SimpleX servers cannot see your profile.</target>
<target>peer-to-peer</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve">
<source>quantum resistant e2e encryption</source>
<target>quantum resistant e2e encryption</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="received answer…" xml:space="preserve">
<source>received answer…</source>
<target>received answer…</target>
@@ -6875,6 +7245,11 @@ SimpleX servers cannot see your profile.</target>
<target>set new profile picture</target>
<note>profile update event chat item</note>
</trans-unit>
<trans-unit id="standard end-to-end encryption" xml:space="preserve">
<source>standard end-to-end encryption</source>
<target>standard end-to-end encryption</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="starting…" xml:space="preserve">
<source>starting…</source>
<target>starting…</target>
File diff suppressed because it is too large Load Diff
@@ -105,6 +105,10 @@
<source>%@ connected</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ downloaded" xml:space="preserve">
<source>%@ downloaded</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ is connected!" xml:space="preserve">
<source>%@ is connected!</source>
<target>%@ on yhdistetty!</target>
@@ -125,6 +129,10 @@
<target>%@ palvelimet</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ uploaded" xml:space="preserve">
<source>%@ uploaded</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ wants to connect!" xml:space="preserve">
<source>%@ wants to connect!</source>
<target>%@ haluaa muodostaa yhteyden!</target>
@@ -330,6 +338,10 @@
<target>**Yksityisin**: älä käytä SimpleX Chat -ilmoituspalvelinta, tarkista viestit ajoittain taustalla (riippuu siitä, kuinka usein käytät sovellusta).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." xml:space="preserve">
<source>**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: you will NOT be able to recover or change passphrase if you lose it." xml:space="preserve">
<source>**Please note**: you will NOT be able to recover or change passphrase if you lose it.</source>
<target>**Huomaa**: et voi palauttaa tai muuttaa tunnuslausetta, jos kadotat sen.</target>
@@ -345,6 +357,10 @@
<target>**Varoitus**: Välittömät push-ilmoitukset vaativat tunnuslauseen, joka on tallennettu Keychainiin.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Warning**: the archive will be removed." xml:space="preserve">
<source>**Warning**: the archive will be removed.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**e2e encrypted** audio call" xml:space="preserve">
<source>**e2e encrypted** audio call</source>
<target>**e2e-salattu** äänipuhelu</target>
@@ -593,6 +609,10 @@
<target>Osoitteenmuutos keskeytetään. Käytetään vanhaa vastaanotto-osoitetta.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can block a member for all." xml:space="preserve">
<source>Admins can block a member for all.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can create the links to join groups." xml:space="preserve">
<source>Admins can create the links to join groups.</source>
<target>Ylläpitäjät voivat luoda linkkejä ryhmiin liittymiseen.</target>
@@ -646,6 +666,10 @@
<target>Kaikki kontaktisi pysyvät yhteydessä. Profiilipäivitys lähetetään kontakteillesi.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." xml:space="preserve">
<source>All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow" xml:space="preserve">
<source>Allow</source>
<target>Salli</target>
@@ -769,6 +793,10 @@
<target>Sovellusversio: %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App data migration" xml:space="preserve">
<source>App data migration</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App encrypts new local files (except videos)." xml:space="preserve">
<source>App encrypts new local files (except videos).</source>
<note>No comment provided by engineer.</note>
@@ -803,6 +831,18 @@
<target>Ulkonäkö</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Apply" xml:space="preserve">
<source>Apply</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive and upload" xml:space="preserve">
<source>Archive and upload</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Attach" xml:space="preserve">
<source>Attach</source>
<target>Liitä</target>
@@ -982,6 +1022,10 @@
<target>Peruuta</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel migration" xml:space="preserve">
<source>Cancel migration</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cannot access keychain to save database password" xml:space="preserve">
<source>Cannot access keychain to save database password</source>
<target>Ei pääsyä avainnippuun tietokannan salasanan tallentamiseksi</target>
@@ -1082,6 +1126,10 @@
<source>Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat preferences" xml:space="preserve">
<source>Chat preferences</source>
<target>Chat-asetukset</target>
@@ -1102,6 +1150,10 @@
<target>Kiinalainen ja espanjalainen käyttöliittymä</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose _Migrate from another device_ on the new device and scan QR code." xml:space="preserve">
<source>Choose _Migrate from another device_ on the new device and scan QR code.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose file" xml:space="preserve">
<source>Choose file</source>
<target>Valitse tiedosto</target>
@@ -1171,6 +1223,10 @@
<target>Vahvista tietokannan päivitykset</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm network settings" xml:space="preserve">
<source>Confirm network settings</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm new passphrase…" xml:space="preserve">
<source>Confirm new passphrase…</source>
<target>Vahvista uusi tunnuslause…</target>
@@ -1181,6 +1237,14 @@
<target>Vahvista salasana</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm that you remember database passphrase to migrate it." xml:space="preserve">
<source>Confirm that you remember database passphrase to migrate it.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm upload" xml:space="preserve">
<source>Confirm upload</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect" xml:space="preserve">
<source>Connect</source>
<target>Yhdistä</target>
@@ -1421,6 +1485,10 @@ This is your own one-time link!</source>
<target>Luotu %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating archive link" xml:space="preserve">
<source>Creating archive link</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating link…" xml:space="preserve">
<source>Creating link…</source>
<note>No comment provided by engineer.</note>
@@ -1636,6 +1704,10 @@ This cannot be undone!</source>
<target>Poista tietokanta</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database from this device" xml:space="preserve">
<source>Delete database from this device</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete file" xml:space="preserve">
<source>Delete file</source>
<target>Poista tiedosto</target>
@@ -1920,11 +1992,23 @@ This cannot be undone!</source>
<target>Alenna ja avaa keskustelu</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download failed" xml:space="preserve">
<source>Download failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download file" xml:space="preserve">
<source>Download file</source>
<target>Lataa tiedosto</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Downloading archive" xml:space="preserve">
<source>Downloading archive</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Downloading link details" xml:space="preserve">
<source>Downloading link details</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Duplicate display name!" xml:space="preserve">
<source>Duplicate display name!</source>
<target>Päällekkäinen näyttönimi!</target>
@@ -1979,6 +2063,10 @@ This cannot be undone!</source>
<target>Salli kaikille</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable in direct chats (BETA)!" xml:space="preserve">
<source>Enable in direct chats (BETA)!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable instant notifications?" xml:space="preserve">
<source>Enable instant notifications?</source>
<target>Salli välittömät ilmoitukset?</target>
@@ -2089,6 +2177,10 @@ This cannot be undone!</source>
<source>Enter group name…</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase" xml:space="preserve">
<source>Enter passphrase</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase…" xml:space="preserve">
<source>Enter passphrase…</source>
<target>Syötä tunnuslause…</target>
@@ -2147,6 +2239,10 @@ This cannot be undone!</source>
<target>Virhe lisättäessä jäseniä</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error allowing contact PQ encryption" xml:space="preserve">
<source>Error allowing contact PQ encryption</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error changing address" xml:space="preserve">
<source>Error changing address</source>
<target>Virhe osoitteenvaihdossa</target>
@@ -2235,6 +2331,10 @@ This cannot be undone!</source>
<target>Virhe käyttäjäprofiilin poistamisessa</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error downloading the archive" xml:space="preserve">
<source>Error downloading the archive</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error enabling delivery receipts!" xml:space="preserve">
<source>Error enabling delivery receipts!</source>
<target>Virhe toimituskuittauksien sallimisessa!</target>
@@ -2309,6 +2409,10 @@ This cannot be undone!</source>
<target>Virhe tunnuslauseen tallentamisessa avainnippuun</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error saving settings" xml:space="preserve">
<source>Error saving settings</source>
<note>when migrating</note>
</trans-unit>
<trans-unit id="Error saving user password" xml:space="preserve">
<source>Error saving user password</source>
<target>Virhe käyttäjän salasanan tallentamisessa</target>
@@ -2377,6 +2481,14 @@ This cannot be undone!</source>
<target>Virhe päivitettäessä käyttäjän tietosuojaa</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error uploading the archive" xml:space="preserve">
<source>Error uploading the archive</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error verifying passphrase:" xml:space="preserve">
<source>Error verifying passphrase:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error: " xml:space="preserve">
<source>Error: </source>
<target>Virhe: </target>
@@ -2426,6 +2538,10 @@ This cannot be undone!</source>
<target>Viety tietokanta-arkisto.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exported file doesn't exist" xml:space="preserve">
<source>Exported file doesn't exist</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exporting database archive…" xml:space="preserve">
<source>Exporting database archive…</source>
<target>Tietokanta-arkiston vienti…</target>
@@ -2495,6 +2611,14 @@ This cannot be undone!</source>
<target>Suodata lukemattomia- ja suosikkikeskusteluja.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration" xml:space="preserve">
<source>Finalize migration</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration on another device." xml:space="preserve">
<source>Finalize migration on another device.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finally, we have them! 🚀" xml:space="preserve">
<source>Finally, we have them! 🚀</source>
<target>Vihdoinkin meillä! 🚀</target>
@@ -2780,6 +2904,10 @@ This cannot be undone!</source>
<target>Miten käytät palvelimiasi</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Hungarian interface" xml:space="preserve">
<source>Hungarian interface</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="ICE servers (one per line)" xml:space="preserve">
<source>ICE servers (one per line)</source>
<target>ICE-palvelimet (yksi per rivi)</target>
@@ -2845,6 +2973,14 @@ This cannot be undone!</source>
<target>Tuo tietokanta</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Import failed" xml:space="preserve">
<source>Import failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Importing archive" xml:space="preserve">
<source>Importing archive</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Improved message delivery" xml:space="preserve">
<source>Improved message delivery</source>
<note>No comment provided by engineer.</note>
@@ -2859,6 +2995,10 @@ This cannot be undone!</source>
<target>Parannettu palvelimen kokoonpano</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In order to continue, chat should be stopped." xml:space="preserve">
<source>In order to continue, chat should be stopped.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In reply to" xml:space="preserve">
<source>In reply to</source>
<target>Vastauksena</target>
@@ -2966,6 +3106,10 @@ This cannot be undone!</source>
<source>Invalid link</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid migration confirmation" xml:space="preserve">
<source>Invalid migration confirmation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid name!" xml:space="preserve">
<source>Invalid name!</source>
<note>No comment provided by engineer.</note>
@@ -3321,6 +3465,10 @@ This is your link for group %@!</source>
<target>Viestin teksti</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message too large" xml:space="preserve">
<source>Message too large</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages" xml:space="preserve">
<source>Messages</source>
<target>Viestit</target>
@@ -3335,11 +3483,47 @@ This is your link for group %@!</source>
<source>Messages from %@ will be shown!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate device" xml:space="preserve">
<source>Migrate device</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate from another device" xml:space="preserve">
<source>Migrate from another device</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate here" xml:space="preserve">
<source>Migrate here</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device" xml:space="preserve">
<source>Migrate to another device</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device via QR code." xml:space="preserve">
<source>Migrate to another device via QR code.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating" xml:space="preserve">
<source>Migrating</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating database archive…" xml:space="preserve">
<source>Migrating database archive…</source>
<target>Siirretään tietokannan arkistoa…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration complete" xml:space="preserve">
<source>Migration complete</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration error:" xml:space="preserve">
<source>Migration error:</source>
<target>Siirtovirhe:</target>
@@ -3693,6 +3877,10 @@ This is your link for group %@!</source>
<source>Open group</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Open migration to another device" xml:space="preserve">
<source>Open migration to another device</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Open user profiles" xml:space="preserve">
<source>Open user profiles</source>
<target>Avaa käyttäjäprofiilit</target>
@@ -3707,10 +3895,18 @@ This is your link for group %@!</source>
<source>Opening app…</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
<source>Or paste archive link</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or scan QR code" xml:space="preserve">
<source>Or scan QR code</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or securely share this file link" xml:space="preserve">
<source>Or securely share this file link</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or show this code" xml:space="preserve">
<source>Or show this code</source>
<note>No comment provided by engineer.</note>
@@ -3791,6 +3987,10 @@ This is your link for group %@!</source>
<target>Pysyvä salauksen purkuvirhe</target>
<note>message decrypt error item</note>
</trans-unit>
<trans-unit id="Picture-in-picture calls" xml:space="preserve">
<source>Picture-in-picture calls</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>Pyydä kontaktiasi sallimaan ääniviestien lähettäminen.</target>
@@ -3811,6 +4011,10 @@ This is your link for group %@!</source>
<target>Tarkista omasi ja kontaktin asetukset.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please confirm that network settings are correct for this device." xml:space="preserve">
<source>Please confirm that network settings are correct for this device.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please contact developers.&#10;Error: %@" xml:space="preserve">
<source>Please contact developers.
Error: %@</source>
@@ -3866,6 +4070,10 @@ Error: %@</source>
<target>Palvelimen osoitteen varmenteen sormenjälki on mahdollisesti virheellinen</target>
<note>server test error</note>
</trans-unit>
<trans-unit id="Post-quantum E2EE" xml:space="preserve">
<source>Post-quantum E2EE</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Preserve the last message draft, with attachments." xml:space="preserve">
<source>Preserve the last message draft, with attachments.</source>
<target>Säilytä viimeinen viestiluonnos liitteineen.</target>
@@ -3998,6 +4206,14 @@ Error: %@</source>
<target>Push-ilmoitukset</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push server" xml:space="preserve">
<source>Push server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Quantum resistant encryption" xml:space="preserve">
<source>Quantum resistant encryption</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Rate the app" xml:space="preserve">
<source>Rate the app</source>
<target>Arvioi sovellus</target>
@@ -4180,10 +4396,22 @@ Error: %@</source>
<source>Repeat connection request?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat download" xml:space="preserve">
<source>Repeat download</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat import" xml:space="preserve">
<source>Repeat import</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat join request?" xml:space="preserve">
<source>Repeat join request?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat upload" xml:space="preserve">
<source>Repeat upload</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reply" xml:space="preserve">
<source>Reply</source>
<target>Vastaa</target>
@@ -4283,6 +4511,10 @@ Error: %@</source>
<target>SMP-palvelimet</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safer groups" xml:space="preserve">
<source>Safer groups</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Tallenna</target>
@@ -4641,6 +4873,10 @@ Error: %@</source>
<target>Aseta pääsykoodi</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase" xml:space="preserve">
<source>Set passphrase</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase to export" xml:space="preserve">
<source>Set passphrase to export</source>
<target>Aseta tunnuslause vientiä varten</target>
@@ -4695,6 +4931,10 @@ Error: %@</source>
<target>Jaa kontaktien kanssa</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show QR code" xml:space="preserve">
<source>Show QR code</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show calls in phone history" xml:space="preserve">
<source>Show calls in phone history</source>
<target>Näytä puhelut puhelinhistoriassa</target>
@@ -4833,6 +5073,10 @@ Error: %@</source>
<target>Lopeta SimpleX</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Stop chat" xml:space="preserve">
<source>Stop chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stop chat to enable database actions" xml:space="preserve">
<source>Stop chat to enable database actions</source>
<target>Pysäytä keskustelu tietokantatoimien mahdollistamiseksi</target>
@@ -4873,6 +5117,10 @@ Error: %@</source>
<target>Lopeta osoitteen jakaminen?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stopping chat" xml:space="preserve">
<source>Stopping chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Submit" xml:space="preserve">
<source>Submit</source>
<target>Lähetä</target>
@@ -5115,6 +5363,14 @@ Tämä voi johtua jostain virheestä tai siitä, että yhteys on vaarantunut.</t
<target>Tätä toimintoa ei voi kumota - profiilisi, kontaktisi, viestisi ja tiedostosi poistuvat peruuttamattomasti.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="This chat is protected by end-to-end encryption." xml:space="preserve">
<source>This chat is protected by end-to-end encryption.</source>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This chat is protected by quantum resistant end-to-end encryption." xml:space="preserve">
<source>This chat is protected by quantum resistant end-to-end encryption.</source>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This device name" xml:space="preserve">
<source>This device name</source>
<note>No comment provided by engineer.</note>
@@ -5394,11 +5650,19 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja
<target>Päivitä ja avaa keskustelu</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload failed" xml:space="preserve">
<source>Upload failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload file" xml:space="preserve">
<source>Upload file</source>
<target>Lataa tiedosto</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Uploading archive" xml:space="preserve">
<source>Uploading archive</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use .onion hosts" xml:space="preserve">
<source>Use .onion hosts</source>
<target>Käytä .onion-isäntiä</target>
@@ -5447,6 +5711,10 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja
<target>Käytä palvelinta</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app while in the call." xml:space="preserve">
<source>Use the app while in the call.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>Käyttäjäprofiili</target>
@@ -5479,6 +5747,14 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja
<source>Verify connections</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify database passphrase" xml:space="preserve">
<source>Verify database passphrase</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify passphrase" xml:space="preserve">
<source>Verify passphrase</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify security code" xml:space="preserve">
<source>Verify security code</source>
<target>Tarkista turvakoodi</target>
@@ -5566,6 +5842,10 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja
<target>Odottaa videota</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: starting chat on multiple devices is not supported and will cause message delivery failures" xml:space="preserve">
<source>Warning: starting chat on multiple devices is not supported and will cause message delivery failures</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: you may lose some data!" xml:space="preserve">
<source>Warning: you may lose some data!</source>
<target>Varoitus: saatat menettää joitain tietoja!</target>
@@ -5586,6 +5866,10 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja
<target>Tervetuloviesti</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Welcome message is too long" xml:space="preserve">
<source>Welcome message is too long</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="What's new" xml:space="preserve">
<source>What's new</source>
<target>Uusimmat</target>
@@ -5639,6 +5923,10 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja
<target>Sinä</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You **must not** use the same database on two devices." xml:space="preserve">
<source>You **must not** use the same database on two devices.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You accepted connection" xml:space="preserve">
<source>You accepted connection</source>
<target>Hyväksyit yhteyden</target>
@@ -5718,6 +6006,10 @@ Repeat join request?</source>
<target>Voit ottaa ne käyttöön myöhemmin sovelluksen Yksityisyys &amp; Turvallisuus -asetuksista.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can give another try." xml:space="preserve">
<source>You can give another try.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can hide or mute a user profile - swipe it to the right." xml:space="preserve">
<source>You can hide or mute a user profile - swipe it to the right.</source>
<target>Voit piilottaa tai mykistää käyttäjäprofiilin pyyhkäisemällä sitä oikealle.</target>
@@ -6101,7 +6393,7 @@ SimpleX-palvelimet eivät näe profiiliasi.</target>
</trans-unit>
<trans-unit id="blocked" xml:space="preserve">
<source>blocked</source>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="blocked %@" xml:space="preserve">
<source>blocked %@</source>
@@ -6109,7 +6401,7 @@ SimpleX-palvelimet eivät näe profiiliasi.</target>
</trans-unit>
<trans-unit id="blocked by admin" xml:space="preserve">
<source>blocked by admin</source>
<note>blocked chat item</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="bold" xml:space="preserve">
<source>bold</source>
@@ -6535,7 +6827,7 @@ SimpleX-palvelimet eivät näe profiiliasi.</target>
<trans-unit id="moderated by %@" xml:space="preserve">
<source>moderated by %@</source>
<target>%@ moderoi</target>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="months" xml:space="preserve">
<source>months</source>
@@ -6604,6 +6896,10 @@ SimpleX-palvelimet eivät näe profiiliasi.</target>
<target>vertais</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve">
<source>quantum resistant e2e encryption</source>
<note>chat item text</note>
</trans-unit>
<trans-unit id="received answer…" xml:space="preserve">
<source>received answer…</source>
<target>vastaus saatu…</target>
@@ -6674,6 +6970,10 @@ SimpleX-palvelimet eivät näe profiiliasi.</target>
<source>set new profile picture</source>
<note>profile update event chat item</note>
</trans-unit>
<trans-unit id="standard end-to-end encryption" xml:space="preserve">
<source>standard end-to-end encryption</source>
<note>chat item text</note>
</trans-unit>
<trans-unit id="starting…" xml:space="preserve">
<source>starting…</source>
<target>alkaa…</target>
@@ -107,6 +107,11 @@
<target>%@ connecté(e)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ downloaded" xml:space="preserve">
<source>%@ downloaded</source>
<target>%@ téléchargé</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ is connected!" xml:space="preserve">
<source>%@ is connected!</source>
<target>%@ est connecté·e !</target>
@@ -127,6 +132,11 @@
<target>Serveurs %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ uploaded" xml:space="preserve">
<source>%@ uploaded</source>
<target>%@ envoyé</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ wants to connect!" xml:space="preserve">
<source>%@ wants to connect!</source>
<target>%@ veut se connecter !</target>
@@ -219,6 +229,7 @@
</trans-unit>
<trans-unit id="%lld messages blocked by admin" xml:space="preserve">
<source>%lld messages blocked by admin</source>
<target>%lld messages bloqués par l'administrateur</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%lld messages marked deleted" xml:space="preserve">
@@ -341,6 +352,11 @@
<target>**Confidentiel** : ne pas utiliser le serveur de notifications SimpleX, vérification de nouveaux messages periodiquement en arrière plan (dépend de l'utilisation de l'app).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." xml:space="preserve">
<source>**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.</source>
<target>**Remarque**: l'utilisation de la même base de données sur deux appareils interrompt le déchiffrement des messages provenant de vos connexions, par mesure de sécurité.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: you will NOT be able to recover or change passphrase if you lose it." xml:space="preserve">
<source>**Please note**: you will NOT be able to recover or change passphrase if you lose it.</source>
<target>**Veuillez noter** : vous NE pourrez PAS récupérer ou modifier votre phrase secrète si vous la perdez.</target>
@@ -356,6 +372,11 @@
<target>**Avertissement** : les notifications push instantanées nécessitent une phrase secrète enregistrée dans la keychain.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Warning**: the archive will be removed." xml:space="preserve">
<source>**Warning**: the archive will be removed.</source>
<target>**Avertissement**: l'archive sera supprimée.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**e2e encrypted** audio call" xml:space="preserve">
<source>**e2e encrypted** audio call</source>
<target>appel audio **chiffré de bout en bout**</target>
@@ -612,6 +633,11 @@
<target>Le changement d'adresse sera annulé. L'ancienne adresse de réception sera utilisée.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can block a member for all." xml:space="preserve">
<source>Admins can block a member for all.</source>
<target>Les admins peuvent bloquer un membre pour tous.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can create the links to join groups." xml:space="preserve">
<source>Admins can create the links to join groups.</source>
<target>Les admins peuvent créer les liens qui permettent de rejoindre les groupes.</target>
@@ -667,6 +693,11 @@
<target>Tous vos contacts resteront connectés. La mise à jour du profil sera envoyée à vos contacts.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." xml:space="preserve">
<source>All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.</source>
<target>Tous vos contacts, conversations et fichiers seront chiffrés en toute sécurité et transférés par morceaux vers les relais XFTP configurés.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow" xml:space="preserve">
<source>Allow</source>
<target>Autoriser</target>
@@ -792,6 +823,11 @@
<target>Build de l'app : %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App data migration" xml:space="preserve">
<source>App data migration</source>
<target>Transfert des données de l'application</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App encrypts new local files (except videos)." xml:space="preserve">
<source>App encrypts new local files (except videos).</source>
<target>L'application chiffre les nouveaux fichiers locaux (sauf les vidéos).</target>
@@ -827,6 +863,21 @@
<target>Apparence</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Apply" xml:space="preserve">
<source>Apply</source>
<target>Appliquer</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive and upload" xml:space="preserve">
<source>Archive and upload</source>
<target>Archiver et transférer</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<target>Archivage de la base de données</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Attach" xml:space="preserve">
<source>Attach</source>
<target>Attacher</target>
@@ -924,6 +975,7 @@
</trans-unit>
<trans-unit id="Block for all" xml:space="preserve">
<source>Block for all</source>
<target>Bloqué pour tous</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Block group members" xml:space="preserve">
@@ -938,6 +990,7 @@
</trans-unit>
<trans-unit id="Block member for all?" xml:space="preserve">
<source>Block member for all?</source>
<target>Bloquer le membre pour tous?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Block member?" xml:space="preserve">
@@ -947,6 +1000,7 @@
</trans-unit>
<trans-unit id="Blocked by admin" xml:space="preserve">
<source>Blocked by admin</source>
<target>Bloqué par l'administrateur</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Both you and your contact can add message reactions." xml:space="preserve">
@@ -1014,6 +1068,11 @@
<target>Annuler</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel migration" xml:space="preserve">
<source>Cancel migration</source>
<target>Annuler le transfert</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cannot access keychain to save database password" xml:space="preserve">
<source>Cannot access keychain to save database password</source>
<target>Impossible d'accéder à la keychain pour enregistrer le mot de passe de la base de données</target>
@@ -1115,6 +1174,11 @@
<target>Le chat est arrêté. Si vous avez déjà utilisé cette base de données sur un autre appareil, vous devez la transférer à nouveau avant de démarrer le chat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<target>Messagerie transférée!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat preferences" xml:space="preserve">
<source>Chat preferences</source>
<target>Préférences de chat</target>
@@ -1135,6 +1199,11 @@
<target>Interface en chinois et en espagnol</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose _Migrate from another device_ on the new device and scan QR code." xml:space="preserve">
<source>Choose _Migrate from another device_ on the new device and scan QR code.</source>
<target>Choisissez _Transferer depuis un autre appareil_ sur le nouvel appareil et scannez le code QR.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose file" xml:space="preserve">
<source>Choose file</source>
<target>Choisir le fichier</target>
@@ -1205,6 +1274,11 @@
<target>Confirmer la mise à niveau de la base de données</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm network settings" xml:space="preserve">
<source>Confirm network settings</source>
<target>Confirmer les paramètres réseau</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm new passphrase…" xml:space="preserve">
<source>Confirm new passphrase…</source>
<target>Confirmer la nouvelle phrase secrète…</target>
@@ -1215,6 +1289,16 @@
<target>Confirmer le mot de passe</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm that you remember database passphrase to migrate it." xml:space="preserve">
<source>Confirm that you remember database passphrase to migrate it.</source>
<target>Confirmer que vous vous souvenez de la phrase secrète de la base de données pour la transférer.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm upload" xml:space="preserve">
<source>Confirm upload</source>
<target>Confirmer la transmission</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect" xml:space="preserve">
<source>Connect</source>
<target>Se connecter</target>
@@ -1411,7 +1495,7 @@ Il s'agit de votre propre lien unique !</target>
</trans-unit>
<trans-unit id="Create an address to let people connect with you." xml:space="preserve">
<source>Create an address to let people connect with you.</source>
<target>Créez une adresse pour permettre aux gens de vous contacter.</target>
<target>Vous pouvez créer une adresse pour permettre aux autres utilisateurs de vous contacter.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Create file" xml:space="preserve">
@@ -1474,6 +1558,11 @@ Il s'agit de votre propre lien unique !</target>
<target>Créé le %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating archive link" xml:space="preserve">
<source>Creating archive link</source>
<target>Création d'un lien d'archive</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating link…" xml:space="preserve">
<source>Creating link…</source>
<target>Création d'un lien…</target>
@@ -1694,6 +1783,11 @@ Cette opération ne peut être annulée !</target>
<target>Supprimer la base de données</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database from this device" xml:space="preserve">
<source>Delete database from this device</source>
<target>Supprimer la base de données de cet appareil</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete file" xml:space="preserve">
<source>Delete file</source>
<target>Supprimer le fichier</target>
@@ -1984,11 +2078,26 @@ Cette opération ne peut être annulée !</target>
<target>Rétrograder et ouvrir le chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download failed" xml:space="preserve">
<source>Download failed</source>
<target>Échec du téléchargement</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download file" xml:space="preserve">
<source>Download file</source>
<target>Télécharger le fichier</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Downloading archive" xml:space="preserve">
<source>Downloading archive</source>
<target>Téléchargement de l'archive</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Downloading link details" xml:space="preserve">
<source>Downloading link details</source>
<target>Téléchargement des détails du lien</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Duplicate display name!" xml:space="preserve">
<source>Duplicate display name!</source>
<target>Nom d'affichage en double !</target>
@@ -2044,6 +2153,11 @@ Cette opération ne peut être annulée !</target>
<target>Activer pour tous</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable in direct chats (BETA)!" xml:space="preserve">
<source>Enable in direct chats (BETA)!</source>
<target>Activer dans les conversations directes (BETA)!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable instant notifications?" xml:space="preserve">
<source>Enable instant notifications?</source>
<target>Activer les notifications instantanées?</target>
@@ -2159,6 +2273,11 @@ Cette opération ne peut être annulée !</target>
<target>Entrer un nom de groupe…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase" xml:space="preserve">
<source>Enter passphrase</source>
<target>Entrer la phrase secrète</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase…" xml:space="preserve">
<source>Enter passphrase…</source>
<target>Entrez la phrase secrète…</target>
@@ -2219,6 +2338,11 @@ Cette opération ne peut être annulée !</target>
<target>Erreur lors de l'ajout de membre·s</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error allowing contact PQ encryption" xml:space="preserve">
<source>Error allowing contact PQ encryption</source>
<target>Erreur lors de la négociation du chiffrement PQ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error changing address" xml:space="preserve">
<source>Error changing address</source>
<target>Erreur de changement d'adresse</target>
@@ -2309,6 +2433,11 @@ Cette opération ne peut être annulée !</target>
<target>Erreur lors de la suppression du profil utilisateur</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error downloading the archive" xml:space="preserve">
<source>Error downloading the archive</source>
<target>Erreur lors du téléchargement de l'archive</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error enabling delivery receipts!" xml:space="preserve">
<source>Error enabling delivery receipts!</source>
<target>Erreur lors de l'activation des accusés de réception!</target>
@@ -2384,6 +2513,11 @@ Cette opération ne peut être annulée !</target>
<target>Erreur lors de l'enregistrement de la phrase de passe dans la keychain</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error saving settings" xml:space="preserve">
<source>Error saving settings</source>
<target>Erreur lors de l'enregistrement des paramètres</target>
<note>when migrating</note>
</trans-unit>
<trans-unit id="Error saving user password" xml:space="preserve">
<source>Error saving user password</source>
<target>Erreur d'enregistrement du mot de passe de l'utilisateur</target>
@@ -2454,6 +2588,16 @@ Cette opération ne peut être annulée !</target>
<target>Erreur de mise à jour de la confidentialité de l'utilisateur</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error uploading the archive" xml:space="preserve">
<source>Error uploading the archive</source>
<target>Erreur lors de l'envoi de l'archive</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error verifying passphrase:" xml:space="preserve">
<source>Error verifying passphrase:</source>
<target>Erreur lors de la vérification de la phrase secrète:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error: " xml:space="preserve">
<source>Error: </source>
<target>Erreur : </target>
@@ -2486,7 +2630,7 @@ Cette opération ne peut être annulée !</target>
</trans-unit>
<trans-unit id="Expand" xml:space="preserve">
<source>Expand</source>
<target>Développer</target>
<target>Étendre</target>
<note>chat item action</note>
</trans-unit>
<trans-unit id="Export database" xml:space="preserve">
@@ -2504,6 +2648,11 @@ Cette opération ne peut être annulée !</target>
<target>Archive de la base de données exportée.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exported file doesn't exist" xml:space="preserve">
<source>Exported file doesn't exist</source>
<target>Le fichier exporté n'existe pas</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exporting database archive…" xml:space="preserve">
<source>Exporting database archive…</source>
<target>Exportation de l'archive de la base de données…</target>
@@ -2574,6 +2723,16 @@ Cette opération ne peut être annulée !</target>
<target>Filtrer les messages non lus et favoris.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration" xml:space="preserve">
<source>Finalize migration</source>
<target>Finaliser le transfert</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration on another device." xml:space="preserve">
<source>Finalize migration on another device.</source>
<target>Finalisez le transfert sur l'autre appareil.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finally, we have them! 🚀" xml:space="preserve">
<source>Finally, we have them! 🚀</source>
<target>Enfin, les voilà ! 🚀</target>
@@ -2864,6 +3023,11 @@ Cette opération ne peut être annulée !</target>
<target>Comment utiliser vos serveurs</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Hungarian interface" xml:space="preserve">
<source>Hungarian interface</source>
<target>Interface en hongrois</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="ICE servers (one per line)" xml:space="preserve">
<source>ICE servers (one per line)</source>
<target>Serveurs ICE (un par ligne)</target>
@@ -2929,6 +3093,16 @@ Cette opération ne peut être annulée !</target>
<target>Importer la base de données</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Import failed" xml:space="preserve">
<source>Import failed</source>
<target>Échec de l'importation</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Importing archive" xml:space="preserve">
<source>Importing archive</source>
<target>Importation de l'archive</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Improved message delivery" xml:space="preserve">
<source>Improved message delivery</source>
<target>Amélioration de la transmission des messages</target>
@@ -2944,6 +3118,11 @@ Cette opération ne peut être annulée !</target>
<target>Configuration de serveur améliorée</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In order to continue, chat should be stopped." xml:space="preserve">
<source>In order to continue, chat should be stopped.</source>
<target>Pour continuer, le chat doit être interrompu.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In reply to" xml:space="preserve">
<source>In reply to</source>
<target>En réponse à</target>
@@ -3056,6 +3235,11 @@ Cette opération ne peut être annulée !</target>
<target>Lien invalide</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid migration confirmation" xml:space="preserve">
<source>Invalid migration confirmation</source>
<target>Confirmation de migration invalide</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid name!" xml:space="preserve">
<source>Invalid name!</source>
<target>Nom invalide !</target>
@@ -3424,6 +3608,11 @@ Voici votre lien pour le groupe %@ !</target>
<target>Texte du message</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message too large" xml:space="preserve">
<source>Message too large</source>
<target>Message trop volumineux</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages" xml:space="preserve">
<source>Messages</source>
<target>Messages</target>
@@ -3439,11 +3628,56 @@ Voici votre lien pour le groupe %@ !</target>
<target>Les messages de %@ seront affichés !</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<target>Les messages, fichiers et appels sont protégés par un chiffrement **de bout en bout** avec une confidentialité persistante, une répudiation et une récupération en cas d'effraction.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<target>Les messages, fichiers et appels sont protégés par un chiffrement **e2e résistant post-quantique** avec une confidentialité persistante, une répudiation et une récupération en cas d'effraction.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate device" xml:space="preserve">
<source>Migrate device</source>
<target>Transférer l'appareil</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate from another device" xml:space="preserve">
<source>Migrate from another device</source>
<target>Transférer depuis un autre appareil</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate here" xml:space="preserve">
<source>Migrate here</source>
<target>Transférer ici</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device" xml:space="preserve">
<source>Migrate to another device</source>
<target>Transférer vers un autre appareil</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device via QR code." xml:space="preserve">
<source>Migrate to another device via QR code.</source>
<target>Transférer vers un autre appareil via un code QR.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating" xml:space="preserve">
<source>Migrating</source>
<target>Transfert</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating database archive…" xml:space="preserve">
<source>Migrating database archive…</source>
<target>Migration de l'archive de la base de données…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration complete" xml:space="preserve">
<source>Migration complete</source>
<target>Transfert terminé</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration error:" xml:space="preserve">
<source>Migration error:</source>
<target>Erreur de migration:</target>
@@ -3803,6 +4037,11 @@ Voici votre lien pour le groupe %@ !</target>
<target>Ouvrir le groupe</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Open migration to another device" xml:space="preserve">
<source>Open migration to another device</source>
<target>Ouvrir le transfert vers un autre appareil</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Open user profiles" xml:space="preserve">
<source>Open user profiles</source>
<target>Ouvrir les profils d'utilisateurs</target>
@@ -3818,11 +4057,21 @@ Voici votre lien pour le groupe %@ !</target>
<target>Ouverture de l'app…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
<source>Or paste archive link</source>
<target>Ou coller le lien de l'archive</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or scan QR code" xml:space="preserve">
<source>Or scan QR code</source>
<target>Ou scanner le code QR</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or securely share this file link" xml:space="preserve">
<source>Or securely share this file link</source>
<target>Ou partagez en toute sécurité le lien de ce fichier</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or show this code" xml:space="preserve">
<source>Or show this code</source>
<target>Ou présenter ce code</target>
@@ -3908,6 +4157,11 @@ Voici votre lien pour le groupe %@ !</target>
<target>Erreur de déchiffrement</target>
<note>message decrypt error item</note>
</trans-unit>
<trans-unit id="Picture-in-picture calls" xml:space="preserve">
<source>Picture-in-picture calls</source>
<target>Appels picture-in-picture</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>Veuillez demander à votre contact de permettre l'envoi de messages vocaux.</target>
@@ -3928,6 +4182,11 @@ Voici votre lien pour le groupe %@ !</target>
<target>Veuillez vérifier vos préférences ainsi que celles de votre contact.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please confirm that network settings are correct for this device." xml:space="preserve">
<source>Please confirm that network settings are correct for this device.</source>
<target>Veuillez confirmer que les paramètres réseau de cet appareil sont corrects.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please contact developers.&#10;Error: %@" xml:space="preserve">
<source>Please contact developers.
Error: %@</source>
@@ -3985,6 +4244,11 @@ Erreur: %@</target>
<target>Il est possible que l'empreinte du certificat dans l'adresse du serveur soit incorrecte</target>
<note>server test error</note>
</trans-unit>
<trans-unit id="Post-quantum E2EE" xml:space="preserve">
<source>Post-quantum E2EE</source>
<target>E2EE post-quantique</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Preserve the last message draft, with attachments." xml:space="preserve">
<source>Preserve the last message draft, with attachments.</source>
<target>Conserver le brouillon du dernier message, avec les pièces jointes.</target>
@@ -4120,6 +4384,16 @@ Erreur: %@</target>
<target>Notifications push</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push server" xml:space="preserve">
<source>Push server</source>
<target>Serveur Push</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Quantum resistant encryption" xml:space="preserve">
<source>Quantum resistant encryption</source>
<target>Chiffrement résistant post-quantique</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Rate the app" xml:space="preserve">
<source>Rate the app</source>
<target>Évaluer l'app</target>
@@ -4305,11 +4579,26 @@ Erreur: %@</target>
<target>Répéter la demande de connexion ?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat download" xml:space="preserve">
<source>Repeat download</source>
<target>Répéter le téléchargement</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat import" xml:space="preserve">
<source>Repeat import</source>
<target>Répéter l'importation</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat join request?" xml:space="preserve">
<source>Repeat join request?</source>
<target>Répéter la requête d'adhésion ?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat upload" xml:space="preserve">
<source>Repeat upload</source>
<target>Répéter l'envoi</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reply" xml:space="preserve">
<source>Reply</source>
<target>Répondre</target>
@@ -4410,6 +4699,11 @@ Erreur: %@</target>
<target>Serveurs SMP</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safer groups" xml:space="preserve">
<source>Safer groups</source>
<target>Groupes plus sûrs</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Enregistrer</target>
@@ -4775,6 +5069,11 @@ Erreur: %@</target>
<target>Définir le code d'accès</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase" xml:space="preserve">
<source>Set passphrase</source>
<target>Définir une phrase secrète</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase to export" xml:space="preserve">
<source>Set passphrase to export</source>
<target>Définir la phrase secrète pour l'export</target>
@@ -4830,6 +5129,11 @@ Erreur: %@</target>
<target>Partager avec vos contacts</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show QR code" xml:space="preserve">
<source>Show QR code</source>
<target>Afficher le code QR</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show calls in phone history" xml:space="preserve">
<source>Show calls in phone history</source>
<target>Afficher les appels dans l'historique du téléphone</target>
@@ -4847,7 +5151,7 @@ Erreur: %@</target>
</trans-unit>
<trans-unit id="Show preview" xml:space="preserve">
<source>Show preview</source>
<target>Montrer l'aperçu</target>
<target>Afficher l'aperçu</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show:" xml:space="preserve">
@@ -4970,6 +5274,11 @@ Erreur: %@</target>
<target>Arrêter SimpleX</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Stop chat" xml:space="preserve">
<source>Stop chat</source>
<target>Arrêter le chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stop chat to enable database actions" xml:space="preserve">
<source>Stop chat to enable database actions</source>
<target>Arrêter le chat pour permettre des actions sur la base de données</target>
@@ -5010,6 +5319,11 @@ Erreur: %@</target>
<target>Cesser le partage d'adresse ?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stopping chat" xml:space="preserve">
<source>Stopping chat</source>
<target>Arrêt du chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Submit" xml:space="preserve">
<source>Submit</source>
<target>Soumettre</target>
@@ -5257,6 +5571,16 @@ Cela peut se produire en raison d'un bug ou lorsque la connexion est compromise.
<target>Cette action ne peut être annulée - votre profil, vos contacts, vos messages et vos fichiers seront irréversiblement perdus.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="This chat is protected by end-to-end encryption." xml:space="preserve">
<source>This chat is protected by end-to-end encryption.</source>
<target>Cette discussion est protégée par un chiffrement de bout en bout.</target>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This chat is protected by quantum resistant end-to-end encryption." xml:space="preserve">
<source>This chat is protected by quantum resistant end-to-end encryption.</source>
<target>Cette discussion est protégée par un chiffrement de bout en bout résistant aux technologies quantiques.</target>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This device name" xml:space="preserve">
<source>This device name</source>
<target>Nom de cet appareil</target>
@@ -5396,6 +5720,7 @@ Vous serez invité à confirmer l'authentification avant que cette fonction ne s
</trans-unit>
<trans-unit id="Unblock for all" xml:space="preserve">
<source>Unblock for all</source>
<target>Débloquer pour tous</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Unblock member" xml:space="preserve">
@@ -5405,6 +5730,7 @@ Vous serez invité à confirmer l'authentification avant que cette fonction ne s
</trans-unit>
<trans-unit id="Unblock member for all?" xml:space="preserve">
<source>Unblock member for all?</source>
<target>Débloquer le membre pour tous?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Unblock member?" xml:space="preserve">
@@ -5549,11 +5875,21 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
<target>Mettre à niveau et ouvrir le chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload failed" xml:space="preserve">
<source>Upload failed</source>
<target>Échec de l'envoi</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload file" xml:space="preserve">
<source>Upload file</source>
<target>Transférer le fichier</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Uploading archive" xml:space="preserve">
<source>Uploading archive</source>
<target>Envoi de l'archive</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use .onion hosts" xml:space="preserve">
<source>Use .onion hosts</source>
<target>Utiliser les hôtes .onions</target>
@@ -5604,6 +5940,11 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
<target>Utiliser ce serveur</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app while in the call." xml:space="preserve">
<source>Use the app while in the call.</source>
<target>Utiliser l'application pendant l'appel.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>Profil d'utilisateur</target>
@@ -5616,7 +5957,7 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
</trans-unit>
<trans-unit id="Using SimpleX Chat servers." xml:space="preserve">
<source>Using SimpleX Chat servers.</source>
<target>Utilisation des serveurs SimpleX Chat.</target>
<target>Vous utilisez les serveurs SimpleX.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify code with desktop" xml:space="preserve">
@@ -5639,6 +5980,16 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
<target>Vérifier les connexions</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify database passphrase" xml:space="preserve">
<source>Verify database passphrase</source>
<target>Vérifier la phrase secrète de la base de données</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify passphrase" xml:space="preserve">
<source>Verify passphrase</source>
<target>Vérifier la phrase secrète</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify security code" xml:space="preserve">
<source>Verify security code</source>
<target>Vérifier le code de sécurité</target>
@@ -5729,6 +6080,11 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
<target>En attente de la vidéo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: starting chat on multiple devices is not supported and will cause message delivery failures" xml:space="preserve">
<source>Warning: starting chat on multiple devices is not supported and will cause message delivery failures</source>
<target>Attention: démarrer une session de chat sur plusieurs appareils n'est pas pris en charge et entraînera des dysfonctionnements au niveau de la transmission des messages</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: you may lose some data!" xml:space="preserve">
<source>Warning: you may lose some data!</source>
<target>Attention : vous risquez de perdre des données !</target>
@@ -5749,6 +6105,11 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
<target>Message de bienvenue</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Welcome message is too long" xml:space="preserve">
<source>Welcome message is too long</source>
<target>Le message de bienvenue est trop long</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="What's new" xml:space="preserve">
<source>What's new</source>
<target>Quoi de neuf ?</target>
@@ -5761,7 +6122,7 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
</trans-unit>
<trans-unit id="When people request to connect, you can accept or reject it." xml:space="preserve">
<source>When people request to connect, you can accept or reject it.</source>
<target>Lorsque des personnes demandent à se connecter, vous pouvez les accepter ou les refuser.</target>
<target>Vous pouvez accepter ou refuser les demandes de contacts.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="When you share an incognito profile with somebody, this profile will be used for the groups they invite you to." xml:space="preserve">
@@ -5804,6 +6165,11 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien
<target>Vous</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You **must not** use the same database on two devices." xml:space="preserve">
<source>You **must not** use the same database on two devices.</source>
<target>Vous **ne devez pas** utiliser la même base de données sur deux appareils.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You accepted connection" xml:space="preserve">
<source>You accepted connection</source>
<target>Vous avez accepté la connexion</target>
@@ -5891,6 +6257,11 @@ Répéter la demande d'adhésion ?</target>
<target>Vous pouvez les activer ultérieurement via les paramètres de Confidentialité et Sécurité de l'application.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can give another try." xml:space="preserve">
<source>You can give another try.</source>
<target>Vous pouvez faire un nouvel essai.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can hide or mute a user profile - swipe it to the right." xml:space="preserve">
<source>You can hide or mute a user profile - swipe it to the right.</source>
<target>Vous pouvez masquer ou mettre en sourdine un profil d'utilisateur - faites-le glisser vers la droite.</target>
@@ -5923,7 +6294,7 @@ Répéter la demande d'adhésion ?</target>
</trans-unit>
<trans-unit id="You can share your address as a link or QR code - anybody can connect to you." xml:space="preserve">
<source>You can share your address as a link or QR code - anybody can connect to you.</source>
<target>Vous pouvez partager votre adresse sous forme de lien ou de code QR - n'importe qui pourra se connecter à vous.</target>
<target>Vous pouvez partager votre adresse sous la forme d'un lien ou d'un code QR - tout le monde peut l'utiliser pour vous contacter.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can start chat via app Settings / Database or by restarting the app" xml:space="preserve">
@@ -6244,12 +6615,12 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.</target>
</trans-unit>
<trans-unit id="agreeing encryption for %@…" xml:space="preserve">
<source>agreeing encryption for %@…</source>
<target>accord sur le chiffrement pour %@…</target>
<target>négociation du chiffrement avec %@…</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="agreeing encryption…" xml:space="preserve">
<source>agreeing encryption…</source>
<target>accord sur le chiffrement…</target>
<target>négociation du chiffrement…</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="always" xml:space="preserve">
@@ -6285,15 +6656,17 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.</target>
<trans-unit id="blocked" xml:space="preserve">
<source>blocked</source>
<target>blocké</target>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="blocked %@" xml:space="preserve">
<source>blocked %@</source>
<target>%@ bloqué</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="blocked by admin" xml:space="preserve">
<source>blocked by admin</source>
<note>blocked chat item</note>
<target>bloqué par l'administrateur</target>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="bold" xml:space="preserve">
<source>bold</source>
@@ -6322,7 +6695,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.</target>
</trans-unit>
<trans-unit id="changed address for you" xml:space="preserve">
<source>changed address for you</source>
<target>adresse modifiée pour vous</target>
<target>changement de l'adresse du contact</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="changed role of %@ to %@" xml:space="preserve">
@@ -6723,7 +7096,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.</target>
<trans-unit id="moderated by %@" xml:space="preserve">
<source>moderated by %@</source>
<target>modéré par %@</target>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="months" xml:space="preserve">
<source>months</source>
@@ -6792,6 +7165,11 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.</target>
<target>pair-à-pair</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve">
<source>quantum resistant e2e encryption</source>
<target>chiffrement e2e résistant post-quantique</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="received answer…" xml:space="preserve">
<source>received answer…</source>
<target>réponse reçu…</target>
@@ -6859,14 +7237,19 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.</target>
</trans-unit>
<trans-unit id="set new contact address" xml:space="preserve">
<source>set new contact address</source>
<target>définir une nouvelle adresse de contact</target>
<target>a changé d'adresse de contact</target>
<note>profile update event chat item</note>
</trans-unit>
<trans-unit id="set new profile picture" xml:space="preserve">
<source>set new profile picture</source>
<target>définir une nouvelle image de profil</target>
<target>a changé d'image de profil</target>
<note>profile update event chat item</note>
</trans-unit>
<trans-unit id="standard end-to-end encryption" xml:space="preserve">
<source>standard end-to-end encryption</source>
<target>chiffrement de bout en bout standard</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="starting…" xml:space="preserve">
<source>starting…</source>
<target>lancement…</target>
@@ -6884,6 +7267,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.</target>
</trans-unit>
<trans-unit id="unblocked %@" xml:space="preserve">
<source>unblocked %@</source>
<target>%@ débloqué</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="unknown" xml:space="preserve">
@@ -6978,6 +7362,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.</target>
</trans-unit>
<trans-unit id="you blocked %@" xml:space="preserve">
<source>you blocked %@</source>
<target>vous avez bloqué %@</target>
<note>snd group event chat item</note>
</trans-unit>
<trans-unit id="you changed address" xml:space="preserve">
@@ -7022,6 +7407,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil.</target>
</trans-unit>
<trans-unit id="you unblocked %@" xml:space="preserve">
<source>you unblocked %@</source>
<target>vous avez débloqué %@</target>
<note>snd group event chat item</note>
</trans-unit>
<trans-unit id="you: " xml:space="preserve">
@@ -5311,6 +5311,11 @@ SimpleX servers cannot see your profile.</source>
<target state="translated">ללא היסטוריה</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ and %@" xml:space="preserve" approved="no">
<source>%@ and %@</source>
<target state="translated">%@ ו-%@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
</body>
</file>
<file original="en.lproj/SimpleX--iOS--InfoPlist.strings" source-language="en" target-language="he" datatype="plaintext">
@@ -0,0 +1,15 @@
{
"colors" : [
{
"idiom" : "universal",
"locale" : "hu"
}
],
"properties" : {
"localizable" : true
},
"info" : {
"version" : 1,
"author" : "xcode"
}
}
@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,23 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"red" : "0.000",
"alpha" : "1.000",
"blue" : "1.000",
"green" : "0.533"
}
},
"idiom" : "universal"
}
],
"properties" : {
"localizable" : true
},
"info" : {
"version" : 1,
"author" : "xcode"
}
}
@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}
@@ -0,0 +1,6 @@
/* Bundle display name */
"CFBundleDisplayName" = "SimpleX NSE";
/* Bundle name */
"CFBundleName" = "SimpleX NSE";
/* Copyright (human-readable) */
"NSHumanReadableCopyright" = "Copyright © 2022 SimpleX Chat. All rights reserved.";
@@ -0,0 +1,30 @@
/* No comment provided by engineer. */
"_italic_" = "\\_italic_";
/* No comment provided by engineer. */
"**Add new contact**: to create your one-time QR Code for your contact." = "**Add new contact**: to create your one-time QR Code or link for your contact.";
/* No comment provided by engineer. */
"*bold*" = "\\*bold*";
/* No comment provided by engineer. */
"`a + b`" = "\\`a + b`";
/* No comment provided by engineer. */
"~strike~" = "\\~strike~";
/* call status */
"connecting call" = "connecting call…";
/* No comment provided by engineer. */
"Connecting server…" = "Connecting to server…";
/* No comment provided by engineer. */
"Connecting server… (error: %@)" = "Connecting to server… (error: %@)";
/* rcv group event chat item */
"member connected" = "connected";
/* No comment provided by engineer. */
"No group!" = "Group not found!";
@@ -0,0 +1,12 @@
/* Bundle name */
"CFBundleName" = "SimpleX";
/* Privacy - Camera Usage Description */
"NSCameraUsageDescription" = "SimpleX needs camera access to scan QR codes to connect to other users and for video calls.";
/* Privacy - Face ID Usage Description */
"NSFaceIDUsageDescription" = "SimpleX uses Face ID for local authentication";
/* Privacy - Local Network Usage Description */
"NSLocalNetworkUsageDescription" = "SimpleX uses local network access to allow using user chat profile via desktop app on the same network.";
/* Privacy - Microphone Usage Description */
"NSMicrophoneUsageDescription" = "SimpleX needs microphone access for audio and video calls, and to record voice messages.";
/* Privacy - Photo Library Additions Usage Description */
"NSPhotoLibraryAddUsageDescription" = "SimpleX needs access to Photo Library for saving captured and received media";
@@ -0,0 +1,12 @@
{
"developmentRegion" : "en",
"project" : "SimpleX.xcodeproj",
"targetLocale" : "hu",
"toolInfo" : {
"toolBuildNumber" : "15A240d",
"toolID" : "com.apple.dt.xcode",
"toolName" : "Xcode",
"toolVersion" : "15.0"
},
"version" : "1.0"
}
@@ -107,6 +107,11 @@
<target>%@ si è connesso/a</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ downloaded" xml:space="preserve">
<source>%@ downloaded</source>
<target>%@ scaricati</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ is connected!" xml:space="preserve">
<source>%@ is connected!</source>
<target>%@ è connesso/a!</target>
@@ -127,6 +132,11 @@
<target>Server %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ uploaded" xml:space="preserve">
<source>%@ uploaded</source>
<target>%@ caricati</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ wants to connect!" xml:space="preserve">
<source>%@ wants to connect!</source>
<target>%@ si vuole connettere!</target>
@@ -342,6 +352,11 @@
<target>**Il più privato**: non usare il server di notifica di SimpleX Chat, controlla i messaggi periodicamente in secondo piano (dipende da quanto spesso usi l'app).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." xml:space="preserve">
<source>**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.</source>
<target>**Nota bene**: usare lo stesso database su due dispositivi bloccherà la decifrazione dei messaggi dalle tue connessioni, come misura di sicurezza.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: you will NOT be able to recover or change passphrase if you lose it." xml:space="preserve">
<source>**Please note**: you will NOT be able to recover or change passphrase if you lose it.</source>
<target>**Nota bene**: NON potrai recuperare o cambiare la password se la perdi.</target>
@@ -357,6 +372,11 @@
<target>**Attenzione**: le notifiche push istantanee richiedono una password salvata nel portachiavi.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Warning**: the archive will be removed." xml:space="preserve">
<source>**Warning**: the archive will be removed.</source>
<target>**Attenzione**: l'archivio verrà rimosso.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**e2e encrypted** audio call" xml:space="preserve">
<source>**e2e encrypted** audio call</source>
<target>Chiamata **crittografata e2e**</target>
@@ -613,6 +633,11 @@
<target>Il cambio di indirizzo verrà interrotto. Verrà usato il vecchio indirizzo di ricezione.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can block a member for all." xml:space="preserve">
<source>Admins can block a member for all.</source>
<target>Gli amministratori possono bloccare un membro per tutti.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can create the links to join groups." xml:space="preserve">
<source>Admins can create the links to join groups.</source>
<target>Gli amministratori possono creare i link per entrare nei gruppi.</target>
@@ -668,6 +693,11 @@
<target>Tutti i tuoi contatti resteranno connessi. L'aggiornamento del profilo verrà inviato ai tuoi contatti.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." xml:space="preserve">
<source>All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.</source>
<target>Tutti i tuoi contatti, le conversazioni e i file verranno criptati in modo sicuro e caricati in blocchi sui relay XFTP configurati.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow" xml:space="preserve">
<source>Allow</source>
<target>Consenti</target>
@@ -793,6 +823,11 @@
<target>Build dell'app: %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App data migration" xml:space="preserve">
<source>App data migration</source>
<target>Migrazione dati dell'app</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App encrypts new local files (except videos)." xml:space="preserve">
<source>App encrypts new local files (except videos).</source>
<target>L'app cripta i nuovi file locali (eccetto i video).</target>
@@ -828,6 +863,21 @@
<target>Aspetto</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Apply" xml:space="preserve">
<source>Apply</source>
<target>Applica</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive and upload" xml:space="preserve">
<source>Archive and upload</source>
<target>Archivia e carica</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<target>Archiviazione del database</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Attach" xml:space="preserve">
<source>Attach</source>
<target>Allega</target>
@@ -1018,6 +1068,11 @@
<target>Annulla</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel migration" xml:space="preserve">
<source>Cancel migration</source>
<target>Annulla migrazione</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cannot access keychain to save database password" xml:space="preserve">
<source>Cannot access keychain to save database password</source>
<target>Impossibile accedere al portachiavi per salvare la password del database</target>
@@ -1119,6 +1174,11 @@
<target>La chat è ferma. Se hai già usato questo database su un altro dispositivo, dovresti trasferirlo prima di avviare la chat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<target>Chat migrata!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat preferences" xml:space="preserve">
<source>Chat preferences</source>
<target>Preferenze della chat</target>
@@ -1139,6 +1199,11 @@
<target>Interfaccia cinese e spagnola</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose _Migrate from another device_ on the new device and scan QR code." xml:space="preserve">
<source>Choose _Migrate from another device_ on the new device and scan QR code.</source>
<target>Scegli _Migra da un altro dispositivo_ sul nuovo dispositivo e scansione il codice QR.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose file" xml:space="preserve">
<source>Choose file</source>
<target>Scegli file</target>
@@ -1209,6 +1274,11 @@
<target>Conferma aggiornamenti database</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm network settings" xml:space="preserve">
<source>Confirm network settings</source>
<target>Conferma le impostazioni di rete</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm new passphrase…" xml:space="preserve">
<source>Confirm new passphrase…</source>
<target>Conferma nuova password…</target>
@@ -1219,6 +1289,16 @@
<target>Conferma password</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm that you remember database passphrase to migrate it." xml:space="preserve">
<source>Confirm that you remember database passphrase to migrate it.</source>
<target>Conferma che ricordi la password del database da migrare.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm upload" xml:space="preserve">
<source>Confirm upload</source>
<target>Conferma caricamento</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect" xml:space="preserve">
<source>Connect</source>
<target>Connetti</target>
@@ -1478,6 +1558,11 @@ Questo è il tuo link una tantum!</target>
<target>Creato il %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating archive link" xml:space="preserve">
<source>Creating archive link</source>
<target>Creazione link dell'archivio</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating link…" xml:space="preserve">
<source>Creating link…</source>
<target>Creazione link…</target>
@@ -1698,6 +1783,11 @@ Non è reversibile!</target>
<target>Elimina database</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database from this device" xml:space="preserve">
<source>Delete database from this device</source>
<target>Elimina il database da questo dispositivo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete file" xml:space="preserve">
<source>Delete file</source>
<target>Elimina file</target>
@@ -1988,11 +2078,26 @@ Non è reversibile!</target>
<target>Esegui downgrade e apri chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download failed" xml:space="preserve">
<source>Download failed</source>
<target>Scaricamento fallito</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download file" xml:space="preserve">
<source>Download file</source>
<target>Scarica file</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Downloading archive" xml:space="preserve">
<source>Downloading archive</source>
<target>Scaricamento archivio</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Downloading link details" xml:space="preserve">
<source>Downloading link details</source>
<target>Scaricamento dettagli del link</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Duplicate display name!" xml:space="preserve">
<source>Duplicate display name!</source>
<target>Nome da mostrare doppio!</target>
@@ -2048,6 +2153,11 @@ Non è reversibile!</target>
<target>Attiva per tutti</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable in direct chats (BETA)!" xml:space="preserve">
<source>Enable in direct chats (BETA)!</source>
<target>Attivala nelle chat dirette (BETA)!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable instant notifications?" xml:space="preserve">
<source>Enable instant notifications?</source>
<target>Attivare le notifiche istantanee?</target>
@@ -2163,6 +2273,11 @@ Non è reversibile!</target>
<target>Inserisci il nome del gruppo…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase" xml:space="preserve">
<source>Enter passphrase</source>
<target>Inserisci password</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase…" xml:space="preserve">
<source>Enter passphrase…</source>
<target>Inserisci la password…</target>
@@ -2223,6 +2338,11 @@ Non è reversibile!</target>
<target>Errore di aggiunta membro/i</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error allowing contact PQ encryption" xml:space="preserve">
<source>Error allowing contact PQ encryption</source>
<target>Errore nel consentire la crittografia PQ al contatto</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error changing address" xml:space="preserve">
<source>Error changing address</source>
<target>Errore nella modifica dell'indirizzo</target>
@@ -2313,6 +2433,11 @@ Non è reversibile!</target>
<target>Errore nell'eliminazione del profilo utente</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error downloading the archive" xml:space="preserve">
<source>Error downloading the archive</source>
<target>Errore di scaricamento dell'archivio</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error enabling delivery receipts!" xml:space="preserve">
<source>Error enabling delivery receipts!</source>
<target>Errore nell'attivazione delle ricevute di consegna!</target>
@@ -2388,6 +2513,11 @@ Non è reversibile!</target>
<target>Errore nel salvataggio della password nel portachiavi</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error saving settings" xml:space="preserve">
<source>Error saving settings</source>
<target>Errore di salvataggio delle impostazioni</target>
<note>when migrating</note>
</trans-unit>
<trans-unit id="Error saving user password" xml:space="preserve">
<source>Error saving user password</source>
<target>Errore nel salvataggio della password utente</target>
@@ -2458,6 +2588,16 @@ Non è reversibile!</target>
<target>Errore nell'aggiornamento della privacy dell'utente</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error uploading the archive" xml:space="preserve">
<source>Error uploading the archive</source>
<target>Errore di invio dell'archivio</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error verifying passphrase:" xml:space="preserve">
<source>Error verifying passphrase:</source>
<target>Errore di verifica della password:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error: " xml:space="preserve">
<source>Error: </source>
<target>Errore: </target>
@@ -2508,6 +2648,11 @@ Non è reversibile!</target>
<target>Archivio database esportato.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exported file doesn't exist" xml:space="preserve">
<source>Exported file doesn't exist</source>
<target>Il file esportato non esiste</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exporting database archive…" xml:space="preserve">
<source>Exporting database archive…</source>
<target>Esportazione archivio database…</target>
@@ -2578,6 +2723,16 @@ Non è reversibile!</target>
<target>Filtra le chat non lette e preferite.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration" xml:space="preserve">
<source>Finalize migration</source>
<target>Finalizza la migrazione</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration on another device." xml:space="preserve">
<source>Finalize migration on another device.</source>
<target>Finalizza la migrazione su un altro dispositivo.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finally, we have them! 🚀" xml:space="preserve">
<source>Finally, we have them! 🚀</source>
<target>Finalmente le abbiamo! 🚀</target>
@@ -2868,6 +3023,11 @@ Non è reversibile!</target>
<target>Come usare i tuoi server</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Hungarian interface" xml:space="preserve">
<source>Hungarian interface</source>
<target>Interfaccia in ungherese</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="ICE servers (one per line)" xml:space="preserve">
<source>ICE servers (one per line)</source>
<target>Server ICE (uno per riga)</target>
@@ -2933,6 +3093,16 @@ Non è reversibile!</target>
<target>Importa database</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Import failed" xml:space="preserve">
<source>Import failed</source>
<target>Importazione fallita</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Importing archive" xml:space="preserve">
<source>Importing archive</source>
<target>Importazione archivio</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Improved message delivery" xml:space="preserve">
<source>Improved message delivery</source>
<target>Consegna dei messaggi migliorata</target>
@@ -2948,6 +3118,11 @@ Non è reversibile!</target>
<target>Configurazione del server migliorata</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In order to continue, chat should be stopped." xml:space="preserve">
<source>In order to continue, chat should be stopped.</source>
<target>Per continuare, la chat deve essere fermata.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In reply to" xml:space="preserve">
<source>In reply to</source>
<target>In risposta a</target>
@@ -3060,6 +3235,11 @@ Non è reversibile!</target>
<target>Link non valido</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid migration confirmation" xml:space="preserve">
<source>Invalid migration confirmation</source>
<target>Conferma di migrazione non valida</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid name!" xml:space="preserve">
<source>Invalid name!</source>
<target>Nome non valido!</target>
@@ -3428,6 +3608,11 @@ Questo è il tuo link per il gruppo %@!</target>
<target>Testo del messaggio</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message too large" xml:space="preserve">
<source>Message too large</source>
<target>Messaggio troppo grande</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages" xml:space="preserve">
<source>Messages</source>
<target>Messaggi</target>
@@ -3443,11 +3628,56 @@ Questo è il tuo link per il gruppo %@!</target>
<target>I messaggi da %@ verranno mostrati!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<target>I messaggi, i file e le chiamate sono protetti da **crittografia end-to-end** con perfect forward secrecy, ripudio e recupero da intrusione.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<target>I messaggi, i file e le chiamate sono protetti da **crittografia e2e resistente alla quantistica** con perfect forward secrecy, ripudio e recupero da intrusione.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate device" xml:space="preserve">
<source>Migrate device</source>
<target>Migra dispositivo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate from another device" xml:space="preserve">
<source>Migrate from another device</source>
<target>Migra da un altro dispositivo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate here" xml:space="preserve">
<source>Migrate here</source>
<target>Migra qui</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device" xml:space="preserve">
<source>Migrate to another device</source>
<target>Migra ad un altro dispositivo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device via QR code." xml:space="preserve">
<source>Migrate to another device via QR code.</source>
<target>Migra ad un altro dispositivo via codice QR.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating" xml:space="preserve">
<source>Migrating</source>
<target>Migrazione</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating database archive…" xml:space="preserve">
<source>Migrating database archive…</source>
<target>Migrazione archivio del database…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration complete" xml:space="preserve">
<source>Migration complete</source>
<target>Migrazione completata</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration error:" xml:space="preserve">
<source>Migration error:</source>
<target>Errore di migrazione:</target>
@@ -3807,6 +4037,11 @@ Questo è il tuo link per il gruppo %@!</target>
<target>Apri gruppo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Open migration to another device" xml:space="preserve">
<source>Open migration to another device</source>
<target>Apri migrazione ad un altro dispositivo</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Open user profiles" xml:space="preserve">
<source>Open user profiles</source>
<target>Apri i profili utente</target>
@@ -3822,11 +4057,21 @@ Questo è il tuo link per il gruppo %@!</target>
<target>Apertura dell'app…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
<source>Or paste archive link</source>
<target>O incolla il link dell'archivio</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or scan QR code" xml:space="preserve">
<source>Or scan QR code</source>
<target>O scansiona il codice QR</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or securely share this file link" xml:space="preserve">
<source>Or securely share this file link</source>
<target>O condividi in modo sicuro questo link del file</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or show this code" xml:space="preserve">
<source>Or show this code</source>
<target>O mostra questo codice</target>
@@ -3912,6 +4157,11 @@ Questo è il tuo link per il gruppo %@!</target>
<target>Errore di decifrazione</target>
<note>message decrypt error item</note>
</trans-unit>
<trans-unit id="Picture-in-picture calls" xml:space="preserve">
<source>Picture-in-picture calls</source>
<target>Chiamate picture-in-picture</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>Chiedi al tuo contatto di attivare l'invio dei messaggi vocali.</target>
@@ -3932,6 +4182,11 @@ Questo è il tuo link per il gruppo %@!</target>
<target>Controlla le preferenze tue e del tuo contatto.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please confirm that network settings are correct for this device." xml:space="preserve">
<source>Please confirm that network settings are correct for this device.</source>
<target>Conferma che le impostazioni di rete sono corrette per questo dispositivo.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please contact developers.&#10;Error: %@" xml:space="preserve">
<source>Please contact developers.
Error: %@</source>
@@ -3989,6 +4244,11 @@ Errore: %@</target>
<target>Probabilmente l'impronta del certificato nell'indirizzo del server è sbagliata</target>
<note>server test error</note>
</trans-unit>
<trans-unit id="Post-quantum E2EE" xml:space="preserve">
<source>Post-quantum E2EE</source>
<target>E2EE post-quantistica</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Preserve the last message draft, with attachments." xml:space="preserve">
<source>Preserve the last message draft, with attachments.</source>
<target>Conserva la bozza dell'ultimo messaggio, con gli allegati.</target>
@@ -4124,6 +4384,16 @@ Errore: %@</target>
<target>Notifiche push</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push server" xml:space="preserve">
<source>Push server</source>
<target>Server push</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Quantum resistant encryption" xml:space="preserve">
<source>Quantum resistant encryption</source>
<target>Crittografia resistente alla quantistica</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Rate the app" xml:space="preserve">
<source>Rate the app</source>
<target>Valuta l'app</target>
@@ -4309,11 +4579,26 @@ Errore: %@</target>
<target>Ripetere la richiesta di connessione?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat download" xml:space="preserve">
<source>Repeat download</source>
<target>Ripeti scaricamento</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat import" xml:space="preserve">
<source>Repeat import</source>
<target>Ripeti importazione</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat join request?" xml:space="preserve">
<source>Repeat join request?</source>
<target>Ripetere la richiesta di ingresso?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat upload" xml:space="preserve">
<source>Repeat upload</source>
<target>Ripeti caricamento</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reply" xml:space="preserve">
<source>Reply</source>
<target>Rispondi</target>
@@ -4414,6 +4699,11 @@ Errore: %@</target>
<target>Server SMP</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safer groups" xml:space="preserve">
<source>Safer groups</source>
<target>Gruppi più sicuri</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Salva</target>
@@ -4779,6 +5069,11 @@ Errore: %@</target>
<target>Imposta codice</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase" xml:space="preserve">
<source>Set passphrase</source>
<target>Imposta password</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase to export" xml:space="preserve">
<source>Set passphrase to export</source>
<target>Imposta la password per esportare</target>
@@ -4834,6 +5129,11 @@ Errore: %@</target>
<target>Condividi con i contatti</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show QR code" xml:space="preserve">
<source>Show QR code</source>
<target>Mostra codice QR</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show calls in phone history" xml:space="preserve">
<source>Show calls in phone history</source>
<target>Mostra le chiamate nella cronologia del telefono</target>
@@ -4974,6 +5274,11 @@ Errore: %@</target>
<target>Ferma SimpleX</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Stop chat" xml:space="preserve">
<source>Stop chat</source>
<target>Ferma la chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stop chat to enable database actions" xml:space="preserve">
<source>Stop chat to enable database actions</source>
<target>Ferma la chat per attivare le azioni del database</target>
@@ -5014,6 +5319,11 @@ Errore: %@</target>
<target>Smettere di condividere l'indirizzo?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stopping chat" xml:space="preserve">
<source>Stopping chat</source>
<target>Arresto della chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Submit" xml:space="preserve">
<source>Submit</source>
<target>Invia</target>
@@ -5261,6 +5571,16 @@ Può accadere a causa di qualche bug o quando la connessione è compromessa.</ta
<target>Questa azione non può essere annullata: il tuo profilo, i contatti, i messaggi e i file andranno persi in modo irreversibile.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="This chat is protected by end-to-end encryption." xml:space="preserve">
<source>This chat is protected by end-to-end encryption.</source>
<target>Questa chat è protetta da crittografia end-to-end.</target>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This chat is protected by quantum resistant end-to-end encryption." xml:space="preserve">
<source>This chat is protected by quantum resistant end-to-end encryption.</source>
<target>Questa chat è protetta da crittografia end-to-end resistente alla quantistica.</target>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This device name" xml:space="preserve">
<source>This device name</source>
<target>Il nome di questo dispositivo</target>
@@ -5555,11 +5875,21 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
<target>Aggiorna e apri chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload failed" xml:space="preserve">
<source>Upload failed</source>
<target>Invio fallito</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload file" xml:space="preserve">
<source>Upload file</source>
<target>Invia file</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Uploading archive" xml:space="preserve">
<source>Uploading archive</source>
<target>Invio dell'archivio</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use .onion hosts" xml:space="preserve">
<source>Use .onion hosts</source>
<target>Usa gli host .onion</target>
@@ -5610,6 +5940,11 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
<target>Usa il server</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app while in the call." xml:space="preserve">
<source>Use the app while in the call.</source>
<target>Usa l'app mentre sei in chiamata.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>Profilo utente</target>
@@ -5645,6 +5980,16 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
<target>Verifica le connessioni</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify database passphrase" xml:space="preserve">
<source>Verify database passphrase</source>
<target>Verifica password del database</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify passphrase" xml:space="preserve">
<source>Verify passphrase</source>
<target>Verifica password</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify security code" xml:space="preserve">
<source>Verify security code</source>
<target>Verifica codice di sicurezza</target>
@@ -5735,6 +6080,11 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
<target>In attesa del video</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: starting chat on multiple devices is not supported and will cause message delivery failures" xml:space="preserve">
<source>Warning: starting chat on multiple devices is not supported and will cause message delivery failures</source>
<target>Attenzione: avviare la chat su più dispositivi non è supportato e provocherà problemi di recapito dei messaggi</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: you may lose some data!" xml:space="preserve">
<source>Warning: you may lose some data!</source>
<target>Attenzione: potresti perdere alcuni dati!</target>
@@ -5755,6 +6105,11 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
<target>Messaggio di benvenuto</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Welcome message is too long" xml:space="preserve">
<source>Welcome message is too long</source>
<target>Il messaggio di benvenuto è troppo lungo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="What's new" xml:space="preserve">
<source>What's new</source>
<target>Novità</target>
@@ -5810,6 +6165,11 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e
<target>Tu</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You **must not** use the same database on two devices." xml:space="preserve">
<source>You **must not** use the same database on two devices.</source>
<target>**Non devi** usare lo stesso database su due dispositivi.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You accepted connection" xml:space="preserve">
<source>You accepted connection</source>
<target>Hai accettato la connessione</target>
@@ -5897,6 +6257,11 @@ Ripetere la richiesta di ingresso?</target>
<target>Puoi attivarle più tardi nelle impostazioni di privacy e sicurezza dell'app.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can give another try." xml:space="preserve">
<source>You can give another try.</source>
<target>Puoi fare un altro tentativo.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can hide or mute a user profile - swipe it to the right." xml:space="preserve">
<source>You can hide or mute a user profile - swipe it to the right.</source>
<target>Puoi nascondere o silenziare un profilo utente - scorrilo verso destra.</target>
@@ -6173,7 +6538,7 @@ Puoi annullare questa connessione e rimuovere il contatto (e riprovare più tard
</trans-unit>
<trans-unit id="Your profile **%@** will be shared." xml:space="preserve">
<source>Your profile **%@** will be shared.</source>
<target>Il tuo profilo **%@** verrà condiviso.</target>
<target>Verrà condiviso il tuo profilo **%@**.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Your profile is stored on your device and shared only with your contacts.&#10;SimpleX servers cannot see your profile." xml:space="preserve">
@@ -6291,7 +6656,7 @@ I server di SimpleX non possono vedere il tuo profilo.</target>
<trans-unit id="blocked" xml:space="preserve">
<source>blocked</source>
<target>bloccato</target>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="blocked %@" xml:space="preserve">
<source>blocked %@</source>
@@ -6301,7 +6666,7 @@ I server di SimpleX non possono vedere il tuo profilo.</target>
<trans-unit id="blocked by admin" xml:space="preserve">
<source>blocked by admin</source>
<target>bloccato dall'amministratore</target>
<note>blocked chat item</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="bold" xml:space="preserve">
<source>bold</source>
@@ -6731,7 +7096,7 @@ I server di SimpleX non possono vedere il tuo profilo.</target>
<trans-unit id="moderated by %@" xml:space="preserve">
<source>moderated by %@</source>
<target>moderato da %@</target>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="months" xml:space="preserve">
<source>months</source>
@@ -6800,6 +7165,11 @@ I server di SimpleX non possono vedere il tuo profilo.</target>
<target>peer-to-peer</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve">
<source>quantum resistant e2e encryption</source>
<target>crittografia e2e resistente alla quantistica</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="received answer…" xml:space="preserve">
<source>received answer…</source>
<target>risposta ricevuta…</target>
@@ -6875,6 +7245,11 @@ I server di SimpleX non possono vedere il tuo profilo.</target>
<target>impostata nuova immagine del profilo</target>
<note>profile update event chat item</note>
</trans-unit>
<trans-unit id="standard end-to-end encryption" xml:space="preserve">
<source>standard end-to-end encryption</source>
<target>crittografia end-to-end standard</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="starting…" xml:space="preserve">
<source>starting…</source>
<target>avvio…</target>
@@ -89,6 +89,7 @@
</trans-unit>
<trans-unit id="%@ and %@" xml:space="preserve">
<source>%@ and %@</source>
<target>%@ と %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ and %@ connected" xml:space="preserve">
@@ -106,6 +107,10 @@
<target>%@ 接続中</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ downloaded" xml:space="preserve">
<source>%@ downloaded</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ is connected!" xml:space="preserve">
<source>%@ is connected!</source>
<target>%@ 接続中!</target>
@@ -126,6 +131,10 @@
<target>%@ サーバー</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ uploaded" xml:space="preserve">
<source>%@ uploaded</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ wants to connect!" xml:space="preserve">
<source>%@ wants to connect!</source>
<target>%@ が接続を希望しています!</target>
@@ -333,6 +342,10 @@
<target>**最もプライベート**: SimpleX Chat 通知サーバーを使用せず、バックグラウンドで定期的にメッセージをチェックします (アプリの使用頻度によって異なります)。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." xml:space="preserve">
<source>**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: you will NOT be able to recover or change passphrase if you lose it." xml:space="preserve">
<source>**Please note**: you will NOT be able to recover or change passphrase if you lose it.</source>
<target>**注意**: パスフレーズを紛失すると、パスフレーズを復元または変更できなくなります。</target>
@@ -348,6 +361,10 @@
<target>**警告**: 即時の プッシュ通知には、キーチェーンに保存されたパスフレーズが必要です。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Warning**: the archive will be removed." xml:space="preserve">
<source>**Warning**: the archive will be removed.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**e2e encrypted** audio call" xml:space="preserve">
<source>**e2e encrypted** audio call</source>
<target>**e2e 暗号化**音声通話</target>
@@ -596,6 +613,10 @@
<target>アドレス変更は中止されます。古い受信アドレスが使用されます。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can block a member for all." xml:space="preserve">
<source>Admins can block a member for all.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can create the links to join groups." xml:space="preserve">
<source>Admins can create the links to join groups.</source>
<target>管理者はグループの参加リンクを生成できます。</target>
@@ -649,6 +670,10 @@
<target>すべての連絡先は維持されます。連絡先に更新されたプロフィールを送信します。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." xml:space="preserve">
<source>All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow" xml:space="preserve">
<source>Allow</source>
<target>許可</target>
@@ -772,6 +797,10 @@
<target>アプリのビルド: %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App data migration" xml:space="preserve">
<source>App data migration</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App encrypts new local files (except videos)." xml:space="preserve">
<source>App encrypts new local files (except videos).</source>
<target>アプリは新しいローカルファイル(ビデオを除く)を暗号化します。</target>
@@ -807,6 +836,18 @@
<target>見た目</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Apply" xml:space="preserve">
<source>Apply</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive and upload" xml:space="preserve">
<source>Archive and upload</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Attach" xml:space="preserve">
<source>Attach</source>
<target>添付する</target>
@@ -987,6 +1028,10 @@
<target>中止</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel migration" xml:space="preserve">
<source>Cancel migration</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cannot access keychain to save database password" xml:space="preserve">
<source>Cannot access keychain to save database password</source>
<target>データベースのパスワードを保存するためのキーチェーンにアクセスできません</target>
@@ -1087,6 +1132,10 @@
<source>Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat preferences" xml:space="preserve">
<source>Chat preferences</source>
<target>チャット設定</target>
@@ -1107,6 +1156,10 @@
<target>中国語とスペイン語UI</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose _Migrate from another device_ on the new device and scan QR code." xml:space="preserve">
<source>Choose _Migrate from another device_ on the new device and scan QR code.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose file" xml:space="preserve">
<source>Choose file</source>
<target>ファイルを選択</target>
@@ -1176,6 +1229,10 @@
<target>データベースのアップグレードを確認</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm network settings" xml:space="preserve">
<source>Confirm network settings</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm new passphrase…" xml:space="preserve">
<source>Confirm new passphrase…</source>
<target>新しいパスフレーズを確認…</target>
@@ -1186,6 +1243,14 @@
<target>パスワードを確認</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm that you remember database passphrase to migrate it." xml:space="preserve">
<source>Confirm that you remember database passphrase to migrate it.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm upload" xml:space="preserve">
<source>Confirm upload</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect" xml:space="preserve">
<source>Connect</source>
<target>接続</target>
@@ -1426,6 +1491,10 @@ This is your own one-time link!</source>
<target>%@ によって作成されました</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating archive link" xml:space="preserve">
<source>Creating archive link</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating link…" xml:space="preserve">
<source>Creating link…</source>
<note>No comment provided by engineer.</note>
@@ -1641,6 +1710,10 @@ This cannot be undone!</source>
<target>データベースを削除</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database from this device" xml:space="preserve">
<source>Delete database from this device</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete file" xml:space="preserve">
<source>Delete file</source>
<target>ファイルの削除</target>
@@ -1925,11 +1998,23 @@ This cannot be undone!</source>
<target>ダウングレードしてチャットを開く</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download failed" xml:space="preserve">
<source>Download failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download file" xml:space="preserve">
<source>Download file</source>
<target>ファイルをダウンロード</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Downloading archive" xml:space="preserve">
<source>Downloading archive</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Downloading link details" xml:space="preserve">
<source>Downloading link details</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Duplicate display name!" xml:space="preserve">
<source>Duplicate display name!</source>
<target>表示の名前が重複してます!</target>
@@ -1984,6 +2069,10 @@ This cannot be undone!</source>
<target>すべて有効</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable in direct chats (BETA)!" xml:space="preserve">
<source>Enable in direct chats (BETA)!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable instant notifications?" xml:space="preserve">
<source>Enable instant notifications?</source>
<target>即時通知を有効にしますか?</target>
@@ -2095,6 +2184,10 @@ This cannot be undone!</source>
<source>Enter group name…</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase" xml:space="preserve">
<source>Enter passphrase</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase…" xml:space="preserve">
<source>Enter passphrase…</source>
<target>暗証フレーズを入力…</target>
@@ -2153,6 +2246,10 @@ This cannot be undone!</source>
<target>メンバー追加にエラー発生</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error allowing contact PQ encryption" xml:space="preserve">
<source>Error allowing contact PQ encryption</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error changing address" xml:space="preserve">
<source>Error changing address</source>
<target>アドレス変更にエラー発生</target>
@@ -2242,6 +2339,10 @@ This cannot be undone!</source>
<target>ユーザのプロフィール削除にエラー発生</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error downloading the archive" xml:space="preserve">
<source>Error downloading the archive</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error enabling delivery receipts!" xml:space="preserve">
<source>Error enabling delivery receipts!</source>
<note>No comment provided by engineer.</note>
@@ -2315,6 +2416,10 @@ This cannot be undone!</source>
<target>キーチェーンにパスフレーズを保存にエラー発生</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error saving settings" xml:space="preserve">
<source>Error saving settings</source>
<note>when migrating</note>
</trans-unit>
<trans-unit id="Error saving user password" xml:space="preserve">
<source>Error saving user password</source>
<target>ユーザーパスワード保存エラー</target>
@@ -2383,6 +2488,14 @@ This cannot be undone!</source>
<target>ユーザープライバシーの更新のエラー</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error uploading the archive" xml:space="preserve">
<source>Error uploading the archive</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error verifying passphrase:" xml:space="preserve">
<source>Error verifying passphrase:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error: " xml:space="preserve">
<source>Error: </source>
<target>エラー : </target>
@@ -2432,6 +2545,10 @@ This cannot be undone!</source>
<target>データベースのアーカイブをエクスポートします。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exported file doesn't exist" xml:space="preserve">
<source>Exported file doesn't exist</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exporting database archive…" xml:space="preserve">
<source>Exporting database archive…</source>
<target>データベース アーカイブをエクスポートしています…</target>
@@ -2501,6 +2618,14 @@ This cannot be undone!</source>
<target>未読とお気に入りをフィルターします。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration" xml:space="preserve">
<source>Finalize migration</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration on another device." xml:space="preserve">
<source>Finalize migration on another device.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finally, we have them! 🚀" xml:space="preserve">
<source>Finally, we have them! 🚀</source>
<target>ついに、私たちはそれらを手に入れました! 🚀</target>
@@ -2786,6 +2911,10 @@ This cannot be undone!</source>
<target>自分のサーバの使い方</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Hungarian interface" xml:space="preserve">
<source>Hungarian interface</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="ICE servers (one per line)" xml:space="preserve">
<source>ICE servers (one per line)</source>
<target>ICEサーバ (1行に1サーバ)</target>
@@ -2851,6 +2980,14 @@ This cannot be undone!</source>
<target>データベースを読み込む</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Import failed" xml:space="preserve">
<source>Import failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Importing archive" xml:space="preserve">
<source>Importing archive</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Improved message delivery" xml:space="preserve">
<source>Improved message delivery</source>
<note>No comment provided by engineer.</note>
@@ -2865,6 +3002,10 @@ This cannot be undone!</source>
<target>サーバ設定の向上</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In order to continue, chat should be stopped." xml:space="preserve">
<source>In order to continue, chat should be stopped.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In reply to" xml:space="preserve">
<source>In reply to</source>
<target>返信先</target>
@@ -2972,6 +3113,10 @@ This cannot be undone!</source>
<source>Invalid link</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid migration confirmation" xml:space="preserve">
<source>Invalid migration confirmation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid name!" xml:space="preserve">
<source>Invalid name!</source>
<note>No comment provided by engineer.</note>
@@ -3326,6 +3471,10 @@ This is your link for group %@!</source>
<target>メッセージ内容</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message too large" xml:space="preserve">
<source>Message too large</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages" xml:space="preserve">
<source>Messages</source>
<target>メッセージ</target>
@@ -3340,11 +3489,47 @@ This is your link for group %@!</source>
<source>Messages from %@ will be shown!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate device" xml:space="preserve">
<source>Migrate device</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate from another device" xml:space="preserve">
<source>Migrate from another device</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate here" xml:space="preserve">
<source>Migrate here</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device" xml:space="preserve">
<source>Migrate to another device</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device via QR code." xml:space="preserve">
<source>Migrate to another device via QR code.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating" xml:space="preserve">
<source>Migrating</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating database archive…" xml:space="preserve">
<source>Migrating database archive…</source>
<target>データベースのアーカイブを移行しています…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration complete" xml:space="preserve">
<source>Migration complete</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration error:" xml:space="preserve">
<source>Migration error:</source>
<target>移行エラー:</target>
@@ -3700,6 +3885,10 @@ This is your link for group %@!</source>
<source>Open group</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Open migration to another device" xml:space="preserve">
<source>Open migration to another device</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Open user profiles" xml:space="preserve">
<source>Open user profiles</source>
<target>ユーザープロフィールを開く</target>
@@ -3714,10 +3903,18 @@ This is your link for group %@!</source>
<source>Opening app…</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
<source>Or paste archive link</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or scan QR code" xml:space="preserve">
<source>Or scan QR code</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or securely share this file link" xml:space="preserve">
<source>Or securely share this file link</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or show this code" xml:space="preserve">
<source>Or show this code</source>
<note>No comment provided by engineer.</note>
@@ -3798,6 +3995,10 @@ This is your link for group %@!</source>
<target>永続的な復号化エラー</target>
<note>message decrypt error item</note>
</trans-unit>
<trans-unit id="Picture-in-picture calls" xml:space="preserve">
<source>Picture-in-picture calls</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>音声メッセージを有効にするように連絡相手に要求してください。</target>
@@ -3818,6 +4019,10 @@ This is your link for group %@!</source>
<target>あなたと連絡先の設定を確認してください。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please confirm that network settings are correct for this device." xml:space="preserve">
<source>Please confirm that network settings are correct for this device.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please contact developers.&#10;Error: %@" xml:space="preserve">
<source>Please contact developers.
Error: %@</source>
@@ -3873,6 +4078,10 @@ Error: %@</source>
<target>サーバアドレスの証明証IDが正しくないかもしれません</target>
<note>server test error</note>
</trans-unit>
<trans-unit id="Post-quantum E2EE" xml:space="preserve">
<source>Post-quantum E2EE</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Preserve the last message draft, with attachments." xml:space="preserve">
<source>Preserve the last message draft, with attachments.</source>
<target>添付を含めて、下書きを保存する。</target>
@@ -4005,6 +4214,14 @@ Error: %@</source>
<target>プッシュ通知</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push server" xml:space="preserve">
<source>Push server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Quantum resistant encryption" xml:space="preserve">
<source>Quantum resistant encryption</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Rate the app" xml:space="preserve">
<source>Rate the app</source>
<target>アプリを評価</target>
@@ -4186,10 +4403,22 @@ Error: %@</source>
<source>Repeat connection request?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat download" xml:space="preserve">
<source>Repeat download</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat import" xml:space="preserve">
<source>Repeat import</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat join request?" xml:space="preserve">
<source>Repeat join request?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat upload" xml:space="preserve">
<source>Repeat upload</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reply" xml:space="preserve">
<source>Reply</source>
<target>返信</target>
@@ -4289,6 +4518,10 @@ Error: %@</source>
<target>SMPサーバ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safer groups" xml:space="preserve">
<source>Safer groups</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>保存</target>
@@ -4640,6 +4873,10 @@ Error: %@</source>
<target>パスコードを設定する</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase" xml:space="preserve">
<source>Set passphrase</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase to export" xml:space="preserve">
<source>Set passphrase to export</source>
<target>暗証フレーズを設定してからエクスポート</target>
@@ -4694,6 +4931,10 @@ Error: %@</source>
<target>連絡先と共有する</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show QR code" xml:space="preserve">
<source>Show QR code</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show calls in phone history" xml:space="preserve">
<source>Show calls in phone history</source>
<target>通話履歴を表示</target>
@@ -4833,6 +5074,10 @@ Error: %@</source>
<target>SimpleX を停止</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Stop chat" xml:space="preserve">
<source>Stop chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stop chat to enable database actions" xml:space="preserve">
<source>Stop chat to enable database actions</source>
<target>チャットを停止してデータベースアクションを有効にします</target>
@@ -4873,6 +5118,10 @@ Error: %@</source>
<target>アドレスの共有を停止しますか?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stopping chat" xml:space="preserve">
<source>Stopping chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Submit" xml:space="preserve">
<source>Submit</source>
<target>送信</target>
@@ -5115,6 +5364,14 @@ It can happen because of some bug or when the connection is compromised.</source
<target>あなたのプロフィール、連絡先、メッセージ、ファイルが完全削除されます (※元に戻せません※)。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="This chat is protected by end-to-end encryption." xml:space="preserve">
<source>This chat is protected by end-to-end encryption.</source>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This chat is protected by quantum resistant end-to-end encryption." xml:space="preserve">
<source>This chat is protected by quantum resistant end-to-end encryption.</source>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This device name" xml:space="preserve">
<source>This device name</source>
<note>No comment provided by engineer.</note>
@@ -5393,11 +5650,19 @@ To connect, please ask your contact to create another connection link and check
<target>アップグレードしてチャットを開く</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload failed" xml:space="preserve">
<source>Upload failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload file" xml:space="preserve">
<source>Upload file</source>
<target>ファイルをアップロードする</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Uploading archive" xml:space="preserve">
<source>Uploading archive</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use .onion hosts" xml:space="preserve">
<source>Use .onion hosts</source>
<target>.onionホストを使う</target>
@@ -5446,6 +5711,10 @@ To connect, please ask your contact to create another connection link and check
<target>サーバを使う</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app while in the call." xml:space="preserve">
<source>Use the app while in the call.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>ユーザープロフィール</target>
@@ -5478,6 +5747,14 @@ To connect, please ask your contact to create another connection link and check
<source>Verify connections</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify database passphrase" xml:space="preserve">
<source>Verify database passphrase</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify passphrase" xml:space="preserve">
<source>Verify passphrase</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify security code" xml:space="preserve">
<source>Verify security code</source>
<target>セキュリティコードを確認</target>
@@ -5565,6 +5842,10 @@ To connect, please ask your contact to create another connection link and check
<target>ビデオ待機中</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: starting chat on multiple devices is not supported and will cause message delivery failures" xml:space="preserve">
<source>Warning: starting chat on multiple devices is not supported and will cause message delivery failures</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: you may lose some data!" xml:space="preserve">
<source>Warning: you may lose some data!</source>
<target>警告: 一部のデータが失われる可能性があります!</target>
@@ -5585,6 +5866,10 @@ To connect, please ask your contact to create another connection link and check
<target>ウェルカムメッセージ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Welcome message is too long" xml:space="preserve">
<source>Welcome message is too long</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="What's new" xml:space="preserve">
<source>What's new</source>
<target>新着情報</target>
@@ -5638,6 +5923,10 @@ To connect, please ask your contact to create another connection link and check
<target>あなた</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You **must not** use the same database on two devices." xml:space="preserve">
<source>You **must not** use the same database on two devices.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You accepted connection" xml:space="preserve">
<source>You accepted connection</source>
<target>接続を承認しました</target>
@@ -5717,6 +6006,10 @@ Repeat join request?</source>
<target>あとでアプリのプライバシーとセキュリティの設定から有効にすることができます。</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can give another try." xml:space="preserve">
<source>You can give another try.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can hide or mute a user profile - swipe it to the right." xml:space="preserve">
<source>You can hide or mute a user profile - swipe it to the right.</source>
<target>ユーザープロファイルを右にスワイプすると、非表示またはミュートにすることができます。</target>
@@ -6100,7 +6393,7 @@ SimpleX サーバーはあなたのプロファイルを参照できません。
</trans-unit>
<trans-unit id="blocked" xml:space="preserve">
<source>blocked</source>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="blocked %@" xml:space="preserve">
<source>blocked %@</source>
@@ -6108,7 +6401,7 @@ SimpleX サーバーはあなたのプロファイルを参照できません。
</trans-unit>
<trans-unit id="blocked by admin" xml:space="preserve">
<source>blocked by admin</source>
<note>blocked chat item</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="bold" xml:space="preserve">
<source>bold</source>
@@ -6534,7 +6827,7 @@ SimpleX サーバーはあなたのプロファイルを参照できません。
<trans-unit id="moderated by %@" xml:space="preserve">
<source>moderated by %@</source>
<target>%@ によってモデレートされた</target>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="months" xml:space="preserve">
<source>months</source>
@@ -6603,6 +6896,10 @@ SimpleX サーバーはあなたのプロファイルを参照できません。
<target>P2P</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve">
<source>quantum resistant e2e encryption</source>
<note>chat item text</note>
</trans-unit>
<trans-unit id="received answer…" xml:space="preserve">
<source>received answer…</source>
<target>回答を受け取りました…</target>
@@ -6673,6 +6970,10 @@ SimpleX サーバーはあなたのプロファイルを参照できません。
<source>set new profile picture</source>
<note>profile update event chat item</note>
</trans-unit>
<trans-unit id="standard end-to-end encryption" xml:space="preserve">
<source>standard end-to-end encryption</source>
<note>chat item text</note>
</trans-unit>
<trans-unit id="starting…" xml:space="preserve">
<source>starting…</source>
<target>接続中…</target>
@@ -107,6 +107,11 @@
<target>%@ verbonden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ downloaded" xml:space="preserve">
<source>%@ downloaded</source>
<target>%@ gedownload</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ is connected!" xml:space="preserve">
<source>%@ is connected!</source>
<target>%@ is verbonden!</target>
@@ -127,6 +132,11 @@
<target>%@ servers</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ uploaded" xml:space="preserve">
<source>%@ uploaded</source>
<target>%@ geüpload</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ wants to connect!" xml:space="preserve">
<source>%@ wants to connect!</source>
<target>%@ wil verbinding maken!</target>
@@ -342,6 +352,11 @@
<target>**Meest privé**: gebruik geen SimpleX Chat-notificatie server, controleer berichten regelmatig op de achtergrond (afhankelijk van hoe vaak u de app gebruikt).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." xml:space="preserve">
<source>**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.</source>
<target>**Let op**: als u dezelfde database op twee apparaten gebruikt, wordt de decodering van berichten van uw verbindingen verbroken, als veiligheidsmaatregel.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: you will NOT be able to recover or change passphrase if you lose it." xml:space="preserve">
<source>**Please note**: you will NOT be able to recover or change passphrase if you lose it.</source>
<target>**Let op**: u kunt het wachtwoord NIET herstellen of wijzigen als u het kwijtraakt.</target>
@@ -357,6 +372,11 @@
<target>**Waarschuwing**: voor directe push meldingen is een wachtwoord vereist dat is opgeslagen in de Keychain.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Warning**: the archive will be removed." xml:space="preserve">
<source>**Warning**: the archive will be removed.</source>
<target>**Waarschuwing**: het archief wordt verwijderd.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**e2e encrypted** audio call" xml:space="preserve">
<source>**e2e encrypted** audio call</source>
<target>**e2e versleuteld** audio gesprek</target>
@@ -613,6 +633,11 @@
<target>Adres wijziging wordt afgebroken. Het oude ontvangstadres wordt gebruikt.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can block a member for all." xml:space="preserve">
<source>Admins can block a member for all.</source>
<target>Beheerders kunnen een lid voor iedereen blokkeren.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can create the links to join groups." xml:space="preserve">
<source>Admins can create the links to join groups.</source>
<target>Beheerders kunnen de uitnodiging links naar groepen aanmaken.</target>
@@ -668,6 +693,11 @@
<target>Al uw contacten blijven verbonden. Profiel update wordt naar uw contacten verzonden.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." xml:space="preserve">
<source>All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.</source>
<target>Al uw contacten, gesprekken en bestanden worden veilig gecodeerd en in delen geüpload naar geconfigureerde XFTP-relays.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow" xml:space="preserve">
<source>Allow</source>
<target>Toestaan</target>
@@ -793,6 +823,11 @@
<target>App build: %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App data migration" xml:space="preserve">
<source>App data migration</source>
<target>Migratie van app-gegevens</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App encrypts new local files (except videos)." xml:space="preserve">
<source>App encrypts new local files (except videos).</source>
<target>App versleutelt nieuwe lokale bestanden (behalve video's).</target>
@@ -828,6 +863,21 @@
<target>Uiterlijk</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Apply" xml:space="preserve">
<source>Apply</source>
<target>Toepassen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive and upload" xml:space="preserve">
<source>Archive and upload</source>
<target>Archiveren en uploaden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<target>Database archiveren</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Attach" xml:space="preserve">
<source>Attach</source>
<target>Bijvoegen</target>
@@ -1018,6 +1068,11 @@
<target>Annuleren</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel migration" xml:space="preserve">
<source>Cancel migration</source>
<target>Migratie annuleren</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cannot access keychain to save database password" xml:space="preserve">
<source>Cannot access keychain to save database password</source>
<target>Geen toegang tot de keychain om database wachtwoord op te slaan</target>
@@ -1119,6 +1174,11 @@
<target>Chat is gestopt. Als je deze database al op een ander apparaat hebt gebruikt, moet je deze terugzetten voordat je met chatten begint.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<target>Chat gemigreerd!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat preferences" xml:space="preserve">
<source>Chat preferences</source>
<target>Gesprek voorkeuren</target>
@@ -1139,6 +1199,11 @@
<target>Chinese en Spaanse interface</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose _Migrate from another device_ on the new device and scan QR code." xml:space="preserve">
<source>Choose _Migrate from another device_ on the new device and scan QR code.</source>
<target>Kies _Migreren vanaf een ander apparaat_ op het nieuwe apparaat en scan de QR-code.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose file" xml:space="preserve">
<source>Choose file</source>
<target>Kies bestand</target>
@@ -1209,6 +1274,11 @@
<target>Bevestig database upgrades</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm network settings" xml:space="preserve">
<source>Confirm network settings</source>
<target>Bevestig netwerk instellingen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm new passphrase…" xml:space="preserve">
<source>Confirm new passphrase…</source>
<target>Bevestig nieuw wachtwoord…</target>
@@ -1219,6 +1289,16 @@
<target>Bevestig wachtwoord</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm that you remember database passphrase to migrate it." xml:space="preserve">
<source>Confirm that you remember database passphrase to migrate it.</source>
<target>Bevestig dat u het wachtwoord voor de database onthoudt om deze te migreren.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm upload" xml:space="preserve">
<source>Confirm upload</source>
<target>Bevestig het uploaden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect" xml:space="preserve">
<source>Connect</source>
<target>Verbind</target>
@@ -1478,6 +1558,11 @@ Dit is uw eigen eenmalige link!</target>
<target>Gemaakt op %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating archive link" xml:space="preserve">
<source>Creating archive link</source>
<target>Archief link maken</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating link…" xml:space="preserve">
<source>Creating link…</source>
<target>Link maken…</target>
@@ -1698,6 +1783,11 @@ Dit kan niet ongedaan gemaakt worden!</target>
<target>Database verwijderen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database from this device" xml:space="preserve">
<source>Delete database from this device</source>
<target>Verwijder de database van dit apparaat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete file" xml:space="preserve">
<source>Delete file</source>
<target>Verwijder bestand</target>
@@ -1988,11 +2078,26 @@ Dit kan niet ongedaan gemaakt worden!</target>
<target>Downgraden en chat openen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download failed" xml:space="preserve">
<source>Download failed</source>
<target>Download mislukt</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download file" xml:space="preserve">
<source>Download file</source>
<target>Download bestand</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Downloading archive" xml:space="preserve">
<source>Downloading archive</source>
<target>Archief downloaden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Downloading link details" xml:space="preserve">
<source>Downloading link details</source>
<target>Link gegevens downloaden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Duplicate display name!" xml:space="preserve">
<source>Duplicate display name!</source>
<target>Dubbele weergavenaam!</target>
@@ -2048,6 +2153,11 @@ Dit kan niet ongedaan gemaakt worden!</target>
<target>Inschakelen voor iedereen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable in direct chats (BETA)!" xml:space="preserve">
<source>Enable in direct chats (BETA)!</source>
<target>Activeer in directe chats (BETA)!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable instant notifications?" xml:space="preserve">
<source>Enable instant notifications?</source>
<target>Onmiddellijke meldingen inschakelen?</target>
@@ -2163,6 +2273,11 @@ Dit kan niet ongedaan gemaakt worden!</target>
<target>Groep naam invoeren…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase" xml:space="preserve">
<source>Enter passphrase</source>
<target>Voer het wachtwoord in</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase…" xml:space="preserve">
<source>Enter passphrase…</source>
<target>Voer wachtwoord in…</target>
@@ -2223,6 +2338,11 @@ Dit kan niet ongedaan gemaakt worden!</target>
<target>Fout bij het toevoegen van leden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error allowing contact PQ encryption" xml:space="preserve">
<source>Error allowing contact PQ encryption</source>
<target>Fout bij het toestaan van contact PQ-versleuteling</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error changing address" xml:space="preserve">
<source>Error changing address</source>
<target>Fout bij wijzigen van adres</target>
@@ -2313,6 +2433,11 @@ Dit kan niet ongedaan gemaakt worden!</target>
<target>Fout bij het verwijderen van gebruikers profiel</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error downloading the archive" xml:space="preserve">
<source>Error downloading the archive</source>
<target>Fout bij het downloaden van het archief</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error enabling delivery receipts!" xml:space="preserve">
<source>Error enabling delivery receipts!</source>
<target>Fout bij het inschakelen van ontvangst bevestiging!</target>
@@ -2388,6 +2513,11 @@ Dit kan niet ongedaan gemaakt worden!</target>
<target>Fout bij opslaan van wachtwoord in de keychain</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error saving settings" xml:space="preserve">
<source>Error saving settings</source>
<target>Fout bij opslaan van instellingen</target>
<note>when migrating</note>
</trans-unit>
<trans-unit id="Error saving user password" xml:space="preserve">
<source>Error saving user password</source>
<target>Fout bij opslaan gebruikers wachtwoord</target>
@@ -2458,6 +2588,16 @@ Dit kan niet ongedaan gemaakt worden!</target>
<target>Fout bij updaten van gebruikers privacy</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error uploading the archive" xml:space="preserve">
<source>Error uploading the archive</source>
<target>Fout bij het uploaden van het archief</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error verifying passphrase:" xml:space="preserve">
<source>Error verifying passphrase:</source>
<target>Fout bij het verifiëren van het wachtwoord:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error: " xml:space="preserve">
<source>Error: </source>
<target>Fout: </target>
@@ -2508,6 +2648,11 @@ Dit kan niet ongedaan gemaakt worden!</target>
<target>Geëxporteerd database archief.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exported file doesn't exist" xml:space="preserve">
<source>Exported file doesn't exist</source>
<target>Geëxporteerd bestand bestaat niet</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exporting database archive…" xml:space="preserve">
<source>Exporting database archive…</source>
<target>Database archief exporteren…</target>
@@ -2578,6 +2723,16 @@ Dit kan niet ongedaan gemaakt worden!</target>
<target>Filter ongelezen en favoriete chats.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration" xml:space="preserve">
<source>Finalize migration</source>
<target>Voltooi de migratie</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration on another device." xml:space="preserve">
<source>Finalize migration on another device.</source>
<target>Voltooi de migratie op een ander apparaat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finally, we have them! 🚀" xml:space="preserve">
<source>Finally, we have them! 🚀</source>
<target>Eindelijk, we hebben ze! 🚀</target>
@@ -2868,6 +3023,11 @@ Dit kan niet ongedaan gemaakt worden!</target>
<target>Hoe u uw servers gebruikt</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Hungarian interface" xml:space="preserve">
<source>Hungarian interface</source>
<target>Hongaarse interface</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="ICE servers (one per line)" xml:space="preserve">
<source>ICE servers (one per line)</source>
<target>ICE servers (één per lijn)</target>
@@ -2933,6 +3093,16 @@ Dit kan niet ongedaan gemaakt worden!</target>
<target>Database importeren</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Import failed" xml:space="preserve">
<source>Import failed</source>
<target>Importeren is mislukt</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Importing archive" xml:space="preserve">
<source>Importing archive</source>
<target>Archief importeren</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Improved message delivery" xml:space="preserve">
<source>Improved message delivery</source>
<target>Verbeterde berichtbezorging</target>
@@ -2948,6 +3118,11 @@ Dit kan niet ongedaan gemaakt worden!</target>
<target>Verbeterde serverconfiguratie</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In order to continue, chat should be stopped." xml:space="preserve">
<source>In order to continue, chat should be stopped.</source>
<target>Om verder te kunnen gaan, moet de chat worden gestopt.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In reply to" xml:space="preserve">
<source>In reply to</source>
<target>In antwoord op</target>
@@ -3060,6 +3235,11 @@ Dit kan niet ongedaan gemaakt worden!</target>
<target>Ongeldige link</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid migration confirmation" xml:space="preserve">
<source>Invalid migration confirmation</source>
<target>Ongeldige migratie bevestiging</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid name!" xml:space="preserve">
<source>Invalid name!</source>
<target>Ongeldige naam!</target>
@@ -3428,6 +3608,11 @@ Dit is jouw link voor groep %@!</target>
<target>Bericht tekst</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message too large" xml:space="preserve">
<source>Message too large</source>
<target>Bericht te groot</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages" xml:space="preserve">
<source>Messages</source>
<target>Berichten</target>
@@ -3443,11 +3628,56 @@ Dit is jouw link voor groep %@!</target>
<target>Berichten van %@ worden getoond!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<target>Berichten, bestanden en oproepen worden beschermd door **end-to-end codering** met perfecte voorwaartse geheimhouding, afwijzing en inbraakherstel.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<target>Berichten, bestanden en oproepen worden beschermd door **kwantumbestendige e2e encryptie** met perfecte voorwaartse geheimhouding, afwijzing en inbraakherstel.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate device" xml:space="preserve">
<source>Migrate device</source>
<target>Apparaat migreren</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate from another device" xml:space="preserve">
<source>Migrate from another device</source>
<target>Migreer vanaf een ander apparaat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate here" xml:space="preserve">
<source>Migrate here</source>
<target>Migreer hierheen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device" xml:space="preserve">
<source>Migrate to another device</source>
<target>Migreer naar een ander apparaat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device via QR code." xml:space="preserve">
<source>Migrate to another device via QR code.</source>
<target>Migreer naar een ander apparaat via QR-code.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating" xml:space="preserve">
<source>Migrating</source>
<target>Migreren</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating database archive…" xml:space="preserve">
<source>Migrating database archive…</source>
<target>Database archief migreren…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration complete" xml:space="preserve">
<source>Migration complete</source>
<target>Migratie voltooid</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration error:" xml:space="preserve">
<source>Migration error:</source>
<target>Migratiefout:</target>
@@ -3794,7 +4024,7 @@ Dit is jouw link voor groep %@!</target>
</trans-unit>
<trans-unit id="Open chat" xml:space="preserve">
<source>Open chat</source>
<target>Gesprekken openen</target>
<target>Chat openen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Open chat console" xml:space="preserve">
@@ -3807,6 +4037,11 @@ Dit is jouw link voor groep %@!</target>
<target>Open groep</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Open migration to another device" xml:space="preserve">
<source>Open migration to another device</source>
<target>Open de migratie naar een ander apparaat</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Open user profiles" xml:space="preserve">
<source>Open user profiles</source>
<target>Gebruikers profielen openen</target>
@@ -3822,11 +4057,21 @@ Dit is jouw link voor groep %@!</target>
<target>App openen…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
<source>Or paste archive link</source>
<target>Of plak de archief link</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or scan QR code" xml:space="preserve">
<source>Or scan QR code</source>
<target>Of scan de QR-code</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or securely share this file link" xml:space="preserve">
<source>Or securely share this file link</source>
<target>Of deel deze bestands link veilig</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or show this code" xml:space="preserve">
<source>Or show this code</source>
<target>Of laat deze code zien</target>
@@ -3912,6 +4157,11 @@ Dit is jouw link voor groep %@!</target>
<target>Decodering fout</target>
<note>message decrypt error item</note>
</trans-unit>
<trans-unit id="Picture-in-picture calls" xml:space="preserve">
<source>Picture-in-picture calls</source>
<target>Beeld-in-beeld oproepen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>Vraag uw contact om het verzenden van spraak berichten in te schakelen.</target>
@@ -3932,6 +4182,11 @@ Dit is jouw link voor groep %@!</target>
<target>Controleer de uwe en uw contact voorkeuren.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please confirm that network settings are correct for this device." xml:space="preserve">
<source>Please confirm that network settings are correct for this device.</source>
<target>Controleer of de netwerk instellingen correct zijn voor dit apparaat.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please contact developers.&#10;Error: %@" xml:space="preserve">
<source>Please contact developers.
Error: %@</source>
@@ -3989,6 +4244,11 @@ Fout: %@</target>
<target>Mogelijk is de certificaat vingerafdruk in het server adres onjuist</target>
<note>server test error</note>
</trans-unit>
<trans-unit id="Post-quantum E2EE" xml:space="preserve">
<source>Post-quantum E2EE</source>
<target>Post-quantum E2EE</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Preserve the last message draft, with attachments." xml:space="preserve">
<source>Preserve the last message draft, with attachments.</source>
<target>Bewaar het laatste berichtconcept, met bijlagen.</target>
@@ -4124,6 +4384,16 @@ Fout: %@</target>
<target>Push meldingen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push server" xml:space="preserve">
<source>Push server</source>
<target>Push server</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Quantum resistant encryption" xml:space="preserve">
<source>Quantum resistant encryption</source>
<target>quantum bestendige encryptie</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Rate the app" xml:space="preserve">
<source>Rate the app</source>
<target>Beoordeel de app</target>
@@ -4309,11 +4579,26 @@ Fout: %@</target>
<target>Verbindingsverzoek herhalen?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat download" xml:space="preserve">
<source>Repeat download</source>
<target>Herhaal het downloaden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat import" xml:space="preserve">
<source>Repeat import</source>
<target>Herhaal import</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat join request?" xml:space="preserve">
<source>Repeat join request?</source>
<target>Deelnameverzoek herhalen?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat upload" xml:space="preserve">
<source>Repeat upload</source>
<target>Herhaal het uploaden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reply" xml:space="preserve">
<source>Reply</source>
<target>Antwoord</target>
@@ -4414,6 +4699,11 @@ Fout: %@</target>
<target>SMP servers</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safer groups" xml:space="preserve">
<source>Safer groups</source>
<target>Veiligere groepen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Opslaan</target>
@@ -4541,7 +4831,7 @@ Fout: %@</target>
</trans-unit>
<trans-unit id="Search or paste SimpleX link" xml:space="preserve">
<source>Search or paste SimpleX link</source>
<target>Zoek of plak een SimpleX link</target>
<target>Zoeken of plak een SimpleX link</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Secure queue" xml:space="preserve">
@@ -4779,6 +5069,11 @@ Fout: %@</target>
<target>Toegangscode instellen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase" xml:space="preserve">
<source>Set passphrase</source>
<target>Wachtwoord instellen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase to export" xml:space="preserve">
<source>Set passphrase to export</source>
<target>Wachtwoord instellen om te exporteren</target>
@@ -4834,6 +5129,11 @@ Fout: %@</target>
<target>Delen met contacten</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show QR code" xml:space="preserve">
<source>Show QR code</source>
<target>Toon QR-code</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show calls in phone history" xml:space="preserve">
<source>Show calls in phone history</source>
<target>Toon oproepen in de telefoongeschiedenis</target>
@@ -4974,6 +5274,11 @@ Fout: %@</target>
<target>Stop SimpleX</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Stop chat" xml:space="preserve">
<source>Stop chat</source>
<target>Stop chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stop chat to enable database actions" xml:space="preserve">
<source>Stop chat to enable database actions</source>
<target>Stop de chat om database acties mogelijk te maken</target>
@@ -5014,6 +5319,11 @@ Fout: %@</target>
<target>Stop met het delen van adres?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stopping chat" xml:space="preserve">
<source>Stopping chat</source>
<target>Chat stoppen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Submit" xml:space="preserve">
<source>Submit</source>
<target>Indienen</target>
@@ -5261,6 +5571,16 @@ Het kan gebeuren vanwege een bug of wanneer de verbinding is aangetast.</target>
<target>Deze actie kan niet ongedaan worden gemaakt. Uw profiel, contacten, berichten en bestanden gaan onomkeerbaar verloren.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="This chat is protected by end-to-end encryption." xml:space="preserve">
<source>This chat is protected by end-to-end encryption.</source>
<target>Deze chat is beveiligd met end-to-end codering.</target>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This chat is protected by quantum resistant end-to-end encryption." xml:space="preserve">
<source>This chat is protected by quantum resistant end-to-end encryption.</source>
<target>Deze chat wordt beschermd door quantum bestendige end-to-end codering.</target>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This device name" xml:space="preserve">
<source>This device name</source>
<target>Deze apparaatnaam</target>
@@ -5555,11 +5875,21 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
<target>Upgrade en open chat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload failed" xml:space="preserve">
<source>Upload failed</source>
<target>Upload mislukt</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload file" xml:space="preserve">
<source>Upload file</source>
<target>Upload bestand</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Uploading archive" xml:space="preserve">
<source>Uploading archive</source>
<target>Archief uploaden</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use .onion hosts" xml:space="preserve">
<source>Use .onion hosts</source>
<target>Gebruik .onion-hosts</target>
@@ -5610,6 +5940,11 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
<target>Gebruik server</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app while in the call." xml:space="preserve">
<source>Use the app while in the call.</source>
<target>Gebruik de app tijdens het gesprek.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>Gebruikers profiel</target>
@@ -5645,6 +5980,16 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
<target>Controleer verbindingen</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify database passphrase" xml:space="preserve">
<source>Verify database passphrase</source>
<target>Controleer het wachtwoord van de database</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify passphrase" xml:space="preserve">
<source>Verify passphrase</source>
<target>Controleer het wachtwoord</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify security code" xml:space="preserve">
<source>Verify security code</source>
<target>Controleer de beveiligingscode</target>
@@ -5735,6 +6080,11 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
<target>Wachten op video</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: starting chat on multiple devices is not supported and will cause message delivery failures" xml:space="preserve">
<source>Warning: starting chat on multiple devices is not supported and will cause message delivery failures</source>
<target>Waarschuwing: het starten van de chat op meerdere apparaten wordt niet ondersteund en zal leiden tot mislukte bezorging van berichten</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: you may lose some data!" xml:space="preserve">
<source>Warning: you may lose some data!</source>
<target>Waarschuwing: u kunt sommige gegevens verliezen!</target>
@@ -5755,6 +6105,11 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
<target>Welkomst bericht</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Welcome message is too long" xml:space="preserve">
<source>Welcome message is too long</source>
<target>Welkomstbericht is te lang</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="What's new" xml:space="preserve">
<source>What's new</source>
<target>Wat is er nieuw</target>
@@ -5810,6 +6165,11 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak
<target>Jij</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You **must not** use the same database on two devices." xml:space="preserve">
<source>You **must not** use the same database on two devices.</source>
<target>U **mag** niet dezelfde database op twee apparaten gebruiken.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You accepted connection" xml:space="preserve">
<source>You accepted connection</source>
<target>Je hebt de verbinding geaccepteerd</target>
@@ -5897,6 +6257,11 @@ Deelnameverzoek herhalen?</target>
<target>U kunt ze later inschakelen via de privacy- en beveiligingsinstellingen van de app.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can give another try." xml:space="preserve">
<source>You can give another try.</source>
<target>Je kunt het nog een keer proberen.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can hide or mute a user profile - swipe it to the right." xml:space="preserve">
<source>You can hide or mute a user profile - swipe it to the right.</source>
<target>U kunt een gebruikers profiel verbergen of dempen - veeg het naar rechts.</target>
@@ -6291,7 +6656,7 @@ SimpleX servers kunnen uw profiel niet zien.</target>
<trans-unit id="blocked" xml:space="preserve">
<source>blocked</source>
<target>geblokkeerd</target>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="blocked %@" xml:space="preserve">
<source>blocked %@</source>
@@ -6301,7 +6666,7 @@ SimpleX servers kunnen uw profiel niet zien.</target>
<trans-unit id="blocked by admin" xml:space="preserve">
<source>blocked by admin</source>
<target>geblokkeerd door beheerder</target>
<note>blocked chat item</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="bold" xml:space="preserve">
<source>bold</source>
@@ -6615,7 +6980,7 @@ SimpleX servers kunnen uw profiel niet zien.</target>
</trans-unit>
<trans-unit id="incognito via contact address link" xml:space="preserve">
<source>incognito via contact address link</source>
<target>incognito via contactadres link</target>
<target>incognito via contact adres link</target>
<note>chat list item description</note>
</trans-unit>
<trans-unit id="incognito via group link" xml:space="preserve">
@@ -6685,7 +7050,7 @@ SimpleX servers kunnen uw profiel niet zien.</target>
</trans-unit>
<trans-unit id="left" xml:space="preserve">
<source>left</source>
<target>verlaten</target>
<target>is vertrokken</target>
<note>rcv group event chat item</note>
</trans-unit>
<trans-unit id="marked deleted" xml:space="preserve">
@@ -6731,7 +7096,7 @@ SimpleX servers kunnen uw profiel niet zien.</target>
<trans-unit id="moderated by %@" xml:space="preserve">
<source>moderated by %@</source>
<target>gemodereerd door %@</target>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="months" xml:space="preserve">
<source>months</source>
@@ -6800,6 +7165,11 @@ SimpleX servers kunnen uw profiel niet zien.</target>
<target>peer-to-peer</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve">
<source>quantum resistant e2e encryption</source>
<target>quantum bestendige e2e-codering</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="received answer…" xml:space="preserve">
<source>received answer…</source>
<target>antwoord gekregen…</target>
@@ -6875,6 +7245,11 @@ SimpleX servers kunnen uw profiel niet zien.</target>
<target>nieuwe profielfoto instellen</target>
<note>profile update event chat item</note>
</trans-unit>
<trans-unit id="standard end-to-end encryption" xml:space="preserve">
<source>standard end-to-end encryption</source>
<target>standaard end-to-end encryptie</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="starting…" xml:space="preserve">
<source>starting…</source>
<target>beginnen…</target>
@@ -6927,7 +7302,7 @@ SimpleX servers kunnen uw profiel niet zien.</target>
</trans-unit>
<trans-unit id="via contact address link" xml:space="preserve">
<source>via contact address link</source>
<target>via contactadres link</target>
<target>via contact adres link</target>
<note>chat list item description</note>
</trans-unit>
<trans-unit id="via group link" xml:space="preserve">
@@ -107,6 +107,11 @@
<target>%@ połączony</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ downloaded" xml:space="preserve">
<source>%@ downloaded</source>
<target>%@ pobrane</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ is connected!" xml:space="preserve">
<source>%@ is connected!</source>
<target>%@ jest połączony!</target>
@@ -127,6 +132,11 @@
<target>%@ serwery</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ uploaded" xml:space="preserve">
<source>%@ uploaded</source>
<target>%@ wgrane</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ wants to connect!" xml:space="preserve">
<source>%@ wants to connect!</source>
<target>%@ chce się połączyć!</target>
@@ -342,6 +352,11 @@
<target>**Najbardziej prywatny**: nie korzystaj z serwera powiadomień SimpleX Chat, sprawdzaj wiadomości okresowo w tle (zależy jak często korzystasz z aplikacji).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." xml:space="preserve">
<source>**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.</source>
<target>*Uwaga*: używanie tej samej bazy danych na dwóch urządzeniach zepsuje odszyfrowywanie wiadomości twoich połączeń, jako zabezpieczenie.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: you will NOT be able to recover or change passphrase if you lose it." xml:space="preserve">
<source>**Please note**: you will NOT be able to recover or change passphrase if you lose it.</source>
<target>**Uwaga**: NIE będziesz w stanie odzyskać lub zmienić hasła, jeśli je stracisz.</target>
@@ -357,6 +372,11 @@
<target>**Uwaga**: Natychmiastowe powiadomienia push wymagają hasła zapisanego w Keychain.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Warning**: the archive will be removed." xml:space="preserve">
<source>**Warning**: the archive will be removed.</source>
<target>**Ostrzeżenie**: archiwum zostanie usunięte.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**e2e encrypted** audio call" xml:space="preserve">
<source>**e2e encrypted** audio call</source>
<target>**szyfrowane e2e** połączenie audio</target>
@@ -613,6 +633,11 @@
<target>Zmiana adresu zostanie przerwana. Użyty zostanie stary adres odbiorczy.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can block a member for all." xml:space="preserve">
<source>Admins can block a member for all.</source>
<target>Administratorzy mogą blokować członka dla wszystkich.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can create the links to join groups." xml:space="preserve">
<source>Admins can create the links to join groups.</source>
<target>Administratorzy mogą tworzyć linki do dołączania do grup.</target>
@@ -668,6 +693,11 @@
<target>Wszystkie Twoje kontakty pozostaną połączone. Aktualizacja profilu zostanie wysłana do Twoich kontaktów.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." xml:space="preserve">
<source>All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.</source>
<target>Wszystkie twoje kontakty, konwersacje i pliki będą bezpiecznie szyfrowane i wgrywane w kawałkach do skonfigurowanych przekaźników XFTP.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow" xml:space="preserve">
<source>Allow</source>
<target>Pozwól</target>
@@ -793,6 +823,11 @@
<target>Kompilacja aplikacji: %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App data migration" xml:space="preserve">
<source>App data migration</source>
<target>Migracja danych aplikacji</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App encrypts new local files (except videos)." xml:space="preserve">
<source>App encrypts new local files (except videos).</source>
<target>Aplikacja szyfruje nowe lokalne pliki (bez filmów).</target>
@@ -828,6 +863,21 @@
<target>Wygląd</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Apply" xml:space="preserve">
<source>Apply</source>
<target>Zastosuj</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive and upload" xml:space="preserve">
<source>Archive and upload</source>
<target>Archiwizuj i prześlij</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<target>Archiwizowanie bazy danych</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Attach" xml:space="preserve">
<source>Attach</source>
<target>Dołącz</target>
@@ -1018,6 +1068,11 @@
<target>Anuluj</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel migration" xml:space="preserve">
<source>Cancel migration</source>
<target>Anuluj migrację</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cannot access keychain to save database password" xml:space="preserve">
<source>Cannot access keychain to save database password</source>
<target>Nie można uzyskać dostępu do pęku kluczy, aby zapisać hasło do bazy danych</target>
@@ -1119,6 +1174,11 @@
<target>Czat został zatrzymany. Jeśli korzystałeś już z tej bazy danych na innym urządzeniu, powinieneś przenieść ją z powrotem przed rozpoczęciem czatu.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<target>Czat zmigrowany!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat preferences" xml:space="preserve">
<source>Chat preferences</source>
<target>Preferencje czatu</target>
@@ -1139,6 +1199,11 @@
<target>Chiński i hiszpański interfejs</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose _Migrate from another device_ on the new device and scan QR code." xml:space="preserve">
<source>Choose _Migrate from another device_ on the new device and scan QR code.</source>
<target>Wybierz _Zmigruj z innego urządzenia_ na nowym urządzeniu i zeskanuj kod QR.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose file" xml:space="preserve">
<source>Choose file</source>
<target>Wybierz plik</target>
@@ -1209,6 +1274,11 @@
<target>Potwierdź aktualizacje bazy danych</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm network settings" xml:space="preserve">
<source>Confirm network settings</source>
<target>Potwierdź ustawienia sieciowe</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm new passphrase…" xml:space="preserve">
<source>Confirm new passphrase…</source>
<target>Potwierdź nowe hasło…</target>
@@ -1219,6 +1289,16 @@
<target>Potwierdź hasło</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm that you remember database passphrase to migrate it." xml:space="preserve">
<source>Confirm that you remember database passphrase to migrate it.</source>
<target>Potwierdź, że pamiętasz hasło do bazy danych, aby ją zmigrować.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm upload" xml:space="preserve">
<source>Confirm upload</source>
<target>Potwierdź wgranie</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect" xml:space="preserve">
<source>Connect</source>
<target>Połącz</target>
@@ -1478,6 +1558,11 @@ To jest twój jednorazowy link!</target>
<target>Utworzony w dniu %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating archive link" xml:space="preserve">
<source>Creating archive link</source>
<target>Tworzenie linku archiwum</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating link…" xml:space="preserve">
<source>Creating link…</source>
<target>Tworzenie linku…</target>
@@ -1698,6 +1783,11 @@ To nie może być cofnięte!</target>
<target>Usuń bazę danych</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database from this device" xml:space="preserve">
<source>Delete database from this device</source>
<target>Usuń bazę danych z tego urządzenia</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete file" xml:space="preserve">
<source>Delete file</source>
<target>Usuń plik</target>
@@ -1988,11 +2078,26 @@ To nie może być cofnięte!</target>
<target>Obniż wersję i otwórz czat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download failed" xml:space="preserve">
<source>Download failed</source>
<target>Pobieranie nie udane</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download file" xml:space="preserve">
<source>Download file</source>
<target>Pobierz plik</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Downloading archive" xml:space="preserve">
<source>Downloading archive</source>
<target>Pobieranie archiwum</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Downloading link details" xml:space="preserve">
<source>Downloading link details</source>
<target>Pobieranie szczegółów linku</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Duplicate display name!" xml:space="preserve">
<source>Duplicate display name!</source>
<target>Zduplikowana wyświetlana nazwa!</target>
@@ -2048,6 +2153,11 @@ To nie może być cofnięte!</target>
<target>Włącz dla wszystkich</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable in direct chats (BETA)!" xml:space="preserve">
<source>Enable in direct chats (BETA)!</source>
<target>Włącz w czatach bezpośrednich (BETA)!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable instant notifications?" xml:space="preserve">
<source>Enable instant notifications?</source>
<target>Włączyć natychmiastowe powiadomienia?</target>
@@ -2163,6 +2273,11 @@ To nie może być cofnięte!</target>
<target>Wpisz nazwę grupy…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase" xml:space="preserve">
<source>Enter passphrase</source>
<target>Wprowadź hasło</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase…" xml:space="preserve">
<source>Enter passphrase…</source>
<target>Wprowadź hasło…</target>
@@ -2223,6 +2338,11 @@ To nie może być cofnięte!</target>
<target>Błąd dodawania członka(ów)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error allowing contact PQ encryption" xml:space="preserve">
<source>Error allowing contact PQ encryption</source>
<target>Błąd pozwalania kontaktowi na szyfrowanie PQ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error changing address" xml:space="preserve">
<source>Error changing address</source>
<target>Błąd zmiany adresu</target>
@@ -2313,6 +2433,11 @@ To nie może być cofnięte!</target>
<target>Błąd usuwania profilu użytkownika</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error downloading the archive" xml:space="preserve">
<source>Error downloading the archive</source>
<target>Błąd pobierania archiwum</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error enabling delivery receipts!" xml:space="preserve">
<source>Error enabling delivery receipts!</source>
<target>Błąd włączania potwierdzeń dostawy!</target>
@@ -2388,6 +2513,11 @@ To nie może być cofnięte!</target>
<target>Błąd zapisu hasła do pęku kluczy</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error saving settings" xml:space="preserve">
<source>Error saving settings</source>
<target>Błąd zapisywania ustawień</target>
<note>when migrating</note>
</trans-unit>
<trans-unit id="Error saving user password" xml:space="preserve">
<source>Error saving user password</source>
<target>Błąd zapisu hasła użytkownika</target>
@@ -2458,6 +2588,16 @@ To nie może być cofnięte!</target>
<target>Błąd aktualizacji prywatności użytkownika</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error uploading the archive" xml:space="preserve">
<source>Error uploading the archive</source>
<target>Błąd wgrywania archiwum</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error verifying passphrase:" xml:space="preserve">
<source>Error verifying passphrase:</source>
<target>Błąd weryfikowania hasła:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error: " xml:space="preserve">
<source>Error: </source>
<target>Błąd: </target>
@@ -2508,6 +2648,11 @@ To nie może być cofnięte!</target>
<target>Wyeksportowane archiwum bazy danych.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exported file doesn't exist" xml:space="preserve">
<source>Exported file doesn't exist</source>
<target>Wyeksportowany plik nie istnieje</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exporting database archive…" xml:space="preserve">
<source>Exporting database archive…</source>
<target>Eksportowanie archiwum bazy danych…</target>
@@ -2578,6 +2723,16 @@ To nie może być cofnięte!</target>
<target>Filtruj nieprzeczytane i ulubione czaty.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration" xml:space="preserve">
<source>Finalize migration</source>
<target>Dokończ migrację</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration on another device." xml:space="preserve">
<source>Finalize migration on another device.</source>
<target>Dokończ migrację na innym urządzeniu.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finally, we have them! 🚀" xml:space="preserve">
<source>Finally, we have them! 🚀</source>
<target>W końcu je mamy! 🚀</target>
@@ -2868,6 +3023,11 @@ To nie może być cofnięte!</target>
<target>Jak korzystać z Twoich serwerów</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Hungarian interface" xml:space="preserve">
<source>Hungarian interface</source>
<target>Węgierski interfejs</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="ICE servers (one per line)" xml:space="preserve">
<source>ICE servers (one per line)</source>
<target>Serwery ICE (po jednym na linię)</target>
@@ -2933,6 +3093,16 @@ To nie może być cofnięte!</target>
<target>Importuj bazę danych</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Import failed" xml:space="preserve">
<source>Import failed</source>
<target>Import nie udał się</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Importing archive" xml:space="preserve">
<source>Importing archive</source>
<target>Importowanie archiwum</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Improved message delivery" xml:space="preserve">
<source>Improved message delivery</source>
<target>Ulepszona dostawa wiadomości</target>
@@ -2948,6 +3118,11 @@ To nie może być cofnięte!</target>
<target>Ulepszona konfiguracja serwera</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In order to continue, chat should be stopped." xml:space="preserve">
<source>In order to continue, chat should be stopped.</source>
<target>Aby konturować, czat musi zostać zatrzymany.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In reply to" xml:space="preserve">
<source>In reply to</source>
<target>W odpowiedzi na</target>
@@ -3060,6 +3235,11 @@ To nie może być cofnięte!</target>
<target>Nieprawidłowy link</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid migration confirmation" xml:space="preserve">
<source>Invalid migration confirmation</source>
<target>Nieprawidłowe potwierdzenie migracji</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid name!" xml:space="preserve">
<source>Invalid name!</source>
<target>Nieprawidłowa nazwa!</target>
@@ -3428,6 +3608,11 @@ To jest twój link do grupy %@!</target>
<target>Tekst wiadomości</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message too large" xml:space="preserve">
<source>Message too large</source>
<target>Wiadomość jest zbyt duża</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages" xml:space="preserve">
<source>Messages</source>
<target>Wiadomości</target>
@@ -3443,11 +3628,56 @@ To jest twój link do grupy %@!</target>
<target>Wiadomości od %@ zostaną pokazane!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<target>Wiadomości, pliki i połączenia są chronione przez **szyfrowanie end-to-end** z doskonałym utajnianiem z wyprzedzeniem i odzyskiem po złamaniu.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<target>Wiadomości, pliki i połączenia są chronione przez **kwantowo odporne szyfrowanie end-to-end** z doskonałym utajnianiem z wyprzedzeniem i odzyskiem po złamaniu.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate device" xml:space="preserve">
<source>Migrate device</source>
<target>Zmigruj urządzenie</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate from another device" xml:space="preserve">
<source>Migrate from another device</source>
<target>Zmigruj z innego urządzenia</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate here" xml:space="preserve">
<source>Migrate here</source>
<target>Zmigruj tutaj</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device" xml:space="preserve">
<source>Migrate to another device</source>
<target>Zmigruj do innego urządzenia</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device via QR code." xml:space="preserve">
<source>Migrate to another device via QR code.</source>
<target>Zmigruj do innego urządzenia przez kod QR.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating" xml:space="preserve">
<source>Migrating</source>
<target>Migrowanie</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating database archive…" xml:space="preserve">
<source>Migrating database archive…</source>
<target>Migrowanie archiwum bazy danych…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration complete" xml:space="preserve">
<source>Migration complete</source>
<target>Migracja zakończona</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration error:" xml:space="preserve">
<source>Migration error:</source>
<target>Błąd migracji:</target>
@@ -3807,6 +4037,11 @@ To jest twój link do grupy %@!</target>
<target>Grupa otwarta</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Open migration to another device" xml:space="preserve">
<source>Open migration to another device</source>
<target>Otwórz migrację na innym urządzeniu</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Open user profiles" xml:space="preserve">
<source>Open user profiles</source>
<target>Otwórz profile użytkownika</target>
@@ -3822,11 +4057,21 @@ To jest twój link do grupy %@!</target>
<target>Otwieranie aplikacji…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
<source>Or paste archive link</source>
<target>Lub wklej link archiwum</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or scan QR code" xml:space="preserve">
<source>Or scan QR code</source>
<target>Lub zeskanuj kod QR</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or securely share this file link" xml:space="preserve">
<source>Or securely share this file link</source>
<target>Lub bezpiecznie udostępnij ten link pliku</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or show this code" xml:space="preserve">
<source>Or show this code</source>
<target>Lub pokaż ten kod</target>
@@ -3912,6 +4157,11 @@ To jest twój link do grupy %@!</target>
<target>Stały błąd odszyfrowania</target>
<note>message decrypt error item</note>
</trans-unit>
<trans-unit id="Picture-in-picture calls" xml:space="preserve">
<source>Picture-in-picture calls</source>
<target>Połączenia obraz-w-obrazie</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>Poproś Twój kontakt o włączenie wysyłania wiadomości głosowych.</target>
@@ -3932,6 +4182,11 @@ To jest twój link do grupy %@!</target>
<target>Proszę sprawdzić preferencje Twoje i Twojego kontaktu.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please confirm that network settings are correct for this device." xml:space="preserve">
<source>Please confirm that network settings are correct for this device.</source>
<target>Proszę potwierdzić, że ustawienia sieciowe są prawidłowe dla tego urządzenia.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please contact developers.&#10;Error: %@" xml:space="preserve">
<source>Please contact developers.
Error: %@</source>
@@ -3989,6 +4244,11 @@ Błąd: %@</target>
<target>Możliwe, że odcisk palca certyfikatu w adresie serwera jest nieprawidłowy</target>
<note>server test error</note>
</trans-unit>
<trans-unit id="Post-quantum E2EE" xml:space="preserve">
<source>Post-quantum E2EE</source>
<target>Postkwantowe E2EE</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Preserve the last message draft, with attachments." xml:space="preserve">
<source>Preserve the last message draft, with attachments.</source>
<target>Zachowaj ostatnią wersję roboczą wiadomości wraz z załącznikami.</target>
@@ -4124,6 +4384,16 @@ Błąd: %@</target>
<target>Powiadomienia push</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push server" xml:space="preserve">
<source>Push server</source>
<target>Serwer Push</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Quantum resistant encryption" xml:space="preserve">
<source>Quantum resistant encryption</source>
<target>Kwantowo odporne szyfrowanie</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Rate the app" xml:space="preserve">
<source>Rate the app</source>
<target>Oceń aplikację</target>
@@ -4309,11 +4579,26 @@ Błąd: %@</target>
<target>Powtórzyć prośbę połączenia?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat download" xml:space="preserve">
<source>Repeat download</source>
<target>Powtórz pobieranie</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat import" xml:space="preserve">
<source>Repeat import</source>
<target>Powtórz importowanie</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat join request?" xml:space="preserve">
<source>Repeat join request?</source>
<target>Powtórzyć prośbę dołączenia?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat upload" xml:space="preserve">
<source>Repeat upload</source>
<target>Powtórz wgrywanie</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reply" xml:space="preserve">
<source>Reply</source>
<target>Odpowiedz</target>
@@ -4414,6 +4699,11 @@ Błąd: %@</target>
<target>Serwery SMP</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safer groups" xml:space="preserve">
<source>Safer groups</source>
<target>Bezpieczniejsze grupy</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Zapisz</target>
@@ -4779,6 +5069,11 @@ Błąd: %@</target>
<target>Ustaw pin</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase" xml:space="preserve">
<source>Set passphrase</source>
<target>Ustaw hasło</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase to export" xml:space="preserve">
<source>Set passphrase to export</source>
<target>Ustaw hasło do eksportu</target>
@@ -4834,6 +5129,11 @@ Błąd: %@</target>
<target>Udostępnij kontaktom</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show QR code" xml:space="preserve">
<source>Show QR code</source>
<target>Pokaż kod QR</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show calls in phone history" xml:space="preserve">
<source>Show calls in phone history</source>
<target>Pokaż połączenia w historii telefonu</target>
@@ -4974,6 +5274,11 @@ Błąd: %@</target>
<target>Zatrzymaj SimpleX</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Stop chat" xml:space="preserve">
<source>Stop chat</source>
<target>Zatrzymaj czat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stop chat to enable database actions" xml:space="preserve">
<source>Stop chat to enable database actions</source>
<target>Zatrzymaj czat, aby umożliwić działania na bazie danych</target>
@@ -5014,6 +5319,11 @@ Błąd: %@</target>
<target>Przestać udostępniać adres?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stopping chat" xml:space="preserve">
<source>Stopping chat</source>
<target>Zatrzymywanie czatu</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Submit" xml:space="preserve">
<source>Submit</source>
<target>Zatwierdź</target>
@@ -5261,6 +5571,16 @@ Może się to zdarzyć z powodu jakiegoś błędu lub gdy połączenie jest skom
<target>Tego działania nie można cofnąć - Twój profil, kontakty, wiadomości i pliki zostaną nieodwracalnie utracone.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="This chat is protected by end-to-end encryption." xml:space="preserve">
<source>This chat is protected by end-to-end encryption.</source>
<target>Ten czat jest chroniony przez szyfrowanie end-to-end.</target>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This chat is protected by quantum resistant end-to-end encryption." xml:space="preserve">
<source>This chat is protected by quantum resistant end-to-end encryption.</source>
<target>Ten czat jest chroniony przez kwantowo odporne szyfrowanie end-to-end.</target>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This device name" xml:space="preserve">
<source>This device name</source>
<target>Nazwa tego urządzenia</target>
@@ -5555,11 +5875,21 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc
<target>Zaktualizuj i otwórz czat</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload failed" xml:space="preserve">
<source>Upload failed</source>
<target>Wgrywanie nie udane</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload file" xml:space="preserve">
<source>Upload file</source>
<target>Prześlij plik</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Uploading archive" xml:space="preserve">
<source>Uploading archive</source>
<target>Wgrywanie archiwum</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use .onion hosts" xml:space="preserve">
<source>Use .onion hosts</source>
<target>Użyj hostów .onion</target>
@@ -5610,6 +5940,11 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc
<target>Użyj serwera</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app while in the call." xml:space="preserve">
<source>Use the app while in the call.</source>
<target>Używaj aplikacji podczas połączenia.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>Profil użytkownika</target>
@@ -5645,6 +5980,16 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc
<target>Zweryfikuj połączenia</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify database passphrase" xml:space="preserve">
<source>Verify database passphrase</source>
<target>Zweryfikuj hasło bazy danych</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify passphrase" xml:space="preserve">
<source>Verify passphrase</source>
<target>Zweryfikuj hasło</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify security code" xml:space="preserve">
<source>Verify security code</source>
<target>Weryfikuj kod bezpieczeństwa</target>
@@ -5735,6 +6080,11 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc
<target>Oczekiwanie na film</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: starting chat on multiple devices is not supported and will cause message delivery failures" xml:space="preserve">
<source>Warning: starting chat on multiple devices is not supported and will cause message delivery failures</source>
<target>Ostrzeżenie: rozpoczęcie czatu na wielu urządzeniach nie jest wspierane i spowoduje niepowodzenia dostarczania wiadomości</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: you may lose some data!" xml:space="preserve">
<source>Warning: you may lose some data!</source>
<target>Uwaga: możesz stracić niektóre dane!</target>
@@ -5755,6 +6105,11 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc
<target>Wiadomość powitalna</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Welcome message is too long" xml:space="preserve">
<source>Welcome message is too long</source>
<target>Wiadomość powitalna jest zbyt długa</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="What's new" xml:space="preserve">
<source>What's new</source>
<target>Co nowego</target>
@@ -5810,6 +6165,11 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc
<target>Ty</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You **must not** use the same database on two devices." xml:space="preserve">
<source>You **must not** use the same database on two devices.</source>
<target>**Nie możesz** używać tej samej bazy na dwóch urządzeniach.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You accepted connection" xml:space="preserve">
<source>You accepted connection</source>
<target>Zaakceptowałeś połączenie</target>
@@ -5897,6 +6257,11 @@ Powtórzyć prośbę dołączenia?</target>
<target>Możesz je włączyć później w ustawieniach Prywatności i Bezpieczeństwa aplikacji.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can give another try." xml:space="preserve">
<source>You can give another try.</source>
<target>Możesz spróbować ponownie.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can hide or mute a user profile - swipe it to the right." xml:space="preserve">
<source>You can hide or mute a user profile - swipe it to the right.</source>
<target>Możesz ukryć lub wyciszyć profil użytkownika - przesuń palcem w prawo.</target>
@@ -6291,7 +6656,7 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu.</target>
<trans-unit id="blocked" xml:space="preserve">
<source>blocked</source>
<target>zablokowany</target>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="blocked %@" xml:space="preserve">
<source>blocked %@</source>
@@ -6301,7 +6666,7 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu.</target>
<trans-unit id="blocked by admin" xml:space="preserve">
<source>blocked by admin</source>
<target>zablokowany przez admina</target>
<note>blocked chat item</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="bold" xml:space="preserve">
<source>bold</source>
@@ -6731,7 +7096,7 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu.</target>
<trans-unit id="moderated by %@" xml:space="preserve">
<source>moderated by %@</source>
<target>moderowany przez %@</target>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="months" xml:space="preserve">
<source>months</source>
@@ -6800,6 +7165,11 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu.</target>
<target>peer-to-peer</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve">
<source>quantum resistant e2e encryption</source>
<target>kwantowo odporne szyfrowanie e2e</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="received answer…" xml:space="preserve">
<source>received answer…</source>
<target>otrzymano odpowiedź…</target>
@@ -6875,6 +7245,11 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu.</target>
<target>ustaw nowe zdjęcie profilu</target>
<note>profile update event chat item</note>
</trans-unit>
<trans-unit id="standard end-to-end encryption" xml:space="preserve">
<source>standard end-to-end encryption</source>
<target>standardowe szyfrowanie end-to-end</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="starting…" xml:space="preserve">
<source>starting…</source>
<target>uruchamianie…</target>
@@ -69,7 +69,7 @@
</trans-unit>
<trans-unit id="%@ is not verified" xml:space="preserve" approved="no">
<source>%@ is not verified</source>
<target state="translated">%@ não foi verificado</target>
<target state="translated">%@ não foi verificado(a)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ is verified" xml:space="preserve" approved="no">
@@ -84,12 +84,12 @@
</trans-unit>
<trans-unit id="%d days" xml:space="preserve" approved="no">
<source>%d days</source>
<target state="translated">%d dia(s)</target>
<target state="translated">%d dias</target>
<note>message ttl</note>
</trans-unit>
<trans-unit id="%d hours" xml:space="preserve" approved="no">
<source>%d hours</source>
<target state="translated">%d hora(s)</target>
<target state="translated">%d horas</target>
<note>message ttl</note>
</trans-unit>
<trans-unit id="%d min" xml:space="preserve" approved="no">
@@ -99,7 +99,7 @@
</trans-unit>
<trans-unit id="%d months" xml:space="preserve" approved="no">
<source>%d months</source>
<target state="translated">%d mês(es)</target>
<target state="translated">%d meses</target>
<note>message ttl</note>
</trans-unit>
<trans-unit id="%d sec" xml:space="preserve" approved="no">
@@ -109,7 +109,7 @@
</trans-unit>
<trans-unit id="%d skipped message(s)" xml:space="preserve" approved="no">
<source>%d skipped message(s)</source>
<target state="translated">%d mensagem(ns) ignorada(s)</target>
<target state="translated">%d mensagem(ns) omitida(s)</target>
<note>integrity error chat item</note>
</trans-unit>
<trans-unit id="%lld" xml:space="preserve" approved="no">
@@ -5189,6 +5189,51 @@ Isso pode acontecer por causa de algum bug ou quando a conexão está comprometi
<target state="translated">Desaparecerá: %@</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="# %@" xml:space="preserve" approved="no">
<source># %@</source>
<target state="translated"># %@</target>
<note>copied message info title, # &lt;title&gt;</note>
</trans-unit>
<trans-unit id="## History" xml:space="preserve" approved="no">
<source>## History</source>
<target state="translated">## Histórico</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="## In reply to" xml:space="preserve" approved="no">
<source>## In reply to</source>
<target state="translated">## Em resposta a</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="%@ connected" xml:space="preserve" approved="no">
<source>%@ connected</source>
<target state="translated">%@ conectado(a)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@, %@ and %lld members" xml:space="preserve" approved="no">
<source>%@, %@ and %lld members</source>
<target state="translated">%@, %@ e %lld membros</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ and %@ connected" xml:space="preserve" approved="no">
<source>%@ and %@ connected</source>
<target state="translated">%@ e %@ conectados</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@, %@ and %lld other members connected" xml:space="preserve" approved="no">
<source>%@, %@ and %lld other members connected</source>
<target state="translated">%@, %@ e %lld e outros membros se conectaram</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ and %@" xml:space="preserve" approved="no">
<source>%@ and %@</source>
<target state="translated">%@ e %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ at %@:" xml:space="preserve" approved="no">
<source>%1$@ at %2$@:</source>
<target state="translated">%1$@ em %2$@:</target>
<note>copied message info, &lt;sender&gt; at &lt;time&gt;</note>
</trans-unit>
</body>
</file>
<file original="en.lproj/SimpleX--iOS--InfoPlist.strings" source-language="en" target-language="pt-BR" datatype="plaintext">
@@ -15,32 +15,39 @@
Available in v5.1</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" " xml:space="preserve">
<trans-unit id=" " xml:space="preserve" approved="no">
<source> </source>
<target state="translated"> </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" " xml:space="preserve">
<trans-unit id=" " xml:space="preserve" approved="no">
<source> </source>
<target state="translated"> </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" " xml:space="preserve">
<trans-unit id=" " xml:space="preserve" approved="no">
<source> </source>
<target state="translated"> </target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (" xml:space="preserve">
<trans-unit id=" (" xml:space="preserve" approved="no">
<source> (</source>
<target state="translated"> (</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id=" (can be copied)" xml:space="preserve">
<trans-unit id=" (can be copied)" xml:space="preserve" approved="no">
<source> (can be copied)</source>
<target state="translated"> .(pode ser copiado)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="!1 colored!" xml:space="preserve">
<trans-unit id="!1 colored!" xml:space="preserve" approved="no">
<source>!1 colored!</source>
<target state="translated">!1 colorido!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="#secret#" xml:space="preserve">
<trans-unit id="#secret#" xml:space="preserve" approved="no">
<source>#secret#</source>
<target state="translated">#secreto#</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@" xml:space="preserve">
@@ -55,48 +62,59 @@ Available in v5.1</source>
<source>%@ / %@</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ is connected!" xml:space="preserve">
<trans-unit id="%@ is connected!" xml:space="preserve" approved="no">
<source>%@ is connected!</source>
<target state="translated">%@ está conectado!</target>
<note>notification title</note>
</trans-unit>
<trans-unit id="%@ is not verified" xml:space="preserve">
<trans-unit id="%@ is not verified" xml:space="preserve" approved="no">
<source>%@ is not verified</source>
<target state="translated">%@ não foi verificado</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ is verified" xml:space="preserve">
<trans-unit id="%@ is verified" xml:space="preserve" approved="no">
<source>%@ is verified</source>
<target state="translated">%@ foi verificado</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ servers" xml:space="preserve">
<trans-unit id="%@ servers" xml:space="preserve" approved="no">
<source>%@ servers</source>
<target state="translated">%@ servidores</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ wants to connect!" xml:space="preserve">
<trans-unit id="%@ wants to connect!" xml:space="preserve" approved="no">
<source>%@ wants to connect!</source>
<target state="translated">%@ quer se conectar!</target>
<note>notification title</note>
</trans-unit>
<trans-unit id="%d days" xml:space="preserve">
<trans-unit id="%d days" xml:space="preserve" approved="no">
<source>%d days</source>
<target state="translated">%d dias</target>
<note>message ttl</note>
</trans-unit>
<trans-unit id="%d hours" xml:space="preserve">
<trans-unit id="%d hours" xml:space="preserve" approved="no">
<source>%d hours</source>
<target state="translated">%d horas</target>
<note>message ttl</note>
</trans-unit>
<trans-unit id="%d min" xml:space="preserve">
<trans-unit id="%d min" xml:space="preserve" approved="no">
<source>%d min</source>
<target state="translated">%d minuto</target>
<note>message ttl</note>
</trans-unit>
<trans-unit id="%d months" xml:space="preserve">
<trans-unit id="%d months" xml:space="preserve" approved="no">
<source>%d months</source>
<target state="translated">%d meses</target>
<note>message ttl</note>
</trans-unit>
<trans-unit id="%d sec" xml:space="preserve">
<trans-unit id="%d sec" xml:space="preserve" approved="no">
<source>%d sec</source>
<target state="translated">%d segundo</target>
<note>message ttl</note>
</trans-unit>
<trans-unit id="%d skipped message(s)" xml:space="preserve">
<trans-unit id="%d skipped message(s)" xml:space="preserve" approved="no">
<source>%d skipped message(s)</source>
<target state="translated">%d mensagem(s) ignorada(s)</target>
<note>integrity error chat item</note>
</trans-unit>
<trans-unit id="%lld" xml:space="preserve">
@@ -107,28 +125,34 @@ Available in v5.1</source>
<source>%lld %@</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%lld contact(s) selected" xml:space="preserve">
<trans-unit id="%lld contact(s) selected" xml:space="preserve" approved="no">
<source>%lld contact(s) selected</source>
<target state="translated">%lld contato(s) selecionado(s)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%lld file(s) with total size of %@" xml:space="preserve">
<trans-unit id="%lld file(s) with total size of %@" xml:space="preserve" approved="no">
<source>%lld file(s) with total size of %@</source>
<target state="translated">%lld arquivo(s) com tamanho total de %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%lld members" xml:space="preserve">
<trans-unit id="%lld members" xml:space="preserve" approved="no">
<source>%lld members</source>
<target state="translated">%lld membros</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%lld minutes" xml:space="preserve">
<trans-unit id="%lld minutes" xml:space="preserve" approved="no">
<source>%lld minutes</source>
<target state="translated">%lld minutos</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%lld second(s)" xml:space="preserve">
<trans-unit id="%lld second(s)" xml:space="preserve" approved="no">
<source>%lld second(s)</source>
<target state="translated">%lld segundo(s)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%lld seconds" xml:space="preserve">
<trans-unit id="%lld seconds" xml:space="preserve" approved="no">
<source>%lld seconds</source>
<target state="translated">%lld segundos</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%lldd" xml:space="preserve">
@@ -159,12 +183,14 @@ Available in v5.1</source>
<source>%lldw</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%u messages failed to decrypt." xml:space="preserve">
<trans-unit id="%u messages failed to decrypt." xml:space="preserve" approved="no">
<source>%u messages failed to decrypt.</source>
<target state="translated">%u mensagens não foram descriptografadas.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%u messages skipped." xml:space="preserve">
<trans-unit id="%u messages skipped." xml:space="preserve" approved="no">
<source>%u messages skipped.</source>
<target state="translated">%u mensagens ignoradas.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(" xml:space="preserve">
@@ -175,48 +201,56 @@ Available in v5.1</source>
<source>)</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Add new contact**: to create your one-time QR Code for your contact." xml:space="preserve">
<trans-unit id="**Add new contact**: to create your one-time QR Code for your contact." xml:space="preserve" approved="no">
<source>**Add new contact**: to create your one-time QR Code or link for your contact.</source>
<target state="translated">**Adicionar novo contato**: para criar seu QR Code único ou link para seu contato.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Create link / QR code** for your contact to use." xml:space="preserve">
<source>**Create link / QR code** for your contact to use.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**More private**: check new messages every 20 minutes. Device token is shared with SimpleX Chat server, but not how many contacts or messages you have." xml:space="preserve">
<trans-unit id="**More private**: check new messages every 20 minutes. Device token is shared with SimpleX Chat server, but not how many contacts or messages you have." xml:space="preserve" approved="no">
<source>**More private**: check new messages every 20 minutes. Device token is shared with SimpleX Chat server, but not how many contacts or messages you have.</source>
<target state="translated">**Mais privado**: verifique novas mensagens a cada 20 minutos. O token do dispositivo é compartilhado com o servidor SimpleX Chat, mas não com quantos contatos ou mensagens você possui.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app)." xml:space="preserve">
<trans-unit id="**Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app)." xml:space="preserve" approved="no">
<source>**Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app).</source>
<target state="translated">**Totalmente privado**: não use o servidor de notificações do SimpleX Chat, verifique as mensagens periodicamente em segundo plano (depende da frequência com que você usa o aplicativo).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Paste received link** or open it in the browser and tap **Open in mobile app**." xml:space="preserve">
<source>**Paste received link** or open it in the browser and tap **Open in mobile app**.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: you will NOT be able to recover or change passphrase if you lose it." xml:space="preserve">
<trans-unit id="**Please note**: you will NOT be able to recover or change passphrase if you lose it." xml:space="preserve" approved="no">
<source>**Please note**: you will NOT be able to recover or change passphrase if you lose it.</source>
<target state="translated">**Atenção**: Você NÃO poderá recuperar ou alterar a senha caso a perca.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Recommended**: device token and notifications are sent to SimpleX Chat notification server, but not the message content, size or who it is from." xml:space="preserve">
<trans-unit id="**Recommended**: device token and notifications are sent to SimpleX Chat notification server, but not the message content, size or who it is from." xml:space="preserve" approved="no">
<source>**Recommended**: device token and notifications are sent to SimpleX Chat notification server, but not the message content, size or who it is from.</source>
<target state="translated">**Recomendado**: O token do dispositivo e as notificações são enviados ao servidor de notificação do SimpleX Chat, mas não o conteúdo, o tamanho da mensagem ou de quem ela é.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Scan QR code**: to connect to your contact in person or via video call." xml:space="preserve">
<source>**Scan QR code**: to connect to your contact in person or via video call.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Warning**: Instant push notifications require passphrase saved in Keychain." xml:space="preserve">
<trans-unit id="**Warning**: Instant push notifications require passphrase saved in Keychain." xml:space="preserve" approved="no">
<source>**Warning**: Instant push notifications require passphrase saved in Keychain.</source>
<target state="translated">**Aviso**: As notificações push instantâneas exigem uma senha salva nas Chaves.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**e2e encrypted** audio call" xml:space="preserve">
<trans-unit id="**e2e encrypted** audio call" xml:space="preserve" approved="no">
<source>**e2e encrypted** audio call</source>
<target state="translated">** Criptografado e2e** chamada de áudio</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**e2e encrypted** video call" xml:space="preserve">
<trans-unit id="**e2e encrypted** video call" xml:space="preserve" approved="no">
<source>**e2e encrypted** video call</source>
<target state="translated">**Criptografado e2e** chamada de vídeo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="*bold*" xml:space="preserve">
@@ -353,144 +387,175 @@ Available in v5.1</source>
<source>All group members will remain connected.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All messages will be deleted - this cannot be undone! The messages will be deleted ONLY for you." xml:space="preserve">
<trans-unit id="All messages will be deleted - this cannot be undone! The messages will be deleted ONLY for you." xml:space="preserve" approved="no">
<source>All messages will be deleted - this cannot be undone! The messages will be deleted ONLY for you.</source>
<target state="translated">Todas as mensagens serão apagadas isso não pode ser desfeito! As mensagens serão apagadas SOMENTE para você.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All your contacts will remain connected" xml:space="preserve">
<source>All your contacts will remain connected</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow" xml:space="preserve">
<trans-unit id="Allow" xml:space="preserve" approved="no">
<source>Allow</source>
<target state="translated">Permitir</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow calls only if your contact allows them." xml:space="preserve">
<trans-unit id="Allow calls only if your contact allows them." xml:space="preserve" approved="no">
<source>Allow calls only if your contact allows them.</source>
<target state="translated">Permita chamadas somente se seu contato permitir.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve">
<trans-unit id="Allow disappearing messages only if your contact allows it to you." xml:space="preserve" approved="no">
<source>Allow disappearing messages only if your contact allows it to you.</source>
<target state="translated">Permita o desaparecimento de mensagens somente se o seu contato permitir.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow irreversible message deletion only if your contact allows it to you." xml:space="preserve">
<source>Allow irreversible message deletion only if your contact allows it to you.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow sending direct messages to members." xml:space="preserve">
<trans-unit id="Allow sending direct messages to members." xml:space="preserve" approved="no">
<source>Allow sending direct messages to members.</source>
<target state="translated">Permitir o envio de mensagens diretas aos membros.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow sending disappearing messages." xml:space="preserve">
<trans-unit id="Allow sending disappearing messages." xml:space="preserve" approved="no">
<source>Allow sending disappearing messages.</source>
<target state="translated">Permitir o envio de mensagens que desaparecem.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow to irreversibly delete sent messages." xml:space="preserve">
<source>Allow to irreversibly delete sent messages.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow to send voice messages." xml:space="preserve">
<trans-unit id="Allow to send voice messages." xml:space="preserve" approved="no">
<source>Allow to send voice messages.</source>
<target state="translated">Permitir enviar mensagens de voz.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow voice messages only if your contact allows them." xml:space="preserve">
<trans-unit id="Allow voice messages only if your contact allows them." xml:space="preserve" approved="no">
<source>Allow voice messages only if your contact allows them.</source>
<target state="translated">Permita mensagens de voz apenas se o seu contato permitir.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow voice messages?" xml:space="preserve">
<trans-unit id="Allow voice messages?" xml:space="preserve" approved="no">
<source>Allow voice messages?</source>
<target state="translated">Permitir mensagens de voz?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow your contacts to call you." xml:space="preserve">
<trans-unit id="Allow your contacts to call you." xml:space="preserve" approved="no">
<source>Allow your contacts to call you.</source>
<target state="translated">Permita que seus contatos liguem para você.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow your contacts to irreversibly delete sent messages." xml:space="preserve">
<source>Allow your contacts to irreversibly delete sent messages.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow your contacts to send disappearing messages." xml:space="preserve">
<trans-unit id="Allow your contacts to send disappearing messages." xml:space="preserve" approved="no">
<source>Allow your contacts to send disappearing messages.</source>
<target state="translated">Permita que seus contatos enviem mensagens que desaparecem.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow your contacts to send voice messages." xml:space="preserve">
<trans-unit id="Allow your contacts to send voice messages." xml:space="preserve" approved="no">
<source>Allow your contacts to send voice messages.</source>
<target state="translated">Permita que seus contatos enviem mensagens de voz.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Already connected?" xml:space="preserve">
<trans-unit id="Already connected?" xml:space="preserve" approved="no">
<source>Already connected?</source>
<target state="translated">Já conectado?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Always use relay" xml:space="preserve">
<trans-unit id="Always use relay" xml:space="preserve" approved="no">
<source>Always use relay</source>
<target state="translated">Sempre usar retransmissão</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Answer call" xml:space="preserve">
<trans-unit id="Answer call" xml:space="preserve" approved="no">
<source>Answer call</source>
<target state="translated">Atender chamada</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App build: %@" xml:space="preserve">
<trans-unit id="App build: %@" xml:space="preserve" approved="no">
<source>App build: %@</source>
<target state="translated">Versão do Aplicativo: %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App icon" xml:space="preserve">
<trans-unit id="App icon" xml:space="preserve" approved="no">
<source>App icon</source>
<target state="translated">Ícone do Aplicativo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App passcode" xml:space="preserve">
<trans-unit id="App passcode" xml:space="preserve" approved="no">
<source>App passcode</source>
<target state="translated">Senha do Aplicativo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App version" xml:space="preserve">
<trans-unit id="App version" xml:space="preserve" approved="no">
<source>App version</source>
<target state="translated">Versão do Aplicativo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App version: v%@" xml:space="preserve">
<trans-unit id="App version: v%@" xml:space="preserve" approved="no">
<source>App version: v%@</source>
<target state="translated">Versão do Aplicativo: v%@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Appearance" xml:space="preserve">
<trans-unit id="Appearance" xml:space="preserve" approved="no">
<source>Appearance</source>
<target state="translated">Aparência</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Attach" xml:space="preserve">
<trans-unit id="Attach" xml:space="preserve" approved="no">
<source>Attach</source>
<target state="translated">Anexar</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Audio &amp; video calls" xml:space="preserve">
<trans-unit id="Audio &amp; video calls" xml:space="preserve" approved="no">
<source>Audio &amp; video calls</source>
<target state="translated">Chamadas de áudio e vídeo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Audio and video calls" xml:space="preserve">
<trans-unit id="Audio and video calls" xml:space="preserve" approved="no">
<source>Audio and video calls</source>
<target state="translated">Chamadas de áudio e vídeo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Audio/video calls" xml:space="preserve">
<trans-unit id="Audio/video calls" xml:space="preserve" approved="no">
<source>Audio/video calls</source>
<target state="translated">Chamadas de áudio/vídeo</target>
<note>chat feature</note>
</trans-unit>
<trans-unit id="Audio/video calls are prohibited." xml:space="preserve">
<trans-unit id="Audio/video calls are prohibited." xml:space="preserve" approved="no">
<source>Audio/video calls are prohibited.</source>
<target state="translated">Chamadas de áudio/vídeo são proibidas.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Authentication cancelled" xml:space="preserve">
<trans-unit id="Authentication cancelled" xml:space="preserve" approved="no">
<source>Authentication cancelled</source>
<target state="translated">Autenticação cancelada</target>
<note>PIN entry</note>
</trans-unit>
<trans-unit id="Authentication failed" xml:space="preserve">
<trans-unit id="Authentication failed" xml:space="preserve" approved="no">
<source>Authentication failed</source>
<target state="translated">Falha na autenticação</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Authentication is required before the call is connected, but you may miss calls." xml:space="preserve">
<trans-unit id="Authentication is required before the call is connected, but you may miss calls." xml:space="preserve" approved="no">
<source>Authentication is required before the call is connected, but you may miss calls.</source>
<target state="translated">A autenticação é necessária antes que a chamada seja conectada, mas você pode perder chamadas.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Authentication unavailable" xml:space="preserve">
<trans-unit id="Authentication unavailable" xml:space="preserve" approved="no">
<source>Authentication unavailable</source>
<target state="translated">Autenticação indisponível</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Auto-accept contact requests" xml:space="preserve">
<trans-unit id="Auto-accept contact requests" xml:space="preserve" approved="no">
<source>Auto-accept contact requests</source>
<target state="translated">Aceitar solicitações de contato automaticamente</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Auto-accept images" xml:space="preserve">
@@ -4162,6 +4227,226 @@ SimpleX servers cannot see your profile.</source>
<source>\~strike~</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="## In reply to" xml:space="preserve" approved="no">
<source>## In reply to</source>
<target state="translated">## Em resposta a</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="%@ uploaded" xml:space="preserve" approved="no">
<source>%@ uploaded</source>
<target state="translated">%@ enviado</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%d weeks" xml:space="preserve" approved="no">
<source>%d weeks</source>
<target state="translated">%d semanas</target>
<note>time interval</note>
</trans-unit>
<trans-unit id="%lld messages blocked by admin" xml:space="preserve" approved="no">
<source>%lld messages blocked by admin</source>
<target state="translated">%lld mensagens bloqueadas pelo administrador</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%lld new interface languages" xml:space="preserve" approved="no">
<source>%lld new interface languages</source>
<target state="translated">%lld novas interface de idiomas</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Add contact**: to create a new invitation link, or connect via a link you received." xml:space="preserve" approved="no">
<source>**Add contact**: to create a new invitation link, or connect via a link you received.</source>
<target state="translated">**Adicionar contato**: para criar um novo link de convite ou conectar-se por meio de um link que você recebeu.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Create group**: to create a new group." xml:space="preserve" approved="no">
<source>**Create group**: to create a new group.</source>
<target state="translated">**Criar grupo**: para criar um novo grupo.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." xml:space="preserve" approved="no">
<source>**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.</source>
<target state="translated">**Observação**: usar o mesmo banco de dados em dois dispositivos interromperá a descriptografia de mensagens de suas conexões, como proteção de segurança.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="## History" xml:space="preserve" approved="no">
<source>## History</source>
<target state="translated">## Histórico</target>
<note>copied message info</note>
</trans-unit>
<trans-unit id="**Warning**: the archive will be removed." xml:space="preserve" approved="no">
<source>**Warning**: the archive will be removed.</source>
<target state="translated">**Atenção**: O arquivo será removido.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ and %@" xml:space="preserve" approved="no">
<source>%@ and %@</source>
<target state="translated">%@ e %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ and %@ connected" xml:space="preserve" approved="no">
<source>%@ and %@ connected</source>
<target state="translated">%@ e %@ conectado</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ at %@:" xml:space="preserve" approved="no">
<source>%1$@ at %2$@:</source>
<target state="translated">%1$@ em %2$@:</target>
<note>copied message info, &lt;sender&gt; at &lt;time&gt;</note>
</trans-unit>
<trans-unit id="%@ connected" xml:space="preserve" approved="no">
<source>%@ connected</source>
<target state="translated">%@ conectado</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@, %@ and %lld members" xml:space="preserve" approved="no">
<source>%@, %@ and %lld members</source>
<target state="translated">%@, %@ e %lld membros</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@, %@ and %lld other members connected" xml:space="preserve" approved="no">
<source>%@, %@ and %lld other members connected</source>
<target state="translated">%@, %@ e %lld outros membros conectados</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%lld group events" xml:space="preserve" approved="no">
<source>%lld group events</source>
<target state="translated">%lld eventos de grupo</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%lld messages marked deleted" xml:space="preserve" approved="no">
<source>%lld messages marked deleted</source>
<target state="translated">%lld mensagens marcadas como excluídas</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%lld messages blocked" xml:space="preserve" approved="no">
<source>%lld messages blocked</source>
<target state="translated">%lld mensagens bloqueadas</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%lld messages moderated by %@" xml:space="preserve" approved="no">
<source>%lld messages moderated by %@</source>
<target state="translated">%lld mensagens moderadas por %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="(this device v%@)" xml:space="preserve" approved="no">
<source>(this device v%@)</source>
<target state="translated">(este dispositivo v%@)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All data is erased when it is entered." xml:space="preserve" approved="no">
<source>All data is erased when it is entered.</source>
<target state="translated">Todos os dados são apagados quando são inseridos.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow irreversible message deletion only if your contact allows it to you. (24 hours)" xml:space="preserve" approved="no">
<source>Allow irreversible message deletion only if your contact allows it to you. (24 hours)</source>
<target state="translated">Permita a exclusão irreversível de mensagens somente se o seu contato permitir. (24 horas)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Apply" xml:space="preserve" approved="no">
<source>Apply</source>
<target state="translated">Aplicar</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive and upload" xml:space="preserve" approved="no">
<source>Archive and upload</source>
<target state="translated">Arquivar e fazer envio</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All new messages from %@ will be hidden!" xml:space="preserve" approved="no">
<source>All new messages from %@ will be hidden!</source>
<target state="translated">Todas as novas mensagens de %@ ficarão ocultas!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Already connecting!" xml:space="preserve" approved="no">
<source>Already connecting!</source>
<target state="translated">Já conectando!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App encrypts new local files (except videos)." xml:space="preserve" approved="no">
<source>App encrypts new local files (except videos).</source>
<target state="translated">O aplicativo criptografa novos arquivos locais (exceto vídeos).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App passcode is replaced with self-destruct passcode." xml:space="preserve" approved="no">
<source>App passcode is replaced with self-destruct passcode.</source>
<target state="translated">A senha do Aplicativo é substituída pela senha de autodestruição.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All your contacts will remain connected." xml:space="preserve" approved="no">
<source>All your contacts will remain connected.</source>
<target state="translated">Todos os seus contatos permanecerão conectados.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All your contacts will remain connected. Profile update will be sent to your contacts." xml:space="preserve" approved="no">
<source>All your contacts will remain connected. Profile update will be sent to your contacts.</source>
<target state="translated">Todos os seus contatos permanecerão conectados. A atualização do perfil será enviada para seus contatos.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow to send files and media." xml:space="preserve" approved="no">
<source>Allow to send files and media.</source>
<target state="translated">Permitir o envio de arquivos e mídia.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App data migration" xml:space="preserve" approved="no">
<source>App data migration</source>
<target state="translated">Migração de dados de aplicativos</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve" approved="no">
<source>Archiving database</source>
<target state="translated">Arquivando banco de dados</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All messages will be deleted - this cannot be undone!" xml:space="preserve" approved="no">
<source>All messages will be deleted - this cannot be undone!</source>
<target state="translated">Todas as mensagens serão apagadas isso não pode ser desfeito!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." xml:space="preserve" approved="no">
<source>All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.</source>
<target state="translated">Todos os seus contatos, conversas e arquivos serão criptografados com segurança e enviados em partes para retransmissões XFTP configuradas.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow message reactions only if your contact allows them." xml:space="preserve" approved="no">
<source>Allow message reactions only if your contact allows them.</source>
<target state="translated">Permita reações às mensagens somente se o seu contato permitir.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow message reactions." xml:space="preserve" approved="no">
<source>Allow message reactions.</source>
<target state="translated">Permitir reações às mensagens.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow your contacts to irreversibly delete sent messages. (24 hours)" xml:space="preserve" approved="no">
<source>Allow your contacts to irreversibly delete sent messages. (24 hours)</source>
<target state="translated">Permita que seus contatos apaguem irreversivelmente as mensagens enviadas. (24 horas)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Already joining the group!" xml:space="preserve" approved="no">
<source>Already joining the group!</source>
<target state="translated">Entrando no grupo!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="An empty chat profile with the provided name is created, and the app opens as usual." xml:space="preserve" approved="no">
<source>An empty chat profile with the provided name is created, and the app opens as usual.</source>
<target state="translated">Um perfil de conversa vazio com o nome fornecido é criado e o aplicativo abre normalmente.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Auto-accept" xml:space="preserve" approved="no">
<source>Auto-accept</source>
<target state="translated">Aceitar automaticamente</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow your contacts adding message reactions." xml:space="preserve" approved="no">
<source>Allow your contacts adding message reactions.</source>
<target state="translated">Permita que seus contatos adicionem reações às mensagens.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow to irreversibly delete sent messages. (24 hours)" xml:space="preserve" approved="no">
<source>Allow to irreversibly delete sent messages. (24 hours)</source>
<target state="translated">Permitir apagar irreversivelmente as mensagens enviadas. (24 horas)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
</body>
</file>
<file original="en.lproj/SimpleX--iOS--InfoPlist.strings" source-language="en" target-language="pt" datatype="plaintext">
@@ -107,6 +107,11 @@
<target>%@ соединен(а)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ downloaded" xml:space="preserve">
<source>%@ downloaded</source>
<target>%@ загружено</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ is connected!" xml:space="preserve">
<source>%@ is connected!</source>
<target>Установлено соединение с %@!</target>
@@ -127,6 +132,11 @@
<target>%@ серверы</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ uploaded" xml:space="preserve">
<source>%@ uploaded</source>
<target>%@ загружено</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ wants to connect!" xml:space="preserve">
<source>%@ wants to connect!</source>
<target>%@ хочет соединиться!</target>
@@ -342,6 +352,11 @@
<target>**Самый конфиденциальный**: не использовать сервер уведомлений SimpleX Chat, проверять сообщения периодически в фоновом режиме (зависит от того насколько часто Вы используете приложение).</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." xml:space="preserve">
<source>**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.</source>
<target>**Обратите внимание**: использование одной и той же базы данных на двух устройствах нарушит расшифровку сообщений от ваших контактов, как свойство защиты соединений.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: you will NOT be able to recover or change passphrase if you lose it." xml:space="preserve">
<source>**Please note**: you will NOT be able to recover or change passphrase if you lose it.</source>
<target>**Внимание**: Вы не сможете восстановить или поменять пароль, если Вы его потеряете.</target>
@@ -357,6 +372,11 @@
<target>**Внимание**: для работы мгновенных уведомлений пароль должен быть сохранен в Keychain.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Warning**: the archive will be removed." xml:space="preserve">
<source>**Warning**: the archive will be removed.</source>
<target>**Внимание**: архив будет удален.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**e2e encrypted** audio call" xml:space="preserve">
<source>**e2e encrypted** audio call</source>
<target>**e2e зашифрованный** аудиозвонок</target>
@@ -613,6 +633,11 @@
<target>Изменение адреса будет прекращено. Будет использоваться старый адрес.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can block a member for all." xml:space="preserve">
<source>Admins can block a member for all.</source>
<target>Админы могут заблокировать члена группы.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can create the links to join groups." xml:space="preserve">
<source>Admins can create the links to join groups.</source>
<target>Админы могут создать ссылки для вступления в группу.</target>
@@ -668,6 +693,11 @@
<target>Все Ваши контакты сохранятся. Обновленный профиль будет отправлен Вашим контактам.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." xml:space="preserve">
<source>All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.</source>
<target>Все ваши контакты, разговоры и файлы будут надежно зашифрованы и загружены на выбранные XFTP серверы.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow" xml:space="preserve">
<source>Allow</source>
<target>Разрешить</target>
@@ -793,6 +823,11 @@
<target>Сборка приложения: %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App data migration" xml:space="preserve">
<source>App data migration</source>
<target>Миграция данных</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App encrypts new local files (except videos)." xml:space="preserve">
<source>App encrypts new local files (except videos).</source>
<target>Приложение шифрует новые локальные файлы (кроме видео).</target>
@@ -828,6 +863,21 @@
<target>Интерфейс</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Apply" xml:space="preserve">
<source>Apply</source>
<target>Применить</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive and upload" xml:space="preserve">
<source>Archive and upload</source>
<target>Архивировать и загрузить</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<target>Подготовка архива</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Attach" xml:space="preserve">
<source>Attach</source>
<target>Прикрепить</target>
@@ -1018,6 +1068,11 @@
<target>Отменить</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel migration" xml:space="preserve">
<source>Cancel migration</source>
<target>Отменить миграцию</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cannot access keychain to save database password" xml:space="preserve">
<source>Cannot access keychain to save database password</source>
<target>Ошибка доступа к Keychain при сохранении пароля</target>
@@ -1119,6 +1174,11 @@
<target>Чат остановлен. Если вы уже использовали эту базу данных на другом устройстве, перенесите ее обратно до запуска чата.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<target>Чат мигрирован!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat preferences" xml:space="preserve">
<source>Chat preferences</source>
<target>Предпочтения</target>
@@ -1139,6 +1199,11 @@
<target>Китайский и Испанский интерфейс</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose _Migrate from another device_ on the new device and scan QR code." xml:space="preserve">
<source>Choose _Migrate from another device_ on the new device and scan QR code.</source>
<target>Выберите _Мигрировать с другого устройства_ на новом устройстве и сосканируйте QR код.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose file" xml:space="preserve">
<source>Choose file</source>
<target>Выбрать файл</target>
@@ -1209,6 +1274,11 @@
<target>Подтвердить обновление базы данных</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm network settings" xml:space="preserve">
<source>Confirm network settings</source>
<target>Подтвердите настройки сети</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm new passphrase…" xml:space="preserve">
<source>Confirm new passphrase…</source>
<target>Подтвердите новый пароль…</target>
@@ -1219,6 +1289,16 @@
<target>Подтвердить пароль</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm that you remember database passphrase to migrate it." xml:space="preserve">
<source>Confirm that you remember database passphrase to migrate it.</source>
<target>Подтвердите, что Вы помните пароль базы данных для ее миграции.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm upload" xml:space="preserve">
<source>Confirm upload</source>
<target>Подтвердить загрузку</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect" xml:space="preserve">
<source>Connect</source>
<target>Соединиться</target>
@@ -1478,6 +1558,11 @@ This is your own one-time link!</source>
<target>Дата создания %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating archive link" xml:space="preserve">
<source>Creating archive link</source>
<target>Создание ссылки на архив</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating link…" xml:space="preserve">
<source>Creating link…</source>
<target>Создаётся ссылка…</target>
@@ -1698,6 +1783,11 @@ This cannot be undone!</source>
<target>Удалить данные чата</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database from this device" xml:space="preserve">
<source>Delete database from this device</source>
<target>Удалить базу данных с этого устройства</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete file" xml:space="preserve">
<source>Delete file</source>
<target>Удалить файл</target>
@@ -1988,11 +2078,26 @@ This cannot be undone!</source>
<target>Откатить версию и открыть чат</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download failed" xml:space="preserve">
<source>Download failed</source>
<target>Ошибка загрузки</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download file" xml:space="preserve">
<source>Download file</source>
<target>Загрузка файла</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Downloading archive" xml:space="preserve">
<source>Downloading archive</source>
<target>Загрузка архива</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Downloading link details" xml:space="preserve">
<source>Downloading link details</source>
<target>Загрузка ссылки архива</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Duplicate display name!" xml:space="preserve">
<source>Duplicate display name!</source>
<target>Имя профиля уже используется!</target>
@@ -2048,6 +2153,11 @@ This cannot be undone!</source>
<target>Включить для всех</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable in direct chats (BETA)!" xml:space="preserve">
<source>Enable in direct chats (BETA)!</source>
<target>Включите для контактов (BETA)!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable instant notifications?" xml:space="preserve">
<source>Enable instant notifications?</source>
<target>Включить мгновенные уведомления?</target>
@@ -2163,6 +2273,11 @@ This cannot be undone!</source>
<target>Введите имя группы…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase" xml:space="preserve">
<source>Enter passphrase</source>
<target>Введите пароль</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase…" xml:space="preserve">
<source>Enter passphrase…</source>
<target>Введите пароль…</target>
@@ -2223,6 +2338,11 @@ This cannot be undone!</source>
<target>Ошибка при добавлении членов группы</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error allowing contact PQ encryption" xml:space="preserve">
<source>Error allowing contact PQ encryption</source>
<target>Ошибка разрешения квантово-устойчивого шифрования</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error changing address" xml:space="preserve">
<source>Error changing address</source>
<target>Ошибка при изменении адреса</target>
@@ -2313,6 +2433,11 @@ This cannot be undone!</source>
<target>Ошибка удаления профиля пользователя</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error downloading the archive" xml:space="preserve">
<source>Error downloading the archive</source>
<target>Ошибка загрузки архива</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error enabling delivery receipts!" xml:space="preserve">
<source>Error enabling delivery receipts!</source>
<target>Ошибка при включении отчётов о доставке!</target>
@@ -2388,6 +2513,11 @@ This cannot be undone!</source>
<target>Ошибка сохранения пароля в Keychain</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error saving settings" xml:space="preserve">
<source>Error saving settings</source>
<target>Ошибка сохранения настроек</target>
<note>when migrating</note>
</trans-unit>
<trans-unit id="Error saving user password" xml:space="preserve">
<source>Error saving user password</source>
<target>Ошибка при сохранении пароля пользователя</target>
@@ -2458,6 +2588,16 @@ This cannot be undone!</source>
<target>Ошибка при обновлении конфиденциальности</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error uploading the archive" xml:space="preserve">
<source>Error uploading the archive</source>
<target>Ошибка загрузки архива</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error verifying passphrase:" xml:space="preserve">
<source>Error verifying passphrase:</source>
<target>Ошибка подтверждения пароля:</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error: " xml:space="preserve">
<source>Error: </source>
<target>Ошибка: </target>
@@ -2508,6 +2648,11 @@ This cannot be undone!</source>
<target>Архив чата экспортирован.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exported file doesn't exist" xml:space="preserve">
<source>Exported file doesn't exist</source>
<target>Экспортированный файл не существует</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exporting database archive…" xml:space="preserve">
<source>Exporting database archive…</source>
<target>Архив чата экспортируется…</target>
@@ -2578,6 +2723,16 @@ This cannot be undone!</source>
<target>Фильтровать непрочитанные и избранные чаты.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration" xml:space="preserve">
<source>Finalize migration</source>
<target>Завершить миграцию</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration on another device." xml:space="preserve">
<source>Finalize migration on another device.</source>
<target>Завершите миграцию на другом устройстве.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finally, we have them! 🚀" xml:space="preserve">
<source>Finally, we have them! 🚀</source>
<target>Наконец-то, мы их добавили! 🚀</target>
@@ -2868,6 +3023,11 @@ This cannot be undone!</source>
<target>Как использовать серверы</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Hungarian interface" xml:space="preserve">
<source>Hungarian interface</source>
<target>Венгерский интерфейс</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="ICE servers (one per line)" xml:space="preserve">
<source>ICE servers (one per line)</source>
<target>ICE серверы (один на строке)</target>
@@ -2933,6 +3093,16 @@ This cannot be undone!</source>
<target>Импорт архива чата</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Import failed" xml:space="preserve">
<source>Import failed</source>
<target>Ошибка импорта</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Importing archive" xml:space="preserve">
<source>Importing archive</source>
<target>Импорт архива</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Improved message delivery" xml:space="preserve">
<source>Improved message delivery</source>
<target>Улучшенная доставка сообщений</target>
@@ -2948,6 +3118,11 @@ This cannot be undone!</source>
<target>Улучшенная конфигурация серверов</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In order to continue, chat should be stopped." xml:space="preserve">
<source>In order to continue, chat should be stopped.</source>
<target>Чтобы продолжить, чат должен быть остановлен.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In reply to" xml:space="preserve">
<source>In reply to</source>
<target>В ответ на</target>
@@ -3060,6 +3235,11 @@ This cannot be undone!</source>
<target>Ошибка ссылки</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid migration confirmation" xml:space="preserve">
<source>Invalid migration confirmation</source>
<target>Ошибка подтверждения миграции</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid name!" xml:space="preserve">
<source>Invalid name!</source>
<target>Неверное имя!</target>
@@ -3428,6 +3608,11 @@ This is your link for group %@!</source>
<target>Текст сообщения</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message too large" xml:space="preserve">
<source>Message too large</source>
<target>Сообщение слишком большое</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages" xml:space="preserve">
<source>Messages</source>
<target>Сообщения</target>
@@ -3443,11 +3628,56 @@ This is your link for group %@!</source>
<target>Сообщения от %@ будут показаны!</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<target>Сообщения, файлы и звонки защищены **end-to-end шифрованием** с прямой секретностью (PFS), правдоподобным отрицанием и восстановлением от взлома.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<target>Сообщения, файлы и звонки защищены **квантово-устойчивым end-to-end шифрованием** с прямой секретностью (PFS), правдоподобным отрицанием и восстановлением от взлома.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate device" xml:space="preserve">
<source>Migrate device</source>
<target>Мигрировать устройство</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate from another device" xml:space="preserve">
<source>Migrate from another device</source>
<target>Миграция с другого устройства</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate here" xml:space="preserve">
<source>Migrate here</source>
<target>Мигрировать сюда</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device" xml:space="preserve">
<source>Migrate to another device</source>
<target>Мигрировать на другое устройство</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device via QR code." xml:space="preserve">
<source>Migrate to another device via QR code.</source>
<target>Мигрируйте на другое устройство через QR код.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating" xml:space="preserve">
<source>Migrating</source>
<target>Миграция</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating database archive…" xml:space="preserve">
<source>Migrating database archive…</source>
<target>Данные чата перемещаются…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration complete" xml:space="preserve">
<source>Migration complete</source>
<target>Миграция завершена</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration error:" xml:space="preserve">
<source>Migration error:</source>
<target>Ошибка при перемещении данных:</target>
@@ -3807,6 +4037,11 @@ This is your link for group %@!</source>
<target>Открыть группу</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Open migration to another device" xml:space="preserve">
<source>Open migration to another device</source>
<target>Открытие миграции на другое устройство</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Open user profiles" xml:space="preserve">
<source>Open user profiles</source>
<target>Открыть профили пользователя</target>
@@ -3822,11 +4057,21 @@ This is your link for group %@!</source>
<target>Приложение отрывается…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
<source>Or paste archive link</source>
<target>Или вставьте ссылку архива</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or scan QR code" xml:space="preserve">
<source>Or scan QR code</source>
<target>Или отсканируйте QR код</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or securely share this file link" xml:space="preserve">
<source>Or securely share this file link</source>
<target>Или передайте эту ссылку</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or show this code" xml:space="preserve">
<source>Or show this code</source>
<target>Или покажите этот код</target>
@@ -3912,6 +4157,11 @@ This is your link for group %@!</source>
<target>Ошибка расшифровки</target>
<note>message decrypt error item</note>
</trans-unit>
<trans-unit id="Picture-in-picture calls" xml:space="preserve">
<source>Picture-in-picture calls</source>
<target>Звонки с картинкой-в-картинке</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>Попросите у Вашего контакта разрешить отправку голосовых сообщений.</target>
@@ -3932,6 +4182,11 @@ This is your link for group %@!</source>
<target>Проверьте предпочтения Вашего контакта.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please confirm that network settings are correct for this device." xml:space="preserve">
<source>Please confirm that network settings are correct for this device.</source>
<target>Пожалуйста, подтвердите, что настройки сети верны для этого устройства.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please contact developers.&#10;Error: %@" xml:space="preserve">
<source>Please contact developers.
Error: %@</source>
@@ -3989,6 +4244,11 @@ Error: %@</source>
<target>Возможно, хэш сертификата в адресе сервера неверный</target>
<note>server test error</note>
</trans-unit>
<trans-unit id="Post-quantum E2EE" xml:space="preserve">
<source>Post-quantum E2EE</source>
<target>Квантово-устойчивое E2EE</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Preserve the last message draft, with attachments." xml:space="preserve">
<source>Preserve the last message draft, with attachments.</source>
<target>Сохранить последний черновик, вместе с вложениями.</target>
@@ -4124,6 +4384,16 @@ Error: %@</source>
<target>Доставка уведомлений</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push server" xml:space="preserve">
<source>Push server</source>
<target>Сервер уведомлений</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Quantum resistant encryption" xml:space="preserve">
<source>Quantum resistant encryption</source>
<target>Квантово-устойчивое шифрование</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Rate the app" xml:space="preserve">
<source>Rate the app</source>
<target>Оценить приложение</target>
@@ -4309,11 +4579,26 @@ Error: %@</source>
<target>Повторить запрос на соединение?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat download" xml:space="preserve">
<source>Repeat download</source>
<target>Повторить загрузку</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat import" xml:space="preserve">
<source>Repeat import</source>
<target>Повторить импорт</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat join request?" xml:space="preserve">
<source>Repeat join request?</source>
<target>Повторить запрос на вступление?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat upload" xml:space="preserve">
<source>Repeat upload</source>
<target>Повторить загрузку</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reply" xml:space="preserve">
<source>Reply</source>
<target>Ответить</target>
@@ -4414,6 +4699,11 @@ Error: %@</source>
<target>SMP серверы</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safer groups" xml:space="preserve">
<source>Safer groups</source>
<target>Более безопасные группы</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>Сохранить</target>
@@ -4779,6 +5069,11 @@ Error: %@</source>
<target>Установить код доступа</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase" xml:space="preserve">
<source>Set passphrase</source>
<target>Установить пароль</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase to export" xml:space="preserve">
<source>Set passphrase to export</source>
<target>Установите пароль</target>
@@ -4834,6 +5129,11 @@ Error: %@</source>
<target>Поделиться с контактами</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show QR code" xml:space="preserve">
<source>Show QR code</source>
<target>Показать QR код</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show calls in phone history" xml:space="preserve">
<source>Show calls in phone history</source>
<target>Показать звонки в истории телефона</target>
@@ -4974,6 +5274,11 @@ Error: %@</source>
<target>Остановить SimpleX</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Stop chat" xml:space="preserve">
<source>Stop chat</source>
<target>Остановить чат</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stop chat to enable database actions" xml:space="preserve">
<source>Stop chat to enable database actions</source>
<target>Остановите чат, чтобы разблокировать операции с архивом чата</target>
@@ -5014,6 +5319,11 @@ Error: %@</source>
<target>Прекратить делиться адресом?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stopping chat" xml:space="preserve">
<source>Stopping chat</source>
<target>Остановка чата</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Submit" xml:space="preserve">
<source>Submit</source>
<target>Продолжить</target>
@@ -5261,6 +5571,16 @@ It can happen because of some bug or when the connection is compromised.</source
<target>Это действие нельзя отменить — Ваш профиль, контакты, сообщения и файлы будут безвозвратно утеряны.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="This chat is protected by end-to-end encryption." xml:space="preserve">
<source>This chat is protected by end-to-end encryption.</source>
<target>Чат защищен end-to-end шифрованием.</target>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This chat is protected by quantum resistant end-to-end encryption." xml:space="preserve">
<source>This chat is protected by quantum resistant end-to-end encryption.</source>
<target>Чат защищен квантово-устойчивым end-to-end шифрованием.</target>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This device name" xml:space="preserve">
<source>This device name</source>
<target>Имя этого устройства</target>
@@ -5555,11 +5875,21 @@ To connect, please ask your contact to create another connection link and check
<target>Обновить и открыть чат</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload failed" xml:space="preserve">
<source>Upload failed</source>
<target>Ошибка загрузки</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload file" xml:space="preserve">
<source>Upload file</source>
<target>Загрузка файла</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Uploading archive" xml:space="preserve">
<source>Uploading archive</source>
<target>Загрузка архива</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use .onion hosts" xml:space="preserve">
<source>Use .onion hosts</source>
<target>Использовать .onion хосты</target>
@@ -5610,6 +5940,11 @@ To connect, please ask your contact to create another connection link and check
<target>Использовать сервер</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app while in the call." xml:space="preserve">
<source>Use the app while in the call.</source>
<target>Используйте приложение во время звонка.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>Профиль чата</target>
@@ -5645,6 +5980,16 @@ To connect, please ask your contact to create another connection link and check
<target>Проверять соединения</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify database passphrase" xml:space="preserve">
<source>Verify database passphrase</source>
<target>Проверка пароля базы данных</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify passphrase" xml:space="preserve">
<source>Verify passphrase</source>
<target>Проверить пароль</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify security code" xml:space="preserve">
<source>Verify security code</source>
<target>Подтвердить код безопасности</target>
@@ -5735,6 +6080,11 @@ To connect, please ask your contact to create another connection link and check
<target>Ожидание видео</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: starting chat on multiple devices is not supported and will cause message delivery failures" xml:space="preserve">
<source>Warning: starting chat on multiple devices is not supported and will cause message delivery failures</source>
<target>Внимание: запуск чата на нескольких устройствах не поддерживается и приведет к сбоям доставки сообщений</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: you may lose some data!" xml:space="preserve">
<source>Warning: you may lose some data!</source>
<target>Предупреждение: Вы можете потерять какие то данные!</target>
@@ -5755,6 +6105,11 @@ To connect, please ask your contact to create another connection link and check
<target>Приветственное сообщение</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Welcome message is too long" xml:space="preserve">
<source>Welcome message is too long</source>
<target>Приветственное сообщение слишком длинное</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="What's new" xml:space="preserve">
<source>What's new</source>
<target>Новые функции</target>
@@ -5810,6 +6165,11 @@ To connect, please ask your contact to create another connection link and check
<target>Вы</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You **must not** use the same database on two devices." xml:space="preserve">
<source>You **must not** use the same database on two devices.</source>
<target>Вы **не должны** использовать одну и ту же базу данных на двух устройствах.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You accepted connection" xml:space="preserve">
<source>You accepted connection</source>
<target>Вы приняли приглашение соединиться</target>
@@ -5897,6 +6257,11 @@ Repeat join request?</source>
<target>Вы можете включить их позже в настройках Конфиденциальности.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can give another try." xml:space="preserve">
<source>You can give another try.</source>
<target>Вы можете попробовать еще раз.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can hide or mute a user profile - swipe it to the right." xml:space="preserve">
<source>You can hide or mute a user profile - swipe it to the right.</source>
<target>Вы можете скрыть профиль или выключить уведомления - потяните его вправо.</target>
@@ -6291,7 +6656,7 @@ SimpleX серверы не могут получить доступ к Ваше
<trans-unit id="blocked" xml:space="preserve">
<source>blocked</source>
<target>заблокировано</target>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="blocked %@" xml:space="preserve">
<source>blocked %@</source>
@@ -6301,7 +6666,7 @@ SimpleX серверы не могут получить доступ к Ваше
<trans-unit id="blocked by admin" xml:space="preserve">
<source>blocked by admin</source>
<target>заблокировано администратором</target>
<note>blocked chat item</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="bold" xml:space="preserve">
<source>bold</source>
@@ -6731,7 +7096,7 @@ SimpleX серверы не могут получить доступ к Ваше
<trans-unit id="moderated by %@" xml:space="preserve">
<source>moderated by %@</source>
<target>удалено %@</target>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="months" xml:space="preserve">
<source>months</source>
@@ -6800,6 +7165,11 @@ SimpleX серверы не могут получить доступ к Ваше
<target>peer-to-peer</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve">
<source>quantum resistant e2e encryption</source>
<target>квантово-устойчивое e2e шифрование</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="received answer…" xml:space="preserve">
<source>received answer…</source>
<target>получен ответ…</target>
@@ -6875,6 +7245,11 @@ SimpleX серверы не могут получить доступ к Ваше
<target>установлена новая картинка профиля</target>
<note>profile update event chat item</note>
</trans-unit>
<trans-unit id="standard end-to-end encryption" xml:space="preserve">
<source>standard end-to-end encryption</source>
<target>стандартное end-to-end шифрование</target>
<note>chat item text</note>
</trans-unit>
<trans-unit id="starting…" xml:space="preserve">
<source>starting…</source>
<target>инициализация…</target>
@@ -101,6 +101,10 @@
<source>%@ connected</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ downloaded" xml:space="preserve">
<source>%@ downloaded</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ is connected!" xml:space="preserve">
<source>%@ is connected!</source>
<target>%@ เชื่อมต่อสำเร็จ!</target>
@@ -121,6 +125,10 @@
<target>%@ เซิร์ฟเวอร์</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ uploaded" xml:space="preserve">
<source>%@ uploaded</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="%@ wants to connect!" xml:space="preserve">
<source>%@ wants to connect!</source>
<target>%@ อยากเชื่อมต่อ!</target>
@@ -324,6 +332,10 @@
<target>**ส่วนตัวที่สุด**: ไม่ใช้เซิร์ฟเวอร์การแจ้งเตือนของ SimpleX Chat ตรวจสอบข้อความเป็นระยะในพื้นหลัง (ขึ้นอยู่กับความถี่ที่คุณใช้แอป)</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." xml:space="preserve">
<source>**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Please note**: you will NOT be able to recover or change passphrase if you lose it." xml:space="preserve">
<source>**Please note**: you will NOT be able to recover or change passphrase if you lose it.</source>
<target>**โปรดทราบ**: คุณจะไม่สามารถกู้คืนหรือเปลี่ยนรหัสผ่านได้หากคุณทำรหัสผ่านหาย</target>
@@ -339,6 +351,10 @@
<target>**คำเตือน**: การแจ้งเตือนแบบพุชทันทีจำเป็นต้องบันทึกรหัสผ่านไว้ใน Keychain</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**Warning**: the archive will be removed." xml:space="preserve">
<source>**Warning**: the archive will be removed.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="**e2e encrypted** audio call" xml:space="preserve">
<source>**e2e encrypted** audio call</source>
<target>การโทรเสียงแบบ **encrypted จากต้นจนจบ**</target>
@@ -585,6 +601,10 @@
<target>การเปลี่ยนแปลงที่อยู่จะถูกยกเลิก จะใช้ที่อยู่เก่าของผู้รับ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can block a member for all." xml:space="preserve">
<source>Admins can block a member for all.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Admins can create the links to join groups." xml:space="preserve">
<source>Admins can create the links to join groups.</source>
<target>ผู้ดูแลระบบสามารถสร้างลิงก์เพื่อเข้าร่วมกลุ่มต่างๆได้</target>
@@ -638,6 +658,10 @@
<target>ผู้ติดต่อทั้งหมดของคุณจะยังคงเชื่อมต่ออยู่. ผู้ติดต่อทั้งหมดของคุณจะยังคงเชื่อมต่ออยู่ การอัปเดตโปรไฟล์จะถูกส่งไปยังผู้ติดต่อของคุณ.</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." xml:space="preserve">
<source>All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Allow" xml:space="preserve">
<source>Allow</source>
<target>อนุญาต</target>
@@ -761,6 +785,10 @@
<target>รุ่นแอป: %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App data migration" xml:space="preserve">
<source>App data migration</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="App encrypts new local files (except videos)." xml:space="preserve">
<source>App encrypts new local files (except videos).</source>
<note>No comment provided by engineer.</note>
@@ -795,6 +823,18 @@
<target>รูปร่างลักษณะ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Apply" xml:space="preserve">
<source>Apply</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archive and upload" xml:space="preserve">
<source>Archive and upload</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Archiving database" xml:space="preserve">
<source>Archiving database</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Attach" xml:space="preserve">
<source>Attach</source>
<target>แนบ</target>
@@ -974,6 +1014,10 @@
<target>ยกเลิก</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cancel migration" xml:space="preserve">
<source>Cancel migration</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Cannot access keychain to save database password" xml:space="preserve">
<source>Cannot access keychain to save database password</source>
<target>ไม่สามารถเข้าถึง keychain เพื่อบันทึกรหัสผ่านฐานข้อมูล</target>
@@ -1074,6 +1118,10 @@
<source>Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat migrated!" xml:space="preserve">
<source>Chat migrated!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Chat preferences" xml:space="preserve">
<source>Chat preferences</source>
<target>ค่ากําหนดในการแชท</target>
@@ -1094,6 +1142,10 @@
<target>อินเทอร์เฟซภาษาจีนและสเปน</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose _Migrate from another device_ on the new device and scan QR code." xml:space="preserve">
<source>Choose _Migrate from another device_ on the new device and scan QR code.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Choose file" xml:space="preserve">
<source>Choose file</source>
<target>เลือกไฟล์</target>
@@ -1163,6 +1215,10 @@
<target>ยืนยันการอัพเกรดฐานข้อมูล</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm network settings" xml:space="preserve">
<source>Confirm network settings</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm new passphrase…" xml:space="preserve">
<source>Confirm new passphrase…</source>
<target>ยืนยันรหัสผ่านใหม่…</target>
@@ -1173,6 +1229,14 @@
<target>ยืนยันรหัสผ่าน</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm that you remember database passphrase to migrate it." xml:space="preserve">
<source>Confirm that you remember database passphrase to migrate it.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Confirm upload" xml:space="preserve">
<source>Confirm upload</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Connect" xml:space="preserve">
<source>Connect</source>
<target>เชื่อมต่อ</target>
@@ -1410,6 +1474,10 @@ This is your own one-time link!</source>
<target>สร้างเมื่อ %@</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating archive link" xml:space="preserve">
<source>Creating archive link</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Creating link…" xml:space="preserve">
<source>Creating link…</source>
<note>No comment provided by engineer.</note>
@@ -1625,6 +1693,10 @@ This cannot be undone!</source>
<target>ลบฐานข้อมูล</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete database from this device" xml:space="preserve">
<source>Delete database from this device</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Delete file" xml:space="preserve">
<source>Delete file</source>
<target>ลบไฟล์</target>
@@ -1907,11 +1979,23 @@ This cannot be undone!</source>
<target>ปรับลดรุ่นและเปิดแชท</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download failed" xml:space="preserve">
<source>Download failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Download file" xml:space="preserve">
<source>Download file</source>
<target>ดาวน์โหลดไฟล์</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Downloading archive" xml:space="preserve">
<source>Downloading archive</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Downloading link details" xml:space="preserve">
<source>Downloading link details</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Duplicate display name!" xml:space="preserve">
<source>Duplicate display name!</source>
<target>ชื่อที่แสดงซ้ำ!</target>
@@ -1966,6 +2050,10 @@ This cannot be undone!</source>
<target>เปิดใช้งานสําหรับทุกคน</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable in direct chats (BETA)!" xml:space="preserve">
<source>Enable in direct chats (BETA)!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enable instant notifications?" xml:space="preserve">
<source>Enable instant notifications?</source>
<target>เปิดใช้งานการแจ้งเตือนทันที?</target>
@@ -2075,6 +2163,10 @@ This cannot be undone!</source>
<source>Enter group name…</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase" xml:space="preserve">
<source>Enter passphrase</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Enter passphrase…" xml:space="preserve">
<source>Enter passphrase…</source>
<target>ใส่รหัสผ่าน</target>
@@ -2133,6 +2225,10 @@ This cannot be undone!</source>
<target>เกิดข้อผิดพลาดในการเพิ่มสมาชิก</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error allowing contact PQ encryption" xml:space="preserve">
<source>Error allowing contact PQ encryption</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error changing address" xml:space="preserve">
<source>Error changing address</source>
<target>เกิดข้อผิดพลาดในการเปลี่ยนที่อยู่</target>
@@ -2220,6 +2316,10 @@ This cannot be undone!</source>
<target>เกิดข้อผิดพลาดในการลบโปรไฟล์ผู้ใช้</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error downloading the archive" xml:space="preserve">
<source>Error downloading the archive</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error enabling delivery receipts!" xml:space="preserve">
<source>Error enabling delivery receipts!</source>
<target>เกิดข้อผิดพลาดในการเปิดใช้ใบเสร็จการจัดส่ง!</target>
@@ -2294,6 +2394,10 @@ This cannot be undone!</source>
<target>เกิดข้อผิดพลาดในการบันทึกรหัสผ่านไปยัง keychain</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error saving settings" xml:space="preserve">
<source>Error saving settings</source>
<note>when migrating</note>
</trans-unit>
<trans-unit id="Error saving user password" xml:space="preserve">
<source>Error saving user password</source>
<target>เกิดข้อผิดพลาดในการบันทึกรหัสผ่านผู้ใช้</target>
@@ -2362,6 +2466,14 @@ This cannot be undone!</source>
<target>เกิดข้อผิดพลาดในการอัปเดตข้อมูลส่วนตัวของผู้ใช้</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error uploading the archive" xml:space="preserve">
<source>Error uploading the archive</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error verifying passphrase:" xml:space="preserve">
<source>Error verifying passphrase:</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Error: " xml:space="preserve">
<source>Error: </source>
<target>ผิดพลาด: </target>
@@ -2411,6 +2523,10 @@ This cannot be undone!</source>
<target>ที่เก็บถาวรฐานข้อมูลที่ส่งออก</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exported file doesn't exist" xml:space="preserve">
<source>Exported file doesn't exist</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Exporting database archive…" xml:space="preserve">
<source>Exporting database archive…</source>
<target>กำลังส่งออกที่เก็บถาวรฐานข้อมูล…</target>
@@ -2480,6 +2596,14 @@ This cannot be undone!</source>
<target>กรองแชทที่ยังไม่อ่านและแชทโปรด</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration" xml:space="preserve">
<source>Finalize migration</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finalize migration on another device." xml:space="preserve">
<source>Finalize migration on another device.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Finally, we have them! 🚀" xml:space="preserve">
<source>Finally, we have them! 🚀</source>
<target>ในที่สุดเราก็มีแล้ว! 🚀</target>
@@ -2765,6 +2889,10 @@ This cannot be undone!</source>
<target>วิธีใช้เซิร์ฟเวอร์ของคุณ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Hungarian interface" xml:space="preserve">
<source>Hungarian interface</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="ICE servers (one per line)" xml:space="preserve">
<source>ICE servers (one per line)</source>
<target>เซิร์ฟเวอร์ ICE (หนึ่งเครื่องต่อสาย)</target>
@@ -2830,6 +2958,14 @@ This cannot be undone!</source>
<target>นำเข้าฐานข้อมูล</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Import failed" xml:space="preserve">
<source>Import failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Importing archive" xml:space="preserve">
<source>Importing archive</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Improved message delivery" xml:space="preserve">
<source>Improved message delivery</source>
<note>No comment provided by engineer.</note>
@@ -2844,6 +2980,10 @@ This cannot be undone!</source>
<target>ปรับปรุงการกําหนดค่าเซิร์ฟเวอร์แล้ว</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In order to continue, chat should be stopped." xml:space="preserve">
<source>In order to continue, chat should be stopped.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="In reply to" xml:space="preserve">
<source>In reply to</source>
<target>ในการตอบกลับถึง</target>
@@ -2950,6 +3090,10 @@ This cannot be undone!</source>
<source>Invalid link</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid migration confirmation" xml:space="preserve">
<source>Invalid migration confirmation</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Invalid name!" xml:space="preserve">
<source>Invalid name!</source>
<note>No comment provided by engineer.</note>
@@ -3304,6 +3448,10 @@ This is your link for group %@!</source>
<target>ข้อความ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Message too large" xml:space="preserve">
<source>Message too large</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages" xml:space="preserve">
<source>Messages</source>
<target>ข้อความ</target>
@@ -3318,11 +3466,47 @@ This is your link for group %@!</source>
<source>Messages from %@ will be shown!</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." xml:space="preserve">
<source>Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate device" xml:space="preserve">
<source>Migrate device</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate from another device" xml:space="preserve">
<source>Migrate from another device</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate here" xml:space="preserve">
<source>Migrate here</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device" xml:space="preserve">
<source>Migrate to another device</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrate to another device via QR code." xml:space="preserve">
<source>Migrate to another device via QR code.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating" xml:space="preserve">
<source>Migrating</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migrating database archive…" xml:space="preserve">
<source>Migrating database archive…</source>
<target>กำลังย้ายข้อมูลที่เก็บถาวรของฐานข้อมูล…</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration complete" xml:space="preserve">
<source>Migration complete</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Migration error:" xml:space="preserve">
<source>Migration error:</source>
<target>ข้อผิดพลาดในการย้ายข้อมูล:</target>
@@ -3674,6 +3858,10 @@ This is your link for group %@!</source>
<source>Open group</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Open migration to another device" xml:space="preserve">
<source>Open migration to another device</source>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Open user profiles" xml:space="preserve">
<source>Open user profiles</source>
<target>เปิดโปรไฟล์ผู้ใช้</target>
@@ -3688,10 +3876,18 @@ This is your link for group %@!</source>
<source>Opening app…</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or paste archive link" xml:space="preserve">
<source>Or paste archive link</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or scan QR code" xml:space="preserve">
<source>Or scan QR code</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or securely share this file link" xml:space="preserve">
<source>Or securely share this file link</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Or show this code" xml:space="preserve">
<source>Or show this code</source>
<note>No comment provided by engineer.</note>
@@ -3772,6 +3968,10 @@ This is your link for group %@!</source>
<target>ข้อผิดพลาดในการถอดรหัสอย่างถาวร</target>
<note>message decrypt error item</note>
</trans-unit>
<trans-unit id="Picture-in-picture calls" xml:space="preserve">
<source>Picture-in-picture calls</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please ask your contact to enable sending voice messages." xml:space="preserve">
<source>Please ask your contact to enable sending voice messages.</source>
<target>โปรดขอให้ผู้ติดต่อของคุณเปิดใช้งานการส่งข้อความเสียง</target>
@@ -3792,6 +3992,10 @@ This is your link for group %@!</source>
<target>โปรดตรวจสอบความต้องการของคุณและการตั้งค่าผู้ติดต่อ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please confirm that network settings are correct for this device." xml:space="preserve">
<source>Please confirm that network settings are correct for this device.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Please contact developers.&#10;Error: %@" xml:space="preserve">
<source>Please contact developers.
Error: %@</source>
@@ -3847,6 +4051,10 @@ Error: %@</source>
<target>อาจเป็นไปได้ว่าลายนิ้วมือของ certificate ในที่อยู่เซิร์ฟเวอร์ไม่ถูกต้อง</target>
<note>server test error</note>
</trans-unit>
<trans-unit id="Post-quantum E2EE" xml:space="preserve">
<source>Post-quantum E2EE</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Preserve the last message draft, with attachments." xml:space="preserve">
<source>Preserve the last message draft, with attachments.</source>
<target>เก็บข้อความที่ร่างไว้ล่าสุดพร้อมไฟล์แนบ</target>
@@ -3979,6 +4187,14 @@ Error: %@</source>
<target>การแจ้งเตือนแบบทันที</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Push server" xml:space="preserve">
<source>Push server</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Quantum resistant encryption" xml:space="preserve">
<source>Quantum resistant encryption</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Rate the app" xml:space="preserve">
<source>Rate the app</source>
<target>ให้คะแนนแอป</target>
@@ -4159,10 +4375,22 @@ Error: %@</source>
<source>Repeat connection request?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat download" xml:space="preserve">
<source>Repeat download</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat import" xml:space="preserve">
<source>Repeat import</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat join request?" xml:space="preserve">
<source>Repeat join request?</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Repeat upload" xml:space="preserve">
<source>Repeat upload</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Reply" xml:space="preserve">
<source>Reply</source>
<target>ตอบ</target>
@@ -4262,6 +4490,10 @@ Error: %@</source>
<target>เซิร์ฟเวอร์ SMP</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Safer groups" xml:space="preserve">
<source>Safer groups</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Save" xml:space="preserve">
<source>Save</source>
<target>บันทึก</target>
@@ -4618,6 +4850,10 @@ Error: %@</source>
<target>ตั้งรหัสผ่าน</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase" xml:space="preserve">
<source>Set passphrase</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Set passphrase to export" xml:space="preserve">
<source>Set passphrase to export</source>
<target>ตั้งรหัสผ่านเพื่อส่งออก</target>
@@ -4672,6 +4908,10 @@ Error: %@</source>
<target>แชร์กับผู้ติดต่อ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show QR code" xml:space="preserve">
<source>Show QR code</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Show calls in phone history" xml:space="preserve">
<source>Show calls in phone history</source>
<target>แสดงการโทรในประวัติการโทร</target>
@@ -4808,6 +5048,10 @@ Error: %@</source>
<target>หยุด SimpleX</target>
<note>authentication reason</note>
</trans-unit>
<trans-unit id="Stop chat" xml:space="preserve">
<source>Stop chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stop chat to enable database actions" xml:space="preserve">
<source>Stop chat to enable database actions</source>
<target>หยุดการแชทเพื่อเปิดใช้งานการดำเนินการกับฐานข้อมูล</target>
@@ -4848,6 +5092,10 @@ Error: %@</source>
<target>หยุดแชร์ที่อยู่ไหม?</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Stopping chat" xml:space="preserve">
<source>Stopping chat</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Submit" xml:space="preserve">
<source>Submit</source>
<target>ส่ง</target>
@@ -5090,6 +5338,14 @@ It can happen because of some bug or when the connection is compromised.</source
<target>การดำเนินการนี้ไม่สามารถยกเลิกได้ - โปรไฟล์ ผู้ติดต่อ ข้อความ และไฟล์ของคุณจะสูญหายไปอย่างถาวร</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="This chat is protected by end-to-end encryption." xml:space="preserve">
<source>This chat is protected by end-to-end encryption.</source>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This chat is protected by quantum resistant end-to-end encryption." xml:space="preserve">
<source>This chat is protected by quantum resistant end-to-end encryption.</source>
<note>E2EE info chat item</note>
</trans-unit>
<trans-unit id="This device name" xml:space="preserve">
<source>This device name</source>
<note>No comment provided by engineer.</note>
@@ -5368,11 +5624,19 @@ To connect, please ask your contact to create another connection link and check
<target>อัปเกรดและเปิดการแชท</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload failed" xml:space="preserve">
<source>Upload failed</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Upload file" xml:space="preserve">
<source>Upload file</source>
<target>อัปโหลดไฟล์</target>
<note>server test step</note>
</trans-unit>
<trans-unit id="Uploading archive" xml:space="preserve">
<source>Uploading archive</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use .onion hosts" xml:space="preserve">
<source>Use .onion hosts</source>
<target>ใช้โฮสต์ .onion</target>
@@ -5419,6 +5683,10 @@ To connect, please ask your contact to create another connection link and check
<target>ใช้เซิร์ฟเวอร์</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Use the app while in the call." xml:space="preserve">
<source>Use the app while in the call.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="User profile" xml:space="preserve">
<source>User profile</source>
<target>โปรไฟล์ผู้ใช้</target>
@@ -5451,6 +5719,14 @@ To connect, please ask your contact to create another connection link and check
<source>Verify connections</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify database passphrase" xml:space="preserve">
<source>Verify database passphrase</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify passphrase" xml:space="preserve">
<source>Verify passphrase</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Verify security code" xml:space="preserve">
<source>Verify security code</source>
<target>ตรวจสอบรหัสความปลอดภัย</target>
@@ -5538,6 +5814,10 @@ To connect, please ask your contact to create another connection link and check
<target>กําลังรอวิดีโอ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: starting chat on multiple devices is not supported and will cause message delivery failures" xml:space="preserve">
<source>Warning: starting chat on multiple devices is not supported and will cause message delivery failures</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Warning: you may lose some data!" xml:space="preserve">
<source>Warning: you may lose some data!</source>
<target>คำเตือน: คุณอาจสูญเสียข้อมูลบางส่วน!</target>
@@ -5558,6 +5838,10 @@ To connect, please ask your contact to create another connection link and check
<target>ข้อความต้อนรับ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="Welcome message is too long" xml:space="preserve">
<source>Welcome message is too long</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="What's new" xml:space="preserve">
<source>What's new</source>
<target>มีอะไรใหม่</target>
@@ -5611,6 +5895,10 @@ To connect, please ask your contact to create another connection link and check
<target>คุณ</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You **must not** use the same database on two devices." xml:space="preserve">
<source>You **must not** use the same database on two devices.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You accepted connection" xml:space="preserve">
<source>You accepted connection</source>
<target>คุณยอมรับการเชื่อมต่อ</target>
@@ -5690,6 +5978,10 @@ Repeat join request?</source>
<target>คุณสามารถเปิดใช้งานได้ในภายหลังผ่านการตั้งค่าความเป็นส่วนตัวและความปลอดภัยของแอป</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can give another try." xml:space="preserve">
<source>You can give another try.</source>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="You can hide or mute a user profile - swipe it to the right." xml:space="preserve">
<source>You can hide or mute a user profile - swipe it to the right.</source>
<target>คุณสามารถซ่อนหรือปิดเสียงโปรไฟล์ผู้ใช้ - ปัดไปทางขวา</target>
@@ -6071,7 +6363,7 @@ SimpleX servers cannot see your profile.</source>
</trans-unit>
<trans-unit id="blocked" xml:space="preserve">
<source>blocked</source>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="blocked %@" xml:space="preserve">
<source>blocked %@</source>
@@ -6079,7 +6371,7 @@ SimpleX servers cannot see your profile.</source>
</trans-unit>
<trans-unit id="blocked by admin" xml:space="preserve">
<source>blocked by admin</source>
<note>blocked chat item</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="bold" xml:space="preserve">
<source>bold</source>
@@ -6503,7 +6795,7 @@ SimpleX servers cannot see your profile.</source>
<trans-unit id="moderated by %@" xml:space="preserve">
<source>moderated by %@</source>
<target>กลั่นกรองโดย %@</target>
<note>No comment provided by engineer.</note>
<note>marked deleted chat item preview text</note>
</trans-unit>
<trans-unit id="months" xml:space="preserve">
<source>months</source>
@@ -6572,6 +6864,10 @@ SimpleX servers cannot see your profile.</source>
<target>เพื่อนต่อเพื่อน</target>
<note>No comment provided by engineer.</note>
</trans-unit>
<trans-unit id="quantum resistant e2e encryption" xml:space="preserve">
<source>quantum resistant e2e encryption</source>
<note>chat item text</note>
</trans-unit>
<trans-unit id="received answer…" xml:space="preserve">
<source>received answer…</source>
<target>ได้รับคำตอบ…</target>
@@ -6642,6 +6938,10 @@ SimpleX servers cannot see your profile.</source>
<source>set new profile picture</source>
<note>profile update event chat item</note>
</trans-unit>
<trans-unit id="standard end-to-end encryption" xml:space="preserve">
<source>standard end-to-end encryption</source>
<note>chat item text</note>
</trans-unit>
<trans-unit id="starting…" xml:space="preserve">
<source>starting…</source>
<target>กำลังเริ่มต้น…</target>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,64 +0,0 @@
//
// ConcurrentQueue.swift
// SimpleX NSE
//
// Created by Evgeny on 08/12/2023.
// Copyright © 2023 SimpleX Chat. All rights reserved.
//
import Foundation
struct DequeueElement<T> {
var elementId: UUID?
var task: Task<T?, Never>
}
class ConcurrentQueue<T> {
private var queue: [T] = []
private var queueLock = DispatchQueue(label: "chat.simplex.app.SimpleX-NSE.concurrent-queue.lock.\(UUID())")
private var continuations = [(elementId: UUID, continuation: CheckedContinuation<T?, Never>)]()
func enqueue(_ el: T) {
resumeContinuation(el) { self.queue.append(el) }
}
func frontEnqueue(_ el: T) {
resumeContinuation(el) { self.queue.insert(el, at: 0) }
}
private func resumeContinuation(_ el: T, add: @escaping () -> Void) {
queueLock.sync {
if let (_, cont) = continuations.first {
continuations.remove(at: 0)
cont.resume(returning: el)
} else {
add()
}
}
}
func dequeue() -> DequeueElement<T> {
queueLock.sync {
if queue.isEmpty {
let elementId = UUID()
let task = Task {
await withCheckedContinuation { cont in
continuations.append((elementId, cont))
}
}
return DequeueElement(elementId: elementId, task: task)
} else {
let el = queue.remove(at: 0)
return DequeueElement(task: Task { el })
}
}
}
func cancelDequeue(_ elementId: UUID) {
queueLock.sync {
let cancelled = continuations.filter { $0.elementId == elementId }
continuations.removeAll { $0.elementId == elementId }
cancelled.forEach { $0.continuation.resume(returning: nil) }
}
}
}
+73 -134
View File
@@ -22,110 +22,6 @@ let nseSuspendSchedule: SuspendSchedule = (2, 4)
let fastNSESuspendSchedule: SuspendSchedule = (1, 1)
typealias NtfStream = ConcurrentQueue<NSENotification>
// Notifications are delivered via concurrent queues, as they are all received from chat controller in a single loop that
// writes to ConcurrentQueue and when notification is processed, the instance of Notification service extension reads from the queue.
// One queue per connection (entity) is used.
// The concurrent queues allow read cancellation, to ensure that notifications are not lost in case the current thread completes
// before expected notification is read (multiple notifications can be expected, because one notification can be delivered for several messages).
actor PendingNtfs {
static let shared = PendingNtfs()
private var ntfStreams: [String: NtfStream] = [:]
func createStream(_ id: String) async {
logger.debug("NotificationService PendingNtfs.createStream: \(id)")
if ntfStreams[id] == nil {
ntfStreams[id] = ConcurrentQueue()
logger.debug("NotificationService PendingNtfs.createStream: created ConcurrentQueue")
}
}
func readStream(_ id: String, for nse: NotificationService, ntfInfo: NtfMessages) async {
logger.debug("NotificationService PendingNtfs.readStream: \(id) \(ntfInfo.ntfMessages.count)")
if !ntfInfo.user.showNotifications {
nse.setBestAttemptNtf(.empty)
}
if let s = ntfStreams[id] {
logger.debug("NotificationService PendingNtfs.readStream: has stream")
var expected = Set(ntfInfo.ntfMessages.map { $0.msgId })
logger.debug("NotificationService PendingNtfs.readStream: expecting: \(expected)")
var readCancelled = false
var dequeued: DequeueElement<NSENotification>?
nse.cancelRead = {
readCancelled = true
if let elementId = dequeued?.elementId {
s.cancelDequeue(elementId)
}
}
while !readCancelled {
dequeued = s.dequeue()
if let ntf = await dequeued?.task.value {
if readCancelled {
logger.debug("NotificationService PendingNtfs.readStream: read cancelled, put ntf to queue front")
s.frontEnqueue(ntf)
break
} else if case let .msgInfo(info) = ntf {
let found = expected.remove(info.msgId)
if found != nil {
logger.debug("NotificationService PendingNtfs.readStream: msgInfo, last: \(expected.isEmpty)")
if expected.isEmpty { break }
} else if let msgTs = ntfInfo.msgTs, info.msgTs > msgTs {
logger.debug("NotificationService PendingNtfs.readStream: unexpected msgInfo")
s.frontEnqueue(ntf)
break
}
} else if ntfInfo.user.showNotifications {
logger.debug("NotificationService PendingNtfs.readStream: setting best attempt")
nse.setBestAttemptNtf(ntf)
if ntf.isCallInvitation { break }
}
} else {
break
}
}
nse.cancelRead = nil
logger.debug("NotificationService PendingNtfs.readStream: exiting")
}
}
func writeStream(_ id: String, _ ntf: NSENotification) async {
logger.debug("NotificationService PendingNtfs.writeStream: \(id)")
if let s = ntfStreams[id] {
logger.debug("NotificationService PendingNtfs.writeStream: writing ntf")
s.enqueue(ntf)
}
}
}
// The current implementation assumes concurrent notification delivery and uses semaphores
// to process only one notification per connection (entity) at a time.
class NtfStreamSemaphores {
static let shared = NtfStreamSemaphores()
private static let queue = DispatchQueue(label: "chat.simplex.app.SimpleX-NSE.notification-semaphores.lock")
private var semaphores: [String: DispatchSemaphore] = [:]
func waitForStream(_ id: String) {
streamSemaphore(id, value: 0)?.wait()
}
func signalStreamReady(_ id: String) {
streamSemaphore(id, value: 1)?.signal()
}
// this function returns nil if semaphore is just created, so passed value shoud be coordinated with the desired end value of the semaphore
private func streamSemaphore(_ id: String, value: Int) -> DispatchSemaphore? {
NtfStreamSemaphores.queue.sync {
if let s = semaphores[id] {
return s
} else {
semaphores[id] = DispatchSemaphore(value: value)
return nil
}
}
}
}
enum NSENotification {
case nse(UNMutableNotificationContent)
case callkit(RcvCallInvitation)
@@ -149,7 +45,7 @@ class NSEThreads {
static let shared = NSEThreads()
private static let queue = DispatchQueue(label: "chat.simplex.app.SimpleX-NSE.notification-threads.lock")
private var allThreads: Set<UUID> = []
private var activeThreads: Set<UUID> = []
private var activeThreads: [(UUID, NotificationService)] = []
func newThread() -> UUID {
NSEThreads.queue.sync {
@@ -158,19 +54,42 @@ class NSEThreads {
}
}
func startThread(_ t: UUID) {
func startThread(_ t: UUID, _ service: NotificationService) {
NSEThreads.queue.sync {
if allThreads.contains(t) {
_ = activeThreads.insert(t)
activeThreads.append((t, service))
} else {
logger.warning("NotificationService startThread: thread \(t) was removed before it started")
}
}
}
func processNotification(_ id: ChatId, _ ntf: NSENotification) async -> Void {
var waitTime: Int64 = 5_000_000000
while waitTime > 0 {
if let (_, nse) = rcvEntityThread(id),
nse.shouldProcessNtf && nse.processReceivedNtf(ntf) {
break
} else {
try? await Task.sleep(nanoseconds: 10_000000)
waitTime -= 10_000000
}
}
}
private func rcvEntityThread(_ id: ChatId) -> (UUID, NotificationService)? {
NSEThreads.queue.sync {
activeThreads.first(where: { (_, nse) in nse.receiveEntityId == id })
}
}
func endThread(_ t: UUID) -> Bool {
NSEThreads.queue.sync {
let tActive = activeThreads.remove(t)
let tActive: UUID? = if let index = activeThreads.firstIndex(where: { $0.0 == t }) {
activeThreads.remove(at: index).0
} else {
nil
}
let t = allThreads.remove(t)
if tActive != nil && activeThreads.isEmpty {
return true
@@ -198,8 +117,11 @@ class NotificationService: UNNotificationServiceExtension {
// thread is added to allThreads here - if thread did not start chat,
// chat does not need to be suspended but NSE state still needs to be set to "suspended".
var threadId: UUID? = NSEThreads.shared.newThread()
var notificationInfo: NtfMessages?
var receiveEntityId: String?
var cancelRead: (() -> Void)?
var expectedMessages: Set<String> = []
// return true if the message is taken - it prevents sending it to another NotificationService instance for processing
var shouldProcessNtf = false
var appSubscriber: AppSubscriber?
var returnedSuspension = false
@@ -265,7 +187,7 @@ class NotificationService: UNNotificationServiceExtension {
// check it here again
appStateGroupDefault.get().inactive {
// thread is added to activeThreads tracking set here - if thread started chat it needs to be suspended
if let t = threadId { NSEThreads.shared.startThread(t) }
if let t = threadId { NSEThreads.shared.startThread(t, self) }
let dbStatus = startChat()
if case .ok = dbStatus,
let ntfInfo = apiGetNtfMessage(nonce: nonce, encNtfInfo: encNtfInfo) {
@@ -276,17 +198,11 @@ class NotificationService: UNNotificationServiceExtension {
? .nse(createConnectionEventNtf(ntfInfo.user, connEntity))
: .empty
)
if let id = connEntity.id {
if let id = connEntity.id, ntfInfo.msgTs != nil {
notificationInfo = ntfInfo
receiveEntityId = id
NtfStreamSemaphores.shared.waitForStream(id)
if receiveEntityId != nil {
Task {
logger.debug("NotificationService: receiveNtfMessages: in Task, connEntity id \(id)")
await PendingNtfs.shared.createStream(id)
await PendingNtfs.shared.readStream(id, for: self, ntfInfo: ntfInfo)
deliverBestAttemptNtf()
}
}
expectedMessages = Set(ntfInfo.ntfMessages.map { $0.msgId })
shouldProcessNtf = true
return
}
}
@@ -302,6 +218,38 @@ class NotificationService: UNNotificationServiceExtension {
deliverBestAttemptNtf(urgent: true)
}
func processReceivedNtf(_ ntf: NSENotification) -> Bool {
guard let ntfInfo = notificationInfo, let msgTs = ntfInfo.msgTs else { return false }
if !ntfInfo.user.showNotifications {
self.setBestAttemptNtf(.empty)
}
if case let .msgInfo(info) = ntf {
let found = expectedMessages.remove(info.msgId)
if found != nil {
logger.debug("NotificationService processNtf: msgInfo, last: \(self.expectedMessages.isEmpty)")
if expectedMessages.isEmpty {
self.deliverBestAttemptNtf()
}
return true
} else if info.msgTs > msgTs {
logger.debug("NotificationService processNtf: unexpected msgInfo, let other instance to process it, stopping this one")
self.deliverBestAttemptNtf()
return false
} else {
logger.debug("NotificationService processNtf: unknown message, let other instance to process it")
return false
}
} else if ntfInfo.user.showNotifications {
logger.debug("NotificationService processNtf: setting best attempt")
self.setBestAttemptNtf(ntf)
if ntf.isCallInvitation {
self.deliverBestAttemptNtf()
}
return true
}
return false
}
func setBadgeCount() {
badgeCount = ntfBadgeCountGroupDefault.get() + 1
ntfBadgeCountGroupDefault.set(badgeCount)
@@ -323,14 +271,9 @@ class NotificationService: UNNotificationServiceExtension {
private func deliverBestAttemptNtf(urgent: Bool = false) {
logger.debug("NotificationService.deliverBestAttemptNtf")
if let cancel = cancelRead {
cancelRead = nil
cancel()
}
if let id = receiveEntityId {
receiveEntityId = nil
NtfStreamSemaphores.shared.signalStreamReady(id)
}
// stop processing other messages
shouldProcessNtf = false
let suspend: Bool
if let t = threadId {
threadId = nil
@@ -572,7 +515,7 @@ func chatSuspended() {
}
// A single loop is used per Notification service extension process to receive and process all messages depending on the NSE state
// If the extension is not active yet, or suspended/suspending, or the app is running, the notifications will no be received.
// If the extension is not active yet, or suspended/suspending, or the app is running, the notifications will not be received.
func receiveMessages() async {
logger.debug("NotificationService receiveMessages")
while true {
@@ -591,8 +534,7 @@ func receiveMessages() async {
logger.debug("NotificationService receiveMsg: message")
if let (id, ntf) = await receivedMsgNtf(msg) {
logger.debug("NotificationService receiveMsg: notification")
await PendingNtfs.shared.createStream(id)
await PendingNtfs.shared.writeStream(id, ntf)
await NSEThreads.shared.processNotification(id, ntf)
}
}
}
@@ -644,9 +586,6 @@ func receivedMsgNtf(_ res: ChatResponse) async -> (String, NSENotification)? {
cleanupDirectFile(aChatItem)
}
return nil
case let .sndFileCompleteXFTP(_, aChatItem, _):
cleanupFile(aChatItem)
return nil
case let .callInvitation(invitation):
// Do not post it without CallKit support, iOS will stop launching the app without showing CallKit
return (
@@ -0,0 +1,9 @@
/* Bundle display name */
"CFBundleDisplayName" = "SimpleX NSE";
/* Bundle name */
"CFBundleName" = "SimpleX NSE";
/* Copyright (human-readable) */
"NSHumanReadableCopyright" = "Copyright © 2022 SimpleX Chat. Minden jog fenntartva.";
+81 -37
View File
@@ -57,11 +57,6 @@
5C65F343297D45E100B67AF3 /* VersionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C65F341297D3F3600B67AF3 /* VersionView.swift */; };
5C6BA667289BD954009B8ECC /* DismissSheets.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C6BA666289BD954009B8ECC /* DismissSheets.swift */; };
5C7031162953C97F00150A12 /* CIFeaturePreferenceView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C7031152953C97F00150A12 /* CIFeaturePreferenceView.swift */; };
5C746DB82BA0DA920049D734 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C746DB32BA0DA920049D734 /* libffi.a */; };
5C746DB92BA0DA920049D734 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C746DB42BA0DA920049D734 /* libgmpxx.a */; };
5C746DBA2BA0DA920049D734 /* libHSsimplex-chat-5.6.0.2-CrEKCx0J5BfIirfPSOWUVo.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C746DB52BA0DA920049D734 /* libHSsimplex-chat-5.6.0.2-CrEKCx0J5BfIirfPSOWUVo.a */; };
5C746DBB2BA0DA920049D734 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C746DB62BA0DA920049D734 /* libgmp.a */; };
5C746DBC2BA0DA920049D734 /* libHSsimplex-chat-5.6.0.2-CrEKCx0J5BfIirfPSOWUVo-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C746DB72BA0DA920049D734 /* libHSsimplex-chat-5.6.0.2-CrEKCx0J5BfIirfPSOWUVo-ghc9.6.3.a */; };
5C7505A227B65FDB00BE3227 /* CIMetaView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C7505A127B65FDB00BE3227 /* CIMetaView.swift */; };
5C7505A527B679EE00BE3227 /* NavLinkPlain.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C7505A427B679EE00BE3227 /* NavLinkPlain.swift */; };
5C7505A827B6D34800BE3227 /* ChatInfoToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C7505A727B6D34800BE3227 /* ChatInfoToolbar.swift */; };
@@ -115,6 +110,11 @@
5CC1C99527A6CF7F000D9FF6 /* ShareSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CC1C99427A6CF7F000D9FF6 /* ShareSheet.swift */; };
5CC2C0FC2809BF11000C35E3 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5CC2C0FA2809BF11000C35E3 /* Localizable.strings */; };
5CC2C0FF2809BF11000C35E3 /* SimpleX--iOS--InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5CC2C0FD2809BF11000C35E3 /* SimpleX--iOS--InfoPlist.strings */; };
5CC83D1A2BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC83D152BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv.a */; };
5CC83D1B2BCC504B00A0C558 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC83D162BCC504B00A0C558 /* libgmpxx.a */; };
5CC83D1C2BCC504B00A0C558 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC83D172BCC504B00A0C558 /* libgmp.a */; };
5CC83D1D2BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv-ghc9.6.4.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC83D182BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv-ghc9.6.4.a */; };
5CC83D1E2BCC504B00A0C558 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC83D192BCC504B00A0C558 /* libffi.a */; };
5CC868F329EB540C0017BBFD /* CIRcvDecryptionError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CC868F229EB540C0017BBFD /* CIRcvDecryptionError.swift */; };
5CCB939C297EFCB100399E78 /* NavStackCompat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CCB939B297EFCB100399E78 /* NavStackCompat.swift */; };
5CD67B8F2B0E858A00C510B1 /* hs_init.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CD67B8D2B0E858A00C510B1 /* hs_init.h */; settings = {ATTRIBUTES = (Public, ); }; };
@@ -144,7 +144,6 @@
5CEACCED27DEA495000BD591 /* MsgContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CEACCEC27DEA495000BD591 /* MsgContentView.swift */; };
5CEBD7462A5C0A8F00665FE2 /* KeyboardPadding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CEBD7452A5C0A8F00665FE2 /* KeyboardPadding.swift */; };
5CEBD7482A5F115D00665FE2 /* SetDeliveryReceiptsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CEBD7472A5F115D00665FE2 /* SetDeliveryReceiptsView.swift */; };
5CF9371E2B23429500E1D781 /* ConcurrentQueue.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CF9371D2B23429500E1D781 /* ConcurrentQueue.swift */; };
5CF937202B24DE8C00E1D781 /* SharedFileSubscriber.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CF9371F2B24DE8C00E1D781 /* SharedFileSubscriber.swift */; };
5CF937232B2503D000E1D781 /* NSESubscriber.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CF937212B25034A00E1D781 /* NSESubscriber.swift */; };
5CFA59C42860BC6200863A68 /* MigrateToAppGroupView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CFA59C32860BC6200863A68 /* MigrateToAppGroupView.swift */; };
@@ -173,6 +172,7 @@
646BB38E283FDB6D001CE359 /* LocalAuthenticationUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 646BB38D283FDB6D001CE359 /* LocalAuthenticationUtils.swift */; };
647F090E288EA27B00644C40 /* GroupMemberInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 647F090D288EA27B00644C40 /* GroupMemberInfoView.swift */; };
648010AB281ADD15009009B9 /* CIFileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 648010AA281ADD15009009B9 /* CIFileView.swift */; };
648679AB2BC96A74006456E7 /* ChatItemForwardingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 648679AA2BC96A74006456E7 /* ChatItemForwardingView.swift */; };
649BCDA0280460FD00C3A862 /* ComposeImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649BCD9F280460FD00C3A862 /* ComposeImageView.swift */; };
649BCDA22805D6EF00C3A862 /* CIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649BCDA12805D6EF00C3A862 /* CIImageView.swift */; };
64AA1C6927EE10C800AC7277 /* ContextItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64AA1C6827EE10C800AC7277 /* ContextItemView.swift */; };
@@ -188,6 +188,7 @@
8C69FE7D2B8C7D2700267E38 /* AppSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C69FE7C2B8C7D2700267E38 /* AppSettings.swift */; };
8C7D949A2B88952700B7B9E1 /* MigrateToDevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C7D94992B88952700B7B9E1 /* MigrateToDevice.swift */; };
8C7DF3202B7CDB0A00C886D0 /* MigrateFromDevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C7DF31F2B7CDB0A00C886D0 /* MigrateFromDevice.swift */; };
8CC956EE2BC0041000412A11 /* NetworkObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CC956ED2BC0041000412A11 /* NetworkObserver.swift */; };
D7197A1829AE89660055C05A /* WebRTC in Frameworks */ = {isa = PBXBuildFile; productRef = D7197A1729AE89660055C05A /* WebRTC */; };
D72A9088294BD7A70047C86D /* NativeTextEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D72A9087294BD7A70047C86D /* NativeTextEditor.swift */; };
D741547829AF89AF0022400A /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D741547729AF89AF0022400A /* StoreKit.framework */; };
@@ -288,6 +289,9 @@
5C35CFC727B2782E00FB6C6D /* BGManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BGManager.swift; sourceTree = "<group>"; };
5C35CFCA27B2E91D00FB6C6D /* NtfManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NtfManager.swift; sourceTree = "<group>"; };
5C36027227F47AD5009F19D9 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
5C371E4E2BA9AAA200100AD3 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/Localizable.strings; sourceTree = "<group>"; };
5C371E4F2BA9AB6400100AD3 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = "hu.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = "<group>"; };
5C371E502BA9AB6400100AD3 /* hu */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = hu; path = hu.lproj/InfoPlist.strings; sourceTree = "<group>"; };
5C3A88CD27DF50170060F1C2 /* DetermineWidth.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetermineWidth.swift; sourceTree = "<group>"; };
5C3A88D027DF57800060F1C2 /* FramedItemView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FramedItemView.swift; sourceTree = "<group>"; };
5C3CCFCB2AE6BD3100C3F0C3 /* ConnectDesktopView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConnectDesktopView.swift; sourceTree = "<group>"; };
@@ -324,11 +328,6 @@
5C6D183229E93FBA00D430B3 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = "pl.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = "<group>"; };
5C6D183329E93FBA00D430B3 /* pl */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = pl; path = pl.lproj/InfoPlist.strings; sourceTree = "<group>"; };
5C7031152953C97F00150A12 /* CIFeaturePreferenceView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIFeaturePreferenceView.swift; sourceTree = "<group>"; };
5C746DB32BA0DA920049D734 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = "<group>"; };
5C746DB42BA0DA920049D734 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = "<group>"; };
5C746DB52BA0DA920049D734 /* libHSsimplex-chat-5.6.0.2-CrEKCx0J5BfIirfPSOWUVo.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.6.0.2-CrEKCx0J5BfIirfPSOWUVo.a"; sourceTree = "<group>"; };
5C746DB62BA0DA920049D734 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = "<group>"; };
5C746DB72BA0DA920049D734 /* libHSsimplex-chat-5.6.0.2-CrEKCx0J5BfIirfPSOWUVo-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.6.0.2-CrEKCx0J5BfIirfPSOWUVo-ghc9.6.3.a"; sourceTree = "<group>"; };
5C7505A127B65FDB00BE3227 /* CIMetaView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIMetaView.swift; sourceTree = "<group>"; };
5C7505A427B679EE00BE3227 /* NavLinkPlain.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavLinkPlain.swift; sourceTree = "<group>"; };
5C7505A727B6D34800BE3227 /* ChatInfoToolbar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatInfoToolbar.swift; sourceTree = "<group>"; };
@@ -404,6 +403,11 @@
5CC1C99427A6CF7F000D9FF6 /* ShareSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareSheet.swift; sourceTree = "<group>"; };
5CC2C0FB2809BF11000C35E3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = "<group>"; };
5CC2C0FE2809BF11000C35E3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = "ru.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = "<group>"; };
5CC83D152BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv.a"; sourceTree = "<group>"; };
5CC83D162BCC504B00A0C558 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = "<group>"; };
5CC83D172BCC504B00A0C558 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = "<group>"; };
5CC83D182BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv-ghc9.6.4.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv-ghc9.6.4.a"; sourceTree = "<group>"; };
5CC83D192BCC504B00A0C558 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = "<group>"; };
5CC868F229EB540C0017BBFD /* CIRcvDecryptionError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIRcvDecryptionError.swift; sourceTree = "<group>"; };
5CCB939B297EFCB100399E78 /* NavStackCompat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavStackCompat.swift; sourceTree = "<group>"; };
5CD67B8D2B0E858A00C510B1 /* hs_init.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hs_init.h; sourceTree = "<group>"; };
@@ -434,7 +438,6 @@
5CEACCEC27DEA495000BD591 /* MsgContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MsgContentView.swift; sourceTree = "<group>"; };
5CEBD7452A5C0A8F00665FE2 /* KeyboardPadding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyboardPadding.swift; sourceTree = "<group>"; };
5CEBD7472A5F115D00665FE2 /* SetDeliveryReceiptsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SetDeliveryReceiptsView.swift; sourceTree = "<group>"; };
5CF9371D2B23429500E1D781 /* ConcurrentQueue.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConcurrentQueue.swift; sourceTree = "<group>"; };
5CF9371F2B24DE8C00E1D781 /* SharedFileSubscriber.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharedFileSubscriber.swift; sourceTree = "<group>"; };
5CF937212B25034A00E1D781 /* NSESubscriber.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSESubscriber.swift; sourceTree = "<group>"; };
5CFA59C32860BC6200863A68 /* MigrateToAppGroupView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrateToAppGroupView.swift; sourceTree = "<group>"; };
@@ -462,6 +465,7 @@
646BB38D283FDB6D001CE359 /* LocalAuthenticationUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalAuthenticationUtils.swift; sourceTree = "<group>"; };
647F090D288EA27B00644C40 /* GroupMemberInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupMemberInfoView.swift; sourceTree = "<group>"; };
648010AA281ADD15009009B9 /* CIFileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIFileView.swift; sourceTree = "<group>"; };
648679AA2BC96A74006456E7 /* ChatItemForwardingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatItemForwardingView.swift; sourceTree = "<group>"; };
6493D667280ED77F007A76FB /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = "<group>"; };
649BCD9F280460FD00C3A862 /* ComposeImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeImageView.swift; sourceTree = "<group>"; };
649BCDA12805D6EF00C3A862 /* CIImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIImageView.swift; sourceTree = "<group>"; };
@@ -479,6 +483,7 @@
8C69FE7C2B8C7D2700267E38 /* AppSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppSettings.swift; sourceTree = "<group>"; };
8C7D94992B88952700B7B9E1 /* MigrateToDevice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrateToDevice.swift; sourceTree = "<group>"; };
8C7DF31F2B7CDB0A00C886D0 /* MigrateFromDevice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrateFromDevice.swift; sourceTree = "<group>"; };
8CC956ED2BC0041000412A11 /* NetworkObserver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkObserver.swift; sourceTree = "<group>"; };
D72A9087294BD7A70047C86D /* NativeTextEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NativeTextEditor.swift; sourceTree = "<group>"; };
D741547729AF89AF0022400A /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk/System/Library/Frameworks/StoreKit.framework; sourceTree = DEVELOPER_DIR; };
D741547929AF90B00022400A /* PushKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PushKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk/System/Library/Frameworks/PushKit.framework; sourceTree = DEVELOPER_DIR; };
@@ -520,12 +525,12 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
5C746DB92BA0DA920049D734 /* libgmpxx.a in Frameworks */,
5C746DBA2BA0DA920049D734 /* libHSsimplex-chat-5.6.0.2-CrEKCx0J5BfIirfPSOWUVo.a in Frameworks */,
5CC83D1D2BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv-ghc9.6.4.a in Frameworks */,
5CC83D1B2BCC504B00A0C558 /* libgmpxx.a in Frameworks */,
5CC83D1C2BCC504B00A0C558 /* libgmp.a in Frameworks */,
5CC83D1A2BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv.a in Frameworks */,
5CC83D1E2BCC504B00A0C558 /* libffi.a in Frameworks */,
5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */,
5C746DB82BA0DA920049D734 /* libffi.a in Frameworks */,
5C746DBC2BA0DA920049D734 /* libHSsimplex-chat-5.6.0.2-CrEKCx0J5BfIirfPSOWUVo-ghc9.6.3.a in Frameworks */,
5C746DBB2BA0DA920049D734 /* libgmp.a in Frameworks */,
5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -582,6 +587,7 @@
5CBE6C11294487F7002D9531 /* VerifyCodeView.swift */,
5CBE6C132944CC12002D9531 /* ScanCodeView.swift */,
64C06EB42A0A4A7C00792D4D /* ChatItemInfoView.swift */,
648679AA2BC96A74006456E7 /* ChatItemForwardingView.swift */,
);
path = Chat;
sourceTree = "<group>";
@@ -589,11 +595,11 @@
5C764E5C279C70B7000C6508 /* Libraries */ = {
isa = PBXGroup;
children = (
5C746DB32BA0DA920049D734 /* libffi.a */,
5C746DB62BA0DA920049D734 /* libgmp.a */,
5C746DB42BA0DA920049D734 /* libgmpxx.a */,
5C746DB72BA0DA920049D734 /* libHSsimplex-chat-5.6.0.2-CrEKCx0J5BfIirfPSOWUVo-ghc9.6.3.a */,
5C746DB52BA0DA920049D734 /* libHSsimplex-chat-5.6.0.2-CrEKCx0J5BfIirfPSOWUVo.a */,
5CC83D192BCC504B00A0C558 /* libffi.a */,
5CC83D172BCC504B00A0C558 /* libgmp.a */,
5CC83D162BCC504B00A0C558 /* libgmpxx.a */,
5CC83D182BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv-ghc9.6.4.a */,
5CC83D152BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv.a */,
);
path = Libraries;
sourceTree = "<group>";
@@ -622,6 +628,7 @@
5CB346E82869E8BA001FD2EF /* PushEnvironment.swift */,
5C93293E2928E0FD0090FFF9 /* AudioRecPlay.swift */,
5CBD2859295711D700EC2CF4 /* ImageUtils.swift */,
8CC956ED2BC0041000412A11 /* NetworkObserver.swift */,
);
path = Model;
sourceTree = "<group>";
@@ -797,7 +804,6 @@
isa = PBXGroup;
children = (
5CDCAD5128186DE400503DA2 /* SimpleX NSE.entitlements */,
5CF9371D2B23429500E1D781 /* ConcurrentQueue.swift */,
5CDCAD472818589900503DA2 /* NotificationService.swift */,
5CDCAD492818589900503DA2 /* Info.plist */,
5CB0BA862826CB3A00B3292C /* InfoPlist.strings */,
@@ -1060,6 +1066,7 @@
uk,
bg,
tr,
hu,
);
mainGroup = 5CA059BD279559F40002BEB4;
packageReferences = (
@@ -1157,6 +1164,7 @@
5C10D88828EED12E00E58BF0 /* ContactConnectionInfo.swift in Sources */,
5CBE6C12294487F7002D9531 /* VerifyCodeView.swift in Sources */,
3CDBCF4227FAE51000354CDD /* ComposeLinkView.swift in Sources */,
648679AB2BC96A74006456E7 /* ChatItemForwardingView.swift in Sources */,
64466DC829FC2B3B00E3D48D /* CreateSimpleXAddress.swift in Sources */,
3CDBCF4827FF621E00354CDD /* CILinkView.swift in Sources */,
5C7505A827B6D34800BE3227 /* ChatInfoToolbar.swift in Sources */,
@@ -1175,6 +1183,7 @@
5C9A5BDB2871E05400A5B906 /* SetNotificationsMode.swift in Sources */,
5CB0BA8E2827126500B3292C /* OnboardingView.swift in Sources */,
6442E0BE2880182D00CEC0F9 /* GroupChatInfoView.swift in Sources */,
8CC956EE2BC0041000412A11 /* NetworkObserver.swift in Sources */,
5C2E261227A30FEA00F70299 /* TerminalView.swift in Sources */,
5C9FD96E27A5D6ED0075386C /* SendMessageView.swift in Sources */,
5CA7DFC329302AF000F7FDDE /* AppSheet.swift in Sources */,
@@ -1281,7 +1290,6 @@
files = (
5CDCAD482818589900503DA2 /* NotificationService.swift in Sources */,
5CFE0922282EEAF60002594B /* ZoomableScrollView.swift in Sources */,
5CF9371E2B23429500E1D781 /* ConcurrentQueue.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -1351,6 +1359,7 @@
5C636F672AAB3D2400751C84 /* uk */,
5C5B67932ABAF56000DA9412 /* bg */,
5C245F3E2B501F13001CC39F /* tr */,
5C371E502BA9AB6400100AD3 /* hu */,
);
name = InfoPlist.strings;
sourceTree = "<group>";
@@ -1374,6 +1383,7 @@
5CE6C7B42AAB1527007F345C /* uk */,
5C5B67912ABAF4B500DA9412 /* bg */,
5C245F3C2B501E98001CC39F /* tr */,
5C371E4E2BA9AAA200100AD3 /* hu */,
);
name = Localizable.strings;
sourceTree = "<group>";
@@ -1396,6 +1406,7 @@
5C636F662AAB3D2400751C84 /* uk */,
5C5B67922ABAF56000DA9412 /* bg */,
5C245F3D2B501F13001CC39F /* tr */,
5C371E4F2BA9AB6400100AD3 /* hu */,
);
name = "SimpleX--iOS--InfoPlist.strings";
sourceTree = "<group>";
@@ -1438,6 +1449,7 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
@@ -1499,6 +1511,7 @@
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEAD_CODE_STRIPPING = YES;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
@@ -1527,12 +1540,16 @@
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES;
CLANG_ENABLE_MODULES = YES;
CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES;
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 202;
CURRENT_PROJECT_VERSION = 207;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
ENABLE_PREVIEWS = YES;
GCC_OPTIMIZATION_LEVEL = s;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "SimpleX--iOS--Info.plist";
INFOPLIST_KEY_NSCameraUsageDescription = "SimpleX needs camera access to scan QR codes to connect to other users and for video calls.";
@@ -1551,11 +1568,13 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 5.6;
LLVM_LTO = YES_THIN;
MARKETING_VERSION = 5.7;
PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.app;
PRODUCT_NAME = SimpleX;
SDKROOT = iphoneos;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OPTIMIZATION_LEVEL = "-O";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
};
@@ -1570,12 +1589,16 @@
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_INCLUDE_ALL_APPICON_ASSETS = YES;
CLANG_ENABLE_MODULES = YES;
CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES;
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 202;
CURRENT_PROJECT_VERSION = 207;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
ENABLE_PREVIEWS = YES;
ENABLE_CODE_COVERAGE = NO;
ENABLE_PREVIEWS = NO;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "SimpleX--iOS--Info.plist";
INFOPLIST_KEY_NSCameraUsageDescription = "SimpleX needs camera access to scan QR codes to connect to other users and for video calls.";
@@ -1594,7 +1617,8 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 5.6;
LLVM_LTO = YES;
MARKETING_VERSION = 5.7;
PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.app;
PRODUCT_NAME = SimpleX;
SDKROOT = iphoneos;
@@ -1650,12 +1674,15 @@
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES;
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 202;
CURRENT_PROJECT_VERSION = 207;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
GCC_OPTIMIZATION_LEVEL = s;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "SimpleX NSE/Info.plist";
INFOPLIST_KEY_CFBundleDisplayName = "SimpleX NSE";
@@ -1666,13 +1693,15 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 5.6;
LLVM_LTO = YES;
MARKETING_VERSION = 5.7;
PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-NSE";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Osize";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
};
@@ -1682,12 +1711,15 @@
isa = XCBuildConfiguration;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES;
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 202;
CURRENT_PROJECT_VERSION = 207;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
ENABLE_BITCODE = NO;
ENABLE_CODE_COVERAGE = NO;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = "SimpleX NSE/Info.plist";
INFOPLIST_KEY_CFBundleDisplayName = "SimpleX NSE";
@@ -1698,13 +1730,15 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 5.6;
LLVM_LTO = YES;
MARKETING_VERSION = 5.7;
PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-NSE";
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SDKROOT = iphoneos;
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Osize";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
VALIDATE_PRODUCT = YES;
@@ -1716,14 +1750,17 @@
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ENABLE_MODULES = YES;
CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES;
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 202;
CURRENT_PROJECT_VERSION = 207;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_BITCODE = NO;
GCC_OPTIMIZATION_LEVEL = s;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 SimpleX Chat. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -1741,7 +1778,8 @@
"$(inherited)",
"$(PROJECT_DIR)/Libraries/sim",
);
MARKETING_VERSION = 5.6;
LLVM_LTO = YES;
MARKETING_VERSION = 5.7;
PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.SimpleXChat;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SDKROOT = iphoneos;
@@ -1750,6 +1788,7 @@
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_INCLUDE_PATHS = "";
SWIFT_OBJC_BRIDGING_HEADER = ./SimpleXChat/SimpleX.h;
SWIFT_OPTIMIZATION_LEVEL = "-O";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
VERSIONING_SYSTEM = "apple-generic";
@@ -1762,14 +1801,17 @@
buildSettings = {
APPLICATION_EXTENSION_API_ONLY = YES;
CLANG_ENABLE_MODULES = YES;
CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES;
CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 202;
CURRENT_PROJECT_VERSION = 207;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 5NN7GUYB6T;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
ENABLE_BITCODE = NO;
ENABLE_CODE_COVERAGE = NO;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2022 SimpleX Chat. All rights reserved.";
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
@@ -1787,7 +1829,8 @@
"$(inherited)",
"$(PROJECT_DIR)/Libraries/sim",
);
MARKETING_VERSION = 5.6;
LLVM_LTO = YES;
MARKETING_VERSION = 5.7;
PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.SimpleXChat;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SDKROOT = iphoneos;
@@ -1796,6 +1839,7 @@
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_INCLUDE_PATHS = "";
SWIFT_OBJC_BRIDGING_HEADER = ./SimpleXChat/SimpleX.h;
SWIFT_OPTIMIZATION_LEVEL = "-O";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
+15 -4
View File
@@ -87,6 +87,11 @@ public func chatInitControllerRemovingDatabases() {
public func chatCloseStore() {
// Prevent crash when exiting the app with already closed store (for example, after changing a database passpharase)
guard hasChatCtrl() else {
logger.error("chatCloseStore: already closed, chatCtrl is nil")
return
}
let err = fromCString(chat_close_store(getChatCtrl()))
if err != "" {
logger.error("chatCloseStore error: \(err)")
@@ -213,13 +218,11 @@ public func chatResponse(_ s: String) -> ChatResponse {
}
} else if type == "chatCmdError" {
if let jError = jResp["chatCmdError"] as? NSDictionary {
let user: UserRef? = try? decodeObject(jError["user_"] as Any)
return .chatCmdError(user_: user, chatError: .invalidJSON(json: prettyJSON(jError) ?? ""))
return .chatCmdError(user_: decodeUser_(jError), chatError: .invalidJSON(json: prettyJSON(jError) ?? ""))
}
} else if type == "chatError" {
if let jError = jResp["chatError"] as? NSDictionary {
let user: UserRef? = try? decodeObject(jError["user_"] as Any)
return .chatError(user_: user, chatError: .invalidJSON(json: prettyJSON(jError) ?? ""))
return .chatError(user_: decodeUser_(jError), chatError: .invalidJSON(json: prettyJSON(jError) ?? ""))
}
}
}
@@ -228,6 +231,14 @@ public func chatResponse(_ s: String) -> ChatResponse {
return ChatResponse.response(type: type ?? "invalid", json: json ?? s)
}
private func decodeUser_(_ jDict: NSDictionary) -> UserRef? {
if let user_ = jDict["user_"] {
try? decodeObject(user_ as Any)
} else {
nil
}
}
func parseChatData(_ jChat: Any) throws -> ChatData {
let jChatDict = jChat as! NSDictionary
let chatInfo: ChatInfo = try decodeObject(jChatDict["chatInfo"]!)
+49 -14
View File
@@ -50,6 +50,7 @@ public enum ChatCommand {
case apiDeleteChatItem(type: ChatType, id: Int64, itemId: Int64, mode: CIDeleteMode)
case apiDeleteMemberChatItem(groupId: Int64, groupMemberId: Int64, itemId: Int64)
case apiChatItemReaction(type: ChatType, id: Int64, itemId: Int64, add: Bool, reaction: MsgReaction)
case apiForwardChatItem(toChatType: ChatType, toChatId: Int64, fromChatType: ChatType, fromChatId: Int64, itemId: Int64)
case apiGetNtfToken
case apiRegisterToken(token: DeviceToken, notificationMode: NotificationsMode)
case apiVerifyToken(token: DeviceToken, nonce: String, code: String)
@@ -77,6 +78,7 @@ public enum ChatCommand {
case apiGetChatItemTTL(userId: Int64)
case apiSetNetworkConfig(networkConfig: NetCfg)
case apiGetNetworkConfig
case apiSetNetworkInfo(networkInfo: UserNetworkInfo)
case reconnectAllServers
case apiSetChatSettings(type: ChatType, id: Int64, chatSettings: ChatSettings)
case apiSetMemberSettings(groupId: Int64, groupMemberId: Int64, memberSettings: GroupMemberSettings)
@@ -194,6 +196,7 @@ public enum ChatCommand {
case let .apiDeleteChatItem(type, id, itemId, mode): return "/_delete item \(ref(type, id)) \(itemId) \(mode.rawValue)"
case let .apiDeleteMemberChatItem(groupId, groupMemberId, itemId): return "/_delete member item #\(groupId) \(groupMemberId) \(itemId)"
case let .apiChatItemReaction(type, id, itemId, add, reaction): return "/_reaction \(ref(type, id)) \(itemId) \(onOff(add)) \(encodeJSON(reaction))"
case let .apiForwardChatItem(toChatType, toChatId, fromChatType, fromChatId, itemId): return "/_forward \(ref(toChatType, toChatId)) \(ref(fromChatType, fromChatId)) \(itemId)"
case .apiGetNtfToken: return "/_ntf get "
case let .apiRegisterToken(token, notificationMode): return "/_ntf register \(token.cmdString) \(notificationMode.rawValue)"
case let .apiVerifyToken(token, nonce, code): return "/_ntf verify \(token.cmdString) \(nonce) \(code)"
@@ -221,6 +224,7 @@ public enum ChatCommand {
case let .apiGetChatItemTTL(userId): return "/_ttl \(userId)"
case let .apiSetNetworkConfig(networkConfig): return "/_network \(encodeJSON(networkConfig))"
case .apiGetNetworkConfig: return "/network"
case let .apiSetNetworkInfo(networkInfo): return "/_network info \(encodeJSON(networkInfo))"
case .reconnectAllServers: return "/reconnect"
case let .apiSetChatSettings(type, id, chatSettings): return "/_settings \(ref(type, id)) \(encodeJSON(chatSettings))"
case let .apiSetMemberSettings(groupId, groupMemberId, memberSettings): return "/_member settings #\(groupId) \(groupMemberId) \(encodeJSON(memberSettings))"
@@ -341,6 +345,7 @@ public enum ChatCommand {
case .apiConnectContactViaAddress: return "apiConnectContactViaAddress"
case .apiDeleteMemberChatItem: return "apiDeleteMemberChatItem"
case .apiChatItemReaction: return "apiChatItemReaction"
case .apiForwardChatItem: return "apiForwardChatItem"
case .apiGetNtfToken: return "apiGetNtfToken"
case .apiRegisterToken: return "apiRegisterToken"
case .apiVerifyToken: return "apiVerifyToken"
@@ -368,6 +373,7 @@ public enum ChatCommand {
case .apiGetChatItemTTL: return "apiGetChatItemTTL"
case .apiSetNetworkConfig: return "apiSetNetworkConfig"
case .apiGetNetworkConfig: return "apiGetNetworkConfig"
case .apiSetNetworkInfo: return "apiSetNetworkInfo"
case .reconnectAllServers: return "reconnectAllServers"
case .apiSetChatSettings: return "apiSetChatSettings"
case .apiSetMemberSettings: return "apiSetMemberSettings"
@@ -557,11 +563,6 @@ public enum ChatResponse: Decodable, Error {
case contactRequestRejected(user: UserRef)
case contactUpdated(user: UserRef, toContact: Contact)
case groupMemberUpdated(user: UserRef, groupInfo: GroupInfo, fromMember: GroupMember, toMember: GroupMember)
// TODO remove events below
case contactsSubscribed(server: String, contactRefs: [ContactRef])
case contactsDisconnected(server: String, contactRefs: [ContactRef])
case contactSubSummary(user: UserRef, contactSubscriptions: [ContactSubStatus])
// TODO remove events above
case networkStatus(networkStatus: NetworkStatus, connections: [String])
case networkStatuses(user_: UserRef?, networkStatuses: [ConnNetworkStatus])
case groupSubscribed(user: UserRef, groupInfo: GroupRef)
@@ -724,9 +725,6 @@ public enum ChatResponse: Decodable, Error {
case .contactRequestRejected: return "contactRequestRejected"
case .contactUpdated: return "contactUpdated"
case .groupMemberUpdated: return "groupMemberUpdated"
case .contactsSubscribed: return "contactsSubscribed"
case .contactsDisconnected: return "contactsDisconnected"
case .contactSubSummary: return "contactSubSummary"
case .networkStatus: return "networkStatus"
case .networkStatuses: return "networkStatuses"
case .groupSubscribed: return "groupSubscribed"
@@ -885,9 +883,6 @@ public enum ChatResponse: Decodable, Error {
case .contactRequestRejected: return noDetails
case let .contactUpdated(u, toContact): return withUser(u, String(describing: toContact))
case let .groupMemberUpdated(u, groupInfo, fromMember, toMember): return withUser(u, "groupInfo: \(groupInfo)\nfromMember: \(fromMember)\ntoMember: \(toMember)")
case let .contactsSubscribed(server, contactRefs): return "server: \(server)\ncontacts:\n\(String(describing: contactRefs))"
case let .contactsDisconnected(server, contactRefs): return "server: \(server)\ncontacts:\n\(String(describing: contactRefs))"
case let .contactSubSummary(u, contactSubscriptions): return withUser(u, String(describing: contactSubscriptions))
case let .networkStatus(status, conns): return "networkStatus: \(String(describing: status))\nconnections: \(String(describing: conns))"
case let .networkStatuses(u, statuses): return withUser(u, String(describing: statuses))
case let .groupSubscribed(u, groupInfo): return withUser(u, String(describing: groupInfo))
@@ -1272,7 +1267,7 @@ public struct NetCfg: Codable, Equatable {
sessionMode: TransportSessionMode.user,
tcpConnectTimeout: 20_000_000,
tcpTimeout: 15_000_000,
tcpTimeoutPerKb: 45_000,
tcpTimeoutPerKb: 10_000,
tcpKeepAlive: KeepAliveOpts.defaults,
smpPingInterval: 1200_000_000,
smpPingCount: 3,
@@ -1284,7 +1279,7 @@ public struct NetCfg: Codable, Equatable {
sessionMode: TransportSessionMode.user,
tcpConnectTimeout: 30_000_000,
tcpTimeout: 20_000_000,
tcpTimeoutPerKb: 60_000,
tcpTimeoutPerKb: 15_000,
tcpKeepAlive: KeepAliveOpts.defaults,
smpPingInterval: 1200_000_000,
smpPingCount: 3,
@@ -1725,6 +1720,8 @@ public enum ChatErrorType: Decodable {
case fallbackToSMPProhibited(fileId: Int64)
case inlineFileProhibited(fileId: Int64)
case invalidQuote
case invalidForward
case forwardNoFile
case invalidChatItemUpdate
case invalidChatItemDelete
case hasCurrentCall
@@ -1827,6 +1824,7 @@ public enum AgentErrorType: Decodable {
case BROKER(brokerAddress: String, brokerErr: BrokerErrorType)
case AGENT(agentErr: SMPAgentError)
case INTERNAL(internalErr: String)
case CRITICAL(offerRestart: Bool, criticalErr: String)
case INACTIVE
}
@@ -1878,6 +1876,8 @@ public enum XFTPErrorType: Decodable {
case NO_FILE
case HAS_FILE
case FILE_IO
case TIMEOUT
case REDIRECT(redirectError: String)
case INTERNAL
}
@@ -1885,6 +1885,8 @@ public enum RCErrorType: Decodable {
case `internal`(internalErr: String)
case identity
case noLocalAddress
case newController
case notDiscovered
case tlsStartFailed
case exception(exception: String)
case ctrlAuth
@@ -1910,6 +1912,7 @@ public enum ProtocolTransportError: Decodable {
case badBlock
case largeMsg
case badSession
case noServerAuth
case handshake(handshakeErr: SMPHandshakeError)
}
@@ -1917,6 +1920,7 @@ public enum SMPHandshakeError: Decodable {
case PARSE
case VERSION
case IDENTITY
case BAD_AUTH
}
public enum SMPAgentError: Decodable {
@@ -1938,10 +1942,13 @@ public enum RemoteCtrlError: Decodable {
case badState
case busy
case timeout
case noKnownControllers
case badController
case disconnected(remoteCtrlId: Int64, reason: String)
case badInvitation
case badVersion(appVersion: String)
// case protocolError(protocolError: RemoteProtocolError)
case hTTP2Error(http2Error: String)
case protocolError
}
public struct MigrationFileLinkData: Codable {
@@ -2087,3 +2094,31 @@ public enum AppSettingsLockScreenCalls: String, Codable {
case show
case accept
}
public struct UserNetworkInfo: Codable, Equatable {
public let networkType: UserNetworkType
public let online: Bool
public init(networkType: UserNetworkType, online: Bool) {
self.networkType = networkType
self.online = online
}
}
public enum UserNetworkType: String, Codable {
case none
case cellular
case wifi
case ethernet
case other
public var text: LocalizedStringKey {
switch self {
case .none: "No network connection"
case .cellular: "Cellular"
case .wifi: "WiFi"
case .ethernet: "Wired ethernet"
case .other: "Other"
}
}
}
+1 -1
View File
@@ -197,7 +197,7 @@ public let confirmDBUpgradesGroupDefault = BoolDefault(defaults: groupDefaults,
public let callKitEnabledGroupDefault = BoolDefault(defaults: groupDefaults, forKey: GROUP_DEFAULT_CALL_KIT_ENABLED)
public let pqExperimentalEnabledDefault = BoolDefault(defaults: groupDefaults, forKey: GROUP_DEFAULT_PRIVACY_ENCRYPT_LOCAL_FILES)
public let pqExperimentalEnabledDefault = BoolDefault(defaults: groupDefaults, forKey: GROUP_DEFAULT_PQ_EXPERIMENTAL_ENABLED)
public class DateDefault {
var defaults: UserDefaults
+153 -33
View File
@@ -543,6 +543,7 @@ public protocol Feature {
var iconFilled: String { get }
var iconScale: CGFloat { get }
var hasParam: Bool { get }
var hasRole: Bool { get }
var text: String { get }
}
@@ -569,6 +570,8 @@ public enum ChatFeature: String, Decodable, Feature {
}
}
public var hasRole: Bool { false }
public var text: String {
switch self {
case .timedMessages: return NSLocalizedString("Disappearing messages", comment: "chat feature")
@@ -694,6 +697,7 @@ public enum GroupFeature: String, Decodable, Feature {
case reactions
case voice
case files
case simplexLinks
case history
public var id: Self { self }
@@ -705,6 +709,19 @@ public enum GroupFeature: String, Decodable, Feature {
}
}
public var hasRole: Bool {
switch self {
case .timedMessages: false
case .directMessages: true
case .fullDelete: false
case .reactions: false
case .voice: true
case .files: true
case .simplexLinks: true
case .history: false
}
}
public var text: String {
switch self {
case .timedMessages: return NSLocalizedString("Disappearing messages", comment: "chat feature")
@@ -713,6 +730,7 @@ public enum GroupFeature: String, Decodable, Feature {
case .reactions: return NSLocalizedString("Message reactions", comment: "chat feature")
case .voice: return NSLocalizedString("Voice messages", comment: "chat feature")
case .files: return NSLocalizedString("Files and media", comment: "chat feature")
case .simplexLinks: return NSLocalizedString("SimpleX links", comment: "chat feature")
case .history: return NSLocalizedString("Visible history", comment: "chat feature")
}
}
@@ -725,6 +743,7 @@ public enum GroupFeature: String, Decodable, Feature {
case .reactions: return "face.smiling"
case .voice: return "mic"
case .files: return "doc"
case .simplexLinks: return "link.circle"
case .history: return "clock"
}
}
@@ -737,6 +756,7 @@ public enum GroupFeature: String, Decodable, Feature {
case .reactions: return "face.smiling.fill"
case .voice: return "mic.fill"
case .files: return "doc.fill"
case .simplexLinks: return "link.circle.fill"
case .history: return "clock.fill"
}
}
@@ -781,6 +801,11 @@ public enum GroupFeature: String, Decodable, Feature {
case .on: return "Allow to send files and media."
case .off: return "Prohibit sending files and media."
}
case .simplexLinks:
switch enabled {
case .on: return "Allow to send SimpleX links."
case .off: return "Prohibit sending SimpleX links."
}
case .history:
switch enabled {
case .on: return "Send up to 100 last messages to new members."
@@ -819,6 +844,11 @@ public enum GroupFeature: String, Decodable, Feature {
case .on: return "Group members can send files and media."
case .off: return "Files and media are prohibited in this group."
}
case .simplexLinks:
switch enabled {
case .on: return "Group members can send SimpleX links."
case .off: return "SimpleX links are prohibited in this group."
}
case .history:
switch enabled {
case .on: return "Up to 100 last messages are sent to new members."
@@ -958,20 +988,22 @@ public enum FeatureAllowed: String, Codable, Identifiable {
public struct FullGroupPreferences: Decodable, Equatable {
public var timedMessages: TimedMessagesGroupPreference
public var directMessages: GroupPreference
public var directMessages: RoleGroupPreference
public var fullDelete: GroupPreference
public var reactions: GroupPreference
public var voice: GroupPreference
public var files: GroupPreference
public var voice: RoleGroupPreference
public var files: RoleGroupPreference
public var simplexLinks: RoleGroupPreference
public var history: GroupPreference
public init(
timedMessages: TimedMessagesGroupPreference,
directMessages: GroupPreference,
directMessages: RoleGroupPreference,
fullDelete: GroupPreference,
reactions: GroupPreference,
voice: GroupPreference,
files: GroupPreference,
voice: RoleGroupPreference,
files: RoleGroupPreference,
simplexLinks: RoleGroupPreference,
history: GroupPreference
) {
self.timedMessages = timedMessages
@@ -980,36 +1012,40 @@ public struct FullGroupPreferences: Decodable, Equatable {
self.reactions = reactions
self.voice = voice
self.files = files
self.simplexLinks = simplexLinks
self.history = history
}
public static let sampleData = FullGroupPreferences(
timedMessages: TimedMessagesGroupPreference(enable: .off),
directMessages: GroupPreference(enable: .off),
directMessages: RoleGroupPreference(enable: .off, role: nil),
fullDelete: GroupPreference(enable: .off),
reactions: GroupPreference(enable: .on),
voice: GroupPreference(enable: .on),
files: GroupPreference(enable: .on),
voice: RoleGroupPreference(enable: .on, role: nil),
files: RoleGroupPreference(enable: .on, role: nil),
simplexLinks: RoleGroupPreference(enable: .on, role: nil),
history: GroupPreference(enable: .on)
)
}
public struct GroupPreferences: Codable {
public var timedMessages: TimedMessagesGroupPreference?
public var directMessages: GroupPreference?
public var directMessages: RoleGroupPreference?
public var fullDelete: GroupPreference?
public var reactions: GroupPreference?
public var voice: GroupPreference?
public var files: GroupPreference?
public var voice: RoleGroupPreference?
public var files: RoleGroupPreference?
public var simplexLinks: RoleGroupPreference?
public var history: GroupPreference?
public init(
timedMessages: TimedMessagesGroupPreference? = nil,
directMessages: GroupPreference? = nil,
directMessages: RoleGroupPreference? = nil,
fullDelete: GroupPreference? = nil,
reactions: GroupPreference? = nil,
voice: GroupPreference? = nil,
files: GroupPreference? = nil,
voice: RoleGroupPreference? = nil,
files: RoleGroupPreference? = nil,
simplexLinks: RoleGroupPreference? = nil,
history: GroupPreference? = nil
) {
self.timedMessages = timedMessages
@@ -1018,16 +1054,18 @@ public struct GroupPreferences: Codable {
self.reactions = reactions
self.voice = voice
self.files = files
self.simplexLinks = simplexLinks
self.history = history
}
public static let sampleData = GroupPreferences(
timedMessages: TimedMessagesGroupPreference(enable: .off),
directMessages: GroupPreference(enable: .off),
directMessages: RoleGroupPreference(enable: .off, role: nil),
fullDelete: GroupPreference(enable: .off),
reactions: GroupPreference(enable: .on),
voice: GroupPreference(enable: .on),
files: GroupPreference(enable: .on),
voice: RoleGroupPreference(enable: .on, role: nil),
files: RoleGroupPreference(enable: .on, role: nil),
simplexLinks: RoleGroupPreference(enable: .on, role: nil),
history: GroupPreference(enable: .on)
)
}
@@ -1040,6 +1078,7 @@ public func toGroupPreferences(_ fullPreferences: FullGroupPreferences) -> Group
reactions: fullPreferences.reactions,
voice: fullPreferences.voice,
files: fullPreferences.files,
simplexLinks: fullPreferences.simplexLinks,
history: fullPreferences.history
)
}
@@ -1051,11 +1090,37 @@ public struct GroupPreference: Codable, Equatable {
enable == .on
}
public func enabled(_ role: GroupMemberRole?, for m: GroupMember?) -> GroupFeatureEnabled {
switch enable {
case .off: .off
case .on:
if let role, let m {
m.memberRole >= role ? .on : .off
} else {
.on
}
}
}
public init(enable: GroupFeatureEnabled) {
self.enable = enable
}
}
public struct RoleGroupPreference: Codable, Equatable {
public var enable: GroupFeatureEnabled
public var role: GroupMemberRole?
public func on(for m: GroupMember) -> Bool {
enable == .on && m.memberRole >= (role ?? .observer)
}
public init(enable: GroupFeatureEnabled, role: GroupMemberRole?) {
self.enable = enable
self.role = role
}
}
public struct TimedMessagesGroupPreference: Codable, Equatable {
public var enable: GroupFeatureEnabled
public var ttl: Int?
@@ -1280,7 +1345,7 @@ public enum ChatInfo: Identifiable, Decodable, NamedChat {
case .timedMessages: return prefs.timedMessages.on
case .fullDelete: return prefs.fullDelete.on
case .reactions: return prefs.reactions.on
case .voice: return prefs.voice.on
case .voice: return prefs.voice.on(for: groupInfo.membership)
case .calls: return false
}
case .local:
@@ -1323,7 +1388,7 @@ public enum ChatInfo: Identifiable, Decodable, NamedChat {
return .other
}
case let .group(groupInfo):
if !groupInfo.fullGroupPreferences.voice.on {
if !groupInfo.fullGroupPreferences.voice.on(for: groupInfo.membership) {
return .groupOwnerCan
} else {
return .other
@@ -1975,7 +2040,7 @@ public struct GroupMemberIds: Decodable {
var groupId: Int64
}
public enum GroupMemberRole: String, Identifiable, CaseIterable, Comparable, Decodable {
public enum GroupMemberRole: String, Identifiable, CaseIterable, Comparable, Codable {
case observer = "observer"
case author = "author"
case member = "member"
@@ -2120,7 +2185,7 @@ public enum ConnectionEntity: Decodable {
public var id: String? {
switch self {
case let .rcvDirectMsgConnection(contact):
return contact?.id ?? nil
return contact?.id
case let .rcvGroupMsgConnection(_, groupMember):
return groupMember.id
case let .userContactConnection(userContact):
@@ -2372,10 +2437,10 @@ public struct ChatItem: Identifiable, Decodable {
}
}
public static func getSample (_ id: Int64, _ dir: CIDirection, _ ts: Date, _ text: String, _ status: CIStatus = .sndNew, quotedItem: CIQuote? = nil, file: CIFile? = nil, itemDeleted: CIDeleted? = nil, itemEdited: Bool = false, itemLive: Bool = false, editable: Bool = true) -> ChatItem {
public static func getSample (_ id: Int64, _ dir: CIDirection, _ ts: Date, _ text: String, _ status: CIStatus = .sndNew, quotedItem: CIQuote? = nil, file: CIFile? = nil, itemDeleted: CIDeleted? = nil, itemEdited: Bool = false, itemLive: Bool = false, deletable: Bool = true, editable: Bool = true) -> ChatItem {
ChatItem(
chatDir: dir,
meta: CIMeta.getSample(id, ts, text, status, itemDeleted: itemDeleted, itemEdited: itemEdited, itemLive: itemLive, editable: editable),
meta: CIMeta.getSample(id, ts, text, status, itemDeleted: itemDeleted, itemEdited: itemEdited, itemLive: itemLive, deletable: deletable, editable: editable),
content: .sndMsgContent(msgContent: .text(text)),
quotedItem: quotedItem,
file: file
@@ -2466,6 +2531,7 @@ public struct ChatItem: Identifiable, Decodable {
itemDeleted: nil,
itemEdited: false,
itemLive: false,
deletable: false,
editable: false
),
content: .rcvDeleted(deleteMode: .cidmBroadcast),
@@ -2487,6 +2553,7 @@ public struct ChatItem: Identifiable, Decodable {
itemDeleted: nil,
itemEdited: false,
itemLive: true,
deletable: false,
editable: false
),
content: .sndMsgContent(msgContent: .text("")),
@@ -2546,10 +2613,12 @@ public struct CIMeta: Decodable {
public var itemStatus: CIStatus
public var createdAt: Date
public var updatedAt: Date
public var itemForwarded: CIForwardedFrom?
public var itemDeleted: CIDeleted?
public var itemEdited: Bool
public var itemTimed: CITimed?
public var itemLive: Bool?
public var deletable: Bool
public var editable: Bool
public var timestampText: Text { get { formatTimestampText(itemTs) } }
@@ -2566,7 +2635,7 @@ public struct CIMeta: Decodable {
itemStatus.statusIcon(metaColor)
}
public static func getSample(_ id: Int64, _ ts: Date, _ text: String, _ status: CIStatus = .sndNew, itemDeleted: CIDeleted? = nil, itemEdited: Bool = false, itemLive: Bool = false, editable: Bool = true) -> CIMeta {
public static func getSample(_ id: Int64, _ ts: Date, _ text: String, _ status: CIStatus = .sndNew, itemDeleted: CIDeleted? = nil, itemEdited: Bool = false, itemLive: Bool = false, deletable: Bool = true, editable: Bool = true) -> CIMeta {
CIMeta(
itemId: id,
itemTs: ts,
@@ -2577,6 +2646,7 @@ public struct CIMeta: Decodable {
itemDeleted: itemDeleted,
itemEdited: itemEdited,
itemLive: itemLive,
deletable: deletable,
editable: editable
)
}
@@ -2592,6 +2662,7 @@ public struct CIMeta: Decodable {
itemDeleted: nil,
itemEdited: false,
itemLive: false,
deletable: false,
editable: false
)
}
@@ -2713,6 +2784,31 @@ public enum CIDeleted: Decodable {
}
}
public enum MsgDirection: String, Decodable {
case rcv = "rcv"
case snd = "snd"
}
public enum CIForwardedFrom: Decodable {
case unknown
case contact(chatName: String, msgDir: MsgDirection, contactId: Int64?, chatItemId: Int64?)
case group(chatName: String, msgDir: MsgDirection, groupId: Int64?, chatItemId: Int64?)
var chatName: String {
switch self {
case .unknown: ""
case let .contact(chatName, _, _, _): chatName
case let .group(chatName, _, _, _): chatName
}
}
public func text(_ chatType: ChatType) -> LocalizedStringKey {
chatType == .local
? (chatName == "" ? "saved" : "saved from \(chatName)")
: "forwarded"
}
}
public enum CIDeleteMode: String, Decodable {
case cidmBroadcast = "broadcast"
case cidmInternal = "internal"
@@ -2742,8 +2838,8 @@ public enum CIContent: Decodable, ItemContent {
case sndChatFeature(feature: ChatFeature, enabled: FeatureEnabled, param: Int?)
case rcvChatPreference(feature: ChatFeature, allowed: FeatureAllowed, param: Int?)
case sndChatPreference(feature: ChatFeature, allowed: FeatureAllowed, param: Int?)
case rcvGroupFeature(groupFeature: GroupFeature, preference: GroupPreference, param: Int?)
case sndGroupFeature(groupFeature: GroupFeature, preference: GroupPreference, param: Int?)
case rcvGroupFeature(groupFeature: GroupFeature, preference: GroupPreference, param: Int?, memberRole_: GroupMemberRole?)
case sndGroupFeature(groupFeature: GroupFeature, preference: GroupPreference, param: Int?, memberRole_: GroupMemberRole?)
case rcvChatFeatureRejected(feature: ChatFeature)
case rcvGroupFeatureRejected(groupFeature: GroupFeature)
case sndModerated
@@ -2777,8 +2873,8 @@ public enum CIContent: Decodable, ItemContent {
case let .sndChatFeature(feature, enabled, param): return CIContent.featureText(feature, enabled.text, param)
case let .rcvChatPreference(feature, allowed, param): return CIContent.preferenceText(feature, allowed, param)
case let .sndChatPreference(feature, allowed, param): return CIContent.preferenceText(feature, allowed, param)
case let .rcvGroupFeature(feature, preference, param): return CIContent.featureText(feature, preference.enable.text, param)
case let .sndGroupFeature(feature, preference, param): return CIContent.featureText(feature, preference.enable.text, param)
case let .rcvGroupFeature(feature, preference, param, role): return CIContent.featureText(feature, preference.enable.text, param, role)
case let .sndGroupFeature(feature, preference, param, role): return CIContent.featureText(feature, preference.enable.text, param, role)
case let .rcvChatFeatureRejected(feature): return String.localizedStringWithFormat("%@: received, prohibited", feature.text)
case let .rcvGroupFeatureRejected(groupFeature): return String.localizedStringWithFormat("%@: received, prohibited", groupFeature.text)
case .sndModerated: return NSLocalizedString("moderated", comment: "moderated chat item")
@@ -2803,10 +2899,25 @@ public enum CIContent: Decodable, ItemContent {
NSLocalizedString("This chat is protected by end-to-end encryption.", comment: "E2EE info chat item")
}
static func featureText(_ feature: Feature, _ enabled: String, _ param: Int?) -> String {
feature.hasParam
? "\(feature.text): \(timeText(param))"
: "\(feature.text): \(enabled)"
static func featureText(_ feature: Feature, _ enabled: String, _ param: Int?, _ role: GroupMemberRole? = nil) -> String {
(
feature.hasParam
? "\(feature.text): \(timeText(param))"
: "\(feature.text): \(enabled)"
) +
(
feature.hasRole && role != nil
? " (\(roleText(role)))"
: ""
)
}
private static func roleText(_ role: GroupMemberRole?) -> String {
switch role {
case .owner: NSLocalizedString("owners", comment: "feature role")
case .admin: NSLocalizedString("admins", comment: "feature role")
default: NSLocalizedString("all members", comment: "feature role")
}
}
public static func preferenceText(_ feature: Feature, _ allowed: FeatureAllowed, _ param: Int?) -> String {
@@ -3209,6 +3320,14 @@ public enum MsgContent: Equatable {
}
}
public var isImageOrVideo: Bool {
switch self {
case .image: true
case .video: true
default: false
}
}
var cmdString: String {
"json \(encodeJSON(self))"
}
@@ -3743,6 +3862,7 @@ public enum ChatItemTTL: Hashable, Identifiable, Comparable {
public struct ChatItemInfo: Decodable {
public var itemVersions: [ChatItemVersion]
public var memberDeliveryStatuses: [MemberDeliveryStatus]?
public var forwardedFromChatItem: AChatItem?
}
public struct ChatItemVersion: Decodable {
+1 -1
View File
@@ -15,7 +15,7 @@ void haskell_init(void) {
char *argv[] = {
"simplex",
"+RTS", // requires `hs_init_with_rtsopts`
"-A16m", // chunk size for new allocations
"-A64m", // chunk size for new allocations
"-H64m", // initial heap size
"-xn", // non-moving GC
0
+317 -11
View File
@@ -202,6 +202,9 @@
/* No comment provided by engineer. */
"%lld messages blocked" = "%lld блокирани съобщения";
/* No comment provided by engineer. */
"%lld messages blocked by admin" = "%lld съобщения, блокирани от администратора";
/* No comment provided by engineer. */
"%lld messages marked deleted" = "%lld съобщения, маркирани като изтрити";
@@ -374,6 +377,9 @@
/* member role */
"admin" = "админ";
/* No comment provided by engineer. */
"Admins can block a member for all." = "Администраторите могат да блокират член за всички.";
/* No comment provided by engineer. */
"Admins can create the links to join groups." = "Админите могат да създадат линкове за присъединяване към групи.";
@@ -398,6 +404,9 @@
/* No comment provided by engineer. */
"All group members will remain connected." = "Всички членове на групата ще останат свързани.";
/* No comment provided by engineer. */
"All messages will be deleted - this cannot be undone!" = "Всички съобщения ще бъдат изтрити - това не може да бъде отменено!";
/* No comment provided by engineer. */
"All messages will be deleted - this cannot be undone! The messages will be deleted ONLY for you." = "Всички съобщения ще бъдат изтрити - това не може да бъде отменено! Съобщенията ще бъдат изтрити САМО за вас.";
@@ -410,6 +419,9 @@
/* No comment provided by engineer. */
"All your contacts will remain connected. Profile update will be sent to your contacts." = "Всички ваши контакти ще останат свързани. Актуализацията на профила ще бъде изпратена до вашите контакти.";
/* No comment provided by engineer. */
"All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." = "Всички ваши контакти, разговори и файлове ще бъдат сигурно криптирани и качени на парчета в конфигурираните XFTP релета.";
/* No comment provided by engineer. */
"Allow" = "Позволи";
@@ -491,6 +503,9 @@
/* No comment provided by engineer. */
"App build: %@" = "Компилация на приложението: %@";
/* No comment provided by engineer. */
"App data migration" = "Миграция на данните от приложението";
/* No comment provided by engineer. */
"App encrypts new local files (except videos)." = "Приложението криптира нови локални файлове (с изключение на видеоклипове).";
@@ -512,6 +527,15 @@
/* No comment provided by engineer. */
"Appearance" = "Изглед";
/* No comment provided by engineer. */
"Apply" = "Приложи";
/* No comment provided by engineer. */
"Archive and upload" = "Архивиране и качване";
/* No comment provided by engineer. */
"Archiving database" = "Архивиране на база данни";
/* No comment provided by engineer. */
"Attach" = "Прикачи";
@@ -581,6 +605,9 @@
/* No comment provided by engineer. */
"Block" = "Блокирай";
/* No comment provided by engineer. */
"Block for all" = "Блокирай за всички";
/* No comment provided by engineer. */
"Block group members" = "Блокиране на членове на групата";
@@ -588,11 +615,23 @@
"Block member" = "Блокирай член";
/* No comment provided by engineer. */
"Block member?" = "Блокирай члена?";
"Block member for all?" = "Блокиране на член за всички?";
/* No comment provided by engineer. */
"Block member?" = "Блокирай члена?";
/* marked deleted chat item preview text */
"blocked" = "блокиран";
/* rcv group event chat item */
"blocked %@" = "блокиран %@";
/* marked deleted chat item preview text */
"blocked by admin" = "блокиран от админ";
/* No comment provided by engineer. */
"Blocked by admin" = "Блокиран от админ";
/* No comment provided by engineer. */
"bold" = "удебелен";
@@ -644,6 +683,9 @@
/* No comment provided by engineer. */
"Cancel" = "Отказ";
/* No comment provided by engineer. */
"Cancel migration" = "Отмени миграцията";
/* feature offered item */
"cancelled %@" = "отменен %@";
@@ -685,7 +727,7 @@
"Change self-destruct passcode" = "Промени кода за достъп за самоунищожение";
/* chat item text */
"changed address for you" = "променен е адреса за вас";
"changed address for you" = "адреса за изпращане е променен";
/* rcv group event chat item */
"changed role of %@ to %@" = "променена роля от %1$@ на %2$@";
@@ -723,6 +765,9 @@
/* No comment provided by engineer. */
"Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat." = "Чатът е спрян. Ако вече сте използвали тази база данни на друго устройство, трябва да я прехвърлите обратно, преди да стартирате чата отново.";
/* No comment provided by engineer. */
"Chat migrated!" = "Чатът е мигриран!";
/* No comment provided by engineer. */
"Chat preferences" = "Чат настройки";
@@ -750,6 +795,9 @@
/* No comment provided by engineer. */
"Clear conversation?" = "Изчисти разговора?";
/* No comment provided by engineer. */
"Clear private notes?" = "Изчистване на лични бележки?";
/* No comment provided by engineer. */
"Clear verification" = "Изчисти проверката";
@@ -777,6 +825,9 @@
/* No comment provided by engineer. */
"Confirm database upgrades" = "Потвърди актуализаациите на базата данни";
/* No comment provided by engineer. */
"Confirm network settings" = "Потвърди мрежовите настройки";
/* No comment provided by engineer. */
"Confirm new passphrase…" = "Потвърди новата парола…";
@@ -786,6 +837,12 @@
/* No comment provided by engineer. */
"Confirm password" = "Потвърди парола";
/* No comment provided by engineer. */
"Confirm that you remember database passphrase to migrate it." = "Потвърдете, че помните паролата на базата данни, преди да я мигрирате.";
/* No comment provided by engineer. */
"Confirm upload" = "Потвърди качването";
/* server test step */
"Connect" = "Свързване";
@@ -888,6 +945,9 @@
/* connection information */
"connection:%@" = "връзка:%@";
/* profile update event chat item */
"contact %@ changed to %@" = "името на контакта %1$@ е променено на %2$@";
/* No comment provided by engineer. */
"Contact allows" = "Контактът позволява";
@@ -972,9 +1032,18 @@
/* No comment provided by engineer. */
"Create your profile" = "Създай своя профил";
/* No comment provided by engineer. */
"Created at" = "Създаден на";
/* copied message info */
"Created at: %@" = "Създаден на: %@";
/* No comment provided by engineer. */
"Created on %@" = "Създаден на %@";
/* No comment provided by engineer. */
"Creating archive link" = "Създаване на архивен линк";
/* No comment provided by engineer. */
"Creating link…" = "Линкът се създава…";
@@ -1122,6 +1191,9 @@
/* No comment provided by engineer. */
"Delete database" = "Изтрий базата данни";
/* No comment provided by engineer. */
"Delete database from this device" = "Изтриване на базата данни от това устройство";
/* server test step */
"Delete file" = "Изтрий файл";
@@ -1291,7 +1363,7 @@
"Discover and join groups" = "Открийте и се присъединете към групи";
/* No comment provided by engineer. */
"Discover via local network" = "Открий през локалната мрежа";
"Discover via local network" = "Откриване през локалната мрежа";
/* No comment provided by engineer. */
"Do it later" = "Отложи";
@@ -1314,9 +1386,18 @@
/* No comment provided by engineer. */
"Downgrade and open chat" = "Понижи версията и отвори чата";
/* No comment provided by engineer. */
"Download failed" = "Неуспешно изтегляне";
/* server test step */
"Download file" = "Свали файл";
/* No comment provided by engineer. */
"Downloading archive" = "Архива се изтегля";
/* No comment provided by engineer. */
"Downloading link details" = "Подробности за линка се изтеглят";
/* No comment provided by engineer. */
"Duplicate display name!" = "Дублирано име!";
@@ -1350,6 +1431,9 @@
/* No comment provided by engineer. */
"Enable for all" = "Активиране за всички";
/* No comment provided by engineer. */
"Enable in direct chats (BETA)!" = "Активиране в личните чатове (БЕТА)!";
/* No comment provided by engineer. */
"Enable instant notifications?" = "Активирай незабавни известия?";
@@ -1464,6 +1548,9 @@
/* No comment provided by engineer. */
"Enter Passcode" = "Въведете kодa за достъп";
/* No comment provided by engineer. */
"Enter passphrase" = "Въведи парола";
/* No comment provided by engineer. */
"Enter passphrase…" = "Въведи парола…";
@@ -1503,6 +1590,9 @@
/* No comment provided by engineer. */
"Error adding member(s)" = "Грешка при добавяне на член(ове)";
/* No comment provided by engineer. */
"Error allowing contact PQ encryption" = "Грешка при разрешаване на PQ криптиране за контакт";
/* No comment provided by engineer. */
"Error changing address" = "Грешка при промяна на адреса";
@@ -1524,6 +1614,9 @@
/* No comment provided by engineer. */
"Error creating member contact" = "Грешка при създаване на контакт с член";
/* No comment provided by engineer. */
"Error creating message" = "Грешка при създаване на съобщение";
/* No comment provided by engineer. */
"Error creating profile!" = "Грешка при създаване на профил!";
@@ -1554,6 +1647,9 @@
/* No comment provided by engineer. */
"Error deleting user profile" = "Грешка при изтриване на потребителския профил";
/* No comment provided by engineer. */
"Error downloading the archive" = "Грешка при изтеглянето на архива";
/* No comment provided by engineer. */
"Error enabling delivery receipts!" = "Грешка при активирането на потвърждениeто за доставка!";
@@ -1599,6 +1695,9 @@
/* No comment provided by engineer. */
"Error saving passphrase to keychain" = "Грешка при запазване на парола в Кeychain";
/* when migrating */
"Error saving settings" = "Грешка при запазване на настройките";
/* No comment provided by engineer. */
"Error saving user password" = "Грешка при запазване на потребителска парола";
@@ -1641,6 +1740,12 @@
/* No comment provided by engineer. */
"Error updating user privacy" = "Грешка при актуализиране на поверителността на потребителя";
/* No comment provided by engineer. */
"Error uploading the archive" = "Грешка при качването на архива";
/* No comment provided by engineer. */
"Error verifying passphrase:" = "Грешка при проверката на паролата:";
/* No comment provided by engineer. */
"Error: " = "Грешка: ";
@@ -1674,6 +1779,9 @@
/* No comment provided by engineer. */
"Exported database archive." = "Експортиран архив на базата данни.";
/* No comment provided by engineer. */
"Exported file doesn't exist" = "Експортираният файл не съществува";
/* No comment provided by engineer. */
"Exporting database archive…" = "Експортиране на архив на базата данни…";
@@ -1716,6 +1824,12 @@
/* No comment provided by engineer. */
"Filter unread and favorite chats." = "Филтрирайте непрочетените и любимите чатове.";
/* No comment provided by engineer. */
"Finalize migration" = "Завърши миграцията";
/* No comment provided by engineer. */
"Finalize migration on another device." = "Завършете миграцията на другото устройство.";
/* No comment provided by engineer. */
"Finally, we have them! 🚀" = "Най-накрая ги имаме! 🚀";
@@ -1899,6 +2013,9 @@
/* No comment provided by engineer. */
"How to use your servers" = "Как да използвате вашите сървъри";
/* No comment provided by engineer. */
"Hungarian interface" = "Унгарски интерфейс";
/* No comment provided by engineer. */
"ICE servers (one per line)" = "ICE сървъри (по един на ред)";
@@ -1938,12 +2055,24 @@
/* No comment provided by engineer. */
"Import database" = "Импортиране на база данни";
/* No comment provided by engineer. */
"Import failed" = "Неуспешно импортиране";
/* No comment provided by engineer. */
"Importing archive" = "Импортиране на архив";
/* No comment provided by engineer. */
"Improved message delivery" = "Подобрена доставка на съобщения";
/* No comment provided by engineer. */
"Improved privacy and security" = "Подобрена поверителност и сигурност";
/* No comment provided by engineer. */
"Improved server configuration" = "Подобрена конфигурация на сървъра";
/* No comment provided by engineer. */
"In order to continue, chat should be stopped." = "За да продължите, чатът трябва да бъде спрян.";
/* No comment provided by engineer. */
"In reply to" = "В отговор на";
@@ -2028,6 +2157,9 @@
/* No comment provided by engineer. */
"Invalid link" = "Невалиден линк";
/* No comment provided by engineer. */
"Invalid migration confirmation" = "Невалидно потвърждение за мигриране";
/* No comment provided by engineer. */
"Invalid name!" = "Невалидно име!";
@@ -2115,6 +2247,9 @@
/* No comment provided by engineer. */
"Join group" = "Влез в групата";
/* No comment provided by engineer. */
"Join group conversations" = "Присъединяване към групи";
/* No comment provided by engineer. */
"Join group?" = "Влез в групата?";
@@ -2250,6 +2385,9 @@
/* No comment provided by engineer. */
"Member" = "Член";
/* profile update event chat item */
"member %@ changed to %@" = "името на члена %1$@ е променено на %2$@";
/* rcv group event chat item */
"member connected" = "свързан";
@@ -2286,6 +2424,9 @@
/* No comment provided by engineer. */
"Message text" = "Текст на съобщението";
/* No comment provided by engineer. */
"Message too large" = "Съобщението е твърде голямо";
/* No comment provided by engineer. */
"Messages" = "Съобщения";
@@ -2295,9 +2436,30 @@
/* No comment provided by engineer. */
"Messages from %@ will be shown!" = "Съобщенията от %@ ще бъдат показани!";
/* No comment provided by engineer. */
"Migrate device" = "Мигрирай устройството";
/* No comment provided by engineer. */
"Migrate from another device" = "Мигриране от друго устройство";
/* No comment provided by engineer. */
"Migrate here" = "Мигрирай тук";
/* No comment provided by engineer. */
"Migrate to another device" = "Миграция към друго устройство";
/* No comment provided by engineer. */
"Migrate to another device via QR code." = "Мигрирайте към друго устройство чрез QR код.";
/* No comment provided by engineer. */
"Migrating" = "Мигриране";
/* No comment provided by engineer. */
"Migrating database archive…" = "Архивът на базата данни се мигрира…";
/* No comment provided by engineer. */
"Migration complete" = "Миграцията е завършена";
/* No comment provided by engineer. */
"Migration error:" = "Грешка при мигриране:";
@@ -2328,7 +2490,7 @@
/* copied message info */
"Moderated at: %@" = "Модерирано в: %@";
/* No comment provided by engineer. */
/* marked deleted chat item preview text */
"moderated by %@" = "модерирано от %@";
/* time unit */
@@ -2555,6 +2717,9 @@
/* No comment provided by engineer. */
"Open group" = "Отвори група";
/* authentication reason */
"Open migration to another device" = "Отвори миграцията към друго устройство";
/* No comment provided by engineer. */
"Open Settings" = "Отвори настройки";
@@ -2567,9 +2732,15 @@
/* No comment provided by engineer. */
"Opening app…" = "Приложението се отваря…";
/* No comment provided by engineer. */
"Or paste archive link" = "Или постави архивен линк";
/* No comment provided by engineer. */
"Or scan QR code" = "Или сканирай QR код";
/* No comment provided by engineer. */
"Or securely share this file link" = "Или сигурно споделете този линк към файла";
/* No comment provided by engineer. */
"Or show this code" = "Или покажи този код";
@@ -2594,12 +2765,18 @@
/* No comment provided by engineer. */
"Password to show" = "Парола за показване";
/* past/unknown group member */
"Past member %@" = "Бивш член %@";
/* No comment provided by engineer. */
"Paste desktop address" = "Постави адрес на настолно устройство";
/* No comment provided by engineer. */
"Paste image" = "Постави изображение";
/* No comment provided by engineer. */
"Paste link to connect!" = "Поставете линк, за да се свържете!";
/* No comment provided by engineer. */
"Paste the link you received" = "Постави получения линк";
@@ -2615,6 +2792,9 @@
/* message decrypt error item */
"Permanent decryption error" = "Постоянна грешка при декриптиране";
/* No comment provided by engineer. */
"Picture-in-picture calls" = "Обаждания \"картина в картина\"";
/* No comment provided by engineer. */
"PING count" = "PING бройка";
@@ -2633,6 +2813,9 @@
/* No comment provided by engineer. */
"Please check yours and your contact preferences." = "Моля, проверете вашите настройки и тези вашия за контакт.";
/* No comment provided by engineer. */
"Please confirm that network settings are correct for this device." = "Моля, потвърдете, че мрежовите настройки са правилни за това устройство.";
/* No comment provided by engineer. */
"Please contact developers.\nError: %@" = "Моля, свържете се с разработчиците.\nГрешка: %@";
@@ -2666,6 +2849,9 @@
/* server test error */
"Possibly, certificate fingerprint in server address is incorrect" = "Въжможно е пръстовият отпечатък на сертификата в адреса на сървъра да е неправилен";
/* No comment provided by engineer. */
"Post-quantum E2EE" = "Постквантово E2EE";
/* No comment provided by engineer. */
"Preserve the last message draft, with attachments." = "Запазете последната чернова на съобщението с прикачени файлове.";
@@ -2687,6 +2873,9 @@
/* No comment provided by engineer. */
"Private filenames" = "Поверителни имена на файлове";
/* name of notes to self */
"Private notes" = "Лични бележки";
/* No comment provided by engineer. */
"Profile and server connections" = "Профилни и сървърни връзки";
@@ -2744,6 +2933,15 @@
/* No comment provided by engineer. */
"Push notifications" = "Push известия";
/* No comment provided by engineer. */
"Push server" = "Push сървър";
/* chat item text */
"quantum resistant e2e encryption" = "квантово устойчиво e2e криптиране";
/* No comment provided by engineer. */
"Quantum resistant encryption" = "Квантово устойчиво криптиране";
/* No comment provided by engineer. */
"Rate the app" = "Оценете приложението";
@@ -2801,6 +2999,9 @@
/* No comment provided by engineer. */
"Receiving via" = "Получаване чрез";
/* No comment provided by engineer. */
"Recent history and improved [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion)." = "Скорошна история и подобрен [bot за директория за групи](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPd jdLW3%23%2F%3Fv%3D1-2% 26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion).";
/* No comment provided by engineer. */
"Recipients see updates as you type them." = "Получателите виждат актуализации, докато ги въвеждате.";
@@ -2855,6 +3056,12 @@
/* rcv group event chat item */
"removed %@" = "отстранен %@";
/* profile update event chat item */
"removed contact address" = "премахнат адрес за контакт";
/* profile update event chat item */
"removed profile picture" = "премахната профилна снимка";
/* rcv group event chat item */
"removed you" = "ви острани";
@@ -2870,9 +3077,18 @@
/* No comment provided by engineer. */
"Repeat connection request?" = "Изпрати отново заявката за свързване?";
/* No comment provided by engineer. */
"Repeat download" = "Повтори изтеглянето";
/* No comment provided by engineer. */
"Repeat import" = "Повтори импортирането";
/* No comment provided by engineer. */
"Repeat join request?" = "Изпрати отново заявката за присъединяване?";
/* No comment provided by engineer. */
"Repeat upload" = "Повтори качването";
/* chat item action */
"Reply" = "Отговори";
@@ -2930,6 +3146,9 @@
/* No comment provided by engineer. */
"Run chat" = "Стартиране на чат";
/* No comment provided by engineer. */
"Safer groups" = "По-безопасни групи";
/* chat item action */
"Save" = "Запази";
@@ -2978,6 +3197,9 @@
/* No comment provided by engineer. */
"Save welcome message?" = "Запази съобщението при посрещане?";
/* message info title */
"Saved message" = "Запазено съобщение";
/* No comment provided by engineer. */
"Saved WebRTC ICE servers will be removed" = "Запазените WebRTC ICE сървъри ще бъдат премахнати";
@@ -2999,6 +3221,9 @@
/* No comment provided by engineer. */
"Search" = "Търсене";
/* No comment provided by engineer. */
"Search bar accepts invitation links." = "Лентата за търсене приема линк за връзка.";
/* No comment provided by engineer. */
"Search or paste SimpleX link" = "Търсене или поставяне на SimpleX линк";
@@ -3155,9 +3380,18 @@
/* No comment provided by engineer. */
"Set it instead of system authentication." = "Задайте го вместо системната идентификация.";
/* profile update event chat item */
"set new contact address" = "зададен нов адрес за контакт";
/* profile update event chat item */
"set new profile picture" = "зададена нова профилна снимка";
/* No comment provided by engineer. */
"Set passcode" = "Задай kод за достъп";
/* No comment provided by engineer. */
"Set passphrase" = "Задаване на парола";
/* No comment provided by engineer. */
"Set passphrase to export" = "Задай парола за експортиране";
@@ -3203,6 +3437,9 @@
/* No comment provided by engineer. */
"Show preview" = "Показване на визуализация";
/* No comment provided by engineer. */
"Show QR code" = "Покажи QR код";
/* No comment provided by engineer. */
"Show:" = "Покажи:";
@@ -3263,6 +3500,9 @@
/* notification title */
"Somebody" = "Някой";
/* chat item text */
"standard end-to-end encryption" = "стандартно криптиране от край до край";
/* No comment provided by engineer. */
"Start chat" = "Започни чат";
@@ -3278,6 +3518,9 @@
/* No comment provided by engineer. */
"Stop" = "Спри";
/* No comment provided by engineer. */
"Stop chat" = "Спри чата";
/* No comment provided by engineer. */
"Stop chat to enable database actions" = "Спрете чата, за да активирате действията с базата данни";
@@ -3305,6 +3548,9 @@
/* authentication reason */
"Stop SimpleX" = "Спри SimpleX";
/* No comment provided by engineer. */
"Stopping chat" = "Спиране на чата";
/* No comment provided by engineer. */
"strike" = "зачеркнат";
@@ -3455,6 +3701,12 @@
/* No comment provided by engineer. */
"This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." = "Това действие не може да бъде отменено - вашият профил, контакти, съобщения и файлове ще бъдат безвъзвратно загубени.";
/* E2EE info chat item */
"This chat is protected by end-to-end encryption." = "Този чат е защитен чрез криптиране от край до край.";
/* E2EE info chat item */
"This chat is protected by quantum resistant end-to-end encryption." = "Този чат е защитен от квантово устойчиво криптиране от край до край.";
/* notification title */
"this contact" = "този контакт";
@@ -3524,6 +3776,9 @@
/* No comment provided by engineer. */
"Trying to connect to the server used to receive messages from this contact." = "Опит за свързване със сървъра, използван за получаване на съобщения от този контакт.";
/* No comment provided by engineer. */
"Turkish interface" = "Турски интерфейс";
/* No comment provided by engineer. */
"Turn off" = "Изключи";
@@ -3536,12 +3791,21 @@
/* No comment provided by engineer. */
"Unblock" = "Отблокирай";
/* No comment provided by engineer. */
"Unblock for all" = "Отблокирай за всички";
/* No comment provided by engineer. */
"Unblock member" = "Отблокирай член";
/* No comment provided by engineer. */
"Unblock member for all?" = "Отблокиране на член за всички?";
/* No comment provided by engineer. */
"Unblock member?" = "Отблокирай член?";
/* rcv group event chat item */
"unblocked %@" = "отблокиран %@";
/* item status description */
"Unexpected error: %@" = "Неочаквана грешка: %@";
@@ -3575,6 +3839,9 @@
/* No comment provided by engineer. */
"Unknown error" = "Непозната грешка";
/* No comment provided by engineer. */
"unknown status" = "неизвестен статус";
/* No comment provided by engineer. */
"Unless you use iOS call interface, enable Do Not Disturb mode to avoid interruptions." = "Освен ако не използвате интерфейса за повикване на iOS, активирайте режима \"Не безпокой\", за да избегнете прекъсвания.";
@@ -3620,6 +3887,9 @@
/* rcv group event chat item */
"updated group profile" = "актуализиран профил на групата";
/* profile update event chat item */
"updated profile" = "актуализиран профил";
/* No comment provided by engineer. */
"Updating settings will re-connect the client to all servers." = "Актуализирането на настройките ще свърже отново клиента към всички сървъри.";
@@ -3629,9 +3899,15 @@
/* No comment provided by engineer. */
"Upgrade and open chat" = "Актуализирай и отвори чата";
/* No comment provided by engineer. */
"Upload failed" = "Неуспешно качване";
/* server test step */
"Upload file" = "Качи файл";
/* No comment provided by engineer. */
"Uploading archive" = "Архивът се качва";
/* No comment provided by engineer. */
"Use .onion hosts" = "Използвай .onion хостове";
@@ -3662,6 +3938,9 @@
/* No comment provided by engineer. */
"Use SimpleX Chat servers?" = "Използвай сървърите на SimpleX Chat?";
/* No comment provided by engineer. */
"Use the app while in the call." = "Използвайте приложението по време на разговора.";
/* No comment provided by engineer. */
"User profile" = "Потребителски профил";
@@ -3678,19 +3957,25 @@
"v%@ (%@)" = "v%@ (%@)";
/* No comment provided by engineer. */
"Verify code with desktop" = "Потвръди кода с настолното устройство";
"Verify code with desktop" = "Потвърди кода с настолното устройство";
/* No comment provided by engineer. */
"Verify connection" = "Потвръди връзките";
"Verify connection" = "Потвърди връзка";
/* No comment provided by engineer. */
"Verify connection security" = "Потвръди сигурността на връзката";
"Verify connection security" = "Потвърди сигурността на връзката";
/* No comment provided by engineer. */
"Verify connections" = "Потвръди връзките";
"Verify connections" = "Потвърждение за свързване";
/* No comment provided by engineer. */
"Verify security code" = "Потвръди кода за сигурност";
"Verify database passphrase" = "Проверете паролата на базата данни";
/* No comment provided by engineer. */
"Verify passphrase" = "Провери паролата";
/* No comment provided by engineer. */
"Verify security code" = "Потвърди кода за сигурност";
/* No comment provided by engineer. */
"Via browser" = "Чрез браузър";
@@ -3767,6 +4052,9 @@
/* No comment provided by engineer. */
"wants to connect to you!" = "иска да се свърже с вас!";
/* No comment provided by engineer. */
"Warning: starting chat on multiple devices is not supported and will cause message delivery failures" = "Внимание: стартирането на чата на множество устройства не се поддържа и ще доведе до неуспешно изпращане на съобщения";
/* No comment provided by engineer. */
"Warning: you may lose some data!" = "Предупреждение: Може да загубите някои данни!";
@@ -3782,6 +4070,9 @@
/* No comment provided by engineer. */
"Welcome message" = "Съобщение при посрещане";
/* No comment provided by engineer. */
"Welcome message is too long" = "Съобщението при посрещане е твърде дълго";
/* No comment provided by engineer. */
"What's new" = "Какво е новото";
@@ -3794,9 +4085,15 @@
/* No comment provided by engineer. */
"When you share an incognito profile with somebody, this profile will be used for the groups they invite you to." = "Когато споделяте инкогнито профил с някого, този профил ще се използва за групите, в които той ви кани.";
/* No comment provided by engineer. */
"With encrypted files and media." = "С криптирани файлове и медия.";
/* No comment provided by engineer. */
"With optional welcome message." = "С незадължително съобщение при посрещане.";
/* No comment provided by engineer. */
"With reduced battery usage." = "С намален разход на батерията.";
/* No comment provided by engineer. */
"Wrong database passphrase" = "Грешна парола за базата данни";
@@ -3857,6 +4154,9 @@
/* No comment provided by engineer. */
"you are observer" = "вие сте наблюдател";
/* snd group event chat item */
"you blocked %@" = "вие блокирахте %@";
/* No comment provided by engineer. */
"You can accept calls from lock screen, without device and app authentication." = "Можете да приемате обаждания от заключен екран, без идентификация на устройство и приложението.";
@@ -3869,6 +4169,9 @@
/* No comment provided by engineer. */
"You can enable them later via app Privacy & Security settings." = "Можете да ги активирате по-късно през настройките за \"Поверителност и сигурност\" на приложението.";
/* No comment provided by engineer. */
"You can give another try." = "Можете да опитате още веднъж.";
/* No comment provided by engineer. */
"You can hide or mute a user profile - swipe it to the right." = "Можете да скриете или заглушите известията за потребителски профил - плъзнете надясно.";
@@ -3906,10 +4209,10 @@
"You can't send messages!" = "Не може да изпращате съобщения!";
/* chat item text */
"you changed address" = "променихте адреса";
"you changed address" = "адреса за получаване е променен";
/* chat item text */
"you changed address for %@" = "променихте адреса за %@";
"you changed address for %@" = "променихте адреса получаване за %@";
/* snd group event chat item */
"you changed role for yourself to %@" = "променихте ролята си на %@";
@@ -3968,6 +4271,9 @@
/* chat list item description */
"you shared one-time link incognito" = "споделихте еднократен инкогнито линк за връзка";
/* snd group event chat item */
"you unblocked %@" = "вие отблокирахте %@";
/* No comment provided by engineer. */
"You will be connected to group when the group host's device is online, please wait or check later!" = "Ще бъдете свързани с групата, когато устройството на домакина на групата е онлайн, моля, изчакайте или проверете по-късно!";
+1 -1
View File
@@ -2070,7 +2070,7 @@
/* copied message info */
"Moderated at: %@" = "Upraveno v: %@";
/* No comment provided by engineer. */
/* marked deleted chat item preview text */
"moderated by %@" = "moderovaný %@";
/* time unit */
+237 -12
View File
@@ -85,6 +85,9 @@
/* No comment provided by engineer. */
"**Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app)." = "**Beste Privatsphäre**: Es wird kein SimpleX-Chat-Benachrichtigungs-Server genutzt, Nachrichten werden in periodischen Abständen im Hintergrund geprüft (dies hängt davon ab, wie häufig Sie die App nutzen).";
/* No comment provided by engineer. */
"**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." = "**Bitte beachten Sie**: Aus Sicherheitsgründen wird die Nachrichtenentschlüsselung Ihrer Verbindungen abgebrochen, wenn Sie die gleiche Datenbank auf zwei Geräten nutzen.";
/* No comment provided by engineer. */
"**Please note**: you will NOT be able to recover or change passphrase if you lose it." = "**Bitte beachten Sie**: Das Passwort kann NICHT wiederhergestellt oder geändert werden, wenn Sie es vergessen haben oder verlieren.";
@@ -94,6 +97,9 @@
/* No comment provided by engineer. */
"**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Warnung**: Sofortige Push-Benachrichtigungen erfordern die Eingabe eines Passworts, welches in Ihrem Schlüsselbund gespeichert ist.";
/* No comment provided by engineer. */
"**Warning**: the archive will be removed." = "**Warnung**: Das Archiv wird gelöscht.";
/* No comment provided by engineer. */
"*bold*" = "\\*fett*";
@@ -136,6 +142,9 @@
/* No comment provided by engineer. */
"%@ connected" = "%@ wurde mit Ihnen verbunden";
/* No comment provided by engineer. */
"%@ downloaded" = "%@ heruntergeladen";
/* notification title */
"%@ is connected!" = "%@ ist mit Ihnen verbunden!";
@@ -148,6 +157,9 @@
/* No comment provided by engineer. */
"%@ servers" = "%@-Server";
/* No comment provided by engineer. */
"%@ uploaded" = "%@ hochgeladen";
/* notification title */
"%@ wants to connect!" = "%@ will sich mit Ihnen verbinden!";
@@ -377,6 +389,9 @@
/* member role */
"admin" = "Admin";
/* No comment provided by engineer. */
"Admins can block a member for all." = "Administratoren können ein Gruppenmitglied für Alle blockieren.";
/* No comment provided by engineer. */
"Admins can create the links to join groups." = "Administratoren können Links für den Beitritt zu Gruppen erzeugen.";
@@ -416,6 +431,9 @@
/* No comment provided by engineer. */
"All your contacts will remain connected. Profile update will be sent to your contacts." = "Alle Ihre Kontakte bleiben verbunden. Es wird eine Profilaktualisierung an Ihre Kontakte gesendet.";
/* No comment provided by engineer. */
"All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." = "Alle Ihre Kontakte, Unterhaltungen und Dateien werden sicher verschlüsselt und in Daten-Paketen auf die konfigurierten XTFP-Server hochgeladen.";
/* No comment provided by engineer. */
"Allow" = "Erlauben";
@@ -497,6 +515,9 @@
/* No comment provided by engineer. */
"App build: %@" = "App Build: %@";
/* No comment provided by engineer. */
"App data migration" = "App-Daten-Migration";
/* No comment provided by engineer. */
"App encrypts new local files (except videos)." = "Neue lokale Dateien (außer Video-Dateien) werden von der App verschlüsselt.";
@@ -518,6 +539,15 @@
/* No comment provided by engineer. */
"Appearance" = "Erscheinungsbild";
/* No comment provided by engineer. */
"Apply" = "Anwenden";
/* No comment provided by engineer. */
"Archive and upload" = "Archivieren und Hochladen";
/* No comment provided by engineer. */
"Archiving database" = "Datenbank wird archiviert";
/* No comment provided by engineer. */
"Attach" = "Anhängen";
@@ -602,13 +632,13 @@
/* No comment provided by engineer. */
"Block member?" = "Mitglied blockieren?";
/* No comment provided by engineer. */
/* marked deleted chat item preview text */
"blocked" = "Blockiert";
/* rcv group event chat item */
"blocked %@" = "%@ wurde blockiert";
/* blocked chat item */
/* marked deleted chat item preview text */
"blocked by admin" = "wurde vom Administrator blockiert";
/* No comment provided by engineer. */
@@ -665,6 +695,9 @@
/* No comment provided by engineer. */
"Cancel" = "Abbrechen";
/* No comment provided by engineer. */
"Cancel migration" = "Migration abbrechen";
/* feature offered item */
"cancelled %@" = "abgebrochen %@";
@@ -744,6 +777,9 @@
/* No comment provided by engineer. */
"Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat." = "Der Chat ist angehalten. Wenn Sie diese Datenbank bereits auf einem anderen Gerät genutzt haben, sollten Sie diese vor dem Starten des Chats wieder zurückspielen.";
/* No comment provided by engineer. */
"Chat migrated!" = "Chat wurde migriert!";
/* No comment provided by engineer. */
"Chat preferences" = "Chat-Präferenzen";
@@ -756,6 +792,9 @@
/* No comment provided by engineer. */
"Chinese and Spanish interface" = "Chinesische und spanische Bedienoberfläche";
/* No comment provided by engineer. */
"Choose _Migrate from another device_ on the new device and scan QR code." = "Wählen Sie auf dem neuen Gerät _Von einem anderen Gerät migrieren_ und scannen Sie den QR-Code.";
/* No comment provided by engineer. */
"Choose file" = "Datei auswählen";
@@ -801,6 +840,9 @@
/* No comment provided by engineer. */
"Confirm database upgrades" = "Datenbank-Aktualisierungen bestätigen";
/* No comment provided by engineer. */
"Confirm network settings" = "Bestätigen Sie die Netzwerkeinstellungen";
/* No comment provided by engineer. */
"Confirm new passphrase…" = "Neues Passwort bestätigen…";
@@ -810,6 +852,12 @@
/* No comment provided by engineer. */
"Confirm password" = "Passwort bestätigen";
/* No comment provided by engineer. */
"Confirm that you remember database passphrase to migrate it." = "Bitte bestätigen Sie für die Migration, dass Sie sich an Ihr Datenbank-Passwort erinnern.";
/* No comment provided by engineer. */
"Confirm upload" = "Hochladen bestätigen";
/* server test step */
"Connect" = "Verbinden";
@@ -913,7 +961,7 @@
"connection:%@" = "Verbindung:%@";
/* profile update event chat item */
"contact %@ changed to %@" = "Der Kontaktname %1$@ wurde auf %2$@ geändert";
"contact %@ changed to %@" = "Der Kontaktname wurde von %1$@ auf %2$@ geändert";
/* No comment provided by engineer. */
"Contact allows" = "Der Kontakt erlaubt";
@@ -1008,6 +1056,9 @@
/* No comment provided by engineer. */
"Created on %@" = "Erstellt am %@";
/* No comment provided by engineer. */
"Creating archive link" = "Archiv-Link erzeugen";
/* No comment provided by engineer. */
"Creating link…" = "Link wird erstellt…";
@@ -1155,6 +1206,9 @@
/* No comment provided by engineer. */
"Delete database" = "Datenbank löschen";
/* No comment provided by engineer. */
"Delete database from this device" = "Datenbank auf diesem Gerät löschen";
/* server test step */
"Delete file" = "Datei löschen";
@@ -1347,9 +1401,18 @@
/* No comment provided by engineer. */
"Downgrade and open chat" = "Datenbank herabstufen und den Chat öffnen";
/* No comment provided by engineer. */
"Download failed" = "Herunterladen fehlgeschlagen";
/* server test step */
"Download file" = "Datei herunterladen";
/* No comment provided by engineer. */
"Downloading archive" = "Archiv wird heruntergeladen";
/* No comment provided by engineer. */
"Downloading link details" = "Link-Details werden heruntergeladen";
/* No comment provided by engineer. */
"Duplicate display name!" = "Doppelter Anzeigename!";
@@ -1383,6 +1446,9 @@
/* No comment provided by engineer. */
"Enable for all" = "Für Alle aktivieren";
/* No comment provided by engineer. */
"Enable in direct chats (BETA)!" = "Kann in direkten Chats aktiviert werden (BETA)!";
/* No comment provided by engineer. */
"Enable instant notifications?" = "Sofortige Benachrichtigungen aktivieren?";
@@ -1497,6 +1563,9 @@
/* No comment provided by engineer. */
"Enter Passcode" = "Zugangscode eingeben";
/* No comment provided by engineer. */
"Enter passphrase" = "Passwort eingeben";
/* No comment provided by engineer. */
"Enter passphrase…" = "Passwort eingeben…";
@@ -1536,6 +1605,9 @@
/* No comment provided by engineer. */
"Error adding member(s)" = "Fehler beim Hinzufügen von Mitgliedern";
/* No comment provided by engineer. */
"Error allowing contact PQ encryption" = "Fehler beim Zulassen der Kontakt-PQ-Verschlüsselung";
/* No comment provided by engineer. */
"Error changing address" = "Fehler beim Wechseln der Empfängeradresse";
@@ -1590,6 +1662,9 @@
/* No comment provided by engineer. */
"Error deleting user profile" = "Fehler beim Löschen des Benutzerprofils";
/* No comment provided by engineer. */
"Error downloading the archive" = "Fehler beim Herunterladen des Archivs";
/* No comment provided by engineer. */
"Error enabling delivery receipts!" = "Fehler beim Aktivieren von Empfangsbestätigungen!";
@@ -1635,6 +1710,9 @@
/* No comment provided by engineer. */
"Error saving passphrase to keychain" = "Fehler beim Speichern des Passworts in den Schlüsselbund";
/* when migrating */
"Error saving settings" = "Fehler beim Abspeichern der Einstellungen";
/* No comment provided by engineer. */
"Error saving user password" = "Fehler beim Speichern des Benutzer-Passworts";
@@ -1677,6 +1755,12 @@
/* No comment provided by engineer. */
"Error updating user privacy" = "Fehler beim Aktualisieren der Benutzer-Privatsphäre";
/* No comment provided by engineer. */
"Error uploading the archive" = "Fehler beim Hochladen des Archivs";
/* No comment provided by engineer. */
"Error verifying passphrase:" = "Fehler bei der Überprüfung des Passworts:";
/* No comment provided by engineer. */
"Error: " = "Fehler: ";
@@ -1710,6 +1794,9 @@
/* No comment provided by engineer. */
"Exported database archive." = "Exportiertes Datenbankarchiv.";
/* No comment provided by engineer. */
"Exported file doesn't exist" = "Die exportierte Datei ist nicht vorhanden";
/* No comment provided by engineer. */
"Exporting database archive…" = "Exportieren des Datenbank-Archivs…";
@@ -1752,6 +1839,12 @@
/* No comment provided by engineer. */
"Filter unread and favorite chats." = "Nach ungelesenen und favorisierten Chats filtern.";
/* No comment provided by engineer. */
"Finalize migration" = "Die Migration wird abgeschlossen";
/* No comment provided by engineer. */
"Finalize migration on another device." = "Die Migration auf dem anderen Gerät wird abgeschlossen.";
/* No comment provided by engineer. */
"Finally, we have them! 🚀" = "Endlich haben wir sie! 🚀";
@@ -1935,6 +2028,9 @@
/* No comment provided by engineer. */
"How to use your servers" = "Wie Sie Ihre Server nutzen";
/* No comment provided by engineer. */
"Hungarian interface" = "Ungarische Bedienoberfläche";
/* No comment provided by engineer. */
"ICE servers (one per line)" = "ICE-Server (einer pro Zeile)";
@@ -1974,6 +2070,12 @@
/* No comment provided by engineer. */
"Import database" = "Datenbank importieren";
/* No comment provided by engineer. */
"Import failed" = "Import ist fehlgeschlagen";
/* No comment provided by engineer. */
"Importing archive" = "Archiv wird importiert";
/* No comment provided by engineer. */
"Improved message delivery" = "Verbesserte Zustellung von Nachrichten";
@@ -1983,6 +2085,9 @@
/* No comment provided by engineer. */
"Improved server configuration" = "Verbesserte Serverkonfiguration";
/* No comment provided by engineer. */
"In order to continue, chat should be stopped." = "Um fortzufahren, sollte der Chat beendet werden.";
/* No comment provided by engineer. */
"In reply to" = "Als Antwort auf";
@@ -2067,6 +2172,9 @@
/* No comment provided by engineer. */
"Invalid link" = "Ungültiger Link";
/* No comment provided by engineer. */
"Invalid migration confirmation" = "Migrations-Bestätigung ungültig";
/* No comment provided by engineer. */
"Invalid name!" = "Ungültiger Name!";
@@ -2293,7 +2401,7 @@
"Member" = "Mitglied";
/* profile update event chat item */
"member %@ changed to %@" = "Der Mitgliedsname %1$@ wurde auf %2$@ geändert";
"member %@ changed to %@" = "Der Mitgliedsname von %1$@ wurde auf %2$@ geändert";
/* rcv group event chat item */
"member connected" = "ist der Gruppe beigetreten";
@@ -2331,6 +2439,9 @@
/* No comment provided by engineer. */
"Message text" = "Nachrichtentext";
/* No comment provided by engineer. */
"Message too large" = "Die Nachricht ist zu lang";
/* No comment provided by engineer. */
"Messages" = "Nachrichten";
@@ -2340,9 +2451,36 @@
/* No comment provided by engineer. */
"Messages from %@ will be shown!" = "Die Nachrichten von %@ werden angezeigt!";
/* No comment provided by engineer. */
"Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." = "Nachrichten, Dateien und Anrufe sind durch **Ende-zu-Ende-Verschlüsselung** mit Perfect Forward Secrecy, Ablehnung und Einbruchs-Wiederherstellung geschützt.";
/* No comment provided by engineer. */
"Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." = "Nachrichten, Dateien und Anrufe sind durch **Quantum-resistente E2E-Verschlüsselung** mit Perfect Forward Secrecy, Ablehnung und Einbruchs-Wiederherstellung geschützt.";
/* No comment provided by engineer. */
"Migrate device" = "Gerät migrieren";
/* No comment provided by engineer. */
"Migrate from another device" = "Von einem anderen Gerät migrieren";
/* No comment provided by engineer. */
"Migrate here" = "Hierher migrieren";
/* No comment provided by engineer. */
"Migrate to another device" = "Auf ein anderes Gerät migrieren";
/* No comment provided by engineer. */
"Migrate to another device via QR code." = "Daten können über einen QR-Code auf ein anderes Gerät migriert werden.";
/* No comment provided by engineer. */
"Migrating" = "Migrieren";
/* No comment provided by engineer. */
"Migrating database archive…" = "Datenbank-Archiv wird migriert…";
/* No comment provided by engineer. */
"Migration complete" = "Migration abgeschlossen";
/* No comment provided by engineer. */
"Migration error:" = "Fehler bei der Migration:";
@@ -2373,7 +2511,7 @@
/* copied message info */
"Moderated at: %@" = "Moderiert um: %@";
/* No comment provided by engineer. */
/* marked deleted chat item preview text */
"moderated by %@" = "Von %@ moderiert";
/* time unit */
@@ -2600,6 +2738,9 @@
/* No comment provided by engineer. */
"Open group" = "Gruppe öffnen";
/* authentication reason */
"Open migration to another device" = "Migration auf ein anderes Gerät öffnen";
/* No comment provided by engineer. */
"Open Settings" = "Geräte-Einstellungen öffnen";
@@ -2612,9 +2753,15 @@
/* No comment provided by engineer. */
"Opening app…" = "App wird geöffnet…";
/* No comment provided by engineer. */
"Or paste archive link" = "Oder fügen Sie den Archiv-Link ein";
/* No comment provided by engineer. */
"Or scan QR code" = "Oder den QR-Code scannen";
/* No comment provided by engineer. */
"Or securely share this file link" = "Oder teilen Sie diesen Datei-Link sicher";
/* No comment provided by engineer. */
"Or show this code" = "Oder diesen QR-Code anzeigen";
@@ -2666,6 +2813,9 @@
/* message decrypt error item */
"Permanent decryption error" = "Entschlüsselungsfehler";
/* No comment provided by engineer. */
"Picture-in-picture calls" = "Bild-in-Bild-Anrufe";
/* No comment provided by engineer. */
"PING count" = "PING-Zähler";
@@ -2684,6 +2834,9 @@
/* No comment provided by engineer. */
"Please check yours and your contact preferences." = "Bitte überprüfen sie sowohl Ihre, als auch die Präferenzen Ihres Kontakts.";
/* No comment provided by engineer. */
"Please confirm that network settings are correct for this device." = "Bitte bestätigen Sie, dass die Netzwerkeinstellungen auf diesem Gerät richtig sind.";
/* No comment provided by engineer. */
"Please contact developers.\nError: %@" = "Bitte nehmen Sie Kontakt mit den Entwicklern auf.\nFehler: %@";
@@ -2717,6 +2870,9 @@
/* server test error */
"Possibly, certificate fingerprint in server address is incorrect" = "Der Fingerabdruck des Zertifikats in der Serveradresse ist wahrscheinlich ungültig";
/* No comment provided by engineer. */
"Post-quantum E2EE" = "Post-Quantum E2E-Verschlüsselung";
/* No comment provided by engineer. */
"Preserve the last message draft, with attachments." = "Den letzten Nachrichtenentwurf, auch mit seinen Anhängen, aufbewahren.";
@@ -2798,6 +2954,15 @@
/* No comment provided by engineer. */
"Push notifications" = "Push-Benachrichtigungen";
/* No comment provided by engineer. */
"Push server" = "Push-Server";
/* chat item text */
"quantum resistant e2e encryption" = "Quantum-resistente E2E-Verschlüsselung";
/* No comment provided by engineer. */
"Quantum resistant encryption" = "Quantum-resistente Verschlüsselung";
/* No comment provided by engineer. */
"Rate the app" = "Bewerten Sie die App";
@@ -2913,10 +3078,10 @@
"removed %@" = "hat %@ aus der Gruppe entfernt";
/* profile update event chat item */
"removed contact address" = "Kontaktadresse wurde entfernt";
"removed contact address" = "Die Kontaktadresse wurde entfernt";
/* profile update event chat item */
"removed profile picture" = "Profil-Bild wurde entfernt";
"removed profile picture" = "Das Profil-Bild wurde entfernt";
/* rcv group event chat item */
"removed you" = "hat Sie aus der Gruppe entfernt";
@@ -2933,9 +3098,18 @@
/* No comment provided by engineer. */
"Repeat connection request?" = "Verbindungsanfrage wiederholen?";
/* No comment provided by engineer. */
"Repeat download" = "Herunterladen wiederholen";
/* No comment provided by engineer. */
"Repeat import" = "Import wiederholen";
/* No comment provided by engineer. */
"Repeat join request?" = "Verbindungsanfrage wiederholen?";
/* No comment provided by engineer. */
"Repeat upload" = "Hochladen wiederholen";
/* chat item action */
"Reply" = "Antwort";
@@ -2993,6 +3167,9 @@
/* No comment provided by engineer. */
"Run chat" = "Chat starten";
/* No comment provided by engineer. */
"Safer groups" = "Sicherere Gruppen";
/* chat item action */
"Save" = "Speichern";
@@ -3066,7 +3243,7 @@
"Search" = "Suche";
/* No comment provided by engineer. */
"Search bar accepts invitation links." = "Von der Suchleiste werden Einladungslinks akzeptiert.";
"Search bar accepts invitation links." = "In der Suchleiste werden nun auch Einladungslinks akzeptiert.";
/* No comment provided by engineer. */
"Search or paste SimpleX link" = "Suchen oder fügen Sie den SimpleX-Link ein";
@@ -3225,14 +3402,17 @@
"Set it instead of system authentication." = "Anstelle der System-Authentifizierung festlegen.";
/* profile update event chat item */
"set new contact address" = "Neue Kontaktadresse wurde festgelegt";
"set new contact address" = "Es wurde eine neue Kontaktadresse festgelegt";
/* profile update event chat item */
"set new profile picture" = "Neues Profil-Bild wurde festgelegt";
"set new profile picture" = "Es wurde ein neues Profil-Bild festgelegt";
/* No comment provided by engineer. */
"Set passcode" = "Zugangscode einstellen";
/* No comment provided by engineer. */
"Set passphrase" = "Passwort festlegen";
/* No comment provided by engineer. */
"Set passphrase to export" = "Passwort für den Export festlegen";
@@ -3278,6 +3458,9 @@
/* No comment provided by engineer. */
"Show preview" = "Vorschau anzeigen";
/* No comment provided by engineer. */
"Show QR code" = "QR-Code anzeigen";
/* No comment provided by engineer. */
"Show:" = "Anzeigen:";
@@ -3338,6 +3521,9 @@
/* notification title */
"Somebody" = "Jemand";
/* chat item text */
"standard end-to-end encryption" = "Standard-Ende-zu-Ende-Verschlüsselung";
/* No comment provided by engineer. */
"Start chat" = "Starten Sie den Chat";
@@ -3353,6 +3539,9 @@
/* No comment provided by engineer. */
"Stop" = "Beenden";
/* No comment provided by engineer. */
"Stop chat" = "Chat beenden";
/* No comment provided by engineer. */
"Stop chat to enable database actions" = "Chat beenden, um Datenbankaktionen zu erlauben";
@@ -3380,6 +3569,9 @@
/* authentication reason */
"Stop SimpleX" = "Stoppen Sie SimpleX";
/* No comment provided by engineer. */
"Stopping chat" = "Chat wird beendet";
/* No comment provided by engineer. */
"strike" = "durchstreichen";
@@ -3530,6 +3722,12 @@
/* No comment provided by engineer. */
"This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." = "Diese Aktion kann nicht rückgängig gemacht werden! Ihr Profil und Ihre Kontakte, Nachrichten und Dateien gehen unwiderruflich verloren.";
/* E2EE info chat item */
"This chat is protected by end-to-end encryption." = "Dieser Chat ist durch Ende-zu-Ende-Verschlüsselung geschützt.";
/* E2EE info chat item */
"This chat is protected by quantum resistant end-to-end encryption." = "Dieser Chat ist durch Quantum-resistente Ende-zu-Ende-Verschlüsselung geschützt.";
/* notification title */
"this contact" = "Dieser Kontakt";
@@ -3555,7 +3753,7 @@
"This setting applies to messages in your current chat profile **%@**." = "Diese Einstellung gilt für Nachrichten in Ihrem aktuellen Chat-Profil **%@**.";
/* No comment provided by engineer. */
"To ask any questions and to receive updates:" = "Um Fragen zu stellen und Aktualisierungen zu erhalten:";
"To ask any questions and to receive updates:" = "Um Fragen zu stellen und aktuelle Informationen zu erhalten:";
/* No comment provided by engineer. */
"To connect, your contact can scan QR code or use the link in the app." = "Um eine Verbindung herzustellen, kann Ihr Kontakt den QR-Code scannen oder den Link in der App verwenden.";
@@ -3722,9 +3920,15 @@
/* No comment provided by engineer. */
"Upgrade and open chat" = "Aktualisieren und den Chat öffnen";
/* No comment provided by engineer. */
"Upload failed" = "Hochladen fehlgeschlagen";
/* server test step */
"Upload file" = "Datei hochladen";
/* No comment provided by engineer. */
"Uploading archive" = "Archiv wird hochgeladen";
/* No comment provided by engineer. */
"Use .onion hosts" = "Verwende .onion-Hosts";
@@ -3755,6 +3959,9 @@
/* No comment provided by engineer. */
"Use SimpleX Chat servers?" = "Verwenden Sie SimpleX-Chat-Server?";
/* No comment provided by engineer. */
"Use the app while in the call." = "Die App kann während eines Anrufs genutzt werden.";
/* No comment provided by engineer. */
"User profile" = "Benutzerprofil";
@@ -3782,6 +3989,12 @@
/* No comment provided by engineer. */
"Verify connections" = "Verbindungen überprüfen";
/* No comment provided by engineer. */
"Verify database passphrase" = "Überprüfen Sie das Datenbank-Passwort";
/* No comment provided by engineer. */
"Verify passphrase" = "Überprüfen Sie das Passwort";
/* No comment provided by engineer. */
"Verify security code" = "Sicherheitscode überprüfen";
@@ -3860,6 +4073,9 @@
/* No comment provided by engineer. */
"wants to connect to you!" = "möchte sich mit Ihnen verbinden!";
/* No comment provided by engineer. */
"Warning: starting chat on multiple devices is not supported and will cause message delivery failures" = "Warnung: Das Starten des Chats auf mehreren Geräten wird nicht unterstützt und wird zu Fehlern bei der Nachrichtenübermittlung führen";
/* No comment provided by engineer. */
"Warning: you may lose some data!" = "Warnung: Sie könnten einige Daten verlieren!";
@@ -3875,6 +4091,9 @@
/* No comment provided by engineer. */
"Welcome message" = "Begrüßungsmeldung";
/* No comment provided by engineer. */
"Welcome message is too long" = "Die Begrüßungsmeldung ist zu lang";
/* No comment provided by engineer. */
"What's new" = "Was ist neu";
@@ -3911,6 +4130,9 @@
/* No comment provided by engineer. */
"You" = "Profil";
/* No comment provided by engineer. */
"You **must not** use the same database on two devices." = "Sie dürfen die selbe Datenbank **nicht** auf zwei Geräten nutzen.";
/* No comment provided by engineer. */
"You accepted connection" = "Sie haben die Verbindung akzeptiert";
@@ -3971,6 +4193,9 @@
/* No comment provided by engineer. */
"You can enable them later via app Privacy & Security settings." = "Sie können diese später in den Datenschutz & Sicherheits-Einstellungen der App aktivieren.";
/* No comment provided by engineer. */
"You can give another try." = "Sie können es nochmal probieren.";
/* No comment provided by engineer. */
"You can hide or mute a user profile - swipe it to the right." = "Sie können ein Benutzerprofil verbergen oder stummschalten - wischen Sie es nach rechts.";
@@ -4134,7 +4359,7 @@
"Your contacts can allow full message deletion." = "Ihre Kontakte können die unwiederbringliche Löschung von Nachrichten erlauben.";
/* No comment provided by engineer. */
"Your contacts will remain connected." = "Ihre Kontakte bleiben verbunden.";
"Your contacts will remain connected." = "Ihre Kontakte bleiben weiterhin verbunden.";
/* No comment provided by engineer. */
"Your current chat database will be DELETED and REPLACED with the imported one." = "Ihre aktuelle Chat-Datenbank wird GELÖSCHT und durch die Importierte ERSETZT.";
+356 -5
View File
@@ -85,6 +85,9 @@
/* No comment provided by engineer. */
"**Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app)." = "**Más privado**: no se usa el servidor de notificaciones de SimpleX Chat, los mensajes se comprueban periódicamente en segundo plano (dependiendo de la frecuencia con la que utilices la aplicación).";
/* No comment provided by engineer. */
"**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." = "**Tenga en cuenta**: usar la misma base de datos en dos dispositivos interrumpirá el descifrado de mensajes de sus conexiones, como protección de seguridad.";
/* No comment provided by engineer. */
"**Please note**: you will NOT be able to recover or change passphrase if you lose it." = "**Atención**: NO podrás recuperar o cambiar la contraseña si la pierdes.";
@@ -94,6 +97,9 @@
/* No comment provided by engineer. */
"**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Advertencia**: Las notificaciones automáticas instantáneas requieren una contraseña guardada en Keychain.";
/* No comment provided by engineer. */
"**Warning**: the archive will be removed." = "**Atención**: el archivo será eliminado.";
/* No comment provided by engineer. */
"*bold*" = "\\*bold*";
@@ -136,6 +142,9 @@
/* No comment provided by engineer. */
"%@ connected" = "%@ conectado";
/* No comment provided by engineer. */
"%@ downloaded" = "%@ downloaded";
/* notification title */
"%@ is connected!" = "%@ ¡está conectado!";
@@ -148,6 +157,9 @@
/* No comment provided by engineer. */
"%@ servers" = "Servidores %@";
/* No comment provided by engineer. */
"%@ uploaded" = "%@ cargado";
/* notification title */
"%@ wants to connect!" = "¡ %@ quiere contactar!";
@@ -202,6 +214,9 @@
/* No comment provided by engineer. */
"%lld messages blocked" = "%lld mensaje(s) bloqueado(s)";
/* No comment provided by engineer. */
"%lld messages blocked by admin" = "%lld mensajes bloqueados por el administrador";
/* No comment provided by engineer. */
"%lld messages marked deleted" = "%lld mensaje(s) marcado(s) eliminado(s)";
@@ -374,6 +389,9 @@
/* member role */
"admin" = "administrador";
/* No comment provided by engineer. */
"Admins can block a member for all." = "Los admins pueden bloquear un miembro por todos.";
/* No comment provided by engineer. */
"Admins can create the links to join groups." = "Los administradores pueden crear enlaces para unirse a grupos.";
@@ -398,6 +416,9 @@
/* No comment provided by engineer. */
"All group members will remain connected." = "Todos los miembros del grupo permanecerán conectados.";
/* No comment provided by engineer. */
"All messages will be deleted - this cannot be undone!" = "Todos los mensajes serán borrados. ¡No podrá deshacerse!";
/* No comment provided by engineer. */
"All messages will be deleted - this cannot be undone! The messages will be deleted ONLY for you." = "Se eliminarán todos los mensajes SOLO para tí. ¡No podrá deshacerse!";
@@ -410,6 +431,9 @@
/* No comment provided by engineer. */
"All your contacts will remain connected. Profile update will be sent to your contacts." = "Todos tus contactos permanecerán conectados. La actualización del perfil se enviará a tus contactos.";
/* No comment provided by engineer. */
"All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." = "Todos sus contactos, conversaciones y archivos se cifrarán de forma segura y se subirán en fragmentos hacia puntos XFTP configurados.";
/* No comment provided by engineer. */
"Allow" = "Se permite";
@@ -491,6 +515,9 @@
/* No comment provided by engineer. */
"App build: %@" = "Compilación app: %@";
/* No comment provided by engineer. */
"App data migration" = "Migración de datos de la aplicación";
/* No comment provided by engineer. */
"App encrypts new local files (except videos)." = "Cifrado de los nuevos archivos locales (excepto vídeos).";
@@ -512,6 +539,15 @@
/* No comment provided by engineer. */
"Appearance" = "Apariencia";
/* No comment provided by engineer. */
"Apply" = "Aplicar";
/* No comment provided by engineer. */
"Archive and upload" = "Archivar y transferir";
/* No comment provided by engineer. */
"Archiving database" = "Archivando base de datos";
/* No comment provided by engineer. */
"Attach" = "Adjuntar";
@@ -581,6 +617,9 @@
/* No comment provided by engineer. */
"Block" = "Bloquear";
/* No comment provided by engineer. */
"Block for all" = "Bloquear para todos";
/* No comment provided by engineer. */
"Block group members" = "Bloquear miembros del grupo";
@@ -588,11 +627,23 @@
"Block member" = "Bloquear miembro";
/* No comment provided by engineer. */
"Block member?" = "¿Bloquear miembro?";
"Block member for all?" = "¿Bloqear miembro para todos?";
/* No comment provided by engineer. */
"Block member?" = "¿Bloquear miembro?";
/* marked deleted chat item preview text */
"blocked" = "bloqueado";
/* rcv group event chat item */
"blocked %@" = "%@ bloqueado";
/* marked deleted chat item preview text */
"blocked by admin" = "bloqueado por el administrador";
/* No comment provided by engineer. */
"Blocked by admin" = "Bloqueado por el administrador";
/* No comment provided by engineer. */
"bold" = "negrita";
@@ -644,6 +695,9 @@
/* No comment provided by engineer. */
"Cancel" = "Cancelar";
/* No comment provided by engineer. */
"Cancel migration" = "Cancelar migración";
/* feature offered item */
"cancelled %@" = "cancelado %@";
@@ -723,6 +777,9 @@
/* No comment provided by engineer. */
"Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat." = "Chat está detenido. Si estás usando esta base de datos en otro dispositivo, deberías transferirla de vuelta antes de iniciarlo.";
/* No comment provided by engineer. */
"Chat migrated!" = "Chat transferido !";
/* No comment provided by engineer. */
"Chat preferences" = "Preferencias de Chat";
@@ -735,6 +792,9 @@
/* No comment provided by engineer. */
"Chinese and Spanish interface" = "Interfaz en chino y español";
/* No comment provided by engineer. */
"Choose _Migrate from another device_ on the new device and scan QR code." = "Elija _Migrar desde otro dispositivo_ en el nuevo dispositivo y escanee el código QR.";
/* No comment provided by engineer. */
"Choose file" = "Elije archivo";
@@ -750,6 +810,9 @@
/* No comment provided by engineer. */
"Clear conversation?" = "¿Vaciar conversación?";
/* No comment provided by engineer. */
"Clear private notes?" = "¿Borrar notas privadas?";
/* No comment provided by engineer. */
"Clear verification" = "Eliminar verificación";
@@ -777,6 +840,9 @@
/* No comment provided by engineer. */
"Confirm database upgrades" = "Confirmar actualizaciones de la bases de datos";
/* No comment provided by engineer. */
"Confirm network settings" = "Confirmar los ajustes de red";
/* No comment provided by engineer. */
"Confirm new passphrase…" = "Confirme nueva contraseña…";
@@ -786,6 +852,12 @@
/* No comment provided by engineer. */
"Confirm password" = "Confirmar contraseña";
/* No comment provided by engineer. */
"Confirm that you remember database passphrase to migrate it." = "Confirme que recuerda la frase secreta de la base de datos para migrarla.";
/* No comment provided by engineer. */
"Confirm upload" = "Confirmar subida";
/* server test step */
"Connect" = "Conectar";
@@ -888,6 +960,9 @@
/* connection information */
"connection:%@" = "conexión: % @";
/* profile update event chat item */
"contact %@ changed to %@" = "el contacto %1$@ ha cambiado a %2$@";
/* No comment provided by engineer. */
"Contact allows" = "El contacto permite";
@@ -972,9 +1047,18 @@
/* No comment provided by engineer. */
"Create your profile" = "Crea tu perfil";
/* No comment provided by engineer. */
"Created at" = "Creado";
/* copied message info */
"Created at: %@" = "Creado: %@";
/* No comment provided by engineer. */
"Created on %@" = "Creado en %@";
/* No comment provided by engineer. */
"Creating archive link" = "Creando enlace de archivo";
/* No comment provided by engineer. */
"Creating link…" = "Creando enlace…";
@@ -1122,6 +1206,9 @@
/* No comment provided by engineer. */
"Delete database" = "Eliminar base de datos";
/* No comment provided by engineer. */
"Delete database from this device" = "Eliminar base de datos de este dispositivo";
/* server test step */
"Delete file" = "Eliminar archivo";
@@ -1296,6 +1383,9 @@
/* No comment provided by engineer. */
"Do it later" = "Hacer más tarde";
/* No comment provided by engineer. */
"Do not send history to new members." = "No enviar historial a miembros nuevos.";
/* No comment provided by engineer. */
"Do NOT use SimpleX for emergency calls." = "NO uses SimpleX para llamadas de emergencia.";
@@ -1311,9 +1401,18 @@
/* No comment provided by engineer. */
"Downgrade and open chat" = "Degradar y abrir Chat";
/* No comment provided by engineer. */
"Download failed" = "Error en la descarga";
/* server test step */
"Download file" = "Descargar archivo";
/* No comment provided by engineer. */
"Downloading archive" = "Descargando archivo";
/* No comment provided by engineer. */
"Downloading link details" = "Descargando detalles del enlace";
/* No comment provided by engineer. */
"Duplicate display name!" = "¡Nombre mostrado duplicado!";
@@ -1347,6 +1446,9 @@
/* No comment provided by engineer. */
"Enable for all" = "Activar para todos";
/* No comment provided by engineer. */
"Enable in direct chats (BETA)!" = "Activar en chats directos (BETA)!";
/* No comment provided by engineer. */
"Enable instant notifications?" = "¿Activar notificación instantánea?";
@@ -1461,6 +1563,9 @@
/* No comment provided by engineer. */
"Enter Passcode" = "Introduce Código";
/* No comment provided by engineer. */
"Enter passphrase" = "Introducir frase de contraseña";
/* No comment provided by engineer. */
"Enter passphrase…" = "Introduce la contraseña…";
@@ -1500,6 +1605,9 @@
/* No comment provided by engineer. */
"Error adding member(s)" = "Error al añadir miembro(s)";
/* No comment provided by engineer. */
"Error allowing contact PQ encryption" = "Error al permitir cifrado PQ al contacto";
/* No comment provided by engineer. */
"Error changing address" = "Error al cambiar servidor";
@@ -1521,6 +1629,9 @@
/* No comment provided by engineer. */
"Error creating member contact" = "Error al establecer contacto con el miembro";
/* No comment provided by engineer. */
"Error creating message" = "Error al crear mensaje";
/* No comment provided by engineer. */
"Error creating profile!" = "¡Error al crear perfil!";
@@ -1551,6 +1662,9 @@
/* No comment provided by engineer. */
"Error deleting user profile" = "Error al eliminar perfil";
/* No comment provided by engineer. */
"Error downloading the archive" = "Error al descargar el archivo";
/* No comment provided by engineer. */
"Error enabling delivery receipts!" = "¡Error al activar confirmaciones de entrega!";
@@ -1596,6 +1710,9 @@
/* No comment provided by engineer. */
"Error saving passphrase to keychain" = "Error al guardar contraseña en Keychain";
/* when migrating */
"Error saving settings" = "Error al guardar ajustes";
/* No comment provided by engineer. */
"Error saving user password" = "Error al guardar contraseña de usuario";
@@ -1638,6 +1755,12 @@
/* No comment provided by engineer. */
"Error updating user privacy" = "Error al actualizar privacidad de usuario";
/* No comment provided by engineer. */
"Error uploading the archive" = "Error al subir el archivo";
/* No comment provided by engineer. */
"Error verifying passphrase:" = "Error al verificar la frase de contraseña:";
/* No comment provided by engineer. */
"Error: " = "Error: ";
@@ -1671,6 +1794,9 @@
/* No comment provided by engineer. */
"Exported database archive." = "Archivo de base de datos exportado.";
/* No comment provided by engineer. */
"Exported file doesn't exist" = "El archivo exportado no existe";
/* No comment provided by engineer. */
"Exporting database archive…" = "Exportando base de datos…";
@@ -1713,6 +1839,12 @@
/* No comment provided by engineer. */
"Filter unread and favorite chats." = "Filtra chats no leídos y favoritos.";
/* No comment provided by engineer. */
"Finalize migration" = "Finalizar la migración";
/* No comment provided by engineer. */
"Finalize migration on another device." = "Finalizar la migración en otro dispositivo.";
/* No comment provided by engineer. */
"Finally, we have them! 🚀" = "¡Por fin los tenemos! 🚀";
@@ -1875,6 +2007,9 @@
/* No comment provided by engineer. */
"History" = "Historial";
/* No comment provided by engineer. */
"History is not sent to new members." = "El historial no se envía a miembros nuevos.";
/* time unit */
"hours" = "horas";
@@ -1893,6 +2028,9 @@
/* No comment provided by engineer. */
"How to use your servers" = "Cómo usar los servidores";
/* No comment provided by engineer. */
"Hungarian interface" = "Interfaz húngara";
/* No comment provided by engineer. */
"ICE servers (one per line)" = "Servidores ICE (uno por línea)";
@@ -1932,12 +2070,24 @@
/* No comment provided by engineer. */
"Import database" = "Importar base de datos";
/* No comment provided by engineer. */
"Import failed" = "Error de importación";
/* No comment provided by engineer. */
"Importing archive" = "Importando archivo";
/* No comment provided by engineer. */
"Improved message delivery" = "Entrega de mensajes mejorada";
/* No comment provided by engineer. */
"Improved privacy and security" = "Seguridad y privacidad mejoradas";
/* No comment provided by engineer. */
"Improved server configuration" = "Configuración del servidor mejorada";
/* No comment provided by engineer. */
"In order to continue, chat should be stopped." = "Para continuar, el chat debe ser interrumpido.";
/* No comment provided by engineer. */
"In reply to" = "En respuesta a";
@@ -2016,9 +2166,15 @@
/* invalid chat item */
"invalid data" = "datos no válidos";
/* No comment provided by engineer. */
"Invalid display name!" = "¡Nombre mostrado no válido!";
/* No comment provided by engineer. */
"Invalid link" = "Enlace no válido";
/* No comment provided by engineer. */
"Invalid migration confirmation" = "Confirmación de migración inválida";
/* No comment provided by engineer. */
"Invalid name!" = "¡Nombre no válido!";
@@ -2106,6 +2262,9 @@
/* No comment provided by engineer. */
"Join group" = "Unirte al grupo";
/* No comment provided by engineer. */
"Join group conversations" = "Unirse a la conversación del grupo";
/* No comment provided by engineer. */
"Join group?" = "¿Unirte al grupo?";
@@ -2241,6 +2400,9 @@
/* No comment provided by engineer. */
"Member" = "Miembro";
/* profile update event chat item */
"member %@ changed to %@" = "el miembro %1$@ ha cambiado a %2$@";
/* rcv group event chat item */
"member connected" = "conectado";
@@ -2277,6 +2439,9 @@
/* No comment provided by engineer. */
"Message text" = "Contacto y texto";
/* No comment provided by engineer. */
"Message too large" = "Mensaje demasiado grande";
/* No comment provided by engineer. */
"Messages" = "Mensajes";
@@ -2286,9 +2451,36 @@
/* No comment provided by engineer. */
"Messages from %@ will be shown!" = "¡Los mensajes de %@ serán mostrados!";
/* No comment provided by engineer. */
"Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." = "Los mensajes, archivos y llamadas están protegidos por **cifrado de extremo a extremo** con perfecta confidencialidad, repudio y recuperación tras ataques.";
/* No comment provided by engineer. */
"Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." = "Los mensajes, archivos y llamadas están protegidos por **cifrado de extremo a extremo resistente a la computación cuántica** con perfecta confidencialidad, repudio y recuperación tras ataques.";
/* No comment provided by engineer. */
"Migrate device" = "Migrar dispositivo";
/* No comment provided by engineer. */
"Migrate from another device" = "Migrar desde otro dispositivo";
/* No comment provided by engineer. */
"Migrate here" = "Migrar aquí";
/* No comment provided by engineer. */
"Migrate to another device" = "Migrar hacia otro dispositivo";
/* No comment provided by engineer. */
"Migrate to another device via QR code." = "Migrar hacia otro dispositivo mediante código QR.";
/* No comment provided by engineer. */
"Migrating" = "Migrando";
/* No comment provided by engineer. */
"Migrating database archive…" = "Migrando base de datos…";
/* No comment provided by engineer. */
"Migration complete" = "Migración completada";
/* No comment provided by engineer. */
"Migration error:" = "Error de migración:";
@@ -2319,7 +2511,7 @@
/* copied message info */
"Moderated at: %@" = "Moderado: %@";
/* No comment provided by engineer. */
/* marked deleted chat item preview text */
"moderated by %@" = "moderado por %@";
/* time unit */
@@ -2546,6 +2738,9 @@
/* No comment provided by engineer. */
"Open group" = "Grupo abierto";
/* authentication reason */
"Open migration to another device" = "Abrir la migración hacia otro dispositivo";
/* No comment provided by engineer. */
"Open Settings" = "Abrir Configuración";
@@ -2558,9 +2753,15 @@
/* No comment provided by engineer. */
"Opening app…" = "Iniciando aplicación…";
/* No comment provided by engineer. */
"Or paste archive link" = "O pegar enlace del archivo";
/* No comment provided by engineer. */
"Or scan QR code" = "O escanear código QR";
/* No comment provided by engineer. */
"Or securely share this file link" = "O comparta de forma segura el enlace de este archivo";
/* No comment provided by engineer. */
"Or show this code" = "O mostrar este código";
@@ -2585,12 +2786,18 @@
/* No comment provided by engineer. */
"Password to show" = "Contraseña para hacerlo visible";
/* past/unknown group member */
"Past member %@" = "Miembro pasado %@";
/* No comment provided by engineer. */
"Paste desktop address" = "Pegar dirección de ordenador";
/* No comment provided by engineer. */
"Paste image" = "Pegar imagen";
/* No comment provided by engineer. */
"Paste link to connect!" = "Pegar enlace para conectar!";
/* No comment provided by engineer. */
"Paste the link you received" = "Pegar el enlace recibido";
@@ -2606,6 +2813,9 @@
/* message decrypt error item */
"Permanent decryption error" = "Error permanente descifrado";
/* No comment provided by engineer. */
"Picture-in-picture calls" = "Llamadas picture-in-picture";
/* No comment provided by engineer. */
"PING count" = "Contador PING";
@@ -2624,6 +2834,9 @@
/* No comment provided by engineer. */
"Please check yours and your contact preferences." = "Comprueba tus preferencias y las de tu contacto.";
/* No comment provided by engineer. */
"Please confirm that network settings are correct for this device." = "Por favor confirme que la configuración de red es correcta para este dispositivo.";
/* No comment provided by engineer. */
"Please contact developers.\nError: %@" = "Por favor, contacta con los desarrolladores.\nError: %@";
@@ -2657,6 +2870,9 @@
/* server test error */
"Possibly, certificate fingerprint in server address is incorrect" = "Posiblemente la huella digital del certificado en la dirección del servidor es incorrecta";
/* No comment provided by engineer. */
"Post-quantum E2EE" = "E2EE postcuántica";
/* No comment provided by engineer. */
"Preserve the last message draft, with attachments." = "Conserva el último borrador del mensaje con los datos adjuntos.";
@@ -2678,6 +2894,9 @@
/* No comment provided by engineer. */
"Private filenames" = "Nombres de archivos privados";
/* name of notes to self */
"Private notes" = "Notas privadas";
/* No comment provided by engineer. */
"Profile and server connections" = "Perfil y conexiones de servidor";
@@ -2735,6 +2954,15 @@
/* No comment provided by engineer. */
"Push notifications" = "Notificaciones automáticas";
/* No comment provided by engineer. */
"Push server" = "Servidor push";
/* chat item text */
"quantum resistant e2e encryption" = "cifrado e2e resistente a la cuántica";
/* No comment provided by engineer. */
"Quantum resistant encryption" = "Cifrado resistente a la tecnología cuántica";
/* No comment provided by engineer. */
"Rate the app" = "Valora la aplicación";
@@ -2792,6 +3020,9 @@
/* No comment provided by engineer. */
"Receiving via" = "Recibiendo vía";
/* No comment provided by engineer. */
"Recent history and improved [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion)." = "Historial reciente y [bot del directorio](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) mejorados.";
/* No comment provided by engineer. */
"Recipients see updates as you type them." = "Los destinatarios ven actualizarse mientras escribes.";
@@ -2846,6 +3077,12 @@
/* rcv group event chat item */
"removed %@" = "ha expulsado a %@";
/* profile update event chat item */
"removed contact address" = "dirección de contacto eliminada";
/* profile update event chat item */
"removed profile picture" = "imagen de perfil eliminada";
/* rcv group event chat item */
"removed you" = "te ha expulsado";
@@ -2861,9 +3098,18 @@
/* No comment provided by engineer. */
"Repeat connection request?" = "¿Repetir solicitud de conexión?";
/* No comment provided by engineer. */
"Repeat download" = "Repetir descarga";
/* No comment provided by engineer. */
"Repeat import" = "Repetir importación";
/* No comment provided by engineer. */
"Repeat join request?" = "¿Repetir solicitud de admisión?";
/* No comment provided by engineer. */
"Repeat upload" = "Repetir la carga";
/* chat item action */
"Reply" = "Responder";
@@ -2921,6 +3167,9 @@
/* No comment provided by engineer. */
"Run chat" = "Ejecutar chat";
/* No comment provided by engineer. */
"Safer groups" = "Grupos más seguros";
/* chat item action */
"Save" = "Guardar";
@@ -2969,6 +3218,9 @@
/* No comment provided by engineer. */
"Save welcome message?" = "¿Guardar mensaje de bienvenida?";
/* message info title */
"Saved message" = "Mensaje guardado";
/* No comment provided by engineer. */
"Saved WebRTC ICE servers will be removed" = "Los servidores WebRTC ICE guardados serán eliminados";
@@ -2990,6 +3242,9 @@
/* No comment provided by engineer. */
"Search" = "Buscar";
/* No comment provided by engineer. */
"Search bar accepts invitation links." = "La barra de búsqueda acepta enlaces de invitación.";
/* No comment provided by engineer. */
"Search or paste SimpleX link" = "Buscar o pegar enlace SimpleX";
@@ -3071,6 +3326,9 @@
/* No comment provided by engineer. */
"Send them from gallery or custom keyboards." = "Envíalos desde la galería o desde teclados personalizados.";
/* No comment provided by engineer. */
"Send up to 100 last messages to new members." = "Enviar hasta 100 últimos mensajes a los miembros nuevos.";
/* No comment provided by engineer. */
"Sender cancelled file transfer." = "El remitente ha cancelado la transferencia de archivos.";
@@ -3143,9 +3401,18 @@
/* No comment provided by engineer. */
"Set it instead of system authentication." = "Úsalo en lugar de la autenticación del sistema.";
/* profile update event chat item */
"set new contact address" = "nueva dirección de contacto";
/* profile update event chat item */
"set new profile picture" = "nueva imagen de perfil";
/* No comment provided by engineer. */
"Set passcode" = "Código autodestrucción";
/* No comment provided by engineer. */
"Set passphrase" = "Definir frase de contraseña";
/* No comment provided by engineer. */
"Set passphrase to export" = "Escribe la contraseña para exportar";
@@ -3191,6 +3458,9 @@
/* No comment provided by engineer. */
"Show preview" = "Mostrar vista previa";
/* No comment provided by engineer. */
"Show QR code" = "Mostrar código QR";
/* No comment provided by engineer. */
"Show:" = "Mostrar:";
@@ -3251,6 +3521,9 @@
/* notification title */
"Somebody" = "Alguien";
/* chat item text */
"standard end-to-end encryption" = "cifrado estándar de extremo a extremo";
/* No comment provided by engineer. */
"Start chat" = "Iniciar chat";
@@ -3266,6 +3539,9 @@
/* No comment provided by engineer. */
"Stop" = "Detener";
/* No comment provided by engineer. */
"Stop chat" = "Detener el chat";
/* No comment provided by engineer. */
"Stop chat to enable database actions" = "Detén SimpleX para habilitar las acciones sobre la base de datos";
@@ -3293,6 +3569,9 @@
/* authentication reason */
"Stop SimpleX" = "Detener SimpleX";
/* No comment provided by engineer. */
"Stopping chat" = "Detención del chat";
/* No comment provided by engineer. */
"strike" = "tachado";
@@ -3435,13 +3714,19 @@
"They can be overridden in contact and group settings." = "Se pueden anular en la configuración de contactos.";
/* No comment provided by engineer. */
"This action cannot be undone - all received and sent files and media will be deleted. Low resolution pictures will remain." = "Esta acción no se puede deshacer. Se eliminarán todos los archivos y multimedia recibidos y enviados. Las imágenes de baja resolución permanecerán.";
"This action cannot be undone - all received and sent files and media will be deleted. Low resolution pictures will remain." = "Esta acción es irreversible. Se eliminarán todos los archivos y multimedia recibidos y enviados. Las imágenes de baja resolución permanecerán.";
/* No comment provided by engineer. */
"This action cannot be undone - the messages sent and received earlier than selected will be deleted. It may take several minutes." = "Esta acción no se puede deshacer. Se eliminarán los mensajes enviados y recibidos anteriores a la selección. Puede tardar varios minutos.";
"This action cannot be undone - the messages sent and received earlier than selected will be deleted. It may take several minutes." = "Esta acción es irreversible. Se eliminarán los mensajes enviados y recibidos anteriores a la selección. Puede tardar varios minutos.";
/* No comment provided by engineer. */
"This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." = "Esta acción no se puede deshacer. Tu perfil, contactos, mensajes y archivos se perderán irreversiblemente.";
"This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." = "Esta acción es irreversible. Tu perfil, contactos, mensajes y archivos se perderán irreversiblemente.";
/* E2EE info chat item */
"This chat is protected by end-to-end encryption." = "Este chat está protegido por cifrado de extremo a extremo.";
/* E2EE info chat item */
"This chat is protected by quantum resistant end-to-end encryption." = "Este chat está protegido por un cifrado de extremo a extremo resistente a tecnologías cuánticas.";
/* notification title */
"this contact" = "este contacto";
@@ -3449,6 +3734,9 @@
/* No comment provided by engineer. */
"This device name" = "Nombre del dispositivo";
/* No comment provided by engineer. */
"This display name is invalid. Please choose another name." = "Éste nombre mostrado no es válido. Por favor, elije otro nombre.";
/* No comment provided by engineer. */
"This group has over %lld members, delivery receipts are not sent." = "Este grupo tiene más de %lld miembros, no se enviarán confirmaciones de entrega.";
@@ -3509,6 +3797,9 @@
/* No comment provided by engineer. */
"Trying to connect to the server used to receive messages from this contact." = "Intentando conectar con el servidor usado para recibir mensajes de este contacto.";
/* No comment provided by engineer. */
"Turkish interface" = "Interfaz en turco";
/* No comment provided by engineer. */
"Turn off" = "Desactivar";
@@ -3521,12 +3812,21 @@
/* No comment provided by engineer. */
"Unblock" = "Desbloquear";
/* No comment provided by engineer. */
"Unblock for all" = "Desbloquear para todos";
/* No comment provided by engineer. */
"Unblock member" = "Desbloquear miembro";
/* No comment provided by engineer. */
"Unblock member for all?" = "¿Desbloquear miembro para todos?";
/* No comment provided by engineer. */
"Unblock member?" = "¿Desbloquear miembro?";
/* rcv group event chat item */
"unblocked %@" = "%@ desbloqueado";
/* item status description */
"Unexpected error: %@" = "Error inesperado: %@";
@@ -3560,6 +3860,9 @@
/* No comment provided by engineer. */
"Unknown error" = "Error desconocido";
/* No comment provided by engineer. */
"unknown status" = "estado desconocido";
/* No comment provided by engineer. */
"Unless you use iOS call interface, enable Do Not Disturb mode to avoid interruptions." = "A menos que utilices la interfaz de llamadas de iOS, activa el modo No molestar para evitar interrupciones.";
@@ -3584,6 +3887,9 @@
/* No comment provided by engineer. */
"Unread" = "No leído";
/* No comment provided by engineer. */
"Up to 100 last messages are sent to new members." = "Hasta 100 últimos mensajes son enviados a los miembros nuevos.";
/* No comment provided by engineer. */
"Update" = "Actualizar";
@@ -3602,6 +3908,9 @@
/* rcv group event chat item */
"updated group profile" = "ha actualizado el perfil del grupo";
/* profile update event chat item */
"updated profile" = "perfil actualizado";
/* No comment provided by engineer. */
"Updating settings will re-connect the client to all servers." = "Al actualizar la configuración el cliente se reconectará a todos los servidores.";
@@ -3611,9 +3920,15 @@
/* No comment provided by engineer. */
"Upgrade and open chat" = "Actualizar y abrir Chat";
/* No comment provided by engineer. */
"Upload failed" = "Error de carga";
/* server test step */
"Upload file" = "Subir archivo";
/* No comment provided by engineer. */
"Uploading archive" = "Subiendo el archivo";
/* No comment provided by engineer. */
"Use .onion hosts" = "Usar hosts .onion";
@@ -3644,6 +3959,9 @@
/* No comment provided by engineer. */
"Use SimpleX Chat servers?" = "¿Usar servidores SimpleX Chat?";
/* No comment provided by engineer. */
"Use the app while in the call." = "Usar la app durante la llamada.";
/* No comment provided by engineer. */
"User profile" = "Perfil de usuario";
@@ -3671,6 +3989,12 @@
/* No comment provided by engineer. */
"Verify connections" = "Verificar conexiones";
/* No comment provided by engineer. */
"Verify database passphrase" = "Verificar la contraseña de la base de datos";
/* No comment provided by engineer. */
"Verify passphrase" = "Verificar frase de contraseña";
/* No comment provided by engineer. */
"Verify security code" = "Comprobar código de seguridad";
@@ -3710,6 +4034,9 @@
/* No comment provided by engineer. */
"View security code" = "Mostrar código de seguridad";
/* chat feature */
"Visible history" = "Historial visible";
/* No comment provided by engineer. */
"Voice message…" = "Mensaje de voz…";
@@ -3746,6 +4073,9 @@
/* No comment provided by engineer. */
"wants to connect to you!" = "¡quiere contactar contigo!";
/* No comment provided by engineer. */
"Warning: starting chat on multiple devices is not supported and will cause message delivery failures" = "Advertencia: el inicio del chat en varios dispositivos no es compatible y provocará fallos en la entrega de mensajes";
/* No comment provided by engineer. */
"Warning: you may lose some data!" = "Atención: ¡puedes perder algunos datos!";
@@ -3761,6 +4091,9 @@
/* No comment provided by engineer. */
"Welcome message" = "Mensaje de bienvenida";
/* No comment provided by engineer. */
"Welcome message is too long" = "El mensaje de bienvenida es demasiado largo";
/* No comment provided by engineer. */
"What's new" = "Novedades";
@@ -3773,9 +4106,15 @@
/* No comment provided by engineer. */
"When you share an incognito profile with somebody, this profile will be used for the groups they invite you to." = "Cuando compartes un perfil incógnito con alguien, este perfil también se usará para los grupos a los que te inviten.";
/* No comment provided by engineer. */
"With encrypted files and media." = "Con cifrado de archivos y multimedia.";
/* No comment provided by engineer. */
"With optional welcome message." = "Con mensaje de bienvenida opcional.";
/* No comment provided by engineer. */
"With reduced battery usage." = "Con uso reducido de batería.";
/* No comment provided by engineer. */
"Wrong database passphrase" = "Contraseña de base de datos incorrecta";
@@ -3791,6 +4130,9 @@
/* No comment provided by engineer. */
"You" = "Tú";
/* No comment provided by engineer. */
"You **must not** use the same database on two devices." = "**No debe** usar la misma base de datos en dos dispositivos.";
/* No comment provided by engineer. */
"You accepted connection" = "Has aceptado la conexión";
@@ -3836,6 +4178,9 @@
/* No comment provided by engineer. */
"you are observer" = "Tu rol es observador";
/* snd group event chat item */
"you blocked %@" = "has bloqueado a %@";
/* No comment provided by engineer. */
"You can accept calls from lock screen, without device and app authentication." = "Puede aceptar llamadas desde la pantalla de bloqueo, sin autenticación de dispositivos y aplicaciones.";
@@ -3848,6 +4193,9 @@
/* No comment provided by engineer. */
"You can enable them later via app Privacy & Security settings." = "Puedes activarlos más tarde en la configuración de Privacidad y Seguridad.";
/* No comment provided by engineer. */
"You can give another try." = "Puede intentarlo de nuevo.";
/* No comment provided by engineer. */
"You can hide or mute a user profile - swipe it to the right." = "Puedes ocultar o silenciar un perfil deslizándolo a la derecha.";
@@ -3947,6 +4295,9 @@
/* chat list item description */
"you shared one-time link incognito" = "has compartido enlace de un solo uso en modo incógnito";
/* snd group event chat item */
"you unblocked %@" = "has desbloqueado a %@";
/* No comment provided by engineer. */
"You will be connected to group when the group host's device is online, please wait or check later!" = "Te conectarás al grupo cuando el dispositivo del anfitrión esté en línea, por favor espera o compruébalo más tarde.";
+1 -1
View File
@@ -2046,7 +2046,7 @@
/* copied message info */
"Moderated at: %@" = "Moderoitu klo: %@";
/* No comment provided by engineer. */
/* marked deleted chat item preview text */
"moderated by %@" = "%@ moderoi";
/* time unit */
+271 -13
View File
@@ -85,6 +85,9 @@
/* No comment provided by engineer. */
"**Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app)." = "**Confidentiel** : ne pas utiliser le serveur de notifications SimpleX, vérification de nouveaux messages periodiquement en arrière plan (dépend de l'utilisation de l'app).";
/* No comment provided by engineer. */
"**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." = "**Remarque**: l'utilisation de la même base de données sur deux appareils interrompt le déchiffrement des messages provenant de vos connexions, par mesure de sécurité.";
/* No comment provided by engineer. */
"**Please note**: you will NOT be able to recover or change passphrase if you lose it." = "**Veuillez noter** : vous NE pourrez PAS récupérer ou modifier votre phrase secrète si vous la perdez.";
@@ -94,6 +97,9 @@
/* No comment provided by engineer. */
"**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Avertissement** : les notifications push instantanées nécessitent une phrase secrète enregistrée dans la keychain.";
/* No comment provided by engineer. */
"**Warning**: the archive will be removed." = "**Avertissement**: l'archive sera supprimée.";
/* No comment provided by engineer. */
"*bold*" = "\\*gras*";
@@ -136,6 +142,9 @@
/* No comment provided by engineer. */
"%@ connected" = "%@ connecté(e)";
/* No comment provided by engineer. */
"%@ downloaded" = "%@ téléchargé";
/* notification title */
"%@ is connected!" = "%@ est connecté·e !";
@@ -148,6 +157,9 @@
/* No comment provided by engineer. */
"%@ servers" = "Serveurs %@";
/* No comment provided by engineer. */
"%@ uploaded" = "%@ envoyé";
/* notification title */
"%@ wants to connect!" = "%@ veut se connecter !";
@@ -202,6 +214,9 @@
/* No comment provided by engineer. */
"%lld messages blocked" = "%lld messages bloqués";
/* No comment provided by engineer. */
"%lld messages blocked by admin" = "%lld messages bloqués par l'administrateur";
/* No comment provided by engineer. */
"%lld messages marked deleted" = "%lld messages marqués comme supprimés";
@@ -374,6 +389,9 @@
/* member role */
"admin" = "admin";
/* No comment provided by engineer. */
"Admins can block a member for all." = "Les admins peuvent bloquer un membre pour tous.";
/* No comment provided by engineer. */
"Admins can create the links to join groups." = "Les admins peuvent créer les liens qui permettent de rejoindre les groupes.";
@@ -381,10 +399,10 @@
"Advanced network settings" = "Paramètres réseau avancés";
/* chat item text */
"agreeing encryption for %@…" = "accord sur le chiffrement pour %@…";
"agreeing encryption for %@…" = "négociation du chiffrement avec %@…";
/* chat item text */
"agreeing encryption…" = "accord sur le chiffrement…";
"agreeing encryption…" = "négociation du chiffrement…";
/* No comment provided by engineer. */
"All app data is deleted." = "Toutes les données de l'application sont supprimées.";
@@ -413,6 +431,9 @@
/* No comment provided by engineer. */
"All your contacts will remain connected. Profile update will be sent to your contacts." = "Tous vos contacts resteront connectés. La mise à jour du profil sera envoyée à vos contacts.";
/* No comment provided by engineer. */
"All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." = "Tous vos contacts, conversations et fichiers seront chiffrés en toute sécurité et transférés par morceaux vers les relais XFTP configurés.";
/* No comment provided by engineer. */
"Allow" = "Autoriser";
@@ -494,6 +515,9 @@
/* No comment provided by engineer. */
"App build: %@" = "Build de l'app : %@";
/* No comment provided by engineer. */
"App data migration" = "Transfert des données de l'application";
/* No comment provided by engineer. */
"App encrypts new local files (except videos)." = "L'application chiffre les nouveaux fichiers locaux (sauf les vidéos).";
@@ -515,6 +539,15 @@
/* No comment provided by engineer. */
"Appearance" = "Apparence";
/* No comment provided by engineer. */
"Apply" = "Appliquer";
/* No comment provided by engineer. */
"Archive and upload" = "Archiver et transférer";
/* No comment provided by engineer. */
"Archiving database" = "Archivage de la base de données";
/* No comment provided by engineer. */
"Attach" = "Attacher";
@@ -584,6 +617,9 @@
/* No comment provided by engineer. */
"Block" = "Bloquer";
/* No comment provided by engineer. */
"Block for all" = "Bloqué pour tous";
/* No comment provided by engineer. */
"Block group members" = "Bloquer des membres d'un groupe";
@@ -591,11 +627,23 @@
"Block member" = "Bloquer ce membre";
/* No comment provided by engineer. */
"Block member?" = "Bloquer ce membre ?";
"Block member for all?" = "Bloquer le membre pour tous?";
/* No comment provided by engineer. */
"Block member?" = "Bloquer ce membre ?";
/* marked deleted chat item preview text */
"blocked" = "blocké";
/* rcv group event chat item */
"blocked %@" = "%@ bloqué";
/* marked deleted chat item preview text */
"blocked by admin" = "bloqué par l'administrateur";
/* No comment provided by engineer. */
"Blocked by admin" = "Bloqué par l'administrateur";
/* No comment provided by engineer. */
"bold" = "gras";
@@ -647,6 +695,9 @@
/* No comment provided by engineer. */
"Cancel" = "Annuler";
/* No comment provided by engineer. */
"Cancel migration" = "Annuler le transfert";
/* feature offered item */
"cancelled %@" = "annulé %@";
@@ -688,7 +739,7 @@
"Change self-destruct passcode" = "Modifier le code d'autodestruction";
/* chat item text */
"changed address for you" = "adresse modifiée pour vous";
"changed address for you" = "changement de l'adresse du contact";
/* rcv group event chat item */
"changed role of %@ to %@" = "a modifié le rôle de %1$@ pour %2$@";
@@ -726,6 +777,9 @@
/* No comment provided by engineer. */
"Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat." = "Le chat est arrêté. Si vous avez déjà utilisé cette base de données sur un autre appareil, vous devez la transférer à nouveau avant de démarrer le chat.";
/* No comment provided by engineer. */
"Chat migrated!" = "Messagerie transférée!";
/* No comment provided by engineer. */
"Chat preferences" = "Préférences de chat";
@@ -738,6 +792,9 @@
/* No comment provided by engineer. */
"Chinese and Spanish interface" = "Interface en chinois et en espagnol";
/* No comment provided by engineer. */
"Choose _Migrate from another device_ on the new device and scan QR code." = "Choisissez _Transferer depuis un autre appareil_ sur le nouvel appareil et scannez le code QR.";
/* No comment provided by engineer. */
"Choose file" = "Choisir le fichier";
@@ -783,6 +840,9 @@
/* No comment provided by engineer. */
"Confirm database upgrades" = "Confirmer la mise à niveau de la base de données";
/* No comment provided by engineer. */
"Confirm network settings" = "Confirmer les paramètres réseau";
/* No comment provided by engineer. */
"Confirm new passphrase…" = "Confirmer la nouvelle phrase secrète…";
@@ -792,6 +852,12 @@
/* No comment provided by engineer. */
"Confirm password" = "Confirmer le mot de passe";
/* No comment provided by engineer. */
"Confirm that you remember database passphrase to migrate it." = "Confirmer que vous vous souvenez de la phrase secrète de la base de données pour la transférer.";
/* No comment provided by engineer. */
"Confirm upload" = "Confirmer la transmission";
/* server test step */
"Connect" = "Se connecter";
@@ -949,7 +1015,7 @@
"Create a group using a random profile." = "Création de groupes via un profil aléatoire.";
/* No comment provided by engineer. */
"Create an address to let people connect with you." = "Créez une adresse pour permettre aux gens de vous contacter.";
"Create an address to let people connect with you." = "Vous pouvez créer une adresse pour permettre aux autres utilisateurs de vous contacter.";
/* server test step */
"Create file" = "Créer un fichier";
@@ -990,6 +1056,9 @@
/* No comment provided by engineer. */
"Created on %@" = "Créé le %@";
/* No comment provided by engineer. */
"Creating archive link" = "Création d'un lien d'archive";
/* No comment provided by engineer. */
"Creating link…" = "Création d'un lien…";
@@ -1137,6 +1206,9 @@
/* No comment provided by engineer. */
"Delete database" = "Supprimer la base de données";
/* No comment provided by engineer. */
"Delete database from this device" = "Supprimer la base de données de cet appareil";
/* server test step */
"Delete file" = "Supprimer le fichier";
@@ -1329,9 +1401,18 @@
/* No comment provided by engineer. */
"Downgrade and open chat" = "Rétrograder et ouvrir le chat";
/* No comment provided by engineer. */
"Download failed" = "Échec du téléchargement";
/* server test step */
"Download file" = "Télécharger le fichier";
/* No comment provided by engineer. */
"Downloading archive" = "Téléchargement de l'archive";
/* No comment provided by engineer. */
"Downloading link details" = "Téléchargement des détails du lien";
/* No comment provided by engineer. */
"Duplicate display name!" = "Nom d'affichage en double !";
@@ -1365,6 +1446,9 @@
/* No comment provided by engineer. */
"Enable for all" = "Activer pour tous";
/* No comment provided by engineer. */
"Enable in direct chats (BETA)!" = "Activer dans les conversations directes (BETA)!";
/* No comment provided by engineer. */
"Enable instant notifications?" = "Activer les notifications instantanées?";
@@ -1479,6 +1563,9 @@
/* No comment provided by engineer. */
"Enter Passcode" = "Entrer le code d'accès";
/* No comment provided by engineer. */
"Enter passphrase" = "Entrer la phrase secrète";
/* No comment provided by engineer. */
"Enter passphrase…" = "Entrez la phrase secrète…";
@@ -1518,6 +1605,9 @@
/* No comment provided by engineer. */
"Error adding member(s)" = "Erreur lors de l'ajout de membre·s";
/* No comment provided by engineer. */
"Error allowing contact PQ encryption" = "Erreur lors de la négociation du chiffrement PQ";
/* No comment provided by engineer. */
"Error changing address" = "Erreur de changement d'adresse";
@@ -1572,6 +1662,9 @@
/* No comment provided by engineer. */
"Error deleting user profile" = "Erreur lors de la suppression du profil utilisateur";
/* No comment provided by engineer. */
"Error downloading the archive" = "Erreur lors du téléchargement de l'archive";
/* No comment provided by engineer. */
"Error enabling delivery receipts!" = "Erreur lors de l'activation des accusés de réception!";
@@ -1617,6 +1710,9 @@
/* No comment provided by engineer. */
"Error saving passphrase to keychain" = "Erreur lors de l'enregistrement de la phrase de passe dans la keychain";
/* when migrating */
"Error saving settings" = "Erreur lors de l'enregistrement des paramètres";
/* No comment provided by engineer. */
"Error saving user password" = "Erreur d'enregistrement du mot de passe de l'utilisateur";
@@ -1659,6 +1755,12 @@
/* No comment provided by engineer. */
"Error updating user privacy" = "Erreur de mise à jour de la confidentialité de l'utilisateur";
/* No comment provided by engineer. */
"Error uploading the archive" = "Erreur lors de l'envoi de l'archive";
/* No comment provided by engineer. */
"Error verifying passphrase:" = "Erreur lors de la vérification de la phrase secrète:";
/* No comment provided by engineer. */
"Error: " = "Erreur : ";
@@ -1681,7 +1783,7 @@
"Exit without saving" = "Quitter sans enregistrer";
/* chat item action */
"Expand" = "Développer";
"Expand" = "Étendre";
/* No comment provided by engineer. */
"Export database" = "Exporter la base de données";
@@ -1692,6 +1794,9 @@
/* No comment provided by engineer. */
"Exported database archive." = "Archive de la base de données exportée.";
/* No comment provided by engineer. */
"Exported file doesn't exist" = "Le fichier exporté n'existe pas";
/* No comment provided by engineer. */
"Exporting database archive…" = "Exportation de l'archive de la base de données…";
@@ -1734,6 +1839,12 @@
/* No comment provided by engineer. */
"Filter unread and favorite chats." = "Filtrer les messages non lus et favoris.";
/* No comment provided by engineer. */
"Finalize migration" = "Finaliser le transfert";
/* No comment provided by engineer. */
"Finalize migration on another device." = "Finalisez le transfert sur l'autre appareil.";
/* No comment provided by engineer. */
"Finally, we have them! 🚀" = "Enfin, les voilà ! 🚀";
@@ -1917,6 +2028,9 @@
/* No comment provided by engineer. */
"How to use your servers" = "Comment utiliser vos serveurs";
/* No comment provided by engineer. */
"Hungarian interface" = "Interface en hongrois";
/* No comment provided by engineer. */
"ICE servers (one per line)" = "Serveurs ICE (un par ligne)";
@@ -1956,6 +2070,12 @@
/* No comment provided by engineer. */
"Import database" = "Importer la base de données";
/* No comment provided by engineer. */
"Import failed" = "Échec de l'importation";
/* No comment provided by engineer. */
"Importing archive" = "Importation de l'archive";
/* No comment provided by engineer. */
"Improved message delivery" = "Amélioration de la transmission des messages";
@@ -1965,6 +2085,9 @@
/* No comment provided by engineer. */
"Improved server configuration" = "Configuration de serveur améliorée";
/* No comment provided by engineer. */
"In order to continue, chat should be stopped." = "Pour continuer, le chat doit être interrompu.";
/* No comment provided by engineer. */
"In reply to" = "En réponse à";
@@ -2049,6 +2172,9 @@
/* No comment provided by engineer. */
"Invalid link" = "Lien invalide";
/* No comment provided by engineer. */
"Invalid migration confirmation" = "Confirmation de migration invalide";
/* No comment provided by engineer. */
"Invalid name!" = "Nom invalide !";
@@ -2313,6 +2439,9 @@
/* No comment provided by engineer. */
"Message text" = "Texte du message";
/* No comment provided by engineer. */
"Message too large" = "Message trop volumineux";
/* No comment provided by engineer. */
"Messages" = "Messages";
@@ -2322,9 +2451,36 @@
/* No comment provided by engineer. */
"Messages from %@ will be shown!" = "Les messages de %@ seront affichés !";
/* No comment provided by engineer. */
"Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." = "Les messages, fichiers et appels sont protégés par un chiffrement **de bout en bout** avec une confidentialité persistante, une répudiation et une récupération en cas d'effraction.";
/* No comment provided by engineer. */
"Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." = "Les messages, fichiers et appels sont protégés par un chiffrement **e2e résistant post-quantique** avec une confidentialité persistante, une répudiation et une récupération en cas d'effraction.";
/* No comment provided by engineer. */
"Migrate device" = "Transférer l'appareil";
/* No comment provided by engineer. */
"Migrate from another device" = "Transférer depuis un autre appareil";
/* No comment provided by engineer. */
"Migrate here" = "Transférer ici";
/* No comment provided by engineer. */
"Migrate to another device" = "Transférer vers un autre appareil";
/* No comment provided by engineer. */
"Migrate to another device via QR code." = "Transférer vers un autre appareil via un code QR.";
/* No comment provided by engineer. */
"Migrating" = "Transfert";
/* No comment provided by engineer. */
"Migrating database archive…" = "Migration de l'archive de la base de données…";
/* No comment provided by engineer. */
"Migration complete" = "Transfert terminé";
/* No comment provided by engineer. */
"Migration error:" = "Erreur de migration:";
@@ -2355,7 +2511,7 @@
/* copied message info */
"Moderated at: %@" = "Modéré à : %@";
/* No comment provided by engineer. */
/* marked deleted chat item preview text */
"moderated by %@" = "modéré par %@";
/* time unit */
@@ -2582,6 +2738,9 @@
/* No comment provided by engineer. */
"Open group" = "Ouvrir le groupe";
/* authentication reason */
"Open migration to another device" = "Ouvrir le transfert vers un autre appareil";
/* No comment provided by engineer. */
"Open Settings" = "Ouvrir les Paramètres";
@@ -2594,9 +2753,15 @@
/* No comment provided by engineer. */
"Opening app…" = "Ouverture de l'app…";
/* No comment provided by engineer. */
"Or paste archive link" = "Ou coller le lien de l'archive";
/* No comment provided by engineer. */
"Or scan QR code" = "Ou scanner le code QR";
/* No comment provided by engineer. */
"Or securely share this file link" = "Ou partagez en toute sécurité le lien de ce fichier";
/* No comment provided by engineer. */
"Or show this code" = "Ou présenter ce code";
@@ -2648,6 +2813,9 @@
/* message decrypt error item */
"Permanent decryption error" = "Erreur de déchiffrement";
/* No comment provided by engineer. */
"Picture-in-picture calls" = "Appels picture-in-picture";
/* No comment provided by engineer. */
"PING count" = "Nombre de PING";
@@ -2666,6 +2834,9 @@
/* No comment provided by engineer. */
"Please check yours and your contact preferences." = "Veuillez vérifier vos préférences ainsi que celles de votre contact.";
/* No comment provided by engineer. */
"Please confirm that network settings are correct for this device." = "Veuillez confirmer que les paramètres réseau de cet appareil sont corrects.";
/* No comment provided by engineer. */
"Please contact developers.\nError: %@" = "Veuillez contacter les développeurs.\nErreur: %@";
@@ -2699,6 +2870,9 @@
/* server test error */
"Possibly, certificate fingerprint in server address is incorrect" = "Il est possible que l'empreinte du certificat dans l'adresse du serveur soit incorrecte";
/* No comment provided by engineer. */
"Post-quantum E2EE" = "E2EE post-quantique";
/* No comment provided by engineer. */
"Preserve the last message draft, with attachments." = "Conserver le brouillon du dernier message, avec les pièces jointes.";
@@ -2780,6 +2954,15 @@
/* No comment provided by engineer. */
"Push notifications" = "Notifications push";
/* No comment provided by engineer. */
"Push server" = "Serveur Push";
/* chat item text */
"quantum resistant e2e encryption" = "chiffrement e2e résistant post-quantique";
/* No comment provided by engineer. */
"Quantum resistant encryption" = "Chiffrement résistant post-quantique";
/* No comment provided by engineer. */
"Rate the app" = "Évaluer l'app";
@@ -2915,9 +3098,18 @@
/* No comment provided by engineer. */
"Repeat connection request?" = "Répéter la demande de connexion ?";
/* No comment provided by engineer. */
"Repeat download" = "Répéter le téléchargement";
/* No comment provided by engineer. */
"Repeat import" = "Répéter l'importation";
/* No comment provided by engineer. */
"Repeat join request?" = "Répéter la requête d'adhésion ?";
/* No comment provided by engineer. */
"Repeat upload" = "Répéter l'envoi";
/* chat item action */
"Reply" = "Répondre";
@@ -2975,6 +3167,9 @@
/* No comment provided by engineer. */
"Run chat" = "Exécuter le chat";
/* No comment provided by engineer. */
"Safer groups" = "Groupes plus sûrs";
/* chat item action */
"Save" = "Enregistrer";
@@ -3207,14 +3402,17 @@
"Set it instead of system authentication." = "Il permet de remplacer l'authentification du système.";
/* profile update event chat item */
"set new contact address" = "définir une nouvelle adresse de contact";
"set new contact address" = "a changé d'adresse de contact";
/* profile update event chat item */
"set new profile picture" = "définir une nouvelle image de profil";
"set new profile picture" = "a changé d'image de profil";
/* No comment provided by engineer. */
"Set passcode" = "Définir le code d'accès";
/* No comment provided by engineer. */
"Set passphrase" = "Définir une phrase secrète";
/* No comment provided by engineer. */
"Set passphrase to export" = "Définir la phrase secrète pour l'export";
@@ -3258,7 +3456,10 @@
"Show last messages" = "Voir les derniers messages";
/* No comment provided by engineer. */
"Show preview" = "Montrer l'aperçu";
"Show preview" = "Afficher l'aperçu";
/* No comment provided by engineer. */
"Show QR code" = "Afficher le code QR";
/* No comment provided by engineer. */
"Show:" = "Afficher :";
@@ -3320,6 +3521,9 @@
/* notification title */
"Somebody" = "Quelqu'un";
/* chat item text */
"standard end-to-end encryption" = "chiffrement de bout en bout standard";
/* No comment provided by engineer. */
"Start chat" = "Démarrer le chat";
@@ -3335,6 +3539,9 @@
/* No comment provided by engineer. */
"Stop" = "Arrêter";
/* No comment provided by engineer. */
"Stop chat" = "Arrêter le chat";
/* No comment provided by engineer. */
"Stop chat to enable database actions" = "Arrêter le chat pour permettre des actions sur la base de données";
@@ -3362,6 +3569,9 @@
/* authentication reason */
"Stop SimpleX" = "Arrêter SimpleX";
/* No comment provided by engineer. */
"Stopping chat" = "Arrêt du chat";
/* No comment provided by engineer. */
"strike" = "barré";
@@ -3512,6 +3722,12 @@
/* No comment provided by engineer. */
"This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." = "Cette action ne peut être annulée - votre profil, vos contacts, vos messages et vos fichiers seront irréversiblement perdus.";
/* E2EE info chat item */
"This chat is protected by end-to-end encryption." = "Cette discussion est protégée par un chiffrement de bout en bout.";
/* E2EE info chat item */
"This chat is protected by quantum resistant end-to-end encryption." = "Cette discussion est protégée par un chiffrement de bout en bout résistant aux technologies quantiques.";
/* notification title */
"this contact" = "ce contact";
@@ -3596,12 +3812,21 @@
/* No comment provided by engineer. */
"Unblock" = "Débloquer";
/* No comment provided by engineer. */
"Unblock for all" = "Débloquer pour tous";
/* No comment provided by engineer. */
"Unblock member" = "Débloquer ce membre";
/* No comment provided by engineer. */
"Unblock member for all?" = "Débloquer le membre pour tous?";
/* No comment provided by engineer. */
"Unblock member?" = "Débloquer ce membre ?";
/* rcv group event chat item */
"unblocked %@" = "%@ débloqué";
/* item status description */
"Unexpected error: %@" = "Erreur inattendue: %@";
@@ -3695,9 +3920,15 @@
/* No comment provided by engineer. */
"Upgrade and open chat" = "Mettre à niveau et ouvrir le chat";
/* No comment provided by engineer. */
"Upload failed" = "Échec de l'envoi";
/* server test step */
"Upload file" = "Transférer le fichier";
/* No comment provided by engineer. */
"Uploading archive" = "Envoi de l'archive";
/* No comment provided by engineer. */
"Use .onion hosts" = "Utiliser les hôtes .onions";
@@ -3728,6 +3959,9 @@
/* No comment provided by engineer. */
"Use SimpleX Chat servers?" = "Utiliser les serveurs SimpleX Chat?";
/* No comment provided by engineer. */
"Use the app while in the call." = "Utiliser l'application pendant l'appel.";
/* No comment provided by engineer. */
"User profile" = "Profil d'utilisateur";
@@ -3735,7 +3969,7 @@
"Using .onion hosts requires compatible VPN provider." = "L'utilisation des hôtes .onion nécessite un fournisseur VPN compatible.";
/* No comment provided by engineer. */
"Using SimpleX Chat servers." = "Utilisation des serveurs SimpleX Chat.";
"Using SimpleX Chat servers." = "Vous utilisez les serveurs SimpleX.";
/* No comment provided by engineer. */
"v%@" = "v%@";
@@ -3755,6 +3989,12 @@
/* No comment provided by engineer. */
"Verify connections" = "Vérifier les connexions";
/* No comment provided by engineer. */
"Verify database passphrase" = "Vérifier la phrase secrète de la base de données";
/* No comment provided by engineer. */
"Verify passphrase" = "Vérifier la phrase secrète";
/* No comment provided by engineer. */
"Verify security code" = "Vérifier le code de sécurité";
@@ -3833,6 +4073,9 @@
/* No comment provided by engineer. */
"wants to connect to you!" = "veut établir une connexion !";
/* No comment provided by engineer. */
"Warning: starting chat on multiple devices is not supported and will cause message delivery failures" = "Attention: démarrer une session de chat sur plusieurs appareils n'est pas pris en charge et entraînera des dysfonctionnements au niveau de la transmission des messages";
/* No comment provided by engineer. */
"Warning: you may lose some data!" = "Attention : vous risquez de perdre des données !";
@@ -3848,6 +4091,9 @@
/* No comment provided by engineer. */
"Welcome message" = "Message de bienvenue";
/* No comment provided by engineer. */
"Welcome message is too long" = "Le message de bienvenue est trop long";
/* No comment provided by engineer. */
"What's new" = "Quoi de neuf ?";
@@ -3855,7 +4101,7 @@
"When available" = "Quand disponible";
/* No comment provided by engineer. */
"When people request to connect, you can accept or reject it." = "Lorsque des personnes demandent à se connecter, vous pouvez les accepter ou les refuser.";
"When people request to connect, you can accept or reject it." = "Vous pouvez accepter ou refuser les demandes de contacts.";
/* No comment provided by engineer. */
"When you share an incognito profile with somebody, this profile will be used for the groups they invite you to." = "Lorsque vous partagez un profil incognito avec quelqu'un, ce profil sera utilisé pour les groupes auxquels il vous invite.";
@@ -3884,6 +4130,9 @@
/* No comment provided by engineer. */
"You" = "Vous";
/* No comment provided by engineer. */
"You **must not** use the same database on two devices." = "Vous **ne devez pas** utiliser la même base de données sur deux appareils.";
/* No comment provided by engineer. */
"You accepted connection" = "Vous avez accepté la connexion";
@@ -3929,6 +4178,9 @@
/* No comment provided by engineer. */
"you are observer" = "vous êtes observateur";
/* snd group event chat item */
"you blocked %@" = "vous avez bloqué %@";
/* No comment provided by engineer. */
"You can accept calls from lock screen, without device and app authentication." = "Vous pouvez accepter des appels à partir de l'écran de verrouillage, sans authentification de l'appareil ou de l'application.";
@@ -3941,6 +4193,9 @@
/* No comment provided by engineer. */
"You can enable them later via app Privacy & Security settings." = "Vous pouvez les activer ultérieurement via les paramètres de Confidentialité et Sécurité de l'application.";
/* No comment provided by engineer. */
"You can give another try." = "Vous pouvez faire un nouvel essai.";
/* No comment provided by engineer. */
"You can hide or mute a user profile - swipe it to the right." = "Vous pouvez masquer ou mettre en sourdine un profil d'utilisateur - faites-le glisser vers la droite.";
@@ -3960,7 +4215,7 @@
"You can share this address with your contacts to let them connect with **%@**." = "Vous pouvez partager cette adresse avec vos contacts pour leur permettre de se connecter avec **%@**.";
/* No comment provided by engineer. */
"You can share your address as a link or QR code - anybody can connect to you." = "Vous pouvez partager votre adresse sous forme de lien ou de code QR - n'importe qui pourra se connecter à vous.";
"You can share your address as a link or QR code - anybody can connect to you." = "Vous pouvez partager votre adresse sous la forme d'un lien ou d'un code QR - tout le monde peut l'utiliser pour vous contacter.";
/* No comment provided by engineer. */
"You can start chat via app Settings / Database or by restarting the app" = "Vous pouvez lancer le chat via Paramètres / Base de données ou en redémarrant l'app";
@@ -4040,6 +4295,9 @@
/* chat list item description */
"you shared one-time link incognito" = "vous avez partagé un lien unique en incognito";
/* snd group event chat item */
"you unblocked %@" = "vous avez débloqué %@";
/* No comment provided by engineer. */
"You will be connected to group when the group host's device is online, please wait or check later!" = "Vous serez connecté·e au groupe lorsque l'appareil de l'hôte sera en ligne, veuillez attendre ou vérifier plus tard !";
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,18 @@
/* Bundle name */
"CFBundleName" = "SimpleX";
/* Privacy - Camera Usage Description */
"NSCameraUsageDescription" = "A SimpleX-nek kamera-hozzáférésre van szüksége a QR-kódok beolvasásához, hogy csatlakozhasson más felhasználókhoz és videohívásokhoz.";
/* Privacy - Face ID Usage Description */
"NSFaceIDUsageDescription" = "A SimpleX Face ID-t használ a helyi hitelesítéshez";
/* Privacy - Local Network Usage Description */
"NSLocalNetworkUsageDescription" = "A SimpleX helyi hálózati hozzáférést használ, hogy lehetővé tegye a felhasználói csevegőprofil használatát számítógépen keresztül ugyanazon a hálózaton.";
/* Privacy - Microphone Usage Description */
"NSMicrophoneUsageDescription" = "A SimpleX-nek mikrofon-hozzáférésre van szüksége hang- és videohívásokhoz, valamint hangüzenetek rögzítéséhez.";
/* Privacy - Photo Library Additions Usage Description */
"NSPhotoLibraryAddUsageDescription" = "A SimpleX-nek hozzáférésre van szüksége a Galériához a rögzített és fogadott média mentéséhez";
+229 -4
View File
@@ -85,6 +85,9 @@
/* No comment provided by engineer. */
"**Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app)." = "**Il più privato**: non usare il server di notifica di SimpleX Chat, controlla i messaggi periodicamente in secondo piano (dipende da quanto spesso usi l'app).";
/* No comment provided by engineer. */
"**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." = "**Nota bene**: usare lo stesso database su due dispositivi bloccherà la decifrazione dei messaggi dalle tue connessioni, come misura di sicurezza.";
/* No comment provided by engineer. */
"**Please note**: you will NOT be able to recover or change passphrase if you lose it." = "**Nota bene**: NON potrai recuperare o cambiare la password se la perdi.";
@@ -94,6 +97,9 @@
/* No comment provided by engineer. */
"**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Attenzione**: le notifiche push istantanee richiedono una password salvata nel portachiavi.";
/* No comment provided by engineer. */
"**Warning**: the archive will be removed." = "**Attenzione**: l'archivio verrà rimosso.";
/* No comment provided by engineer. */
"*bold*" = "\\*grassetto*";
@@ -136,6 +142,9 @@
/* No comment provided by engineer. */
"%@ connected" = "%@ si è connesso/a";
/* No comment provided by engineer. */
"%@ downloaded" = "%@ scaricati";
/* notification title */
"%@ is connected!" = "%@ è connesso/a!";
@@ -148,6 +157,9 @@
/* No comment provided by engineer. */
"%@ servers" = "Server %@";
/* No comment provided by engineer. */
"%@ uploaded" = "%@ caricati";
/* notification title */
"%@ wants to connect!" = "%@ si vuole connettere!";
@@ -377,6 +389,9 @@
/* member role */
"admin" = "amministratore";
/* No comment provided by engineer. */
"Admins can block a member for all." = "Gli amministratori possono bloccare un membro per tutti.";
/* No comment provided by engineer. */
"Admins can create the links to join groups." = "Gli amministratori possono creare i link per entrare nei gruppi.";
@@ -416,6 +431,9 @@
/* No comment provided by engineer. */
"All your contacts will remain connected. Profile update will be sent to your contacts." = "Tutti i tuoi contatti resteranno connessi. L'aggiornamento del profilo verrà inviato ai tuoi contatti.";
/* No comment provided by engineer. */
"All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." = "Tutti i tuoi contatti, le conversazioni e i file verranno criptati in modo sicuro e caricati in blocchi sui relay XFTP configurati.";
/* No comment provided by engineer. */
"Allow" = "Consenti";
@@ -497,6 +515,9 @@
/* No comment provided by engineer. */
"App build: %@" = "Build dell'app: %@";
/* No comment provided by engineer. */
"App data migration" = "Migrazione dati dell'app";
/* No comment provided by engineer. */
"App encrypts new local files (except videos)." = "L'app cripta i nuovi file locali (eccetto i video).";
@@ -518,6 +539,15 @@
/* No comment provided by engineer. */
"Appearance" = "Aspetto";
/* No comment provided by engineer. */
"Apply" = "Applica";
/* No comment provided by engineer. */
"Archive and upload" = "Archivia e carica";
/* No comment provided by engineer. */
"Archiving database" = "Archiviazione del database";
/* No comment provided by engineer. */
"Attach" = "Allega";
@@ -602,13 +632,13 @@
/* No comment provided by engineer. */
"Block member?" = "Bloccare il membro?";
/* No comment provided by engineer. */
/* marked deleted chat item preview text */
"blocked" = "bloccato";
/* rcv group event chat item */
"blocked %@" = "ha bloccato %@";
/* blocked chat item */
/* marked deleted chat item preview text */
"blocked by admin" = "bloccato dall'amministratore";
/* No comment provided by engineer. */
@@ -665,6 +695,9 @@
/* No comment provided by engineer. */
"Cancel" = "Annulla";
/* No comment provided by engineer. */
"Cancel migration" = "Annulla migrazione";
/* feature offered item */
"cancelled %@" = "annullato %@";
@@ -744,6 +777,9 @@
/* No comment provided by engineer. */
"Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat." = "La chat è ferma. Se hai già usato questo database su un altro dispositivo, dovresti trasferirlo prima di avviare la chat.";
/* No comment provided by engineer. */
"Chat migrated!" = "Chat migrata!";
/* No comment provided by engineer. */
"Chat preferences" = "Preferenze della chat";
@@ -756,6 +792,9 @@
/* No comment provided by engineer. */
"Chinese and Spanish interface" = "Interfaccia cinese e spagnola";
/* No comment provided by engineer. */
"Choose _Migrate from another device_ on the new device and scan QR code." = "Scegli _Migra da un altro dispositivo_ sul nuovo dispositivo e scansione il codice QR.";
/* No comment provided by engineer. */
"Choose file" = "Scegli file";
@@ -801,6 +840,9 @@
/* No comment provided by engineer. */
"Confirm database upgrades" = "Conferma aggiornamenti database";
/* No comment provided by engineer. */
"Confirm network settings" = "Conferma le impostazioni di rete";
/* No comment provided by engineer. */
"Confirm new passphrase…" = "Conferma nuova password…";
@@ -810,6 +852,12 @@
/* No comment provided by engineer. */
"Confirm password" = "Conferma password";
/* No comment provided by engineer. */
"Confirm that you remember database passphrase to migrate it." = "Conferma che ricordi la password del database da migrare.";
/* No comment provided by engineer. */
"Confirm upload" = "Conferma caricamento";
/* server test step */
"Connect" = "Connetti";
@@ -1008,6 +1056,9 @@
/* No comment provided by engineer. */
"Created on %@" = "Creato il %@";
/* No comment provided by engineer. */
"Creating archive link" = "Creazione link dell'archivio";
/* No comment provided by engineer. */
"Creating link…" = "Creazione link…";
@@ -1155,6 +1206,9 @@
/* No comment provided by engineer. */
"Delete database" = "Elimina database";
/* No comment provided by engineer. */
"Delete database from this device" = "Elimina il database da questo dispositivo";
/* server test step */
"Delete file" = "Elimina file";
@@ -1347,9 +1401,18 @@
/* No comment provided by engineer. */
"Downgrade and open chat" = "Esegui downgrade e apri chat";
/* No comment provided by engineer. */
"Download failed" = "Scaricamento fallito";
/* server test step */
"Download file" = "Scarica file";
/* No comment provided by engineer. */
"Downloading archive" = "Scaricamento archivio";
/* No comment provided by engineer. */
"Downloading link details" = "Scaricamento dettagli del link";
/* No comment provided by engineer. */
"Duplicate display name!" = "Nome da mostrare doppio!";
@@ -1383,6 +1446,9 @@
/* No comment provided by engineer. */
"Enable for all" = "Attiva per tutti";
/* No comment provided by engineer. */
"Enable in direct chats (BETA)!" = "Attivala nelle chat dirette (BETA)!";
/* No comment provided by engineer. */
"Enable instant notifications?" = "Attivare le notifiche istantanee?";
@@ -1497,6 +1563,9 @@
/* No comment provided by engineer. */
"Enter Passcode" = "Inserisci il codice di accesso";
/* No comment provided by engineer. */
"Enter passphrase" = "Inserisci password";
/* No comment provided by engineer. */
"Enter passphrase…" = "Inserisci la password…";
@@ -1536,6 +1605,9 @@
/* No comment provided by engineer. */
"Error adding member(s)" = "Errore di aggiunta membro/i";
/* No comment provided by engineer. */
"Error allowing contact PQ encryption" = "Errore nel consentire la crittografia PQ al contatto";
/* No comment provided by engineer. */
"Error changing address" = "Errore nella modifica dell'indirizzo";
@@ -1590,6 +1662,9 @@
/* No comment provided by engineer. */
"Error deleting user profile" = "Errore nell'eliminazione del profilo utente";
/* No comment provided by engineer. */
"Error downloading the archive" = "Errore di scaricamento dell'archivio";
/* No comment provided by engineer. */
"Error enabling delivery receipts!" = "Errore nell'attivazione delle ricevute di consegna!";
@@ -1635,6 +1710,9 @@
/* No comment provided by engineer. */
"Error saving passphrase to keychain" = "Errore nel salvataggio della password nel portachiavi";
/* when migrating */
"Error saving settings" = "Errore di salvataggio delle impostazioni";
/* No comment provided by engineer. */
"Error saving user password" = "Errore nel salvataggio della password utente";
@@ -1677,6 +1755,12 @@
/* No comment provided by engineer. */
"Error updating user privacy" = "Errore nell'aggiornamento della privacy dell'utente";
/* No comment provided by engineer. */
"Error uploading the archive" = "Errore di invio dell'archivio";
/* No comment provided by engineer. */
"Error verifying passphrase:" = "Errore di verifica della password:";
/* No comment provided by engineer. */
"Error: " = "Errore: ";
@@ -1710,6 +1794,9 @@
/* No comment provided by engineer. */
"Exported database archive." = "Archivio database esportato.";
/* No comment provided by engineer. */
"Exported file doesn't exist" = "Il file esportato non esiste";
/* No comment provided by engineer. */
"Exporting database archive…" = "Esportazione archivio database…";
@@ -1752,6 +1839,12 @@
/* No comment provided by engineer. */
"Filter unread and favorite chats." = "Filtra le chat non lette e preferite.";
/* No comment provided by engineer. */
"Finalize migration" = "Finalizza la migrazione";
/* No comment provided by engineer. */
"Finalize migration on another device." = "Finalizza la migrazione su un altro dispositivo.";
/* No comment provided by engineer. */
"Finally, we have them! 🚀" = "Finalmente le abbiamo! 🚀";
@@ -1935,6 +2028,9 @@
/* No comment provided by engineer. */
"How to use your servers" = "Come usare i tuoi server";
/* No comment provided by engineer. */
"Hungarian interface" = "Interfaccia in ungherese";
/* No comment provided by engineer. */
"ICE servers (one per line)" = "Server ICE (uno per riga)";
@@ -1974,6 +2070,12 @@
/* No comment provided by engineer. */
"Import database" = "Importa database";
/* No comment provided by engineer. */
"Import failed" = "Importazione fallita";
/* No comment provided by engineer. */
"Importing archive" = "Importazione archivio";
/* No comment provided by engineer. */
"Improved message delivery" = "Consegna dei messaggi migliorata";
@@ -1983,6 +2085,9 @@
/* No comment provided by engineer. */
"Improved server configuration" = "Configurazione del server migliorata";
/* No comment provided by engineer. */
"In order to continue, chat should be stopped." = "Per continuare, la chat deve essere fermata.";
/* No comment provided by engineer. */
"In reply to" = "In risposta a";
@@ -2067,6 +2172,9 @@
/* No comment provided by engineer. */
"Invalid link" = "Link non valido";
/* No comment provided by engineer. */
"Invalid migration confirmation" = "Conferma di migrazione non valida";
/* No comment provided by engineer. */
"Invalid name!" = "Nome non valido!";
@@ -2331,6 +2439,9 @@
/* No comment provided by engineer. */
"Message text" = "Testo del messaggio";
/* No comment provided by engineer. */
"Message too large" = "Messaggio troppo grande";
/* No comment provided by engineer. */
"Messages" = "Messaggi";
@@ -2340,9 +2451,36 @@
/* No comment provided by engineer. */
"Messages from %@ will be shown!" = "I messaggi da %@ verranno mostrati!";
/* No comment provided by engineer. */
"Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." = "I messaggi, i file e le chiamate sono protetti da **crittografia end-to-end** con perfect forward secrecy, ripudio e recupero da intrusione.";
/* No comment provided by engineer. */
"Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." = "I messaggi, i file e le chiamate sono protetti da **crittografia e2e resistente alla quantistica** con perfect forward secrecy, ripudio e recupero da intrusione.";
/* No comment provided by engineer. */
"Migrate device" = "Migra dispositivo";
/* No comment provided by engineer. */
"Migrate from another device" = "Migra da un altro dispositivo";
/* No comment provided by engineer. */
"Migrate here" = "Migra qui";
/* No comment provided by engineer. */
"Migrate to another device" = "Migra ad un altro dispositivo";
/* No comment provided by engineer. */
"Migrate to another device via QR code." = "Migra ad un altro dispositivo via codice QR.";
/* No comment provided by engineer. */
"Migrating" = "Migrazione";
/* No comment provided by engineer. */
"Migrating database archive…" = "Migrazione archivio del database…";
/* No comment provided by engineer. */
"Migration complete" = "Migrazione completata";
/* No comment provided by engineer. */
"Migration error:" = "Errore di migrazione:";
@@ -2373,7 +2511,7 @@
/* copied message info */
"Moderated at: %@" = "Moderato il: %@";
/* No comment provided by engineer. */
/* marked deleted chat item preview text */
"moderated by %@" = "moderato da %@";
/* time unit */
@@ -2600,6 +2738,9 @@
/* No comment provided by engineer. */
"Open group" = "Apri gruppo";
/* authentication reason */
"Open migration to another device" = "Apri migrazione ad un altro dispositivo";
/* No comment provided by engineer. */
"Open Settings" = "Apri le impostazioni";
@@ -2612,9 +2753,15 @@
/* No comment provided by engineer. */
"Opening app…" = "Apertura dell'app…";
/* No comment provided by engineer. */
"Or paste archive link" = "O incolla il link dell'archivio";
/* No comment provided by engineer. */
"Or scan QR code" = "O scansiona il codice QR";
/* No comment provided by engineer. */
"Or securely share this file link" = "O condividi in modo sicuro questo link del file";
/* No comment provided by engineer. */
"Or show this code" = "O mostra questo codice";
@@ -2666,6 +2813,9 @@
/* message decrypt error item */
"Permanent decryption error" = "Errore di decifrazione";
/* No comment provided by engineer. */
"Picture-in-picture calls" = "Chiamate picture-in-picture";
/* No comment provided by engineer. */
"PING count" = "Conteggio PING";
@@ -2684,6 +2834,9 @@
/* No comment provided by engineer. */
"Please check yours and your contact preferences." = "Controlla le preferenze tue e del tuo contatto.";
/* No comment provided by engineer. */
"Please confirm that network settings are correct for this device." = "Conferma che le impostazioni di rete sono corrette per questo dispositivo.";
/* No comment provided by engineer. */
"Please contact developers.\nError: %@" = "Contatta gli sviluppatori.\nErrore: %@";
@@ -2717,6 +2870,9 @@
/* server test error */
"Possibly, certificate fingerprint in server address is incorrect" = "Probabilmente l'impronta del certificato nell'indirizzo del server è sbagliata";
/* No comment provided by engineer. */
"Post-quantum E2EE" = "E2EE post-quantistica";
/* No comment provided by engineer. */
"Preserve the last message draft, with attachments." = "Conserva la bozza dell'ultimo messaggio, con gli allegati.";
@@ -2798,6 +2954,15 @@
/* No comment provided by engineer. */
"Push notifications" = "Notifiche push";
/* No comment provided by engineer. */
"Push server" = "Server push";
/* chat item text */
"quantum resistant e2e encryption" = "crittografia e2e resistente alla quantistica";
/* No comment provided by engineer. */
"Quantum resistant encryption" = "Crittografia resistente alla quantistica";
/* No comment provided by engineer. */
"Rate the app" = "Valuta l'app";
@@ -2933,9 +3098,18 @@
/* No comment provided by engineer. */
"Repeat connection request?" = "Ripetere la richiesta di connessione?";
/* No comment provided by engineer. */
"Repeat download" = "Ripeti scaricamento";
/* No comment provided by engineer. */
"Repeat import" = "Ripeti importazione";
/* No comment provided by engineer. */
"Repeat join request?" = "Ripetere la richiesta di ingresso?";
/* No comment provided by engineer. */
"Repeat upload" = "Ripeti caricamento";
/* chat item action */
"Reply" = "Rispondi";
@@ -2993,6 +3167,9 @@
/* No comment provided by engineer. */
"Run chat" = "Avvia chat";
/* No comment provided by engineer. */
"Safer groups" = "Gruppi più sicuri";
/* chat item action */
"Save" = "Salva";
@@ -3233,6 +3410,9 @@
/* No comment provided by engineer. */
"Set passcode" = "Imposta codice";
/* No comment provided by engineer. */
"Set passphrase" = "Imposta password";
/* No comment provided by engineer. */
"Set passphrase to export" = "Imposta la password per esportare";
@@ -3278,6 +3458,9 @@
/* No comment provided by engineer. */
"Show preview" = "Mostra anteprima";
/* No comment provided by engineer. */
"Show QR code" = "Mostra codice QR";
/* No comment provided by engineer. */
"Show:" = "Mostra:";
@@ -3338,6 +3521,9 @@
/* notification title */
"Somebody" = "Qualcuno";
/* chat item text */
"standard end-to-end encryption" = "crittografia end-to-end standard";
/* No comment provided by engineer. */
"Start chat" = "Avvia chat";
@@ -3353,6 +3539,9 @@
/* No comment provided by engineer. */
"Stop" = "Ferma";
/* No comment provided by engineer. */
"Stop chat" = "Ferma la chat";
/* No comment provided by engineer. */
"Stop chat to enable database actions" = "Ferma la chat per attivare le azioni del database";
@@ -3380,6 +3569,9 @@
/* authentication reason */
"Stop SimpleX" = "Ferma SimpleX";
/* No comment provided by engineer. */
"Stopping chat" = "Arresto della chat";
/* No comment provided by engineer. */
"strike" = "barrato";
@@ -3530,6 +3722,12 @@
/* No comment provided by engineer. */
"This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." = "Questa azione non può essere annullata: il tuo profilo, i contatti, i messaggi e i file andranno persi in modo irreversibile.";
/* E2EE info chat item */
"This chat is protected by end-to-end encryption." = "Questa chat è protetta da crittografia end-to-end.";
/* E2EE info chat item */
"This chat is protected by quantum resistant end-to-end encryption." = "Questa chat è protetta da crittografia end-to-end resistente alla quantistica.";
/* notification title */
"this contact" = "questo contatto";
@@ -3722,9 +3920,15 @@
/* No comment provided by engineer. */
"Upgrade and open chat" = "Aggiorna e apri chat";
/* No comment provided by engineer. */
"Upload failed" = "Invio fallito";
/* server test step */
"Upload file" = "Invia file";
/* No comment provided by engineer. */
"Uploading archive" = "Invio dell'archivio";
/* No comment provided by engineer. */
"Use .onion hosts" = "Usa gli host .onion";
@@ -3755,6 +3959,9 @@
/* No comment provided by engineer. */
"Use SimpleX Chat servers?" = "Usare i server di SimpleX Chat?";
/* No comment provided by engineer. */
"Use the app while in the call." = "Usa l'app mentre sei in chiamata.";
/* No comment provided by engineer. */
"User profile" = "Profilo utente";
@@ -3782,6 +3989,12 @@
/* No comment provided by engineer. */
"Verify connections" = "Verifica le connessioni";
/* No comment provided by engineer. */
"Verify database passphrase" = "Verifica password del database";
/* No comment provided by engineer. */
"Verify passphrase" = "Verifica password";
/* No comment provided by engineer. */
"Verify security code" = "Verifica codice di sicurezza";
@@ -3860,6 +4073,9 @@
/* No comment provided by engineer. */
"wants to connect to you!" = "vuole connettersi con te!";
/* No comment provided by engineer. */
"Warning: starting chat on multiple devices is not supported and will cause message delivery failures" = "Attenzione: avviare la chat su più dispositivi non è supportato e provocherà problemi di recapito dei messaggi";
/* No comment provided by engineer. */
"Warning: you may lose some data!" = "Attenzione: potresti perdere alcuni dati!";
@@ -3875,6 +4091,9 @@
/* No comment provided by engineer. */
"Welcome message" = "Messaggio di benvenuto";
/* No comment provided by engineer. */
"Welcome message is too long" = "Il messaggio di benvenuto è troppo lungo";
/* No comment provided by engineer. */
"What's new" = "Novità";
@@ -3911,6 +4130,9 @@
/* No comment provided by engineer. */
"You" = "Tu";
/* No comment provided by engineer. */
"You **must not** use the same database on two devices." = "**Non devi** usare lo stesso database su due dispositivi.";
/* No comment provided by engineer. */
"You accepted connection" = "Hai accettato la connessione";
@@ -3971,6 +4193,9 @@
/* No comment provided by engineer. */
"You can enable them later via app Privacy & Security settings." = "Puoi attivarle più tardi nelle impostazioni di privacy e sicurezza dell'app.";
/* No comment provided by engineer. */
"You can give another try." = "Puoi fare un altro tentativo.";
/* No comment provided by engineer. */
"You can hide or mute a user profile - swipe it to the right." = "Puoi nascondere o silenziare un profilo utente - scorrilo verso destra.";
@@ -4155,7 +4380,7 @@
"Your profile" = "Il tuo profilo";
/* No comment provided by engineer. */
"Your profile **%@** will be shared." = "Il tuo profilo **%@** verrà condiviso.";
"Your profile **%@** will be shared." = "Verrà condiviso il tuo profilo **%@**.";
/* No comment provided by engineer. */
"Your profile is stored on your device and shared only with your contacts.\nSimpleX servers cannot see your profile." = "Il tuo profilo è memorizzato sul tuo dispositivo e condiviso solo con i tuoi contatti.\nI server di SimpleX non possono vedere il tuo profilo.";
+4 -1
View File
@@ -106,6 +106,9 @@
/* No comment provided by engineer. */
"%@ %@" = "%@ %@";
/* No comment provided by engineer. */
"%@ and %@" = "%@ と %@";
/* No comment provided by engineer. */
"%@ and %@ connected" = "%@ と %@ は接続中";
@@ -2061,7 +2064,7 @@
/* copied message info */
"Moderated at: %@" = "モデレーターによって介入済み: %@";
/* No comment provided by engineer. */
/* marked deleted chat item preview text */
"moderated by %@" = "%@ によってモデレートされた";
/* time unit */
+233 -8
View File
@@ -85,6 +85,9 @@
/* No comment provided by engineer. */
"**Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app)." = "**Meest privé**: gebruik geen SimpleX Chat-notificatie server, controleer berichten regelmatig op de achtergrond (afhankelijk van hoe vaak u de app gebruikt).";
/* No comment provided by engineer. */
"**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." = "**Let op**: als u dezelfde database op twee apparaten gebruikt, wordt de decodering van berichten van uw verbindingen verbroken, als veiligheidsmaatregel.";
/* No comment provided by engineer. */
"**Please note**: you will NOT be able to recover or change passphrase if you lose it." = "**Let op**: u kunt het wachtwoord NIET herstellen of wijzigen als u het kwijtraakt.";
@@ -94,6 +97,9 @@
/* No comment provided by engineer. */
"**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Waarschuwing**: voor directe push meldingen is een wachtwoord vereist dat is opgeslagen in de Keychain.";
/* No comment provided by engineer. */
"**Warning**: the archive will be removed." = "**Waarschuwing**: het archief wordt verwijderd.";
/* No comment provided by engineer. */
"*bold*" = "\\*vetgedrukt*";
@@ -136,6 +142,9 @@
/* No comment provided by engineer. */
"%@ connected" = "%@ verbonden";
/* No comment provided by engineer. */
"%@ downloaded" = "%@ gedownload";
/* notification title */
"%@ is connected!" = "%@ is verbonden!";
@@ -148,6 +157,9 @@
/* No comment provided by engineer. */
"%@ servers" = "%@ servers";
/* No comment provided by engineer. */
"%@ uploaded" = "%@ geüpload";
/* notification title */
"%@ wants to connect!" = "%@ wil verbinding maken!";
@@ -377,6 +389,9 @@
/* member role */
"admin" = "Beheerder";
/* No comment provided by engineer. */
"Admins can block a member for all." = "Beheerders kunnen een lid voor iedereen blokkeren.";
/* No comment provided by engineer. */
"Admins can create the links to join groups." = "Beheerders kunnen de uitnodiging links naar groepen aanmaken.";
@@ -416,6 +431,9 @@
/* No comment provided by engineer. */
"All your contacts will remain connected. Profile update will be sent to your contacts." = "Al uw contacten blijven verbonden. Profiel update wordt naar uw contacten verzonden.";
/* No comment provided by engineer. */
"All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." = "Al uw contacten, gesprekken en bestanden worden veilig gecodeerd en in delen geüpload naar geconfigureerde XFTP-relays.";
/* No comment provided by engineer. */
"Allow" = "Toestaan";
@@ -497,6 +515,9 @@
/* No comment provided by engineer. */
"App build: %@" = "App build: %@";
/* No comment provided by engineer. */
"App data migration" = "Migratie van app-gegevens";
/* No comment provided by engineer. */
"App encrypts new local files (except videos)." = "App versleutelt nieuwe lokale bestanden (behalve video's).";
@@ -518,6 +539,15 @@
/* No comment provided by engineer. */
"Appearance" = "Uiterlijk";
/* No comment provided by engineer. */
"Apply" = "Toepassen";
/* No comment provided by engineer. */
"Archive and upload" = "Archiveren en uploaden";
/* No comment provided by engineer. */
"Archiving database" = "Database archiveren";
/* No comment provided by engineer. */
"Attach" = "Bijvoegen";
@@ -602,13 +632,13 @@
/* No comment provided by engineer. */
"Block member?" = "Lid blokkeren?";
/* No comment provided by engineer. */
/* marked deleted chat item preview text */
"blocked" = "geblokkeerd";
/* rcv group event chat item */
"blocked %@" = "geblokkeerd %@";
/* blocked chat item */
/* marked deleted chat item preview text */
"blocked by admin" = "geblokkeerd door beheerder";
/* No comment provided by engineer. */
@@ -665,6 +695,9 @@
/* No comment provided by engineer. */
"Cancel" = "Annuleren";
/* No comment provided by engineer. */
"Cancel migration" = "Migratie annuleren";
/* feature offered item */
"cancelled %@" = "geannuleerd %@";
@@ -744,6 +777,9 @@
/* No comment provided by engineer. */
"Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat." = "Chat is gestopt. Als je deze database al op een ander apparaat hebt gebruikt, moet je deze terugzetten voordat je met chatten begint.";
/* No comment provided by engineer. */
"Chat migrated!" = "Chat gemigreerd!";
/* No comment provided by engineer. */
"Chat preferences" = "Gesprek voorkeuren";
@@ -756,6 +792,9 @@
/* No comment provided by engineer. */
"Chinese and Spanish interface" = "Chinese en Spaanse interface";
/* No comment provided by engineer. */
"Choose _Migrate from another device_ on the new device and scan QR code." = "Kies _Migreren vanaf een ander apparaat_ op het nieuwe apparaat en scan de QR-code.";
/* No comment provided by engineer. */
"Choose file" = "Kies bestand";
@@ -801,6 +840,9 @@
/* No comment provided by engineer. */
"Confirm database upgrades" = "Bevestig database upgrades";
/* No comment provided by engineer. */
"Confirm network settings" = "Bevestig netwerk instellingen";
/* No comment provided by engineer. */
"Confirm new passphrase…" = "Bevestig nieuw wachtwoord…";
@@ -810,6 +852,12 @@
/* No comment provided by engineer. */
"Confirm password" = "Bevestig wachtwoord";
/* No comment provided by engineer. */
"Confirm that you remember database passphrase to migrate it." = "Bevestig dat u het wachtwoord voor de database onthoudt om deze te migreren.";
/* No comment provided by engineer. */
"Confirm upload" = "Bevestig het uploaden";
/* server test step */
"Connect" = "Verbind";
@@ -1008,6 +1056,9 @@
/* No comment provided by engineer. */
"Created on %@" = "Gemaakt op %@";
/* No comment provided by engineer. */
"Creating archive link" = "Archief link maken";
/* No comment provided by engineer. */
"Creating link…" = "Link maken…";
@@ -1155,6 +1206,9 @@
/* No comment provided by engineer. */
"Delete database" = "Database verwijderen";
/* No comment provided by engineer. */
"Delete database from this device" = "Verwijder de database van dit apparaat";
/* server test step */
"Delete file" = "Verwijder bestand";
@@ -1347,9 +1401,18 @@
/* No comment provided by engineer. */
"Downgrade and open chat" = "Downgraden en chat openen";
/* No comment provided by engineer. */
"Download failed" = "Download mislukt";
/* server test step */
"Download file" = "Download bestand";
/* No comment provided by engineer. */
"Downloading archive" = "Archief downloaden";
/* No comment provided by engineer. */
"Downloading link details" = "Link gegevens downloaden";
/* No comment provided by engineer. */
"Duplicate display name!" = "Dubbele weergavenaam!";
@@ -1383,6 +1446,9 @@
/* No comment provided by engineer. */
"Enable for all" = "Inschakelen voor iedereen";
/* No comment provided by engineer. */
"Enable in direct chats (BETA)!" = "Activeer in directe chats (BETA)!";
/* No comment provided by engineer. */
"Enable instant notifications?" = "Onmiddellijke meldingen inschakelen?";
@@ -1497,6 +1563,9 @@
/* No comment provided by engineer. */
"Enter Passcode" = "Voer toegangscode in";
/* No comment provided by engineer. */
"Enter passphrase" = "Voer het wachtwoord in";
/* No comment provided by engineer. */
"Enter passphrase…" = "Voer wachtwoord in…";
@@ -1536,6 +1605,9 @@
/* No comment provided by engineer. */
"Error adding member(s)" = "Fout bij het toevoegen van leden";
/* No comment provided by engineer. */
"Error allowing contact PQ encryption" = "Fout bij het toestaan van contact PQ-versleuteling";
/* No comment provided by engineer. */
"Error changing address" = "Fout bij wijzigen van adres";
@@ -1590,6 +1662,9 @@
/* No comment provided by engineer. */
"Error deleting user profile" = "Fout bij het verwijderen van gebruikers profiel";
/* No comment provided by engineer. */
"Error downloading the archive" = "Fout bij het downloaden van het archief";
/* No comment provided by engineer. */
"Error enabling delivery receipts!" = "Fout bij het inschakelen van ontvangst bevestiging!";
@@ -1635,6 +1710,9 @@
/* No comment provided by engineer. */
"Error saving passphrase to keychain" = "Fout bij opslaan van wachtwoord in de keychain";
/* when migrating */
"Error saving settings" = "Fout bij opslaan van instellingen";
/* No comment provided by engineer. */
"Error saving user password" = "Fout bij opslaan gebruikers wachtwoord";
@@ -1677,6 +1755,12 @@
/* No comment provided by engineer. */
"Error updating user privacy" = "Fout bij updaten van gebruikers privacy";
/* No comment provided by engineer. */
"Error uploading the archive" = "Fout bij het uploaden van het archief";
/* No comment provided by engineer. */
"Error verifying passphrase:" = "Fout bij het verifiëren van het wachtwoord:";
/* No comment provided by engineer. */
"Error: " = "Fout: ";
@@ -1710,6 +1794,9 @@
/* No comment provided by engineer. */
"Exported database archive." = "Geëxporteerd database archief.";
/* No comment provided by engineer. */
"Exported file doesn't exist" = "Geëxporteerd bestand bestaat niet";
/* No comment provided by engineer. */
"Exporting database archive…" = "Database archief exporteren…";
@@ -1752,6 +1839,12 @@
/* No comment provided by engineer. */
"Filter unread and favorite chats." = "Filter ongelezen en favoriete chats.";
/* No comment provided by engineer. */
"Finalize migration" = "Voltooi de migratie";
/* No comment provided by engineer. */
"Finalize migration on another device." = "Voltooi de migratie op een ander apparaat.";
/* No comment provided by engineer. */
"Finally, we have them! 🚀" = "Eindelijk, we hebben ze! 🚀";
@@ -1935,6 +2028,9 @@
/* No comment provided by engineer. */
"How to use your servers" = "Hoe u uw servers gebruikt";
/* No comment provided by engineer. */
"Hungarian interface" = "Hongaarse interface";
/* No comment provided by engineer. */
"ICE servers (one per line)" = "ICE servers (één per lijn)";
@@ -1974,6 +2070,12 @@
/* No comment provided by engineer. */
"Import database" = "Database importeren";
/* No comment provided by engineer. */
"Import failed" = "Importeren is mislukt";
/* No comment provided by engineer. */
"Importing archive" = "Archief importeren";
/* No comment provided by engineer. */
"Improved message delivery" = "Verbeterde berichtbezorging";
@@ -1983,6 +2085,9 @@
/* No comment provided by engineer. */
"Improved server configuration" = "Verbeterde serverconfiguratie";
/* No comment provided by engineer. */
"In order to continue, chat should be stopped." = "Om verder te kunnen gaan, moet de chat worden gestopt.";
/* No comment provided by engineer. */
"In reply to" = "In antwoord op";
@@ -1999,7 +2104,7 @@
"Incognito mode protects your privacy by using a new random profile for each contact." = "Incognito -modus beschermt uw privacy met behulp van een nieuw willekeurig profiel voor elk contact.";
/* chat list item description */
"incognito via contact address link" = "incognito via contactadres link";
"incognito via contact address link" = "incognito via contact adres link";
/* chat list item description */
"incognito via group link" = "incognito via groep link";
@@ -2067,6 +2172,9 @@
/* No comment provided by engineer. */
"Invalid link" = "Ongeldige link";
/* No comment provided by engineer. */
"Invalid migration confirmation" = "Ongeldige migratie bevestiging";
/* No comment provided by engineer. */
"Invalid name!" = "Ongeldige naam!";
@@ -2206,7 +2314,7 @@
"Leave group?" = "Groep verlaten?";
/* rcv group event chat item */
"left" = "verlaten";
"left" = "is vertrokken";
/* email subject */
"Let's talk in SimpleX Chat" = "Laten we praten in SimpleX Chat";
@@ -2331,6 +2439,9 @@
/* No comment provided by engineer. */
"Message text" = "Bericht tekst";
/* No comment provided by engineer. */
"Message too large" = "Bericht te groot";
/* No comment provided by engineer. */
"Messages" = "Berichten";
@@ -2340,9 +2451,36 @@
/* No comment provided by engineer. */
"Messages from %@ will be shown!" = "Berichten van %@ worden getoond!";
/* No comment provided by engineer. */
"Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." = "Berichten, bestanden en oproepen worden beschermd door **end-to-end codering** met perfecte voorwaartse geheimhouding, afwijzing en inbraakherstel.";
/* No comment provided by engineer. */
"Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." = "Berichten, bestanden en oproepen worden beschermd door **kwantumbestendige e2e encryptie** met perfecte voorwaartse geheimhouding, afwijzing en inbraakherstel.";
/* No comment provided by engineer. */
"Migrate device" = "Apparaat migreren";
/* No comment provided by engineer. */
"Migrate from another device" = "Migreer vanaf een ander apparaat";
/* No comment provided by engineer. */
"Migrate here" = "Migreer hierheen";
/* No comment provided by engineer. */
"Migrate to another device" = "Migreer naar een ander apparaat";
/* No comment provided by engineer. */
"Migrate to another device via QR code." = "Migreer naar een ander apparaat via QR-code.";
/* No comment provided by engineer. */
"Migrating" = "Migreren";
/* No comment provided by engineer. */
"Migrating database archive…" = "Database archief migreren…";
/* No comment provided by engineer. */
"Migration complete" = "Migratie voltooid";
/* No comment provided by engineer. */
"Migration error:" = "Migratiefout:";
@@ -2373,7 +2511,7 @@
/* copied message info */
"Moderated at: %@" = "Gemodereerd op: %@";
/* No comment provided by engineer. */
/* marked deleted chat item preview text */
"moderated by %@" = "gemodereerd door %@";
/* time unit */
@@ -2592,7 +2730,7 @@
"Open" = "Open";
/* No comment provided by engineer. */
"Open chat" = "Gesprekken openen";
"Open chat" = "Chat openen";
/* authentication reason */
"Open chat console" = "Chat console openen";
@@ -2600,6 +2738,9 @@
/* No comment provided by engineer. */
"Open group" = "Open groep";
/* authentication reason */
"Open migration to another device" = "Open de migratie naar een ander apparaat";
/* No comment provided by engineer. */
"Open Settings" = "Open instellingen";
@@ -2612,9 +2753,15 @@
/* No comment provided by engineer. */
"Opening app…" = "App openen…";
/* No comment provided by engineer. */
"Or paste archive link" = "Of plak de archief link";
/* No comment provided by engineer. */
"Or scan QR code" = "Of scan de QR-code";
/* No comment provided by engineer. */
"Or securely share this file link" = "Of deel deze bestands link veilig";
/* No comment provided by engineer. */
"Or show this code" = "Of laat deze code zien";
@@ -2666,6 +2813,9 @@
/* message decrypt error item */
"Permanent decryption error" = "Decodering fout";
/* No comment provided by engineer. */
"Picture-in-picture calls" = "Beeld-in-beeld oproepen";
/* No comment provided by engineer. */
"PING count" = "PING count";
@@ -2684,6 +2834,9 @@
/* No comment provided by engineer. */
"Please check yours and your contact preferences." = "Controleer de uwe en uw contact voorkeuren.";
/* No comment provided by engineer. */
"Please confirm that network settings are correct for this device." = "Controleer of de netwerk instellingen correct zijn voor dit apparaat.";
/* No comment provided by engineer. */
"Please contact developers.\nError: %@" = "Neem contact op met ontwikkelaars.\nFout: %@";
@@ -2717,6 +2870,9 @@
/* server test error */
"Possibly, certificate fingerprint in server address is incorrect" = "Mogelijk is de certificaat vingerafdruk in het server adres onjuist";
/* No comment provided by engineer. */
"Post-quantum E2EE" = "Post-quantum E2EE";
/* No comment provided by engineer. */
"Preserve the last message draft, with attachments." = "Bewaar het laatste berichtconcept, met bijlagen.";
@@ -2798,6 +2954,15 @@
/* No comment provided by engineer. */
"Push notifications" = "Push meldingen";
/* No comment provided by engineer. */
"Push server" = "Push server";
/* chat item text */
"quantum resistant e2e encryption" = "quantum bestendige e2e-codering";
/* No comment provided by engineer. */
"Quantum resistant encryption" = "quantum bestendige encryptie";
/* No comment provided by engineer. */
"Rate the app" = "Beoordeel de app";
@@ -2933,9 +3098,18 @@
/* No comment provided by engineer. */
"Repeat connection request?" = "Verbindingsverzoek herhalen?";
/* No comment provided by engineer. */
"Repeat download" = "Herhaal het downloaden";
/* No comment provided by engineer. */
"Repeat import" = "Herhaal import";
/* No comment provided by engineer. */
"Repeat join request?" = "Deelnameverzoek herhalen?";
/* No comment provided by engineer. */
"Repeat upload" = "Herhaal het uploaden";
/* chat item action */
"Reply" = "Antwoord";
@@ -2993,6 +3167,9 @@
/* No comment provided by engineer. */
"Run chat" = "Chat uitvoeren";
/* No comment provided by engineer. */
"Safer groups" = "Veiligere groepen";
/* chat item action */
"Save" = "Opslaan";
@@ -3069,7 +3246,7 @@
"Search bar accepts invitation links." = "Zoekbalk accepteert uitnodigingslinks.";
/* No comment provided by engineer. */
"Search or paste SimpleX link" = "Zoek of plak een SimpleX link";
"Search or paste SimpleX link" = "Zoeken of plak een SimpleX link";
/* network option */
"sec" = "sec";
@@ -3233,6 +3410,9 @@
/* No comment provided by engineer. */
"Set passcode" = "Toegangscode instellen";
/* No comment provided by engineer. */
"Set passphrase" = "Wachtwoord instellen";
/* No comment provided by engineer. */
"Set passphrase to export" = "Wachtwoord instellen om te exporteren";
@@ -3278,6 +3458,9 @@
/* No comment provided by engineer. */
"Show preview" = "Toon voorbeeld";
/* No comment provided by engineer. */
"Show QR code" = "Toon QR-code";
/* No comment provided by engineer. */
"Show:" = "Toon:";
@@ -3338,6 +3521,9 @@
/* notification title */
"Somebody" = "Iemand";
/* chat item text */
"standard end-to-end encryption" = "standaard end-to-end encryptie";
/* No comment provided by engineer. */
"Start chat" = "Begin gesprek";
@@ -3353,6 +3539,9 @@
/* No comment provided by engineer. */
"Stop" = "Stop";
/* No comment provided by engineer. */
"Stop chat" = "Stop chat";
/* No comment provided by engineer. */
"Stop chat to enable database actions" = "Stop de chat om database acties mogelijk te maken";
@@ -3380,6 +3569,9 @@
/* authentication reason */
"Stop SimpleX" = "Stop SimpleX";
/* No comment provided by engineer. */
"Stopping chat" = "Chat stoppen";
/* No comment provided by engineer. */
"strike" = "staking";
@@ -3530,6 +3722,12 @@
/* No comment provided by engineer. */
"This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." = "Deze actie kan niet ongedaan worden gemaakt. Uw profiel, contacten, berichten en bestanden gaan onomkeerbaar verloren.";
/* E2EE info chat item */
"This chat is protected by end-to-end encryption." = "Deze chat is beveiligd met end-to-end codering.";
/* E2EE info chat item */
"This chat is protected by quantum resistant end-to-end encryption." = "Deze chat wordt beschermd door quantum bestendige end-to-end codering.";
/* notification title */
"this contact" = "dit contact";
@@ -3722,9 +3920,15 @@
/* No comment provided by engineer. */
"Upgrade and open chat" = "Upgrade en open chat";
/* No comment provided by engineer. */
"Upload failed" = "Upload mislukt";
/* server test step */
"Upload file" = "Upload bestand";
/* No comment provided by engineer. */
"Uploading archive" = "Archief uploaden";
/* No comment provided by engineer. */
"Use .onion hosts" = "Gebruik .onion-hosts";
@@ -3755,6 +3959,9 @@
/* No comment provided by engineer. */
"Use SimpleX Chat servers?" = "SimpleX Chat servers gebruiken?";
/* No comment provided by engineer. */
"Use the app while in the call." = "Gebruik de app tijdens het gesprek.";
/* No comment provided by engineer. */
"User profile" = "Gebruikers profiel";
@@ -3782,6 +3989,12 @@
/* No comment provided by engineer. */
"Verify connections" = "Controleer verbindingen";
/* No comment provided by engineer. */
"Verify database passphrase" = "Controleer het wachtwoord van de database";
/* No comment provided by engineer. */
"Verify passphrase" = "Controleer het wachtwoord";
/* No comment provided by engineer. */
"Verify security code" = "Controleer de beveiligingscode";
@@ -3789,7 +4002,7 @@
"Via browser" = "Via browser";
/* chat list item description */
"via contact address link" = "via contactadres link";
"via contact address link" = "via contact adres link";
/* chat list item description */
"via group link" = "via groep link";
@@ -3860,6 +4073,9 @@
/* No comment provided by engineer. */
"wants to connect to you!" = "wil met je in contact komen!";
/* No comment provided by engineer. */
"Warning: starting chat on multiple devices is not supported and will cause message delivery failures" = "Waarschuwing: het starten van de chat op meerdere apparaten wordt niet ondersteund en zal leiden tot mislukte bezorging van berichten";
/* No comment provided by engineer. */
"Warning: you may lose some data!" = "Waarschuwing: u kunt sommige gegevens verliezen!";
@@ -3875,6 +4091,9 @@
/* No comment provided by engineer. */
"Welcome message" = "Welkomst bericht";
/* No comment provided by engineer. */
"Welcome message is too long" = "Welkomstbericht is te lang";
/* No comment provided by engineer. */
"What's new" = "Wat is er nieuw";
@@ -3911,6 +4130,9 @@
/* No comment provided by engineer. */
"You" = "Jij";
/* No comment provided by engineer. */
"You **must not** use the same database on two devices." = "U **mag** niet dezelfde database op twee apparaten gebruiken.";
/* No comment provided by engineer. */
"You accepted connection" = "Je hebt de verbinding geaccepteerd";
@@ -3971,6 +4193,9 @@
/* No comment provided by engineer. */
"You can enable them later via app Privacy & Security settings." = "U kunt ze later inschakelen via de privacy- en beveiligingsinstellingen van de app.";
/* No comment provided by engineer. */
"You can give another try." = "Je kunt het nog een keer proberen.";
/* No comment provided by engineer. */
"You can hide or mute a user profile - swipe it to the right." = "U kunt een gebruikers profiel verbergen of dempen - veeg het naar rechts.";
+228 -3
View File
@@ -85,6 +85,9 @@
/* No comment provided by engineer. */
"**Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app)." = "**Najbardziej prywatny**: nie korzystaj z serwera powiadomień SimpleX Chat, sprawdzaj wiadomości okresowo w tle (zależy jak często korzystasz z aplikacji).";
/* No comment provided by engineer. */
"**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." = "*Uwaga*: używanie tej samej bazy danych na dwóch urządzeniach zepsuje odszyfrowywanie wiadomości twoich połączeń, jako zabezpieczenie.";
/* No comment provided by engineer. */
"**Please note**: you will NOT be able to recover or change passphrase if you lose it." = "**Uwaga**: NIE będziesz w stanie odzyskać lub zmienić hasła, jeśli je stracisz.";
@@ -94,6 +97,9 @@
/* No comment provided by engineer. */
"**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Uwaga**: Natychmiastowe powiadomienia push wymagają hasła zapisanego w Keychain.";
/* No comment provided by engineer. */
"**Warning**: the archive will be removed." = "**Ostrzeżenie**: archiwum zostanie usunięte.";
/* No comment provided by engineer. */
"*bold*" = "\\*pogrubiony*";
@@ -136,6 +142,9 @@
/* No comment provided by engineer. */
"%@ connected" = "%@ połączony";
/* No comment provided by engineer. */
"%@ downloaded" = "%@ pobrane";
/* notification title */
"%@ is connected!" = "%@ jest połączony!";
@@ -148,6 +157,9 @@
/* No comment provided by engineer. */
"%@ servers" = "%@ serwery";
/* No comment provided by engineer. */
"%@ uploaded" = "%@ wgrane";
/* notification title */
"%@ wants to connect!" = "%@ chce się połączyć!";
@@ -377,6 +389,9 @@
/* member role */
"admin" = "administrator";
/* No comment provided by engineer. */
"Admins can block a member for all." = "Administratorzy mogą blokować członka dla wszystkich.";
/* No comment provided by engineer. */
"Admins can create the links to join groups." = "Administratorzy mogą tworzyć linki do dołączania do grup.";
@@ -416,6 +431,9 @@
/* No comment provided by engineer. */
"All your contacts will remain connected. Profile update will be sent to your contacts." = "Wszystkie Twoje kontakty pozostaną połączone. Aktualizacja profilu zostanie wysłana do Twoich kontaktów.";
/* No comment provided by engineer. */
"All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." = "Wszystkie twoje kontakty, konwersacje i pliki będą bezpiecznie szyfrowane i wgrywane w kawałkach do skonfigurowanych przekaźników XFTP.";
/* No comment provided by engineer. */
"Allow" = "Pozwól";
@@ -497,6 +515,9 @@
/* No comment provided by engineer. */
"App build: %@" = "Kompilacja aplikacji: %@";
/* No comment provided by engineer. */
"App data migration" = "Migracja danych aplikacji";
/* No comment provided by engineer. */
"App encrypts new local files (except videos)." = "Aplikacja szyfruje nowe lokalne pliki (bez filmów).";
@@ -518,6 +539,15 @@
/* No comment provided by engineer. */
"Appearance" = "Wygląd";
/* No comment provided by engineer. */
"Apply" = "Zastosuj";
/* No comment provided by engineer. */
"Archive and upload" = "Archiwizuj i prześlij";
/* No comment provided by engineer. */
"Archiving database" = "Archiwizowanie bazy danych";
/* No comment provided by engineer. */
"Attach" = "Dołącz";
@@ -602,13 +632,13 @@
/* No comment provided by engineer. */
"Block member?" = "Zablokować członka?";
/* No comment provided by engineer. */
/* marked deleted chat item preview text */
"blocked" = "zablokowany";
/* rcv group event chat item */
"blocked %@" = "zablokowany %@";
/* blocked chat item */
/* marked deleted chat item preview text */
"blocked by admin" = "zablokowany przez admina";
/* No comment provided by engineer. */
@@ -665,6 +695,9 @@
/* No comment provided by engineer. */
"Cancel" = "Anuluj";
/* No comment provided by engineer. */
"Cancel migration" = "Anuluj migrację";
/* feature offered item */
"cancelled %@" = "anulowany %@";
@@ -744,6 +777,9 @@
/* No comment provided by engineer. */
"Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat." = "Czat został zatrzymany. Jeśli korzystałeś już z tej bazy danych na innym urządzeniu, powinieneś przenieść ją z powrotem przed rozpoczęciem czatu.";
/* No comment provided by engineer. */
"Chat migrated!" = "Czat zmigrowany!";
/* No comment provided by engineer. */
"Chat preferences" = "Preferencje czatu";
@@ -756,6 +792,9 @@
/* No comment provided by engineer. */
"Chinese and Spanish interface" = "Chiński i hiszpański interfejs";
/* No comment provided by engineer. */
"Choose _Migrate from another device_ on the new device and scan QR code." = "Wybierz _Zmigruj z innego urządzenia_ na nowym urządzeniu i zeskanuj kod QR.";
/* No comment provided by engineer. */
"Choose file" = "Wybierz plik";
@@ -801,6 +840,9 @@
/* No comment provided by engineer. */
"Confirm database upgrades" = "Potwierdź aktualizacje bazy danych";
/* No comment provided by engineer. */
"Confirm network settings" = "Potwierdź ustawienia sieciowe";
/* No comment provided by engineer. */
"Confirm new passphrase…" = "Potwierdź nowe hasło…";
@@ -810,6 +852,12 @@
/* No comment provided by engineer. */
"Confirm password" = "Potwierdź hasło";
/* No comment provided by engineer. */
"Confirm that you remember database passphrase to migrate it." = "Potwierdź, że pamiętasz hasło do bazy danych, aby ją zmigrować.";
/* No comment provided by engineer. */
"Confirm upload" = "Potwierdź wgranie";
/* server test step */
"Connect" = "Połącz";
@@ -1008,6 +1056,9 @@
/* No comment provided by engineer. */
"Created on %@" = "Utworzony w dniu %@";
/* No comment provided by engineer. */
"Creating archive link" = "Tworzenie linku archiwum";
/* No comment provided by engineer. */
"Creating link…" = "Tworzenie linku…";
@@ -1155,6 +1206,9 @@
/* No comment provided by engineer. */
"Delete database" = "Usuń bazę danych";
/* No comment provided by engineer. */
"Delete database from this device" = "Usuń bazę danych z tego urządzenia";
/* server test step */
"Delete file" = "Usuń plik";
@@ -1347,9 +1401,18 @@
/* No comment provided by engineer. */
"Downgrade and open chat" = "Obniż wersję i otwórz czat";
/* No comment provided by engineer. */
"Download failed" = "Pobieranie nie udane";
/* server test step */
"Download file" = "Pobierz plik";
/* No comment provided by engineer. */
"Downloading archive" = "Pobieranie archiwum";
/* No comment provided by engineer. */
"Downloading link details" = "Pobieranie szczegółów linku";
/* No comment provided by engineer. */
"Duplicate display name!" = "Zduplikowana wyświetlana nazwa!";
@@ -1383,6 +1446,9 @@
/* No comment provided by engineer. */
"Enable for all" = "Włącz dla wszystkich";
/* No comment provided by engineer. */
"Enable in direct chats (BETA)!" = "Włącz w czatach bezpośrednich (BETA)!";
/* No comment provided by engineer. */
"Enable instant notifications?" = "Włączyć natychmiastowe powiadomienia?";
@@ -1497,6 +1563,9 @@
/* No comment provided by engineer. */
"Enter Passcode" = "Wprowadź Pin";
/* No comment provided by engineer. */
"Enter passphrase" = "Wprowadź hasło";
/* No comment provided by engineer. */
"Enter passphrase…" = "Wprowadź hasło…";
@@ -1536,6 +1605,9 @@
/* No comment provided by engineer. */
"Error adding member(s)" = "Błąd dodawania członka(ów)";
/* No comment provided by engineer. */
"Error allowing contact PQ encryption" = "Błąd pozwalania kontaktowi na szyfrowanie PQ";
/* No comment provided by engineer. */
"Error changing address" = "Błąd zmiany adresu";
@@ -1590,6 +1662,9 @@
/* No comment provided by engineer. */
"Error deleting user profile" = "Błąd usuwania profilu użytkownika";
/* No comment provided by engineer. */
"Error downloading the archive" = "Błąd pobierania archiwum";
/* No comment provided by engineer. */
"Error enabling delivery receipts!" = "Błąd włączania potwierdzeń dostawy!";
@@ -1635,6 +1710,9 @@
/* No comment provided by engineer. */
"Error saving passphrase to keychain" = "Błąd zapisu hasła do pęku kluczy";
/* when migrating */
"Error saving settings" = "Błąd zapisywania ustawień";
/* No comment provided by engineer. */
"Error saving user password" = "Błąd zapisu hasła użytkownika";
@@ -1677,6 +1755,12 @@
/* No comment provided by engineer. */
"Error updating user privacy" = "Błąd aktualizacji prywatności użytkownika";
/* No comment provided by engineer. */
"Error uploading the archive" = "Błąd wgrywania archiwum";
/* No comment provided by engineer. */
"Error verifying passphrase:" = "Błąd weryfikowania hasła:";
/* No comment provided by engineer. */
"Error: " = "Błąd: ";
@@ -1710,6 +1794,9 @@
/* No comment provided by engineer. */
"Exported database archive." = "Wyeksportowane archiwum bazy danych.";
/* No comment provided by engineer. */
"Exported file doesn't exist" = "Wyeksportowany plik nie istnieje";
/* No comment provided by engineer. */
"Exporting database archive…" = "Eksportowanie archiwum bazy danych…";
@@ -1752,6 +1839,12 @@
/* No comment provided by engineer. */
"Filter unread and favorite chats." = "Filtruj nieprzeczytane i ulubione czaty.";
/* No comment provided by engineer. */
"Finalize migration" = "Dokończ migrację";
/* No comment provided by engineer. */
"Finalize migration on another device." = "Dokończ migrację na innym urządzeniu.";
/* No comment provided by engineer. */
"Finally, we have them! 🚀" = "W końcu je mamy! 🚀";
@@ -1935,6 +2028,9 @@
/* No comment provided by engineer. */
"How to use your servers" = "Jak korzystać z Twoich serwerów";
/* No comment provided by engineer. */
"Hungarian interface" = "Węgierski interfejs";
/* No comment provided by engineer. */
"ICE servers (one per line)" = "Serwery ICE (po jednym na linię)";
@@ -1974,6 +2070,12 @@
/* No comment provided by engineer. */
"Import database" = "Importuj bazę danych";
/* No comment provided by engineer. */
"Import failed" = "Import nie udał się";
/* No comment provided by engineer. */
"Importing archive" = "Importowanie archiwum";
/* No comment provided by engineer. */
"Improved message delivery" = "Ulepszona dostawa wiadomości";
@@ -1983,6 +2085,9 @@
/* No comment provided by engineer. */
"Improved server configuration" = "Ulepszona konfiguracja serwera";
/* No comment provided by engineer. */
"In order to continue, chat should be stopped." = "Aby konturować, czat musi zostać zatrzymany.";
/* No comment provided by engineer. */
"In reply to" = "W odpowiedzi na";
@@ -2067,6 +2172,9 @@
/* No comment provided by engineer. */
"Invalid link" = "Nieprawidłowy link";
/* No comment provided by engineer. */
"Invalid migration confirmation" = "Nieprawidłowe potwierdzenie migracji";
/* No comment provided by engineer. */
"Invalid name!" = "Nieprawidłowa nazwa!";
@@ -2331,6 +2439,9 @@
/* No comment provided by engineer. */
"Message text" = "Tekst wiadomości";
/* No comment provided by engineer. */
"Message too large" = "Wiadomość jest zbyt duża";
/* No comment provided by engineer. */
"Messages" = "Wiadomości";
@@ -2340,9 +2451,36 @@
/* No comment provided by engineer. */
"Messages from %@ will be shown!" = "Wiadomości od %@ zostaną pokazane!";
/* No comment provided by engineer. */
"Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." = "Wiadomości, pliki i połączenia są chronione przez **szyfrowanie end-to-end** z doskonałym utajnianiem z wyprzedzeniem i odzyskiem po złamaniu.";
/* No comment provided by engineer. */
"Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." = "Wiadomości, pliki i połączenia są chronione przez **kwantowo odporne szyfrowanie end-to-end** z doskonałym utajnianiem z wyprzedzeniem i odzyskiem po złamaniu.";
/* No comment provided by engineer. */
"Migrate device" = "Zmigruj urządzenie";
/* No comment provided by engineer. */
"Migrate from another device" = "Zmigruj z innego urządzenia";
/* No comment provided by engineer. */
"Migrate here" = "Zmigruj tutaj";
/* No comment provided by engineer. */
"Migrate to another device" = "Zmigruj do innego urządzenia";
/* No comment provided by engineer. */
"Migrate to another device via QR code." = "Zmigruj do innego urządzenia przez kod QR.";
/* No comment provided by engineer. */
"Migrating" = "Migrowanie";
/* No comment provided by engineer. */
"Migrating database archive…" = "Migrowanie archiwum bazy danych…";
/* No comment provided by engineer. */
"Migration complete" = "Migracja zakończona";
/* No comment provided by engineer. */
"Migration error:" = "Błąd migracji:";
@@ -2373,7 +2511,7 @@
/* copied message info */
"Moderated at: %@" = "Moderowany o: %@";
/* No comment provided by engineer. */
/* marked deleted chat item preview text */
"moderated by %@" = "moderowany przez %@";
/* time unit */
@@ -2600,6 +2738,9 @@
/* No comment provided by engineer. */
"Open group" = "Grupa otwarta";
/* authentication reason */
"Open migration to another device" = "Otwórz migrację na innym urządzeniu";
/* No comment provided by engineer. */
"Open Settings" = "Otwórz Ustawienia";
@@ -2612,9 +2753,15 @@
/* No comment provided by engineer. */
"Opening app…" = "Otwieranie aplikacji…";
/* No comment provided by engineer. */
"Or paste archive link" = "Lub wklej link archiwum";
/* No comment provided by engineer. */
"Or scan QR code" = "Lub zeskanuj kod QR";
/* No comment provided by engineer. */
"Or securely share this file link" = "Lub bezpiecznie udostępnij ten link pliku";
/* No comment provided by engineer. */
"Or show this code" = "Lub pokaż ten kod";
@@ -2666,6 +2813,9 @@
/* message decrypt error item */
"Permanent decryption error" = "Stały błąd odszyfrowania";
/* No comment provided by engineer. */
"Picture-in-picture calls" = "Połączenia obraz-w-obrazie";
/* No comment provided by engineer. */
"PING count" = "Liczba PINGÓW";
@@ -2684,6 +2834,9 @@
/* No comment provided by engineer. */
"Please check yours and your contact preferences." = "Proszę sprawdzić preferencje Twoje i Twojego kontaktu.";
/* No comment provided by engineer. */
"Please confirm that network settings are correct for this device." = "Proszę potwierdzić, że ustawienia sieciowe są prawidłowe dla tego urządzenia.";
/* No comment provided by engineer. */
"Please contact developers.\nError: %@" = "Proszę skontaktować się z deweloperami.\nBłąd: %@";
@@ -2717,6 +2870,9 @@
/* server test error */
"Possibly, certificate fingerprint in server address is incorrect" = "Możliwe, że odcisk palca certyfikatu w adresie serwera jest nieprawidłowy";
/* No comment provided by engineer. */
"Post-quantum E2EE" = "Postkwantowe E2EE";
/* No comment provided by engineer. */
"Preserve the last message draft, with attachments." = "Zachowaj ostatnią wersję roboczą wiadomości wraz z załącznikami.";
@@ -2798,6 +2954,15 @@
/* No comment provided by engineer. */
"Push notifications" = "Powiadomienia push";
/* No comment provided by engineer. */
"Push server" = "Serwer Push";
/* chat item text */
"quantum resistant e2e encryption" = "kwantowo odporne szyfrowanie e2e";
/* No comment provided by engineer. */
"Quantum resistant encryption" = "Kwantowo odporne szyfrowanie";
/* No comment provided by engineer. */
"Rate the app" = "Oceń aplikację";
@@ -2933,9 +3098,18 @@
/* No comment provided by engineer. */
"Repeat connection request?" = "Powtórzyć prośbę połączenia?";
/* No comment provided by engineer. */
"Repeat download" = "Powtórz pobieranie";
/* No comment provided by engineer. */
"Repeat import" = "Powtórz importowanie";
/* No comment provided by engineer. */
"Repeat join request?" = "Powtórzyć prośbę dołączenia?";
/* No comment provided by engineer. */
"Repeat upload" = "Powtórz wgrywanie";
/* chat item action */
"Reply" = "Odpowiedz";
@@ -2993,6 +3167,9 @@
/* No comment provided by engineer. */
"Run chat" = "Uruchom czat";
/* No comment provided by engineer. */
"Safer groups" = "Bezpieczniejsze grupy";
/* chat item action */
"Save" = "Zapisz";
@@ -3233,6 +3410,9 @@
/* No comment provided by engineer. */
"Set passcode" = "Ustaw pin";
/* No comment provided by engineer. */
"Set passphrase" = "Ustaw hasło";
/* No comment provided by engineer. */
"Set passphrase to export" = "Ustaw hasło do eksportu";
@@ -3278,6 +3458,9 @@
/* No comment provided by engineer. */
"Show preview" = "Pokaż podgląd";
/* No comment provided by engineer. */
"Show QR code" = "Pokaż kod QR";
/* No comment provided by engineer. */
"Show:" = "Pokaż:";
@@ -3338,6 +3521,9 @@
/* notification title */
"Somebody" = "Ktoś";
/* chat item text */
"standard end-to-end encryption" = "standardowe szyfrowanie end-to-end";
/* No comment provided by engineer. */
"Start chat" = "Rozpocznij czat";
@@ -3353,6 +3539,9 @@
/* No comment provided by engineer. */
"Stop" = "Zatrzymaj";
/* No comment provided by engineer. */
"Stop chat" = "Zatrzymaj czat";
/* No comment provided by engineer. */
"Stop chat to enable database actions" = "Zatrzymaj czat, aby umożliwić działania na bazie danych";
@@ -3380,6 +3569,9 @@
/* authentication reason */
"Stop SimpleX" = "Zatrzymaj SimpleX";
/* No comment provided by engineer. */
"Stopping chat" = "Zatrzymywanie czatu";
/* No comment provided by engineer. */
"strike" = "strajk";
@@ -3530,6 +3722,12 @@
/* No comment provided by engineer. */
"This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." = "Tego działania nie można cofnąć - Twój profil, kontakty, wiadomości i pliki zostaną nieodwracalnie utracone.";
/* E2EE info chat item */
"This chat is protected by end-to-end encryption." = "Ten czat jest chroniony przez szyfrowanie end-to-end.";
/* E2EE info chat item */
"This chat is protected by quantum resistant end-to-end encryption." = "Ten czat jest chroniony przez kwantowo odporne szyfrowanie end-to-end.";
/* notification title */
"this contact" = "ten kontakt";
@@ -3722,9 +3920,15 @@
/* No comment provided by engineer. */
"Upgrade and open chat" = "Zaktualizuj i otwórz czat";
/* No comment provided by engineer. */
"Upload failed" = "Wgrywanie nie udane";
/* server test step */
"Upload file" = "Prześlij plik";
/* No comment provided by engineer. */
"Uploading archive" = "Wgrywanie archiwum";
/* No comment provided by engineer. */
"Use .onion hosts" = "Użyj hostów .onion";
@@ -3755,6 +3959,9 @@
/* No comment provided by engineer. */
"Use SimpleX Chat servers?" = "Użyć serwerów SimpleX Chat?";
/* No comment provided by engineer. */
"Use the app while in the call." = "Używaj aplikacji podczas połączenia.";
/* No comment provided by engineer. */
"User profile" = "Profil użytkownika";
@@ -3782,6 +3989,12 @@
/* No comment provided by engineer. */
"Verify connections" = "Zweryfikuj połączenia";
/* No comment provided by engineer. */
"Verify database passphrase" = "Zweryfikuj hasło bazy danych";
/* No comment provided by engineer. */
"Verify passphrase" = "Zweryfikuj hasło";
/* No comment provided by engineer. */
"Verify security code" = "Weryfikuj kod bezpieczeństwa";
@@ -3860,6 +4073,9 @@
/* No comment provided by engineer. */
"wants to connect to you!" = "chce się z Tobą połączyć!";
/* No comment provided by engineer. */
"Warning: starting chat on multiple devices is not supported and will cause message delivery failures" = "Ostrzeżenie: rozpoczęcie czatu na wielu urządzeniach nie jest wspierane i spowoduje niepowodzenia dostarczania wiadomości";
/* No comment provided by engineer. */
"Warning: you may lose some data!" = "Uwaga: możesz stracić niektóre dane!";
@@ -3875,6 +4091,9 @@
/* No comment provided by engineer. */
"Welcome message" = "Wiadomość powitalna";
/* No comment provided by engineer. */
"Welcome message is too long" = "Wiadomość powitalna jest zbyt długa";
/* No comment provided by engineer. */
"What's new" = "Co nowego";
@@ -3911,6 +4130,9 @@
/* No comment provided by engineer. */
"You" = "Ty";
/* No comment provided by engineer. */
"You **must not** use the same database on two devices." = "**Nie możesz** używać tej samej bazy na dwóch urządzeniach.";
/* No comment provided by engineer. */
"You accepted connection" = "Zaakceptowałeś połączenie";
@@ -3971,6 +4193,9 @@
/* No comment provided by engineer. */
"You can enable them later via app Privacy & Security settings." = "Możesz je włączyć później w ustawieniach Prywatności i Bezpieczeństwa aplikacji.";
/* No comment provided by engineer. */
"You can give another try." = "Możesz spróbować ponownie.";
/* No comment provided by engineer. */
"You can hide or mute a user profile - swipe it to the right." = "Możesz ukryć lub wyciszyć profil użytkownika - przesuń palcem w prawo.";
+228 -3
View File
@@ -85,6 +85,9 @@
/* No comment provided by engineer. */
"**Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app)." = "**Самый конфиденциальный**: не использовать сервер уведомлений SimpleX Chat, проверять сообщения периодически в фоновом режиме (зависит от того насколько часто Вы используете приложение).";
/* No comment provided by engineer. */
"**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." = "**Обратите внимание**: использование одной и той же базы данных на двух устройствах нарушит расшифровку сообщений от ваших контактов, как свойство защиты соединений.";
/* No comment provided by engineer. */
"**Please note**: you will NOT be able to recover or change passphrase if you lose it." = "**Внимание**: Вы не сможете восстановить или поменять пароль, если Вы его потеряете.";
@@ -94,6 +97,9 @@
/* No comment provided by engineer. */
"**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Внимание**: для работы мгновенных уведомлений пароль должен быть сохранен в Keychain.";
/* No comment provided by engineer. */
"**Warning**: the archive will be removed." = "**Внимание**: архив будет удален.";
/* No comment provided by engineer. */
"*bold*" = "\\*жирный*";
@@ -136,6 +142,9 @@
/* No comment provided by engineer. */
"%@ connected" = "%@ соединен(а)";
/* No comment provided by engineer. */
"%@ downloaded" = "%@ загружено";
/* notification title */
"%@ is connected!" = "Установлено соединение с %@!";
@@ -148,6 +157,9 @@
/* No comment provided by engineer. */
"%@ servers" = "%@ серверы";
/* No comment provided by engineer. */
"%@ uploaded" = "%@ загружено";
/* notification title */
"%@ wants to connect!" = "%@ хочет соединиться!";
@@ -377,6 +389,9 @@
/* member role */
"admin" = "админ";
/* No comment provided by engineer. */
"Admins can block a member for all." = "Админы могут заблокировать члена группы.";
/* No comment provided by engineer. */
"Admins can create the links to join groups." = "Админы могут создать ссылки для вступления в группу.";
@@ -416,6 +431,9 @@
/* No comment provided by engineer. */
"All your contacts will remain connected. Profile update will be sent to your contacts." = "Все Ваши контакты сохранятся. Обновленный профиль будет отправлен Вашим контактам.";
/* No comment provided by engineer. */
"All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." = "Все ваши контакты, разговоры и файлы будут надежно зашифрованы и загружены на выбранные XFTP серверы.";
/* No comment provided by engineer. */
"Allow" = "Разрешить";
@@ -497,6 +515,9 @@
/* No comment provided by engineer. */
"App build: %@" = "Сборка приложения: %@";
/* No comment provided by engineer. */
"App data migration" = "Миграция данных";
/* No comment provided by engineer. */
"App encrypts new local files (except videos)." = "Приложение шифрует новые локальные файлы (кроме видео).";
@@ -518,6 +539,15 @@
/* No comment provided by engineer. */
"Appearance" = "Интерфейс";
/* No comment provided by engineer. */
"Apply" = "Применить";
/* No comment provided by engineer. */
"Archive and upload" = "Архивировать и загрузить";
/* No comment provided by engineer. */
"Archiving database" = "Подготовка архива";
/* No comment provided by engineer. */
"Attach" = "Прикрепить";
@@ -602,13 +632,13 @@
/* No comment provided by engineer. */
"Block member?" = "Заблокировать члена группы?";
/* No comment provided by engineer. */
/* marked deleted chat item preview text */
"blocked" = "заблокировано";
/* rcv group event chat item */
"blocked %@" = "%@ заблокирован";
/* blocked chat item */
/* marked deleted chat item preview text */
"blocked by admin" = "заблокировано администратором";
/* No comment provided by engineer. */
@@ -665,6 +695,9 @@
/* No comment provided by engineer. */
"Cancel" = "Отменить";
/* No comment provided by engineer. */
"Cancel migration" = "Отменить миграцию";
/* feature offered item */
"cancelled %@" = "отменил(a) %@";
@@ -744,6 +777,9 @@
/* No comment provided by engineer. */
"Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat." = "Чат остановлен. Если вы уже использовали эту базу данных на другом устройстве, перенесите ее обратно до запуска чата.";
/* No comment provided by engineer. */
"Chat migrated!" = "Чат мигрирован!";
/* No comment provided by engineer. */
"Chat preferences" = "Предпочтения";
@@ -756,6 +792,9 @@
/* No comment provided by engineer. */
"Chinese and Spanish interface" = "Китайский и Испанский интерфейс";
/* No comment provided by engineer. */
"Choose _Migrate from another device_ on the new device and scan QR code." = "Выберите _Мигрировать с другого устройства_ на новом устройстве и сосканируйте QR код.";
/* No comment provided by engineer. */
"Choose file" = "Выбрать файл";
@@ -801,6 +840,9 @@
/* No comment provided by engineer. */
"Confirm database upgrades" = "Подтвердить обновление базы данных";
/* No comment provided by engineer. */
"Confirm network settings" = "Подтвердите настройки сети";
/* No comment provided by engineer. */
"Confirm new passphrase…" = "Подтвердите новый пароль…";
@@ -810,6 +852,12 @@
/* No comment provided by engineer. */
"Confirm password" = "Подтвердить пароль";
/* No comment provided by engineer. */
"Confirm that you remember database passphrase to migrate it." = "Подтвердите, что Вы помните пароль базы данных для ее миграции.";
/* No comment provided by engineer. */
"Confirm upload" = "Подтвердить загрузку";
/* server test step */
"Connect" = "Соединиться";
@@ -1008,6 +1056,9 @@
/* No comment provided by engineer. */
"Created on %@" = "Дата создания %@";
/* No comment provided by engineer. */
"Creating archive link" = "Создание ссылки на архив";
/* No comment provided by engineer. */
"Creating link…" = "Создаётся ссылка…";
@@ -1155,6 +1206,9 @@
/* No comment provided by engineer. */
"Delete database" = "Удалить данные чата";
/* No comment provided by engineer. */
"Delete database from this device" = "Удалить базу данных с этого устройства";
/* server test step */
"Delete file" = "Удалить файл";
@@ -1347,9 +1401,18 @@
/* No comment provided by engineer. */
"Downgrade and open chat" = "Откатить версию и открыть чат";
/* No comment provided by engineer. */
"Download failed" = "Ошибка загрузки";
/* server test step */
"Download file" = "Загрузка файла";
/* No comment provided by engineer. */
"Downloading archive" = "Загрузка архива";
/* No comment provided by engineer. */
"Downloading link details" = "Загрузка ссылки архива";
/* No comment provided by engineer. */
"Duplicate display name!" = "Имя профиля уже используется!";
@@ -1383,6 +1446,9 @@
/* No comment provided by engineer. */
"Enable for all" = "Включить для всех";
/* No comment provided by engineer. */
"Enable in direct chats (BETA)!" = "Включите для контактов (BETA)!";
/* No comment provided by engineer. */
"Enable instant notifications?" = "Включить мгновенные уведомления?";
@@ -1497,6 +1563,9 @@
/* No comment provided by engineer. */
"Enter Passcode" = "Введите Код";
/* No comment provided by engineer. */
"Enter passphrase" = "Введите пароль";
/* No comment provided by engineer. */
"Enter passphrase…" = "Введите пароль…";
@@ -1536,6 +1605,9 @@
/* No comment provided by engineer. */
"Error adding member(s)" = "Ошибка при добавлении членов группы";
/* No comment provided by engineer. */
"Error allowing contact PQ encryption" = "Ошибка разрешения квантово-устойчивого шифрования";
/* No comment provided by engineer. */
"Error changing address" = "Ошибка при изменении адреса";
@@ -1590,6 +1662,9 @@
/* No comment provided by engineer. */
"Error deleting user profile" = "Ошибка удаления профиля пользователя";
/* No comment provided by engineer. */
"Error downloading the archive" = "Ошибка загрузки архива";
/* No comment provided by engineer. */
"Error enabling delivery receipts!" = "Ошибка при включении отчётов о доставке!";
@@ -1635,6 +1710,9 @@
/* No comment provided by engineer. */
"Error saving passphrase to keychain" = "Ошибка сохранения пароля в Keychain";
/* when migrating */
"Error saving settings" = "Ошибка сохранения настроек";
/* No comment provided by engineer. */
"Error saving user password" = "Ошибка при сохранении пароля пользователя";
@@ -1677,6 +1755,12 @@
/* No comment provided by engineer. */
"Error updating user privacy" = "Ошибка при обновлении конфиденциальности";
/* No comment provided by engineer. */
"Error uploading the archive" = "Ошибка загрузки архива";
/* No comment provided by engineer. */
"Error verifying passphrase:" = "Ошибка подтверждения пароля:";
/* No comment provided by engineer. */
"Error: " = "Ошибка: ";
@@ -1710,6 +1794,9 @@
/* No comment provided by engineer. */
"Exported database archive." = "Архив чата экспортирован.";
/* No comment provided by engineer. */
"Exported file doesn't exist" = "Экспортированный файл не существует";
/* No comment provided by engineer. */
"Exporting database archive…" = "Архив чата экспортируется…";
@@ -1752,6 +1839,12 @@
/* No comment provided by engineer. */
"Filter unread and favorite chats." = "Фильтровать непрочитанные и избранные чаты.";
/* No comment provided by engineer. */
"Finalize migration" = "Завершить миграцию";
/* No comment provided by engineer. */
"Finalize migration on another device." = "Завершите миграцию на другом устройстве.";
/* No comment provided by engineer. */
"Finally, we have them! 🚀" = "Наконец-то, мы их добавили! 🚀";
@@ -1935,6 +2028,9 @@
/* No comment provided by engineer. */
"How to use your servers" = "Как использовать серверы";
/* No comment provided by engineer. */
"Hungarian interface" = "Венгерский интерфейс";
/* No comment provided by engineer. */
"ICE servers (one per line)" = "ICE серверы (один на строке)";
@@ -1974,6 +2070,12 @@
/* No comment provided by engineer. */
"Import database" = "Импорт архива чата";
/* No comment provided by engineer. */
"Import failed" = "Ошибка импорта";
/* No comment provided by engineer. */
"Importing archive" = "Импорт архива";
/* No comment provided by engineer. */
"Improved message delivery" = "Улучшенная доставка сообщений";
@@ -1983,6 +2085,9 @@
/* No comment provided by engineer. */
"Improved server configuration" = "Улучшенная конфигурация серверов";
/* No comment provided by engineer. */
"In order to continue, chat should be stopped." = "Чтобы продолжить, чат должен быть остановлен.";
/* No comment provided by engineer. */
"In reply to" = "В ответ на";
@@ -2067,6 +2172,9 @@
/* No comment provided by engineer. */
"Invalid link" = "Ошибка ссылки";
/* No comment provided by engineer. */
"Invalid migration confirmation" = "Ошибка подтверждения миграции";
/* No comment provided by engineer. */
"Invalid name!" = "Неверное имя!";
@@ -2331,6 +2439,9 @@
/* No comment provided by engineer. */
"Message text" = "Текст сообщения";
/* No comment provided by engineer. */
"Message too large" = "Сообщение слишком большое";
/* No comment provided by engineer. */
"Messages" = "Сообщения";
@@ -2340,9 +2451,36 @@
/* No comment provided by engineer. */
"Messages from %@ will be shown!" = "Сообщения от %@ будут показаны!";
/* No comment provided by engineer. */
"Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." = "Сообщения, файлы и звонки защищены **end-to-end шифрованием** с прямой секретностью (PFS), правдоподобным отрицанием и восстановлением от взлома.";
/* No comment provided by engineer. */
"Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." = "Сообщения, файлы и звонки защищены **квантово-устойчивым end-to-end шифрованием** с прямой секретностью (PFS), правдоподобным отрицанием и восстановлением от взлома.";
/* No comment provided by engineer. */
"Migrate device" = "Мигрировать устройство";
/* No comment provided by engineer. */
"Migrate from another device" = "Миграция с другого устройства";
/* No comment provided by engineer. */
"Migrate here" = "Мигрировать сюда";
/* No comment provided by engineer. */
"Migrate to another device" = "Мигрировать на другое устройство";
/* No comment provided by engineer. */
"Migrate to another device via QR code." = "Мигрируйте на другое устройство через QR код.";
/* No comment provided by engineer. */
"Migrating" = "Миграция";
/* No comment provided by engineer. */
"Migrating database archive…" = "Данные чата перемещаются…";
/* No comment provided by engineer. */
"Migration complete" = "Миграция завершена";
/* No comment provided by engineer. */
"Migration error:" = "Ошибка при перемещении данных:";
@@ -2373,7 +2511,7 @@
/* copied message info */
"Moderated at: %@" = "Модерировано: %@";
/* No comment provided by engineer. */
/* marked deleted chat item preview text */
"moderated by %@" = "удалено %@";
/* time unit */
@@ -2600,6 +2738,9 @@
/* No comment provided by engineer. */
"Open group" = "Открыть группу";
/* authentication reason */
"Open migration to another device" = "Открытие миграции на другое устройство";
/* No comment provided by engineer. */
"Open Settings" = "Открыть Настройки";
@@ -2612,9 +2753,15 @@
/* No comment provided by engineer. */
"Opening app…" = "Приложение отрывается…";
/* No comment provided by engineer. */
"Or paste archive link" = "Или вставьте ссылку архива";
/* No comment provided by engineer. */
"Or scan QR code" = "Или отсканируйте QR код";
/* No comment provided by engineer. */
"Or securely share this file link" = "Или передайте эту ссылку";
/* No comment provided by engineer. */
"Or show this code" = "Или покажите этот код";
@@ -2666,6 +2813,9 @@
/* message decrypt error item */
"Permanent decryption error" = "Ошибка расшифровки";
/* No comment provided by engineer. */
"Picture-in-picture calls" = "Звонки с картинкой-в-картинке";
/* No comment provided by engineer. */
"PING count" = "Количество PING";
@@ -2684,6 +2834,9 @@
/* No comment provided by engineer. */
"Please check yours and your contact preferences." = "Проверьте предпочтения Вашего контакта.";
/* No comment provided by engineer. */
"Please confirm that network settings are correct for this device." = "Пожалуйста, подтвердите, что настройки сети верны для этого устройства.";
/* No comment provided by engineer. */
"Please contact developers.\nError: %@" = "Пожалуйста, сообщите разработчикам.\nОшибка: %@";
@@ -2717,6 +2870,9 @@
/* server test error */
"Possibly, certificate fingerprint in server address is incorrect" = "Возможно, хэш сертификата в адресе сервера неверный";
/* No comment provided by engineer. */
"Post-quantum E2EE" = "Квантово-устойчивое E2EE";
/* No comment provided by engineer. */
"Preserve the last message draft, with attachments." = "Сохранить последний черновик, вместе с вложениями.";
@@ -2798,6 +2954,15 @@
/* No comment provided by engineer. */
"Push notifications" = "Доставка уведомлений";
/* No comment provided by engineer. */
"Push server" = "Сервер уведомлений";
/* chat item text */
"quantum resistant e2e encryption" = "квантово-устойчивое e2e шифрование";
/* No comment provided by engineer. */
"Quantum resistant encryption" = "Квантово-устойчивое шифрование";
/* No comment provided by engineer. */
"Rate the app" = "Оценить приложение";
@@ -2933,9 +3098,18 @@
/* No comment provided by engineer. */
"Repeat connection request?" = "Повторить запрос на соединение?";
/* No comment provided by engineer. */
"Repeat download" = "Повторить загрузку";
/* No comment provided by engineer. */
"Repeat import" = "Повторить импорт";
/* No comment provided by engineer. */
"Repeat join request?" = "Повторить запрос на вступление?";
/* No comment provided by engineer. */
"Repeat upload" = "Повторить загрузку";
/* chat item action */
"Reply" = "Ответить";
@@ -2993,6 +3167,9 @@
/* No comment provided by engineer. */
"Run chat" = "Запустить chat";
/* No comment provided by engineer. */
"Safer groups" = "Более безопасные группы";
/* chat item action */
"Save" = "Сохранить";
@@ -3233,6 +3410,9 @@
/* No comment provided by engineer. */
"Set passcode" = "Установить код доступа";
/* No comment provided by engineer. */
"Set passphrase" = "Установить пароль";
/* No comment provided by engineer. */
"Set passphrase to export" = "Установите пароль";
@@ -3278,6 +3458,9 @@
/* No comment provided by engineer. */
"Show preview" = "Показывать уведомления";
/* No comment provided by engineer. */
"Show QR code" = "Показать QR код";
/* No comment provided by engineer. */
"Show:" = "Показать:";
@@ -3338,6 +3521,9 @@
/* notification title */
"Somebody" = "Контакт";
/* chat item text */
"standard end-to-end encryption" = "стандартное end-to-end шифрование";
/* No comment provided by engineer. */
"Start chat" = "Запустить чат";
@@ -3353,6 +3539,9 @@
/* No comment provided by engineer. */
"Stop" = "Остановить";
/* No comment provided by engineer. */
"Stop chat" = "Остановить чат";
/* No comment provided by engineer. */
"Stop chat to enable database actions" = "Остановите чат, чтобы разблокировать операции с архивом чата";
@@ -3380,6 +3569,9 @@
/* authentication reason */
"Stop SimpleX" = "Остановить SimpleX";
/* No comment provided by engineer. */
"Stopping chat" = "Остановка чата";
/* No comment provided by engineer. */
"strike" = "зачеркнуть";
@@ -3530,6 +3722,12 @@
/* No comment provided by engineer. */
"This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." = "Это действие нельзя отменить — Ваш профиль, контакты, сообщения и файлы будут безвозвратно утеряны.";
/* E2EE info chat item */
"This chat is protected by end-to-end encryption." = "Чат защищен end-to-end шифрованием.";
/* E2EE info chat item */
"This chat is protected by quantum resistant end-to-end encryption." = "Чат защищен квантово-устойчивым end-to-end шифрованием.";
/* notification title */
"this contact" = "этот контакт";
@@ -3722,9 +3920,15 @@
/* No comment provided by engineer. */
"Upgrade and open chat" = "Обновить и открыть чат";
/* No comment provided by engineer. */
"Upload failed" = "Ошибка загрузки";
/* server test step */
"Upload file" = "Загрузка файла";
/* No comment provided by engineer. */
"Uploading archive" = "Загрузка архива";
/* No comment provided by engineer. */
"Use .onion hosts" = "Использовать .onion хосты";
@@ -3755,6 +3959,9 @@
/* No comment provided by engineer. */
"Use SimpleX Chat servers?" = "Использовать серверы предосталенные SimpleX Chat?";
/* No comment provided by engineer. */
"Use the app while in the call." = "Используйте приложение во время звонка.";
/* No comment provided by engineer. */
"User profile" = "Профиль чата";
@@ -3782,6 +3989,12 @@
/* No comment provided by engineer. */
"Verify connections" = "Проверять соединения";
/* No comment provided by engineer. */
"Verify database passphrase" = "Проверка пароля базы данных";
/* No comment provided by engineer. */
"Verify passphrase" = "Проверить пароль";
/* No comment provided by engineer. */
"Verify security code" = "Подтвердить код безопасности";
@@ -3860,6 +4073,9 @@
/* No comment provided by engineer. */
"wants to connect to you!" = "хочет соединиться с Вами!";
/* No comment provided by engineer. */
"Warning: starting chat on multiple devices is not supported and will cause message delivery failures" = "Внимание: запуск чата на нескольких устройствах не поддерживается и приведет к сбоям доставки сообщений";
/* No comment provided by engineer. */
"Warning: you may lose some data!" = "Предупреждение: Вы можете потерять какие то данные!";
@@ -3875,6 +4091,9 @@
/* No comment provided by engineer. */
"Welcome message" = "Приветственное сообщение";
/* No comment provided by engineer. */
"Welcome message is too long" = "Приветственное сообщение слишком длинное";
/* No comment provided by engineer. */
"What's new" = "Новые функции";
@@ -3911,6 +4130,9 @@
/* No comment provided by engineer. */
"You" = "Вы";
/* No comment provided by engineer. */
"You **must not** use the same database on two devices." = "Вы **не должны** использовать одну и ту же базу данных на двух устройствах.";
/* No comment provided by engineer. */
"You accepted connection" = "Вы приняли приглашение соединиться";
@@ -3971,6 +4193,9 @@
/* No comment provided by engineer. */
"You can enable them later via app Privacy & Security settings." = "Вы можете включить их позже в настройках Конфиденциальности.";
/* No comment provided by engineer. */
"You can give another try." = "Вы можете попробовать еще раз.";
/* No comment provided by engineer. */
"You can hide or mute a user profile - swipe it to the right." = "Вы можете скрыть профиль или выключить уведомления - потяните его вправо.";
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -1989,7 +1989,7 @@
/* copied message info */
"Moderated at: %@" = "กลั่นกรองที่: %@";
/* No comment provided by engineer. */
/* marked deleted chat item preview text */
"moderated by %@" = "กลั่นกรองโดย %@";
/* time unit */
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -7,6 +7,9 @@
/* Privacy - Face ID Usage Description */
"NSFaceIDUsageDescription" = "SimpleX використовує Face ID для локальної автентифікації";
/* Privacy - Local Network Usage Description */
"NSLocalNetworkUsageDescription" = "SimpleX використовує доступ до локальної мережі, щоб дозволити користувачеві користуватися профілем чату через десктопну програму в тій же мережі.";
/* Privacy - Microphone Usage Description */
"NSMicrophoneUsageDescription" = "SimpleX потребує доступу до мікрофона для аудіо та відео дзвінків, а також для запису голосових повідомлень.";
+391 -1
View File
@@ -25,6 +25,9 @@
/* No comment provided by engineer. */
"- more stable message delivery.\n- a bit better groups.\n- and more!" = "- 更稳定的传输!\n- 更好的社群!\n- 以及更多!";
/* No comment provided by engineer. */
"- optionally notify deleted contacts.\n- profile names with spaces.\n- and more!" = "- 可选择通知已删除的联系人。\n- 带空格的个人资料名称。\n- 以及更多!";
/* No comment provided by engineer. */
"- voice messages up to 5 minutes.\n- custom time to disappear.\n- editing history." = "- 语音消息最长5分钟。\n- 自定义限时消息。\n- 编辑消息历史。";
@@ -109,12 +112,18 @@
/* No comment provided by engineer. */
"%@ %@" = "%@ %@";
/* No comment provided by engineer. */
"%@ and %@" = "%@ 和 %@";
/* No comment provided by engineer. */
"%@ and %@ connected" = "%@ 和%@ 以建立连接";
/* copied message info, <sender> at <time> */
"%@ at %@:" = "@ %2$@:";
/* No comment provided by engineer. */
"%@ connected" = "%@ 已连接";
/* notification title */
"%@ is connected!" = "%@ 已连接!";
@@ -130,6 +139,9 @@
/* notification title */
"%@ wants to connect!" = "%@ 要连接!";
/* No comment provided by engineer. */
"%@, %@ and %lld members" = "%@, %@ 和 %lld 成员";
/* No comment provided by engineer. */
"%@, %@ and %lld other members connected" = "%@, %@ 和 %lld 个成员";
@@ -169,9 +181,15 @@
/* No comment provided by engineer. */
"%lld file(s) with total size of %@" = "%lld 总文件大小 %@";
/* No comment provided by engineer. */
"%lld group events" = "%lld 群组事件";
/* No comment provided by engineer. */
"%lld members" = "%lld 成员";
/* No comment provided by engineer. */
"%lld messages blocked" = "%lld 条消息已屏蔽";
/* No comment provided by engineer. */
"%lld minutes" = "%lld 分钟";
@@ -305,6 +323,9 @@
/* No comment provided by engineer. */
"Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts." = "将地址添加到您的个人资料,以便您的联系人可以与其他人共享。个人资料更新将发送给您的联系人。";
/* No comment provided by engineer. */
"Add contact" = "添加联系人";
/* No comment provided by engineer. */
"Add preset servers" = "添加预设服务器";
@@ -356,6 +377,9 @@
/* No comment provided by engineer. */
"All group members will remain connected." = "所有群组成员将保持连接。";
/* No comment provided by engineer. */
"All messages will be deleted - this cannot be undone!" = "所有消息都将被删除 - 这无法被撤销!";
/* No comment provided by engineer. */
"All messages will be deleted - this cannot be undone! The messages will be deleted ONLY for you." = "所有聊天记录和消息将被删除——这一行为无法撤销!只有您的消息会被删除。";
@@ -422,6 +446,12 @@
/* No comment provided by engineer. */
"Already connected?" = "已连接?";
/* No comment provided by engineer. */
"Already connecting!" = "已经在连接了!";
/* No comment provided by engineer. */
"Already joining the group!" = "已经加入了该群组!";
/* pref value */
"always" = "始终";
@@ -488,6 +518,9 @@
/* No comment provided by engineer. */
"Authentication unavailable" = "身份验证不可用";
/* member role */
"author" = "作者";
/* No comment provided by engineer. */
"Auto-accept" = "自动接受";
@@ -500,6 +533,9 @@
/* No comment provided by engineer. */
"Back" = "返回";
/* No comment provided by engineer. */
"Bad desktop address" = "糟糕的桌面地址";
/* integrity error chat item */
"bad message hash" = "错误消息散列";
@@ -512,9 +548,42 @@
/* No comment provided by engineer. */
"Bad message ID" = "错误消息 ID";
/* No comment provided by engineer. */
"Better groups" = "更佳的群组";
/* No comment provided by engineer. */
"Better messages" = "更好的消息";
/* No comment provided by engineer. */
"Block" = "封禁";
/* No comment provided by engineer. */
"Block for all" = "为所有人封禁";
/* No comment provided by engineer. */
"Block group members" = "屏蔽群组成员";
/* No comment provided by engineer. */
"Block member" = "封禁成员";
/* No comment provided by engineer. */
"Block member for all?" = "为所有其他成员封禁该成员?";
/* No comment provided by engineer. */
"Block member?" = "封禁成员吗?";
/* marked deleted chat item preview text */
"blocked" = "已封禁";
/* rcv group event chat item */
"blocked %@" = "已封禁 %@";
/* marked deleted chat item preview text */
"blocked by admin" = "由管理员封禁";
/* No comment provided by engineer. */
"Blocked by admin" = "由管理员封禁";
/* No comment provided by engineer. */
"bold" = "加粗";
@@ -554,6 +623,9 @@
/* No comment provided by engineer. */
"Calls" = "通话";
/* No comment provided by engineer. */
"Camera not available" = "相机不可用";
/* No comment provided by engineer. */
"Can't invite contact!" = "无法邀请联系人!";
@@ -639,6 +711,9 @@
/* No comment provided by engineer. */
"Chat is stopped" = "聊天已停止";
/* No comment provided by engineer. */
"Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat." = "聊天已停止。如果你已经在另一台设备商使用过此数据库,你应该在启动聊天前将数据库传输回来。";
/* No comment provided by engineer. */
"Chat preferences" = "聊天偏好设置";
@@ -666,6 +741,9 @@
/* No comment provided by engineer. */
"Clear conversation?" = "清除对话吗?";
/* No comment provided by engineer. */
"Clear private notes?" = "清除私密笔记?";
/* No comment provided by engineer. */
"Clear verification" = "清除验证";
@@ -705,12 +783,21 @@
/* server test step */
"Connect" = "连接";
/* No comment provided by engineer. */
"Connect automatically" = "自动连接";
/* No comment provided by engineer. */
"Connect incognito" = "在隐身状态下连接";
/* No comment provided by engineer. */
"Connect to desktop" = "连接到桌面";
/* No comment provided by engineer. */
"connect to SimpleX Chat developers." = "连接到 SimpleX Chat 开发者。";
/* No comment provided by engineer. */
"Connect to yourself?" = "连接到你自己?";
/* No comment provided by engineer. */
"Connect via link" = "通过链接连接";
@@ -720,9 +807,15 @@
/* No comment provided by engineer. */
"connected" = "已连接";
/* No comment provided by engineer. */
"Connected desktop" = "已连接的桌面";
/* rcv group event chat item */
"connected directly" = "已直连";
/* No comment provided by engineer. */
"Connected to desktop" = "已连接到桌面";
/* No comment provided by engineer. */
"connecting" = "连接中";
@@ -747,6 +840,9 @@
/* No comment provided by engineer. */
"Connecting server… (error: %@)" = "连接服务器中……(错误:%@)";
/* No comment provided by engineer. */
"Connecting to desktop" = "正连接到桌面";
/* chat list item title */
"connecting…" = "连接中……";
@@ -765,6 +861,9 @@
/* No comment provided by engineer. */
"Connection request sent!" = "已发送连接请求!";
/* No comment provided by engineer. */
"Connection terminated" = "连接被终止";
/* No comment provided by engineer. */
"Connection timeout" = "连接超时";
@@ -816,12 +915,18 @@
/* No comment provided by engineer. */
"Create" = "创建";
/* No comment provided by engineer. */
"Create a group using a random profile." = "使用随机身份创建群组";
/* No comment provided by engineer. */
"Create an address to let people connect with you." = "创建一个地址,让人们与您联系。";
/* server test step */
"Create file" = "创建文件";
/* No comment provided by engineer. */
"Create group" = "建群";
/* No comment provided by engineer. */
"Create group link" = "创建群组链接";
@@ -831,6 +936,9 @@
/* No comment provided by engineer. */
"Create new profile in [desktop app](https://simplex.chat/downloads/). 💻" = "在[桌面应用程序](https://simplex.chat/downloads/)中创建新的个人资料。 💻";
/* No comment provided by engineer. */
"Create profile" = "创建个人资料";
/* server test step */
"Create queue" = "创建队列";
@@ -843,9 +951,15 @@
/* No comment provided by engineer. */
"Create your profile" = "创建您的资料";
/* No comment provided by engineer. */
"Created at" = "创建于";
/* No comment provided by engineer. */
"Created on %@" = "创建于 %@";
/* No comment provided by engineer. */
"Creating link…" = "创建链接中…";
/* No comment provided by engineer. */
"creator" = "创建者";
@@ -957,6 +1071,9 @@
/* No comment provided by engineer. */
"Delete all files" = "删除所有文件";
/* No comment provided by engineer. */
"Delete and notify contact" = "删除并通知联系人";
/* No comment provided by engineer. */
"Delete archive" = "删除档案";
@@ -1053,6 +1170,9 @@
/* copied message info */
"Deleted at: %@" = "已删除于:%@";
/* rcv direct event chat item */
"deleted contact" = "已删除联系人";
/* rcv group event chat item */
"deleted group" = "已删除群组";
@@ -1068,6 +1188,12 @@
/* No comment provided by engineer. */
"Description" = "描述";
/* No comment provided by engineer. */
"Desktop address" = "桌面地址";
/* No comment provided by engineer. */
"Desktop devices" = "桌面设备";
/* No comment provided by engineer. */
"Develop" = "开发";
@@ -1131,12 +1257,21 @@
/* server test step */
"Disconnect" = "断开连接";
/* No comment provided by engineer. */
"Disconnect desktop?" = "断开桌面连接?";
/* No comment provided by engineer. */
"Discover and join groups" = "发现和加入群组";
/* No comment provided by engineer. */
"Discover via local network" = "通过本地网络发现";
/* No comment provided by engineer. */
"Do it later" = "稍后再做";
/* No comment provided by engineer. */
"Do not send history to new members." = "不给新成员发送历史消息。";
/* No comment provided by engineer. */
"Do NOT use SimpleX for emergency calls." = "请勿使用 SimpleX 进行紧急通话。";
@@ -1182,6 +1317,9 @@
/* No comment provided by engineer. */
"Enable automatic message deletion?" = "启用自动删除消息?";
/* No comment provided by engineer. */
"Enable camera access" = "启用相机访问";
/* No comment provided by engineer. */
"Enable for all" = "全部启用";
@@ -1269,6 +1407,12 @@
/* chat item text */
"encryption re-negotiation allowed for %@" = "允许对 %@ 进行加密重新协商";
/* message decrypt error item */
"Encryption re-negotiation error" = "加密重协商错误";
/* No comment provided by engineer. */
"Encryption re-negotiation failed." = "加密重协商失败了。";
/* chat item text */
"encryption re-negotiation required" = "需要重新进行加密协商";
@@ -1296,6 +1440,9 @@
/* No comment provided by engineer. */
"Enter server manually" = "手动输入服务器";
/* No comment provided by engineer. */
"Enter this device name…" = "输入此设备名…";
/* placeholder */
"Enter welcome message…" = "输入欢迎消息……";
@@ -1341,6 +1488,9 @@
/* No comment provided by engineer. */
"Error creating member contact" = "创建成员联系人时出错";
/* No comment provided by engineer. */
"Error creating message" = "创建消息出错";
/* No comment provided by engineer. */
"Error creating profile!" = "创建资料错误!";
@@ -1473,6 +1623,9 @@
/* No comment provided by engineer. */
"Exit without saving" = "退出而不保存";
/* chat item action */
"Expand" = "展开";
/* No comment provided by engineer. */
"Export database" = "导出数据库";
@@ -1491,6 +1644,9 @@
/* No comment provided by engineer. */
"Fast and no wait until the sender is online!" = "快速且无需等待发件人在线!";
/* No comment provided by engineer. */
"Faster joining and more reliable messages." = "加入速度更快、信息更可靠。";
/* No comment provided by engineer. */
"Favorite" = "最喜欢";
@@ -1548,6 +1704,9 @@
/* No comment provided by engineer. */
"For console" = "用于控制台";
/* No comment provided by engineer. */
"Found desktop" = "找到了桌面";
/* No comment provided by engineer. */
"French interface" = "法语界面";
@@ -1560,6 +1719,9 @@
/* No comment provided by engineer. */
"Full name:" = "全名:";
/* No comment provided by engineer. */
"Fully decentralized visible only to members." = "完全去中心化 - 仅对成员可见。";
/* No comment provided by engineer. */
"Fully re-implemented - work in background!" = "完全重新实现 - 在后台工作!";
@@ -1572,6 +1734,9 @@
/* No comment provided by engineer. */
"Group" = "群组";
/* No comment provided by engineer. */
"Group already exists!" = "群已存在!";
/* No comment provided by engineer. */
"group deleted" = "群组已删除";
@@ -1671,6 +1836,9 @@
/* No comment provided by engineer. */
"History" = "历史记录";
/* No comment provided by engineer. */
"History is not sent to new members." = "未发送历史消息给新成员。";
/* time unit */
"hours" = "小时";
@@ -1728,6 +1896,9 @@
/* No comment provided by engineer. */
"Import database" = "导入数据库";
/* No comment provided by engineer. */
"Improved message delivery" = "改进了消息传递";
/* No comment provided by engineer. */
"Improved privacy and security" = "改进的隐私和安全";
@@ -1740,6 +1911,9 @@
/* No comment provided by engineer. */
"Incognito" = "隐身聊天";
/* No comment provided by engineer. */
"Incognito groups" = "匿名群组";
/* No comment provided by engineer. */
"Incognito mode" = "隐身模式";
@@ -1767,6 +1941,9 @@
/* No comment provided by engineer. */
"Incompatible database version" = "数据库版本不兼容";
/* No comment provided by engineer. */
"Incompatible version" = "不兼容的版本";
/* PIN entry */
"Incorrect passcode" = "密码错误";
@@ -1806,6 +1983,15 @@
/* invalid chat item */
"invalid data" = "无效数据";
/* No comment provided by engineer. */
"Invalid display name!" = "无效的显示名!";
/* No comment provided by engineer. */
"Invalid name!" = "无效名称!";
/* No comment provided by engineer. */
"Invalid QR code" = "无效的二维码";
/* No comment provided by engineer. */
"Invalid server address!" = "无效的服务器地址!";
@@ -1884,12 +2070,24 @@
/* No comment provided by engineer. */
"Join group" = "加入群组";
/* No comment provided by engineer. */
"Join group conversations" = "加入群对话";
/* No comment provided by engineer. */
"Join group?" = "加入群组?";
/* No comment provided by engineer. */
"Join incognito" = "加入隐身聊天";
/* No comment provided by engineer. */
"Joining group" = "加入群组中";
/* No comment provided by engineer. */
"Keep" = "保留";
/* No comment provided by engineer. */
"Keep unused invitation?" = "保留未使用的邀请吗?";
/* No comment provided by engineer. */
"Keep your connections" = "保持连接";
@@ -1926,6 +2124,15 @@
/* No comment provided by engineer. */
"Limitations" = "限制";
/* No comment provided by engineer. */
"Link mobile and desktop apps! 🔗" = "连接移动端和桌面端应用程序!🔗";
/* No comment provided by engineer. */
"Linked desktop options" = "已链接桌面选项";
/* No comment provided by engineer. */
"Linked desktops" = "已链接桌面";
/* No comment provided by engineer. */
"LIVE" = "实时";
@@ -2067,7 +2274,7 @@
/* copied message info */
"Moderated at: %@" = "已被管理员移除于:%@";
/* No comment provided by engineer. */
/* marked deleted chat item preview text */
"moderated by %@" = "由 %@ 审核";
/* time unit */
@@ -2106,6 +2313,9 @@
/* No comment provided by engineer. */
"never" = "从不";
/* No comment provided by engineer. */
"New chat" = "新聊天";
/* notification */
"New contact request" = "新联系人请求";
@@ -2181,6 +2391,9 @@
/* copied message info in history */
"no text" = "无文本";
/* No comment provided by engineer. */
"Not compatible!" = "不兼容!";
/* No comment provided by engineer. */
"Notifications" = "通知";
@@ -2210,6 +2423,9 @@
/* No comment provided by engineer. */
"Ok" = "好的";
/* No comment provided by engineer. */
"OK" = "好的";
/* No comment provided by engineer. */
"Old database" = "旧的数据库";
@@ -2282,6 +2498,9 @@
/* authentication reason */
"Open chat console" = "打开聊天控制台";
/* No comment provided by engineer. */
"Open group" = "打开群";
/* No comment provided by engineer. */
"Open Settings" = "打开设置";
@@ -2291,6 +2510,12 @@
/* No comment provided by engineer. */
"Open-source protocol and code anybody can run the servers." = "开源协议和代码——任何人都可以运行服务器。";
/* No comment provided by engineer. */
"Or scan QR code" = "或者扫描二维码";
/* No comment provided by engineer. */
"Or show this code" = "或者显示此码";
/* member role */
"owner" = "群主";
@@ -2312,9 +2537,18 @@
/* No comment provided by engineer. */
"Password to show" = "显示密码";
/* No comment provided by engineer. */
"Paste desktop address" = "粘贴桌面地址";
/* No comment provided by engineer. */
"Paste image" = "粘贴图片";
/* No comment provided by engineer. */
"Paste link to connect!" = "粘贴链接以连接!";
/* No comment provided by engineer. */
"Paste the link you received" = "粘贴您收到的链接";
/* No comment provided by engineer. */
"peer-to-peer" = "点对点";
@@ -2396,12 +2630,18 @@
/* No comment provided by engineer. */
"Private filenames" = "私密文件名";
/* name of notes to self */
"Private notes" = "私密笔记";
/* No comment provided by engineer. */
"Profile and server connections" = "资料和服务器连接";
/* No comment provided by engineer. */
"Profile image" = "资料图片";
/* No comment provided by engineer. */
"Profile name:" = "显示名:";
/* No comment provided by engineer. */
"Profile password" = "个人资料密码";
@@ -2462,6 +2702,9 @@
/* No comment provided by engineer. */
"Read more in [User Guide](https://simplex.chat/docs/guide/app-settings.html#your-simplex-contact-address)." = "在 [用户指南](https://simplex.chat/docs/guide/app-settings.html#your-simplex-contact-address) 中阅读更多内容。";
/* No comment provided by engineer. */
"Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." = "阅读更多[User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)。";
/* No comment provided by engineer. */
"Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends)." = "在 [用户指南](https://simplex.chat/docs/guide/readme.html#connect-to-friends) 中阅读更多内容。";
@@ -2555,6 +2798,12 @@
/* rcv group event chat item */
"removed %@" = "已删除 %@";
/* profile update event chat item */
"removed contact address" = "删除了联系地址";
/* profile update event chat item */
"removed profile picture" = "删除了资料图片";
/* rcv group event chat item */
"removed you" = "已将您移除";
@@ -2567,6 +2816,12 @@
/* No comment provided by engineer. */
"Renegotiate encryption?" = "重新协商加密?";
/* No comment provided by engineer. */
"Repeat connection request?" = "重复连接请求吗?";
/* No comment provided by engineer. */
"Repeat join request?" = "重复加入请求吗?";
/* chat item action */
"Reply" = "回复";
@@ -2600,6 +2855,9 @@
/* No comment provided by engineer. */
"Restore database error" = "恢复数据库错误";
/* No comment provided by engineer. */
"Retry" = "重试";
/* chat item action */
"Reveal" = "揭示";
@@ -2669,6 +2927,9 @@
/* No comment provided by engineer. */
"Save welcome message?" = "保存欢迎信息?";
/* message info title */
"Saved message" = "已保存的消息";
/* No comment provided by engineer. */
"Saved WebRTC ICE servers will be removed" = "已保存的WebRTC ICE服务器将被删除";
@@ -2678,6 +2939,9 @@
/* No comment provided by engineer. */
"Scan QR code" = "扫描二维码";
/* No comment provided by engineer. */
"Scan QR code from desktop" = "从桌面扫描二维码";
/* No comment provided by engineer. */
"Scan security code from your contact's app." = "从您联系人的应用程序中扫描安全码。";
@@ -2687,6 +2951,12 @@
/* No comment provided by engineer. */
"Search" = "搜索";
/* No comment provided by engineer. */
"Search bar accepts invitation links." = "搜索栏接受邀请链接。";
/* No comment provided by engineer. */
"Search or paste SimpleX link" = "搜索或粘贴 SimpleX 链接";
/* network option */
"sec" = "秒";
@@ -2765,6 +3035,9 @@
/* No comment provided by engineer. */
"Send them from gallery or custom keyboards." = "发送它们来自图库或自定义键盘。";
/* No comment provided by engineer. */
"Send up to 100 last messages to new members." = "给新成员发送最多 100 条历史消息。";
/* No comment provided by engineer. */
"Sender cancelled file transfer." = "发送人已取消文件传输。";
@@ -2822,6 +3095,9 @@
/* No comment provided by engineer. */
"Servers" = "服务器";
/* No comment provided by engineer. */
"Session code" = "会话码";
/* No comment provided by engineer. */
"Set 1 day" = "设定1天";
@@ -2834,6 +3110,12 @@
/* No comment provided by engineer. */
"Set it instead of system authentication." = "设置它以代替系统身份验证。";
/* profile update event chat item */
"set new contact address" = "设置新的联系地址";
/* profile update event chat item */
"set new profile picture" = "设置新的资料图片";
/* No comment provided by engineer. */
"Set passcode" = "设置密码";
@@ -2864,6 +3146,9 @@
/* No comment provided by engineer. */
"Share link" = "分享链接";
/* No comment provided by engineer. */
"Share this 1-time invite link" = "分享此一次性邀请链接";
/* No comment provided by engineer. */
"Share with contacts" = "与联系人分享";
@@ -2942,6 +3227,9 @@
/* No comment provided by engineer. */
"Start chat" = "开始聊天";
/* No comment provided by engineer. */
"Start chat?" = "启动聊天吗?";
/* No comment provided by engineer. */
"Start migration" = "开始迁移";
@@ -3002,12 +3290,21 @@
/* No comment provided by engineer. */
"Tap to activate profile." = "点击以激活个人资料。";
/* No comment provided by engineer. */
"Tap to Connect" = "轻按连接";
/* No comment provided by engineer. */
"Tap to join" = "点击加入";
/* No comment provided by engineer. */
"Tap to join incognito" = "点击以加入隐身聊天";
/* No comment provided by engineer. */
"Tap to paste link" = "轻按粘贴链接";
/* No comment provided by engineer. */
"Tap to scan" = "轻按扫描";
/* No comment provided by engineer. */
"Tap to start a new chat" = "点击开始一个新聊天";
@@ -3053,6 +3350,9 @@
/* No comment provided by engineer. */
"The attempt to change database passphrase was not completed." = "更改数据库密码的尝试未完成。";
/* No comment provided by engineer. */
"The code you scanned is not a SimpleX link QR code." = "您扫描的码不是 SimpleX 链接的二维码。";
/* No comment provided by engineer. */
"The connection you accepted will be cancelled!" = "您接受的连接将被取消!";
@@ -3095,6 +3395,9 @@
/* No comment provided by engineer. */
"The servers for new connections of your current chat profile **%@**." = "您当前聊天资料 **%@** 的新连接服务器。";
/* No comment provided by engineer. */
"The text you pasted is not a SimpleX link." = "您粘贴的文本不是 SimpleX 链接。";
/* No comment provided by engineer. */
"Theme" = "主题";
@@ -3116,12 +3419,24 @@
/* notification title */
"this contact" = "这个联系人";
/* No comment provided by engineer. */
"This device name" = "此设备名称";
/* No comment provided by engineer. */
"This display name is invalid. Please choose another name." = "显示名无效。请另选一个名称。";
/* No comment provided by engineer. */
"This group has over %lld members, delivery receipts are not sent." = "该组有超过 %lld 个成员,不发送送货单。";
/* No comment provided by engineer. */
"This group no longer exists." = "该群组已不存在。";
/* No comment provided by engineer. */
"This is your own one-time link!" = "这是你自己的一次性链接!";
/* No comment provided by engineer. */
"This is your own SimpleX address!" = "这是你自己的 SimpleX 地址!";
/* No comment provided by engineer. */
"This setting applies to messages in your current chat profile **%@**." = "此设置适用于您当前聊天资料 **%@** 中的消息。";
@@ -3131,6 +3446,9 @@
/* No comment provided by engineer. */
"To connect, your contact can scan QR code or use the link in the app." = "您的联系人可以扫描二维码或使用应用程序中的链接来建立连接。";
/* No comment provided by engineer. */
"To hide unwanted messages." = "隐藏不需要的信息。";
/* No comment provided by engineer. */
"To make a new connection" = "建立新连接";
@@ -3176,6 +3494,21 @@
/* No comment provided by engineer. */
"Unable to record voice message" = "无法录制语音消息";
/* No comment provided by engineer. */
"Unblock" = "解封";
/* No comment provided by engineer. */
"Unblock for all" = "为所有人解封";
/* No comment provided by engineer. */
"Unblock member" = "解封成员";
/* No comment provided by engineer. */
"Unblock member for all?" = "为所有其他成员解封该成员?";
/* No comment provided by engineer. */
"Unblock member?" = "解封成员吗?";
/* item status description */
"Unexpected error: %@" = "意外错误: @";
@@ -3209,12 +3542,21 @@
/* No comment provided by engineer. */
"Unknown error" = "未知错误";
/* No comment provided by engineer. */
"unknown status" = "未知状态";
/* No comment provided by engineer. */
"Unless you use iOS call interface, enable Do Not Disturb mode to avoid interruptions." = "除非您使用 iOS 通话界面,否则请启用请勿打扰模式以避免打扰。";
/* No comment provided by engineer. */
"Unless your contact deleted the connection or this link was already used, it might be a bug - please report it.\nTo connect, please ask your contact to create another connection link and check that you have a stable network connection." = "除非您的联系人已删除此连接或此链接已被使用,否则它可能是一个错误——请报告。\n如果要连接,请让您的联系人创建另一个连接链接,并检查您的网络连接是否稳定。";
/* No comment provided by engineer. */
"Unlink" = "取消链接";
/* No comment provided by engineer. */
"Unlink desktop?" = "取消链接桌面端?";
/* No comment provided by engineer. */
"Unlock" = "解锁";
@@ -3227,6 +3569,9 @@
/* No comment provided by engineer. */
"Unread" = "未读";
/* No comment provided by engineer. */
"Up to 100 last messages are sent to new members." = "给新成员发送了最多 100 条历史消息。";
/* No comment provided by engineer. */
"Update" = "更新";
@@ -3245,6 +3590,9 @@
/* rcv group event chat item */
"updated group profile" = "已更新的群组资料";
/* profile update event chat item */
"updated profile" = "更新了资料";
/* No comment provided by engineer. */
"Updating settings will re-connect the client to all servers." = "更新设置会将客户端重新连接到所有服务器。";
@@ -3269,6 +3617,9 @@
/* No comment provided by engineer. */
"Use for new connections" = "用于新连接";
/* No comment provided by engineer. */
"Use from desktop" = "从桌面端使用";
/* No comment provided by engineer. */
"Use iOS call interface" = "使用 iOS 通话界面";
@@ -3293,9 +3644,18 @@
/* No comment provided by engineer. */
"v%@ (%@)" = "v%@ (%@)";
/* No comment provided by engineer. */
"Verify code with desktop" = "用桌面端验证代码";
/* No comment provided by engineer. */
"Verify connection" = "验证连接";
/* No comment provided by engineer. */
"Verify connection security" = "验证连接安全";
/* No comment provided by engineer. */
"Verify connections" = "验证连接";
/* No comment provided by engineer. */
"Verify security code" = "验证安全码";
@@ -3314,6 +3674,9 @@
/* No comment provided by engineer. */
"via relay" = "通过中继";
/* No comment provided by engineer. */
"Via secure quantum resistant protocol." = "通过安全的、抗量子计算机破解的协议。";
/* No comment provided by engineer. */
"Video call" = "视频通话";
@@ -3332,6 +3695,9 @@
/* No comment provided by engineer. */
"View security code" = "查看安全码";
/* chat feature */
"Visible history" = "可见的历史";
/* No comment provided by engineer. */
"Voice message…" = "语音消息……";
@@ -3392,9 +3758,15 @@
/* No comment provided by engineer. */
"When you share an incognito profile with somebody, this profile will be used for the groups they invite you to." = "当您与某人共享隐身聊天资料时,该资料将用于他们邀请您加入的群组。";
/* No comment provided by engineer. */
"With encrypted files and media." = "加密的文件和媒体。";
/* No comment provided by engineer. */
"With optional welcome message." = "带有可选的欢迎消息。";
/* No comment provided by engineer. */
"With reduced battery usage." = "降低了电量使用。";
/* No comment provided by engineer. */
"Wrong database passphrase" = "数据库密码错误";
@@ -3422,6 +3794,12 @@
/* No comment provided by engineer. */
"You are already connected to %@." = "您已经连接到 %@。";
/* No comment provided by engineer. */
"You are already connecting via this one-time link!" = "你已经在通过这个一次性链接进行连接!";
/* No comment provided by engineer. */
"You are already joining the group via this link." = "你已经在通过此链接加入该群。";
/* No comment provided by engineer. */
"You are connected to the server used to receive messages from this contact." = "您已连接到用于接收该联系人消息的服务器。";
@@ -3449,6 +3827,9 @@
/* No comment provided by engineer. */
"You can hide or mute a user profile - swipe it to the right." = "您可以隐藏或静音用户个人资料——只需向右滑动。";
/* No comment provided by engineer. */
"You can make it visible to your SimpleX contacts via Settings." = "你可以通过设置让它对你的 SimpleX 联系人可见。";
/* notification body */
"You can now send messages to %@" = "您现在可以给 %@ 发送消息";
@@ -3473,6 +3854,9 @@
/* No comment provided by engineer. */
"You can use markdown to format messages:" = "您可以使用 markdown 来编排消息格式:";
/* No comment provided by engineer. */
"You can view invitation link again in connection details." = "您可以在连接详情中再次查看邀请链接。";
/* No comment provided by engineer. */
"You can't send messages!" = "您无法发送消息!";
@@ -3494,6 +3878,9 @@
/* No comment provided by engineer. */
"You could not be verified; please try again." = "您的身份无法验证,请再试一次。";
/* No comment provided by engineer. */
"You have already requested connection via this address!" = "你已经请求通过此地址进行连接!";
/* No comment provided by engineer. */
"You have no chats" = "您没有聊天记录";
@@ -3545,6 +3932,9 @@
/* No comment provided by engineer. */
"You will be required to authenticate when you start or resume the app after 30 seconds in background." = "当您启动应用或在应用程序驻留后台超过30 秒后,您将需要进行身份验证。";
/* No comment provided by engineer. */
"You will connect to all group members." = "你将连接到所有群成员。";
/* No comment provided by engineer. */
"You will still receive calls and notifications from muted profiles when they are active." = "当静音配置文件处于活动状态时,您仍会收到来自静音配置文件的电话和通知。";
+39 -37
View File
@@ -8,12 +8,14 @@ plugins {
}
android {
compileSdkVersion(34)
compileSdk = 34
defaultConfig {
applicationId = "chat.simplex.app"
minSdkVersion(28)
targetSdkVersion(33)
namespace = "chat.simplex.app"
minSdk = 28
//noinspection OldTargetApi
targetSdk = 33
// !!!
// skip version code after release to F-Droid, as it uses two version codes
versionCode = (extra["android.version_code"] as String).toInt()
@@ -46,12 +48,7 @@ android {
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = "1.8"
freeCompilerArgs += "-opt-in=kotlinx.coroutines.DelicateCoroutinesApi"
freeCompilerArgs += "-opt-in=androidx.compose.foundation.ExperimentalFoundationApi"
freeCompilerArgs += "-opt-in=androidx.compose.ui.text.ExperimentalTextApi"
@@ -71,18 +68,20 @@ android {
isMinifyEnabled = false
}
}
packagingOptions {
buildFeatures {
buildConfig = true
}
packaging {
resources {
excludes += "/META-INF/{AL2.0,LGPL2.1}"
}
jniLibs.useLegacyPackaging = rootProject.extra["compression.level"] as Int != 0
}
android.sourceSets["main"].assets.setSrcDirs(listOf("../common/src/commonMain/resources/assets"))
val isRelease = gradle.startParameter.taskNames.find { it.toLowerCase().contains("release") } != null
val isBundle = gradle.startParameter.taskNames.find { it.toLowerCase().contains("bundle") } != null
// if (isRelease) {
val isRelease = gradle.startParameter.taskNames.find { it.lowercase().contains("release") } != null
val isBundle = gradle.startParameter.taskNames.find { it.lowercase().contains("bundle") } != null
// Comma separated list of languages that will be included in the apk
android.defaultConfig.resConfigs(
android.defaultConfig.resourceConfigurations += listOf(
"en",
"ar",
"bg",
@@ -104,7 +103,7 @@ android {
"uk",
"zh-rCN"
)
// }
ndkVersion = "23.1.7779620"
if (isBundle) {
defaultConfig.ndk.abiFilters("arm64-v8a", "armeabi-v7a")
} else {
@@ -125,41 +124,44 @@ android {
dependencies {
implementation(project(":common"))
implementation("androidx.core:core-ktx:1.7.0")
implementation("androidx.core:core-ktx:1.12.0")
//implementation("androidx.compose.ui:ui:${rootProject.extra["compose.version"] as String}")
//implementation("androidx.compose.material:material:$compose_version")
//implementation("androidx.compose.ui:ui-tooling-preview:$compose_version")
implementation("androidx.appcompat:appcompat:1.5.1")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.4.1")
implementation("androidx.lifecycle:lifecycle-process:2.4.1")
implementation("androidx.activity:activity-compose:1.5.0")
val work_version = "2.7.1"
implementation("androidx.work:work-runtime-ktx:$work_version")
implementation("androidx.work:work-multiprocess:$work_version")
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0")
implementation("androidx.lifecycle:lifecycle-process:2.7.0")
implementation("androidx.activity:activity-compose:1.8.2")
val workVersion = "2.9.0"
implementation("androidx.work:work-runtime-ktx:$workVersion")
implementation("androidx.work:work-multiprocess:$workVersion")
implementation("com.jakewharton:process-phoenix:2.1.2")
implementation("com.jakewharton:process-phoenix:2.2.0")
//Camera Permission
implementation("com.google.accompanist:accompanist-permissions:0.23.0")
//implementation("androidx.compose.material:material-icons-extended:$compose_version")
//implementation("androidx.compose.ui:ui-util:$compose_version")
testImplementation("junit:junit:4.13.2")
androidTestImplementation("androidx.test.ext:junit:1.1.3")
androidTestImplementation("androidx.test.espresso:espresso-core:3.4.0")
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
//androidTestImplementation("androidx.compose.ui:ui-test-junit4:$compose_version")
debugImplementation("androidx.compose.ui:ui-tooling:1.4.3")
debugImplementation("androidx.compose.ui:ui-tooling:1.6.4")
}
tasks {
val compressApk by creating {
doLast {
val isRelease = gradle.startParameter.taskNames.find { it.toLowerCase().contains("release") } != null
val isRelease = gradle.startParameter.taskNames.find { it.lowercase().contains("release") } != null
val buildType: String = if (isRelease) "release" else "debug"
val javaHome = System.getProperties()["java.home"] ?: org.gradle.internal.jvm.Jvm.current().javaHome
val sdkDir = android.sdkDirectory.absolutePath
var keyAlias = ""
var keyPassword = ""
var storeFile = ""
var storePassword = ""
val keyAlias: String
val keyPassword: String
val storeFile: String
val storePassword: String
if (project.properties["android.injected.signing.key.alias"] != null) {
keyAlias = project.properties["android.injected.signing.key.alias"] as String
keyPassword = project.properties["android.injected.signing.key.password"] as String
@@ -184,16 +186,16 @@ tasks {
}
exec {
workingDir("../../../scripts/android")
setEnvironment(mapOf("JAVA_HOME" to "$javaHome"))
environment = mapOf("JAVA_HOME" to "$javaHome")
commandLine = listOf(
"./compress-and-sign-apk.sh",
"${rootProject.extra["compression.level"]}",
"$outputDir",
"$sdkDir",
"$storeFile",
"$storePassword",
"$keyAlias",
"$keyPassword"
sdkDir,
storeFile,
storePassword,
keyAlias,
keyPassword
)
}
@@ -89,11 +89,12 @@ class MainActivity: FragmentActivity() {
}
override fun onBackPressed() {
if (
onBackPressedDispatcher.hasEnabledCallbacks() // Has something to do in a backstack
|| Build.VERSION.SDK_INT >= Build.VERSION_CODES.R // Android 11 or above
|| isTaskRoot // there are still other tasks after we reach the main (home) activity
) {
val canFinishActivity = (
onBackPressedDispatcher.hasEnabledCallbacks() // Has something to do in a backstack
|| Build.VERSION.SDK_INT >= Build.VERSION_CODES.R // Android 11 or above
|| isTaskRoot // there are still other tasks after we reach the main (home) activity
) && SimplexApp.context.chatModel.sharedContent.value !is SharedContent.Forward
if (canFinishActivity) {
// https://medium.com/mobile-app-development-publication/the-risk-of-android-strandhogg-security-issue-and-how-it-can-be-mitigated-80d2ddb4af06
super.onBackPressed()
}
@@ -104,9 +105,15 @@ class MainActivity: FragmentActivity() {
AppLock.laFailed.value = true
}
if (!onBackPressedDispatcher.hasEnabledCallbacks()) {
val sharedContent = chatModel.sharedContent.value
// Drop shared content
SimplexApp.context.chatModel.sharedContent.value = null
finish()
chatModel.sharedContent.value = null
if (sharedContent is SharedContent.Forward) {
chatModel.chatId.value = sharedContent.fromChatInfo.id
}
if (canFinishActivity) {
finish()
}
}
}
}
@@ -16,8 +16,7 @@ import androidx.work.*
import chat.simplex.app.model.NtfManager
import chat.simplex.app.model.NtfManager.AcceptCallAction
import chat.simplex.app.views.call.CallActivity
import chat.simplex.common.helpers.APPLICATION_ID
import chat.simplex.common.helpers.requiresIgnoringBattery
import chat.simplex.common.helpers.*
import chat.simplex.common.model.*
import chat.simplex.common.model.ChatController.appPrefs
import chat.simplex.common.model.ChatModel.updatingChatsMutex
@@ -291,6 +290,10 @@ class SimplexApp: Application(), LifecycleEventObserver {
activeCallDestroyWebView()
}
override fun androidRestartNetworkObserver() {
NetworkObserver.shared.restartNetworkObserver()
}
@SuppressLint("SourceLockedOrientationActivity")
@Composable
override fun androidLockPortraitOrientation() {
@@ -6,6 +6,7 @@ import android.content.*
import android.content.pm.PackageManager
import android.net.Uri
import android.os.*
import android.os.SystemClock
import android.provider.Settings
import androidx.compose.foundation.layout.*
import androidx.compose.material.*
@@ -4,6 +4,7 @@ import android.app.*
import android.app.TaskStackBuilder
import android.content.*
import android.content.pm.PackageManager
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.hardware.display.DisplayManager
import android.media.AudioAttributes
@@ -218,7 +219,7 @@ object NtfManager {
.setGroup(MessageGroup)
.setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_CHILDREN)
.setSmallIcon(R.drawable.ntf_icon)
.setLargeIcon(null)
.setLargeIcon(null as Bitmap?)
.setColor(0x88FFFF)
.setAutoCancel(true)
.setVibrate(null)

Some files were not shown because too many files have changed in this diff Show More