2
0
mirror of https://github.com/KDE/kdeconnect-android synced 2025-09-01 06:35:09 +00:00

Compare commits

..

181 Commits

Author SHA1 Message Date
Albert Vaca
a918f0cfe6 Bump version to release 2019-03-20 23:12:11 +01:00
Albert Vaca
aada931d6a Re-enable SMS plugin now that we know the secrets to approval 2019-03-20 23:11:58 +01:00
Albert Vaca
eed77c530b Revert "Stop using ClassIndex, it seems to be causing problems"
This reverts commit 7799f7e817.
2019-03-20 22:35:27 +01:00
Albert Vaca
3b7edf2d2f Merge branch 'master' into play-store 2019-03-20 22:28:53 +01:00
Albert Vaca
37657388c6 Uppercasing some stuff 2019-03-20 22:14:27 +01:00
Albert Vaca
360e4bc1cb Fix ConcurrentModificationException
When onPacketReceived was called at the same time as getSinks, because
getSinks uses .values() and onPacketReceived does .put()
2019-03-20 22:12:53 +01:00
Albert Vaca
b689548aa9 Remove private API usage 2019-03-20 22:07:02 +01:00
Albert Vaca
adac026dfa Change RunCommand to runWithPlugin 2019-03-20 22:06:45 +01:00
Nicolas Fella
d513a5305a Show device name in MPRIS notification 2019-03-20 20:50:06 +00:00
Albert Vaca
4d38f9753c Disable plugin that breaks on Android 4 2019-03-20 09:42:32 +01:00
Albert Vaca
18548fb6df Added missing "unregister" 2019-03-20 09:36:36 +01:00
l10n daemon script
fd5738aa99 GIT_SILENT made messages (after extraction) 2019-03-20 03:06:17 +01:00
Albert Vaca Cintora
7799f7e817 Stop using ClassIndex, it seems to be causing problems 2019-03-19 22:50:22 +01:00
Albert Vaca
8db8937927 Update version to release (to Play Store only) 2019-03-19 09:03:30 +01:00
Albert Vaca
13e6f2d250 Emergency update to fix Play Store's policy violation
- Make TelephonyPlugin only handle calls and not texts
- Disable SMSPlugin.
- Stop using READ_CALL_LOG permission (for contact names)
2019-03-19 09:00:45 +01:00
l10n daemon script
34db7f682f GIT_SILENT made messages (after extraction) 2019-03-19 03:07:26 +01:00
Nicolas Fella
f7763bf5a9 Request READ_CALL_LOG permission 2019-03-18 01:34:51 +00:00
Nicolas Fella
fb2859c24d Prompt user to enable remote keyboard 2019-03-17 14:42:16 +00:00
Nicolas Fella
145fa4f009 Remove dead code 2019-03-17 14:41:49 +00:00
l10n daemon script
e7f203ee3a GIT_SILENT made messages (after extraction) 2019-03-17 03:05:08 +01:00
l10n daemon script
c9feafb982 GIT_SILENT made messages (after extraction) 2019-03-14 03:01:50 +01:00
l10n daemon script
18c344bbc2 GIT_SILENT made messages (after extraction) 2019-03-13 03:10:45 +01:00
l10n daemon script
d73c8e914f GIT_SILENT made messages (after extraction) 2019-03-12 03:04:33 +01:00
l10n daemon script
86f4803083 GIT_SILENT made messages (after extraction) 2019-03-11 03:06:09 +01:00
l10n daemon script
eb875dceb0 GIT_SILENT made messages (after extraction) 2019-03-10 03:07:44 +01:00
Matthijs Tijink
3e85dd6160 Add all missing MPRIS properties in the media session control
Also simplified some code.
2019-03-09 20:06:32 +00:00
Matthijs Tijink
f9bc3f8e0b Block KDE Connect as media session
Also re-enable the media session mpris remote again
2019-03-09 13:57:33 +00:00
l10n daemon script
35ac407aee GIT_SILENT made messages (after extraction) 2019-03-09 03:06:44 +01:00
Albert Vaca Cintora
e033aad425 Bump version to release 2019-03-08 19:31:27 +01:00
Erik Duisters
f2e505b8af Allow shares from desktop to be canceled
Summary:
Allow in progress file transfers to be canceled

BUG: 349956

{F6373048}

{F6373050}

{F6373051}

Test Plan:
Send a large file from desktop to android
Press cancel in the progress notification

Result: the file transfer is cancelled and the cancelled file is deleted from storage

Reviewers: #kde_connect, nicolasfella, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: albertvaka, nicolasfella, kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D16491
2019-03-08 19:08:29 +01:00
Erik Duisters
a6fdddf843 Use Storage Access Framework on SDK >= 21 (Lollipop and above)
Summary:
Use Storage Access Framework on Android running SDK >= 21 so writing to
sdcard will work again

|{F6546802}|{F6546803}|{F6546804}|
|API 21+|API 19-|Edit|

Test Plan:
Install patch on Android phone with Build.Version < 19 (Kitkat)

- Without a sdcard: Verify that dolphin displays an "All Files" entry that is empty
- With a sdcard and with "Add camera folder shortcut" turned off: Verify that dolphin displays the configured display name of the sdcard
- With a sdcard and with "Add camera folder shortcut" turned on: Verify that dolphin displays the configured display name of the sdcard and also lists a "Camera pictures" shortcut
- With a sdcard: Verify that when changing the display name or the "Add camera folder shortcut" preference dolphin displays the updated items (after pressing F5)
- With a sdcard: Verify that files can be read and written to/from the sdcard

Install patch on Android phone with Build.Version < 19 (Kitkat)
- Repeat the above tests except for the read/write test: Verify that files can be read from the sdcard

Install patch on Android phone with Build.Version > 21 (Lollipop)

- Without any configured storage locations: Verify dolphin displays an "All Files" entry that is empty
- With configured storage locations: Verify dolphin displays the display names of the configured storage locations and that entering a location displays the correct directory entries
- Make one or several changes to the configured storage locations: Verify dolphin displays the display names of the configured storage locations (after pressing F5) and that entering a location displays the correct directory entries

Reviewers: #kde_connect, albertvaka, sredman

Reviewed By: #kde_connect, albertvaka, sredman

Subscribers: albertvaka, sredman, kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D18212
2019-03-08 15:02:10 +01:00
Albert Vaca Cintora
f48b5612c7 Fragments must be public classes
Otherwise they crash at runtime when launched
2019-03-08 14:50:35 +01:00
Albert Vaca
f568c420fa Bump version to release 2019-03-07 12:28:29 +01:00
Albert Vaca
0226712ab5 Upgrade gradle plugin 2019-03-07 12:19:20 +01:00
Albert Vaca
e4275d85f6 Change the plugin description, it doesn't actually take pictures
It might be misleading for people who don't know what this plugin does.
2019-03-07 12:12:41 +01:00
l10n daemon script
123ce99017 GIT_SILENT made messages (after extraction) 2019-03-07 03:06:26 +01:00
l10n daemon script
e1f6f02d75 GIT_SILENT made messages (after extraction) 2019-03-06 03:07:19 +01:00
Nicolas Fella
1c89b0460a Fix file opening
Summary: During the SharePlugin refactoring the way the mime type was determined changed which broke opening files from the desktop.

Test Plan: I can open pkpass/jsonld files in Itinerary again

Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: eduisters, kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17976
2019-03-05 00:28:51 +01:00
Nicolas Fella
7648e8cf33 Actually load plugin 2019-03-04 23:50:37 +01:00
Nicolas Fella
43ae02d68f [Android] Add photo plugin
Summary: When a request arrive open the camera and send the taken pic back.

Reviewers: #kde_connect, broulik, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: albertvaka, ngraham, kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D18142
2019-03-04 23:47:38 +01:00
Erik Duisters
085fb1025b Capture PairingHandlerCallback and call its pairingDone method instead of calling Device.pairingDone using reflection 2019-03-04 19:24:04 +01:00
Erik Duisters
bc2836f45f Also verify that Device.PairingCallback.unpaired() is called 2019-03-04 19:22:46 +01:00
Erik Duisters
b135ffa92a Also verify that Device.PairingCallback.pairingSuccessful() is called 2019-03-04 19:21:04 +01:00
Erik Duisters
9d5a6fa0fd Fixed NPE when contentIntent is triggered 2019-03-03 14:52:23 +00:00
Erik Duisters
024a084b9a Add DeviceType test 2019-03-02 17:42:46 +01:00
Erik Duisters
ff51544e46 Clean up formatting 2019-03-02 17:10:08 +01:00
Erik Duisters
7afbbb452b Removed vectorDrawables.useSupportLibrary = true 2019-02-28 17:04:14 +01:00
Nicolas Fella
bd9a32db94 Remove redundant arg 2019-02-28 15:50:58 +01:00
Nicolas Fella
b066068293 Remove unnecessary null assignment 2019-02-28 15:49:07 +01:00
Nicolas Fella
30e9375106 Weaken access modifier 2019-02-28 15:47:11 +01:00
Nicolas Fella
0b3bbda6a8 Replace lambda with method ref 2019-02-28 15:46:10 +01:00
Nicolas Fella
2a32eb4bae Remove unused imports 2019-02-28 15:44:14 +01:00
l10n daemon script
e2162a9aa3 GIT_SILENT made messages (after extraction) 2019-02-26 02:58:21 +01:00
l10n daemon script
e9c29a43c0 GIT_SILENT made messages (after extraction) 2019-02-25 03:15:35 +01:00
l10n daemon script
c859e05115 GIT_SILENT made messages (after extraction) 2019-02-24 03:03:28 +01:00
Albert Vaca Cintora
ef6c6a6dca Fix crash opening notifications settings
We were using the device context, which is not suitable to start an
Activity, causing "android.util.AndroidRuntimeException: Calling
startActivity() from outside of an Activity."
2019-02-22 20:08:21 +01:00
l10n daemon script
8cf39306f9 GIT_SILENT made messages (after extraction) 2019-02-21 03:26:57 +01:00
l10n daemon script
b7e238a85a GIT_SILENT made messages (after extraction) 2019-02-20 02:57:35 +01:00
l10n daemon script
5d8e8b4c9a GIT_SILENT made messages (after extraction) 2019-02-18 02:53:17 +01:00
Erik Duisters
0b2858d222 Revamp CustomDevicesActivity 2019-02-16 23:58:18 +00:00
l10n daemon script
e7b9742b73 GIT_SILENT made messages (after extraction) 2019-02-16 03:01:45 +01:00
l10n daemon script
aa023592b0 GIT_SILENT made messages (after extraction) 2019-02-15 02:59:23 +01:00
l10n daemon script
22828b1571 GIT_SILENT made messages (after extraction) 2019-02-14 02:56:03 +01:00
l10n daemon script
6c1e9bfa68 GIT_SILENT made messages (after extraction) 2019-02-13 03:07:53 +01:00
Albert Vaca Cintora
311c1c73ca Trying to make the presentation plugin text more clear 2019-02-12 14:58:40 +01:00
Albert Vaca Cintora
6250b67985 Notifications plugin now shows as "without permission" instead of "failed"
Removed the concept of "failed" plugins
2019-02-12 13:21:59 +01:00
Albert Vaca Cintora
b1904a6995 Fixed all tests
Now they are local tests and not Android tests
2019-02-11 21:44:55 +01:00
Albert Vaca Cintora
78b38b5a00 Use ClassIndex to create a list of plugins in compile time
Instead of manually initializing a map statically.
2019-02-11 20:08:18 +01:00
Albert Vaca Cintora
33c9f70cb5 build.gradle: Bump dependencies minor versions 2019-02-11 19:59:52 +01:00
Albert Vaca
bd23eb924d These maps are accessed concurrently, better use a thread-safe container
Hoping this will fix a deadlock in pluginInfoCache.get
2019-02-11 17:55:02 +01:00
l10n daemon script
4a53b14a93 GIT_SILENT made messages (after extraction) 2019-02-10 02:58:55 +01:00
Nicolas Fella
ec66b86dbb Set artist in MediaSession 2019-02-09 12:07:41 +00:00
Albert Vaca
d4286e7f17 Made setupTcpListener and setupUdpListener more similar
No real behaviour change
2019-02-09 00:16:57 +01:00
Albert Vaca
b529ab7484 Removed stale comment from old code 2019-02-08 23:57:57 +01:00
Albert Vaca
dca60706a3 Remove legacy UDP port support 2019-02-08 12:50:48 +01:00
l10n daemon script
e9d16d83f9 GIT_SILENT made messages (after extraction) 2019-02-05 02:58:11 +01:00
l10n daemon script
6a153e32e8 GIT_SILENT made messages (after extraction) 2019-02-03 03:02:33 +01:00
Erik Duisters
56f129ddf4 Use an AlertDialogFragment instead of a AlertDialog for Plugin.getErrorDialog() 2019-02-02 15:01:48 +01:00
Erik Duisters
d364401ea9 Use DialogFragment instead of an AlertDialog for runtime permissions 2019-02-02 11:38:13 +00:00
Erik Duisters
fc11951532 Fix keyboard input on Pie (Android 9/API 28)
BUG: 401726
2019-01-29 18:19:07 +01:00
Erik Duisters
da9b4ea19e Do not query for contacts when there are no contacts 2019-01-29 11:13:44 +01:00
Erik Duisters
f4c80dd839 Use an EditTextPreference for changing the device name instead of an AlertDialog 2019-01-29 09:26:42 +00:00
Erik Duisters
6864cec3fa Merge branch 'improve_multi_file_sharing' of invent.kde.org:eduisters/kdeconnect-android into improve_multi_file_sharing 2019-01-27 11:51:46 +01:00
Erik Duisters
e098ebdaf4 Add packet type "kdeconnect.share.request.update" to allow android to update the share notification 2019-01-27 11:50:52 +01:00
Erik Duisters
e1b665bc06 Use BigText style for share notification 2019-01-26 17:50:49 +00:00
Erik Duisters
874e100e91 Add packet type "kdeconnect.share.request.update" to allow android to update the share notification 2019-01-26 16:59:39 +01:00
l10n daemon script
e6673cc10f GIT_SILENT made messages (after extraction) 2019-01-26 02:58:18 +01:00
l10n daemon script
205745aff6 GIT_SILENT made messages (after extraction) 2019-01-25 02:57:36 +01:00
l10n daemon script
4a48662499 GIT_SILENT made messages (after extraction) 2019-01-24 02:57:57 +01:00
l10n daemon script
0e71d63e3c GIT_SILENT made messages (after extraction) 2019-01-22 02:58:35 +01:00
Erik Duisters
4c6b74a2eb Simplify receiving multiple files using only 1 notification
Summary:
Sequentially receiving multiple files was overly complicated sometimes leading to a progress
notification being shown indefinitely. When files are shared using an older kdeconnect-kde version
fallback to receiving each file individually

Test Plan:
Send multiple files from desktop to android and observe that android receives the files
sequentially using only 1 notification

Send multiple files from an kdeconnect-kde installation and observe that android receives the
files in parallel using multiple notifications

Reviewers: #kde_connect, nicolasfella, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: albertvaka, nicolasfella, kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17627
2019-01-21 18:51:51 +01:00
l10n daemon script
5608fe1237 GIT_SILENT made messages (after extraction) 2019-01-21 03:00:30 +01:00
l10n daemon script
7f92219f58 GIT_SILENT made messages (after extraction) 2019-01-20 02:55:01 +01:00
l10n daemon script
618b23bf16 GIT_SILENT made messages (after extraction) 2019-01-19 02:56:40 +01:00
Nicolas Fella
9c62631d63 [Android] Don't force TLS version
Summary:
Use the default configuration from Android

BUG: 400883

Test Plan: Pairing still works

Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: albertvaka, thomasp, kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D18219
2019-01-18 09:07:11 +01:00
l10n daemon script
ce3871083a GIT_SILENT made messages (after extraction) 2019-01-18 03:03:25 +01:00
Erik Duisters
8e93e3253f Use androidx version of AlertDialog
Summary:
Use androidx version of AlertDialog to get properly styled AlertDialog buttons
Use PreferenceManager context to style Device Name AlertDialog

|{F6551907}|{F6551908}|
|Before|After|

Test Plan: Apply patch and verify that AlertDialogs have properly styled buttons

Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: albertvaka, kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D18298
2019-01-17 17:20:46 +01:00
Piyush Aggarwal
a6ae97afb1 Allow disabling persistent notification in Android 8.0 and up
Summary:
`Show persistent notification` toggle is disabled from Android O and up
This patch aims to enable the toggle with link to Notifications Settings, so that user can itself disable the persistent notification if desired

Test Plan: Apply patch, use on Android O or up device and use `Show persistent notification` toggle. It should take you to Notifications settings page of KDE Connect

Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: albertvaka, eduisters, nicolasfella, kdeconnect, #kde_connect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D18181
2019-01-16 23:48:41 +01:00
Erik Duisters
8466a6f853 Update for Android Studio 3.3
Summary:
Update gradle-plugin to v3.3.0
Update gradle 4.10.1-all
Update Butterknife to v10.0.0

Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D18264
2019-01-16 14:52:21 +01:00
l10n daemon script
4fee60bd0d GIT_SILENT made messages (after extraction) 2019-01-14 03:03:14 +01:00
l10n daemon script
bf527eb05d GIT_SILENT made messages (after extraction) 2019-01-11 03:04:46 +01:00
l10n daemon script
5e9ec37b69 GIT_SILENT made messages (after extraction) 2019-01-10 02:58:40 +01:00
l10n daemon script
29f1ad7299 GIT_SILENT made messages (after extraction) 2019-01-09 03:01:56 +01:00
Erik Duisters
72026d94bf Switch to MaterialComponents theme
Summary:
Androidx introduced new Materialcomponents themes, use them instead of
Theme.AppCompat. This also causes AlertDialogs and PreferenceDialogFragments
to be styled correctly

|{F6531506}|{F6531505}|
|Before|After|

(Ok button is disabled if you are wondering)

Test Plan: Apply patch, verify everything still looks as expected

Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D18039
2019-01-08 10:07:54 +01:00
l10n daemon script
472545678f GIT_SILENT made messages (after extraction) 2019-01-08 02:56:01 +01:00
l10n daemon script
ed97b76697 GIT_SILENT made messages (after extraction) 2019-01-07 03:08:22 +01:00
Erik Duisters
4173338974 Make tapping on a pair notification work again
Summary:
The Simplify pairing from notification patch D16518 broke the functionality that
tapping on the notification provided

This patch makes tapping on the pairing notification work again as expected

Test Plan:
Before applying this patch initiate a pairing from kde
On android tap on the notification (not the action buttons) and notice that nothing happens

Apply the path and repeat the above test. Now the DeviceFragment should be displayed allowing
the the pairing to be accepted or rejected

Reviewers: #kde_connect, nicolasfella

Reviewed By: #kde_connect, nicolasfella

Subscribers: nicolasfella, kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17886
2019-01-06 13:11:27 +01:00
Erik Duisters
ebdc040ce5 Use ButterKnife for view binding
Summary: Use ButterKnife for view binding

Reviewers: #kde_connect, nicolasfella

Reviewed By: #kde_connect, nicolasfella

Subscribers: nicolasfella, kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17878
2019-01-06 12:46:37 +01:00
Erik Duisters
abba7f1132 Do not continue displaying the previous track's album art image when the new track's albumArtUrl is empty
Summary:
When a new track starts playing and does not have album art the previously displayed
album art image will be displayed until a new track starts playing that does have
album art

Test Plan:
Before applying this patch play a track that has album art followed by a song
that does not have album art. Notice that when the track without album art starts
playing the album art of the previous track is still displayed

Apply patch, repeat previous test and notice that the album art placeholder is displayed
when the track without album art start playing

Reviewers: #kde_connect, nicolasfella

Reviewed By: #kde_connect, nicolasfella

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17875
2019-01-06 12:44:50 +01:00
Erik Duisters
9fb780f919 Migrate from PreferenceActivity to PreferenceFragment because it has been deprecated since Android 3.0 API11
Summary:
PreferenceActivity has been deprecated since Android 3.0 API 11 in favour of PreferenceFragment

| {F6515113} | {F6515114}|
|Before|
| {F6515111} | {F6515112}|
|After|

Test Plan:
Apply patch and observe that the DeviceSettings and PluginSettings screen behave as expected
and now also follow material design guidelines

Reviewers: #kde_connect, nicolasfella

Reviewed By: #kde_connect, nicolasfella

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17859
2019-01-06 12:36:42 +01:00
l10n daemon script
045e329b53 GIT_SILENT made messages (after extraction) 2019-01-06 03:00:39 +01:00
l10n daemon script
96a77cf044 GIT_SILENT made messages (after extraction) 2019-01-01 02:55:15 +01:00
l10n daemon script
44c2483aa2 GIT_SILENT made messages (after extraction) 2018-12-30 02:52:17 +01:00
l10n daemon script
b565920409 GIT_SILENT made messages (after extraction) 2018-12-29 03:32:18 +01:00
l10n daemon script
88d453fc72 GIT_SILENT made messages (after extraction) 2018-12-28 02:52:57 +01:00
Erik Duisters
f684fbe8ef Migrate from android support libraries to androidx
Summary: Use the new AndroidX libraries instead of the legacy support libraries

Test Plan: Apply patch and verify everything works as before

Reviewers: #kde_connect, nicolasfella

Reviewed By: #kde_connect, nicolasfella

Subscribers: shubham, kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17818
2018-12-27 16:43:34 +01:00
l10n daemon script
51c71f801d GIT_SILENT made messages (after extraction) 2018-12-27 02:59:51 +01:00
l10n daemon script
9a571129a0 GIT_SILENT made messages (after extraction) 2018-12-26 02:56:49 +01:00
l10n daemon script
34125d675e GIT_SILENT made messages (after extraction) 2018-12-25 02:56:06 +01:00
Nicolas Fella
f294d763eb [Reveivenotification] Put notifications into own channel
Summary:
This allows for more fine-grained control.
CCBUG: 402488

Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17787
2018-12-25 01:34:43 +01:00
Nicolas Fella
54b2a20b3a Remove unneeded field 2018-12-25 00:17:22 +01:00
Nicolas Fella
86fda37b8c Format 2018-12-25 00:10:58 +01:00
Nicolas Fella
82767349cc Rename exception 2018-12-25 00:10:38 +01:00
Nicolas Fella
e76c6d3ea3 Reduce access modifiers 2018-12-25 00:09:52 +01:00
Nicolas Fella
4dec2898f4 [Receivenotification] Support long text
Summary:
Use bigtext style.

BUG: 402489

Test Plan: Send notification with long text. Before a single line was shown. Now the user can view the full content by pulling down the notification

Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17786
2018-12-24 23:03:31 +01:00
Nicolas Fella
501af45941 Don't send our own notifications
Summary:
They were silent anyway and are not really useful
BUG: 402490

Test Plan: I don't see the MPRIS notification in the plasmoid any more

Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17776
2018-12-24 22:35:58 +01:00
Nicolas Fella
cd5bc17176 [ReceiveNotifications] Honor silent property
Summary: Don't show silent notifications. With D17776 we don't send silent any more, but we might again in the future.

Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17777
2018-12-24 22:35:22 +01:00
Nicolas Fella
b4df9f0cb6 Use try-with-resource
Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17778
2018-12-24 22:32:03 +01:00
Nicolas Fella
03b5c769bd Drop custom string compare
Test Plan: Notification app list is still sorted

Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17779
2018-12-24 22:31:28 +01:00
Nicolas Fella
e54c0a2ffa Rename exception 2018-12-24 17:47:17 +01:00
Nicolas Fella
968fa06a57 Use expression lambda 2018-12-24 17:45:27 +01:00
Nicolas Fella
4820ff8e63 Use diamond 2018-12-24 17:44:45 +01:00
Nicolas Fella
f244daa5bf Organize imports 2018-12-24 17:43:46 +01:00
Nicolas Fella
ad560e3cf8 Remove comment 2018-12-24 17:39:42 +01:00
Nicolas Fella
9b743f1302 Don't init with null 2018-12-24 17:39:21 +01:00
Nicolas Fella
cb7c91d438 Remove unneeded init 2018-12-24 17:36:37 +01:00
Nicolas Fella
c8be06ec1e Return early 2018-12-24 17:32:23 +01:00
l10n daemon script
d90f22474b GIT_SILENT made messages (after extraction) 2018-12-23 02:55:51 +01:00
l10n daemon script
4433e5a3a9 GIT_SILENT made messages (after extraction) 2018-12-22 02:57:46 +01:00
Erik Duisters
78c69a0cdc Allow browsing sdcard when there is an unreadable file in it (eg .android_secure)
Summary:
On my Samsung Galaxy S5 mini (Android 6.0.1) browsing the sdcard is not possible because there
is a hidden file .android_secure that is not readable by a normal user.
For such a file File.exists() returns false while File.listFiles() does return it
and SftpSubsystem.writeAttrs() throws an exception

Test Plan:
On a device where the SDCard cannot be browsed (I think its API 23 and up)
install kdeconnect with this patch and verify that the SDCard can now be browsed successfully

Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: albertvaka, nicolasfella, kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17644
2018-12-21 18:41:07 +01:00
l10n daemon script
32952f6d6c GIT_SILENT made messages (after extraction) 2018-12-21 03:00:25 +01:00
Simon Depiets
31dd80e88f Reorder placeholders for i18n c-format compatibility
Summary:
Currently a2po exports files with a c-format tag, which means that plural forms "Failed receiving file from %2$s" are invalid for instance (it should be %1 to %n). Translations are subsequently blocked by the subversion pre-commit hooks.

This fix reorders the placeholders.

Reviewers: #kde_connect, eduisters

Reviewed By: #kde_connect, eduisters

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17688
2018-12-19 22:57:54 +08:00
l10n daemon script
e77827d733 GIT_SILENT made messages (after extraction) 2018-12-20 02:56:27 +01:00
l10n daemon script
20164f0996 GIT_SILENT made messages (after extraction) 2018-12-19 02:59:34 +01:00
l10n daemon script
adc609b8cd GIT_SILENT made messages (after extraction) 2018-12-17 02:55:37 +01:00
l10n daemon script
085f12cf1e GIT_SILENT made messages (after extraction) 2018-12-16 02:56:56 +01:00
l10n daemon script
b096ebca68 GIT_SILENT made messages (after extraction) 2018-12-15 02:59:20 +01:00
Piyush Aggarwal
12e6b29461 Fixed Header in 3 plugin pages: Run Command, Multimedia control, Remote input
Summary: Fixed Header in 3 plugins: Run Command, Multimedia control, Remote input

Test Plan:
build the Android APK and analyze the Header in `Run Command`,
`Remote input` and `Multimedia control` plugins.

Reviewers: #kde_connect, sredman

Reviewed By: #kde_connect, sredman

Subscribers: ltoscano, nicolasfella, albertvaka, sredman, kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17250
2018-12-14 23:23:05 +01:00
l10n daemon script
7c2beac8e2 GIT_SILENT made messages (after extraction) 2018-12-14 03:05:07 +01:00
Simon Redman
5eb368c630 Add incremental notifications plugin settings database upgrade
Summary: When upgrading the app to the version with the new privacy options (D17126), the app will crash with some error about missing a table in the Notifications Plugin database. This patch adds the table in onUpgrade in a proper way.

Test Plan:
 - Build current app from master
 - Disable some apps in the Notifications plugin
 - Apply this patch (as well as its dependency, D17126)
 - The app should work, with your old settings, and now able to toggle privacy options!

Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Differential Revision: https://phabricator.kde.org/D17521
2018-12-12 19:12:40 -07:00
Alex Kovrigin
6ba6842fc7 Privacy Options for Notifications Forwarded to Desktop
Summary: Add Privacy Options for Notifications Forwarded to Desktop.

Test Plan:
* Open the android app.
* Go to Notifications Plugin Filter List (?)
* Long click any application.
* Press "Privacy options".
* Set your options.
* Close the menu and get a notification.

Reviewers: sredman, #kde_connect

Reviewed By: sredman, #kde_connect

Subscribers: sredman, alexkovrigin, kdeconnect

Tags: #kde_connect

Maniphest Tasks: T9850

Differential Revision: https://phabricator.kde.org/D17126
2018-12-12 19:11:42 -07:00
l10n daemon script
75732d56b4 GIT_SILENT made messages (after extraction) 2018-12-12 03:02:07 +01:00
Simon Redman
dda6a5104c [Android] Change ThreadID to long
Summary: Change ThreadID to long

Test Plan:
Messages should send and receive as before. Additionally, if your device has assigned extremely large ThreadIDs, the SMS plugin should no longer crash.

This patch corresponds to the KDE-side revision D17516

Reviewers: #kde_connect, nicolasfella

Reviewed By: #kde_connect, nicolasfella

Subscribers: nicolasfella, kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17517
2018-12-11 18:02:53 -07:00
l10n daemon script
6dd71e43a3 GIT_SILENT made messages (after extraction) 2018-12-11 02:55:37 +01:00
l10n daemon script
f9203792eb GIT_SILENT made messages (after extraction) 2018-12-10 02:51:20 +01:00
Erik Duisters
15ff0fca2b Make DeviceFragments listview use full screen width so the over scroll indicator looks better
Summary:
Make DeviceFragments listview use full screen width so the over scroll indicator looks better

| {F6466146} | {F6466147} |
| before | after |

Test Plan: Apply patch and notice that the layout of the list elements has remained the same as before

Reviewers: #kde_connect, nicolasfella

Reviewed By: #kde_connect, nicolasfella

Subscribers: nicolasfella, kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17456
2018-12-09 18:55:24 +01:00
Erik Duisters
87ec4f2078 Fix some lint warnings
Summary: Fix a number of lint warnings

Reviewers: #kde_connect, nicolasfella

Reviewed By: #kde_connect, nicolasfella

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17452
2018-12-09 18:53:32 +01:00
Erik Duisters
2402b11608 Incorporate more Material Design components
Summary:
Add CoordinatorLayout and AppBarLayout to activity_main.xml to support
more material design features (eg. FAB moves out of the way when a Snackbar is displayed)

Test Plan: Apply patch and confirm that the app looks the same as allways

Reviewers: #kde_connect, nicolasfella

Reviewed By: #kde_connect, nicolasfella

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17451
2018-12-09 18:51:12 +01:00
Erik Duisters
53422e0900 Use android:theme instead of app:theme because it is deprecated
Summary:
When starting kdeconnect the following message appears in logcat:

I/AppCompatViewInflater: app:theme is now deprecated. Please move to using android:theme instead.

Test Plan: Apply patch, launch app and verify that this message is no longer logged to logcat

Reviewers: #kde_connect, nicolasfella

Reviewed By: #kde_connect, nicolasfella

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17434
2018-12-09 18:40:25 +01:00
Nicolas Fella
4f54d55cc5 Use one port more
Summary: The desktop side goes as far up as 1764.

Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17271
2018-12-09 13:48:47 +01:00
l10n daemon script
89cbdac010 GIT_SILENT made messages (after extraction) 2018-12-09 02:54:22 +01:00
Erik Duisters
d4d4849f15 Closing a SSLSockets input or output stream does not close the socket (https://issuetracker.google.com/issues/37018094)
Summary:
When you close a SSLSockets input or output stream the socket does not get closed leading to may
sockets in the CLOSE_WAIT state. This will eventually deplete the available file descriptors

Test Plan:
Before appying this patch share a file from desktop to android
After the share is finished issue the command:

netstat -pW | grep kde

There should be a line showing that the socket used is in the state CLOSE_WAIT like below

tcp6  0 0 ::ffff:192.168.0.32:33604   ::ffff:192.168.0.2:1739  CLOSE_WAIT  6200/org.kde.kdeconnect_tp

Apply this patch and repeat the test. Now there should no longer be any sockets in the CLOSE_WAIT state

Reviewers: #kde_connect, nicolasfella

Reviewed By: #kde_connect, nicolasfella

Subscribers: nicolasfella, kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17320
2018-12-08 14:28:14 +01:00
Erik Duisters
3a189d1af4 Do not create a new content fragment on orientation change
Summary:
When an orientation change occurs the fragment manager will automatically
re-create the content fragment for us.

Test Plan:
Set the content fragment to DeviceFragment and change orientation
Result: DeviceFragment is shown for the correct device and the correct navigation view menu item is checked

Set the content fragment to PairingFragment and change orientation
Result: PairingFragment is shown for the correct device and the "Pair new device" navigation view menu item is checked

Reviewers: #kde_connect, nicolasfella

Reviewed By: #kde_connect, nicolasfella

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17409
2018-12-08 14:14:18 +01:00
Erik Duisters
9f498f8127 Use butterknife for view binding
Summary: Use butterknife for view binding

Reviewers: #kde_connect, nicolasfella

Reviewed By: #kde_connect, nicolasfella

Subscribers: nicolasfella, kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17411
2018-12-08 14:12:14 +01:00
l10n daemon script
4158956dd9 GIT_SILENT made messages (after extraction) 2018-12-08 02:56:16 +01:00
Erik Duisters
087b7ce875 Make toast work from a background thread
Summary:
When receiving a text share an attempt is made to show a toast but that results
in an exception because the issuing thread is not running a looper.

Test Plan:
Without this patch applied Share a text with an android device using the plasmoid
Result: No toast is displayed and in logcat you will get a:
        java.lang.RuntimeException: Can't toast on a thread that has not called Looper.prepare() exception

With this patch applied again Share a text an android device using the plasmoid
Result: The toast is actually displayed even when the activity is not in the foreground

Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17400
2018-12-07 19:22:32 +01:00
l10n daemon script
ebbd47704a GIT_SILENT made messages (after extraction) 2018-12-07 02:58:29 +01:00
Erik Duisters
96a1edfb76 Fix lint warning: Avoid non-default constructors in fragments
Summary: It is common practice to use a static newInstance to create new fragment instances instead of using non-default constructors

Reviewers: #kde_connect, nicolasfella

Reviewed By: #kde_connect, nicolasfella

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17390
2018-12-06 20:29:07 +01:00
Erik Duisters
6e8d9e8419 Remove not used constructor
Summary: Remove constructor that is not used

Reviewers: #kde_connect, nicolasfella

Reviewed By: #kde_connect, nicolasfella

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17389
2018-12-06 19:39:13 +01:00
Erik Duisters
27f8c57c50 Do not send null NetworkPackets
Summary: queuedSendUriList can return null and subsequently an attempt is make to actually send this null packet

Reviewers: #kde_connect, nicolasfella

Reviewed By: #kde_connect, nicolasfella

Subscribers: nicolasfella, kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17384
2018-12-06 19:38:06 +01:00
l10n daemon script
514f2a2035 GIT_SILENT made messages (after extraction) 2018-12-05 03:00:21 +01:00
Albert Vaca
c80a905f1b Allow multi-line, expandable notifications if text doesn't fit 2018-12-04 17:39:11 +01:00
l10n daemon script
b21a4ac6ba GIT_SILENT made messages (after extraction) 2018-12-04 03:01:52 +01:00
Albert Vaca
918e62b429 Check returned dialogs for null
There were crash reports in the Play Store with NPE here.
2018-12-03 19:38:37 +01:00
l10n daemon script
fd243ba5c1 GIT_SILENT made messages (after extraction) 2018-12-03 03:02:59 +01:00
Albert Vaca
18cba01f29 Fix key auth for sftp
It was still using the old device key pairs we keep for compatibility,
which was null.
2018-12-02 20:04:06 +01:00
Erik Duisters
04e605bcf9 Handle receiving an empty file
Summary:
When an empty file is send from the desktop SharePlugin onPacketReceived
does not see a payload so the packet is discarded

Test Plan:
Send an empty file from the desktop
Verify that a notification is shown notifying the user that a file was received and that file has been created in the filesystem

Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: nicolasfella, kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17235
2018-12-02 19:34:49 +01:00
l10n daemon script
dee66fba87 GIT_SILENT made messages (after extraction) 2018-12-02 03:00:05 +01:00
Erik Duisters
6fb6ea7e2b Clear currentShareInfo when transfer is complete
Summary:
currentShareInfo needs to be nulled when a transfer is complete if not the next transfer will
have incorrect notification information and will never finish

Test Plan:
Send 2 files from desktop to android, notification is as expected (eg (File 1 of 2) followed by (File 2 of 2)
When transfer is complete send 2 files again, notification is as expected and is finished when transfer is done

Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17259
2018-11-30 17:52:57 +01:00
Erik Duisters
4dd651b386 Align NetworkPacket.hasPayload with desktop
Summary:
On desktop NetworkPacket.hasPayload() tests m_payloadSize
On android NetworkPacket.hasPayload() tests mPayload

This patch makes android also test mPayloadSize to make things more consistent

Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17236
2018-11-30 08:40:57 +01:00
Erik Duisters
9b426fe4a5 Receive multiple files using 1 notification
Summary:
When multiple files are shared from desktop to android the transfer of the
files should be handled using 1 notification

Depends on: D17081

Test Plan:
Share multiple biggish files from desktop to android
The sharing progress is displayed using 1 notification

Reviewers: #kde_connect, albertvaka

Reviewed By: #kde_connect, albertvaka

Subscribers: kdeconnect

Tags: #kde_connect

Differential Revision: https://phabricator.kde.org/D17157
2018-11-30 08:35:09 +01:00
177 changed files with 8017 additions and 2358 deletions

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.kde.kdeconnect_tp"
android:versionCode="11010"
android:versionName="1.10.1">
android:versionCode="11240"
android:versionName="1.12.4">
<supports-screens
android:anyDensity="true"
@@ -22,15 +22,16 @@
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<application
android:icon="@drawable/icon"
@@ -87,22 +88,6 @@
android:name="android.support.PARENT_ACTIVITY"
android:value="org.kde.kdeconnect.UserInterface.MainActivity" />
</activity>
<activity
android:name="org.kde.kdeconnect.UserInterface.PluginSettingsActivity"
android:label="@string/device_menu_plugins"
android:parentActivityName="org.kde.kdeconnect.UserInterface.DeviceSettingsActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.kde.kdeconnect.UserInterface.DeviceSettingsActivity" />
</activity>
<activity
android:name="org.kde.kdeconnect.Plugins.SharePlugin.ShareSettingsActivity"
android:label="@string/device_menu_plugins"
android:parentActivityName="org.kde.kdeconnect.UserInterface.DeviceSettingsActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.kde.kdeconnect.Plugins.SharePlugin.ShareSettingsActivity" />
</activity>
<receiver android:name="org.kde.kdeconnect.KdeConnectBroadcastReceiver">
<intent-filter>
@@ -135,7 +120,7 @@
<activity
android:name="org.kde.kdeconnect.Plugins.MprisPlugin.MprisActivity"
android:label="@string/remote_control"
android:label="@string/open_mpris_controls"
android:launchMode="singleTop"
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity">
<meta-data
@@ -151,7 +136,7 @@
<activity
android:name="org.kde.kdeconnect.Plugins.RunCommandPlugin.RunCommandActivity"
android:label="@string/remote_control"
android:label="@string/pref_plugin_runcommand"
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
@@ -201,7 +186,7 @@
</activity>
<activity
android:name="org.kde.kdeconnect.Plugins.MousePadPlugin.MousePadActivity"
android:label="@string/remote_control"
android:label="@string/pref_plugin_mousepad"
android:parentActivityName="org.kde.kdeconnect.UserInterface.MainActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
@@ -240,8 +225,14 @@
android:value="org.kde.kdeconnect.Plugins.SharePlugin.ShareChooserTargetService" />
</activity>
<receiver android:name="org.kde.kdeconnect.Plugins.SharePlugin.ShareBroadcastReceiver">
<intent-filter>
<action android:name="org.kde.kdeconnect.Plugins.SharePlugin.CancelShare" />
</intent-filter>
</receiver>
<provider
android:name="android.support.v4.content.FileProvider"
android:name="androidx.core.content.FileProvider"
android:authorities="org.kde.kdeconnect_tp.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
@@ -268,11 +259,12 @@
<activity
android:name="org.kde.kdeconnect.Plugins.NotificationsPlugin.NotificationFilterActivity"
android:label="@string/title_activity_notification_filter"
android:parentActivityName="org.kde.kdeconnect.UserInterface.PluginSettingsActivity">
android:parentActivityName="org.kde.kdeconnect.UserInterface.DeviceSettingsActivity">
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value="org.kde.kdeconnect.UserInterface.PluginSettingsActivity" />
android:value="org.kde.kdeconnect.UserInterface.DeviceSettingsActivity" />
</activity>
<activity android:name="org.kde.kdeconnect.Plugins.PhotoPlugin.PhotoActivity" />
</application>

View File

@@ -1,22 +1,20 @@
apply plugin: 'com.android.application'
buildscript {
repositories {
jcenter()
google()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'com.android.tools.build:gradle:3.3.2'
}
}
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
minSdkVersion 14
targetSdkVersion 28
//multiDexEnabled true
//testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner"
}
dexOptions {
javaMaxHeapSize "2g"
@@ -33,7 +31,7 @@ android {
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
androidTest {
test {
java.srcDirs = ['tests']
}
}
@@ -67,23 +65,37 @@ dependencies {
repositories {
jcenter()
google()
/* Needed for org.apache.sshd debugging
maven {
url "https://jitpack.io"
}
*/
}
implementation 'com.android.support:support-media-compat:28.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:preference-v7:28.0.0'
implementation 'com.android.support:design:28.0.0'
implementation 'androidx.media:media:1.0.1'
implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.preference:preference:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.0.0'
implementation 'com.google.android.material:material:1.0.0'
implementation 'com.jakewharton:disklrucache:2.0.2' //For caching album art bitmaps
implementation 'org.apache.sshd:sshd-core:0.14.0'
implementation 'org.apache.mina:mina-core:2.0.19' //For some reason, makes sshd-core:0.14.0 work without NIO, which isn't available until Android 8+
//implementation('com.github.bright:slf4android:0.1.6') { transitive = true } // For org.apache.sshd debugging
implementation 'com.madgag.spongycastle:bcpkix-jdk15on:1.58.0.0' //For SSL certificate generation
// Testing
androidTestImplementation 'org.mockito:mockito-core:1.10.19'
androidTestImplementation 'com.google.dexmaker:dexmaker-mockito:1.1'// Because mockito has some problems with dex environment
androidTestImplementation 'org.skyscreamer:jsonassert:1.3.0'
testImplementation 'junit:junit:4.12'
implementation 'com.jakewharton:butterknife:10.0.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:10.0.0'
implementation 'org.atteo.classindex:classindex:3.6'
annotationProcessor 'org.atteo.classindex:classindex:3.6'
// Testing
testImplementation 'junit:junit:4.12'
testImplementation 'org.powermock:powermock-core:2.0.0'
testImplementation 'org.powermock:powermock-module-junit4:2.0.0'
testImplementation 'org.powermock:powermock-api-mockito2:2.0.0'
testImplementation 'org.mockito:mockito-core:2.23.0'
testImplementation 'org.skyscreamer:jsonassert:1.3.0'
}

2
gradle.properties Normal file
View File

@@ -0,0 +1,2 @@
android.enableJetifier=true
android.useAndroidX=true

View File

@@ -1,5 +1,6 @@
#Tue Jan 15 13:04:46 CET 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip

1
proguard-rules.pro vendored
View File

@@ -43,3 +43,4 @@
-dontwarn sun.reflect.**
-dontwarn android.test.**
-dontwarn java.lang.management.**
-dontwarn javax.**

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 B

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<inset
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="?attr/dividerHorizontal"
android:insetLeft="16dp"
android:insetRight="16dp"/>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
android:pathData="M7,10l5,5 5,-5z"/>
</vector>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:viewportWidth="24"
android:viewportHeight="24"
android:width="24dp"
android:height="24dp">
<path
android:pathData="M15.2 12A3.2 3.2 0 0 1 12 15.2 3.2 3.2 0 0 1 8.8 12 3.2 3.2 0 0 1 12 8.8 3.2 3.2 0 0 1 15.2 12Z"
android:fillColor="#000000" />
<path
android:pathData="M9 2L7.17 4 4 4C2.9 4 2 4.9 2 6l0 12c0 1.1 0.9 2 2 2l16 0c1.1 0 2 -0.9 2 -2L22 6C22 4.9 21.1 4 20 4L16.83 4 15 2 9 2Zm3 15C9.24 17 7 14.76 7 12 7 9.24 9.24 7 12 7c2.76 0 5 2.24 5 5 0 2.76 -2.24 5 -5 5z"
android:fillColor="#000000" />
</vector>

View File

@@ -0,0 +1,7 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="#FFF" android:pathData="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z" />
</vector>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<inset
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/divider_horizontal_holo_light"
android:insetLeft="16dp"
android:insetRight="16dp"/>

View File

@@ -0,0 +1,46 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorButtonNormal">
<TextView
android:id="@+id/deviceNameOrIPBackdrop"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawableEnd="@drawable/ic_delete"
android:drawableLeft="@drawable/ic_delete"
android:drawableRight="@drawable/ic_delete"
android:drawableStart="@drawable/ic_delete"
android:paddingEnd="?android:attr/listPreferredItemPaddingRight"
android:paddingLeft="?android:attr/listPreferredItemPaddingLeft"
android:paddingRight="?android:attr/listPreferredItemPaddingRight"
android:paddingStart="?android:attr/listPreferredItemPaddingLeft"/>
<FrameLayout
android:id="@+id/swipeableView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:colorBackground">
<TextView
android:id="@+id/deviceNameOrIP"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:selectableItemBackground"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:paddingEnd="?android:attr/listPreferredItemPaddingRight"
android:paddingLeft="?android:attr/listPreferredItemPaddingLeft"
android:paddingRight="?android:attr/listPreferredItemPaddingRight"
android:paddingStart="?android:attr/listPreferredItemPaddingLeft"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:visibility="visible"
tools:text="192.168.0.1"/>
</FrameLayout>
</FrameLayout>

View File

@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:listitem="@layout/custom_device_item"/>
<TextView
android:id="@+id/emptyListMessage"
style="@style/TextAppearance.AppCompat.Medium"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="@dimen/activity_horizontal_margin"
android:layout_marginRight="@dimen/activity_horizontal_margin"
android:gravity="center_horizontal"
android:text="@string/custom_device_list_help"
/>
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/floatingActionButton"
style="@style/Widget.MaterialComponents.FloatingActionButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_margin="@dimen/fab_margin"
app:elevation="@dimen/fab_elevation"
app:srcCompat="@drawable/ic_add"/>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@@ -5,7 +5,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="@dimen/activity_vertical_margin"
tools:context="org.kde.kdeconnect.UserInterface.DeviceFragment">
<LinearLayout
@@ -13,14 +12,15 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:visibility="gone"
android:orientation="vertical">
android:orientation="vertical"
android:padding="@dimen/activity_vertical_margin"
android:visibility="gone">
<ProgressBar
android:id="@+id/pair_progress"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="gone" />
android:visibility="gone"/>
<TextView
android:id="@+id/pair_message"
@@ -28,7 +28,7 @@
android:layout_height="wrap_content"
android:layout_marginBottom="8dip"
android:text="@string/device_not_paired"
android:textAppearance="?android:attr/textAppearanceMedium" />
android:textAppearance="?android:attr/textAppearanceMedium"/>
<Button
android:id="@+id/pair_button"
@@ -36,11 +36,11 @@
android:layout_height="wrap_content"
android:background="@drawable/button_round"
android:text="@string/request_pairing"
android:textColor="@android:color/white" />
android:textColor="@android:color/white"/>
<LinearLayout
android:id="@+id/pair_request"
android:id="@+id/pair_request_buttons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
@@ -54,7 +54,7 @@
android:layout_weight="1"
android:background="@drawable/button_round"
android:text="@string/pairing_accept"
android:textColor="@android:color/white" />
android:textColor="@android:color/white"/>
<Button
android:id="@+id/reject_button"
@@ -64,7 +64,7 @@
android:layout_weight="1"
android:background="@drawable/button_round"
android:text="@string/pairing_reject"
android:textColor="@android:color/white" />
android:textColor="@android:color/white"/>
</LinearLayout>
</LinearLayout>
@@ -73,11 +73,12 @@
android:id="@+id/error_message_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center"
android:visibility="gone" >
android:orientation="horizontal"
android:padding="16dp"
android:visibility="gone">
<android.support.v7.widget.AppCompatImageView
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/error_message_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -106,7 +107,7 @@
android:gravity="center_vertical"
android:text="@string/on_data_message"
android:textAppearance="?android:attr/textAppearanceMedium"
android:visibility="gone" />
android:visibility="gone"/>
</LinearLayout>
@@ -115,6 +116,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
tools:context=".DeviceActivity" />
android:divider="@drawable/list_divider"
tools:context=".DeviceActivity"
tools:listitem="@layout/list_item_with_icon_entry"/>
</LinearLayout>

View File

@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragmentPlaceHolder"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

View File

@@ -1,32 +1,38 @@
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context="org.kde.kdeconnect.UserInterface.MainActivity"> <!-- fitSystemWindows to make the drawer slide below the Lollipop transparent status bar -->
<androidx.drawerlayout.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"> <!-- fitSystemWindows to make the drawer slide below the Lollipop transparent status bar -->
<LinearLayout
android:layout_width="match_parent"
<androidx.coordinatorlayout.widget.CoordinatorLayout
android:id="@+id/coordinatorLayout"
android:layout_height="match_parent"
android:orientation="vertical">
android:layout_width="match_parent"
tools:context="org.kde.kdeconnect.UserInterface.MainActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
<com.google.android.material.appbar.AppBarLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:elevation="8dp"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:elevation="8dp"/>
</com.google.android.material.appbar.AppBarLayout>
<FrameLayout
android:id="@+id/container"
android:layout_width="match_parent"
android:layout_height="match_parent" />
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
</LinearLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
<android.support.design.widget.NavigationView
<com.google.android.material.navigation.NavigationView
android:id="@+id/navigation_drawer"
android:layout_width="wrap_content"
android:layout_height="match_parent"
@@ -34,4 +40,4 @@
app:headerLayout="@layout/nav_header"
style="?attr/mainNavigationViewStyle" />
</android.support.v4.widget.DrawerLayout>
</androidx.drawerlayout.widget.DrawerLayout>

View File

@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/runcommandslist"
@@ -12,7 +12,7 @@
android:addStatesFromChildren="true"
android:orientation="vertical" />
<android.support.design.widget.FloatingActionButton
<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/add_command_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
@@ -33,4 +33,4 @@
android:textAlignment="center"
android:textSize="16sp" />
</android.support.design.widget.CoordinatorLayout>
</androidx.coordinatorlayout.widget.CoordinatorLayout>

View File

@@ -0,0 +1,42 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorButtonNormal">
<TextView
android:id="@+id/deviceNameOrIPBackdrop"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingEnd="?android:attr/listPreferredItemPaddingRight"
android:paddingLeft="?android:attr/listPreferredItemPaddingLeft"
android:paddingRight="?android:attr/listPreferredItemPaddingRight"
android:paddingStart="?android:attr/listPreferredItemPaddingLeft"/>
<FrameLayout
android:id="@+id/swipeableView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?android:colorBackground">
<TextView
android:id="@+id/deviceNameOrIP"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?selectableItemBackground"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeightSmall"
android:paddingEnd="?android:attr/listPreferredItemPaddingRight"
android:paddingLeft="?android:attr/listPreferredItemPaddingLeft"
android:paddingRight="?android:attr/listPreferredItemPaddingRight"
android:paddingStart="?android:attr/listPreferredItemPaddingLeft"
android:textAppearance="?android:attr/textAppearanceListItemSmall"
android:visibility="visible"
tools:text="192.168.0.1"/>
</FrameLayout>
</FrameLayout>

View File

@@ -1,35 +0,0 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<ListView
android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1" />
<TextView
android:layout_width="fill_parent"
android:layout_height="100dp"
android:text="@string/custom_dev_list_help" />
<EditText
android:id="@+id/ip_edittext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/add_host_hint"
android:imeOptions="actionSend" />
<Button
android:id="@android:id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/add_host" />
</LinearLayout>

View File

@@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/refresh_list_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/refresh_list_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:id="@+id/devices_list"
@@ -17,4 +17,4 @@
android:paddingRight="16dip"
tools:context=".MainActivity" />
</android.support.v4.widget.SwipeRefreshLayout>
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:paddingTop="?dialogPreferredPadding"
android:paddingStart="?dialogPreferredPadding"
android:paddingLeft="?dialogPreferredPadding"
android:paddingEnd="?dialogPreferredPadding"
android:paddingRight="?dialogPreferredPadding">
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/textInputLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:hintEnabled="false"
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox">
<!-- inputType="text" is needed, without it lines and maxLines is ignored https://issuetracker.google.com/issues/37118772 -->
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/textInputEditText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:lines="1"
android:maxLines="1"
android:inputType="text"
style="@style/Widget.MaterialComponents.TextInputEditText.FilledBox"/>
</com.google.android.material.textfield.TextInputLayout>
</FrameLayout>

View File

@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="?attr/dialogPreferredPadding"
android:paddingRight="?attr/dialogPreferredPadding"
android:paddingTop="10dp">
<com.google.android.material.textfield.TextInputLayout
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="5dp"
app:errorEnabled="true">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/storageLocation"
style="@style/Widget.MaterialComponents.TextInputEditText.FilledBox"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:cursorVisible="false"
android:hint="@string/sftp_storage_preference_storage_location"
android:lines="1"
android:longClickable="false"
android:maxLines="1"
android:scrollHorizontally="true"
android:ellipsize="end"
android:inputType="text"
android:text="@string/sftp_storage_preference_click_to_select"
android:textColor="@android:color/darker_gray"
android:editable="false"/>
</com.google.android.material.textfield.TextInputLayout>
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/storageDisplayNameInputLayout"
style="@style/Widget.MaterialComponents.TextInputLayout.FilledBox.Dense"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="5dp"
app:errorEnabled="true">
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/storageDisplayName"
style="@style/Widget.MaterialComponents.TextInputEditText.FilledBox.Dense"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/sftp_storage_preference_display_name"
android:lines="1"
android:maxLines="1"
android:scrollHorizontally="true"
android:ellipsize="end"
android:inputType="text"/>
</com.google.android.material.textfield.TextInputLayout>
</LinearLayout>

View File

@@ -1,60 +1,59 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="fill_parent"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/abc_list_selector_holo_dark"
android:baselineAligned="false"
android:clickable="true"
android:focusable="true"
android:gravity="center_vertical"
android:minHeight="?android:attr/listPreferredItemHeight"
android:orientation="horizontal"
android:paddingEnd="?android:attr/scrollbarSize"
android:paddingLeft="12dip"
android:paddingRight="?android:attr/scrollbarSize"
android:paddingStart="12dip">
android:paddingLeft="16dp"
android:paddingRight="16dp">
<android.support.v7.widget.AppCompatImageView
android:id="@+id/list_item_entry_icon"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:contentDescription="@string/device_icon_description"
app:tint="?attr/colorControlNormal"
android:src="@drawable/ic_device_laptop" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/list_item_entry_title"
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/list_item_entry_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:layout_marginLeft="8dip"
android:layout_marginStart="8dip"
android:ellipsize="marquee"
android:fadingEdge="horizontal"
android:singleLine="true"
android:text=""
android:textAppearance="?android:attr/textAppearanceMedium" />
android:layout_marginLeft="12dp"
android:layout_marginStart="12dp"
android:contentDescription="@string/device_icon_description"
android:src="@drawable/ic_device_laptop"
app:tint="?attr/colorControlNormal"/>
<TextView
android:id="@+id/list_item_entry_summary"
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dip"
android:layout_marginStart="8dip"
android:singleLine="true"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#CC2222"
android:visibility="gone" />
android:orientation="vertical">
</LinearLayout>
<TextView
android:id="@+id/list_item_entry_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="8dip"
android:layout_marginStart="8dip"
android:ellipsize="marquee"
android:fadingEdge="horizontal"
android:singleLine="true"
android:text=""
android:textAppearance="?android:attr/textAppearanceMedium"/>
</LinearLayout>
<TextView
android:id="@+id/list_item_entry_summary"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="8dip"
android:layout_marginStart="8dip"
android:singleLine="true"
android:text=""
android:textAppearance="?android:attr/textAppearanceSmall"
android:textColor="#CC2222"
android:visibility="gone"/>
</LinearLayout>
</LinearLayout>

View File

@@ -147,7 +147,7 @@
android:layout_marginTop="8dip"
android:orientation="horizontal">
<android.support.v7.widget.AppCompatImageView
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/imageView"
android:layout_width="30dip"
android:layout_height="30dip"

View File

@@ -1,4 +1,4 @@
<android.support.v7.widget.SwitchCompat
<androidx.appcompat.widget.SwitchCompat
android:id="@+id/dark_theme"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ListView
android:id="@+id/extra_options_list"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<CheckBox
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:clickable="false"
android:background="@null"/>

View File

@@ -34,17 +34,20 @@
android:id="@android:id/widget_frame"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:gravity="center_vertical"
android:orientation="vertical" />
android:gravity="left|center_vertical|start"
android:minWidth="56dp"
android:orientation="vertical">
</LinearLayout>
<RelativeLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginBottom="6dip"
android:layout_marginEnd="4dip"
android:layout_marginLeft="12dip"
android:layout_marginLeft="4dip"
android:layout_marginRight="4dip"
android:layout_marginStart="12dip"
android:layout_marginStart="4dip"
android:layout_marginTop="6dip"
android:layout_weight="1">
@@ -70,7 +73,7 @@
</RelativeLayout>
<android.support.v7.widget.AppCompatImageButton
<androidx.appcompat.widget.AppCompatImageButton
android:id="@+id/settingsButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<CheckBox
android:id="@+id/checkbox_contents"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Block notification contents" />
<CheckBox
android:id="@+id/checkbox_images"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Block notification images" />
</LinearLayout>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/delete"
android:title="@string/sftp_action_mode_menu_delete"
app:showAsAction="ifRoom"
android:icon="@drawable/ic_delete"/>
</menu>

View File

@@ -57,7 +57,6 @@
<string name="category_connected_devices">الأجهزة المقترن بها</string>
<string name="category_not_paired_devices">الأجهزة المتوفّرة</string>
<string name="category_remembered_devices">الأجهزة المتذكَّرة</string>
<string name="plugins_failed_to_load">فشل تحميل الملحقات (المس لمعلومات اكثر):</string>
<string name="device_menu_plugins">إعدادات الملحقة</string>
<string name="device_menu_unpair">ألغِ الاقتران</string>
<string name="device_not_reachable">الجهاز المقترن غير قابل الوصول</string>
@@ -79,11 +78,7 @@
<string name="pairing_request_from">طلب اقتران من %1s</string>
<string name="received_url_title">استُلمت وصلة من %1s</string>
<string name="received_url_text">المس لفتح \'%1s\'</string>
<string name="incoming_file_title">ملفّ وارد من %1s</string>
<string name="incoming_file_text">%1s</string>
<string name="outgoing_file_title">يرسل ملفًّا إلى %1s</string>
<string name="received_file_title">استُقبل ملفّ من %1s</string>
<string name="received_file_fail_title">فشل استقبال الملفّ من %1s</string>
<string name="received_file_text">المس لفتح \'%1s\'</string>
<string name="sent_file_title">أرسل ملفًّا إلى %1s</string>
<string name="sent_file_text">%1s</string>
@@ -99,7 +94,6 @@
<string name="pairing_reject">ارفض</string>
<string name="device">الجهاز</string>
<string name="pair_device">اقرن الجهاز</string>
<string name="remote_control">التّحكّم البعيد</string>
<string name="mpris_play">شغّل</string>
<string name="mpris_previous">السّابق</string>
<string name="mpris_rew">رجوع</string>
@@ -133,15 +127,12 @@
<string name="title_activity_notification_filter">مرشّح الإخطارات</string>
<string name="filter_apps_info">ستُزامن الإخطارات من التّطبيقات المحدّدة.</string>
<string name="sftp_internal_storage">التّخزين الدّاخليّ</string>
<string name="sftp_all_files">كلّ الملفّات</string>
<string name="sftp_sdcard_num">بطاقة SD %d</string>
<string name="sftp_sdcard">بطاقة SD</string>
<string name="sftp_readonly">(للقراءة فقط)</string>
<string name="sftp_camera">صور الكاميرا</string>
<string name="add_host">أضف مضيفًا/م​إ</string>
<string name="add_host_hint">اسم المضيف أو عنوان IP</string>
<string name="no_players_connected">لم يُعثر على مشغّلات</string>
<string name="custom_dev_list_help">استخدم هذا الخيار فقط إن لم يُكتَشف جهازك آليًّا. أدخِل عنوان م​إ أو اسم المضيف أدناه والمس الزرّ لإضافته إلى القائمة. المس عنصرًا موجودًا لإزالته من القائمة.</string>
<string name="mpris_player_on_device">%1$s على %2$s</string>
<string name="send_files">أرسل ملفّات</string>
<string name="pairing_title">أجهزة «كدي المتّصل»</string>

View File

@@ -39,7 +39,6 @@
</string-array>
<string name="category_connected_devices">Свързани устройства</string>
<string name="category_remembered_devices">Запомнени устройства</string>
<string name="plugins_failed_to_load">Неуспешно зареждане на приставки (докоснете за подробности)</string>
<string name="device_menu_unpair">Разкачване</string>
<string name="unknown_device">Неизвестно устройство</string>
<string name="error_not_reachable">Устройството е недостъпно</string>
@@ -60,7 +59,6 @@
<string name="pairing_reject">Отхвърляне</string>
<string name="device">Устройство</string>
<string name="pair_device">Сдвояване с устройството</string>
<string name="remote_control">Отдалечен контрол</string>
<string name="mpris_play">Възпроизвеждане</string>
<string name="mpris_previous">Предишен</string>
<string name="mpris_rew">Превъртане назад</string>

View File

@@ -43,7 +43,6 @@
<string name="category_connected_devices">Spojeni uređaji</string>
<string name="category_not_paired_devices">Dostupni uređaji</string>
<string name="category_remembered_devices">Zapamćeni uređaji</string>
<string name="plugins_failed_to_load">Dodaci se nisu uspjeli učitati (kucnite za više informacija):</string>
<string name="device_menu_plugins">Postavke dodatka</string>
<string name="device_menu_unpair">Razdvoji</string>
<string name="device_not_reachable">Upareni uređaj nije dostupan</string>
@@ -60,10 +59,7 @@
<string name="pairing_request_from">Uparivanje zatraženo od %1s</string>
<string name="received_url_title">Primljena veza od %1s</string>
<string name="received_url_text">Kucni za otvaranje \'%1s\'</string>
<string name="incoming_file_title">Dolazna datoteka od %1s</string>
<string name="incoming_file_text">%1s</string>
<string name="outgoing_file_title">Slanje datoteke na %1s</string>
<string name="received_file_title">Primljena datoteka od %1s</string>
<string name="received_file_text">Kucni za otvaranje \'%1s\'</string>
<string name="sent_file_title">Poslana datoteka na %1s</string>
<string name="sent_file_text">%1s</string>
@@ -79,7 +75,6 @@
<string name="pairing_reject">Odbij</string>
<string name="device">Uređaj</string>
<string name="pair_device">Upari uređaj</string>
<string name="remote_control">Daljinska kontrola</string>
<string name="mpris_play">Reprodukuj</string>
<string name="mpris_previous">Prethodni</string>
<string name="mpris_rew">Premotaj</string>
@@ -111,14 +106,11 @@
<string name="title_activity_notification_filter">Filter napomena</string>
<string name="filter_apps_info">Notifikacije će biti sinhronizovane s izabranim aplikacijama.</string>
<string name="sftp_internal_storage">Unutrašnji smještaj</string>
<string name="sftp_all_files">Sve fajlove</string>
<string name="sftp_sdcard_num">SD kartica %d</string>
<string name="sftp_sdcard">SD kartica</string>
<string name="sftp_readonly">(samo za čitanje)</string>
<string name="sftp_camera">Slike sa kamere</string>
<string name="add_host">Dodaj host/IP</string>
<string name="add_host_hint">IP ili ime računara</string>
<string name="no_players_connected">Nema nađenih igrača</string>
<string name="custom_dev_list_help">Koristite ovu opciju samo ako vaš uređaj nije automatski otkriven. Unesite IP adresu ili ime hosta i dodirnite dugme da dodate na listu. Dodirnite postojeće dume da uklonite s liste.</string>
<string name="mpris_player_on_device">%1$s na %2$s</string>
</resources>

View File

@@ -5,7 +5,7 @@
<string name="foreground_notification_devices">Connectat a: %s</string>
<string name="pref_plugin_telephony">Notificador de la telefonia</string>
<string name="pref_plugin_telephony_desc">Envia notificacions per a les trucades entrants</string>
<string name="pref_plugin_battery">Informe de la bateria</string>
<string name="pref_plugin_battery">Informa de la bateria</string>
<string name="pref_plugin_battery_desc">Informa periòdicament sobre l\'estat de la bateria</string>
<string name="pref_plugin_sftp">Exposa el sistema de fitxers</string>
<string name="pref_plugin_sftp_desc">Permet navegar de forma remota pel sistema de fitxers del dispositiu</string>
@@ -13,10 +13,10 @@
<string name="pref_plugin_clipboard_desc">Comparteix el contingut del porta-retalls</string>
<string name="pref_plugin_mousepad">Entrada remota</string>
<string name="pref_plugin_mousepad_desc">Usa el vostre telèfon o tauleta com un ratolí i un teclat</string>
<string name="pref_plugin_presenter">Presentació remota</string>
<string name="pref_plugin_presenter_desc">Useu el dispositiu per canviar les dispositives d\'una presentació</string>
<string name="pref_plugin_remotekeyboard">S\'estan rebent pulsacions de tecla remotes</string>
<string name="pref_plugin_remotekeyboard_desc">S\'estan rebent esdeveniments de pulsacions de tecla des de dispositius remots</string>
<string name="pref_plugin_presenter">Presentació de diapositives remota</string>
<string name="pref_plugin_presenter_desc">Usa el dispositiu per a canviar les dispositives d\'una presentació</string>
<string name="pref_plugin_remotekeyboard">Rep les pulsacions remotes de tecla</string>
<string name="pref_plugin_remotekeyboard_desc">Rep els esdeveniments de pulsacions de tecla des de dispositius remots</string>
<string name="pref_plugin_mpris">Controls multimèdia</string>
<string name="pref_plugin_mpris_desc">Proporciona un comandament a distància pel reproductor multimèdia</string>
<string name="pref_plugin_runcommand">Executa una ordre</string>
@@ -24,10 +24,10 @@
<string name="pref_plugin_contacts">Sincronitzador dels contactes</string>
<string name="pref_plugin_contacts_desc">Permet sincronitzar la llibreta de contactes del dispositiu</string>
<string name="pref_plugin_ping">Ping</string>
<string name="pref_plugin_ping_desc">Envia i rep els pings</string>
<string name="pref_plugin_ping_desc">Envia i rep els «ping»</string>
<string name="pref_plugin_notifications">Sincronitza les notificacions</string>
<string name="pref_plugin_notifications_desc">Accedeix a les vostres notificacions des d\'altres dispositius</string>
<string name="pref_plugin_receive_notifications">Recepció de les notificacions</string>
<string name="pref_plugin_receive_notifications">Rep les notificacions</string>
<string name="pref_plugin_receive_notifications_desc">Rep notificacions des d\'altres dispositius i mostrar-los a l\'Android</string>
<string name="pref_plugin_sharereceiver">Comparteix i rep</string>
<string name="pref_plugin_sharereceiver_desc">Comparteix els fitxers i els URL entre els dispositius</string>
@@ -38,6 +38,7 @@
<string name="open_settings">Obre l\'arranjament</string>
<string name="no_permissions">Us caldrà concedir permís per accedir a les notificacions</string>
<string name="no_permission_mprisreceiver">Per a poder controlar els reproductors multimèdia cal atorgar accés a les notificacions</string>
<string name="no_permissions_remotekeyboard">Per a rebre les pulsacions de tecles, haureu d\'activar el teclat remot del KDE Connect</string>
<string name="send_ping">Envia un ping</string>
<string name="open_mpris_controls">Control multimèdia</string>
<string name="remotekeyboard_editing_only_title">Fes servir les tecles remotes només en editar</string>
@@ -74,7 +75,6 @@
<string name="category_connected_devices">Dispositius connectats</string>
<string name="category_not_paired_devices">Dispositius disponibles</string>
<string name="category_remembered_devices">Dispositius recordats</string>
<string name="plugins_failed_to_load">Els connectors han fallat en carregar-los (puntegeu per a més informació):</string>
<string name="device_menu_plugins">Arranjament del connector</string>
<string name="device_menu_unpair">Desparella</string>
<string name="device_not_reachable">No s\'ha pogut accedir al dispositiu parell</string>
@@ -96,17 +96,30 @@
<string name="pairing_request_from">S\'ha demanat aparellar des de %1s</string>
<string name="received_url_title">S\'ha rebut un vincle des de %1s</string>
<string name="received_url_text">Puntegeu per obrir «%1s»</string>
<string name="incoming_file_title">Fitxer entrant des de %1s</string>
<string name="incoming_file_text">%1s</string>
<plurals name="incoming_file_title">
<item quantity="one">S\'està rebent %1$d fitxer des de %2$s</item>
<item quantity="other">S\'estan rebent %1$d fitxers des de %2$s</item>
</plurals>
<plurals name="incoming_files_text">
<item quantity="one">Fitxer: %1s</item>
<item quantity="other">(Fitxer %2$d de %3$d): %1$s</item>
</plurals>
<string name="outgoing_file_title">S\'està enviant el fitxer a %1s</string>
<string name="outgoing_files_title">S\'estan enviant fitxers a %1s</string>
<plurals name="outgoing_files_text">
<item quantity="one">S\'ha enviat %1$d fitxer</item>
<item quantity="other">S\'ha enviat %1$d de %2$d fitxers</item>
</plurals>
<string name="received_file_title">Fitxer rebut des de %1s</string>
<string name="received_file_fail_title">Ha fallat en rebre el fitxer des de %1s</string>
<plurals name="received_files_title">
<item quantity="one">S\'ha rebut un fitxer des de %1$s</item>
<item quantity="other">S\'han rebut %2$d fitxers des de %1$s</item>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="one">Ha fallat en rebre un fitxer des de %1$s</item>
<item quantity="other">Ha fallat en rebre %2$d de %3$d fitxers des de %1$s</item>
</plurals>
<string name="received_file_text">Puntegeu per obrir «%1s»</string>
<string name="cannot_create_file">No s\'ha pogut crear el fitxer %s</string>
<string name="sent_file_title">Fitxer enviat a %1s</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">Ha fallat en enviar el fitxer a %1s</string>
@@ -122,7 +135,6 @@
<string name="pairing_reject">Rebutja</string>
<string name="device">Dispositiu</string>
<string name="pair_device">Dispositiu parell</string>
<string name="remote_control">Comandament a distància</string>
<string name="settings">Arranjament</string>
<string name="mpris_play">Reprodueix</string>
<string name="mpris_pause">Pausa</string>
@@ -158,6 +170,10 @@
<string name="unpair_device_action">Desparella %s</string>
<string name="custom_device_list">Afegeix dispositius per la IP</string>
<string name="delete_custom_device">Suprimeixo %s?</string>
<string name="custom_device_deleted">S\'ha suprimit un dispositiu personalitzat</string>
<string name="custom_device_list_help">Si el dispositiu no es detecta automàticament, podeu afegir la seva adreça IP o el nom de la màquina fent clic al botó flotant d\'acció</string>
<string name="custom_device_fab_hint">Afegeix un dispositiu</string>
<string name="undo">Desfés</string>
<string name="share_notification_preference">Rebombori de les notificacions</string>
<string name="share_notification_preference_summary">Vibra i reprodueix un so en rebre un fitxer</string>
<string name="share_destination_customize">Personalitza el directori de destinació</string>
@@ -169,15 +185,33 @@
<string name="title_activity_notification_filter">Filtre per a les notificacions</string>
<string name="filter_apps_info">Les notificacions se sincronitzaran per a les aplicacions seleccionades.</string>
<string name="sftp_internal_storage">Emmagatzematge intern</string>
<string name="sftp_all_files">Tots els fitxers</string>
<string name="sftp_sdcard_num">Targeta SD %d</string>
<string name="sftp_sdcard">Targeta SD</string>
<string name="sftp_readonly">(només de lectura)</string>
<string name="sftp_camera">Imatges de la càmera</string>
<string name="add_device_dialog_title">Afegeix un dispositiu</string>
<string name="add_device_hint">Nom de la màquina o adreça IP</string>
<string name="sftp_preference_detected_sdcards">S\'han detectat targetes SD</string>
<string name="sftp_preference_edit_sdcard_title">Edita una targeta SD</string>
<string name="sftp_preference_configured_storage_locations">Ubicacions d\'emmagatzematge configurades</string>
<string name="sftp_preference_add_storage_location_title">Afegeix una ubicació d\'emmagatzematge</string>
<string name="sftp_preference_edit_storage_location">Edita una ubicació d\'emmagatzematge</string>
<string name="sftp_preference_add_camera_shortcut">Afegeix una drecera a la carpeta de càmera</string>
<string name="sftp_preference_add_camera_shortcut_summary_on">Afegeix una drecera a la carpeta de la càmera</string>
<string name="sftp_preference_add_camera_shortcut_summary_off">No afegeixis cap drecera a la carpeta de la càmera</string>
<string name="sftp_storage_preference_storage_location">Ubicació d\'emmagatzematge</string>
<string name="sftp_storage_preference_storage_location_already_configured">Aquesta ubicació ja s\'ha configurat</string>
<string name="sftp_storage_preference_click_to_select">clic per seleccionar</string>
<string name="sftp_storage_preference_display_name">Nom a mostrar</string>
<string name="sftp_storage_preference_display_name_already_used">Aquest nom a mostrar ja està en ús</string>
<string name="sftp_storage_preference_display_name_cannot_be_empty">El nom a mostrar no pot estar buit</string>
<string name="sftp_action_mode_menu_delete">Suprimeix</string>
<string name="sftp_no_sdcard_detected">No s\'ha detectat cap targeta SD</string>
<string name="sftp_no_storage_locations_configured">No s\'ha configurat cap ubicació d\'emmagatzematge</string>
<string name="sftp_saf_permission_explanation">Per accedir remotament als fitxer cal configurar les ubicacions d\'emmagatzematge</string>
<string name="add_host">Afegeix una màquina/IP</string>
<string name="add_host_hint">Nom de la màquina o IP</string>
<string name="no_players_connected">No s\'ha trobat cap reproductor</string>
<string name="custom_dev_list_help">Empreu aquesta opció només si el dispositiu no és detectat automàticament. Introduïu a sota l\'adreça IP o nom de la màquina i premeu el botó per afegir-lo a la llista. Seleccioneu un element existent per eliminar-lo de la llista.</string>
<string name="mpris_player_on_device">%1$s sobre el %2$s</string>
<string name="send_files">Envia els fitxers</string>
<string name="pairing_title">Dispositius del KDE Connect</string>
@@ -195,7 +229,7 @@
<string name="findmyphone_title">Troba el meu telèfon</string>
<string name="findmyphone_title_tablet">Troba la meva tauleta</string>
<string name="findmyphone_title_tv">Troba la meva TV</string>
<string name="findmyphone_description">Fa sonar aquest dispositiu perquè el pugueu trobar.</string>
<string name="findmyphone_description">Fa sonar aquest dispositiu perquè el pugueu trobar</string>
<string name="findmyphone_found">L\'he trobat</string>
<string name="open">Obre</string>
<string name="close">Tanca</string>
@@ -204,7 +238,6 @@
<string name="permission_explanation">Aquest connector necessita permisos per a funcionar</string>
<string name="optional_permission_explanation">Us caldrà concedir permisos extres per accedir a totes les característiques</string>
<string name="plugins_need_optional_permission">Alguns connectors tenen característiques desactivades per la falta de permís (puntegeu per a més informació):</string>
<string name="sftp_permission_explanation">Per accedir als fitxers des del PC, l\'aplicació necessita permís per accedir a l\'emmagatzematge del telèfon</string>
<string name="share_optional_permission_explanation">Per a compartir fitxers entre el telèfon i l\'escriptori, haureu de donar accés a l\'emmagatzematge del telèfon</string>
<string name="telepathy_permission_explanation">Per a llegir i escriure SMS des de l\'escriptori, haureu de donar permís als SMS</string>
<string name="telephony_permission_explanation">Per a veure les trucades telefòniques i SMS des de l\'escriptori, haureu de donar permís a les trucades telefòniques i SMS</string>
@@ -218,7 +251,7 @@
<string name="settings_icon_description">Icona d\'arranjament</string>
<string name="presenter_fullscreen">Pantalla completa</string>
<string name="presenter_exit">Surt de la presentació</string>
<string name="presenter_lock_tip">Podeu bloquejar el dispositiu per usar les tecles de volum com a botons d\'anterior/següent</string>
<string name="presenter_lock_tip">Podeu bloquejar el dispositiu i emprar les tecles de volum per anar a la diapositiva anterior/següent</string>
<string name="add_command">Afegeix una ordre</string>
<string name="addcommand_explanation">No hi ha cap ordre registrada</string>
<string name="addcommand_explanation2">Podeu afegir ordres noves a l\'Arranjament del sistema del KDE Connect</string>
@@ -250,6 +283,15 @@
<string name="settings_more_settings_title">Més ajustaments</string>
<string name="settings_more_settings_text">Els ajustaments per dispositiu es poden trobar a «Arranjament del connector» des d\'un dispositiu.</string>
<string name="setting_persistent_notification">Mostra les notificacions persistents</string>
<string name="setting_persistent_notification_oreo_description">Requerit per Android des de la versió 8.0</string>
<string name="setting_persistent_notification_pie_description">Des de l\'Android 9.0, aquesta notificació només es pot minimitzar fent-hi un toc llarg</string>
<string name="setting_persistent_notification_oreo">Notificacions persistents</string>
<string name="setting_persistent_notification_description">Tocar per a des/activar els ajustaments de les notificacions</string>
<string name="extra_options">Opcions extres</string>
<string name="privacy_options">Opcions de privadesa</string>
<string name="set_privacy_options">Establiu les opcions de privadesa</string>
<string name="new_notification">Notificació nova</string>
<string name="block_contents">Bloca el contingut de les notificacions</string>
<string name="block_images">Bloca les imatges a les notificacions</string>
<string name="notification_channel_receivenotification">Notificacions des d\'altres dispositius</string>
<string name="take_picture">Llança la càmera</string>
<string name="plugin_photo_desc">Llança l\'aplicació de la càmera per facilitar la presa i la transferència de fotografies</string>
</resources>

View File

@@ -13,7 +13,6 @@
<string name="pref_plugin_clipboard_desc">Sdílet obsah schránky</string>
<string name="pref_plugin_mousepad">Vzdálený vstup</string>
<string name="pref_plugin_mousepad_desc">Používejte svůj telefon nebo tablet jako touchpad a klávesnici</string>
<string name="pref_plugin_presenter">Promítací režim</string>
<string name="pref_plugin_presenter_desc">Použijte své zařízení pro přepínání snímků prezentace</string>
<string name="pref_plugin_remotekeyboard">Přijímat stisky kláves se vzdálených zařízení</string>
<string name="pref_plugin_remotekeyboard_desc">Přijímat události stisku kláves ze vzdálených zařízení</string>
@@ -74,7 +73,6 @@
<string name="category_connected_devices">Připojená zařízení</string>
<string name="category_not_paired_devices">Dostupná zařízení</string>
<string name="category_remembered_devices">Zapamatovaná zařízení</string>
<string name="plugins_failed_to_load">Moduly nebyly načteny (ťukněte pro více informací):</string>
<string name="device_menu_plugins">Nastavení modulů</string>
<string name="device_menu_unpair">Zrušit párování</string>
<string name="device_not_reachable">Spárované zařízení je nedostupné</string>
@@ -96,8 +94,18 @@
<string name="pairing_request_from">Požadavek o párování z %1s</string>
<string name="received_url_title">Přijat odkaz od %1s</string>
<string name="received_url_text">Ťukněte pro otevření \'%1s\'</string>
<string name="incoming_file_title">Příchozí soubor od %1s</string>
<string name="incoming_file_text">%1s</string>
<plurals name="incoming_file_title">
<item quantity="one">Přijímám %1$d soubor z %2$s</item>
<item quantity="few">Přijímám %1$d soubory z %2$s</item>
<item quantity="many">Přijímám %1$d souborů z %2$s</item>
<item quantity="other"/>
</plurals>
<plurals name="incoming_files_text">
<item quantity="one">Soubor: %1s</item>
<item quantity="few">(Soubor %2$d of %3$d) : %1$s</item>
<item quantity="many">(Soubor %2$d of %3$d) : %1$s</item>
<item quantity="other"/>
</plurals>
<string name="outgoing_file_title">Odesílám soubor do %1s</string>
<string name="outgoing_files_title">Odesílám soubory do %1s</string>
<plurals name="outgoing_files_text">
@@ -106,9 +114,20 @@
<item quantity="many">Odesláno %1$d ze %2$d souborů</item>
<item quantity="other"/>
</plurals>
<string name="received_file_title">Přijat soubor od %1s</string>
<string name="received_file_fail_title">Selhalo přijímání souboru od %1s</string>
<plurals name="received_files_title">
<item quantity="one">Přijat soubor z %1$s</item>
<item quantity="few">Přijaty %2$d soubory z %1$s</item>
<item quantity="many">Přijato %2$d souborů z %1$s</item>
<item quantity="other"/>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="one">Selhalo přijímání souboru z %1$s</item>
<item quantity="few">Selhalo přijímání %2$d ze %3$d souborů z %1$s</item>
<item quantity="many">Selhalo přijímání %2$d ze %3$d souborů z %1$s</item>
<item quantity="other"/>
</plurals>
<string name="received_file_text">Ťukněte pro otevření \'%1s\'</string>
<string name="cannot_create_file">Nelze vytvořit soubor %s</string>
<string name="sent_file_title">Soubor byl odeslán do %1s</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">Odesílání souborů na %1s selhalo</string>
@@ -124,7 +143,6 @@
<string name="pairing_reject">Odmítnout</string>
<string name="device">Zařízení</string>
<string name="pair_device">Spárovat zařízení</string>
<string name="remote_control">Vzdálené ovládání</string>
<string name="settings">Nastavení</string>
<string name="mpris_play">Přehrát</string>
<string name="mpris_pause">Pozastavit</string>
@@ -171,7 +189,6 @@
<string name="title_activity_notification_filter">Filtr upozornění</string>
<string name="filter_apps_info">Upozorňování mezi vybranými aplikacemi bude synchronizováno.</string>
<string name="sftp_internal_storage">Interní úložiště</string>
<string name="sftp_all_files">Všechny soubory</string>
<string name="sftp_sdcard_num">SD karta %d</string>
<string name="sftp_sdcard">SD karta</string>
<string name="sftp_readonly">(pouze ke čtení)</string>
@@ -179,7 +196,6 @@
<string name="add_host">Přidat stroj/IP</string>
<string name="add_host_hint">Název hostitele nebo IP</string>
<string name="no_players_connected">Přehrávač nenalezen</string>
<string name="custom_dev_list_help">Použijte tuto možnost pouze pokud není vaše zařízení automaticky detekováno. Zadejte níže IP adresu a název hostitele a stiskněte tlačítko pro přidání do seznamu. Stiskněte existující položku pro odstranění ze seznamu.</string>
<string name="mpris_player_on_device">%1$s na %2$s</string>
<string name="send_files">Odeslat soubory</string>
<string name="pairing_title">Zařízení KDE Connect</string>
@@ -206,7 +222,6 @@
<string name="permission_explanation">Tento modul potřebuje pro práci povolení</string>
<string name="optional_permission_explanation">Pro zpřístupnění všech funkcí potřebujete další oprávnění</string>
<string name="plugins_need_optional_permission">Některé moduly mají vypnuté vlastnosti, kvůli nedostatečným oprávněním (ťukněte pro více informací):</string>
<string name="sftp_permission_explanation">Pro přístup k souborům z vašeho počítače aplikace potřebuje oprávnění k úložišti telefonu</string>
<string name="share_optional_permission_explanation">Pro sdílení souborů mezi telefonem a počítačem potřebujete udělit oprávnění k úložišti telefonu</string>
<string name="telepathy_permission_explanation">Pro čtení a psaní SMS z počítače musíte udělit oprávnění k SMS</string>
<string name="telephony_permission_explanation">Pro zobrazení telefonátů a SMS v počítači musíte udělit oprávnění k telefonování a SMS</string>
@@ -220,7 +235,6 @@
<string name="settings_icon_description">Ikona nastavení</string>
<string name="presenter_fullscreen">Celá obrazovka</string>
<string name="presenter_exit">Ukončit prezentaci</string>
<string name="presenter_lock_tip">Zařízení můžete uzamknout a používat klávesy hlasitosti jako tlačítka předchozí/další</string>
<string name="add_command">Přidat příkaz</string>
<string name="addcommand_explanation">Nejsou registrovány žádné příkazy</string>
<string name="addcommand_explanation2">Nové příkazy můžete přidat v nastavení systému KDE Connect</string>
@@ -252,6 +266,13 @@
<string name="settings_more_settings_title">Více nastavení</string>
<string name="settings_more_settings_text">Nastavení \"pro každé zařízení\" lze najít v \'Nastavení modulu\' v zařízení.</string>
<string name="setting_persistent_notification">Ukázat stálé upozornění</string>
<string name="setting_persistent_notification_oreo_description">Vyžadováno Androidem od verze 8.0</string>
<string name="setting_persistent_notification_pie_description">Od Androidu 9.0 lze toto upozornění minimalizovat pouze jeho dlouhým podržem</string>
<string name="setting_persistent_notification_oreo">Perzistentní upozornění</string>
<string name="setting_persistent_notification_description">Ťuknutím povolíte/zakážete v nastavení upozorně</string>
<string name="extra_options">Další možnosti</string>
<string name="privacy_options">Možnosti soukromí</string>
<string name="set_privacy_options">Nastavte své možnosti soukromí</string>
<string name="new_notification">Nové oznámení</string>
<string name="block_contents">Blokovat obsah oznámení</string>
<string name="block_images">Blokovat obrázky z upozornění</string>
<string name="notification_channel_receivenotification">Oznamování z ostatních zařízení</string>
</resources>

View File

@@ -25,7 +25,7 @@
<string name="pref_plugin_sharereceiver_desc">Del filer og URL\'er mellem enheder</string>
<string name="plugin_not_available">Denne funktion er ikke tilgængelig i din Android-version</string>
<string name="device_list_empty">Ingen enheder</string>
<string name="ok">O.k.</string>
<string name="ok">OK</string>
<string name="cancel">Annullér</string>
<string name="open_settings">Åbn indstillinger</string>
<string name="no_permissions">Du skal give tilladelse for at tilgå bekendtgørelser</string>
@@ -63,7 +63,6 @@
<string name="category_connected_devices">Forbundne enheder</string>
<string name="category_not_paired_devices">Tilgængelig enheder</string>
<string name="category_remembered_devices">Huskede enheder</string>
<string name="plugins_failed_to_load">Plugins kunne ikke indlæses (tap for mere info):</string>
<string name="device_menu_plugins">Plugin-indstillinger</string>
<string name="device_menu_unpair">Fjern parring</string>
<string name="device_not_reachable">Den parrede enhed kan ikke tilgås</string>
@@ -85,12 +84,8 @@
<string name="pairing_request_from">Parringsanmodning fra %1s</string>
<string name="received_url_title">Modtog link fra %1s</string>
<string name="received_url_text">Tap for at åbne \"%1s\"</string>
<string name="incoming_file_title">Indkommende fil fra %1s</string>
<string name="incoming_file_text">%1s</string>
<string name="outgoing_file_title">Sender fil til %1s</string>
<string name="outgoing_files_title">Sender filer til %1s</string>
<string name="received_file_title">Modtog fil fra %1s</string>
<string name="received_file_fail_title">Kunne ikke modtage fil fra %1s</string>
<string name="received_file_text">Tap for at åbne \"%1s\"</string>
<string name="sent_file_title">Fil sendt til %1s</string>
<string name="sent_file_text">%1s</string>
@@ -107,7 +102,6 @@
<string name="pairing_reject">Afvis</string>
<string name="device">Enhed</string>
<string name="pair_device">Par med enhed</string>
<string name="remote_control">Fjernbetjening</string>
<string name="mpris_play">Afspil</string>
<string name="mpris_previous">Forrige</string>
<string name="mpris_rew">Spol tilbage</string>
@@ -145,15 +139,12 @@
<string name="title_activity_notification_filter">Bekendtgørelsesfilter</string>
<string name="filter_apps_info">Bekendtgørelser vil blive synkroniseret for de valgte apps.</string>
<string name="sftp_internal_storage">Intern lagring</string>
<string name="sftp_all_files">Alle filer</string>
<string name="sftp_sdcard_num">SD-kort %d</string>
<string name="sftp_sdcard">SD-kort</string>
<string name="sftp_readonly">(skrivebeskyttet)</string>
<string name="sftp_camera">Kamerabilleder</string>
<string name="add_host">Tilføj vært/IP</string>
<string name="add_host_hint">Værtsnavn eller IP</string>
<string name="no_players_connected">Ingen afspillere fundet</string>
<string name="custom_dev_list_help">Brug kun denne indstilling hvis din enhed ikke opdages automatisk. Angiv IP-adresse eller værtsnavn nedenfor og tryk på knappen for at føje den til listen. Tryk på et eksisterende element for at fjerne det fra listen.</string>
<string name="mpris_player_on_device">%1$s på %2$s</string>
<string name="send_files">Send filer</string>
<string name="pairing_title">KDE Connect-enheder</string>
@@ -179,7 +170,6 @@
<string name="permission_explanation">Dette plugin kræver tilladelser for at virke</string>
<string name="optional_permission_explanation">Du skal give ekstra tilladelser for at aktivere alle funktioner</string>
<string name="plugins_need_optional_permission">Nogle plugins har deaktiverede funktioner pga. manglende tilladelser (tap for mere info):</string>
<string name="sftp_permission_explanation">For at tilgå filerne fra din pc, skal app\'en have tilladelse til at til gå telefonens datalager</string>
<string name="share_optional_permission_explanation">For at dele filer mellem din telefon og din desktop skal du give adgang til telefonens datalager.</string>
<string name="telepathy_permission_explanation">For at læse og skrive sms\'er fra din desktop, skal du give tilladelse til sms</string>
<string name="telephony_permission_explanation">For at se telefonopkald og sms\'er fra desktoppen, skal du give tilladelse til telefonopkald og sms.</string>

View File

@@ -63,7 +63,6 @@
<string name="category_connected_devices">Verbundene Geräte</string>
<string name="category_not_paired_devices">Verfügbare Gerät</string>
<string name="category_remembered_devices">Gemerkte Geräte</string>
<string name="plugins_failed_to_load">Laden der Module fehlgeschlagen, tippen Sie für weitere Details:</string>
<string name="device_menu_plugins">Modul-Einstellungen</string>
<string name="device_menu_unpair">Verbindung trennen</string>
<string name="device_not_reachable">Das angegeben Gerät ist nicht erreichbar</string>
@@ -85,16 +84,12 @@
<string name="pairing_request_from">Verbindungsanfrage von %1s</string>
<string name="received_url_title">Verknüpfung von %1s erhalten</string>
<string name="received_url_text">Tippen um „%1s“ zu öffnen</string>
<string name="incoming_file_title">Eingehende Datei von %1s</string>
<string name="incoming_file_text">%1s</string>
<string name="outgoing_file_title">Datei wird an %1s gesendet</string>
<string name="outgoing_files_title">Datei wird an %1s gesendet</string>
<plurals name="outgoing_files_text">
<item quantity="one">%1$d Datei gesendet</item>
<item quantity="other">%1$d von %2$d Dateien gesendet</item>
</plurals>
<string name="received_file_title">Datei von %1s erhalten</string>
<string name="received_file_fail_title">Der Empfang der Datei %1s ist fehlgeschlagen</string>
<string name="received_file_text">Tippen um „%1s“ zu öffnen</string>
<string name="sent_file_title">Datei an %1s gesendet</string>
<string name="sent_file_text">%1s</string>
@@ -111,7 +106,6 @@
<string name="pairing_reject">Ablehnen</string>
<string name="device">Gerät</string>
<string name="pair_device">Gerät verbinden</string>
<string name="remote_control">Fernbedienung</string>
<string name="settings">Einstellungen</string>
<string name="mpris_play">Wiedergabe</string>
<string name="mpris_pause">Anhalten</string>
@@ -156,15 +150,12 @@
<string name="title_activity_notification_filter">Benachrichtigungs-Filter</string>
<string name="filter_apps_info">Benachrichtigungen werden zwischen den ausgewählten Anwendungen abgeglichen.</string>
<string name="sftp_internal_storage">Interner Speicher</string>
<string name="sftp_all_files">Alle Dateien</string>
<string name="sftp_sdcard_num">SD-Karte %d</string>
<string name="sftp_sdcard">SD-Karte</string>
<string name="sftp_readonly">(Nur lesen)</string>
<string name="sftp_camera">Kamerabilder</string>
<string name="add_host">Rechner/IP-Adresse hinzufügen</string>
<string name="add_host_hint">Rechnername oder IP-Adresse</string>
<string name="no_players_connected">Keine Medienspieler gefunden</string>
<string name="custom_dev_list_help">Benutzen Sie diese Funktion nur, wenn Ihr Gerät nicht automatisch erkannt wird. Geben hier Sie IP-Adresse oder Hostnamen ein und bestätigen Sie, um es zu der Liste hinzuzufügen. Tippen Sie ein bestehendes Gerät an, um es aus der Liste zu entfernen.</string>
<string name="mpris_player_on_device">%1$s auf %2$s</string>
<string name="send_files">Dateien senden</string>
<string name="pairing_title">KDE-Connect-Geräte</string>
@@ -191,7 +182,6 @@
<string name="permission_explanation">Dieses Modul benötigt zusätzliche Berechtigungen</string>
<string name="optional_permission_explanation">Es müssen weitere Berechtigungen erteilt werden, um alle Funktionen nutzen zu können</string>
<string name="plugins_need_optional_permission">Einige Module haben eingeschränkte Funktionen wegen fehlender Berechtigungen, tippen Sie für weitere Informationen:</string>
<string name="sftp_permission_explanation">Um vom Rechner auf den Telefonspeicher zuzugreifen, werden weitere Berechtigungen benötigt</string>
<string name="share_optional_permission_explanation">m Dateien zwischen Rechner und Telefon auszutauschen, muss der Zugriff auf den Telefonspeicher gewährt werden</string>
<string name="telepathy_permission_explanation">Um SMS vom Rechner aus zu lesen und zu versenden, muss der Zugriff auf die SMS-Funktion gewährt werden</string>
<string name="telephony_permission_explanation">Um Telefonate und SMS auf dem Rechner zu sehen, müssen Berechtigungen für Anrufe und SMS erteilt werden</string>

View File

@@ -63,7 +63,6 @@
<string name="category_connected_devices">Συνδεδεμένες συσκευές</string>
<string name="category_not_paired_devices">Διαθέσιμες συσκευές</string>
<string name="category_remembered_devices">Συσκευές στη μνήμη</string>
<string name="plugins_failed_to_load">Αποτυχία φόρτωσης προσθέτων (χτυπήστε για περισσότερες πληροφορίες):</string>
<string name="device_menu_plugins">Ρυθμίσεις προσθέτων</string>
<string name="device_menu_unpair">Διαχωρισμός</string>
<string name="device_not_reachable">Η συζευγμένη συσκευή δεν είναι προσβάσιμη</string>
@@ -85,12 +84,8 @@
<string name="pairing_request_from">Αίτημα σύζευξης από %1s</string>
<string name="received_url_title">Ελήφθη σύνδεσμος από %1s</string>
<string name="received_url_text">Χτυπήστε για άνοιγμα \'%1s\'</string>
<string name="incoming_file_title">Εισερχόμενο αρχείο από %1s</string>
<string name="incoming_file_text">%1s</string>
<string name="outgoing_file_title">Αποστολή αρχείου σε %1s</string>
<string name="outgoing_files_title">Αποστολή αρχείων σε %1s</string>
<string name="received_file_title">Ελήφθη αρχείο από %1s</string>
<string name="received_file_fail_title">Αποτυχία λήψης αρχείου από %1s</string>
<string name="received_file_text">Χτυπήστε για άνοιγμα \'%1s\'</string>
<string name="sent_file_title">Εστάλη αρχείο σε %1s</string>
<string name="sent_file_text">%1s</string>
@@ -107,7 +102,6 @@
<string name="pairing_reject">Απόρριψη</string>
<string name="device">Συσκευή</string>
<string name="pair_device">Σύζευξη συσκευής</string>
<string name="remote_control">Απομακρυσμένος έλεγχος</string>
<string name="mpris_play">Αναπαραγωγή</string>
<string name="mpris_previous">Προηγούμενο</string>
<string name="mpris_rew">Ταχεία ώθηση όπισθεν</string>
@@ -145,15 +139,12 @@
<string name="title_activity_notification_filter">Φιλτράρισμα ειδοποιήσεων</string>
<string name="filter_apps_info">Οι ειδοποιήσεις θα συγχρονίζονται για επιλεγμένες εφαρμογές.</string>
<string name="sftp_internal_storage">Εσωτερικός αποθηκευτικός χώρος</string>
<string name="sftp_all_files">Όλα τα αρχεία</string>
<string name="sftp_sdcard_num">SD card %d</string>
<string name="sftp_sdcard">SD card</string>
<string name="sftp_readonly">(ανάγνωση μόνο)</string>
<string name="sftp_camera">Φωτογραφίες</string>
<string name="add_host">Προσθήκη υπολογιστή/IP</string>
<string name="add_host_hint">Όνομα υπολογιστή ή IP</string>
<string name="no_players_connected">Δεν βρέθηκαν συσκευές αναπαραγωγής</string>
<string name="custom_dev_list_help">Χρησιμοποιήστε την επιλογή αυτή μόνο αν η συσκευή σας δεν έχει εντοπιστεί αυτόματα. Δώστε την IP διεύθυνση ή το όνομα του υπολογιστή και αγγίξτε το κουμπί για να προστεθεί στη λίστα. Αγγίξτε ένα αντικείμενο της λίστας για να το αφαιρέσετε.</string>
<string name="mpris_player_on_device">%1$s σε %2$s</string>
<string name="send_files">Αποστολή αρχείων</string>
<string name="pairing_title">Συσκευές KDE Connect</string>
@@ -179,7 +170,6 @@
<string name="permission_explanation">Αυτό το πρόσθετο χρειάζεται δικαιώματα για να λειτουργήσει</string>
<string name="optional_permission_explanation">Απαιτείται παραχώρηση επιπλέον δικαιωμάτων για την ενεργοποίηση όλων των λειτουργιών</string>
<string name="plugins_need_optional_permission">Κάποια πρόσθετα έχουν λειτουργίες ανενεργές εξαιτίας της απουσίας δικαιωμάτων (χτυπήστε για περισσότερες πληροφορίες):</string>
<string name="sftp_permission_explanation">Για την πρόσβαση στα αρχεία σας από τον υπολογιστή η εφαρμογή χρειάζεται δικαιώματα πρόσβασης στον αποθηκευτικό χώρο του κινητού σας</string>
<string name="share_optional_permission_explanation">Για το διαμοιρασμό αρχείων ανάμεσα στο τηλέφωνο και τον υπολογιστή σας χρειάζεται να παραχωρήσετε πρόσβαση στον αποθηκευτικό χώρο του τηλεφώνου σας</string>
<string name="telepathy_permission_explanation">Για να διαβάσετε και να γράψετε SMS από την επιφάνεια εργασίας, χρειάζεται να δώσετε δικαιώματα στο SMS</string>
<string name="telephony_permission_explanation">Για να δείτε τηλεφωνικές κλήσεις και SMS από την επιφάνεια εργασίας, χρειάζεται να παραχωρήσετε δικαιώματα σε τηλεφωνικές κλήσεις και SMS</string>

View File

@@ -13,7 +13,6 @@
<string name="pref_plugin_clipboard_desc">Share the clipboard content</string>
<string name="pref_plugin_mousepad">Remote input</string>
<string name="pref_plugin_mousepad_desc">Use your phone or tablet as a touchpad and keyboard</string>
<string name="pref_plugin_presenter">Presentation remote</string>
<string name="pref_plugin_presenter_desc">Use your device to change slides in a presentation</string>
<string name="pref_plugin_remotekeyboard">Receive remote keypresses</string>
<string name="pref_plugin_remotekeyboard_desc">Receive keypress events from remote devices</string>
@@ -74,7 +73,6 @@
<string name="category_connected_devices">Connected devices</string>
<string name="category_not_paired_devices">Available devices</string>
<string name="category_remembered_devices">Remembered devices</string>
<string name="plugins_failed_to_load">Plugins failed to load (tap for more info):</string>
<string name="device_menu_plugins">Plugin settings</string>
<string name="device_menu_unpair">Unpair</string>
<string name="device_not_reachable">Paired device not reachable</string>
@@ -96,16 +94,12 @@
<string name="pairing_request_from">Pairing request from %1s</string>
<string name="received_url_title">Received link from %1s</string>
<string name="received_url_text">Tap to open \'%1s\'</string>
<string name="incoming_file_title">Incoming file from %1s</string>
<string name="incoming_file_text">%1s</string>
<string name="outgoing_file_title">Sending file to %1s</string>
<string name="outgoing_files_title">Sending files to %1s</string>
<plurals name="outgoing_files_text">
<item quantity="one">Send files</item>
<item quantity="other">Sent %1$d out of %2$d files</item>
</plurals>
<string name="received_file_title">Received file from %1s</string>
<string name="received_file_fail_title">Failed receiving file from %1s</string>
<string name="received_file_text">Tap to open \'%1s\'</string>
<string name="sent_file_title">Sent file to %1s</string>
<string name="sent_file_text">%1s</string>
@@ -122,7 +116,6 @@
<string name="pairing_reject">Reject</string>
<string name="device">Device</string>
<string name="pair_device">Pair device</string>
<string name="remote_control">Remote control</string>
<string name="settings">Settings</string>
<string name="mpris_play">Play</string>
<string name="mpris_pause">Pause</string>
@@ -168,15 +161,12 @@
<string name="title_activity_notification_filter">Notification filter</string>
<string name="filter_apps_info">Notifications will be synchronised for the selected apps.</string>
<string name="sftp_internal_storage">Internal storage</string>
<string name="sftp_all_files">All files</string>
<string name="sftp_sdcard_num">SD card %d</string>
<string name="sftp_sdcard">SD card</string>
<string name="sftp_readonly">(read only)</string>
<string name="sftp_camera">Camera pictures</string>
<string name="add_host">Add host/IP</string>
<string name="add_host_hint">Hostname or IP</string>
<string name="no_players_connected">No players found</string>
<string name="custom_dev_list_help">Use this option only if your device is not automatically detected. Enter IP address or hostname below and touch the button to add it to the list. Touch an existing item to remove it from the list.</string>
<string name="mpris_player_on_device">%1$s on %2$s</string>
<string name="send_files">Send files</string>
<string name="pairing_title">KDE Connect Devices</string>
@@ -203,7 +193,6 @@
<string name="permission_explanation">This plugin needs permissions to work</string>
<string name="optional_permission_explanation">You need to grant extra permissions to enable all functions</string>
<string name="plugins_need_optional_permission">Some plugins have features disabled because of lack of permission (tap for more info):</string>
<string name="sftp_permission_explanation">To access your files from your PC the app needs permission to access your phone\'s storage</string>
<string name="share_optional_permission_explanation">To share files between your phone and your desktop you need to give access to the phone\'s storage</string>
<string name="telepathy_permission_explanation">To read and write SMS from your desktop you need to give permission to SMS</string>
<string name="telephony_permission_explanation">To see phone calls and SMS from the desktop you need to give permission to phone calls and SMS</string>
@@ -217,7 +206,6 @@
<string name="settings_icon_description">Settings icon</string>
<string name="presenter_fullscreen">Full-screen</string>
<string name="presenter_exit">Exit presentation</string>
<string name="presenter_lock_tip">You can lock your device to use the volume keys as previous/next buttons</string>
<string name="add_command">Add a command</string>
<string name="addcommand_explanation">There are no commands registered</string>
<string name="addcommand_explanation2">You can add new commands in the KDE Connect System Settings</string>
@@ -249,6 +237,4 @@
<string name="settings_more_settings_title">More settings</string>
<string name="settings_more_settings_text">Per-device settings can be found under \'Plugin settings\' from within a device.</string>
<string name="setting_persistent_notification">Show persistent notification</string>
<string name="setting_persistent_notification_oreo_description">Required by Android since Android 8.0</string>
<string name="setting_persistent_notification_pie_description">Since Android 9.0, this notification can only be minimised by long tapping on it</string>
</resources>

View File

@@ -13,7 +13,7 @@
<string name="pref_plugin_clipboard_desc">Compartir el contenido del portapapeles</string>
<string name="pref_plugin_mousepad">Entrada remota</string>
<string name="pref_plugin_mousepad_desc">Usar su teléfono o tableta como teclado y teclado táctil</string>
<string name="pref_plugin_presenter">Presentación remota</string>
<string name="pref_plugin_presenter">Presentación de diapositivas remota</string>
<string name="pref_plugin_presenter_desc">Use su dispositivo para cambiar las diapositivas de una presentación</string>
<string name="pref_plugin_remotekeyboard">Recibir pulsaciones de teclas remotas</string>
<string name="pref_plugin_remotekeyboard_desc">Recibir eventos de pulsación de teclas desde dispositivos remotos</string>
@@ -74,7 +74,6 @@
<string name="category_connected_devices">Dispositivos conectados</string>
<string name="category_not_paired_devices">Dispositivos disponibles</string>
<string name="category_remembered_devices">Dispositivos recordados</string>
<string name="plugins_failed_to_load">Complementos cuya carga ha fallado (pulse para más información):</string>
<string name="device_menu_plugins">Preferencias del complemento</string>
<string name="device_menu_unpair">Desvincular</string>
<string name="device_not_reachable">No se encuentra el dispositivo aparejado</string>
@@ -96,17 +95,30 @@
<string name="pairing_request_from">Solicitud de vinculación de %1s</string>
<string name="received_url_title">Enlace recibido desde %1s</string>
<string name="received_url_text">Pulse para abrir «%1s»</string>
<string name="incoming_file_title">Archivo entrante desde %1s</string>
<string name="incoming_file_text">%1s</string>
<plurals name="incoming_file_title">
<item quantity="one">Recibiendo %1$d archivo desde %2$s</item>
<item quantity="other">Recibiendo %1$d archivos desde %2$s</item>
</plurals>
<plurals name="incoming_files_text">
<item quantity="one">Archivo: %1s</item>
<item quantity="other">(Archivo %2$d de %3$d) : %1$s</item>
</plurals>
<string name="outgoing_file_title">Enviando archivo a %1s</string>
<string name="outgoing_files_title">Enviando archivos a %1s</string>
<plurals name="outgoing_files_text">
<item quantity="one">Enviado %1$d archivo</item>
<item quantity="other">Enviados %1$d de %2$d archivos</item>
</plurals>
<string name="received_file_title">Archivo recibido desde %1s</string>
<string name="received_file_fail_title">Fallo recibiendo archivo desde %1s</string>
<plurals name="received_files_title">
<item quantity="one">Recibido archivo desde %1$s</item>
<item quantity="other">Recibidos %2$d archivos desde %1$s</item>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="one">Fallo recibiendo archivo desde %1$s</item>
<item quantity="other">Fallo recibiendo %2$d de %3$d archivos desde %1$s</item>
</plurals>
<string name="received_file_text">Pulse para abrir «%1s»</string>
<string name="cannot_create_file">No se pudo crear el archivo %s</string>
<string name="sent_file_title">Archivo enviado a %1s</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">Fallo al enviar el archivo a %1s</string>
@@ -122,7 +134,6 @@
<string name="pairing_reject">Rechazar</string>
<string name="device">Dispositivo</string>
<string name="pair_device">Vincular dispositivo</string>
<string name="remote_control">Control remoto</string>
<string name="settings">Preferencias</string>
<string name="mpris_play">Reproducir</string>
<string name="mpris_pause">Pausar</string>
@@ -158,6 +169,10 @@
<string name="unpair_device_action">Desvincular %s</string>
<string name="custom_device_list">Añadir dispositivos por IP</string>
<string name="delete_custom_device">¿Borrar %s?</string>
<string name="custom_device_deleted">Dispositivo personalizado borrado</string>
<string name="custom_device_list_help">Si su dispositivo no es detectado automáticamente puede añadir su dirección IP o nombre pulsando el botón de acción flotante</string>
<string name="custom_device_fab_hint">Añadir un dispositivo</string>
<string name="undo">Deshacer</string>
<string name="share_notification_preference">Notificaciones ruidosas</string>
<string name="share_notification_preference_summary">Vibrar y reproducir un sonido cuando se reciba un archivo</string>
<string name="share_destination_customize">Personalizar directorio destino</string>
@@ -169,15 +184,33 @@
<string name="title_activity_notification_filter">Filtro de notificaciones</string>
<string name="filter_apps_info">Las notificaciones se sincronizarán en las aplicaciones seleccionadas.</string>
<string name="sftp_internal_storage">Almacenamiento interno</string>
<string name="sftp_all_files">Todos los archivos</string>
<string name="sftp_sdcard_num">Tarjeta SD %d</string>
<string name="sftp_sdcard">Tarjeta SD</string>
<string name="sftp_readonly">(solo lectura)</string>
<string name="sftp_camera">Imágenes de la cámara</string>
<string name="add_device_dialog_title">Añadir dispositivo</string>
<string name="add_device_hint">Nombre o dirección IP</string>
<string name="sftp_preference_detected_sdcards">Tarjetas SD detectadas</string>
<string name="sftp_preference_edit_sdcard_title">Editar tarjeta SD</string>
<string name="sftp_preference_configured_storage_locations">Localizaciones de almacenamiento configuradas</string>
<string name="sftp_preference_add_storage_location_title">Añadir localización de almacenamiento</string>
<string name="sftp_preference_edit_storage_location">Editar localización de almacenamiento</string>
<string name="sftp_preference_add_camera_shortcut">Añadir acceso rápido a la carpeta de la cámara</string>
<string name="sftp_preference_add_camera_shortcut_summary_on">Añadir un acceso rápido a la carpeta de la cámara</string>
<string name="sftp_preference_add_camera_shortcut_summary_off">No añadir un acceso rápido a la carpeta de la cámara</string>
<string name="sftp_storage_preference_storage_location">Localización de almacenamiento</string>
<string name="sftp_storage_preference_storage_location_already_configured">Esta localización ya ha sido configurada</string>
<string name="sftp_storage_preference_click_to_select">pulsar para seleccionar</string>
<string name="sftp_storage_preference_display_name">Mostrar nombre</string>
<string name="sftp_storage_preference_display_name_already_used">Este nombre de dispositivo ya está en uso</string>
<string name="sftp_storage_preference_display_name_cannot_be_empty">El nombre de dispositivo no puede estar vacío</string>
<string name="sftp_action_mode_menu_delete">Borrar</string>
<string name="sftp_no_sdcard_detected">No se ha detectado ninguna tarjeta SD</string>
<string name="sftp_no_storage_locations_configured">No hay configurada ninguna localización de almacenamiento</string>
<string name="sftp_saf_permission_explanation">Para acceder a los archivos remotamente debe configurar las localizaciones de almacenamiento</string>
<string name="add_host">Añadir servidor/IP</string>
<string name="add_host_hint">Nombre o dirección IP</string>
<string name="add_host_hint">Nombre o IP</string>
<string name="no_players_connected">Ningún reproductor encontrado</string>
<string name="custom_dev_list_help">Use esta opción solo si su dispositivo no es detectado automáticamente. Introduzca la dirección IP o nombre debajo y pulse el botón para añadirlo a la lista. Pulse un ítem existente para eliminarlo de la lista.</string>
<string name="mpris_player_on_device">%1$s en %2$s</string>
<string name="send_files">Enviar archivos</string>
<string name="pairing_title">Dispositivos de KDE Connect</string>
@@ -204,7 +237,6 @@
<string name="permission_explanation">Este complemento necesita permisos para funcionar</string>
<string name="optional_permission_explanation">Debe otorgar permisos extra para activar todas las funciones</string>
<string name="plugins_need_optional_permission">Algunos complementos tienen funcionalidades desactivadas por falta de permisos (pulse para más información):</string>
<string name="sftp_permission_explanation">Para acceder a sus archivos desde su equipo, la aplicación necesita permisos para acceder al almacenamiento de su teléfono</string>
<string name="share_optional_permission_explanation">Para compartir archivos entre su teléfono y su escritorio, necesita dar acceso al almacenamiento de su teléfono</string>
<string name="telepathy_permission_explanation">Para leer y escribir SMS desde su escritorio, necesita dar permisos para SMS</string>
<string name="telephony_permission_explanation">Para ver las llamadas telefónicas y SMS desde su escritorio, necesita dar permisos para llamadas telefónicas y SMS</string>
@@ -218,7 +250,7 @@
<string name="settings_icon_description">Icono de preferencias</string>
<string name="presenter_fullscreen">Pantalla completa</string>
<string name="presenter_exit">Salir de la presentación</string>
<string name="presenter_lock_tip">Puede bloquear su dispositivo para usar las teclas de volumen como botones previa/siguiente</string>
<string name="presenter_lock_tip">Puede bloquear su dispositivo y usar las teclas de volumen para ir a la diapositiva previa/siguiente</string>
<string name="add_command">Añadir una orden</string>
<string name="addcommand_explanation">No hay ninguna orden registrada</string>
<string name="addcommand_explanation2">Puede añadir nuevas órdenes en las preferencias del sistema de KDE Connect</string>
@@ -250,6 +282,15 @@
<string name="settings_more_settings_title">Más preferencias</string>
<string name="settings_more_settings_text">Las preferencias por dispositivo se pueden encontrar bajo «Preferencias del complemento» dentro de cada dispositivo.</string>
<string name="setting_persistent_notification">Mostrar notificación persistente</string>
<string name="setting_persistent_notification_oreo_description">Requerido por Android desde Android 8.0</string>
<string name="setting_persistent_notification_pie_description">A partir de Android 9.0, esta notificación solo se puede minimizar mediante una pulsación larga en ella.</string>
<string name="setting_persistent_notification_oreo">Notificación persistente</string>
<string name="setting_persistent_notification_description">Pulse para activar/desactivar en las preferencias de notificaciones</string>
<string name="extra_options">Opciones adicionales</string>
<string name="privacy_options">Opciones de privacidad</string>
<string name="set_privacy_options">Establezca sus opciones de privacidad</string>
<string name="new_notification">Nueva notificación</string>
<string name="block_contents">Bloquear el contenido de las notificaciones</string>
<string name="block_images">Bloquear las imágenes en las notificaciones</string>
<string name="notification_channel_receivenotification">Notificaciones desde otros dispositivos</string>
<string name="take_picture">Lanzar cámara</string>
<string name="plugin_photo_desc">Lanzar la aplicación de la cámara para facilitar tomar y transferir imágenes</string>
</resources>

View File

@@ -57,7 +57,6 @@
<string name="category_connected_devices">Ühendatud seadmed</string>
<string name="category_not_paired_devices">Saadaolevad seadmed</string>
<string name="category_remembered_devices">Meeldejäetud seadmed</string>
<string name="plugins_failed_to_load">Pluginate laadimine nurjus (koputa rohkema teabe saamiseks)</string>
<string name="device_menu_plugins">Plugina seadistused</string>
<string name="device_menu_unpair">Eemalda paardumine</string>
<string name="device_not_reachable">Paardunud seade pole saadaval</string>
@@ -79,12 +78,8 @@
<string name="pairing_request_from">Paardumise soov seadmest %1s</string>
<string name="received_url_title">Lingi saamine seadmest %1s</string>
<string name="received_url_text">Koputa \"%1s\" avamiseks</string>
<string name="incoming_file_title">Saabuv fail seadmest %1s</string>
<string name="incoming_file_text">%1s</string>
<string name="outgoing_file_title">Faili saatmine seadmesse %1s</string>
<string name="outgoing_files_title">Failide saatmine seadmesse %1s</string>
<string name="received_file_title">Faili saamine seadmest %1s</string>
<string name="received_file_fail_title">Faili saamine seadmest %1s nurjus</string>
<string name="received_file_text">Koputa \"%1s\" avamiseks</string>
<string name="sent_file_title">Fail saadeti seadmesse %1s</string>
<string name="sent_file_text">%1s</string>
@@ -101,7 +96,6 @@
<string name="pairing_reject">Keeldu</string>
<string name="device">Seade</string>
<string name="pair_device">Paarita seade</string>
<string name="remote_control">Kaugjuhtimine</string>
<string name="mpris_play">Esita</string>
<string name="mpris_previous">Eelmine</string>
<string name="mpris_rew">Keri tagasi</string>
@@ -139,15 +133,12 @@
<string name="title_activity_notification_filter">Märguannete filter</string>
<string name="filter_apps_info">Valitud rakenduste märguanded sünkroonitakse</string>
<string name="sftp_internal_storage">Sisemine salvesti</string>
<string name="sftp_all_files">Kõik failid</string>
<string name="sftp_sdcard_num">SD-kaart %d</string>
<string name="sftp_sdcard">SD-kaart</string>
<string name="sftp_readonly">(kirjutuskaitstud)</string>
<string name="sftp_camera">Kaamera pildid</string>
<string name="add_host">Lisa masin/IP</string>
<string name="add_host_hint">Masinanimi või IP</string>
<string name="no_players_connected">Ühtegi mängijat ei leitud</string>
<string name="custom_dev_list_help">Seda tuleks kasutada ainult siis, kui sinu seadet ei tuvastatud automaatselt. Sisesta allpool IP-aadress või masinanimi ja puuduta nuppu selle lisamiseks loendisse. Puuduta olemasolevat kirjet selle eemaldamiseks loendist.</string>
<string name="mpris_player_on_device">%1$s seadmes %2$s</string>
<string name="send_files">Saada faile</string>
<string name="pairing_title">KDE Connecti seadmed</string>

View File

@@ -1,6 +1,10 @@
<?xml version='1.0' encoding='utf-8'?>
<resources>
<string name="kde_connect">KDE Connect</string>
<string name="foreground_notification_no_devices">Ez dago ezein gailuetara konektaturik</string>
<string name="foreground_notification_devices">Honetara konektatua: %s</string>
<string name="pref_plugin_telephony">Telefonia jakinarazlea</string>
<string name="pref_plugin_telephony_desc">Bidali jakinarazpenak sarrerako deietarako</string>
<string name="pref_plugin_battery">Bateriaren txostena</string>
<string name="pref_plugin_battery_desc">Bidali bateriaren egoera aldiro</string>
<string name="pref_plugin_sftp">Fitxategi-sistemaren esposaketa</string>
@@ -9,12 +13,15 @@
<string name="pref_plugin_clipboard_desc">Partekatu arbelaren edukia</string>
<string name="pref_plugin_mousepad">Urruneko sarrera</string>
<string name="pref_plugin_mousepad_desc">Erabili zure telefonoa edo tableta ukimen-sagu eta teklatu gisa</string>
<string name="pref_plugin_presenter_desc">Erabili zure gailua aurkezpen bateko diapositibak aldatzeko</string>
<string name="pref_plugin_remotekeyboard">Jaso urruneko tekla-sakatzeak</string>
<string name="pref_plugin_remotekeyboard_desc">Jaso tekla-sakatze gertaerak urruneko gailuetatik</string>
<string name="pref_plugin_mpris">Multimedia kontrolak</string>
<string name="pref_plugin_mpris_desc">Zure media jotzailearen urruneko kontrola ematen dizu</string>
<string name="pref_plugin_runcommand">Exekutatu agindua</string>
<string name="pref_plugin_runcommand_desc">Abiarazi urruneko aginduak zure telefono edo tabletatik</string>
<string name="pref_plugin_contacts">Kontaktuen sinkronizatzailea</string>
<string name="pref_plugin_contacts_desc">Utzi gailuaren kontaktuen liburuak sinkronizatzen</string>
<string name="pref_plugin_ping">Ping</string>
<string name="pref_plugin_ping_desc">Bidali eta jaso pingak</string>
<string name="pref_plugin_notifications">Jakinarazpenen sinkronizazioa</string>
@@ -29,6 +36,7 @@
<string name="cancel">Utzi</string>
<string name="open_settings">Ireki ezarpenak</string>
<string name="no_permissions">Jakinarazpenak atzitzeko baimena eman behar duzu</string>
<string name="no_permission_mprisreceiver">Zure euskarri-jotzaileak kontrolatu ahal izateko jakinarazpenetara atzipena eman behar diozu</string>
<string name="send_ping">Bidali ping</string>
<string name="open_mpris_controls">Multimedia kontrola</string>
<string name="remotekeyboard_editing_only_title">Erabili urruneko teklak editatzean besterik ez</string>
@@ -36,9 +44,11 @@
<string name="remotekeyboard_connected">Urruneko teklatuarekin konexioa aktibo dago</string>
<string name="remotekeyboard_multiple_connections">Urruneko teklatuekin konexio bat baino gehiago dago, hautatu konfiguratu beharreko gailua</string>
<string name="open_mousepad">Urruneko sarrera</string>
<string name="mousepad_double_tap_settings_title">Ezarri bi atzamarren ekintza</string>
<string name="mousepad_triple_tap_settings_title">Ezarri hiru atzamarren ekintza</string>
<string name="mousepad_info">Mugitu hatz bat pantailan zehar saguaren erakuslea mugitzeko. Egin tak klik baterako, eta erabili bi/hiru hatz eskuin eta erdiko botoietarako. Erabili 2 hatz labaintzeko. Erabili sakatze luze bat arrastatu eta jaregiteko.</string>
<string name="mousepad_double_tap_settings_title">Ezarri bi hatzez tak egitearen ekintza</string>
<string name="mousepad_triple_tap_settings_title">Ezarri hiru hatzez tak egitearen ekintza</string>
<string name="mousepad_sensitivity_settings_title">Ezarri ukimen-saguaren sentikortasuna</string>
<string name="mousepad_acceleration_profile_settings_title">Ezarri erakuslearen azelerazio</string>
<string name="mousepad_scroll_direction_title">Alderantzikatu korritzearen norabidea</string>
<string-array name="mousepad_tap_entries">
<item>Eskumako klik</item>
@@ -53,17 +63,16 @@
<item>Azkarrena</item>
</string-array>
<string-array name="mousepad_acceleration_profile_entries">
<item>No Acceleration</item>
<item>Weakest</item>
<item>Weaker</item>
<item>Medium</item>
<item>Stronger</item>
<item>Strongest</item>
<item>Azeleraziorik ez</item>
<item>Ahulena</item>
<item>Ahulagoa</item>
<item>Ertaina</item>
<item>Sendoagoa</item>
<item>Sendoena</item>
</string-array>
<string name="category_connected_devices">Konektatutako gailuak</string>
<string name="category_not_paired_devices">Gailu eskuragarriak</string>
<string name="category_remembered_devices">Gogoratutako gailuak</string>
<string name="plugins_failed_to_load">Pluginak kargatzen huts egin dute (sakatu informazio gehiagorako):</string>
<string name="device_menu_plugins">Pluginen ezarpenak</string>
<string name="device_menu_unpair">Desparekatu</string>
<string name="device_not_reachable">Parekatu gailua ez dago eskuragarri</string>
@@ -84,19 +93,36 @@
<string name="pair_requested">Parekatzea eskatu da</string>
<string name="pairing_request_from">Parekatzeko eskaria %1s-tik</string>
<string name="received_url_title">Esteka jaso da %1s-tik</string>
<string name="received_url_text">Sakatu \'%1s\' irekitzeko</string>
<string name="incoming_file_title">Fitxategia jasotzen %1s-tik</string>
<string name="incoming_file_text">%1s</string>
<string name="received_url_text">Tak egin \'%1s\' irekitzeko</string>
<plurals name="incoming_file_title">
<item quantity="one">%2$s(e)tik fitxategi %1$d jasotzen</item>
<item quantity="other">%2$s(e)tik %1$d fitxategi jasotzen</item>
</plurals>
<plurals name="incoming_files_text">
<item quantity="one">Fitxategia: %1s</item>
<item quantity="other">(%3$d(e)tik %2$d fitxategia) : %1$s</item>
</plurals>
<string name="outgoing_file_title">Fitxategia bidaltzen %1s-ra</string>
<string name="outgoing_files_title">Fitxategiak bidaltzen %1s-ra</string>
<string name="received_file_title">Fitxategia jaso da %1s-tik</string>
<string name="received_file_fail_title">Huts egin du fitxategia jasotzea %1s-tik</string>
<string name="received_file_text">Sakatu \'%1s\' irekitzeko</string>
<plurals name="outgoing_files_text">
<item quantity="one">Bidali %1$d fitxategia</item>
<item quantity="other">Bidali %2$d fitxategitik %1$d</item>
</plurals>
<plurals name="received_files_title">
<item quantity="one">Fitxategi bat jaso da %1$s-tik</item>
<item quantity="other">%2$d fitxategi jaso dira %1$s-tik</item>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="one">Huts egin du fitxategi bat %1$s-tik jasotzeak</item>
<item quantity="other">Huts egin du %2$d/%3$d fitxategi %1$s-tik jasotzeak</item>
</plurals>
<string name="received_file_text">Tak egin \'%1s\' irekitzeko</string>
<string name="cannot_create_file">Ezin da sortu %s fitxategia</string>
<string name="sent_file_title">Fitxategia bidalita %1s-ra</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">Huts egin du fitxategia bidaltzea %1s-ra</string>
<string name="sent_file_failed_title">Huts egin du fitxategia %1s(e)ra bidaltzea</string>
<string name="sent_file_failed_text">%1s</string>
<string name="tap_to_answer">Sakatu erantzuteko</string>
<string name="tap_to_answer">Tak egin erantzuteko</string>
<string name="reconnect">Birkonektatu</string>
<string name="right_click">Bidali eskumako klik</string>
<string name="middle_click">Bidali erdiko klik</string>
@@ -107,8 +133,9 @@
<string name="pairing_reject">Ukatu</string>
<string name="device">Gailua</string>
<string name="pair_device">Parekatu gailua</string>
<string name="remote_control">Urruneko kontrola</string>
<string name="settings">Ezarpenak</string>
<string name="mpris_play">Jo</string>
<string name="mpris_pause">Eten</string>
<string name="mpris_previous">Aurrekoa</string>
<string name="mpris_rew">Atzera eraman</string>
<string name="mpris_ff">Aurrera eraman</string>
@@ -116,6 +143,7 @@
<string name="mpris_volume">Bolumena</string>
<string name="mpris_settings">Multimedia ezarpenak</string>
<string name="mpris_time_settings_title">Atzera eraman / Aurrera eraman botoiak</string>
<string name="mpris_time_settings_summary">Doitu sakatzean aurrera/atzera azkar egin beharreko denbora</string>
<string-array name="mpris_time_entries">
<item>10 segundo</item>
<item>20 segundo</item>
@@ -123,6 +151,9 @@
<item>minutu 1</item>
<item>2 minutu</item>
</string-array>
<string name="mpris_notification_settings_title">Erakutsi euskarri kontrolaren jakinarazpena</string>
<string name="mpris_notification_settings_summary">Utzi zure euskarri-jotzaileak kontrolatzen KDE Connect ireki gabe</string>
<string name="share_to">Partekatu honi...</string>
<string name="protocol_version_older">Gailu honek protokoloaren bertsio zahar bat erabiltzen du</string>
<string name="protocol_version_newer">Gailu honek protokoloaren bertsio berriago bat erabiltzen du</string>
<string name="general_settings">Ezarpen orokorrak</string>
@@ -136,24 +167,24 @@
<string name="pair_device_action">Parekatu gailu berria</string>
<string name="unpair_device_action">Desparekatu %s</string>
<string name="custom_device_list">Gehitu gailuak IP bidez</string>
<string name="delete_custom_device">Ezabatu %s?</string>
<string name="share_notification_preference">Jakinarazpen zaratatsuak</string>
<string name="share_notification_preference_summary">Bibratu eta jo soinua fitxategia jasotzean</string>
<string name="share_destination_customize">Pertsonalizatu direktorio xedea</string>
<string name="share_destination_customize_summary_disabled">Jasotako fitxategiak Deskargak karpetan agertuko dira</string>
<string name="share_destination_customize_summary_enabled">Fitxategiak beheko direktorioan gordeko dira</string>
<string name="share_destination_folder_preference">Direktorio xedea</string>
<string name="share">Partekatu</string>
<string name="share_received_file">Partekatu \"%s\"</string>
<string name="title_activity_notification_filter">Jakinarazpenen iragazkia</string>
<string name="filter_apps_info">Aukeratutako aplikazioen jakinarazpenak sinkronizatuko dira</string>
<string name="sftp_internal_storage">Barne biltegiratzea</string>
<string name="sftp_all_files">Fitxategi guztiak</string>
<string name="sftp_sdcard_num">%d SD txartela</string>
<string name="sftp_sdcard">SD txartela</string>
<string name="sftp_readonly">(irakurri soilik)</string>
<string name="sftp_camera">Kamerako irudiak</string>
<string name="add_host">Gehitu ostalaria/IP</string>
<string name="add_host_hint">Ostalaria edo IP</string>
<string name="no_players_connected">Ez da jokalaririk aurkitu</string>
<string name="custom_dev_list_help">Erabili aukera hau zure gailua automatikoki antzematen ez denean. Sartu IP helbidea edo ostalaria azpian eta ukitu botoia zerrendara gehitzeko. Ukitu badagoen elementu bat zerrendatik ezabatzeko.</string>
<string name="mpris_player_on_device">%1$s - %2$s</string>
<string name="send_files">Bidali fitxategiak</string>
<string name="pairing_title">KDE Connect gailuak</string>
@@ -170,18 +201,65 @@
<string name="plugin_not_supported">Gailu honek ez du plugin honentzako euskarririk</string>
<string name="findmyphone_title">Bilatu nire telefonoa</string>
<string name="findmyphone_title_tablet">Bilatu nire tableta</string>
<string name="findmyphone_title_tv">Aurkitu nire TB</string>
<string name="findmyphone_description">Gailuaren dei-doinua jotzen du aurki dezazun</string>
<string name="findmyphone_found">Aurkituta</string>
<string name="open">Ireki</string>
<string name="close">Itxi</string>
<string name="no_permissions_storage">Biltegiratzea atzitzeko baimena eman behar duzu</string>
<string name="plugins_need_permission">Plugin batzuk baimenak behar dituzte funtzionatzeko (sakatu informazio gehiagorako):</string>
<string name="plugins_need_permission">Plugin batzuek jarduteko baimenak behar dituzte (tak egin informazio gehiagorako):</string>
<string name="permission_explanation">Plugin honek baimena behar du funtzionatzeko</string>
<string name="optional_permission_explanation">Baimen gehiago eman behar dituzu funtzio guztiak gaitzeko</string>
<string name="plugins_need_optional_permission">Plugin batzuk desgaitutako funtzioak dituzte baimenak faltan dituztelako (sakatu informazio gehiagorako):</string>
<string name="sftp_permission_explanation">Zure fitxategiak PCtik atzitzeko aplikazioak zure telefonoaren biltegiratzea atzitzeko baimena behar du</string>
<string name="plugins_need_optional_permission">Plugin batzuek desgaitutako eginbideak dituzte baimenak faltan dituztelako (tak egin informazio gehiagorako):</string>
<string name="share_optional_permission_explanation">Zure telefonoa eta mahaigainaren artean fitxategiak partekatzeko telefonoaren biltegiratzea atzitzeko baimena eman behar duzu</string>
<string name="telepathy_permission_explanation">SMSak zure mahaigainetik bidali ahal izateko, SMSak erabiltzeko baimena eman behar duzu</string>
<string name="telephony_permission_explanation">Telefono deiak eta SMSak zure mahaigainetik ikusteko, telefono deiak eta SMSak erabiltzeko baimena eman behar duzu</string>
<string name="telephony_optional_permission_explanation">Telefono zenbakiaren ordez kontaktuaren izena ikusteko telefonoko kontaktuak atzitzeko baimena eman behar duzu</string>
<string name="contacts_permission_explanation">Zure kontaktuen liburuak mahaigainarekin partekatzeko, kontaktuetara baimena eman behar duzu</string>
<string name="select_ringtone">Hautatu dei-tonu bat</string>
<string name="telephony_pref_blocked_title">Blokeatutako zenbakiak</string>
<string name="telephony_pref_blocked_dialog_desc">Ez erakutsi zenbaki hauen deiak eta SMSak. Zehaztu zenbaki bat lerroko</string>
<string name="mpris_coverart_description">Uneko euskarriaren azaleko irudia</string>
<string name="device_icon_description">Gailuaren ikonoa</string>
<string name="settings_icon_description">Ezarpenen ikonoa</string>
<string name="presenter_fullscreen">Pantaila-betea</string>
<string name="presenter_exit">Irten aurkezpenetik</string>
<string name="add_command">Gehitu komando bat</string>
<string name="addcommand_explanation">Ez dago komandorik erregistraturik</string>
<string name="addcommand_explanation2">Komando berriak gehitu ditzakezu KDE Connect sistemaren ezarpenetan</string>
<string name="add_command_description">Komandoak gehitu ditzakezu mahaigainean</string>
<string name="pref_plugin_mprisreceiver">Euskarri-jotzailearen kontrola</string>
<string name="pref_plugin_mprisreceiver_desc">Kontrolatu zure telefonoen euskarri-jotzailea beste gailu batetik</string>
<string name="dark_theme">Gai iluna</string>
<string name="notification_channel_default">Beste jakinarazpen batzuk</string>
<string name="notification_channel_persistent">Adierazle iraunkorra</string>
<string name="notification_channel_media_control">Euskarrien kontrola</string>
<string name="notification_channel_filetransfer">Fitxategi transferentzia</string>
<string name="mpris_stop">Gelditu uneko jotzailea</string>
<string name="copy_url_to_clipboard">Kopiatu URLa arbelera</string>
<string name="clipboard_toast">Arbelera kopiatua</string>
<string name="runcommand_notreachable">Gailua ez dago eskuragarri</string>
<string name="runcommand_notpaired">Gailua ez dago parekatua</string>
<string name="runcommand_nosuchdevice">Ez dago halako gailurik</string>
<string name="runcommand_noruncommandplugin">Gailu honek ez dauka gaituta «Exekutatu Komandoa» plugina</string>
<string name="pref_plugin_findremotedevice">Aurkitu urruneko gailua</string>
<string name="pref_plugin_findremotedevice_desc">Jo zure urruneko gailuaren tonua</string>
<string name="ring">Tonua jo</string>
<string name="pref_plugin_systemvolume">Sistemaren bolumena</string>
<string name="pref_plugin_systemvolume_desc">Kontrolatu urruneko gailuaren sistemako bolumena</string>
<string name="mute">Isilarazi</string>
<string name="all">Guztiak</string>
<string name="devices">Gailuak</string>
<string name="settings_rename">Gailuaren izena</string>
<string name="settings_dark_mode">Gai iluna</string>
<string name="settings_more_settings_title">Ezarpen gehiago</string>
<string name="settings_more_settings_text">Gailu-bakoitzeko ezarpenak aurki daitezke \'Pluginen ezarpenak\' barruan.</string>
<string name="setting_persistent_notification">Erakutsi jakinarazpen iraunkorra</string>
<string name="extra_options">Aukera gehigarriak</string>
<string name="privacy_options">Pribatutasun aukerak</string>
<string name="set_privacy_options">Ezarri zure pribatutasun aukerak</string>
<string name="new_notification">Jakinarazpen berria</string>
<string name="block_contents">Oztopatu jakinarazpenen edukiak</string>
<string name="block_images">Oztopatu jakinarazpenen irudiak</string>
<string name="notification_channel_receivenotification">Beste gailu batzuen jakinarazpenak</string>
</resources>

View File

@@ -1,6 +1,10 @@
<?xml version='1.0' encoding='utf-8'?>
<resources>
<string name="kde_connect">KDE Connect</string>
<string name="foreground_notification_no_devices">Ei laiteyhteyksiä</string>
<string name="foreground_notification_devices">Yhdistetty laitteeseen: %s</string>
<string name="pref_plugin_telephony">Puhelinilmoitukset</string>
<string name="pref_plugin_telephony_desc">Lähetä ilmoitukset saapuvista puheluista</string>
<string name="pref_plugin_battery">Akkuraportti</string>
<string name="pref_plugin_battery_desc">Raportoi akun tila säännöllisesti</string>
<string name="pref_plugin_sftp">Tiedostojärjestelmän paljastaminen</string>
@@ -9,6 +13,7 @@
<string name="pref_plugin_clipboard_desc">Jaa leikepöydän sisältö</string>
<string name="pref_plugin_mousepad">Kauko-ohjaus</string>
<string name="pref_plugin_mousepad_desc">Käytä puhelinta tai tablettia hiirenä ja näppäimistönä</string>
<string name="pref_plugin_presenter_desc">Käytä laitettasi esitysdiojen vaihtamiseen</string>
<string name="pref_plugin_remotekeyboard">Vastaanota etänäppäinpainallukset</string>
<string name="pref_plugin_remotekeyboard_desc">Vastaanottaa etälaitteiden näppäinpainallustapahtumat</string>
<string name="pref_plugin_mpris">Multimedian ohjaus</string>
@@ -43,6 +48,7 @@
<string name="mousepad_double_tap_settings_title">Aseta kahden sormen napautuksen toiminto</string>
<string name="mousepad_triple_tap_settings_title">Aseta kolmen sormen napautuksen toiminto</string>
<string name="mousepad_sensitivity_settings_title">Aseta kosketuslevyn herkkyys</string>
<string name="mousepad_acceleration_profile_settings_title">Aseta osoittimen kiihdytys</string>
<string name="mousepad_scroll_direction_title">Käänteinen vierityssuunta</string>
<string-array name="mousepad_tap_entries">
<item>Oikea napsautus</item>
@@ -57,17 +63,16 @@
<item>Nopein</item>
</string-array>
<string-array name="mousepad_acceleration_profile_entries">
<item>No Acceleration</item>
<item>Weakest</item>
<item>Weaker</item>
<item>Medium</item>
<item>Stronger</item>
<item>Strongest</item>
<item>Ei kiihdytystä</item>
<item>Heikoin</item>
<item>Heikompi</item>
<item>Keskinkertainen</item>
<item>Vahvempi</item>
<item>Vahvin</item>
</string-array>
<string name="category_connected_devices">Yhdistetyt laitteet</string>
<string name="category_not_paired_devices">Saatavilla olevat laitteet</string>
<string name="category_remembered_devices">Muistetut laitteet</string>
<string name="plugins_failed_to_load">Seuraavien liitännäisten lataus epäonnistui (lisätietoa painamalla):</string>
<string name="device_menu_plugins">Liitännäisten asetukset</string>
<string name="device_menu_unpair">Poista laitepari</string>
<string name="device_not_reachable">Laitepari tavoittamattomissa</string>
@@ -89,17 +94,30 @@
<string name="pairing_request_from">Paripyyntö laitteesta %1s</string>
<string name="received_url_title">Vastaanotettiin linkki lähettäjältä %1s</string>
<string name="received_url_text">Avaa ”%1s” napauttamalla</string>
<string name="incoming_file_title">Saapuva tiedosto lähettäjältä %1s</string>
<string name="incoming_file_text">%1s</string>
<plurals name="incoming_file_title">
<item quantity="one">Vastaanotetaan %1$d tiedosto lähettäjältä %2$s</item>
<item quantity="other">Vastaanotetaan %1$d tiedostoa lähettäjältä %2$s</item>
</plurals>
<plurals name="incoming_files_text">
<item quantity="one">Tiedosto: %1s</item>
<item quantity="other">(Tiedosto %2$d / %3$d) : %1$s</item>
</plurals>
<string name="outgoing_file_title">Lähetetään tiedostoa laitteeseen %1s</string>
<string name="outgoing_files_title">Lähetetään tiedostoa laitteeseen %1s</string>
<plurals name="outgoing_files_text">
<item quantity="one">Lähetetty %1$d tiedosto</item>
<item quantity="other">Lähetetty %1$d/%2$d tiedostoa</item>
</plurals>
<string name="received_file_title">Vastaanotettiin tiedosto lähettäjältä %1s</string>
<string name="received_file_fail_title">Ei voitu vastaanottaa tiedostoa lähettäjältä %1s</string>
<plurals name="received_files_title">
<item quantity="one">Vastaanotettiin tiedosto lähettäjältä %1$s</item>
<item quantity="other">Vastaanotettiin %2$d tiedostoa lähettäjältä %1$s</item>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="one">Ei voitu vastaanottaa tiedostoa lähettäjältä %1$s</item>
<item quantity="other">Ei voitu vastaanottaa %2$d/%3$d tiedostoa lähettäjältä %1$s</item>
</plurals>
<string name="received_file_text">Avaa ”%1s” napauttamalla</string>
<string name="cannot_create_file">Ei voida luoda tiedostoa %s</string>
<string name="sent_file_title">Tiedosto lähetetty laitteeseen %1s</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">Tiedoston lähetys laitteelle %1s epäonnistui</string>
@@ -115,7 +133,7 @@
<string name="pairing_reject">Hylkää</string>
<string name="device">Laite</string>
<string name="pair_device">Kytke laite pariksi</string>
<string name="remote_control">Kauko-ohjain</string>
<string name="settings">Asetukset</string>
<string name="mpris_play">Toista</string>
<string name="mpris_pause">Tauko</string>
<string name="mpris_previous">Edellinen</string>
@@ -125,6 +143,7 @@
<string name="mpris_volume">Äänenvoimakkuus</string>
<string name="mpris_settings">Multimedia-asetukset</string>
<string name="mpris_time_settings_title">Kelauspainikkeet</string>
<string name="mpris_time_settings_summary">Säädä painettaessa tapahtuvan kelauksen kestoa</string>
<string-array name="mpris_time_entries">
<item>10 sekuntia</item>
<item>20 sekuntia</item>
@@ -133,6 +152,8 @@
<item>2 minuuttia</item>
</string-array>
<string name="mpris_notification_settings_title">Näytä mediasäädinilmoitukset</string>
<string name="mpris_notification_settings_summary">Sallii mediasoitintesi hallinnan KDE Connectia avaamatta</string>
<string name="share_to">Jaa…</string>
<string name="protocol_version_older">Laite käyttää vanha yhteyskäytäntöversiota</string>
<string name="protocol_version_newer">Laite käyttää uudempaa yhteyskäytäntöversiota</string>
<string name="general_settings">Yleisasetukset</string>
@@ -146,6 +167,7 @@
<string name="pair_device_action">Kytke uusi laite pariksi</string>
<string name="unpair_device_action">Poista laitepari %s</string>
<string name="custom_device_list">Lisää laitteita IP:llä</string>
<string name="delete_custom_device">Poistetaanko %s?</string>
<string name="share_notification_preference">Äänekkäät ilmoitukset</string>
<string name="share_notification_preference_summary">Värise ja soita ääni tiedoston saapuessa</string>
<string name="share_destination_customize">Vaihda kohdekansio</string>
@@ -157,15 +179,12 @@
<string name="title_activity_notification_filter">Ilmoitussuodatin</string>
<string name="filter_apps_info">Valittujen sovellusten ilmoitukset synkronoidaan.</string>
<string name="sftp_internal_storage">Sisäinen muisti</string>
<string name="sftp_all_files">Kaikki tiedostot</string>
<string name="sftp_sdcard_num">SD-kortti %d</string>
<string name="sftp_sdcard">SD-kortti</string>
<string name="sftp_readonly">(vain luku)</string>
<string name="sftp_camera">Kamerakuvat</string>
<string name="add_host">Lisää kone/IP</string>
<string name="add_host_hint">Konenimi tai IP-osoite</string>
<string name="no_players_connected">Soittimia ei löytynyt</string>
<string name="custom_dev_list_help">Käytä tätä vain, jos laitettasi ei tunnisteta automaattisesti. Kirjoita IP-osoite tai konenimi alle ja lisää se luetteloon koskettamalla painiketta. Voit poistaa olemassa olevan kohdan luettelosta koskettamalla sitä.</string>
<string name="mpris_player_on_device">%1$s laitteella %2$s</string>
<string name="send_files">Lähetä tiedostoja</string>
<string name="pairing_title">KDE Connect -laitteet</string>
@@ -192,7 +211,6 @@
<string name="permission_explanation">Liitännäinen tarvitsee toimiakseen lisäkäyttöoikeuksia</string>
<string name="optional_permission_explanation">Kaikkien toimintojen käyttämiseksi sinun on annettava lisäkäyttöoikeuksia</string>
<string name="plugins_need_optional_permission">Jotkin liitännäisten ominaisuudet eivät ole käytössä puuttuvien käyttöoikeuksien takia (lisätietoa napsauttamalla):</string>
<string name="sftp_permission_explanation">Sovellus tarvitsee puhelimen tallennustilan käyttöoikeudet voidakseen käyttää tietokoneesi tiedostoja</string>
<string name="share_optional_permission_explanation">Jakaaksesi tiedostoja puhelimen ja työpöydän välillä sinun on annettava käyttöoikeudet puhelimen tallennustilaan</string>
<string name="telepathy_permission_explanation">Lukeaksesi ja lähettääksesi tekstiviestejä työpöydältä sinun on annettava käyttöoikeudet tekstiviesteihin</string>
<string name="telephony_permission_explanation">Nähdäksesi soitot ja tekstiviestit työpöydältä sinun on annettava käyttöoikeudet puheluihin ja tekstiviesteihin</string>
@@ -204,6 +222,8 @@
<string name="mpris_coverart_description">Nykyisen median kansikuva</string>
<string name="device_icon_description">Laitekuvake</string>
<string name="settings_icon_description">Asetuskuvake</string>
<string name="presenter_fullscreen">Koko näyttö</string>
<string name="presenter_exit">Poistu esitystilasta</string>
<string name="add_command">Lisää komento</string>
<string name="addcommand_explanation">Komentoja ei ole rekisteröity</string>
<string name="addcommand_explanation2">Voit lisätä uusia komentoja KDE Connectin järjestelmäasetuksissa</string>
@@ -211,4 +231,35 @@
<string name="pref_plugin_mprisreceiver">Mediasoittimen hallinta</string>
<string name="pref_plugin_mprisreceiver_desc">Hallitse puhelimesi mediasoittimia toiselta laitteelta</string>
<string name="dark_theme">Tumma teema</string>
<string name="notification_channel_default">Muut ilmoitukset</string>
<string name="notification_channel_persistent">Pysyvä ilmaisin</string>
<string name="notification_channel_media_control">Mediaohjaimet</string>
<string name="notification_channel_filetransfer">Tiedostonsiirto</string>
<string name="mpris_stop">Pysäytä nykyinen soitin</string>
<string name="copy_url_to_clipboard">Kopioi verkko-osoite leikepöydälle</string>
<string name="clipboard_toast">Kopioitu leikepöydälle</string>
<string name="runcommand_notreachable">Laite tavoittamattomissa</string>
<string name="runcommand_notpaired">Laitetta ei ole kytketty pariksi</string>
<string name="runcommand_nosuchdevice">Tätä laitetta ei ole</string>
<string name="runcommand_noruncommandplugin">Laitteen Suorita komento -liitännäinen ei ole käytössä</string>
<string name="pref_plugin_findremotedevice">Etsi etälaite</string>
<string name="pref_plugin_findremotedevice_desc">Soita etälaitteeseen</string>
<string name="ring">Soita</string>
<string name="pref_plugin_systemvolume">Järjestelmän äänenvoimakkuus</string>
<string name="pref_plugin_systemvolume_desc">Säädä etälaitteen järjestelmän äänenvoimakkuutta</string>
<string name="mute">Vaimenna</string>
<string name="all">Kaikki</string>
<string name="devices">Laitteet</string>
<string name="settings_rename">Laitenimi</string>
<string name="settings_dark_mode">Tumma teema</string>
<string name="settings_more_settings_title">Lisää asetuksia</string>
<string name="settings_more_settings_text">Laitekohtaiset asetukset löytyvät laitteen ”Liitännäisasetuksista”.</string>
<string name="setting_persistent_notification">Näytä pysyvä ilmoitus</string>
<string name="extra_options">Lisäasetukset</string>
<string name="privacy_options">Yksityisyysasetukset</string>
<string name="set_privacy_options">Aseta yksityisyysasetukset</string>
<string name="new_notification">Uusi ilmoitus</string>
<string name="block_contents">Estä ilmoitusten sisältö</string>
<string name="block_images">Estä ilmoitusten kuvat</string>
<string name="notification_channel_receivenotification">Muiden laitteiden ilmoitukset</string>
</resources>

View File

@@ -1,5 +1,8 @@
<?xml version='1.0' encoding='utf-8'?>
<resources>
<string name="kde_connect">KDE Connect</string>
<string name="foreground_notification_no_devices">Aucun périphérique connecté</string>
<string name="foreground_notification_devices">Connecté à : %s</string>
<string name="pref_plugin_telephony">Notifications de téléphonie</string>
<string name="pref_plugin_telephony_desc">Envoie des notifications pour les appels entrants</string>
<string name="pref_plugin_battery">Rapport sur la batterie</string>
@@ -10,7 +13,6 @@
<string name="pref_plugin_clipboard_desc">Partage le contenu du presse-papiers</string>
<string name="pref_plugin_mousepad">Contrôle distant</string>
<string name="pref_plugin_mousepad_desc">Utilisez votre téléphone ou tablette comme un pavé tactile et un clavier</string>
<string name="pref_plugin_presenter">Télécommande de présentation</string>
<string name="pref_plugin_presenter_desc">Utilisez votre appareil pour changer les diapositives d\'une présentation</string>
<string name="pref_plugin_remotekeyboard">Recevoir les appuis de touches distants</string>
<string name="pref_plugin_remotekeyboard_desc">Recevoir les appuis de touches des périphériques distants</string>
@@ -71,7 +73,6 @@
<string name="category_connected_devices">Périphériques connectés</string>
<string name="category_not_paired_devices">Périphériques disponibles</string>
<string name="category_remembered_devices">Périphériques mémorisés</string>
<string name="plugins_failed_to_load">Le chargement des modules externes a échoué (cliquez pour plus d\'informations) :</string>
<string name="device_menu_plugins">Paramètres des modules externes</string>
<string name="device_menu_unpair">Dissocier</string>
<string name="device_not_reachable">Périphérique inaccessible</string>
@@ -93,17 +94,30 @@
<string name="pairing_request_from">Demande d\'association provenant de %1s</string>
<string name="received_url_title">Lien reçu de %1s</string>
<string name="received_url_text">Appuyez pour ouvrir %1s</string>
<string name="incoming_file_title">Réception d\'un fichier en cours depuis %1s</string>
<string name="incoming_file_text">%1s</string>
<plurals name="incoming_file_title">
<item quantity="one">%1$d fichier reçu de %2$s</item>
<item quantity="other">%1$d fichiers reçus de %2$s</item>
</plurals>
<plurals name="incoming_files_text">
<item quantity="one">Fichier : %1s</item>
<item quantity="other">(Fichier %2$d sur %3$d) : %1$s</item>
</plurals>
<string name="outgoing_file_title">Envoi d\'un fichier à %1s</string>
<string name="outgoing_files_title">Envoi de fichiers à %1s</string>
<plurals name="outgoing_files_text">
<item quantity="one">%1$d fichier envoyé</item>
<item quantity="other">%1$d fichiers envoyés sur %2$d</item>
</plurals>
<string name="received_file_title">Fichier reçu de %1s</string>
<string name="received_file_fail_title">Impossible de recevoir le fichier depuis : %1s</string>
<plurals name="received_files_title">
<item quantity="one">Fichier reçu de %1$s</item>
<item quantity="other">%2$d fichiers reçus de %1$s</item>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="one">Impossible de recevoir le fichier depuis %1$s</item>
<item quantity="other">Impossible de recevoir %2$d fichiers sur %3$d depuis %1$s</item>
</plurals>
<string name="received_file_text">Appuyez pour ouvrir %1s</string>
<string name="cannot_create_file">Impossible de créer le fichier %s</string>
<string name="sent_file_title">Fichier envoyé à %1s</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">Impossible d\'envoyer le fichier à %1s</string>
@@ -119,7 +133,7 @@
<string name="pairing_reject">Rejeter</string>
<string name="device">Périphérique</string>
<string name="pair_device">Associer un périphérique</string>
<string name="remote_control">Contrôle distant</string>
<string name="settings">Configuration</string>
<string name="mpris_play">Lire</string>
<string name="mpris_pause">Pause</string>
<string name="mpris_previous">Précédent</string>
@@ -138,7 +152,8 @@
<item>2 minutes</item>
</string-array>
<string name="mpris_notification_settings_title">Afficher la notification de contrôle du lecteur multimédia</string>
<string name="mpris_notification_settings_summary">Vous permet de contrôler vos lecteurs multimédias sans ouvrir KDE Connect.</string>
<string name="mpris_notification_settings_summary">Vous permet de contrôler vos lecteurs multimédia sans ouvrir KDE Connect.</string>
<string name="share_to">Partager vers…</string>
<string name="protocol_version_older">Le périphérique utilise une version ancienne du protocole</string>
<string name="protocol_version_newer">Le périphérique utilise une version plus récente du protocole</string>
<string name="general_settings">Paramètres généraux</string>
@@ -152,6 +167,7 @@
<string name="pair_device_action">Associer un nouveau périphérique</string>
<string name="unpair_device_action">Dissocier %s</string>
<string name="custom_device_list">Ajouter des périphériques par IP</string>
<string name="delete_custom_device">Supprimer %s ?</string>
<string name="share_notification_preference">Notifications sonores</string>
<string name="share_notification_preference_summary">Vibrer et jouer un son quand un fichier est reçu</string>
<string name="share_destination_customize">Personnaliser le dossier de destination</string>
@@ -163,7 +179,6 @@
<string name="title_activity_notification_filter">Filtre des notifications</string>
<string name="filter_apps_info">Les notifications seront synchronisées pour les applications sélectionnées.</string>
<string name="sftp_internal_storage">Stockage interne</string>
<string name="sftp_all_files">Tous les fichiers</string>
<string name="sftp_sdcard_num">Carte SD %d</string>
<string name="sftp_sdcard">Carte SD</string>
<string name="sftp_readonly">(lecture seule)</string>
@@ -171,7 +186,6 @@
<string name="add_host">Ajouter hôte/IP</string>
<string name="add_host_hint">"Nom d\'hôte ou adresse IP "</string>
<string name="no_players_connected">Aucun lecteur trouvé</string>
<string name="custom_dev_list_help">N\'utilisez cette option que si votre périphérique n\'est pas détecté automatiquement. Saisissez l\'adresse IP ou le nom d\'hôte ci-dessous et appuyez sur le bouton pour l\'ajouter à la liste. Appuyez sur un élément existant pour le retirer de la liste.</string>
<string name="mpris_player_on_device">%1$s sur %2$s</string>
<string name="send_files">Envoyer des fichiers</string>
<string name="pairing_title">Périphériques KDE Connect</string>
@@ -198,7 +212,6 @@
<string name="permission_explanation">Ce module externe nécessite des permissions pour fonctionner</string>
<string name="optional_permission_explanation">Vous devez accorder des permissions supplémentaires pour activer toutes les fonctionnalités</string>
<string name="plugins_need_optional_permission">Certaines fonctionnalités de modules externes sont désactivées faute de permissions suffisantes (tapez pour plus d\'informations) :</string>
<string name="sftp_permission_explanation">Pour accéder aux fichiers de votre ordinateur, l\'application requiert la permission d\'accéder à la mémoire de stockage de votre téléphone</string>
<string name="share_optional_permission_explanation">Pour partager des fichiers entre votre téléphone et votre ordinateur, veuillez permettre l\'accès à la mémoire de stockage du téléphone</string>
<string name="telepathy_permission_explanation">Pour lire et écrire des SMS depuis votre ordinateur, veuillez permettre l\'accès aux SMS</string>
<string name="telephony_permission_explanation">Pour voir les appels et les SMS depuis votre ordinateur, veuillez permettre l\'accès aux appels et aux SMS</string>
@@ -212,7 +225,6 @@
<string name="settings_icon_description">Icône des paramètres</string>
<string name="presenter_fullscreen">Plein écran</string>
<string name="presenter_exit">Quitter la présentation</string>
<string name="presenter_lock_tip">Vous pouvez verrouiller votre appareil pour utiliser les touches de volume comme boutons suivant / précédent</string>
<string name="add_command">Ajouter une commande</string>
<string name="addcommand_explanation">Aucune commande enregistrée</string>
<string name="addcommand_explanation2">Vous pouvez ajouter de nouvelles commandes dans la configuration système de KDE Connect</string>
@@ -220,6 +232,10 @@
<string name="pref_plugin_mprisreceiver">Contrôle du lecteur multimédia</string>
<string name="pref_plugin_mprisreceiver_desc">Contrôlez les lecteurs multimédia de vos téléphones depuis un autre appareil</string>
<string name="dark_theme">Thème sombre</string>
<string name="notification_channel_default">Autres notifications</string>
<string name="notification_channel_persistent">Indicateur persistant</string>
<string name="notification_channel_media_control">Contrôle multimédia</string>
<string name="notification_channel_filetransfer">Transfert de fichiers</string>
<string name="mpris_stop">Arrêter le lecteur actuel</string>
<string name="copy_url_to_clipboard">Copier l\'URL dans le presse-papiers</string>
<string name="clipboard_toast">Copié dans le presse-papier</string>
@@ -234,4 +250,19 @@
<string name="pref_plugin_systemvolume_desc">Contrôler le volume du système du périphérique distant</string>
<string name="mute">Muet</string>
<string name="all">Tous</string>
<string name="devices">Périphériques</string>
<string name="settings_rename">Nom du périphérique</string>
<string name="settings_dark_mode">Thème sombre</string>
<string name="settings_more_settings_title">Plus de paramètres</string>
<string name="settings_more_settings_text">Les paramètres par appareil sont disponibles dans la rubrique « Paramètres des modules externes » sur l\'appareil.</string>
<string name="setting_persistent_notification">Afficher une notification persistante</string>
<string name="setting_persistent_notification_oreo">Notification persistante</string>
<string name="setting_persistent_notification_description">Appuyez pour activer/désactiver dans la configuration des notifications</string>
<string name="extra_options">Options supplémentaires</string>
<string name="privacy_options">Options de confidentialité</string>
<string name="set_privacy_options">Configurez vos options de confidentialité</string>
<string name="new_notification">Nouvelle notification</string>
<string name="block_contents">Bloquer les contenus des notifications</string>
<string name="block_images">Bloquer les images des notifications</string>
<string name="notification_channel_receivenotification">Notifications provenant d\'autres périphériques</string>
</resources>

View File

@@ -13,7 +13,7 @@
<string name="pref_plugin_clipboard_desc">Comparta o contido do portapapeis.</string>
<string name="pref_plugin_mousepad">Entrada remota</string>
<string name="pref_plugin_mousepad_desc">Use o teléfono ou tableta como área táctil e teclado.</string>
<string name="pref_plugin_presenter">Mando de presentación</string>
<string name="pref_plugin_presenter">Mando da presentación</string>
<string name="pref_plugin_presenter_desc">Use o dispositivo para cambiar de dispositiva nunha presentación</string>
<string name="pref_plugin_remotekeyboard">Recibir teclas premidas remotamente.</string>
<string name="pref_plugin_remotekeyboard_desc">Recibir eventos de teclas premidas de dispositivos remotos.</string>
@@ -22,22 +22,23 @@
<string name="pref_plugin_runcommand">Executar unha orde</string>
<string name="pref_plugin_runcommand_desc">Provocar ordes remotas desde o teléfono ou tableta.</string>
<string name="pref_plugin_contacts">Sincronizador de contactos</string>
<string name="pref_plugin_contacts_desc">Permitir sincronizar o caderno de enderezos do dispositivo</string>
<string name="pref_plugin_contacts_desc">Permitir sincronizar o caderno de contactos do dispositivo</string>
<string name="pref_plugin_ping">Ping</string>
<string name="pref_plugin_ping_desc">Envíe e reciba pings.</string>
<string name="pref_plugin_ping_desc">Envíe e reciba pings</string>
<string name="pref_plugin_notifications">Sincronización de notificacións</string>
<string name="pref_plugin_notifications_desc">Acceda ás súas notificacións desde outros dispositivos.</string>
<string name="pref_plugin_notifications_desc">Acceda ás súas notificacións desde outros dispositivos</string>
<string name="pref_plugin_receive_notifications">Recibir notificacións</string>
<string name="pref_plugin_receive_notifications_desc">Recibir notificacións do outro dispositivo e mostralas en Android.</string>
<string name="pref_plugin_receive_notifications_desc">Recibir notificacións do outro dispositivo e mostralas en Android</string>
<string name="pref_plugin_sharereceiver">Compartir e recibir</string>
<string name="pref_plugin_sharereceiver_desc">Comparta ficheiros e enderezos URL entre dispositivos.</string>
<string name="plugin_not_available">Esta funcionalidade non está dispoñíbel para a súa versión de Android.</string>
<string name="pref_plugin_sharereceiver_desc">Comparta ficheiros e enderezos URL entre dispositivos</string>
<string name="plugin_not_available">Esta funcionalidade non está dispoñíbel para a súa versión de Android</string>
<string name="device_list_empty">Non hai dispositivos.</string>
<string name="ok">Aceptar</string>
<string name="cancel">Cancelar</string>
<string name="open_settings">Abrir a configuración</string>
<string name="no_permissions">Debe conceder permisos para acceder ás notificacións.</string>
<string name="no_permission_mprisreceiver">Para poder controlar os seus reprodutores de son e vídeo ten que garantir acceso ás notificacións.</string>
<string name="no_permissions">Debe conceder permisos para acceder ás notificacións</string>
<string name="no_permission_mprisreceiver">Para poder controlar os seus reprodutores de son e vídeo ten que garantir acceso ás notificacións</string>
<string name="no_permissions_remotekeyboard">Para recibir presións de tecla ten que activar o teclado remoto de KDE Connect</string>
<string name="send_ping">Enviar un ping</string>
<string name="open_mpris_controls">Control multimedia</string>
<string name="remotekeyboard_editing_only_title">Xestionar teclas remotas só ao editar.</string>
@@ -74,7 +75,6 @@
<string name="category_connected_devices">Dispositivos conectados</string>
<string name="category_not_paired_devices">Dispositivos dispoñíbeis</string>
<string name="category_remembered_devices">Dispositivos coñecidos</string>
<string name="plugins_failed_to_load">Non se puideron cargar os seguintes complementos (toque para obter máis información):</string>
<string name="device_menu_plugins">Configuración do complemento</string>
<string name="device_menu_unpair">Desemparellarse</string>
<string name="device_not_reachable">O dispositivo emparellado está fóra do alcance.</string>
@@ -96,17 +96,30 @@
<string name="pairing_request_from">Solicitude de emparellamento de %1s.</string>
<string name="received_url_title">Recibiuse unha ligazón de %1s</string>
<string name="received_url_text">Toque para abrir «%1s».</string>
<string name="incoming_file_title">Ficheiro entrande de %1s</string>
<string name="incoming_file_text">%1s</string>
<plurals name="incoming_file_title">
<item quantity="one">Recibindo %1$d ficheiro de %2$s</item>
<item quantity="other">Recibindo %1$d ficheiros de %2$s</item>
</plurals>
<plurals name="incoming_files_text">
<item quantity="one">Ficheiro: %1s</item>
<item quantity="other">(Ficheiro %2$d de %3$d) : %1$s</item>
</plurals>
<string name="outgoing_file_title">Enviando un ficheiro a %1s</string>
<string name="outgoing_files_title">Enviando os ficheiros a %1s</string>
<plurals name="outgoing_files_text">
<item quantity="one">Enviouse %1$d ficheiro.</item>
<item quantity="other">Enviáronse %1$d de %2$d ficheiros.</item>
</plurals>
<string name="received_file_title">Recibiuse un ficheiro de %1s</string>
<string name="received_file_fail_title">A recepción do ficheiro de %1s fallou</string>
<plurals name="received_files_title">
<item quantity="one">Recibiuse un ficheiro de %1$s</item>
<item quantity="other">Recibíronse %2$d ficheiros de %1$s</item>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="one">A recepción do ficheiro de %1$s fallou</item>
<item quantity="other">A recepción de %2$d de %3$d ficheiros de %1$s fallou</item>
</plurals>
<string name="received_file_text">Toque para abrir «%1s».</string>
<string name="cannot_create_file">Non se pode crear o ficheiro %s</string>
<string name="sent_file_title">Enviouse o ficheiro a %1s</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">Non se puido enviar o ficheiro a %1s</string>
@@ -122,7 +135,6 @@
<string name="pairing_reject">Rexeitar</string>
<string name="device">Dispositivo</string>
<string name="pair_device">Emparellar o dispositivo</string>
<string name="remote_control">Control remoto</string>
<string name="settings">Configuración</string>
<string name="mpris_play">Reproducir</string>
<string name="mpris_pause">Deter</string>
@@ -158,6 +170,10 @@
<string name="unpair_device_action">Desemparellarse de %s</string>
<string name="custom_device_list">Engadir dispositivos por IP</string>
<string name="delete_custom_device">Eliminar %s?</string>
<string name="custom_device_deleted">Eliminouse o dispositivo personalizado</string>
<string name="custom_device_list_help">Se o seu dispositivo non se detecta automaticamente pode engadir o seu enderezo IP ou nome de máquina premendo o botón flotante de acción</string>
<string name="custom_device_fab_hint">Engadir un dispositivo</string>
<string name="undo">Desfacer</string>
<string name="share_notification_preference">Notificacións sonoras</string>
<string name="share_notification_preference_summary">Vibrar e reproducir un son ao recibir un ficheiro.</string>
<string name="share_destination_customize">Personalizar o directorio de destino</string>
@@ -169,15 +185,33 @@
<string name="title_activity_notification_filter">Filtro de notificacións</string>
<string name="filter_apps_info">As notificacións sincronizaranse para os seguintes aplicativos.</string>
<string name="sftp_internal_storage">Almacenamento interno</string>
<string name="sftp_all_files">Todos os ficheiros</string>
<string name="sftp_sdcard_num">Tarxeta SD %d</string>
<string name="sftp_sdcard">Tarxeta SD</string>
<string name="sftp_readonly">(só lectura)</string>
<string name="sftp_camera">Imaxes da cámara</string>
<string name="add_device_dialog_title">Engadir o dispositivo</string>
<string name="add_device_hint">Nome de máquina ou enderezo IP</string>
<string name="sftp_preference_detected_sdcards">Tarxetas SD detectadas</string>
<string name="sftp_preference_edit_sdcard_title">Editar a tarxeta SD</string>
<string name="sftp_preference_configured_storage_locations">Lugares de almacenamento configurados</string>
<string name="sftp_preference_add_storage_location_title">Engadir un lugar de almacenamento</string>
<string name="sftp_preference_edit_storage_location">Editar un lugar de almacenamento</string>
<string name="sftp_preference_add_camera_shortcut">Engadir un atallo ao cartafol de cámara</string>
<string name="sftp_preference_add_camera_shortcut_summary_on">Engadir un atallo ao cartafol da cámara</string>
<string name="sftp_preference_add_camera_shortcut_summary_off">Non engadir un atallo ao cartafol da cámara</string>
<string name="sftp_storage_preference_storage_location">Lugar de almacenamento</string>
<string name="sftp_storage_preference_storage_location_already_configured">Este lugar xa está configurado</string>
<string name="sftp_storage_preference_click_to_select">premer para seleccionar</string>
<string name="sftp_storage_preference_display_name">Nome para mostrar</string>
<string name="sftp_storage_preference_display_name_already_used">Este nome para mostrar xa está a usarse</string>
<string name="sftp_storage_preference_display_name_cannot_be_empty">O nome para mostrar non pode estar baleiro</string>
<string name="sftp_action_mode_menu_delete">Eliminar</string>
<string name="sftp_no_sdcard_detected">Non se detectaron tarxetas SD</string>
<string name="sftp_no_storage_locations_configured">Non se configuraron localizacións de almacenamento</string>
<string name="sftp_saf_permission_explanation">Para acceder a ficheiro remotamente ten que configurar lugares de almacenamento</string>
<string name="add_host">Engadir unha nome ou IP</string>
<string name="add_host_hint">Nome ou IP do servidor.</string>
<string name="add_host_hint">Nome de máquina ou IP</string>
<string name="no_players_connected">Non se atoparon reprodutores.</string>
<string name="custom_dev_list_help">Marque esta opción só se o seu dispositivo non se detecta automaticamente. Insira o enderezo IP ou o nome de servidor do dispositivo e toque o botón para engadilo á lista. Toque un elemento existente para retiralo da lista.</string>
<string name="mpris_player_on_device">%1$s en %2$s</string>
<string name="send_files">Enviar ficheiros</string>
<string name="pairing_title">Dispositivos con KDE Connect</string>
@@ -190,7 +224,7 @@
<string name="on_data_message">Parece que está usando unha conexión de datos de móbil. KDE Connect só funciona en redes locais.</string>
<string name="no_file_browser">Non hai navegadores de ficheiros instalados.</string>
<string name="pref_plugin_telepathy">Enviar unha mensaxe de texto</string>
<string name="pref_plugin_telepathy_desc">Enviar mensaxes de texto desde un computador de escritorio.</string>
<string name="pref_plugin_telepathy_desc">Enviar mensaxes de texto desde o seu escritorio</string>
<string name="plugin_not_supported">O dispositivo non é compatíbel con este complemento.</string>
<string name="findmyphone_title">Atopar o móbil</string>
<string name="findmyphone_title_tablet">Atopar a tableta</string>
@@ -204,12 +238,11 @@
<string name="permission_explanation">Este complemento necesita permisos para funcionar.</string>
<string name="optional_permission_explanation">Ten que conceder permisos adicionais para activar todas as funcións.</string>
<string name="plugins_need_optional_permission">Algúns complementos teñen funcionalidades desactivadas por mor dunha falta de permisos (toque para máis información):</string>
<string name="sftp_permission_explanation">Para acceder aos seus ficheiros desde o computador o aplicativo necesita permiso para acceder ao almacenamento do teléfono.</string>
<string name="share_optional_permission_explanation">Para compartir ficheiros entre o teléfono e o escritorio ten que dar acceso ao almacenamento do teléfono.</string>
<string name="telepathy_permission_explanation">Para ler e escribir SMS desde o escritorio ten que dar permiso de SMS.</string>
<string name="telephony_permission_explanation">Para ver as chamadas de teléfono e os SMS desde o escritorio ten que dar permiso a chamadas de teléfono e a SMS.</string>
<string name="telephony_optional_permission_explanation">Para ver o nome dun contacto en vez dun número de teléfono ten que dar acceso aos contactos do teléfono.</string>
<string name="contacts_permission_explanation">Para compartir o caderno de enderezos co escritorio ten que dar permiso de contactos</string>
<string name="contacts_permission_explanation">Para compartir o caderno de contactos co escritorio ten que dar permiso de contactos</string>
<string name="select_ringtone">Seleccione un son de chamada</string>
<string name="telephony_pref_blocked_title">Números bloqueados</string>
<string name="telephony_pref_blocked_dialog_desc">Non mostrar chamadas nin SMS destes números. Indique un número por liña.</string>
@@ -218,7 +251,7 @@
<string name="settings_icon_description">Icona da configuración.</string>
<string name="presenter_fullscreen">Pantalla completa</string>
<string name="presenter_exit">Saír da presentación</string>
<string name="presenter_lock_tip">Pode bloquear o dispositivo para usar as teclas de volume como botóns de anterior e seguinte</string>
<string name="presenter_lock_tip">Pode bloquear o dispositivo e usar as teclas de volume para ir aos fotogramas anterior e seguinte</string>
<string name="add_command">Engadir unha orde</string>
<string name="addcommand_explanation">Non hai ordes rexistradas.</string>
<string name="addcommand_explanation2">Pode engadir novas ordes desde a configuración do sistema de KDE Connect.</string>
@@ -250,6 +283,15 @@
<string name="settings_more_settings_title">Máis opcións</string>
<string name="settings_more_settings_text">Pode atopar as opcións específicas dun dispositivo baixo «Configuración do complemento» desde un dispositivo.</string>
<string name="setting_persistent_notification">Mostrar unha notificación persistente</string>
<string name="setting_persistent_notification_oreo_description">Requirido por Android desde Android 8.0</string>
<string name="setting_persistent_notification_pie_description">Desde Android 9.0, esta notificación só pode minimizarse tocándoa un anaco</string>
<string name="setting_persistent_notification_oreo">Notificación persistente</string>
<string name="setting_persistent_notification_description">Toque para activar ou desactivar na configuración de notificacións</string>
<string name="extra_options">Opcións adicionais</string>
<string name="privacy_options">Opcións de intimidade</string>
<string name="set_privacy_options">Definir as súas opcións de protección da intimidade</string>
<string name="new_notification">Nova notificación</string>
<string name="block_contents">Bloquear o contido das notificacións</string>
<string name="block_images">Bloquear as imaxes nas notificacións</string>
<string name="notification_channel_receivenotification">Notificacións desde outros dispositivos</string>
<string name="take_picture">Iniciar a cámara</string>
<string name="plugin_photo_desc">Iniciar o aplicativo da cámara para facilitar sacar e transferir imaxes</string>
</resources>

View File

@@ -63,7 +63,6 @@
<string name="category_connected_devices">התקנים מחוברים</string>
<string name="category_not_paired_devices">התקנים זמינים</string>
<string name="category_remembered_devices">התקנים זכורים</string>
<string name="plugins_failed_to_load">טעינת התוסף נכשלה (לחץ לעוד מידע):</string>
<string name="device_menu_plugins">הגדרות תוספים</string>
<string name="device_menu_unpair">בטל התאמה</string>
<string name="device_not_reachable">ההתקן המותאם לא זמין</string>
@@ -85,12 +84,8 @@
<string name="pairing_request_from">בוקשה התאמה מ־%1s</string>
<string name="received_url_title">התקבל קישור מ־%1s</string>
<string name="received_url_text">לחץ כדי לפתוח את \"%1s\"</string>
<string name="incoming_file_title">התקבל קובץ מאת %1s</string>
<string name="incoming_file_text">%1s</string>
<string name="outgoing_file_title">שולח קובץ אל %1s</string>
<string name="outgoing_files_title">שולח קובצים אל %1s</string>
<string name="received_file_title">התקבל קובץ מאת %1s</string>
<string name="received_file_fail_title">נכשל בקבלת קובץ מאת %1s</string>
<string name="received_file_text">לחץ כדי לפתוח את \"%1s\"</string>
<string name="sent_file_title">הקובץ נשלח אל %1s</string>
<string name="sent_file_text">%1s</string>
@@ -107,7 +102,6 @@
<string name="pairing_reject">דחה</string>
<string name="device">התקן</string>
<string name="pair_device">התאם התקן</string>
<string name="remote_control">שלוט מרחוק</string>
<string name="mpris_play">נגן</string>
<string name="mpris_previous">הקודם</string>
<string name="mpris_rew">דילוג אחורה</string>
@@ -145,15 +139,12 @@
<string name="title_activity_notification_filter">סנן התראות</string>
<string name="filter_apps_info">התראות יסונכרנו רק לאפליקציות נבחרות</string>
<string name="sftp_internal_storage">זיכרון פנימי</string>
<string name="sftp_all_files">כל הקבצים</string>
<string name="sftp_sdcard_num">כרטיס זיכרון %d</string>
<string name="sftp_sdcard">כרטיס זיכרון</string>
<string name="sftp_readonly">(לקריאה בלבד)</string>
<string name="sftp_camera">תמונות מצלמה</string>
<string name="add_host">הוסף כתובת או IP</string>
<string name="add_host_hint">כתובת או IP</string>
<string name="no_players_connected">לא נמצא נגן</string>
<string name="custom_dev_list_help">השתמש באפשרות זו רק אם המכשיר שלך לא מזוהה באופן אוטומטי. הקלד את כתובת הIP או את כינוי ההתקן למטה ולחץ על הכפתור כדי להוסיף לרשימה. לחץ על פריט קיים כדי להסיר אותו מהרשימה.</string>
<string name="mpris_player_on_device">%1$s אצל %2$s</string>
<string name="send_files">שלח קובץ</string>
<string name="pairing_title">מכשירי KDE Connect</string>

View File

@@ -39,7 +39,6 @@
</string-array>
<string name="category_connected_devices">Csatlakoztatott eszközök</string>
<string name="category_remembered_devices">Megjegyzett eszközök</string>
<string name="plugins_failed_to_load">A bővítményeket nem sikerült betölteni (érintse meg a további információkért):</string>
<string name="device_menu_unpair">Leválasztás</string>
<string name="device_not_reachable">A párosított eszköz nem érhető el</string>
<string name="unknown_device">Ismeretlen eszköz</string>
@@ -55,9 +54,6 @@
<string name="pairing_request_from">Párosítási kérés innen: %1s</string>
<string name="received_url_title">Hivatkozás érkezett innen: %1s</string>
<string name="received_url_text">Koppintson „%1s” megnyitásához</string>
<string name="incoming_file_title">Bejövő fájl innen: %1s</string>
<string name="incoming_file_text">%1s</string>
<string name="received_file_title">Fájl érkezett innen: %1s</string>
<string name="received_file_text">Koppintson „%1s” megnyitásához</string>
<string name="tap_to_answer">Érintse meg a válaszhoz</string>
<string name="reconnect">Újracsatlakozás</string>
@@ -69,7 +65,6 @@
<string name="pairing_reject">Elutasítás</string>
<string name="device">Eszköz</string>
<string name="pair_device">Eszköz párosítása</string>
<string name="remote_control">Távirányító</string>
<string name="mpris_play">Lejátszás</string>
<string name="mpris_previous">Előző</string>
<string name="mpris_rew">Visszatekerés</string>

View File

@@ -1,6 +1,10 @@
<?xml version='1.0' encoding='utf-8'?>
<resources>
<string name="pref_plugin_telephony">Notifikasi telepon</string>
<string name="kde_connect">KDE Connect</string>
<string name="foreground_notification_no_devices">Belum terkoneksi ke perangkat apa pun</string>
<string name="foreground_notification_devices">Terkoneksi ke: %s</string>
<string name="pref_plugin_telephony">Penotifikasi telepon</string>
<string name="pref_plugin_telephony_desc">Kirim notifikasi untuk panggilan yang masuk</string>
<string name="pref_plugin_battery">Laporan baterai</string>
<string name="pref_plugin_battery_desc">Status baterai laporkan secara berkala</string>
<string name="pref_plugin_sftp">Menyingkap sistem file</string>
@@ -9,6 +13,7 @@
<string name="pref_plugin_clipboard_desc">Berbagi isi clipboard</string>
<string name="pref_plugin_mousepad">Input jarak jauh</string>
<string name="pref_plugin_mousepad_desc">Gunakan telepon atau tabletmu sebagai touchpad dan keyboard</string>
<string name="pref_plugin_presenter_desc">Gunakan perangkatmu untuk mengubah slide dalam sebuah presentasi</string>
<string name="pref_plugin_remotekeyboard">Terima penekanan tuts jarak jauh</string>
<string name="pref_plugin_remotekeyboard_desc">Terima peristiwa tekan-tuts dari perangkat jarak jauh</string>
<string name="pref_plugin_mpris">Kendalikan multimedia</string>
@@ -26,7 +31,7 @@
<string name="pref_plugin_sharereceiver">Kirim dan terima</string>
<string name="pref_plugin_sharereceiver_desc">Berbagi file-file dan URL-URL antara perangkat</string>
<string name="plugin_not_available">Fitur ini tidak tersedia dalam versi Android-mu</string>
<string name="device_list_empty">Tiada perangkat</string>
<string name="device_list_empty">Tidak ada perangkat</string>
<string name="ok">Oke</string>
<string name="cancel">Batal</string>
<string name="open_settings">Buka setelan</string>
@@ -47,7 +52,7 @@
<string-array name="mousepad_tap_entries">
<item>Klik kanan</item>
<item>Klik tengah</item>
<item>Tiada apa-apa</item>
<item>Tidak ada apa-apa</item>
</string-array>
<string-array name="mousepad_sensitivity_entries">
<item>Pelan</item>
@@ -57,17 +62,16 @@
<item>Cepat</item>
</string-array>
<string-array name="mousepad_acceleration_profile_entries">
<item>No Acceleration</item>
<item>Weakest</item>
<item>Weaker</item>
<item>Medium</item>
<item>Stronger</item>
<item>Strongest</item>
<item>Tidak ada Akselerasi</item>
<item>Sangat Lemah</item>
<item>Lemah</item>
<item>Menengah</item>
<item>Kuat</item>
<item>Sangat Kuat</item>
</string-array>
<string name="category_connected_devices">Perangkat tersambung</string>
<string name="category_connected_devices">Perangkat terkoneksi</string>
<string name="category_not_paired_devices">Perangkat tersedia</string>
<string name="category_remembered_devices">Perangkat teringat</string>
<string name="plugins_failed_to_load">Plugin gagal memuat (ketuk untuk info selebihnya):</string>
<string name="device_menu_plugins">Setelan plugin</string>
<string name="device_menu_unpair">Leraikan</string>
<string name="device_not_reachable">Menyandingkan perangkat tidak dapat dicapai</string>
@@ -89,16 +93,25 @@
<string name="pairing_request_from">Minta penyandingan dari %1s</string>
<string name="received_url_title">Tautan diterima dari %1s</string>
<string name="received_url_text">Ketuk untuk membuka \'%1s\'</string>
<string name="incoming_file_title">File masuk dari %1s</string>
<string name="incoming_file_text">%1s</string>
<plurals name="incoming_file_title">
<item quantity="other">Menerima %1$d file dari %2$s</item>
</plurals>
<plurals name="incoming_files_text">
<item quantity="other">File: %1s</item>
</plurals>
<string name="outgoing_file_title">Mengirim file ke %1s</string>
<string name="outgoing_files_title">Mengirim file ke %1s</string>
<plurals name="outgoing_files_text">
<item quantity="other">Kirim %1$d dari dalam file %2$d</item>
<item quantity="other">Kirimkan file %1$d</item>
</plurals>
<plurals name="received_files_title">
<item quantity="other">File yang diterima dari %1$s</item>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="other">Gagal menerima file dari %1$s</item>
</plurals>
<string name="received_file_title">Diterima file dari %1s</string>
<string name="received_file_fail_title">Penerimaan file gagal dari %1s</string>
<string name="received_file_text">Ketuk untuk membuka \'%1s\'</string>
<string name="cannot_create_file">Gak bisa menciptakan file %s</string>
<string name="sent_file_title">Kirim file ke %1s</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">Gagal mengirim file ke %1s</string>
@@ -114,7 +127,7 @@
<string name="pairing_reject">Apkir</string>
<string name="device">Perangkat</string>
<string name="pair_device">Sandingkan perangkat</string>
<string name="remote_control">Kendali Jarak Jauh</string>
<string name="settings">Setelan</string>
<string name="mpris_play">Mainkan</string>
<string name="mpris_pause">Jeda</string>
<string name="mpris_previous">Sebelumnya</string>
@@ -124,6 +137,7 @@
<string name="mpris_volume">Volume</string>
<string name="mpris_settings">Setelan Multimedia</string>
<string name="mpris_time_settings_title">Tombol mundur-cepat/maju-cepat</string>
<string name="mpris_time_settings_summary">Setel waktu untuk mempercepat mundur/maju ketika ditekan</string>
<string-array name="mpris_time_entries">
<item>10 detik</item>
<item>20 detik</item>
@@ -132,6 +146,8 @@
<item>2 menit</item>
</string-array>
<string name="mpris_notification_settings_title">Tampilkan notifikasi kendali media</string>
<string name="mpris_notification_settings_summary">Memungkinkan pengendalian player media-mu tanpa membuka KDE Connect</string>
<string name="share_to">Berbagi Ke...</string>
<string name="protocol_version_older">Perangkat ini menggunakan sebuah versi protokol lawas</string>
<string name="protocol_version_newer">Perangkat ini menggunakan sebuah versi protokol baru</string>
<string name="general_settings">Setelan Umum</string>
@@ -156,15 +172,12 @@
<string name="title_activity_notification_filter">Filter notifikasi</string>
<string name="filter_apps_info">Notifikasi akan disinkronkan terhadap apl terpilih.</string>
<string name="sftp_internal_storage">Penyimpanan internal</string>
<string name="sftp_all_files">Semua file</string>
<string name="sftp_sdcard_num">Kartu SD %d</string>
<string name="sftp_sdcard">Kartu SD</string>
<string name="sftp_readonly">(hanya baca)</string>
<string name="sftp_camera">Gambar kamera</string>
<string name="add_host">Tambahkan host/IP</string>
<string name="add_host_hint">Hostname atau IP</string>
<string name="no_players_connected">Tiada player yang ditemukan</string>
<string name="custom_dev_list_help">Gunakan opsi ini hanya jika perangkatmu tidaklah secara otomatis terdeteksi. Masukkan alamat IP atau hostname di bawah ini dan sentuh tombol untuk menambahkannya ke daftar. Sentuh item yang ada untuk membuangnya dari daftar.</string>
<string name="no_players_connected">Tidak ada player yang ditemukan</string>
<string name="mpris_player_on_device">%1$s pada %2$s</string>
<string name="send_files">Kirim file</string>
<string name="pairing_title">Perangkat KDE Connect</string>
@@ -173,9 +186,9 @@
<string name="device_rename_title">Ubah nama perangkat</string>
<string name="device_rename_confirm">Ubah Nama</string>
<string name="refresh">Segarkan</string>
<string name="unreachable_description">Perangkat yang disandingkan ini tidak dapat dicapai. Pastikan ia tersambung ke jaringanmu yang sama.</string>
<string name="unreachable_description">Perangkat yang disandingkan ini tidak dapat dicapai. Pastikan ia terkoneksi ke jaringanmu yang sama.</string>
<string name="on_data_message">Nampaknya kamu berada pada koneksi data seluler. KDE Connect hanya bekerja pada jaringan lokal.</string>
<string name="no_file_browser">Tidak adanya file penelusur yang terpasang.</string>
<string name="no_file_browser">Tidak adanya penelusur file yang terinstal.</string>
<string name="pref_plugin_telepathy">Kirim SMS</string>
<string name="pref_plugin_telepathy_desc">Kirim teks perpesanan dari desktopmu</string>
<string name="plugin_not_supported">Plugin ini tidaklah didukung oleh perangkat</string>
@@ -191,7 +204,6 @@
<string name="permission_explanation">Plugin ini perlu perizinan untuk kerja</string>
<string name="optional_permission_explanation">Kamu perlu mengabulkan perizinan extra untuk memfungsikan semua fungsian</string>
<string name="plugins_need_optional_permission">Beberapa plugin yang memiliki fitur dinonfungsikan karena kurangnya perizinan (ketuk untuk info selebihnya):</string>
<string name="sftp_permission_explanation">Untuk mengakses filemu dari PC-mu si apl perlu perizinan untuk mengakses penyimpanan teleponmu</string>
<string name="share_optional_permission_explanation">Untuk membagikan file antara teleponmu dan desktopmu kamu harus memberikan akses ke penyimpanan teleponmu</string>
<string name="telepathy_permission_explanation">Untuk membaca dan menulis SMS dari desktopmu kamu harus memberikan perizinan untuk SMS</string>
<string name="telephony_permission_explanation">Untuk melihat paggian telepon dan SMS dari desktopmu kamu harus memberikan perizinan untuk panggilan telepon dan SMS</string>
@@ -205,7 +217,7 @@
<string name="settings_icon_description">Ikon setelan</string>
<string name="add_command">Tambahkan sebuah perintah</string>
<string name="addcommand_explanation">Tidak ada perintah yang diregister</string>
<string name="addcommand_explanation2">"Kamu bisa menambahkan perintah baru dalam Setelan Sistem KDE Connect "</string>
<string name="addcommand_explanation2">"Kamu bisa menambahkan perintah baru dalam System Settings KDE Connect "</string>
<string name="add_command_description">Kamu bisa menambahkan perintah pada desktop</string>
<string name="pref_plugin_mprisreceiver">Kendali Player Media</string>
<string name="pref_plugin_mprisreceiver_desc">Kendalikan player media teleponmu dari perangkat lainnya</string>

View File

@@ -74,7 +74,6 @@
<string name="category_connected_devices">Dispositivi connessi</string>
<string name="category_not_paired_devices">Dispositivi disponibili</string>
<string name="category_remembered_devices">Dispositivi memorizzati</string>
<string name="plugins_failed_to_load">Impossibile caricare alcune estensioni (tocca per maggiori informazioni):</string>
<string name="device_menu_plugins">Impostazioni estensioni</string>
<string name="device_menu_unpair">Disassocia</string>
<string name="device_not_reachable">Dispositivo associato non raggiungibile</string>
@@ -96,17 +95,30 @@
<string name="pairing_request_from">Richiesta associazione da %1s</string>
<string name="received_url_title">Collegamento ricevuto da %1s</string>
<string name="received_url_text">Tocca per aprire «%1s»</string>
<string name="incoming_file_title">File in ingresso da %1s</string>
<string name="incoming_file_text">%1s</string>
<plurals name="incoming_file_title">
<item quantity="one">Ricezione di %1$d file da %2$s</item>
<item quantity="other">Ricezione di %1$d file da %2$s</item>
</plurals>
<plurals name="incoming_files_text">
<item quantity="one">File: %1s</item>
<item quantity="other">(File %2$d di %3$d) : %1$s</item>
</plurals>
<string name="outgoing_file_title">Invio file a %1s</string>
<string name="outgoing_files_title">Invio file a %1s</string>
<plurals name="outgoing_files_text">
<item quantity="one">Inviato %1$d file</item>
<item quantity="other">Inviati %1$d di %2$d file</item>
</plurals>
<string name="received_file_title">File ricevuto da %1s</string>
<string name="received_file_fail_title">Ricezione file da %1s non riuscita</string>
<plurals name="received_files_title">
<item quantity="one">File ricevuto da %1$s</item>
<item quantity="other">Ricevuti %2$d file da %1$s</item>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="one">Ricezione file da di %1$s non riuscita</item>
<item quantity="other">Ricezione di %2$d di %3$d file da %1$s non riuscita</item>
</plurals>
<string name="received_file_text">Tocca per aprire «%1s»</string>
<string name="cannot_create_file">Impossibile creare il file %s</string>
<string name="sent_file_title">File inviato a %1s</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">Invio del file a %1s non riuscito</string>
@@ -122,7 +134,6 @@
<string name="pairing_reject">Rifiuta</string>
<string name="device">Dispositivo</string>
<string name="pair_device">Associa dispositivo</string>
<string name="remote_control">Telecomando</string>
<string name="settings">Impostazioni</string>
<string name="mpris_play">Riproduci</string>
<string name="mpris_pause">Pausa</string>
@@ -153,11 +164,15 @@
<string name="device_name_preference_summary">%s</string>
<string name="invalid_device_name">Nome dispositivo non valido</string>
<string name="shareplugin_text_saved">Testo ricevuto, salvato negli appunti</string>
<string name="custom_devices_settings">Elenco dispositivi personalizzato</string>
<string name="custom_devices_settings">Elenco dispositivi personalizzati</string>
<string name="pair_device_action">Associa un nuovo dispositivo</string>
<string name="unpair_device_action">Disassocia %s</string>
<string name="custom_device_list">Aggiungi dispositivi per IP</string>
<string name="delete_custom_device">Vuoi eliminare %s?</string>
<string name="custom_device_deleted">Dispositivo personalizzato eliminato</string>
<string name="custom_device_list_help">Se il tuo dispositivo non è rilevato automaticamente, puoi aggiungere il suo indirizzo IP o il nome host facendo clic sul pulsante Azione</string>
<string name="custom_device_fab_hint">Aggiungi un dispositivo</string>
<string name="undo">Annulla</string>
<string name="share_notification_preference">Notifiche rumorose</string>
<string name="share_notification_preference_summary">Vibra e riproduci un suono alla ricezione di un file</string>
<string name="share_destination_customize">Personalizza la cartella di destinazione</string>
@@ -169,15 +184,14 @@
<string name="title_activity_notification_filter">Filtro delle notifiche</string>
<string name="filter_apps_info">Le notifiche saranno sincronizzate per le applicazioni selezionate.</string>
<string name="sftp_internal_storage">Archiviazione interna</string>
<string name="sftp_all_files">Tutti i file</string>
<string name="sftp_sdcard_num">Scheda SD %d</string>
<string name="sftp_sdcard">Scheda SD</string>
<string name="sftp_readonly">(sola lettura)</string>
<string name="sftp_camera">Immagini fotocamera</string>
<string name="add_device_dialog_title">Aggiungi dispositivo</string>
<string name="add_device_hint">Nome host o indirizzo IP</string>
<string name="add_host">Aggiungi host/IP</string>
<string name="add_host_hint">Nome host o IP</string>
<string name="no_players_connected">Nessun lettore trovato</string>
<string name="custom_dev_list_help">Usa questa opzione solo se il tuo dispositivo non è rilevato automaticamente. Digita l\'indirizzo IP o il nome host in basso e tocca il pulsante per aggiungerlo all\'elenco. Tocca un elemento esistente per rimuoverlo dall\'elenco.</string>
<string name="mpris_player_on_device">%1$s su %2$s</string>
<string name="send_files">Invia file</string>
<string name="pairing_title">Dispositivi KDE Connect</string>
@@ -204,7 +218,6 @@
<string name="permission_explanation">Questa estensione ha bisogno di permessi per funzionare</string>
<string name="optional_permission_explanation">Devi concedere permessi aggiuntivi per abilitare tutte le funzioni</string>
<string name="plugins_need_optional_permission">Alcune estensioni hanno funzioni disabilitate per una mancanza di permessi (tocca per maggiori informazioni):</string>
<string name="sftp_permission_explanation">Per accedere ai tuoi file dal tuo PC, l\'applicazione ha bisogno dell\'autorizzazione di accesso alla memoria del telefono</string>
<string name="share_optional_permission_explanation">Per condividere i file tra il telefono e il tuo desktop devi dare accesso alla memoria del telefono</string>
<string name="telepathy_permission_explanation">Per leggere e scrivere SMS dal tuo desktop, devi concedere l\'autorizzazione per SMS</string>
<string name="telephony_permission_explanation">Per vedere le chiamate telefoniche e gli SMS dal desktop devi dare l\'autorizzazione per telefonate e SMS</string>
@@ -218,7 +231,7 @@
<string name="settings_icon_description">Icona impostazioni</string>
<string name="presenter_fullscreen">Schermo intero</string>
<string name="presenter_exit">Esci dalla presentazione</string>
<string name="presenter_lock_tip">Puoi bloccare il tuo dispositivo per utilizzare i tasti del volume come pulsanti di indietro/avanti</string>
<string name="presenter_lock_tip">Puoi bloccare il tuo dispositivo e utilizzare i tasti del volume per scorrere le diapositive</string>
<string name="add_command">Aggiungi un comando</string>
<string name="addcommand_explanation">Non ci sono comandi registrati</string>
<string name="addcommand_explanation2">Puoi aggiungere nuovi comandi nelle impostazioni di sistema di KDE Connect</string>
@@ -250,6 +263,13 @@
<string name="settings_more_settings_title">Altre impostazioni</string>
<string name="settings_more_settings_text">Le impostazioni per dispositivo sono disponibili sotto «Impostazione estensioni» dall\'interno del dispositivo.</string>
<string name="setting_persistent_notification">Mostra notifica persistente</string>
<string name="setting_persistent_notification_oreo_description">Richiesto da Android a partire da Android 8.0</string>
<string name="setting_persistent_notification_pie_description">Da Android 9.0, questa notifica potrà essere minimizzata solo con un tocco lungo</string>
<string name="setting_persistent_notification_oreo">Notifica persistente</string>
<string name="setting_persistent_notification_description">Tocca per abilitare/disabilitare nelle impostazioni delle notifiche</string>
<string name="extra_options">Opzioni aggiuntive</string>
<string name="privacy_options">Opzioni di riservatezza</string>
<string name="set_privacy_options">Imposta le tue opzioni di riservatezza</string>
<string name="new_notification">Nuova notifica</string>
<string name="block_contents">Blocca i contenuti delle notifiche</string>
<string name="block_images">Blocca le immagini nelle notifiche</string>
<string name="notification_channel_receivenotification">Notifiche da altri dispositivi</string>
</resources>

View File

@@ -9,7 +9,6 @@
<string name="pref_plugin_clipboard_desc">클립보드 내용 동기화</string>
<string name="pref_plugin_mousepad">원격 입력</string>
<string name="pref_plugin_mousepad_desc">내 휴대폰이나 태블릿을 터치패드와 키보드로 사용하기</string>
<string name="pref_plugin_presenter">프레젠테이션 리모콘</string>
<string name="pref_plugin_presenter_desc">내 장치로 프레젠테이션 슬라이드 전환하기</string>
<string name="pref_plugin_remotekeyboard">원격 키 입력 받기</string>
<string name="pref_plugin_remotekeyboard_desc">원격 장치의 키 입력 이벤트 받기</string>
@@ -70,7 +69,6 @@
<string name="category_connected_devices">연결된 장치</string>
<string name="category_not_paired_devices">사용 가능한 장치</string>
<string name="category_remembered_devices">기억하는 장치</string>
<string name="plugins_failed_to_load">불러올 수 없는 플러그인(정보를 보려면 누르기):</string>
<string name="device_menu_plugins">플러그인 설정</string>
<string name="device_menu_unpair">연결 해제</string>
<string name="device_not_reachable">연결된 장치에 도달할 수 없음</string>
@@ -92,15 +90,11 @@
<string name="pairing_request_from">%1s에서 연결 요청</string>
<string name="received_url_title">%1s에서 링크 받음</string>
<string name="received_url_text">\'%1s\'을(를) 열려면 누르십시오</string>
<string name="incoming_file_title">%1s에서 파일 보냄</string>
<string name="incoming_file_text">%1s</string>
<string name="outgoing_file_title">%1s(으)로 파일 보내는 중</string>
<string name="outgoing_files_title">%1s(으)로 파일 보내는 중</string>
<plurals name="outgoing_files_text">
<item quantity="other">파일 %2$d개 중 %1$d개 보냄</item>
</plurals>
<string name="received_file_title">%1s에서 파일 받음</string>
<string name="received_file_fail_title">%1s에서 파일 받기 실패</string>
<string name="received_file_text">\'%1s\'을(를) 열려면 누르십시오</string>
<string name="sent_file_title">%1s(으)로 파일 보냄</string>
<string name="sent_file_text">%1s</string>
@@ -117,7 +111,6 @@
<string name="pairing_reject">거부</string>
<string name="device">장치</string>
<string name="pair_device">장치 연결</string>
<string name="remote_control">원격 제어</string>
<string name="mpris_play">재생</string>
<string name="mpris_pause">일시 정지</string>
<string name="mpris_previous">이전</string>
@@ -159,15 +152,12 @@
<string name="title_activity_notification_filter">알림 필터</string>
<string name="filter_apps_info">선택한 앱의 알림을 동기화합니다.</string>
<string name="sftp_internal_storage">내부 저장소</string>
<string name="sftp_all_files">모든 파일</string>
<string name="sftp_sdcard_num">SD 카드 %d</string>
<string name="sftp_sdcard">SD 카드</string>
<string name="sftp_readonly">(읽기 전용)</string>
<string name="sftp_camera">카메라 사진</string>
<string name="add_host">호스트/IP 주소 추가</string>
<string name="add_host_hint">호스트 이름이나 IP</string>
<string name="no_players_connected">재생기를 찾을 수 없음</string>
<string name="custom_dev_list_help">장치를 자동으로 인식할 수 없을 때 이 옵션을 사용하십시오. IP 주소나 호스트 이름을 입력하고 단추를 누르면 목록에 추가합니다. 목록에 있는 항목을 누르면 삭제합니다.</string>
<string name="mpris_player_on_device">%2$s의 %1$s</string>
<string name="send_files">파일 보내기</string>
<string name="pairing_title">KDE Connect 장치</string>
@@ -194,7 +184,6 @@
<string name="permission_explanation">이 플러그인을 사용하려면 권한이 필요합니다</string>
<string name="optional_permission_explanation">모든 기능을 사용하려면 추가 권한이 필요합니다</string>
<string name="plugins_need_optional_permission">일부 플러그인은 권한이 없어서 비활성화되었습니다(정보를 보려면 누르기):</string>
<string name="sftp_permission_explanation">PC에서 파일에 접근하려면 앱에서 휴대폰 저장소 접근 권한이 필요합니다</string>
<string name="share_optional_permission_explanation">휴대폰과 데스크톱간 파일을 공유하려면 휴대폰 저장소 접근 권한이 필요합니다</string>
<string name="telepathy_permission_explanation">데스크톱에서 문자 메시지를 읽고 보내려면 문자 메시지 접근 권한이 필요합니다</string>
<string name="telephony_permission_explanation">데스크톱에서 통화와 문자 메시지를 보려면 통화 및 문자 메시지 접근 권한이 필요합니다</string>
@@ -208,7 +197,6 @@
<string name="settings_icon_description">설정 아이콘</string>
<string name="presenter_fullscreen">전체 화면</string>
<string name="presenter_exit">프레젠테이션 끝내기</string>
<string name="presenter_lock_tip">장치 잠금 상태에서는 음량 키를 이전/다음 단추로 사용할 수 있습니다</string>
<string name="add_command">명령 추가</string>
<string name="addcommand_explanation">등록된 명령이 없습니다</string>
<string name="addcommand_explanation2">시스템 설정의 KDE Connect에서 새로운 명령을 추가할 수 있습니다</string>

View File

@@ -62,7 +62,6 @@
<string name="pairing_reject">Atmesti</string>
<string name="device">Įrenginys</string>
<string name="pair_device">Suporuoti įrenginį</string>
<string name="remote_control">Nuotolinis valdymas</string>
<string name="mpris_play">Groti</string>
<string name="mpris_previous">Ankstesnis</string>
<string name="mpris_rew">Atsukti</string>
@@ -88,13 +87,11 @@
<string name="pair_device_action">Suporuoti naują įrenginį</string>
<string name="unpair_device_action">Atrišti %s</string>
<string name="custom_device_list">Pridėti įrenginį pagal IP</string>
<string name="sftp_all_files">Visi failai</string>
<string name="sftp_sdcard_num">SD kortelė %d</string>
<string name="sftp_sdcard">SD kortelė</string>
<string name="sftp_readonly">(tik skaitymui)</string>
<string name="sftp_camera">Nuotraukos</string>
<string name="add_host">Pridėti kompiuterį / IP</string>
<string name="add_host_hint">Adresas arba IP</string>
<string name="mpris_player_on_device">%1$s - %2$s</string>
<string name="send_files">Siųsti failus</string>
<string name="pairing_title">„KDE Connect“ įrenginiai</string>

View File

@@ -13,7 +13,7 @@
<string name="pref_plugin_clipboard_desc">De inhoud van het klembord delen</string>
<string name="pref_plugin_mousepad">Invoer op afstand</string>
<string name="pref_plugin_mousepad_desc">Uw telefoon of tablet gebruiken als een touchpad en toetsenbord</string>
<string name="pref_plugin_presenter">Presentatie op afstand</string>
<string name="pref_plugin_presenter">Diavoorstelling op afstand</string>
<string name="pref_plugin_presenter_desc">Uw apparaat gebruiken om dia\'s te wisselen in een presentatie</string>
<string name="pref_plugin_remotekeyboard">Toetsaanslagen van afstand ontvangen</string>
<string name="pref_plugin_remotekeyboard_desc">Toetsaanslaggebeurtenissen ontvangen van externe apparaten</string>
@@ -38,6 +38,7 @@
<string name="open_settings">Instellingen openen</string>
<string name="no_permissions">U moet toestemming geven voor toegang tot meldingen</string>
<string name="no_permission_mprisreceiver">Om in staat te zijn uw mediaspelers te besturen moet u toegan geven tot de meldingen</string>
<string name="no_permissions_remotekeyboard">Om indrukken van toetsen te ontvangen moet u het KDE Connect Remote Keyboard activeren</string>
<string name="send_ping">Ping verzenden</string>
<string name="open_mpris_controls">Bediening van multimedia</string>
<string name="remotekeyboard_editing_only_title">Behandel toetsen op afstand alleen bij bewerken</string>
@@ -74,7 +75,6 @@
<string name="category_connected_devices">Verbonden apparaten</string>
<string name="category_not_paired_devices">Beschikbare apparaten</string>
<string name="category_remembered_devices">Onthouden apparaten</string>
<string name="plugins_failed_to_load">Laden van plug-ins is mislukt (tap voor meer informatie):</string>
<string name="device_menu_plugins">Plugin-instellingen</string>
<string name="device_menu_unpair">Paar uit elkaar halen</string>
<string name="device_not_reachable">Gepaard apparaat niet bereikbaar</string>
@@ -96,17 +96,30 @@
<string name="pairing_request_from">Verzoek om een paar te maken van %1s</string>
<string name="received_url_title">Ontvangen koppeling van %1s</string>
<string name="received_url_text">Tap om \'%1s\' te openen</string>
<string name="incoming_file_title">Inkomend bestand van %1s</string>
<string name="incoming_file_text">%1s</string>
<plurals name="incoming_file_title">
<item quantity="one">%1$d bestand wordt ontvangen vanaf %2$s</item>
<item quantity="other">%1$d bestanden worden ontvangen vanaf %2$s</item>
</plurals>
<plurals name="incoming_files_text">
<item quantity="one">Bestand: %1s</item>
<item quantity="other">(Bestand %2$d van %3$d) : %1$s</item>
</plurals>
<string name="outgoing_file_title">Bestand wordt verzonden naar %1s</string>
<string name="outgoing_files_title">Bezig bestanden te verzenden naar %1s</string>
<plurals name="outgoing_files_text">
<item quantity="one">Bestand %1$d verzenden</item>
<item quantity="other">%1$d bestanden uit %2$d verzenden</item>
</plurals>
<string name="received_file_title">Bestand ontvangen van %1s</string>
<string name="received_file_fail_title">Bestand ontvangen van %1s is mislukt</string>
<plurals name="received_files_title">
<item quantity="one">Ontvangen van bestand vanaf %1$s</item>
<item quantity="other">Ontvangen %2$d bestanden vanaf %1$s</item>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="one">Ontvangen van bestand vanaf %1$s is mislukt</item>
<item quantity="other">Ontvangen van %2$d van %3$d bestanden vanaf %1$s is mislukt</item>
</plurals>
<string name="received_file_text">Tap om \'%1s\' te openen</string>
<string name="cannot_create_file">Kan bestand %s niet aanmaken</string>
<string name="sent_file_title">Bestand verzonden naar %1s</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">Verzenden van bestand naar %1s is mislukt</string>
@@ -122,7 +135,6 @@
<string name="pairing_reject">Afwijzen</string>
<string name="device">Apparaat</string>
<string name="pair_device">Apparaat voor paar</string>
<string name="remote_control">Afstandsbediening</string>
<string name="settings">Instellingen</string>
<string name="mpris_play">Afspelen</string>
<string name="mpris_pause">Pauzeren</string>
@@ -158,6 +170,10 @@
<string name="unpair_device_action">Paar %s uit elkaar halen</string>
<string name="custom_device_list">Voeg apparaten toe per IP-adres</string>
<string name="delete_custom_device">%s verwijderen?</string>
<string name="custom_device_deleted">Aangepaste apparaat verwijderd</string>
<string name="custom_device_list_help">Als uw apparaat niet automatisch wordt gedetecteerd kunt u zijn IP-adres of hostnaam toevoegen door te klikken op de knop Zwevende actie</string>
<string name="custom_device_fab_hint">Een apparaat toevoegen</string>
<string name="undo">Ongedaan maken</string>
<string name="share_notification_preference">Luidruchtige meldingen</string>
<string name="share_notification_preference_summary">Vibreer en speel een geluidje bij ontvangen van een bestand</string>
<string name="share_destination_customize">De bestemmingsmap aanpassen</string>
@@ -169,15 +185,33 @@
<string name="title_activity_notification_filter">Filter voor meldingen</string>
<string name="filter_apps_info">Meldingen zullen gesynchroniseerd worden voor de geselecteerde apps.</string>
<string name="sftp_internal_storage">Interne opslag</string>
<string name="sftp_all_files">Alle bestanden</string>
<string name="sftp_sdcard_num">SD-kaartje %d</string>
<string name="sftp_sdcard">SD-kaartje</string>
<string name="sftp_readonly">(alleen-lezen)</string>
<string name="sftp_camera">Afbeeldingen van camera</string>
<string name="add_device_dialog_title">Apparaat toevoegen</string>
<string name="add_device_hint">Hostnaam of IP-adres</string>
<string name="sftp_preference_detected_sdcards">SD-kaarten gevonden</string>
<string name="sftp_preference_edit_sdcard_title">SD-kaart bewerken</string>
<string name="sftp_preference_configured_storage_locations">Opslaglocaties geconfigureerd</string>
<string name="sftp_preference_add_storage_location_title">Opslaglocatie toegevoegd</string>
<string name="sftp_preference_edit_storage_location">Opslaglocatie bewerken</string>
<string name="sftp_preference_add_camera_shortcut">Sneltoets voor cameramap toevoegen</string>
<string name="sftp_preference_add_camera_shortcut_summary_on">Een sneltoets naar de cameramap toevoegen</string>
<string name="sftp_preference_add_camera_shortcut_summary_off">Geen sneltoets naar de cameramap toevoegen</string>
<string name="sftp_storage_preference_storage_location">Opslaglocatie</string>
<string name="sftp_storage_preference_storage_location_already_configured">Deze locatie is al geconfigureerd</string>
<string name="sftp_storage_preference_click_to_select">klik om te selecteren</string>
<string name="sftp_storage_preference_display_name">Schermnaam</string>
<string name="sftp_storage_preference_display_name_already_used">Deze schermnaam wordt al gebruikt</string>
<string name="sftp_storage_preference_display_name_cannot_be_empty">Schermnaam mag niet leeg zijn</string>
<string name="sftp_action_mode_menu_delete">Verwijderen</string>
<string name="sftp_no_sdcard_detected">Geen SD-kaart gedetecteerd</string>
<string name="sftp_no_storage_locations_configured">Geen opslaglocaties geconfigureerd</string>
<string name="sftp_saf_permission_explanation">Om toegang te hebben tot bestanden op afstand moet u opslaglocaties configureren</string>
<string name="add_host">Host/IP-adres toevoegen</string>
<string name="add_host_hint">Hostnaam of IP-adres</string>
<string name="no_players_connected">Geen spelers gevonden</string>
<string name="custom_dev_list_help">Deze optie alleen gebruiken als uw apparaat niet automatisch gedetecteerd wordt. Voer IP-adres of hostnaam hieronder in en klik op de knop om het aan de lijst toe te voegen. Klik op een bestaand item om het uit de lijst te verwijderen.</string>
<string name="mpris_player_on_device">%1$s op %2$s</string>
<string name="send_files">Bestanden verzenden</string>
<string name="pairing_title">Apparaten van KDE Connect</string>
@@ -204,7 +238,6 @@
<string name="permission_explanation">Deze plug-in heeft toestemming nodig om te werken</string>
<string name="optional_permission_explanation">U moet toestemming geven om alle functies in te schakelen</string>
<string name="plugins_need_optional_permission">Sommige plug-ins hebben functies uitgeschakeld vanwege ontbrekende toestemming (tik voor meer informatie):</string>
<string name="sftp_permission_explanation">"Om toegang tot uw bestanden te krijgen vanuit uw PC heeft de app toestemming nodig voor toegang tot de opslag van uw telefoon "</string>
<string name="share_optional_permission_explanation">Om bestanden tussen uw telefoon en uw bureaublad te delen moet u toegang geven tot de opslag van uw telefoon</string>
<string name="telepathy_permission_explanation">Om een SMS te lezen of te schrijven vanaf uw bureaublad moet u toestemming geven tot SMS</string>
<string name="telephony_permission_explanation">Om telefoonoproepen en SMS te zien vanaf het bureaublad moet u toestemming geven tot telefoonoproepen en SMS</string>
@@ -218,7 +251,7 @@
<string name="settings_icon_description">Pictogram voor instellingen</string>
<string name="presenter_fullscreen">Volledig scherm</string>
<string name="presenter_exit">Presentatie beëindigen</string>
<string name="presenter_lock_tip">U kunt uw apparaat vergrendelen om de volumetoetsen te gebruiken als knoppen voort vorige/volgende</string>
<string name="presenter_lock_tip">U kunt uw apparaat vergrendelen en de volumetoetsen gebruiken om naar de vorige/volgende dia te gaan</string>
<string name="add_command">Een commando toevoegen</string>
<string name="addcommand_explanation">Er zijn geen commando\'s geregistreerd</string>
<string name="addcommand_explanation2">U kunt nieuwe commando\'s in de instellingen voor het KDE connect-systeem toevoegen</string>
@@ -250,6 +283,15 @@
<string name="settings_more_settings_title">Meer instellingen</string>
<string name="settings_more_settings_text">Instellingen per apparaat kunnen gevonden worden onder \'Plug-in-instellingen\' vanuit een apparaat.</string>
<string name="setting_persistent_notification">Blijvende melding tonen</string>
<string name="setting_persistent_notification_oreo_description">Vereist door Android sinds Android 8.0</string>
<string name="setting_persistent_notification_pie_description">Sinds Android 9.0 kunnen deze meldingen alleen geminimaliseerd worden door er lang op te tikken</string>
<string name="setting_persistent_notification_oreo">Blijvende melding</string>
<string name="setting_persistent_notification_description">Tik om instellingen van meldingen in/uit te schakelen</string>
<string name="extra_options">Extra opties</string>
<string name="privacy_options">Privacyopties</string>
<string name="set_privacy_options">Stel uw privacyopties in</string>
<string name="new_notification">Nieuwe melding</string>
<string name="block_contents">Inhoud van meldingen blokkeren</string>
<string name="block_images">Afbeeldingen in meldingen blokkeren</string>
<string name="notification_channel_receivenotification">Meldingen van andere apparaten</string>
<string name="take_picture">Start camera</string>
<string name="plugin_photo_desc">Start de camera-app om nemen en overdragen van afbeeldingen te vergemakkelijken</string>
</resources>

View File

@@ -13,7 +13,6 @@
<string name="pref_plugin_clipboard_desc">Del innhaldet på utklippstavla</string>
<string name="pref_plugin_mousepad">Fjernstyring</string>
<string name="pref_plugin_mousepad_desc">Bruk telefonen eller nettbrettet som styreplate og tastatur</string>
<string name="pref_plugin_presenter">Fjernkontroll av presentasjon</string>
<string name="pref_plugin_presenter_desc">Bruk eininga til å byta lysbilete i presentasjonar</string>
<string name="pref_plugin_remotekeyboard">Ta imot eksterne tastetrykk</string>
<string name="pref_plugin_remotekeyboard_desc">Ta imot tastetrykk frå eksterne einingar</string>
@@ -74,7 +73,6 @@
<string name="category_connected_devices">Tilkopla einingar</string>
<string name="category_not_paired_devices">Tilgjengelege einingar</string>
<string name="category_remembered_devices">Hugs einingar</string>
<string name="plugins_failed_to_load">Klarte ikkje lasta programtillegg (trykk for meir informasjon):</string>
<string name="device_menu_plugins">Programtillegg-oppsett</string>
<string name="device_menu_unpair">Løys paring</string>
<string name="device_not_reachable">Får ikkje kontakt med para eining</string>
@@ -96,17 +94,30 @@
<string name="pairing_request_from">Paringsførespurnad frå %1s</string>
<string name="received_url_title">Fekk lenkje frå %1s</string>
<string name="received_url_text">Trykk for å opna «%1s»</string>
<string name="incoming_file_title">Får fil frå %1s</string>
<string name="incoming_file_text">%1s</string>
<plurals name="incoming_file_title">
<item quantity="one">Fekk %1$d fil frå %2$s</item>
<item quantity="other">Fekk %1$d filer frå %2$s</item>
</plurals>
<plurals name="incoming_files_text">
<item quantity="one">Fil: %1s</item>
<item quantity="other">(Fil %2$d av %3$d): %1$s</item>
</plurals>
<string name="outgoing_file_title">Sender fil til %1s</string>
<string name="outgoing_files_title">Sender filer til %1s</string>
<plurals name="outgoing_files_text">
<item quantity="one">Sende %1$d fil</item>
<item quantity="other">Sende %1$d av %2$d filer</item>
</plurals>
<string name="received_file_title">Fekk fil frå %1s</string>
<string name="received_file_fail_title">Klarte ikkje ta imot fil frå %1s</string>
<plurals name="received_files_title">
<item quantity="one">Fekk fil frå %1$s</item>
<item quantity="other">Fekk %2$d filer frå %1$s</item>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="one">Klarte ikkje ta imot fil frå %1$s</item>
<item quantity="other">Klarte ikkje ta imot %2$d av %3$d filer frå %1$s</item>
</plurals>
<string name="received_file_text">Trykk for å opna «%1s»</string>
<string name="cannot_create_file">Klarte ikkje oppretta fila %s</string>
<string name="sent_file_title">Send fil til %1s</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">Klarte ikkje senda fil til %1s</string>
@@ -122,7 +133,6 @@
<string name="pairing_reject">Avvis</string>
<string name="device">Eining</string>
<string name="pair_device">Par ny eining</string>
<string name="remote_control">Fjernstyring</string>
<string name="settings">Innstillingar</string>
<string name="mpris_play">Spel</string>
<string name="mpris_pause">Pause</string>
@@ -169,15 +179,12 @@
<string name="title_activity_notification_filter">Varslingsfilter</string>
<string name="filter_apps_info">Varslingar vert synkroniserte for dei valde appane.</string>
<string name="sftp_internal_storage">Intern lagring</string>
<string name="sftp_all_files">Alle filer</string>
<string name="sftp_sdcard_num">SD-kort %d</string>
<string name="sftp_sdcard">SD-kort</string>
<string name="sftp_readonly">(skriveverna)</string>
<string name="sftp_camera">Kamerabilete</string>
<string name="add_host">Legg til vert/IP</string>
<string name="add_host_hint">Vertsnamn/IP-adresse</string>
<string name="no_players_connected">Fann ingen spelarar</string>
<string name="custom_dev_list_help">Bruk berre dette valet viss eininga ikkje vert kjend att automatisk. Skriv inn IP-adressa eller vertsnamnet nedanfor, og trykk på knappen for å leggja til eininga. Trykk på oppføringar i lista for å fjerna dei.</string>
<string name="mpris_player_on_device">%1$s på %2$s</string>
<string name="send_files">Send filer</string>
<string name="pairing_title">KDE Connect-einingar</string>
@@ -204,7 +211,6 @@
<string name="permission_explanation">Dette tillegget treng utvida løyve for å fungera</string>
<string name="optional_permission_explanation">Du må gje utvida løyve for at alle funksjonane skal fungera</string>
<string name="plugins_need_optional_permission">På grunn av manglande løyve har nokre av tillegga funksjonar slåtte av (trykk på dei for meir informasjon):</string>
<string name="sftp_permission_explanation">For å gje tilgang til filene frå datamaskina treng appen leseløyve til lagringsområdet på telefonen</string>
<string name="share_optional_permission_explanation">For å kunna dela filer mellom telefonen og datamaskina må du gje appen lese- og skriveløyve til lagringsområdet på telefonen</string>
<string name="telepathy_permission_explanation">For å kunna lesa og skriva tekstmeldingar frå datamaskina må du gje appen tilgang til SMS</string>
<string name="telephony_permission_explanation">For å kunna sjå telefonsamtalar og tekstmeldingar frå datamaskina må du gje appen tilgang til telefon- og SMS-funksjonar</string>
@@ -218,7 +224,6 @@
<string name="settings_icon_description">Innstillingsikon</string>
<string name="presenter_fullscreen">Fullskjerm</string>
<string name="presenter_exit">Avslutt presentasjon</string>
<string name="presenter_lock_tip">Du kan låsa eininga for å bruka lydstyrke-knappane som førre/neste-knappar</string>
<string name="add_command">Legg til kommando</string>
<string name="addcommand_explanation">Ingen kommandoar er registrerte</string>
<string name="addcommand_explanation2">Du kan leggja til nye kommandoar i systeminnstillingane til KDE Connect</string>
@@ -250,6 +255,13 @@
<string name="settings_more_settings_title">Fleire innstillingar</string>
<string name="settings_more_settings_text">Innstillingar for einskildeiningar finn du under «Programtillegg-oppsett» på kvar eining.</string>
<string name="setting_persistent_notification">Vis evigvarande varsling</string>
<string name="setting_persistent_notification_oreo_description">Påkravd av Android frå og med versjon 8.0</string>
<string name="setting_persistent_notification_pie_description">Frå og med Android 9.0 kan du berre fjerna denne varslinga ved å trykkja lenge på ho</string>
<string name="setting_persistent_notification_oreo">Evigvarande varsling</string>
<string name="setting_persistent_notification_description">Trykk for å slå på/av i varslingsinnstillingane</string>
<string name="extra_options">Tilleggsval</string>
<string name="privacy_options">Personverninstillingar</string>
<string name="set_privacy_options">Vel personverninnstillingar</string>
<string name="new_notification">Ny varsling</string>
<string name="block_contents">Blokker varslingsinnhald</string>
<string name="block_images">Blokker bilete i varslingar</string>
<string name="notification_channel_receivenotification">Varslingar frå andre einingar</string>
</resources>

View File

@@ -13,7 +13,6 @@
<string name="pref_plugin_clipboard_desc">Udostępnia zawartość schowka</string>
<string name="pref_plugin_mousepad">Zdalne sterowanie</string>
<string name="pref_plugin_mousepad_desc">Umożliwia wykorzystanie telefonu lub tabletu jako myszy i klawiatury</string>
<string name="pref_plugin_presenter">Zdalna prezentacja</string>
<string name="pref_plugin_presenter_desc">Umożliwia zmianę slajdów w prezentacji telefonem</string>
<string name="pref_plugin_remotekeyboard">Odbiera zdalne naciśnięcia klawiszy</string>
<string name="pref_plugin_remotekeyboard_desc">Odbiera naciśnięcia klawiszy od urządzeń zdalnych</string>
@@ -34,7 +33,7 @@
<string name="plugin_not_available">Funkcja ta nie jest dostępna w twojej wersji Androida</string>
<string name="device_list_empty">Brak urządzeń</string>
<string name="ok">OK</string>
<string name="cancel">Anuluj</string>
<string name="cancel">Zaniechaj</string>
<string name="open_settings">Otwórz ustawienia</string>
<string name="no_permissions">Musisz przydzielić uprawnienia, aby uzyskać dostęp do powiadomień</string>
<string name="no_permission_mprisreceiver">Aby móc sterować odtwarzaczami multimedialnymi musisz udzielić dostępu powiadomieniom</string>
@@ -74,7 +73,6 @@
<string name="category_connected_devices">Podłączone urządzenia</string>
<string name="category_not_paired_devices">Dostępne urządzenia</string>
<string name="category_remembered_devices">Zapamiętane urządzenia</string>
<string name="plugins_failed_to_load">Nieudane wczytywanie wtyczki (stuknij po więcej informacji):</string>
<string name="device_menu_plugins">Ustawienia wtyczki</string>
<string name="device_menu_unpair">Odparuj</string>
<string name="device_not_reachable">Sparowane urządzenie nieosiągalne</string>
@@ -96,8 +94,18 @@
<string name="pairing_request_from">Żądanie parowania z %1s</string>
<string name="received_url_title">Odebrano odsyłacz od %1s</string>
<string name="received_url_text">Znacznik do otwarcia \'%1s\'</string>
<string name="incoming_file_title">Plik przychodzący od %1s</string>
<string name="incoming_file_text">%1s</string>
<plurals name="incoming_file_title">
<item quantity="one">Odebrano %1$d plik z %2$s</item>
<item quantity="few">Odebrano %1$d pliki z %2$s</item>
<item quantity="many">Odebrano %1$d plików z %2$s</item>
<item quantity="other"/>
</plurals>
<plurals name="incoming_files_text">
<item quantity="one">Plik: %1s</item>
<item quantity="few">(Plik %2$d z %3$d) : %1$s</item>
<item quantity="many">(Plik %2$d z %3$d) : %1$s</item>
<item quantity="other"/>
</plurals>
<string name="outgoing_file_title">Wysyłanie pliku do %1s</string>
<string name="outgoing_files_title">Wysyłanie pliku do %1s</string>
<plurals name="outgoing_files_text">
@@ -106,12 +114,23 @@
<item quantity="many">Wysłano %1$d z %2$d plików</item>
<item quantity="other"/>
</plurals>
<string name="received_file_title">Odebrano plik od %1s</string>
<string name="received_file_fail_title">Nieudane odbieranie pliku z %1s</string>
<string name="received_file_text">Znacznik do otwarcia \'%1s\'</string>
<plurals name="received_files_title">
<item quantity="one">Odebrano plik od %1$s</item>
<item quantity="few">Odebrano %2$d pliki od %1$s</item>
<item quantity="many">Odebrano %2$d plików od %1$s</item>
<item quantity="other"/>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="one">Nie udało się odebrać pliku od %1$s</item>
<item quantity="few">Nie udało się odebrać %2$d z %3$d plików od %1$s</item>
<item quantity="many">Nie udało się odebrać %2$d z %3$d plików od %1$s</item>
<item quantity="other"/>
</plurals>
<string name="received_file_text">Stuknij, aby otworzyć \'%1s\'</string>
<string name="cannot_create_file">Nie można utworzyć pliku %s</string>
<string name="sent_file_title">Plik wysłano do %1s</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">Nie udało się wyłanie pliku do %1s</string>
<string name="sent_file_failed_title">Nie udało się wysyłanie pliku do %1s</string>
<string name="sent_file_failed_text">%1s</string>
<string name="tap_to_answer">Stuknij, aby odpowiedzieć</string>
<string name="reconnect">Połącz ponownie</string>
@@ -124,7 +143,6 @@
<string name="pairing_reject">Odrzuć</string>
<string name="device">Urządzenie</string>
<string name="pair_device">Sparuj urządzenie</string>
<string name="remote_control">Zdalne sterowanie</string>
<string name="settings">Ustawienia</string>
<string name="mpris_play">Odtwórz</string>
<string name="mpris_pause">Wstrzymaj</string>
@@ -159,6 +177,7 @@
<string name="pair_device_action">Sparuj nowe urządzenie</string>
<string name="unpair_device_action">Rozparuj %s</string>
<string name="custom_device_list">Dodaj urządzenia po numerze IP</string>
<string name="delete_custom_device">Usunąć %s?</string>
<string name="share_notification_preference">Hałaśliwe powiadomienia</string>
<string name="share_notification_preference_summary">Zadrżyj i odegraj dźwięk przy odebraniu pliku</string>
<string name="share_destination_customize">Własny katalog docelowy</string>
@@ -170,15 +189,12 @@
<string name="title_activity_notification_filter">Filtr powiadomień</string>
<string name="filter_apps_info">Powiadomienia zostaną zsynchronizowane z wybranymi aplikacjami.</string>
<string name="sftp_internal_storage">"Pamięć wewnętrzna "</string>
<string name="sftp_all_files">Wszystkie pliki</string>
<string name="sftp_sdcard_num">Karta SD %d</string>
<string name="sftp_sdcard">Karta SD</string>
<string name="sftp_readonly">(tylko do odczytu)</string>
<string name="sftp_camera">Zdjęcia z aparatu</string>
<string name="add_host">Dodaj gospodarza/IP</string>
<string name="add_host_hint">Gospodarz lub IP</string>
<string name="no_players_connected">Nie znaleziono żadnego odtwarzacza</string>
<string name="custom_dev_list_help">Użyj tej opcji tylko wtedy, gdy twoje urządzenie nie jest samoczynnie wykrywane. Podaj adres IP i nazwę gospodarza poniżej i dotknij przycisku, aby dodać je do listy. Dotknij istniejącego elementu, aby usunąć go z listy.</string>
<string name="mpris_player_on_device">%1$s na %2$s</string>
<string name="send_files">Wyślij pliki</string>
<string name="pairing_title">Urządzenia KDE Connect</string>
@@ -205,7 +221,6 @@
<string name="permission_explanation">Ta wtyczka wymaga uprawnień do działania</string>
<string name="optional_permission_explanation">Musisz przydzielić dodatkowe uprawnienia, aby włączyć wszystkie funkcje</string>
<string name="plugins_need_optional_permission">Niektóre z wtyczek mają ograniczone możliwości ze względu na ograniczone uprawnienia (stuknij po więcej informacji)</string>
<string name="sftp_permission_explanation">Aby uzyskać dostęp do plików z twojego PC aplikacja ta potrzebuje uprawnień do dostępu do pamięci twojego telefonu</string>
<string name="share_optional_permission_explanation">Aby udostępniać pliki z twojego telefonu na twoim komputerze musisz pozowolić na dostęp do pamięci telefonu</string>
<string name="telepathy_permission_explanation">Aby odczytywać i pisać SMSy z twojego komputera musisz nadać uprawnienia do SMSów</string>
<string name="telephony_permission_explanation">Aby widzieć rozmowy telefoniczne i SMSy z twojego komputera musisz nadać uprawnienia na rozmowy telefoniczne i SMSy</string>
@@ -219,7 +234,6 @@
<string name="settings_icon_description">Ikona ustawień</string>
<string name="presenter_fullscreen">Pełny ekran</string>
<string name="presenter_exit">Zakończ prezentację</string>
<string name="presenter_lock_tip">Możesz ustawić przyciski głośności na swoim urządzeniu jako przyciski dalej/wstecz</string>
<string name="add_command">Dodaj polecenie</string>
<string name="addcommand_explanation">Nie zarejestrowano żadnych poleceń</string>
<string name="addcommand_explanation2">Nowe polecenia można dodawać w ustawieniach systemowych KDE Connect</string>
@@ -251,6 +265,13 @@
<string name="settings_more_settings_title">Więcej ustawień</string>
<string name="settings_more_settings_text">Wstępne ustawienia urządzenia można znaleźć w \'Ustawieniach wtyczki\' z poziomu urządzenia.</string>
<string name="setting_persistent_notification">Pokaż nieznikające powiadomienie</string>
<string name="setting_persistent_notification_oreo_description">Wymagane przez Androida od Androida 8.0</string>
<string name="setting_persistent_notification_pie_description">Od Androida 9.0 to powiadomienie można zminimalizować tylko poprzez długie stuknięcie na nim</string>
<string name="setting_persistent_notification_oreo">Nieznikające powiadomienie</string>
<string name="setting_persistent_notification_description">Stuknij, aby włączyć/wyłączyć ustawienia powiadomienia</string>
<string name="extra_options">Opcje dodatkowe</string>
<string name="privacy_options">Opcje prywatności</string>
<string name="set_privacy_options">Ustaw swoje opcje prywatności</string>
<string name="new_notification">Nowe powiadomienie</string>
<string name="block_contents">Blokuj treści w powiadomieniach</string>
<string name="block_images">Blokuj obrazy w powiadomieniach</string>
<string name="notification_channel_receivenotification">Powiadomienie z innych urządzeń</string>
</resources>

View File

@@ -1,5 +1,8 @@
<?xml version='1.0' encoding='utf-8'?>
<resources>
<string name="kde_connect">KDE Connect</string>
<string name="foreground_notification_no_devices">Não está conectado a nenhum dispositivo</string>
<string name="foreground_notification_devices">Conectado a: %s</string>
<string name="pref_plugin_telephony">Notificação de telefonia</string>
<string name="pref_plugin_telephony_desc">Envia notificações de chamadas recebidas</string>
<string name="pref_plugin_battery">Relatório da bateria</string>
@@ -10,7 +13,7 @@
<string name="pref_plugin_clipboard_desc">Compartilha o conteúdo da área de transferência</string>
<string name="pref_plugin_mousepad">Introdução de dados remota</string>
<string name="pref_plugin_mousepad_desc">Use seu telefone ou tablet como mouse e teclado</string>
<string name="pref_plugin_presenter">Apresentação remota</string>
<string name="pref_plugin_presenter">Apresentação de slides remota</string>
<string name="pref_plugin_presenter_desc">Use o seu dispositivo para mudar de slides em uma apresentação</string>
<string name="pref_plugin_remotekeyboard">Receber pressionamento de teclas remotamente</string>
<string name="pref_plugin_remotekeyboard_desc">Recebe os eventos de pressionamento de teclas dos dispositivos remotos</string>
@@ -71,7 +74,6 @@
<string name="category_connected_devices">Dispositivos conectados</string>
<string name="category_not_paired_devices">Dispositivos disponíveis</string>
<string name="category_remembered_devices">Dispositivos lembrados</string>
<string name="plugins_failed_to_load">Plugins não carregados (toque para mais informações):</string>
<string name="device_menu_plugins">Configuração dos plugins</string>
<string name="device_menu_unpair">Cancelar emparelhamento</string>
<string name="device_not_reachable">O dispositivo pareado está inacessível</string>
@@ -93,17 +95,30 @@
<string name="pairing_request_from">Emparelhamento solicitado por %1s</string>
<string name="received_url_title">Link recebido de %1s</string>
<string name="received_url_text">Toque para abrir o \'%1s\'</string>
<string name="incoming_file_title">Arquivo recebido de %1s</string>
<string name="incoming_file_text">%1s</string>
<plurals name="incoming_file_title">
<item quantity="one">Recebendo %1$d arquivo de %2$s</item>
<item quantity="other">Recebendo %1$d arquivos de %2$s</item>
</plurals>
<plurals name="incoming_files_text">
<item quantity="one">Arquivo: %1s</item>
<item quantity="other">(Arquivo %2$d de %3$d) : %1$s</item>
</plurals>
<string name="outgoing_file_title">Enviando arquivo para %1s</string>
<string name="outgoing_files_title">Enviando arquivos para %1s</string>
<plurals name="outgoing_files_text">
<item quantity="one">Enviado %1$d arquivo</item>
<item quantity="other">Enviados %1$d de %2$d arquivos</item>
</plurals>
<string name="received_file_title">Arquivo recebido de %1s</string>
<string name="received_file_fail_title">Falha ao receber o arquivo de %1s</string>
<plurals name="received_files_title">
<item quantity="one">Arquivo recebido de %1$s</item>
<item quantity="other">Recebidos %2$d arquivos de %1$s</item>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="one">Falha na recepção do arquivo de %1$s</item>
<item quantity="other">Falha na recepção de %2$d de %3$d arquivos de %1$s</item>
</plurals>
<string name="received_file_text">Toque para abrir o \'%1s\'</string>
<string name="cannot_create_file">Não foi possível criar o arquivo %s</string>
<string name="sent_file_title">Enviar arquivo para %1s</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">Não foi possível enviar o arquivo para o %1s</string>
@@ -119,7 +134,7 @@
<string name="pairing_reject">Rejeitar</string>
<string name="device">Dispositivo</string>
<string name="pair_device">Emparelhar dispositivo</string>
<string name="remote_control">Controle remoto</string>
<string name="settings">Configurações</string>
<string name="mpris_play">Reproduzir</string>
<string name="mpris_pause">Pausar</string>
<string name="mpris_previous">Anterior</string>
@@ -139,6 +154,7 @@
</string-array>
<string name="mpris_notification_settings_title">Mostrar a notificação do controle multimídia</string>
<string name="mpris_notification_settings_summary">Permite controlar os seus reprodutores de mídias sem abrir o KDE Connect</string>
<string name="share_to">Compartilhar com...</string>
<string name="protocol_version_older">Este dispositivo usa uma versão antiga do protocolo</string>
<string name="protocol_version_newer">Este dispositivo usa uma versão mais recente do protocolo</string>
<string name="general_settings">Configurações gerais</string>
@@ -152,6 +168,11 @@
<string name="pair_device_action">Emparelhar um novo dispositivo</string>
<string name="unpair_device_action">Desemparelhar %s</string>
<string name="custom_device_list">Adicionar dispositivos pelo IP</string>
<string name="delete_custom_device">Excluir %s?</string>
<string name="custom_device_deleted">Dispositivo personalizado excluído</string>
<string name="custom_device_list_help">Se seu dispositivo não for detectado automaticamente você pode adicionar o endereço de IP ou nome de máquina dele clicando no botão de ação flutuante</string>
<string name="custom_device_fab_hint">Adicionar um dispositivo</string>
<string name="undo">Desfazer</string>
<string name="share_notification_preference">Notificações sonoras</string>
<string name="share_notification_preference_summary">Vibra e reproduz um som ao receber um arquivo</string>
<string name="share_destination_customize">Personalizar a pasta de destino</string>
@@ -163,15 +184,33 @@
<string name="title_activity_notification_filter">Filtro de notificações</string>
<string name="filter_apps_info">As notificações dos aplicativos selecionados serão sincronizadas.</string>
<string name="sftp_internal_storage">Armazenamento interno</string>
<string name="sftp_all_files">Todos os arquivos</string>
<string name="sftp_sdcard_num">Cartão SD %d</string>
<string name="sftp_sdcard">Cartão SD</string>
<string name="sftp_readonly">(somente leitura)</string>
<string name="sftp_camera">Imagens da câmera</string>
<string name="add_device_dialog_title">Adicionar dispositivo</string>
<string name="add_device_hint">Nome da máquina ou endereço IP</string>
<string name="sftp_preference_detected_sdcards">Cartões SD detectados</string>
<string name="sftp_preference_edit_sdcard_title">Editar cartão SD</string>
<string name="sftp_preference_configured_storage_locations">Localizações de armazenamento configuradas</string>
<string name="sftp_preference_add_storage_location_title">Adicionar localização de armazenamento</string>
<string name="sftp_preference_edit_storage_location">Editar localização de armazenamento</string>
<string name="sftp_preference_add_camera_shortcut">Adicionar atalho para pasta da câmera</string>
<string name="sftp_preference_add_camera_shortcut_summary_on">Adiciona um atalho para a pasta da câmera</string>
<string name="sftp_preference_add_camera_shortcut_summary_off">Não adiciona um atalho para a pasta da câmera</string>
<string name="sftp_storage_preference_storage_location">Localização do armazenamento</string>
<string name="sftp_storage_preference_storage_location_already_configured">Esta localização já foi configurada</string>
<string name="sftp_storage_preference_click_to_select">clique para selecionar</string>
<string name="sftp_storage_preference_display_name">Nome de exibição</string>
<string name="sftp_storage_preference_display_name_already_used">Este nome de exibição já está em uso</string>
<string name="sftp_storage_preference_display_name_cannot_be_empty">O nome de exibição não pode esta vazio</string>
<string name="sftp_action_mode_menu_delete">Excluir</string>
<string name="sftp_no_sdcard_detected">Nenhum cartão SD detectado</string>
<string name="sftp_no_storage_locations_configured">Nenhuma localização de armazenamento configurada</string>
<string name="sftp_saf_permission_explanation">Para acessar arquivos remotamente você precisa configurar localizações de armazenamento</string>
<string name="add_host">Adicionar máquina/IP</string>
<string name="add_host_hint">Máquina ou IP</string>
<string name="add_host_hint">Nome da máquina ou IP</string>
<string name="no_players_connected">Nenhum reprodutor encontrado</string>
<string name="custom_dev_list_help">Use esta opção apenas se o seu dispositivo não for detectado automaticamente. Digite o endereço IP ou nome da máquina no campo abaixo e toque o botão para adicioná-lo à lista. Toque em um item existente para removê-lo da lista.</string>
<string name="mpris_player_on_device">%1$s em %2$s</string>
<string name="send_files">Enviar arquivos</string>
<string name="pairing_title">Dispositivos do KDE Connect</string>
@@ -198,7 +237,6 @@
<string name="permission_explanation">Este plugin precisa de permissões para funcionar</string>
<string name="optional_permission_explanation">Você precisa conceder permissões extras para ativar todas as funções</string>
<string name="plugins_need_optional_permission">Alguns plugins possuem recursos desativados devido à falta de permissões (toque para obter mais informações):</string>
<string name="sftp_permission_explanation">Para acessar os seus arquivos a partir do PC, o aplicativo precisa de permissão para acessar o armazenamento do seu celular</string>
<string name="share_optional_permission_explanation">Para compartilhar arquivos entre o seu celular e o seu ambiente de trabalho é necessário permissão para acessar o armazenamento do seu celular</string>
<string name="telepathy_permission_explanation">Para ler e gravar SMS a partir do seu ambiente de trabalho é necessário conceder permissão para SMS</string>
<string name="telephony_permission_explanation">Para ver as chamadas e SMS do celular a partir do seu ambiente de trabalho é necessário conceder permissão para as chamadas telefônicas e SMS</string>
@@ -212,7 +250,7 @@
<string name="settings_icon_description">Ícone de configurações</string>
<string name="presenter_fullscreen">Tela inteira</string>
<string name="presenter_exit">Sair da apresentação</string>
<string name="presenter_lock_tip">Você pode bloquear o seu dispositivo para usar as teclas de volume como botões anterior/próximo</string>
<string name="presenter_lock_tip">Você pode bloquear o seu dispositivo e usar as teclas de volume para ir para o slide anterior/próximo</string>
<string name="add_command">Adicionar um comando</string>
<string name="addcommand_explanation">Não há comandos registrados</string>
<string name="addcommand_explanation2">Você pode adicionar novos comandos nas Configurações do Sistema KDE Connect</string>
@@ -220,6 +258,10 @@
<string name="pref_plugin_mprisreceiver">Controle do reprodutor de mídia</string>
<string name="pref_plugin_mprisreceiver_desc">Controle os reprodutores de mídias dos seus celulares a partir de outro dispositivo</string>
<string name="dark_theme">Tema escuro</string>
<string name="notification_channel_default">Outras notificações</string>
<string name="notification_channel_persistent">Indicador persistente</string>
<string name="notification_channel_media_control">Controle multimídia</string>
<string name="notification_channel_filetransfer">Transferência de arquivo</string>
<string name="mpris_stop">Parar o reprodutor atual</string>
<string name="copy_url_to_clipboard">Copiar URL para a área de transferência</string>
<string name="clipboard_toast">Copiado para a área de transferência</string>
@@ -234,4 +276,21 @@
<string name="pref_plugin_systemvolume_desc">Controle o volume do sistema a partir do dispositivo remoto</string>
<string name="mute">Sem áudio</string>
<string name="all">Tudo</string>
<string name="devices">Dispositivos</string>
<string name="settings_rename">Nome do dispositivo</string>
<string name="settings_dark_mode">Tema escuro</string>
<string name="settings_more_settings_title">Mais opções</string>
<string name="settings_more_settings_text">As configurações por dispositivo podem ser encontradas nas \'Configurações do plugin\' dentro de um determinado dispositivo.</string>
<string name="setting_persistent_notification">Mostrar a notificação persistente</string>
<string name="setting_persistent_notification_oreo">Notificação persistente</string>
<string name="setting_persistent_notification_description">Toque para ativar/desativar na configuração das Notificações</string>
<string name="extra_options">Opções extras</string>
<string name="privacy_options">Opções de privacidade</string>
<string name="set_privacy_options">Defina as suas opções de privacidade</string>
<string name="new_notification">Nova notificação</string>
<string name="block_contents">Bloquear o conteúdo das notificações</string>
<string name="block_images">Bloquear as imagens das notificações</string>
<string name="notification_channel_receivenotification">Notificações dos outros dispositivos</string>
<string name="take_picture">Iniciar câmera</string>
<string name="plugin_photo_desc">Iniciar o aplicativo da câmera para facilitar a captura e transferência de fotos</string>
</resources>

View File

@@ -13,7 +13,7 @@
<string name="pref_plugin_clipboard_desc">Partilhar o conteúdo da área de transferência</string>
<string name="pref_plugin_mousepad">Introdução remota de dados</string>
<string name="pref_plugin_mousepad_desc">Usar o seu telefone ou \'tablet\' como um rato ou teclado</string>
<string name="pref_plugin_presenter">Comando de apresentações</string>
<string name="pref_plugin_presenter">Apresentação remota</string>
<string name="pref_plugin_presenter_desc">Use o seu dispositivo para mudar de \'slides\' numa apresentação</string>
<string name="pref_plugin_remotekeyboard">Receber as teclas remotamente</string>
<string name="pref_plugin_remotekeyboard_desc">Receber eventos de teclas dos dispositivos remotos</string>
@@ -74,7 +74,6 @@
<string name="category_connected_devices">Dispositivos ligados</string>
<string name="category_not_paired_devices">Dispositivos disponíveis</string>
<string name="category_remembered_devices">Dispositivos recordados</string>
<string name="plugins_failed_to_load">Não foi possível carregar os \'plugin\' (toque para mais informações):</string>
<string name="device_menu_plugins">Configuração do \'plugin\'</string>
<string name="device_menu_unpair">Desemparelhar</string>
<string name="device_not_reachable">O dispositivo emparelhado está inacessível</string>
@@ -96,17 +95,30 @@
<string name="pairing_request_from">Pedido de emparelhamento de %1s</string>
<string name="received_url_title">Ligação recebida de %1s</string>
<string name="received_url_text">Toque para abrir o \'%1s\'</string>
<string name="incoming_file_title">Ficheiro recebido de %1s</string>
<string name="incoming_file_text">%1s</string>
<plurals name="incoming_file_title">
<item quantity="one">A receber %1$d ficheiro de %2$s</item>
<item quantity="other">A receber %1$d ficheiros de %2$s</item>
</plurals>
<plurals name="incoming_files_text">
<item quantity="one">Ficheiro: %1$s</item>
<item quantity="other">(Ficheiro %2$d de %3$d) : %1$s</item>
</plurals>
<string name="outgoing_file_title">A enviar o ficheiro para o %1s</string>
<string name="outgoing_files_title">A enviar os ficheiros para o %1s</string>
<plurals name="outgoing_files_text">
<item quantity="one">Foi enviado %1$d ficheiro</item>
<item quantity="other">Foram enviados %1$d de %2$d ficheiros</item>
</plurals>
<string name="received_file_title">Ficheiro recebido de %1s</string>
<string name="received_file_fail_title">Falhou a recepção do ficheiro de %1s</string>
<plurals name="received_files_title">
<item quantity="one">Ficheiro recebido de %1$s</item>
<item quantity="other">Foram recebidos %2$d ficheiros de %1$s</item>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="one">Falhou a recepção do ficheiro de %1$s</item>
<item quantity="other">Falhou a recepção de %2$d de %3$d ficheiros de %1$s</item>
</plurals>
<string name="received_file_text">Toque para abrir o \'%1s\'</string>
<string name="cannot_create_file">Não é possível criar o ficheiro %s</string>
<string name="sent_file_title">O ficheiro foi enviado para %1s</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">Não foi possível enviar o ficheiro para o %1s</string>
@@ -122,7 +134,6 @@
<string name="pairing_reject">Rejeitar</string>
<string name="device">Dispositivo</string>
<string name="pair_device">Emparelhar o dispositivo</string>
<string name="remote_control">Comando à distância</string>
<string name="settings">Configuração</string>
<string name="mpris_play">Tocar</string>
<string name="mpris_pause">Pausa</string>
@@ -158,6 +169,10 @@
<string name="unpair_device_action">Desemparelhar o %s</string>
<string name="custom_device_list">Adicionar dispositivos pelo IP</string>
<string name="delete_custom_device">Apagar o %s?</string>
<string name="custom_device_deleted">Dispositivo personalizado removido</string>
<string name="custom_device_list_help">Se o seu dispositivo não for detectado automaticamente, poderá adicionar o seu endereço IP ou nome da máquina, carregando no botão da Acção Flutuante</string>
<string name="custom_device_fab_hint">Adicionar um dispositivo</string>
<string name="undo">Desfazer</string>
<string name="share_notification_preference">Notificações com ruído</string>
<string name="share_notification_preference_summary">Vibrar e tocar um som ao receber um ficheiro</string>
<string name="share_destination_customize">Personalizar a pasta de destino</string>
@@ -169,15 +184,13 @@
<string name="title_activity_notification_filter">Filtro de notificações</string>
<string name="filter_apps_info">As notificações serão sincronizadas para as aplicações seleccionadas.</string>
<string name="sftp_internal_storage">Armazenamento interno</string>
<string name="sftp_all_files">Todos os ficheiros</string>
<string name="sftp_sdcard_num">Cartão SD %d</string>
<string name="sftp_sdcard">Cartão SD</string>
<string name="sftp_readonly">(apenas para leitura)</string>
<string name="sftp_camera">Fotografias</string>
<string name="add_host">Adicionar uma máquina/IP</string>
<string name="add_host_hint">Nome ou IP da máquina</string>
<string name="add_device_dialog_title">Adicionar um dispositivo</string>
<string name="add_device_hint">Nome ou IP da máquina</string>
<string name="no_players_connected">Não foram encontrados leitores</string>
<string name="custom_dev_list_help">Use esta opção apenas se o seu dispositivo não for detectado automaticamente. Indique o endereço IP ou nome da máquina em baixo e carregue no botão para a adicionar à lista. Carregue sobre um item existente para o remover da lista.</string>
<string name="mpris_player_on_device">%1$s em %2$s</string>
<string name="send_files">Enviar os ficheiros</string>
<string name="pairing_title">Dispositivos do KDE Connect</string>
@@ -204,7 +217,6 @@
<string name="permission_explanation">Este \'plugin\' precisa de permissões para funcionar</string>
<string name="optional_permission_explanation">Precisa de dar permissões extra para activar todas as funcionalidades</string>
<string name="plugins_need_optional_permission">Alguns \'plugins\' têm funcionalidades desactivadas devido à falta de permissões (toque para obter mais informações):</string>
<string name="sftp_permission_explanation">Para aceder aos seus ficheiros a partir do seu PC, a aplicação precisa de permissão para aceder ao armazenamento do seu telemóvel</string>
<string name="share_optional_permission_explanation">Para partilhar ficheiros entre o seu telemóvel e o seu ambiente de trabalho, precisa de permissão para aceder ao armazenamento do seu telemóvel</string>
<string name="telepathy_permission_explanation">Para ler e escrever SMS\'s a partir do seu ambiente de trabalho, precisa de dar permissões para os SMS\'s</string>
<string name="telephony_permission_explanation">Para ver as chamadas e os SMS\'s a partir do seu ambiente de trabalho, precisa de dar permissões para as chamadas telefónicas e SMS\'s</string>
@@ -218,7 +230,7 @@
<string name="settings_icon_description">Ícone de configuração</string>
<string name="presenter_fullscreen">Ecrã Completo</string>
<string name="presenter_exit">Sair da apresentação</string>
<string name="presenter_lock_tip">Poderá bloquear o seu dispositivo para usar as teclas de volume como botões anterior/seguinte</string>
<string name="presenter_lock_tip">Poderá bloquear o seu dispositivo para usar as teclas de volume como botões para o \'slide\' anterior/seguinte</string>
<string name="add_command">Adicionar um comando</string>
<string name="addcommand_explanation">Não existem comandos registados</string>
<string name="addcommand_explanation2">Poderá adicionar comandos novos na Configuração do Sistema KDE Connect</string>
@@ -250,6 +262,13 @@
<string name="settings_more_settings_title">Mais configurações</string>
<string name="settings_more_settings_text">As configurações por dispositivo podem ser encontradas na \'Configuração do plugin\' dentro de um dado dispositivo.</string>
<string name="setting_persistent_notification">Mostrar uma notificação persistente</string>
<string name="setting_persistent_notification_oreo_description">Necessário pelo Android desde o Android 8.0</string>
<string name="setting_persistent_notification_pie_description">Desde o Android 9.0, esta notificação só pode ser minimizada se fizer um toque longo sobre ela</string>
<string name="setting_persistent_notification_oreo">Notificação persistente</string>
<string name="setting_persistent_notification_description">Toque para activar/desactivar na configuração das Notificações</string>
<string name="extra_options">Opções extra</string>
<string name="privacy_options">Opções de privacidade</string>
<string name="set_privacy_options">Defina as suas opções de privacidade</string>
<string name="new_notification">Nova notificação</string>
<string name="block_contents">Bloquear o conteúdo das notificações</string>
<string name="block_images">Bloquear as imagens das notificações</string>
<string name="notification_channel_receivenotification">Notificações dos outros dispositivos</string>
</resources>

View File

@@ -39,7 +39,6 @@
</string-array>
<string name="category_connected_devices">Dispozitive conectate</string>
<string name="category_remembered_devices">Dispozitive memorizate</string>
<string name="plugins_failed_to_load">Încărcarea extensiilor a eșuat (atingeți pentru mai multe informații):</string>
<string name="device_menu_unpair">Dezasociază</string>
<string name="unknown_device">Dispozitiv necunoscut</string>
<string name="error_not_reachable">Dispozitivul nu e accesibil</string>
@@ -60,7 +59,6 @@
<string name="pairing_reject">Respinge</string>
<string name="device">Dispozitiv</string>
<string name="pair_device">Asociază dispozitiv</string>
<string name="remote_control">Control de la distanță</string>
<string name="mpris_play">Redă</string>
<string name="mpris_previous">Precedent</string>
<string name="mpris_rew">Derulează</string>

View File

@@ -1,6 +1,10 @@
<?xml version='1.0' encoding='utf-8'?>
<resources>
<string name="kde_connect">KDE Connect</string>
<string name="foreground_notification_no_devices">Не подключено ни к одному устройству</string>
<string name="foreground_notification_devices">Подключено к: %s</string>
<string name="pref_plugin_telephony">События телефонии</string>
<string name="pref_plugin_telephony_desc">Отправка уведомлений о звонках</string>
<string name="pref_plugin_battery">Состояние батареи</string>
<string name="pref_plugin_battery_desc">Периодическое информирование о состоянии батареи</string>
<string name="pref_plugin_sftp">Просмотр файловой системы</string>
@@ -9,12 +13,14 @@
<string name="pref_plugin_clipboard_desc">Использование общего буфера обмена</string>
<string name="pref_plugin_mousepad">Удалённый ввод</string>
<string name="pref_plugin_mousepad_desc">Использование телефона или планшета в качестве сенсорной панели и клавиатуры</string>
<string name="pref_plugin_presenter_desc">Использование телефона для смены слайдов презентации</string>
<string name="pref_plugin_remotekeyboard">Получение удалённых нажатий клавиш</string>
<string name="pref_plugin_remotekeyboard_desc">Получение нажатий клавиш с удалённых устройств</string>
<string name="pref_plugin_mpris">Управление воспроизведением</string>
<string name="pref_plugin_mpris_desc">Обеспечивает дистанционное управление медиапроигрывателем</string>
<string name="pref_plugin_runcommand">Запуск команд</string>
<string name="pref_plugin_runcommand_desc">Удалённый запуск команд с телефона или планшета</string>
<string name="pref_plugin_contacts">Синхронизация контактов</string>
<string name="pref_plugin_ping">Пинг</string>
<string name="pref_plugin_ping_desc">Отправка и получение тестовых сигналов</string>
<string name="pref_plugin_notifications">Синхронизация уведомлений</string>
@@ -63,7 +69,6 @@
<string name="category_connected_devices">Подключённые устройства</string>
<string name="category_not_paired_devices">Доступные устройства</string>
<string name="category_remembered_devices">Известные устройства</string>
<string name="plugins_failed_to_load">Не удалось загрузить следующие модули (нажмите для просмотра подробностей):</string>
<string name="device_menu_plugins">Настройка модулей</string>
<string name="device_menu_unpair">Снять сопряжение</string>
<string name="device_not_reachable">Сопряжённое устройство недоступно</string>
@@ -85,12 +90,20 @@
<string name="pairing_request_from">Запрос на сопряжение от %1s</string>
<string name="received_url_title">Получена ссылка от %1s</string>
<string name="received_url_text">Нажмите, чтобы открыть «%1s»</string>
<string name="incoming_file_title">Входящий файл с %1s</string>
<string name="incoming_file_text">%1s</string>
<string name="outgoing_file_title">Отправка файла на %1s</string>
<string name="outgoing_files_title">Отправка файлов на %1s</string>
<string name="received_file_title">Получен файл с %1s</string>
<string name="received_file_fail_title">Не удалось получить файл с %1s</string>
<plurals name="received_files_title">
<item quantity="one">Получен %2$d файл с %1$s</item>
<item quantity="few">Получены %2$d файла с %1$s</item>
<item quantity="many">Получены %2$d файлов с %1$s</item>
<item quantity="other">Получен файл с %1$s</item>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="one">Не удалось получить %2$d из %3$d файла с %1$s</item>
<item quantity="few">Не удалось получить %2$d из %3$d файлов с %1$s</item>
<item quantity="many">Не удалось получить %2$d из %3$d файлов с %1$s</item>
<item quantity="other">Не удалось получить файл с %1$s</item>
</plurals>
<string name="received_file_text">Нажмите, чтобы открыть «%1s»</string>
<string name="sent_file_title">Файл отправлен на %1s</string>
<string name="sent_file_text">%1s</string>
@@ -107,7 +120,7 @@
<string name="pairing_reject">Отклонить</string>
<string name="device">Устройство</string>
<string name="pair_device">Сопрячь устройство</string>
<string name="remote_control">Дистанционное управление</string>
<string name="settings">Настройка</string>
<string name="mpris_play">Воспроизведение</string>
<string name="mpris_previous">Предыдущая</string>
<string name="mpris_rew">Назад</string>
@@ -145,15 +158,12 @@
<string name="title_activity_notification_filter">Фильтр уведомлений</string>
<string name="filter_apps_info">Уведомления будут синхронизированы для выбранных приложений.</string>
<string name="sftp_internal_storage">Встроенная память</string>
<string name="sftp_all_files">Все файлы</string>
<string name="sftp_sdcard_num">SD-карта %d</string>
<string name="sftp_sdcard">SD-карта</string>
<string name="sftp_readonly">(только чтение)</string>
<string name="sftp_camera">Фотографии с камеры</string>
<string name="add_host">Добавить хост/IP-адрес</string>
<string name="add_host_hint">Имя хоста или IP-адрес</string>
<string name="no_players_connected">Медиапроигрывателей не найдено</string>
<string name="custom_dev_list_help">Используйте эту форму только если ваше устройство не определяется автоматически. Введите IP-адрес или имя хоста ниже и нажмите кнопку для добавления в список. Нажмите на существующий элемент для удаления из списка.</string>
<string name="mpris_player_on_device">%1$s на %2$s</string>
<string name="send_files">Отправить файлы</string>
<string name="pairing_title">Устройства с KDE Connect</string>
@@ -179,9 +189,15 @@
<string name="permission_explanation">Этому модулю нужны разрешения для работы</string>
<string name="optional_permission_explanation">Необходимо предоставить дополнительные разрешения для включения всех функций</string>
<string name="plugins_need_optional_permission">Некоторые функции модулей отключены из-за отсутствия необходимых разрешений (нажмите для просмотра подробностей):</string>
<string name="sftp_permission_explanation">Для доступа к файлам с вашего компьютера приложению необходимо разрешение на доступ к встроенной памяти телефона</string>
<string name="share_optional_permission_explanation">Чтобы обмениваться файлами между телефоном и компьютером, необходимо предоставить доступ к встроенной памяти телефона</string>
<string name="telepathy_permission_explanation">Чтобы читать и писать SMS с компьютера, вам необходимо дать разрешение на доступ к SMS</string>
<string name="telephony_permission_explanation">Чтобы видеть телефонные звонки и SMS на компьютере, необходимо дать разрешение на телефонные звонки и SMS</string>
<string name="telephony_optional_permission_explanation">Чтобы видеть имя контакта вместо номера телефона, необходимо предоставить доступ к контактам</string>
<string name="dark_theme">Тёмное оформление</string>
<string name="devices">Устройства</string>
<string name="settings_rename">Имя устройства</string>
<string name="settings_dark_mode">Тёмное оформление</string>
<string name="settings_more_settings_title">Дополнительные параметры</string>
<string name="setting_persistent_notification">Показывать постоянное уведомление</string>
<string name="notification_channel_receivenotification">Уведомления с других устройств</string>
</resources>

View File

@@ -1,6 +1,10 @@
<?xml version='1.0' encoding='utf-8'?>
<resources>
<string name="kde_connect">KDE Connect</string>
<string name="foreground_notification_no_devices">Nepripojené k žiadnemu zariadeniu</string>
<string name="foreground_notification_devices">Pripojené k: %s</string>
<string name="pref_plugin_telephony">Telefónny notifikátor</string>
<string name="pref_plugin_telephony_desc">Poslať oznámenia pre prichádzajúce hovory</string>
<string name="pref_plugin_battery">Oznam o batérii</string>
<string name="pref_plugin_battery_desc">Periodicky oznamovať stav batérie</string>
<string name="pref_plugin_sftp">Odhaliť súborový systém</string>
@@ -9,10 +13,15 @@
<string name="pref_plugin_clipboard_desc">Zdieľať obsah schránky</string>
<string name="pref_plugin_mousepad">Vzdialený vstup</string>
<string name="pref_plugin_mousepad_desc">Použiť váš telefón alebo tablet ako touchpad a klávesnicu</string>
<string name="pref_plugin_presenter_desc">Používajte vaše zariadenie na posúvanie stránok prezentácie</string>
<string name="pref_plugin_remotekeyboard">Prijímať vzdialené stlačenia klávesov</string>
<string name="pref_plugin_remotekeyboard_desc">Prjímať udalosti stlačenia kláves z diaľkových zariadení</string>
<string name="pref_plugin_mpris">Multimediálne ovládače</string>
<string name="pref_plugin_mpris_desc">Poskytuje vzdialené ovládanie pre váš prehrávač médií</string>
<string name="pref_plugin_runcommand">Spustiť príkaz</string>
<string name="pref_plugin_runcommand_desc">Vyvolať vzdialené príkazy z vášho mobilu alebo tabletu</string>
<string name="pref_plugin_contacts">Synchronizér kontaktov</string>
<string name="pref_plugin_contacts_desc">Povoliť synchronizáciu kontaktov zo zariadenia</string>
<string name="pref_plugin_ping">Ping</string>
<string name="pref_plugin_ping_desc">Poslať a prijať pingy</string>
<string name="pref_plugin_notifications">Synchronizácia pripomienok</string>
@@ -27,12 +36,19 @@
<string name="cancel">Zrušiť</string>
<string name="open_settings">Otvoriť nastavenia</string>
<string name="no_permissions">Musíte povoliť oprávnenia na prístup k pripomienkam</string>
<string name="no_permission_mprisreceiver">Aby ste mohli ovládať prehrávače médií musíte udeliť oprávnenie pristupovať k oznámeniam.</string>
<string name="send_ping">Poslať ping</string>
<string name="open_mpris_controls">Multimediálny ovládač</string>
<string name="remotekeyboard_editing_only_title">Spracovať vzdialené klávesy iba počas upravovania</string>
<string name="remotekeyboard_not_connected">Nie je dostupné žiadne aktívne pripojenie ku klávesnici, nastavte ho v kdeconnect</string>
<string name="remotekeyboard_connected">Pripojenie ku vzdialenej klávesnici je aktívne</string>
<string name="remotekeyboard_multiple_connections">Je dostupných viac vzdialených klávesníc, vyberte jednu na nastavenie</string>
<string name="open_mousepad">Vzdialený vstup</string>
<string name="mousepad_info">Posúvajte prst na obrazovke na posun kurzora. Ťuknutie vyvolá klik a použite dva/tri prsty pre pravé a stredné tlačidlo. Použite dva prsty na posúvanie. Použite dlhé stlačenie pre drag and drop.</string>
<string name="mousepad_double_tap_settings_title">Nastaviť akciu dvoch prstov</string>
<string name="mousepad_triple_tap_settings_title">Nastaviť akciu troch prstov</string>
<string name="mousepad_sensitivity_settings_title">Nastaviť citlivosť touchpadu</string>
<string name="mousepad_acceleration_profile_settings_title">Nastaviť zrýchlenie ukazovateľa</string>
<string name="mousepad_scroll_direction_title">Obrátený smer rolovania</string>
<string-array name="mousepad_tap_entries">
<item>Kliknutie pravým tlačidlom</item>
@@ -47,17 +63,16 @@
<item>Najrýchlejšie</item>
</string-array>
<string-array name="mousepad_acceleration_profile_entries">
<item>No Acceleration</item>
<item>Weakest</item>
<item>Weaker</item>
<item>Medium</item>
<item>Stronger</item>
<item>Strongest</item>
<item>Žiadne zrýchlenie</item>
<item>Najslabšie</item>
<item>Slabé</item>
<item>Stredné</item>
<item>Silnejšie</item>
<item>Najsilnejšie</item>
</string-array>
<string name="category_connected_devices">Pripojené zariadenia</string>
<string name="category_not_paired_devices">Dostupné zariadenia</string>
<string name="category_remembered_devices">Zapamätané zariadenia</string>
<string name="plugins_failed_to_load">Zlyhalo načítanie pluginov (tapnite pre viac info):</string>
<string name="device_menu_plugins">Nastavenia pluginu</string>
<string name="device_menu_unpair">Odpárovať</string>
<string name="device_not_reachable">Spárované zariadenie nedostupné</string>
@@ -79,14 +94,43 @@
<string name="pairing_request_from">Požiadavka na spárovanie od %1s</string>
<string name="received_url_title">Prijatý odkaz od %1s</string>
<string name="received_url_text">Ťuknite na otvorenie \'%1s\'</string>
<string name="incoming_file_title">Prichádzajúci súbor od %s</string>
<string name="incoming_file_text">%1s</string>
<plurals name="incoming_file_title">
<item quantity="one">Prijímam %1$d súbor z %2$s</item>
<item quantity="few">Prijímam %1$d súbory z %2$s</item>
<item quantity="many">Prijímam %1$d súborov z %2$s</item>
<item quantity="other"/>
</plurals>
<plurals name="incoming_files_text">
<item quantity="one">Súbor: %1s</item>
<item quantity="few">(Súbor %2$d z %3$d) : %1$s</item>
<item quantity="many">(Súbor %2$d z %3$d) : %1$s</item>
<item quantity="other"/>
</plurals>
<string name="outgoing_file_title">Posielam súbor pre %1s</string>
<string name="received_file_title">Prijatý súbor od %1s</string>
<string name="received_file_fail_title">Zlyhalo prijatie súboru od %1s</string>
<string name="outgoing_files_title">Posielam súbor do %1s</string>
<plurals name="outgoing_files_text">
<item quantity="one">Odoslaný %1$d súbor</item>
<item quantity="few">Odoslané súbory %1$d z %2$d</item>
<item quantity="many">Odoslaných súborov %1$d z %2$d</item>
<item quantity="other"/>
</plurals>
<plurals name="received_files_title">
<item quantity="one">Prijatý súbor od %1$s</item>
<item quantity="few">Prijaté %2$d súbory od %1$s</item>
<item quantity="many">Prijatých %2$d súborov od %1$s</item>
<item quantity="other"/>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="one">Zlyhalo prijatie súboru od %1$s</item>
<item quantity="few">Zlyhalo prijatie %2$d z %3$d súborov od %1$s</item>
<item quantity="many">Zlyhalo prijatie %2$d z %3$d súborov od %1$s</item>
<item quantity="other"/>
</plurals>
<string name="received_file_text">Ťuknite na otvorenie \'%1s\'</string>
<string name="cannot_create_file">Nomožno vytvoriť súbor %s</string>
<string name="sent_file_title">Poslať súbor pre %1s</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">Zlyhalo poslanie súboru do %1s</string>
<string name="sent_file_failed_text">%1s</string>
<string name="tap_to_answer">Tapnite na odpoveď</string>
<string name="reconnect">Znovu pripojiť</string>
@@ -99,8 +143,9 @@
<string name="pairing_reject">Odmietnuť</string>
<string name="device">Zariadenie</string>
<string name="pair_device">Spárovať zariadenie</string>
<string name="remote_control">Diaľkové ovládanie</string>
<string name="settings">Nastavenia</string>
<string name="mpris_play">Prehrať</string>
<string name="mpris_pause">Pozastaviť</string>
<string name="mpris_previous">Predošlé</string>
<string name="mpris_rew">Pretočiť dozadu</string>
<string name="mpris_ff">Pretočiť dopredu</string>
@@ -108,6 +153,7 @@
<string name="mpris_volume">Hlasitosť</string>
<string name="mpris_settings">Multimediálne nastavenia</string>
<string name="mpris_time_settings_title">Tlačidlá dopredu/pretočiť</string>
<string name="mpris_time_settings_summary">Prispôsobiť čas na pretáčanie dopredu alebo dozadu pri stlačení</string>
<string-array name="mpris_time_entries">
<item>10 sekúnd</item>
<item>20 sekúnd</item>
@@ -115,6 +161,9 @@
<item>1 minúta</item>
<item>2 minúty</item>
</string-array>
<string name="mpris_notification_settings_title">Zobraziť oznámenie ovládania médií</string>
<string name="mpris_notification_settings_summary">Povoliť ovládanie vaších prehrávačov médií bez otvárania KDE Connect</string>
<string name="share_to">Zdieľať do...</string>
<string name="protocol_version_older">Toto zariadenie používa starú verziu protokolu</string>
<string name="protocol_version_newer">Toto zariadenie používa novšiu verziu protokolu</string>
<string name="general_settings">Všeobecné nastavenia</string>
@@ -128,20 +177,24 @@
<string name="pair_device_action">Spárovať nové zariadenie</string>
<string name="unpair_device_action">Odpárovať %s</string>
<string name="custom_device_list">Pridať zariadenia podľa IP</string>
<string name="delete_custom_device">Vymazať %s?</string>
<string name="share_notification_preference">Hlučné pripomienky</string>
<string name="share_notification_preference_summary">Vibrovať a prehrať zvuk pri prijatí súboru</string>
<string name="share_destination_customize">Prispôsobiť cieľový priečinok</string>
<string name="share_destination_customize_summary_disabled">Prijaté súbory sa objavia v priečinku Stiahnuté</string>
<string name="share_destination_customize_summary_enabled">Súbory budú uložené v priečinku nižšie</string>
<string name="share_destination_folder_preference">Cieľový priečinok</string>
<string name="share">Zdieľať</string>
<string name="share_received_file">Zdiaľať \"%s\"</string>
<string name="title_activity_notification_filter">Filter upozornení</string>
<string name="filter_apps_info">Upozornenia budú synchronizované pre vybrané aplikácie.</string>
<string name="sftp_internal_storage">Interné úložisko</string>
<string name="sftp_all_files">Všetky súbory</string>
<string name="sftp_sdcard_num">SD karta %d</string>
<string name="sftp_sdcard">SD karta</string>
<string name="sftp_readonly">(iba na čítanie)</string>
<string name="sftp_camera">Obrázky fotoaparátu</string>
<string name="add_host">Pridať hostiteľa/IP</string>
<string name="add_host_hint">Názov hostiteľa alebo IP</string>
<string name="no_players_connected">Nenašli sa žiadne prehrávače</string>
<string name="custom_dev_list_help">Túto voľbu použite iba vtedy, ak vaše zariadenie nie je automaticky detekované. Zadajte IP adresu alebo názov hostiteľa nižšie a kliknite na tlačidlo na pridanie do zoznamu. Kliknite na existujúcu položku na odstránenie jej zo zoznamu.</string>
<string name="mpris_player_on_device">%1$s na %2$s</string>
<string name="send_files">Odoslať súbory</string>
<string name="pairing_title">KDE Connect zariadenia</string>
@@ -151,14 +204,74 @@
<string name="device_rename_confirm">Premenovať</string>
<string name="refresh">Obnoviť</string>
<string name="unreachable_description">Toto spárované zariadenie nie je dosiahnuteľné. Prosím, uistite sa, že je pripojené do rovnakej siete.</string>
<string name="on_data_message">Vyzerá to tak že ste na mobilnom dátovom pripojení. KDE Connect funguje iba na lokálnych sieťach.</string>
<string name="no_file_browser">Nie sú nainštalované žiadne prehliadače.</string>
<string name="pref_plugin_telepathy">Poslať SMS</string>
<string name="pref_plugin_telepathy_desc">Posielať textové správy z vášho počítača</string>
<string name="plugin_not_supported">Tento plugin nie je podporovaný zariadením</string>
<string name="findmyphone_title">Nájsť môj telefón</string>
<string name="findmyphone_title_tablet">Nájsť môj tablet</string>
<string name="findmyphone_title_tv">Nájsť môj TV</string>
<string name="findmyphone_description">Prezvoní vaše zariadenie, aby ste ho našli</string>
<string name="findmyphone_found">Nájdené</string>
<string name="open">Otvoriť</string>
<string name="close">Zavrieť</string>
<string name="no_permissions_storage">Musíte povoliť oprávnenia na prístup k úložisku</string>
<string name="plugins_need_permission">Niektoré Pluginy potrebujú oprávnenia aby fungovali (ťuknite pre viac info):</string>
<string name="permission_explanation">Tento plugin potrebuje oprávnenia aby fungoval</string>
<string name="optional_permission_explanation">Musíte povoliť oprávnenia na povolenie všetkých funkcií</string>
<string name="plugins_need_optional_permission">Niektoré pluginy majú zakázané funkcie pre nedostatok opránení (ťuknite pre viac info):</string>
<string name="share_optional_permission_explanation">Na zdieľanie súborov medzi vašim telefónom a počítačom potrebujete dať prístup k úložisku telefónu</string>
<string name="telepathy_permission_explanation">Na čítanie a písanie SMS z vašeho počítača, potrebujete dať oprávnienie na SMS</string>
<string name="telephony_permission_explanation">Aby ste videli telefónne hovory a SMS z počítača, potrebujete dať oprávnenie na hovory a SMS</string>
<string name="telephony_optional_permission_explanation">Aby ste videli meno kontaktu namiesto čísla, potrebujete dať oprávnenie na telefónne kontakty</string>
<string name="contacts_permission_explanation">Na zdieľanie kontaktov s počítačom, potrebujete dať oprávnenie na kontakty</string>
<string name="select_ringtone">Nastaviť tón zvonenia</string>
<string name="telephony_pref_blocked_title">Blokované čísla</string>
<string name="telephony_pref_blocked_dialog_desc">Nezobrazovať hovory a SMS z týchto čísel. Prosím upresnite jedno číslo na riadok</string>
<string name="mpris_coverart_description">Obal aktuáneho média</string>
<string name="device_icon_description">Ikona zariadenia</string>
<string name="settings_icon_description">Ikona Nastavení</string>
<string name="presenter_fullscreen">Celá obrazovka</string>
<string name="presenter_exit">Ukončiť prezentáciu</string>
<string name="add_command">Pridať príkaz</string>
<string name="addcommand_explanation">Nie sú registrované žiadne príkazy</string>
<string name="addcommand_explanation2">Môžete pridať nové príkazy v KDE Connect systémových nastaveniach</string>
<string name="add_command_description">Môžete pridať príkazy na počítači</string>
<string name="pref_plugin_mprisreceiver">Multimediálny ovládač</string>
<string name="pref_plugin_mprisreceiver_desc">Ovládajte mediálne prehrávače vášho telefónu z iného zariadenia</string>
<string name="dark_theme">Tmavá téma</string>
<string name="notification_channel_default">Ostatné upozornenia</string>
<string name="notification_channel_persistent">Trvalý indikátor</string>
<string name="notification_channel_media_control">Multimediálny ovládač</string>
<string name="notification_channel_filetransfer">Prenos súborov</string>
<string name="mpris_stop">Zastaviť aktuálny prehrávač</string>
<string name="copy_url_to_clipboard">Kopírovať adresu do schránky</string>
<string name="clipboard_toast">Uložené do schránky</string>
<string name="runcommand_notreachable">Zariadenie nedostupné</string>
<string name="runcommand_notpaired">Zariadenie nespárované</string>
<string name="runcommand_nosuchdevice">Zadané zariadenie neexistuje</string>
<string name="runcommand_noruncommandplugin">Toto zariadenie nemá povolený plugin na Spustenie príkazu</string>
<string name="pref_plugin_findremotedevice">Nájsť vzdialené zariadenie</string>
<string name="pref_plugin_findremotedevice_desc">Zazvoniť na vzdialenom zariadení</string>
<string name="ring">Zazvoniť</string>
<string name="pref_plugin_systemvolume">Systémová hlasitosť</string>
<string name="pref_plugin_systemvolume_desc">Ovládať systémovú hlasitosť vzdialeného zariadenia</string>
<string name="mute">Stlmiť</string>
<string name="all">Všetko</string>
<string name="devices">Zariadenia</string>
<string name="settings_rename">Názov zariadenia</string>
<string name="settings_dark_mode">Tmavá téma</string>
<string name="settings_more_settings_title">Viac nastavení</string>
<string name="settings_more_settings_text">Nstavenia pre konkrétne zariadenia sú dostupné v \"Nastaveniach pluginu\" na zariadení.</string>
<string name="setting_persistent_notification">Zobrazovať trvalé oznámenie</string>
<string name="setting_persistent_notification_oreo">Trvalé oznámenie</string>
<string name="setting_persistent_notification_description">Ťuknite na zapnutie/vypnutie v Nastaveniach oznámení</string>
<string name="extra_options">Ďalšie možnosti</string>
<string name="privacy_options">Možnosti súkromia</string>
<string name="set_privacy_options">Nastavte vaše súkromie</string>
<string name="new_notification">Nové oznámenie</string>
<string name="block_contents">Blokovať obsah oznámení</string>
<string name="block_images">Blokovať obrázky v oznámeniach</string>
<string name="notification_channel_receivenotification">Oznámenia iných zariadení</string>
</resources>

View File

@@ -85,12 +85,8 @@
<string name="pairing_request_from">Захтев за упаривање са %1s</string>
<string name="received_url_title">Примљена веза са %1s</string>
<string name="received_url_text">Тапните да отворите „%1s“</string>
<string name="incoming_file_title">Долазни фајл са %1s</string>
<string name="incoming_file_text">%1s</string>
<string name="outgoing_file_title">Шаљем фајл на %1s</string>
<string name="outgoing_files_title">Шаљем фајлове на %1s</string>
<string name="received_file_title">Примљен фајл са %1s</string>
<string name="received_file_fail_title">Неуспео пријем фајла са %1s</string>
<string name="received_file_text">Тапните да отворите „%1s“</string>
<string name="sent_file_title">Послат фајл на %1s</string>
<string name="sent_file_text">%1s</string>
@@ -107,7 +103,6 @@
<string name="pairing_reject">Одбаци</string>
<string name="device">Уређај</string>
<string name="pair_device">Упари уређај</string>
<string name="remote_control">Даљинско управљање</string>
<string name="mpris_play">Пусти</string>
<string name="mpris_previous">Претходно</string>
<string name="mpris_rew">Премотај</string>

View File

@@ -13,7 +13,7 @@
<string name="pref_plugin_clipboard_desc">Dela klippbordets innehåll</string>
<string name="pref_plugin_mousepad">Extern inmatning</string>
<string name="pref_plugin_mousepad_desc">Använd telefonen eller surfplattan som mus och tangentbord</string>
<string name="pref_plugin_presenter">Fjärrkontroll för presentation</string>
<string name="pref_plugin_presenter">Fjärrbildspel</string>
<string name="pref_plugin_presenter_desc">Använd apparaten för att byta bilder i en presentation</string>
<string name="pref_plugin_remotekeyboard">Ta emot externa tangentnedtryckningar</string>
<string name="pref_plugin_remotekeyboard_desc">Ta emot tangentnedtryckningar från externa apparater</string>
@@ -38,6 +38,7 @@
<string name="open_settings">Öppna inställningarna</string>
<string name="no_permissions">Du måste ge rättighet att komma åt underrättelser</string>
<string name="no_permission_mprisreceiver">För att kunna styra mediaspelare måste du ge tillgång till underrättelser</string>
<string name="no_permissions_remotekeyboard">KDE-ansluts fjärrtangentbord måste aktiveras för att ta emot tangentnedtryckningar</string>
<string name="send_ping">Skicka ping</string>
<string name="open_mpris_controls">Kontroll av multimedia</string>
<string name="remotekeyboard_editing_only_title">Hantera bara externa tangenter vid redigering</string>
@@ -74,7 +75,6 @@
<string name="category_connected_devices">Anslutna apparater</string>
<string name="category_not_paired_devices">Tillgängliga apparater</string>
<string name="category_remembered_devices">Ihågkomna apparater</string>
<string name="plugins_failed_to_load">Misslyckades ladda insticksprogram (rör för mer information):</string>
<string name="device_menu_plugins">Inställningar av insticksprogram</string>
<string name="device_menu_unpair">Ta bort ihopparning</string>
<string name="device_not_reachable">Ihopparad apparat kan inte nås</string>
@@ -96,17 +96,30 @@
<string name="pairing_request_from">Begäran om ihopparning från %1s</string>
<string name="received_url_title">Tog emot länk från %1s</string>
<string name="received_url_text">Rör för att öppna \'%1s\'</string>
<string name="incoming_file_title">Inkommande fil från %1s</string>
<string name="incoming_file_text">%1s</string>
<plurals name="incoming_file_title">
<item quantity="one">Tog emot %1$d fil från %2$s</item>
<item quantity="other">Tog emot %1$d filer från %2$s</item>
</plurals>
<plurals name="incoming_files_text">
<item quantity="one">Fil: %1s</item>
<item quantity="other">(Fil %2$d av %3$d) : %1$s</item>
</plurals>
<string name="outgoing_file_title">Skickar fil till %1s</string>
<string name="outgoing_files_title">Skickar filer till %1s</string>
<plurals name="outgoing_files_text">
<item quantity="one">Skickade %1$d fil</item>
<item quantity="other">Skickade %1$d av %2$d filer</item>
</plurals>
<string name="received_file_title">Tog emot fil från %1s</string>
<string name="received_file_fail_title">Misslyckades ta emot fil från %1s</string>
<plurals name="received_files_title">
<item quantity="one">Tog emot fil från %1$s</item>
<item quantity="other">Tog emot %2$d filer från %1$s</item>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="one">Misslyckades ta emot fil från %1$s</item>
<item quantity="other">Misslyckades ta emot %2$d av %3$d filer från %1$s</item>
</plurals>
<string name="received_file_text">Rör för att öppna \'%1s\'</string>
<string name="cannot_create_file">Kan inte skapa filen %s</string>
<string name="sent_file_title">Skickade fil till %1s</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">Misslyckades skicka fil till %1s</string>
@@ -122,7 +135,6 @@
<string name="pairing_reject">Avslå</string>
<string name="device">Apparat</string>
<string name="pair_device">Para ihop apparat</string>
<string name="remote_control">Fjärrkontroll</string>
<string name="settings">Inställningar</string>
<string name="mpris_play">Spela</string>
<string name="mpris_pause">Paus</string>
@@ -158,6 +170,10 @@
<string name="unpair_device_action">Ta bort ihopparning %s</string>
<string name="custom_device_list">Lägg till apparater enligt IP-adress</string>
<string name="delete_custom_device">Ta bort %s?</string>
<string name="custom_device_deleted">Egen apparat borttagen</string>
<string name="custom_device_list_help">Om apparaten inte detekteras automatiskt kan dess IP-adress eller värddatornamn läggas till genom att klicka på den lösa åtgärdsknappen.</string>
<string name="custom_device_fab_hint">Lägg till en apparat</string>
<string name="undo">Ångra</string>
<string name="share_notification_preference">Ljudliga underrättelser</string>
<string name="share_notification_preference_summary">Vibrera och spela ett ljud när en fil tas emot</string>
<string name="share_destination_customize">Anpassa målkatalog</string>
@@ -169,15 +185,33 @@
<string name="title_activity_notification_filter">Underrättelsefilter</string>
<string name="filter_apps_info">Underrättelser synkroniseras för markerade applikationer.</string>
<string name="sftp_internal_storage">Intern lagring</string>
<string name="sftp_all_files">Alla filer</string>
<string name="sftp_sdcard_num">SD-kort %d</string>
<string name="sftp_sdcard">SD-kort</string>
<string name="sftp_readonly">(skrivskyddat)</string>
<string name="sftp_camera">Kamerabilder</string>
<string name="add_device_dialog_title">Lägg till apparat</string>
<string name="add_device_hint">Värddatornamn eller IP-adress</string>
<string name="sftp_preference_detected_sdcards">Detekterade SD-kort</string>
<string name="sftp_preference_edit_sdcard_title">Redigera SD-kort</string>
<string name="sftp_preference_configured_storage_locations">Anpassa lagringsplatser</string>
<string name="sftp_preference_add_storage_location_title">Lägg till lagringsplats</string>
<string name="sftp_preference_edit_storage_location">Redigera lagringsplats</string>
<string name="sftp_preference_add_camera_shortcut">Lägg till genväg till kamerakatalog</string>
<string name="sftp_preference_add_camera_shortcut_summary_on">Lägg till en genväg till kamerakatalogen</string>
<string name="sftp_preference_add_camera_shortcut_summary_off">Lägg inte till en genväg till kamerakatalogen</string>
<string name="sftp_storage_preference_storage_location">Lagringsplats</string>
<string name="sftp_storage_preference_storage_location_already_configured">Platsen har redan ställts in</string>
<string name="sftp_storage_preference_click_to_select">klicka för att välja</string>
<string name="sftp_storage_preference_display_name">Namn att visa</string>
<string name="sftp_storage_preference_display_name_already_used">Namn att visa används redan</string>
<string name="sftp_storage_preference_display_name_cannot_be_empty">Namn att visa kan inte vara tomt</string>
<string name="sftp_action_mode_menu_delete">Ta bort</string>
<string name="sftp_no_sdcard_detected">Inga SD-kort detekterades</string>
<string name="sftp_no_storage_locations_configured">Inga lagringsplatser inställda</string>
<string name="sftp_saf_permission_explanation">För att komma åt filer från en annan apparat måste lagringsplatser ställas in</string>
<string name="add_host">Lägg till värddator/IP-adress</string>
<string name="add_host_hint">Värddatornamn eller IP-adress</string>
<string name="add_host_hint">Värddatornamn eller IP</string>
<string name="no_players_connected">Inga spelare hittades</string>
<string name="custom_dev_list_help">Använd bara alternativet om apparaten inte detekteras automatiskt. Skriv in IP-adress eller värddatornamn nedan och rör vid knappen för att lägga till den i listan. Rör vid ett befintligt objekt för att ta bort det från listan.</string>
<string name="mpris_player_on_device">%1$s på %2$s</string>
<string name="send_files">Skicka filer</string>
<string name="pairing_title">KDE-anslut apparater</string>
@@ -204,7 +238,6 @@
<string name="permission_explanation">Insticksprogrammet behöver rättigheter för att fungera</string>
<string name="optional_permission_explanation">Du måste ge extra rättigheter för att aktivera alla funktioner</string>
<string name="plugins_need_optional_permission">Vissa insticksprogram har inaktiverade funktioner på grund av att rättigheter saknas (rör för mer information):</string>
<string name="sftp_permission_explanation">För att komma åt filerna från din dator behöver applikationen rättighet att komma åt telefonens lagringsutrymme</string>
<string name="share_optional_permission_explanation">För att dela filer mellan telefonen och skrivbordet behöver du ge tillgång till telefonens lagringsutrymme</string>
<string name="telepathy_permission_explanation">För att läsa och skriva SMS från skrivbordet måste du ge rättigheter för SMS</string>
<string name="telephony_permission_explanation">För att se telefonsamtal och SMS från skrivbordet måste du ge rättigheter för telefonsamtal och SMS</string>
@@ -218,7 +251,7 @@
<string name="settings_icon_description">Inställningsikon</string>
<string name="presenter_fullscreen">Fullskärm</string>
<string name="presenter_exit">Avsluta presentation</string>
<string name="presenter_lock_tip">Apparaten kan låsas för att använda volymtangenterna som knappar för föregående och nästa.</string>
<string name="presenter_lock_tip">Apparaten kan låsas och volymtangenterna användas för att gå till föregående eller nästa bild</string>
<string name="add_command">Lägg till ett kommando</string>
<string name="addcommand_explanation">Det finns inga kommandon registrerade</string>
<string name="addcommand_explanation2">Du kan lägga till nya kommandon i KDE-ansluts systeminställningar</string>
@@ -250,6 +283,15 @@
<string name="settings_more_settings_title">Fler inställningar</string>
<string name="settings_more_settings_text">Inställningar per apparat hittas i \'Insticksprograminställningar\' på apparaten.</string>
<string name="setting_persistent_notification">Visa permanent underrättelse</string>
<string name="setting_persistent_notification_oreo_description">Krävs av Android sedan Android 8.0</string>
<string name="setting_persistent_notification_pie_description">Sedan Android 9.0, kan underrättelsen bara minimeras genom att röra vid den länge</string>
<string name="setting_persistent_notification_oreo">Permanent underrättelse</string>
<string name="setting_persistent_notification_description">Tryck för att aktivera eller inaktivera i underrättelseinställningarna</string>
<string name="extra_options">Extra alternativ</string>
<string name="privacy_options">Integritetsalternativ</string>
<string name="set_privacy_options">Ställ in integritetsalternativ</string>
<string name="new_notification">Ny underrättelse</string>
<string name="block_contents">Blockera underrättelsernas innehåll</string>
<string name="block_images">Blockera bilder i underrättelser</string>
<string name="notification_channel_receivenotification">Underrättelser från andra apparater</string>
<string name="take_picture">Starta kamera</string>
<string name="plugin_photo_desc">Starta kameraprogrammet för att förenkla att ta och överföra bilder</string>
</resources>

View File

@@ -63,7 +63,6 @@
<string name="category_connected_devices">Bağlı aygıtlar</string>
<string name="category_not_paired_devices">Kullanılabilir aygıtlar</string>
<string name="category_remembered_devices">Hatırlanan aygıtlar</string>
<string name="plugins_failed_to_load">Eklentiler yüklenemedi (daha fazla bilgi için dokunun):</string>
<string name="device_menu_plugins">Eklenti ayarları</string>
<string name="device_menu_unpair">Ayır</string>
<string name="device_not_reachable">Eşleşmiş aygıt ulaşılabilir değil</string>
@@ -85,12 +84,8 @@
<string name="pairing_request_from">%1s için eşleşme talebi</string>
<string name="received_url_title">%1s üzerinden bağlantı alındı</string>
<string name="received_url_text">\'%1s\' açmak için dokunun</string>
<string name="incoming_file_title">%1s üzerinden gelen dosya</string>
<string name="incoming_file_text">%1s</string>
<string name="outgoing_file_title">Dosya şuraya gönderiliyor, %1s</string>
<string name="outgoing_files_title">Dosyalar şuraya gönderiliyor, %1s</string>
<string name="received_file_title">Şuradan dosya alındı, %1s</string>
<string name="received_file_fail_title">Şuradan dosya alma başarısız, %1s</string>
<string name="received_file_text">\'%1s\' açmak için dokunun</string>
<string name="sent_file_title">Dosyayı şuraya gönder, %1s</string>
<string name="sent_file_text">%1s</string>
@@ -107,7 +102,6 @@
<string name="pairing_reject">Reddet</string>
<string name="device">Aygıt</string>
<string name="pair_device">Aygıt eşleştir</string>
<string name="remote_control">Uzak denetim</string>
<string name="mpris_play">Oynat</string>
<string name="mpris_previous">Önceki</string>
<string name="mpris_rew">Geri Sar</string>
@@ -145,15 +139,12 @@
<string name="title_activity_notification_filter">Bildirim süzgeci</string>
<string name="filter_apps_info">Bildirimler, seçili uygulamalar için eşitlenecektir.</string>
<string name="sftp_internal_storage">Harici depolama</string>
<string name="sftp_all_files">Tüm dosyalar</string>
<string name="sftp_sdcard_num">SD kart %d</string>
<string name="sftp_sdcard">SD kart</string>
<string name="sftp_readonly">(salt okunur)</string>
<string name="sftp_camera">Kamera resimleri</string>
<string name="add_host">Makine/IP ekle</string>
<string name="add_host_hint">Makine adı veya IP</string>
<string name="no_players_connected">Onatıcı bulunamadı</string>
<string name="custom_dev_list_help">Bu seçeneği, sadece aygıtınız otomatik bulunamadıysa kullanın. Aşağıya IP adresini veya makine adının girin ve listeye eklemek için düğmeye dokunun. Listeden bir ögeyi silmek için, mevcut ögeye tıklayın.</string>
<string name="mpris_player_on_device">%2$s üzerindeki %1$s</string>
<string name="send_files">Dosyaları gönder</string>
<string name="pairing_title">KDE Connect Aygıtları</string>
@@ -179,7 +170,6 @@
<string name="permission_explanation">Bu eklenti, çalışmak için izne ihtiyaç duyuyor</string>
<string name="optional_permission_explanation">Tüm işlevleri etkinleştirmek için daha fazla yetkiye ihtiyacınız var</string>
<string name="plugins_need_optional_permission">Bazı eklentilerin özellikleri, izin yetersizliğinden kapalı gelmektedir (daha fazla bilgi için dokunun):</string>
<string name="sftp_permission_explanation">Bilgisayarınızdaki dosyalara erişmek için, uygulama telefonunuzun depolama alanına erişim izni olmalıdır</string>
<string name="share_optional_permission_explanation">Telefon ve masaüstünüz arasında dosya paylaşılabilmesi için, telefonun depolama alanına erişim izni olmalıdır</string>
<string name="telepathy_permission_explanation">Masaüstünde SMS yazma ve okuma yapmak için SMS izni gereklidir</string>
<string name="telephony_permission_explanation">Masaüstünden telefon çağrılarını ve SMS görebilmek için izin gereklidir</string>

View File

@@ -13,7 +13,7 @@
<string name="pref_plugin_clipboard_desc">Спільне використання буфера обміну даними</string>
<string name="pref_plugin_mousepad">Дистанційне введення</string>
<string name="pref_plugin_mousepad_desc">Скористайтеся телефоном або планшетом як замінником сенсорної панелі і клавіатури</string>
<string name="pref_plugin_presenter">Керування презентацією</string>
<string name="pref_plugin_presenter">Віддалений показ слайдів</string>
<string name="pref_plugin_presenter_desc">Скористайтеся вашим пристроєм для того, щоб змінювати слайди у презентації</string>
<string name="pref_plugin_remotekeyboard">Отримувати віддалені натискання клавіш</string>
<string name="pref_plugin_remotekeyboard_desc">Отримувати події натискання клавіш з віддаленого пристрою</string>
@@ -38,6 +38,7 @@
<string name="open_settings">Відкрити вікно параметрів</string>
<string name="no_permissions">Вам слід надати доступ до сповіщень</string>
<string name="no_permission_mprisreceiver">Щоб мати змогу керувати вашими програвачами мультимедійних даних, вам слід надати доступ до сповіщень.</string>
<string name="no_permissions_remotekeyboard">Щоб отримувати повідомлення щодо натискання клавіш, вам слід активувати віддалену клавіатуру KDE Connect</string>
<string name="send_ping">Надіслати сигнал підтримання зв’язку</string>
<string name="open_mpris_controls">Керування відтворенням</string>
<string name="remotekeyboard_editing_only_title">Обробляти віддалені клавіші лише під час редагування</string>
@@ -74,7 +75,6 @@
<string name="category_connected_devices">З’єднані пристрої</string>
<string name="category_not_paired_devices">Доступні пристрої</string>
<string name="category_remembered_devices">Відомі пристрої</string>
<string name="plugins_failed_to_load">Додатки, які не вдалося завантажити (натисніть, щоб дізнатися більше):</string>
<string name="device_menu_plugins">Параметри додатків</string>
<string name="device_menu_unpair">Скасувати пов’язування</string>
<string name="device_not_reachable">Немає доступу до пов’язаного пристрою</string>
@@ -96,8 +96,18 @@
<string name="pairing_request_from">Запит щодо пов’язування від %1s</string>
<string name="received_url_title">Отримано посилання від %1s</string>
<string name="received_url_text">Натисніть, щоб відкрити «%1s»</string>
<string name="incoming_file_title">Вхідний файл з %1s</string>
<string name="incoming_file_text">%1s</string>
<plurals name="incoming_file_title">
<item quantity="one">Отримуємо %1$d файл з %2$s</item>
<item quantity="few">Отримуємо %1$d файли з %2$s</item>
<item quantity="many">Отримуємо %1$d файлів з %2$s</item>
<item quantity="other">Отримуємо %1$d файл з %2$s</item>
</plurals>
<plurals name="incoming_files_text">
<item quantity="one">(Файл %2$d з %3$d): %1$s</item>
<item quantity="few">(Файл %2$d з %3$d): %1$s</item>
<item quantity="many">(Файл %2$d з %3$d): %1$s</item>
<item quantity="other">Файл: %1$s</item>
</plurals>
<string name="outgoing_file_title">Надсилаємо файл до %1s</string>
<string name="outgoing_files_title">Надсилаємо файли на %1s</string>
<plurals name="outgoing_files_text">
@@ -106,9 +116,20 @@
<item quantity="many">Надіслано %1$d з %2$d файлів</item>
<item quantity="other">Надіслано %1$d файл</item>
</plurals>
<string name="received_file_title">Отримано файл з %1s</string>
<string name="received_file_fail_title">Не вдалося отримати файл з %1s</string>
<plurals name="received_files_title">
<item quantity="one">Отримано %2$d файл з %1$s</item>
<item quantity="few">Отримано %2$d файли з %1$s</item>
<item quantity="many">Отримано %2$d файлів з %1$s</item>
<item quantity="other">Отримано один файл з %1$s</item>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="one">Не вдалося отримати %2$d з %3$d файла з %1$s</item>
<item quantity="few">Не вдалося отримати %2$d з %3$d файлів з %1$s</item>
<item quantity="many">Не вдалося отримати %2$d з %3$d файлів з %1$s</item>
<item quantity="other">Не вдалося отримати файл з %1$s</item>
</plurals>
<string name="received_file_text">Натисніть, щоб відкрити «%1s»</string>
<string name="cannot_create_file">Не вдалося створити файл %s</string>
<string name="sent_file_title">Файл надіслано до %1s</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">Не вдалося надіслати файл на %1s</string>
@@ -124,7 +145,6 @@
<string name="pairing_reject">Відмовити</string>
<string name="device">Пристрій</string>
<string name="pair_device">Пов’язати пристрій</string>
<string name="remote_control">Дистанційне керування</string>
<string name="settings">Параметри</string>
<string name="mpris_play">Пуск</string>
<string name="mpris_pause">Пауза</string>
@@ -160,6 +180,10 @@
<string name="unpair_device_action">Розірвати прив’язку %s</string>
<string name="custom_device_list">Додати пристрої за IP</string>
<string name="delete_custom_device">Вилучити %s?</string>
<string name="custom_device_deleted">Нетиповий пристрій вилучено</string>
<string name="custom_device_list_help">Якщо ваш пристрій не було виявлено автоматично, ви можете додати його IP-адресу або назву вузла, натиснувши рухому кнопку дій.</string>
<string name="custom_device_fab_hint">Додати пристрій</string>
<string name="undo">Скасувати</string>
<string name="share_notification_preference">Звукові сповіщення</string>
<string name="share_notification_preference_summary">Вібрація і відтворення звуку у відповідь на отримання файла</string>
<string name="share_destination_customize">Налаштування каталогу призначення</string>
@@ -171,15 +195,33 @@
<string name="title_activity_notification_filter">Фільтр сповіщень</string>
<string name="filter_apps_info">Сповіщення буде синхронізовано для позначених програм.</string>
<string name="sftp_internal_storage">Вбудоване сховище даних</string>
<string name="sftp_all_files">Усі файли</string>
<string name="sftp_sdcard_num">Картка SD %d</string>
<string name="sftp_sdcard">Картка SD</string>
<string name="sftp_readonly">(лише читання)</string>
<string name="sftp_camera">Знімки фотоапарата</string>
<string name="add_device_dialog_title">Додавання пристрою</string>
<string name="add_device_hint">Назва або IP-адреса вузла</string>
<string name="sftp_preference_detected_sdcards">Виявлені картки SD</string>
<string name="sftp_preference_edit_sdcard_title">Редагувати картку SD</string>
<string name="sftp_preference_configured_storage_locations">Налаштовані розташування сховищ</string>
<string name="sftp_preference_add_storage_location_title">Додати розташування сховища</string>
<string name="sftp_preference_edit_storage_location">Редагувати розташування сховища</string>
<string name="sftp_preference_add_camera_shortcut">Додати кнопку для теки камери</string>
<string name="sftp_preference_add_camera_shortcut_summary_on">Додати кнопку для теки камери</string>
<string name="sftp_preference_add_camera_shortcut_summary_off">Не додавати кнопку для теки камери</string>
<string name="sftp_storage_preference_storage_location">Розташування сховища</string>
<string name="sftp_storage_preference_storage_location_already_configured">Це розташування вже налаштовано</string>
<string name="sftp_storage_preference_click_to_select">клацання для позначення</string>
<string name="sftp_storage_preference_display_name">Назва дисплея</string>
<string name="sftp_storage_preference_display_name_already_used">Цю назву дисплея вже використано</string>
<string name="sftp_storage_preference_display_name_cannot_be_empty">Назва дисплея не може бути порожньою</string>
<string name="sftp_action_mode_menu_delete">Вилучити</string>
<string name="sftp_no_sdcard_detected">Не виявлено карток SD</string>
<string name="sftp_no_storage_locations_configured">Не налаштовано розташувань сховищ</string>
<string name="sftp_saf_permission_explanation">Щоб отримувати віддалений доступ до файлів, вам слід налаштувати розташування сховищ</string>
<string name="add_host">Додати вузол/IP</string>
<string name="add_host_hint">Назва або IP вузла</string>
<string name="add_host_hint">Назва або IP-адреса вузла</string>
<string name="no_players_connected">Не знайдено програвачів</string>
<string name="custom_dev_list_help">Цим пунктом слід користуватися, лише якщо ваш пристрій не було визначено у автоматичному режимі. Введіть IP-адресу або назву вузла нижче і натисніть кнопку, щоб додати пункт до списку. Натисніть наявний пункт, щоб вилучити його зі списку.</string>
<string name="mpris_player_on_device">%1$s на %2$s</string>
<string name="send_files">Надіслати файли</string>
<string name="pairing_title">Пристрої KDE Connect</string>
@@ -206,7 +248,6 @@
<string name="permission_explanation">Для роботи цього додатка потрібні додаткові права доступу</string>
<string name="optional_permission_explanation">Щоб уможливити використання усіх функцій, вам слід надати програмі додаткові права доступу</string>
<string name="plugins_need_optional_permission">Можливості деяких додатків вимкнено, оскільки програмі не вистачає прав доступу (натисніть, щоб дізнатися більше):</string>
<string name="sftp_permission_explanation">Для доступу до ваших файлі із персонального комп’ютера програмі потрібні права доступу до сховища даних вашого телефону</string>
<string name="share_optional_permission_explanation">Щоб спільного використовувати файли на вашому телефоні і робочому комп’ютері, вам слід надати програмі доступ до сховища даних вашого телефону</string>
<string name="telepathy_permission_explanation">Щоб читати і писати SMS з вашого робочого комп’ютера, вам слід надати програмі доступ до SMS</string>
<string name="telephony_permission_explanation">"Щоб переглядати дзвінки і SMS з робочого комп’ютера, вам слід надати програмі доступ до дзвінків і SMS"</string>
@@ -220,7 +261,7 @@
<string name="settings_icon_description">Піктограма параметрів</string>
<string name="presenter_fullscreen">На увесь екран</string>
<string name="presenter_exit">Вийти з презентації</string>
<string name="presenter_lock_tip">Ви можете заблокувати ваш пристрій так, щоб користуватися кнопками зміни гучності як кнопками «Назад»/«Далі»</string>
<string name="presenter_lock_tip">Ви можете заблокувати ваш пристрій так, щоб користуватися кнопками зміни гучності як кнопками зміни слайдів «Назад»/«Далі».</string>
<string name="add_command">Додати команду</string>
<string name="addcommand_explanation">Жодних команд не зареєстровано</string>
<string name="addcommand_explanation2">Ви можете додавати нові команди за допомогою Системних параметрів KDE Connect</string>
@@ -252,6 +293,15 @@
<string name="settings_more_settings_title">Додаткові параметри</string>
<string name="settings_more_settings_text">Окремі параметри пристроїв наведено на сторінці «Параметри додатків» сторінки пристрою.</string>
<string name="setting_persistent_notification">Показувати постійне сповіщення</string>
<string name="setting_persistent_notification_oreo_description">Є обов\'язковим для Android з версії Android 8.0</string>
<string name="setting_persistent_notification_pie_description">Починаючи з версії 9.0, це сповіщення можна мінімізувати лише довгим його натисканням</string>
<string name="setting_persistent_notification_oreo">Постійне сповіщення</string>
<string name="setting_persistent_notification_description">Торкніться, щоб увімкнути або вимкнути сповіщення</string>
<string name="extra_options">Додаткові параметри</string>
<string name="privacy_options">Параметри конфіденційності</string>
<string name="set_privacy_options">Вкажіть ваші параметри конфіденційності</string>
<string name="new_notification">Нове сповіщення</string>
<string name="block_contents">Блокувати вміст сповіщень</string>
<string name="block_images">Блокувати зображення у сповіщеннях</string>
<string name="notification_channel_receivenotification">Сповіщення з інших пристроїв</string>
<string name="take_picture">Запустити камеру</string>
<string name="plugin_photo_desc">Запустити додаток камери для спрощення знімання та передавання фотографій</string>
</resources>

View File

@@ -2,7 +2,7 @@
<resources>
<style name="KdeConnectTheme.NoActionBar" parent="KdeConnectThemeBase.NoActionBar">
<item name="android:windowTranslucentStatus">true</item>
<item name="android:statusBarColor">#65000000</item>
</style>
</resources>

View File

@@ -13,7 +13,6 @@
<string name="pref_plugin_clipboard_desc">共享剪贴板内容</string>
<string name="pref_plugin_mousepad">远程输入</string>
<string name="pref_plugin_mousepad_desc">将您的手机用或平板电脑用作触摸板和键盘</string>
<string name="pref_plugin_presenter">演示遥控器</string>
<string name="pref_plugin_presenter_desc">使用移动设备切换幻灯片</string>
<string name="pref_plugin_remotekeyboard">接收远程按键</string>
<string name="pref_plugin_remotekeyboard_desc">从远程设备接收按键事件</string>
@@ -74,7 +73,6 @@
<string name="category_connected_devices">已连接设备</string>
<string name="category_not_paired_devices">可用设备</string>
<string name="category_remembered_devices">已记住设备</string>
<string name="plugins_failed_to_load">插件载入失败 (按下以查看更多信息)</string>
<string name="device_menu_plugins">插件设置</string>
<string name="device_menu_unpair">取消配对</string>
<string name="device_not_reachable">配对设备不可及</string>
@@ -96,16 +94,25 @@
<string name="pairing_request_from">来自%1s的配对请求</string>
<string name="received_url_title">已从%1s接收链接</string>
<string name="received_url_text">点击以打开“%1s”</string>
<string name="incoming_file_title">来自%1s的文件</string>
<string name="incoming_file_text">%1s</string>
<plurals name="incoming_file_title">
<item quantity="other">正在从 %2$s 接收 %1$d 个文件</item>
</plurals>
<plurals name="incoming_files_text">
<item quantity="other">(%3$d 个文件中的第 %2$d 个)%1$s</item>
</plurals>
<string name="outgoing_file_title">正在向%1s发送文件</string>
<string name="outgoing_files_title">正在向 %1s 发送文件</string>
<plurals name="outgoing_files_text">
<item quantity="other">已发送 %2$d 个文件中的 %1$d 个</item>
</plurals>
<string name="received_file_title">已从%1s接收文件</string>
<string name="received_file_fail_title">未能从%1s接收文件</string>
<plurals name="received_files_title">
<item quantity="other">已从 %1$s 接收了 %2$d 个文件</item>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="other">从 %1$s 接收的 %3$d 个文件中的 %2$d 个失败</item>
</plurals>
<string name="received_file_text">点击以打开“%1s”</string>
<string name="cannot_create_file">无法创建文件 %s</string>
<string name="sent_file_title">发送文件到%1s</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">向 %1s 发送文件失败</string>
@@ -121,7 +128,6 @@
<string name="pairing_reject">拒绝</string>
<string name="device">设备</string>
<string name="pair_device">进行配对</string>
<string name="remote_control">远程控制</string>
<string name="settings">设置</string>
<string name="mpris_play">播放</string>
<string name="mpris_pause">Pause</string>
@@ -156,6 +162,7 @@
<string name="pair_device_action">配对新设备</string>
<string name="unpair_device_action">取消配对 %s</string>
<string name="custom_device_list">通过IP增加设备</string>
<string name="delete_custom_device">删除 %s 吗?</string>
<string name="share_notification_preference">出声通知</string>
<string name="share_notification_preference_summary">当收到文件时震动并播放声音</string>
<string name="share_destination_customize">配置目标目录</string>
@@ -167,15 +174,11 @@
<string name="title_activity_notification_filter">通知过滤器</string>
<string name="filter_apps_info">所选软件的通知将会被同步。</string>
<string name="sftp_internal_storage">内部存储</string>
<string name="sftp_all_files">所有文件</string>
<string name="sftp_sdcard_num">SD卡%d</string>
<string name="sftp_sdcard">SD卡</string>
<string name="sftp_readonly">(只读)</string>
<string name="sftp_camera">相机照片</string>
<string name="add_host">增加主机/IP</string>
<string name="add_host_hint">主机名或IP</string>
<string name="no_players_connected">未找到播放器</string>
<string name="custom_dev_list_help">仅当您的设备没有被自动检测出时再使用本选项。在下方输入IP地址或主机名然后点击按钮以添加其到列表中。点击已有条目来从列表中删除它。</string>
<string name="mpris_player_on_device">%2$s上的%1$s</string>
<string name="send_files">发送文件</string>
<string name="pairing_title">KDE Connect 设备</string>
@@ -202,7 +205,6 @@
<string name="permission_explanation">这个插件需要权限才能工作</string>
<string name="optional_permission_explanation">您需要授予额外权限以启用全部功能</string>
<string name="plugins_need_optional_permission">因缺少权限,某些插件的一些功能已禁用(点击以查看更多信息):</string>
<string name="sftp_permission_explanation">此应用需要手机存储权限才能从您的 PC 访问手机内的文件</string>
<string name="share_optional_permission_explanation">您需要给予访问手机存储的权限才能在手机和桌面计算机之间分享文件</string>
<string name="telepathy_permission_explanation">从计算机桌面读取、写入短消息需要向应用程序授予 SMS 权限</string>
<string name="telephony_permission_explanation">您必须给予访问手机通话和短信的权限才能从桌面计算机查看通话记录和短信</string>
@@ -248,6 +250,11 @@
<string name="settings_more_settings_title">更多设置</string>
<string name="settings_more_settings_text">每个设备的独立设置可以在设备页内的“插件设置”下找到。</string>
<string name="setting_persistent_notification">启用常驻通知栏</string>
<string name="setting_persistent_notification_oreo_description">Android 8.0 以及以上必须启用</string>
<string name="setting_persistent_notification_pie_description">Android 9.0 之后只能通过长按通知项最小化持久性通知</string>
<string name="extra_options">附加选项</string>
<string name="privacy_options">隐私选项</string>
<string name="set_privacy_options">设置您的隐私选项</string>
<string name="new_notification">新通知</string>
<string name="block_contents">阻止通知内容</string>
<string name="block_images">阻止通知图像</string>
<string name="notification_channel_receivenotification">来自其他设备的通知</string>
</resources>

View File

@@ -13,7 +13,7 @@
<string name="pref_plugin_clipboard_desc">分享剪貼板的內容</string>
<string name="pref_plugin_mousepad">遠端輸入</string>
<string name="pref_plugin_mousepad_desc">使用您的智慧型手機或者平板來模擬觸碰板與鍵盤</string>
<string name="pref_plugin_presenter">遠端簡報</string>
<string name="pref_plugin_presenter">遠端投影片</string>
<string name="pref_plugin_presenter_desc">使用您的裝置來切換簡報中的投影片</string>
<string name="pref_plugin_remotekeyboard">接收遠端按鍵輸入</string>
<string name="pref_plugin_remotekeyboard_desc">從遠端裝置接收按鍵輸入活動</string>
@@ -38,6 +38,7 @@
<string name="open_settings">開啟設定</string>
<string name="no_permissions">您需要授予存取通知的權限</string>
<string name="no_permission_mprisreceiver">為了要能控制您的媒體播放器,您需要提供「通知」的權限</string>
<string name="no_permissions_remotekeyboard">若要接收鍵盤按鍵事件,您需要啟用 KDE 連線遠端鍵盤功能</string>
<string name="send_ping">傳送Ping回應封包</string>
<string name="open_mpris_controls">多媒體控制</string>
<string name="remotekeyboard_editing_only_title">當編輯時只處理遠端按鍵</string>
@@ -74,7 +75,6 @@
<string name="category_connected_devices">已連接的設備</string>
<string name="category_not_paired_devices">可連接的設備</string>
<string name="category_remembered_devices">已記住的設備</string>
<string name="plugins_failed_to_load">擴展插件讀取錯誤(點擊查看更多資訊)</string>
<string name="device_menu_plugins">擴展插件設定</string>
<string name="device_menu_unpair">取消配對</string>
<string name="device_not_reachable">配對的設備無法連接</string>
@@ -96,16 +96,25 @@
<string name="pairing_request_from">從 %1s 來的配對請求</string>
<string name="received_url_title">已從 %1s 連線接收</string>
<string name="received_url_text">點擊開啟 \'%1s\'</string>
<string name="incoming_file_title">從 %1s 傳來的檔案</string>
<string name="incoming_file_text">%1s</string>
<plurals name="incoming_file_title">
<item quantity="other">正在從 %2$s 接收 %1$d 個檔案</item>
</plurals>
<plurals name="incoming_files_text">
<item quantity="other">(檔案 %2$d/%3$d%1$s</item>
</plurals>
<string name="outgoing_file_title">正在將檔案發送到 %1s</string>
<string name="outgoing_files_title">正在將檔案發送到 %1s</string>
<plurals name="outgoing_files_text">
<item quantity="other">傳送 %1$d 個檔案,共 %2$d 個檔案。</item>
</plurals>
<string name="received_file_title">已從 %1s 接收檔案</string>
<string name="received_file_fail_title">從 %1s 接收檔案失敗</string>
<plurals name="received_files_title">
<item quantity="other">從 %1$s 接收 %2$d 個檔案</item>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="other">無法從 %1$s 接收到 %2$d/%3$d 個檔案</item>
</plurals>
<string name="received_file_text">點擊開啟 \'%1s\'</string>
<string name="cannot_create_file">無法建立 %s 檔案</string>
<string name="sent_file_title">將檔案傳送到 %1s</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">傳送到 %1s 的檔案失敗</string>
@@ -121,7 +130,6 @@
<string name="pairing_reject">回絕</string>
<string name="device">裝置</string>
<string name="pair_device">配對裝置</string>
<string name="remote_control">遠端控制</string>
<string name="settings">設定</string>
<string name="mpris_play">播放</string>
<string name="mpris_pause">暫停</string>
@@ -156,6 +164,11 @@
<string name="pair_device_action">配對新設備</string>
<string name="unpair_device_action">未配對 %s</string>
<string name="custom_device_list">以IP來新增設備</string>
<string name="delete_custom_device">刪除 %s</string>
<string name="custom_device_deleted">已刪除自訂裝置</string>
<string name="custom_device_list_help">若未自動偵測到您的裝置您可透過點選「浮動動作按鈕」來新增該裝置的IP 位址或主機名稱</string>
<string name="custom_device_fab_hint">新增裝置</string>
<string name="undo">復原</string>
<string name="share_notification_preference">通知方式</string>
<string name="share_notification_preference_summary">當接收檔案時發出振動以及播放聲音</string>
<string name="share_destination_customize">自訂目標路徑</string>
@@ -167,15 +180,33 @@
<string name="title_activity_notification_filter">通知過濾器</string>
<string name="filter_apps_info">將會以您選擇的App應用程式啟用同步通知</string>
<string name="sftp_internal_storage">內部儲存空間</string>
<string name="sftp_all_files">全部檔案</string>
<string name="sftp_sdcard_num">SD卡 %d</string>
<string name="sftp_sdcard">SD卡</string>
<string name="sftp_readonly">(唯讀)</string>
<string name="sftp_camera">相機圖片</string>
<string name="add_device_dialog_title">新增裝置</string>
<string name="add_device_hint">主機名稱 或 IP 位址</string>
<string name="sftp_preference_detected_sdcards">已偵測到 SD 卡</string>
<string name="sftp_preference_edit_sdcard_title">編輯 SD 卡</string>
<string name="sftp_preference_configured_storage_locations">已設定儲存空間位置</string>
<string name="sftp_preference_add_storage_location_title">新增儲存空間位置</string>
<string name="sftp_preference_edit_storage_location">編輯儲存空間位置</string>
<string name="sftp_preference_add_camera_shortcut">新增相機資料夾的捷徑</string>
<string name="sftp_preference_add_camera_shortcut_summary_on">新增連結到相機資料夾的捷徑</string>
<string name="sftp_preference_add_camera_shortcut_summary_off">請勿新增連結到相機資料夾的捷徑</string>
<string name="sftp_storage_preference_storage_location">儲存空間位置</string>
<string name="sftp_storage_preference_storage_location_already_configured">此位置已被設定</string>
<string name="sftp_storage_preference_click_to_select">按一下選擇</string>
<string name="sftp_storage_preference_display_name">顯示名稱</string>
<string name="sftp_storage_preference_display_name_already_used">此顯示名稱已被使用</string>
<string name="sftp_storage_preference_display_name_cannot_be_empty">顯示名稱不得空白</string>
<string name="sftp_action_mode_menu_delete">刪除</string>
<string name="sftp_no_sdcard_detected">未偵測到 SD 卡</string>
<string name="sftp_no_storage_locations_configured">未設定儲存空間位置</string>
<string name="sftp_saf_permission_explanation">若要遠端存取檔案,您需先設定儲存空間位置</string>
<string name="add_host">增加 host/IP</string>
<string name="add_host_hint">Hostname或者IP</string>
<string name="add_host_hint">主機名稱或 IP</string>
<string name="no_players_connected">沒有發現播放器</string>
<string name="custom_dev_list_help">能夠在您的裝置沒有自動偵測到裝置時使用這個選項。輸入IP位址或者是Hostname在下面並且按下按鈕來增加進入列表當中。觸碰以從列表中刪除現有項目。</string>
<string name="mpris_player_on_device">%1$s on %2$s</string>
<string name="send_files">傳送檔案</string>
<string name="pairing_title">KDE連線裝置</string>
@@ -202,7 +233,6 @@
<string name="permission_explanation">這附加元件需要權限以運作</string>
<string name="optional_permission_explanation">你需要授予延伸的權限以啟用所有的功能</string>
<string name="plugins_need_optional_permission">部份的附加元件因為缺乏權限,而導致功能被停用。(點擊以了解更多資訊):</string>
<string name="sftp_permission_explanation">為了要從您的個人電腦存取檔案,這個應用程式需要權限以存取您的手機儲存空間。</string>
<string name="share_optional_permission_explanation">為了要在您的手機與電腦之間分享檔案,你需要同意存取手機的儲存空間。</string>
<string name="telepathy_permission_explanation">為了要在您的個人電腦上讀取與撰寫簡訊,你需要提供簡訊的權限。</string>
<string name="telephony_permission_explanation">為了要在您的電腦上檢視手機通話與簡訊,你需要提供手機通話與簡訊的權限。</string>
@@ -216,7 +246,7 @@
<string name="settings_icon_description">設定圖示</string>
<string name="presenter_fullscreen">全螢幕</string>
<string name="presenter_exit">離開簡報模式</string>
<string name="presenter_lock_tip">您能鎖定裝置以將音量鍵當作前進 / 後退按鈕使用</string>
<string name="presenter_lock_tip">您能鎖定裝置並使用音量鍵前往上 / 下一張投影片</string>
<string name="add_command">增加一行指令</string>
<string name="addcommand_explanation">沒有指令被註冊</string>
<string name="addcommand_explanation2">您現在可以在 KDE 連線系統設定增加新的指令</string>
@@ -248,6 +278,15 @@
<string name="settings_more_settings_title">更多設定</string>
<string name="settings_more_settings_text">各裝置設定可在裝置內的「外掛程式設定」底下找到。</string>
<string name="setting_persistent_notification">顯示一致設定</string>
<string name="setting_persistent_notification_oreo_description">需要 Android 8.0 以上的版本</string>
<string name="setting_persistent_notification_pie_description">從 Android 9.0 開始,只能長按通知才能最小化通知</string>
<string name="setting_persistent_notification_oreo">一致化通知</string>
<string name="setting_persistent_notification_description">點觸以在「通知設定」啟用或停用</string>
<string name="extra_options">延伸選項</string>
<string name="privacy_options">隱私權選項</string>
<string name="set_privacy_options">設定隱私權選項</string>
<string name="new_notification">新通知</string>
<string name="block_contents">擋住通知內容</string>
<string name="block_images">擋住通知中的圖片</string>
<string name="notification_channel_receivenotification">其他裝置上的通知</string>
<string name="take_picture">啟動相機</string>
<string name="plugin_photo_desc">開啟相機應用程式以輕鬆拍攝並傳輸相片</string>
</resources>

View File

@@ -3,4 +3,6 @@
<dimen name="activity_horizontal_margin">16dp</dimen>
<dimen name="activity_vertical_margin">16dp</dimen>
<dimen name="key_height">48dip</dimen>
<dimen name="fab_margin">16dp</dimen>
<dimen name="fab_elevation">6dp</dimen>
</resources>

View File

@@ -14,7 +14,7 @@
<string name="pref_plugin_clipboard_desc">Share the clipboard content</string>
<string name="pref_plugin_mousepad">Remote input</string>
<string name="pref_plugin_mousepad_desc">Use your phone or tablet as a touchpad and keyboard</string>
<string name="pref_plugin_presenter">Presentation remote</string>
<string name="pref_plugin_presenter">Slideshow remote</string>
<string name="pref_plugin_presenter_desc">Use your device to change slides in a presentation</string>
<string name="pref_plugin_remotekeyboard">Receive remote keypresses</string>
<string name="pref_plugin_remotekeyboard_desc">Receive keypress events from remote devices</string>
@@ -39,6 +39,7 @@
<string name="open_settings">Open settings</string>
<string name="no_permissions">You need to grant permission to access notifications</string>
<string name="no_permission_mprisreceiver">To be able to control your media players you need to grant access to the notifications</string>
<string name="no_permissions_remotekeyboard">To receive keypresses you need to activate the KDE Connect Remote Keyboard</string>
<string name="send_ping">Send ping</string>
<string name="open_mpris_controls">Multimedia control</string>
<string name="remotekeyboard_editing_only" translatable="false">remotekeyboard_editing_only</string>
@@ -105,7 +106,6 @@
<string name="category_connected_devices">Connected devices</string>
<string name="category_not_paired_devices">Available devices</string>
<string name="category_remembered_devices">Remembered devices</string>
<string name="plugins_failed_to_load">Plugins failed to load (tap for more info):</string>
<string name="device_menu_plugins">Plugin settings</string>
<string name="device_menu_unpair">Unpair</string>
<string name="device_not_reachable">Paired device not reachable</string>
@@ -127,17 +127,30 @@
<string name="pairing_request_from">Pairing request from %1s</string>
<string name="received_url_title">Received link from %1s</string>
<string name="received_url_text">Tap to open \'%1s\'</string>
<string name="incoming_file_title">Incoming file from %1s</string>
<string name="incoming_file_text">%1s</string>
<plurals name="incoming_file_title">Receiving file from %1s>
<item quantity="one">Receiving %1$d file from %2$s</item>
<item quantity="other">Receiving %1$d files from %2$s</item>
</plurals>
<plurals name="incoming_files_text">
<item quantity="one">File: %1s</item>
<item quantity="other">(File %2$d of %3$d) : %1$s</item>
</plurals>
<string name="outgoing_file_title">Sending file to %1s</string>
<string name="outgoing_files_title">Sending files to %1s</string>
<plurals name="outgoing_files_text">
<item quantity="one">Sent %1$d file</item>
<item quantity="other">Sent %1$d out of %2$d files</item>
</plurals>
<string name="received_file_title">Received file from %1s</string>
<string name="received_file_fail_title">Failed receiving file from %1s</string>
<plurals name="received_files_title">
<item quantity="one">Received file from %1$s</item>
<item quantity="other">Received %2$d files from %1$s</item>
</plurals>
<plurals name="received_files_fail_title">
<item quantity="one">Failed receiving file from %1$s</item>
<item quantity="other">Failed receiving %2$d of %3$d files from %1$s</item>
</plurals>
<string name="received_file_text">Tap to open \'%1s\'</string>
<string name="cannot_create_file">Cannot create file %s</string>
<string name="sent_file_title">Sent file to %1s</string>
<string name="sent_file_text">%1s</string>
<string name="sent_file_failed_title">Failed to send file to %1s</string>
@@ -153,7 +166,6 @@
<string name="pairing_reject">Reject</string>
<string name="device">Device</string>
<string name="pair_device">Pair device</string>
<string name="remote_control">Remote control</string>
<string name="settings">Settings</string>
<string name="mpris_play">Play</string>
<string name="mpris_pause">Pause</string>
@@ -199,6 +211,10 @@
<string name="unpair_device_action">Unpair %s</string>
<string name="custom_device_list">Add devices by IP</string>
<string name="delete_custom_device">Delete %s?</string>
<string name="custom_device_deleted">Custom device deleted</string>
<string name="custom_device_list_help">If your device is not automatically detected you can add its IP address or hostname by clicking on the Floating Action Button</string>
<string name="custom_device_fab_hint">Add a device</string>
<string name="undo">Undo</string>
<string name="share_notification_preference">Noisy notifications</string>
<string name="share_notification_preference_summary">Vibrate and play a sound when receiving a file</string>
<string name="share_destination_customize">Customize destination directory</string>
@@ -210,15 +226,38 @@
<string name="title_activity_notification_filter">Notification filter</string>
<string name="filter_apps_info">Notifications will be synchronized for the selected apps.</string>
<string name="sftp_internal_storage">Internal storage</string>
<string name="sftp_all_files">All files</string>
<string name="sftp_sdcard_num">SD card %d</string>
<string name="sftp_sdcard">SD card</string>
<string name="sftp_readonly">(read only)</string>
<string name="sftp_camera">Camera pictures</string>
<string name="add_device_dialog_title">Add device</string>
<string name="add_device_hint">Hostname or IP address</string>
<string name="sftp_preference_detected_sdcards">Detected SD cards</string>
<string name="sftp_preference_edit_sdcard_title">Edit SD card</string>
<string name="sftp_preference_configured_storage_locations">Configured storage locations</string>
<string name="sftp_preference_add_storage_location_title">Add storage location</string>
<string name="sftp_preference_edit_storage_location">Edit storage location</string>
<string name="sftp_preference_add_camera_shortcut">Add camera folder shortcut</string>
<string name="sftp_preference_add_camera_shortcut_summary_on">Add a shortcut to the camera folder</string>
<string name="sftp_preference_add_camera_shortcut_summary_off">Do not add a shortcut to the camera folder</string>
<string name="sftp_preference_key_preference_category" translatable="false">key_sftp_preference_category</string>
<string name="sftp_preference_key_add_storage" translatable="false">key_sftp_add_storage</string>
<string name="sftp_preference_key_add_camera_shortcut" translatable="false">key_sftp_add_camera_shotcut</string>
<string name="sftp_preference_key_storage_info" translatable="false">key_sftp_storage_info%d"</string>
<string name="sftp_preference_key_storage_info_list" translatable="false">key_sftp_storage_info_list</string>
<string name="sftp_storage_preference_storage_location">Storage location</string>
<string name="sftp_storage_preference_storage_location_already_configured">This location has already been configured</string>
<string name="sftp_storage_preference_click_to_select">click to select</string>
<string name="sftp_storage_preference_display_name">Display name</string>
<string name="sftp_storage_preference_display_name_already_used">This display name is already used</string>
<string name="sftp_storage_preference_display_name_cannot_be_empty">Display name cannot be empty</string>
<string name="sftp_action_mode_menu_delete">Delete</string>
<string name="sftp_no_sdcard_detected">No SD card detected</string>
<string name="sftp_no_storage_locations_configured">No storage locations configured</string>
<string name="sftp_saf_permission_explanation">To access files remotely you have to configure storage locations</string>
<string name="add_host">Add host/IP</string>
<string name="add_host_hint">Hostname or IP</string>
<string name="no_players_connected">No players found</string>
<string name="custom_dev_list_help">Use this option only if your device is not automatically detected. Enter IP address or hostname below and touch the button to add it to the list. Touch an existing item to remove it from the list.</string>
<string name="mpris_player_on_device">%1$s on %2$s</string>
<string name="send_files">Send files</string>
@@ -248,7 +287,6 @@
<string name="permission_explanation">This plugin needs permissions to work</string>
<string name="optional_permission_explanation">You need to grant extra permissions to enable all functions</string>
<string name="plugins_need_optional_permission">Some plugins have features disabled because of lack of permission (tap for more info):</string>
<string name="sftp_permission_explanation">To access your files from your PC the app needs permission to access your phone\'s storage</string>
<string name="share_optional_permission_explanation">To share files between your phone and your desktop you need to give access to the phone\'s storage</string>
<string name="telepathy_permission_explanation">To read and write SMS from your desktop you need to give permission to SMS</string>
<string name="telephony_permission_explanation">To see phone calls and SMS from the desktop you need to give permission to phone calls and SMS</string>
@@ -263,7 +301,7 @@
<string name="presenter_fullscreen">Fullscreen</string>
<string name="presenter_exit">Exit presentation</string>
<string name="presenter_lock_tip">You can lock your device to use the volume keys as previous/next buttons</string>
<string name="presenter_lock_tip">You can lock your device and use the volume keys to go to the previous/next slide</string>
<string name="add_command">Add a command</string>
<string name="addcommand_explanation">There are no commands registered</string>
@@ -302,7 +340,18 @@
<string name="settings_more_settings_title">More settings</string>
<string name="settings_more_settings_text">Per-device settings can be found under \'Plugin settings\' from within a device.</string>
<string name="setting_persistent_notification">Show persistent notification</string>
<string name="setting_persistent_notification_oreo_description">Required by Android since Android 8.0</string>
<string name="setting_persistent_notification_pie_description">Since Android 9.0, this notification can only be minimized by long tapping on it</string>
<string name="setting_persistent_notification_oreo">Persistent notification</string>
<string name="setting_persistent_notification_description">Tap to enable/disable in Notification settings</string>
<string name="extra_options">Extra options</string>
<string name="privacy_options">Privacy options</string>
<string name="set_privacy_options">Set your privacy options</string>
<string name="new_notification">New notification</string>
<string name="block_contents">Block contents of notifications</string>
<string name="block_images">Block images in notifications</string>
<string name="notification_channel_receivenotification">Notifications from other devices</string>
<string name="take_picture">Launch camera</string>
<string name="plugin_photo_desc">Launch the camera app to ease taking and transferring pictures</string>
<string name="findmyphone_preference_key_ringtone" translatable="false">findmyphone_ringtone</string>
</resources>

View File

@@ -5,7 +5,7 @@
<color name="darkStatusBarBackground">#333333</color>
<!-- KdeConnectThemeBase styles must only be defined in the main res/values/ folder -->
<style name="KdeConnectThemeBase.Dark" parent="Theme.AppCompat">
<style name="KdeConnectThemeBase.Dark" parent="Theme.MaterialComponents">
<item name="colorPrimary">@color/darkGrey</item>
<item name="colorPrimaryDark">@color/darkStatusBarBackground</item>
<item name="colorAccent">@color/accent</item>
@@ -16,6 +16,7 @@
<item name="colorHighContrast">@android:color/white</item>
<item name="android:textColorPrimary">@android:color/white</item>
<item name="android:textColor">@android:color/white</item>
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
</style>
<style name="KdeConnectThemeBase.Dark.NoActionBar" parent="KdeConnectThemeBase.Dark">

View File

@@ -2,10 +2,10 @@
<color name="primary">#F67400</color>
<color name="primaryDark">#BD5900</color>
<color name="accent">#4ebffa</color>
<color name="disabled_grey">#eee</color>
<color name="disabled_grey">#EEEEEE</color>
<!-- NoActionBar because we use a Toolbar widget as ActionBar -->
<style name="KdeConnectThemeBase" parent="Theme.AppCompat.Light.DarkActionBar">
<style name="KdeConnectThemeBase" parent="Theme.MaterialComponents.Light.DarkActionBar">
<!-- The three colors used by system widgets, according to https://chris.banes.me/2014/10/17/appcompat-v21/ -->
<item name="colorPrimary">@color/primary</item>
<item name="colorPrimaryDark">@color/primaryDark</item>
@@ -14,8 +14,11 @@
<item name="popupTheme">@style/ThemeOverlay.AppCompat.Light</item>
<item name="mainNavigationViewStyle">@style/MainNavigationView</item>
<item name="colorHighContrast">@android:color/black</item>
<!-- TODO: The 2 items below change to much (eg snackbar text is now black, should be white) -->
<item name="android:textColorPrimary">@android:color/black</item>
<item name="android:textColor">@android:color/black</item>
<item name="preferenceTheme">@style/PreferenceThemeOverlay</item>
<item name="actionModeStyle">@style/ActionModeStyle</item>
</style>
<style name="KdeConnectThemeBase.NoActionBar" parent="KdeConnectThemeBase">
@@ -41,4 +44,7 @@
<item name="colorButtonNormal">@drawable/disableable_button</item>
</style>
<style name="ActionModeStyle" parent="Widget.AppCompat.ActionMode">
<item name="background">@color/primaryDark</item>
</style>
</resources>

View File

@@ -3,4 +3,5 @@
<external-path
name="external_files"
path="." />
<external-path name="images" path="Android/data/org.kde.kdeconnect_tp/files/Pictures" />
</paths>

View File

@@ -3,8 +3,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<RingtonePreference
android:key="select_ringtone"
android:showSilent="false"
<Preference
android:key="@string/findmyphone_preference_key_ringtone"
android:title="@string/select_ringtone" />
</PreferenceScreen>

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:key="@string/sftp_preference_key_preference_category"
android:title="@string/sftp_preference_detected_sdcards"
android:persistent="false">
</PreferenceCategory>
<org.kde.kdeconnect.Plugins.SftpPlugin.StoragePreference
android:key="key_sftp_add_storage"
android:icon="@drawable/ic_add"
android:title="@string/sftp_preference_add_storage_location_title"
android:persistent="false"/>
<androidx.preference.SwitchPreferenceCompat
android:defaultValue="true"
android:key="@string/sftp_preference_key_add_camera_shortcut"
android:summaryOff="@string/sftp_preference_add_camera_shortcut_summary_off"
android:summaryOn="@string/sftp_preference_add_camera_shortcut_summary_on"
android:title="@string/sftp_preference_add_camera_shortcut"/>
</PreferenceScreen>

View File

@@ -20,7 +20,6 @@
package org.kde.kdeconnect.Backends.BluetoothBackend;
import android.annotation.TargetApi;
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothServerSocket;
import android.bluetooth.BluetoothSocket;
@@ -102,7 +101,7 @@ public class BluetoothLink extends BaseLink {
UUID transferUuid = UUID.fromString(np.getPayloadTransferInfo().getString("uuid"));
transferSocket = socket.getRemoteDevice().createRfcommSocketToServiceRecord(transferUuid);
transferSocket.connect();
np.setPayload(transferSocket.getInputStream(), np.getPayloadSize());
np.setPayload(new NetworkPacket.Payload(transferSocket.getInputStream(), np.getPayloadSize()));
} catch (Exception e) {
if (transferSocket != null) {
try {
@@ -199,8 +198,7 @@ public class BluetoothLink extends BaseLink {
sendMessage(np);
if (serverSocket != null) {
BluetoothSocket transferSocket = serverSocket.accept();
try {
try (BluetoothSocket transferSocket = serverSocket.accept()) {
serverSocket.close();
int idealBufferLength = 4096;
@@ -211,7 +209,7 @@ public class BluetoothLink extends BaseLink {
byte[] buffer = new byte[idealBufferLength];
int bytesRead;
long progress = 0;
InputStream stream = np.getPayload();
InputStream stream = np.getPayload().getInputStream();
while ((bytesRead = stream.read(buffer)) != -1) {
progress += bytesRead;
transferSocket.getOutputStream().write(buffer, 0, bytesRead);
@@ -224,11 +222,6 @@ public class BluetoothLink extends BaseLink {
} catch (Exception e) {
callback.onFailure(e);
return false;
} finally {
try {
transferSocket.close();
} catch (IOException ignored) {
}
}
}

View File

@@ -56,7 +56,7 @@ public class BluetoothLinkProvider extends BaseLinkProvider {
private final Map<String, BluetoothLink> visibleComputers = new HashMap<>();
private final Map<BluetoothDevice, BluetoothSocket> sockets = new HashMap<>();
private BluetoothAdapter bluetoothAdapter = null;
private BluetoothAdapter bluetoothAdapter;
private ServerRunnable serverRunnable;
private ClientRunnable clientRunnable;

View File

@@ -150,7 +150,7 @@ public class LanLink extends BaseLink {
//Prepare socket for the payload
final ServerSocket server;
if (np.hasPayload() && np.getPayloadSize() != 0) {
if (np.hasPayload()) {
server = LanLinkProvider.openServerSocketOnFreePort(LanLinkProvider.PAYLOAD_TRANSFER_MIN_PORT);
JSONObject payloadTransferInfo = new JSONObject();
payloadTransferInfo.put("port", server.getLocalPort());
@@ -180,7 +180,7 @@ public class LanLink extends BaseLink {
if (server != null) {
Socket payloadSocket = null;
OutputStream outputStream = null;
InputStream inputStream = null;
InputStream inputStream;
try {
//Wait a maximum of 10 seconds for the other end to establish a connection with our socket, close it afterwards
server.setSoTimeout(10*1000);
@@ -193,7 +193,7 @@ public class LanLink extends BaseLink {
}
outputStream = payloadSocket.getOutputStream();
inputStream = np.getPayload();
inputStream = np.getPayload().getInputStream();
Log.i("KDE/LanLink", "Beginning to send payload");
byte[] buffer = new byte[4096];
@@ -214,12 +214,11 @@ public class LanLink extends BaseLink {
}
}
outputStream.flush();
outputStream.close();
Log.i("KDE/LanLink", "Finished sending payload ("+progress+" bytes written)");
} finally {
try { server.close(); } catch (Exception e) { }
try { payloadSocket.close(); } catch (Exception e) { }
try { inputStream.close(); } catch (Exception e) { }
np.getPayload().close();
try { outputStream.close(); } catch (Exception e) { }
}
}
@@ -233,8 +232,9 @@ public class LanLink extends BaseLink {
return false;
} finally {
//Make sure we close the payload stream, if any
InputStream stream = np.getPayload();
try { stream.close(); } catch (Exception e) { }
if (np.hasPayload()) {
np.getPayload().close();
}
}
}
@@ -263,7 +263,6 @@ public class LanLink extends BaseLink {
}
if (np.hasPayloadTransferInfo()) {
Socket payloadSocket = new Socket();
try {
int tcpPort = np.getPayloadTransferInfo().getInt("port");
@@ -273,7 +272,7 @@ public class LanLink extends BaseLink {
if (socket instanceof SSLSocket) {
payloadSocket = SslHelper.convertToSslSocket(context, payloadSocket, getDeviceId(), true, true);
}
np.setPayload(payloadSocket.getInputStream(), np.getPayloadSize());
np.setPayload(new NetworkPacket.Payload(payloadSocket, np.getPayloadSize()));
} catch (Exception e) {
try { payloadSocket.close(); } catch(Exception ignored) { }
e.printStackTrace();

View File

@@ -69,7 +69,6 @@ public class LanLinkProvider extends BaseLinkProvider implements LanLink.LinkDis
public static final int MIN_VERSION_WITH_SSL_SUPPORT = 6;
private static final int MIN_VERSION_WITH_NEW_PORT_SUPPORT = 7;
private final static int MIN_PORT_LEGACY = 1714;
private final static int MIN_PORT = 1716;
private final static int MAX_PORT = 1764;
final static int PAYLOAD_TRANSFER_MIN_PORT = 1739;
@@ -80,7 +79,6 @@ public class LanLinkProvider extends BaseLinkProvider implements LanLink.LinkDis
private ServerSocket tcpServer;
private DatagramSocket udpServer;
private DatagramSocket udpServerOldPort;
private boolean listening = false;
@@ -307,16 +305,15 @@ public class LanLinkProvider extends BaseLinkProvider implements LanLink.LinkDis
this.context = context;
}
private DatagramSocket setupUdpListener(int udpPort) {
final DatagramSocket server;
private void setupUdpListener() {
try {
server = new DatagramSocket(udpPort);
server.setReuseAddress(true);
server.setBroadcast(true);
udpServer = new DatagramSocket(MIN_PORT);
udpServer.setReuseAddress(true);
udpServer.setBroadcast(true);
} catch (SocketException e) {
Log.e("LanLinkProvider", "Error creating udp server");
e.printStackTrace();
return null;
return;
}
new Thread(() -> {
while (listening) {
@@ -324,7 +321,7 @@ public class LanLinkProvider extends BaseLinkProvider implements LanLink.LinkDis
byte[] data = new byte[bufferSize];
DatagramPacket packet = new DatagramPacket(data, bufferSize);
try {
server.receive(packet);
udpServer.receive(packet);
udpPacketReceived(packet);
} catch (Exception e) {
e.printStackTrace();
@@ -333,35 +330,35 @@ public class LanLinkProvider extends BaseLinkProvider implements LanLink.LinkDis
}
Log.w("UdpListener", "Stopping UDP listener");
}).start();
return server;
}
private void setupTcpListener() {
try {
tcpServer = openServerSocketOnFreePort(MIN_PORT);
new Thread(() -> {
while (listening) {
try {
Socket socket = tcpServer.accept();
configureSocket(socket);
tcpPacketReceived(socket);
} catch (Exception e) {
e.printStackTrace();
Log.e("LanLinkProvider", "TcpReceive exception");
}
}
Log.w("TcpListener", "Stopping TCP listener");
}).start();
} catch (Exception e) {
Log.e("LanLinkProvider", "Error creating tcp server");
e.printStackTrace();
return;
}
new Thread(() -> {
while (listening) {
try {
Socket socket = tcpServer.accept();
configureSocket(socket);
tcpPacketReceived(socket);
} catch (Exception e) {
e.printStackTrace();
Log.e("LanLinkProvider", "TcpReceive exception");
}
}
Log.w("TcpListener", "Stopping TCP listener");
}).start();
}
static ServerSocket openServerSocketOnFreePort(int minPort) throws IOException {
int tcpPort = minPort;
while (tcpPort < MAX_PORT) {
while (tcpPort <= MAX_PORT) {
try {
ServerSocket candidateServer = new ServerSocket();
candidateServer.bind(new InetSocketAddress(tcpPort));
@@ -369,10 +366,13 @@ public class LanLinkProvider extends BaseLinkProvider implements LanLink.LinkDis
return candidateServer;
} catch (IOException e) {
tcpPort++;
if (tcpPort == MAX_PORT) {
Log.e("KDE/LanLink", "No ports available");
throw e; //Propagate exception
}
}
}
Log.e("KDE/LanLink", "No ports available");
throw new IOException("No ports available");
throw new RuntimeException("This should not be reachable");
}
private void broadcastUdpPacket() {
@@ -383,12 +383,8 @@ public class LanLinkProvider extends BaseLinkProvider implements LanLink.LinkDis
}
new Thread(() -> {
String deviceListPrefs = PreferenceManager.getDefaultSharedPreferences(context).getString(CustomDevicesActivity.KEY_CUSTOM_DEVLIST_PREFERENCE, "");
ArrayList<String> iplist = new ArrayList<>();
if (!deviceListPrefs.isEmpty()) {
iplist = CustomDevicesActivity.deserializeIpList(deviceListPrefs);
}
ArrayList<String> iplist = CustomDevicesActivity
.getCustomDeviceList(PreferenceManager.getDefaultSharedPreferences(context));
iplist.add("255.255.255.255"); //Default: broadcast.
NetworkPacket identity = NetworkPacket.createIdentityPacket(context);
@@ -412,7 +408,6 @@ public class LanLinkProvider extends BaseLinkProvider implements LanLink.LinkDis
try {
InetAddress client = InetAddress.getByName(ipstr);
socket.send(new DatagramPacket(bytes, bytes.length, client, MIN_PORT));
socket.send(new DatagramPacket(bytes, bytes.length, client, MIN_PORT_LEGACY));
//Log.i("KDE/LanLinkProvider","Udp identity package sent to address "+client);
} catch (Exception e) {
e.printStackTrace();
@@ -435,14 +430,7 @@ public class LanLinkProvider extends BaseLinkProvider implements LanLink.LinkDis
listening = true;
udpServer = setupUdpListener(MIN_PORT);
udpServerOldPort = setupUdpListener(MIN_PORT_LEGACY);
// Due to certificate request from SSL server to client, the certificate request message from device with latest android version to device with
// old android version causes a FATAL ALERT message stating that incorrect certificate request
// Server is disabled on these devices and using a reverse connection strategy. This works well for connection of these devices with kde
// and newer android versions. Although devices with android version less than ICS cannot connect to other devices who also have android version less
// than ICS because server is disabled on both
setupUdpListener();
setupTcpListener();
broadcastUdpPacket();
@@ -468,11 +456,6 @@ public class LanLinkProvider extends BaseLinkProvider implements LanLink.LinkDis
} catch (Exception e) {
e.printStackTrace();
}
try {
udpServerOldPort.close();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override

View File

@@ -51,7 +51,7 @@ public class LoopbackLink extends BaseLink {
packageReceived(in);
if (in.hasPayload()) {
callback.onProgressChanged(0);
in.setPayload(in.getPayload(), in.getPayloadSize());
in.setPayload(in.getPayload());
callback.onProgressChanged(100);
}
callback.onSuccess();

View File

@@ -32,7 +32,6 @@ import android.net.ConnectivityManager;
import android.os.Binder;
import android.os.Build;
import android.os.IBinder;
import android.support.v4.app.NotificationCompat;
import android.text.TextUtils;
import android.util.Log;
@@ -43,6 +42,7 @@ import org.kde.kdeconnect.Helpers.NotificationHelper;
import org.kde.kdeconnect.Helpers.SecurityHelpers.RsaHelper;
import org.kde.kdeconnect.Helpers.SecurityHelpers.SslHelper;
import org.kde.kdeconnect.Plugins.Plugin;
import org.kde.kdeconnect.Plugins.PluginFactory;
import org.kde.kdeconnect.UserInterface.MainActivity;
import org.kde.kdeconnect_tp.R;
@@ -53,6 +53,8 @@ import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import androidx.core.app.NotificationCompat;
//import org.kde.kdeconnect.Backends.BluetoothBackend.BluetoothLinkProvider;
public class BackgroundService extends Service {
@@ -283,6 +285,7 @@ public class BackgroundService extends Service {
Log.i("KDE/BackgroundService", "Service not started yet, initializing...");
PluginFactory.initPluginInfo(getBaseContext());
initializeSecurityParameters();
NotificationHelper.initializeChannels(this);
loadRememberedDevicesFromSettings();
@@ -416,7 +419,7 @@ public class BackgroundService extends Service {
}).start();
}
public static <T extends Plugin> void runWithPlugin(final Context c, final String deviceId, final Class<T> pluginClass, final PluginCallback<T> cb) {
public static <T extends Plugin> void RunWithPlugin(final Context c, final String deviceId, final Class<T> pluginClass, final PluginCallback<T> cb) {
RunCommand(c, service -> {
Device device = service.getDevice(deviceId);
@@ -434,5 +437,4 @@ public class BackgroundService extends Service {
cb.run(plugin);
});
}
}

View File

@@ -30,8 +30,6 @@ import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.preference.PreferenceManager;
import android.support.v4.app.NotificationCompat;
import android.support.v4.content.ContextCompat;
import android.util.Base64;
import android.util.Log;
@@ -61,6 +59,9 @@ import java.util.Vector;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList;
import androidx.core.app.NotificationCompat;
import androidx.core.content.ContextCompat;
public class Device implements BaseLink.PacketReceiver {
private final Context context;
@@ -82,7 +83,6 @@ public class Device implements BaseLink.PacketReceiver {
private List<String> m_supportedPlugins = new ArrayList<>();
private final ConcurrentHashMap<String, Plugin> plugins = new ConcurrentHashMap<>();
private final ConcurrentHashMap<String, Plugin> failedPlugins = new ConcurrentHashMap<>();
private final ConcurrentHashMap<String, Plugin> pluginsWithoutPermissions = new ConcurrentHashMap<>();
private final ConcurrentHashMap<String, Plugin> pluginsWithoutOptionalPermissions = new ConcurrentHashMap<>();
private Map<String, ArrayList<String>> pluginsByIncomingInterface = new HashMap<>();
@@ -382,21 +382,19 @@ public class Device implements BaseLink.PacketReceiver {
notificationId = (int) System.currentTimeMillis();
Intent intent = new Intent(getContext(), MainActivity.class);
intent.putExtra("deviceId", getDeviceId());
intent.putExtra("notificationId", notificationId);
PendingIntent pendingIntent = PendingIntent.getActivity(getContext(), 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
intent.putExtra(MainActivity.EXTRA_DEVICE_ID, getDeviceId());
intent.putExtra(MainActivity.PAIR_REQUEST_STATUS, MainActivity.PAIRING_PENDING);
PendingIntent pendingIntent = PendingIntent.getActivity(getContext(), 1, intent, PendingIntent.FLAG_CANCEL_CURRENT);
Intent acceptIntent = new Intent(getContext(), MainActivity.class);
Intent rejectIntent = new Intent(getContext(), MainActivity.class);
acceptIntent.putExtra("deviceId", getDeviceId());
acceptIntent.putExtra("notificationId", notificationId);
acceptIntent.setAction("action " + System.currentTimeMillis());
acceptIntent.putExtra(MainActivity.EXTRA_DEVICE_ID, getDeviceId());
//acceptIntent.putExtra("notificationId", notificationId);
acceptIntent.putExtra(MainActivity.PAIR_REQUEST_STATUS, MainActivity.PAIRING_ACCEPTED);
rejectIntent.putExtra("deviceId", getDeviceId());
rejectIntent.putExtra("notificationId", notificationId);
rejectIntent.setAction("action " + System.currentTimeMillis());
rejectIntent.putExtra(MainActivity.EXTRA_DEVICE_ID, getDeviceId());
//rejectIntent.putExtra("notificationId", notificationId);
rejectIntent.putExtra(MainActivity.PAIR_REQUEST_STATUS, MainActivity.PAIRING_REJECTED);
PendingIntent acceptedPendingIntent = PendingIntent.getActivity(getContext(), 2, acceptIntent, PendingIntent.FLAG_ONE_SHOT);
@@ -514,7 +512,7 @@ public class Device implements BaseLink.PacketReceiver {
Set<String> outgoingCapabilities = identityPacket.getStringSet("outgoingCapabilities", null);
Set<String> incomingCapabilities = identityPacket.getStringSet("incomingCapabilities", null);
if (incomingCapabilities != null && outgoingCapabilities != null) {
m_supportedPlugins = new Vector<>(PluginFactory.pluginsForCapabilities(context, incomingCapabilities, outgoingCapabilities));
m_supportedPlugins = new Vector<>(PluginFactory.pluginsForCapabilities(incomingCapabilities, outgoingCapabilities));
} else {
m_supportedPlugins = new Vector<>(PluginFactory.getAvailablePlugins());
}
@@ -687,23 +685,12 @@ public class Device implements BaseLink.PacketReceiver {
//
public <T extends Plugin> T getPlugin(Class<T> pluginClass) {
return (T) getPlugin(Plugin.getPluginKey(pluginClass));
Plugin plugin = getPlugin(Plugin.getPluginKey(pluginClass));
return (T) plugin;
}
public <T extends Plugin> T getPlugin(Class<T> pluginClass, boolean includeFailed) {
return (T) getPlugin(Plugin.getPluginKey(pluginClass), includeFailed);
}
private Plugin getPlugin(String pluginKey) {
return getPlugin(pluginKey, false);
}
public Plugin getPlugin(String pluginKey, boolean includeFailed) {
Plugin plugin = plugins.get(pluginKey);
if (includeFailed && plugin == null) {
plugin = failedPlugins.get(pluginKey);
}
return plugin;
public Plugin getPlugin(String pluginKey) {
return plugins.get(pluginKey);
}
private synchronized boolean addPlugin(final String pluginKey) {
@@ -729,8 +716,6 @@ public class Device implements BaseLink.PacketReceiver {
final Plugin plugin = PluginFactory.instantiatePluginForDevice(context, pluginKey, this);
if (plugin == null) {
Log.e("KDE/addPlugin", "could not instantiate plugin: " + pluginKey);
//Can't put a null
//failedPlugins.put(pluginKey, null);
return false;
}
@@ -745,18 +730,12 @@ public class Device implements BaseLink.PacketReceiver {
} catch (Exception e) {
success = false;
e.printStackTrace();
Log.e("KDE/addPlugin", "Exception loading plugin " + pluginKey);
}
if (!success) {
Log.e("KDE/addPlugin", "plugin failed to load " + pluginKey);
}
if (success) {
//Log.e("addPlugin","added " + pluginKey);
failedPlugins.remove(pluginKey);
plugins.put(pluginKey, plugin);
} else {
Log.e("KDE/addPlugin", "plugin failed to load " + pluginKey);
plugins.remove(pluginKey);
failedPlugins.put(pluginKey, plugin);
}
plugins.put(pluginKey, plugin);
if (!plugin.checkRequiredPermissions()) {
Log.e("KDE/addPlugin", "No permission " + pluginKey);
@@ -782,14 +761,9 @@ public class Device implements BaseLink.PacketReceiver {
private synchronized boolean removePlugin(String pluginKey) {
Plugin plugin = plugins.remove(pluginKey);
Plugin failedPlugin = failedPlugins.remove(pluginKey);
if (plugin == null) {
if (failedPlugin == null) {
//Not found
return false;
}
plugin = failedPlugin;
return false;
}
try {
@@ -809,19 +783,17 @@ public class Device implements BaseLink.PacketReceiver {
}
public boolean isPluginEnabled(String pluginKey) {
boolean enabledByDefault = PluginFactory.getPluginInfo(context, pluginKey).isEnabledByDefault();
boolean enabledByDefault = PluginFactory.getPluginInfo(pluginKey).isEnabledByDefault();
return settings.getBoolean(pluginKey, enabledByDefault);
}
public void reloadPluginsFromSettings() {
failedPlugins.clear();
HashMap<String, ArrayList<String>> newPluginsByIncomingInterface = new HashMap<>();
for (String pluginKey : m_supportedPlugins) {
PluginFactory.PluginInfo pluginInfo = PluginFactory.getPluginInfo(context, pluginKey);
PluginFactory.PluginInfo pluginInfo = PluginFactory.getPluginInfo(pluginKey);
boolean pluginEnabled = false;
boolean listenToUnpaired = pluginInfo.listenToUnpaired();
@@ -861,10 +833,6 @@ public class Device implements BaseLink.PacketReceiver {
return plugins;
}
public ConcurrentHashMap<String, Plugin> getFailedPlugins() {
return failedPlugins;
}
public ConcurrentHashMap<String, Plugin> getPluginsWithoutPermissions() {
return pluginsWithoutPermissions;
}

View File

@@ -28,8 +28,6 @@ import android.net.Uri;
import android.os.Build;
import android.provider.ContactsContract;
import android.provider.ContactsContract.PhoneLookup;
import android.support.annotation.RequiresApi;
import android.support.v4.util.LongSparseArray;
import android.util.Base64;
import android.util.Base64OutputStream;
import android.util.Log;
@@ -48,6 +46,9 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import androidx.annotation.RequiresApi;
import androidx.collection.LongSparseArray;
public class ContactsHelper {
@@ -91,12 +92,8 @@ public class ContactsHelper {
}
Uri photoUri = Uri.parse(photoId);
InputStream input = null;
Base64OutputStream output = null;
try {
ByteArrayOutputStream encodedPhoto = new ByteArrayOutputStream();
output = new Base64OutputStream(encodedPhoto, Base64.DEFAULT);
input = context.getContentResolver().openInputStream(photoUri);
ByteArrayOutputStream encodedPhoto = new ByteArrayOutputStream();
try (InputStream input = context.getContentResolver().openInputStream(photoUri); Base64OutputStream output = new Base64OutputStream(encodedPhoto, Base64.DEFAULT)) {
byte[] buffer = new byte[1024];
int len;
//noinspection ConstantConditions
@@ -107,19 +104,6 @@ public class ContactsHelper {
} catch (Exception ex) {
Log.e("ContactsHelper", ex.toString());
return "";
} finally {
try {
//noinspection ConstantConditions
input.close();
} catch (Exception ignored) {
}
try {
//noinspection ConstantConditions
output.close();
} catch (Exception ignored) {
}
}
}
@@ -291,6 +275,10 @@ public class ContactsHelper {
public static Map<uID, Map<String, Object>> getColumnsFromContactsForIDs(Context context, Collection<uID> IDs, String[] contactsProjection) {
HashMap<uID, Map<String, Object>> toReturn = new HashMap<>();
if (IDs.isEmpty()) {
return toReturn;
}
Uri contactsUri = ContactsContract.Contacts.CONTENT_URI;
// Regardless of whether it was requested, we need to look up the uID column

View File

@@ -35,7 +35,7 @@ import java.util.HashMap;
public class DeviceHelper {
private static final String KEY_DEVICE_NAME_PREFERENCE = "device_name_preference";
public static final String KEY_DEVICE_NAME_PREFERENCE = "device_name_preference";
//from https://github.com/meetup/android-device-names
//Converted to java using:

View File

@@ -20,10 +20,18 @@
package org.kde.kdeconnect.Helpers;
import android.content.ContentResolver;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.MediaStore;
import android.util.Log;
import android.webkit.MimeTypeMap;
import org.kde.kdeconnect.NetworkPacket;
import java.io.File;
import java.io.InputStream;
public class FilesHelper {
@@ -80,7 +88,7 @@ public class FilesHelper {
}
String result = rc.toString();
if (result.length() > maxFileLength) {
result = result.substring(result.length() - maxFileLength, result.length());
result = result.substring(result.length() - maxFileLength);
}
return result;
}
@@ -100,4 +108,82 @@ public class FilesHelper {
public static void LogOpenFileCount() {
Log.e("KDE/FileCount", "" + GetOpenFileCount());
}
//Create the network package from the URI
public static NetworkPacket uriToNetworkPacket(final Context context, final Uri uri, String type) {
try {
ContentResolver cr = context.getContentResolver();
InputStream inputStream = cr.openInputStream(uri);
NetworkPacket np = new NetworkPacket(type);
long size = -1;
if (uri.getScheme().equals("file")) {
// file:// is a non media uri, so we cannot query the ContentProvider
np.set("filename", uri.getLastPathSegment());
try {
size = new File(uri.getPath()).length();
} catch (Exception e) {
Log.e("SendFileActivity", "Could not obtain file size");
e.printStackTrace();
}
} else {
// Probably a content:// uri, so we query the Media content provider
Cursor cursor = null;
try {
String[] proj = {MediaStore.MediaColumns.DATA, MediaStore.MediaColumns.SIZE, MediaStore.MediaColumns.DISPLAY_NAME};
cursor = cr.query(uri, proj, null, null, null);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);
cursor.moveToFirst();
String path = cursor.getString(column_index);
np.set("filename", Uri.parse(path).getLastPathSegment());
size = new File(path).length();
} catch (Exception unused) {
Log.w("SendFileActivity", "Could not resolve media to a file, trying to get info as media");
try {
int column_index = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DISPLAY_NAME);
cursor.moveToFirst();
String name = cursor.getString(column_index);
np.set("filename", name);
} catch (Exception e) {
e.printStackTrace();
Log.e("SendFileActivity", "Could not obtain file name");
}
try {
int column_index = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.SIZE);
cursor.moveToFirst();
//For some reason this size can differ from the actual file size!
size = cursor.getInt(column_index);
} catch (Exception e) {
Log.e("SendFileActivity", "Could not obtain file size");
e.printStackTrace();
}
} finally {
try {
cursor.close();
} catch (Exception ignored) {
}
}
}
np.setPayload(new NetworkPacket.Payload(inputStream, size));
return np;
} catch (Exception e) {
Log.e("SendFileActivity", "Exception creating network packet", e);
e.printStackTrace();
return null;
}
}
}

View File

@@ -17,6 +17,7 @@ public class NotificationHelper {
public final static String DEFAULT = "default";
public final static String MEDIA_CONTROL = "media_control";
public final static String FILETRANSFER = "filetransfer";
public final static String RECEIVENOTIFICATION = "receive";
}
public static void notifyCompat(NotificationManager notificationManager, int notificationId, Notification notification) {
@@ -73,6 +74,12 @@ public class NotificationHelper {
manager.createNotificationChannel(fileTransfer);
manager.createNotificationChannel(new NotificationChannel(
Channels.RECEIVENOTIFICATION,
context.getString(R.string.notification_channel_receivenotification),
NotificationManager.IMPORTANCE_DEFAULT)
);
}

View File

@@ -27,8 +27,6 @@ import android.net.Uri;
import android.os.Build;
import android.os.Looper;
import android.provider.Telephony;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi;
import android.util.Log;
import org.json.JSONException;
@@ -42,6 +40,8 @@ import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
import androidx.annotation.RequiresApi;
public class SMSHelper {
/**
@@ -148,7 +148,7 @@ public class SMSHelper {
ThreadID threadID = new ThreadID(message.m_threadID);
if (!toReturn.containsKey(threadID)) {
toReturn.put(threadID, new ArrayList<Message>());
toReturn.put(threadID, new ArrayList<>());
}
toReturn.get(threadID).add(message);
} while (myCursor.moveToNext());
@@ -214,10 +214,10 @@ public class SMSHelper {
* Represent an ID used to uniquely identify a message thread
*/
public static class ThreadID {
final Integer threadID;
final Long threadID;
static final String lookupColumn = Telephony.Sms.THREAD_ID;
public ThreadID(Integer threadID) {
public ThreadID(Long threadID) {
this.threadID = threadID;
}
@@ -246,7 +246,7 @@ public class SMSHelper {
public final long m_date;
final int m_type;
final int m_read;
final int m_threadID;
final long m_threadID; // ThreadID is *int* for SMS messages but *long* for MMS
final int m_uID;
/**
@@ -296,7 +296,7 @@ public class SMSHelper {
m_type = Integer.parseInt(messageInfo.get(Message.TYPE));
}
m_read = Integer.parseInt(messageInfo.get(Message.READ));
m_threadID = Integer.parseInt(messageInfo.get(Message.THREAD_ID));
m_threadID = Long.parseLong(messageInfo.get(Message.THREAD_ID));
m_uID = Integer.parseInt(messageInfo.get(Message.U_ID));
}

View File

@@ -116,7 +116,7 @@ public class RsaHelper {
NetworkPacket encrypted = new NetworkPacket(NetworkPacket.PACKET_TYPE_ENCRYPTED);
encrypted.set("data", chunks);
encrypted.setPayload(np.getPayload(), np.getPayloadSize());
encrypted.setPayload(np.getPayload());
return encrypted;
}
@@ -136,7 +136,7 @@ public class RsaHelper {
}
NetworkPacket decrypted = NetworkPacket.unserialize(decryptedJson.toString());
decrypted.setPayload(np.getPayload(), np.getPayloadSize());
decrypted.setPayload(np.getPayload());
return decrypted;
}

View File

@@ -204,8 +204,6 @@ public class SslHelper {
private static void configureSslSocket(SSLSocket socket, boolean isDeviceTrusted, boolean isClient) throws SocketException {
socket.setEnabledProtocols(new String[]{"TLSv1"}); //Newer TLS versions are only supported on API 16+
// These cipher suites are most common of them that are accepted by kde and android during handshake
ArrayList<String> supportedCiphers = new ArrayList<>();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

View File

@@ -20,12 +20,16 @@
package org.kde.kdeconnect.Helpers;
import android.annotation.TargetApi;
import android.content.Context;
import android.net.Uri;
import android.os.Build;
import android.os.Environment;
import android.provider.DocumentsContract;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
@@ -33,6 +37,8 @@ import java.util.List;
import java.util.Scanner;
import java.util.StringTokenizer;
import androidx.annotation.NonNull;
//Code from http://stackoverflow.com/questions/9340332/how-can-i-get-the-list-of-mounted-external-storage-of-android-device/19982338#19982338
//modified to work on Lollipop and other devices
public class StorageHelper {
@@ -44,7 +50,7 @@ public class StorageHelper {
public final boolean removable;
public final int number;
StorageInfo(String path, boolean readonly, boolean removable, int number) {
public StorageInfo(String path, boolean readonly, boolean removable, int number) {
this.path = path;
this.readonly = readonly;
this.removable = removable;
@@ -78,7 +84,7 @@ public class StorageHelper {
}
File storage = new File("/storage/");
if (storage.exists() && storage.isDirectory()) {
if (storage.exists() && storage.isDirectory() && storage.canRead()) {
String mounts = null;
try (Scanner scanner = new Scanner(new File("/proc/mounts"))) {
mounts = scanner.useDelimiter("\\A").next();
@@ -101,7 +107,7 @@ public class StorageHelper {
if (!path.startsWith("/storage/emulated") || dirs.length == 1) {
if (!paths.contains(path) && !paths.contains(path2)) {
if (mounts == null || mounts.contains(path) || mounts.contains(path2)) {
list.add(0, new StorageInfo(path, false, true, cur_removable_number++));
list.add(0, new StorageInfo(path, dir.canWrite(), true, cur_removable_number++));
paths.add(path);
}
}
@@ -154,4 +160,37 @@ public class StorageHelper {
return list;
}
/* treeUri documentId
* ==================================================================================================
* content://com.android.providers.downloads.documents/tree/downloads => downloads
* content://com.android.externalstorage.documents/tree/1715-1D1F: => 1715-1D1F:
* content://com.android.externalstorage.documents/tree/1715-1D1F:My%20Photos => 1715-1D1F:My Photos
* content://com.android.externalstorage.documents/tree/primary: => primary:
* content://com.android.externalstorage.documents/tree/primary:DCIM => primary:DCIM
* content://com.android.externalstorage.documents/tree/primary:Download/bla => primary:Download/bla
*/
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public static String getDisplayName(@NonNull Context context, @NonNull Uri treeUri) {
List<String> pathSegments = treeUri.getPathSegments();
if (!pathSegments.get(0).equals("tree")) {
throw new IllegalArgumentException("treeUri is not valid");
}
String documentId = DocumentsContract.getTreeDocumentId(treeUri);
int colonIdx = pathSegments.get(1).indexOf(':');
if (colonIdx >= 0) {
String tree = pathSegments.get(1).substring(0, colonIdx + 1);
if (!documentId.equals(tree)) {
return documentId.substring(tree.length());
} else {
return documentId.substring(0, colonIdx);
}
}
return documentId;
}
}

View File

@@ -5,12 +5,4 @@ import java.nio.charset.Charset;
public class StringsHelper {
public static final Charset UTF8 = Charset.forName("UTF-8");
public static int compare(String a, String b) {
if (a == b) return 0;
if (a == null) return -1;
if (b == null) return 1;
return a.compareToIgnoreCase(b);
}
}

View File

@@ -30,7 +30,9 @@ import org.kde.kdeconnect.Helpers.DeviceHelper;
import org.kde.kdeconnect.Plugins.PluginFactory;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
@@ -53,9 +55,8 @@ public class NetworkPacket {
private long mId;
String mType;
private JSONObject mBody;
private InputStream mPayload;
private Payload mPayload;
private JSONObject mPayloadTransferInfo;
private long mPayloadSize;
private NetworkPacket() {
@@ -66,7 +67,6 @@ public class NetworkPacket {
mType = type;
mBody = new JSONObject();
mPayload = null;
mPayloadSize = 0;
mPayloadTransferInfo = new JSONObject();
}
@@ -242,7 +242,7 @@ public class NetworkPacket {
jo.put("type", mType);
jo.put("body", mBody);
if (hasPayload()) {
jo.put("payloadSize", mPayloadSize);
jo.put("payloadSize", mPayload.payloadSize);
jo.put("payloadTransferInfo", mPayloadTransferInfo);
}
//QJSon does not escape slashes, but Java JSONObject does. Converting to QJson format.
@@ -258,10 +258,10 @@ public class NetworkPacket {
np.mBody = jo.getJSONObject("body");
if (jo.has("payloadSize")) {
np.mPayloadTransferInfo = jo.getJSONObject("payloadTransferInfo");
np.mPayloadSize = jo.getLong("payloadSize");
np.mPayload = new Payload(jo.getLong("payloadSize"));
} else {
np.mPayloadTransferInfo = new JSONObject();
np.mPayloadSize = 0;
np.mPayload = new Payload(0);
}
return np;
}
@@ -276,8 +276,8 @@ public class NetworkPacket {
np.mBody.put("deviceName", DeviceHelper.getDeviceName(context));
np.mBody.put("protocolVersion", NetworkPacket.ProtocolVersion);
np.mBody.put("deviceType", DeviceHelper.getDeviceType(context).toString());
np.mBody.put("incomingCapabilities", new JSONArray(PluginFactory.getIncomingCapabilities(context)));
np.mBody.put("outgoingCapabilities", new JSONArray(PluginFactory.getOutgoingCapabilities(context)));
np.mBody.put("incomingCapabilities", new JSONArray(PluginFactory.getIncomingCapabilities()));
np.mBody.put("outgoingCapabilities", new JSONArray(PluginFactory.getOutgoingCapabilities()));
} catch (Exception e) {
e.printStackTrace();
Log.e("NetworkPacakge", "Exception on createIdentityPacket");
@@ -287,29 +287,18 @@ public class NetworkPacket {
}
public void setPayload(byte[] data) {
setPayload(new ByteArrayInputStream(data), data.length);
}
public void setPayload(Payload payload) { mPayload = payload; }
public void setPayload(InputStream stream, long size) {
mPayload = stream;
mPayloadSize = size;
}
/*public void setPayload(InputStream stream) {
setPayload(stream, -1);
}*/
public InputStream getPayload() {
public Payload getPayload() {
return mPayload;
}
public long getPayloadSize() {
return mPayloadSize;
return mPayload == null ? 0 : mPayload.payloadSize;
}
public boolean hasPayload() {
return (mPayload != null);
return (mPayload != null && mPayload.payloadSize != 0);
}
public boolean hasPayloadTransferInfo() {
@@ -323,4 +312,54 @@ public class NetworkPacket {
public void setPayloadTransferInfo(JSONObject payloadTransferInfo) {
mPayloadTransferInfo = payloadTransferInfo;
}
public static class Payload {
private InputStream inputStream;
private Socket inputSocket;
private long payloadSize;
Payload(long payloadSize) {
this((InputStream)null, payloadSize);
}
public Payload(byte[] data) {
this(new ByteArrayInputStream(data), data.length);
}
/**
* <b>NOTE: Do not use this to set an SSLSockets InputStream as the payload, use Payload(Socket, long) instead because of this <a href="https://issuetracker.google.com/issues/37018094">bug</a></b>
*/
public Payload(InputStream inputStream, long payloadSize) {
this.inputSocket = null;
this.inputStream = inputStream;
this.payloadSize = payloadSize;
}
public Payload(Socket inputSocket, long payloadSize) throws IOException {
this.inputSocket = inputSocket;
this.inputStream = inputSocket.getInputStream();
this.payloadSize = payloadSize;
}
/**
* <b>NOTE: Do not close the InputStream directly call Payload.close() instead, this is because of this <a href="https://issuetracker.google.com/issues/37018094">bug</a></b>
*/
public InputStream getInputStream() { return inputStream; }
long getPayloadSize() { return payloadSize; }
public void close() {
//TODO: If socket only close socket if that also closes the streams that is
try {
if (inputStream != null) {
inputStream.close();
}
} catch(IOException ignored) {}
try {
if (inputSocket != null) {
inputSocket.close();
}
} catch (IOException ignored) {}
}
}
}

View File

@@ -28,9 +28,10 @@ import android.os.BatteryManager;
import org.kde.kdeconnect.NetworkPacket;
import org.kde.kdeconnect.Plugins.Plugin;
import org.kde.kdeconnect.Plugins.PluginFactory;
import org.kde.kdeconnect_tp.R;
@PluginFactory.LoadablePlugin
public class BatteryPlugin extends Plugin {
private final static String PACKET_TYPE_BATTERY = "kdeconnect.battery";

View File

@@ -22,8 +22,10 @@ package org.kde.kdeconnect.Plugins.ClibpoardPlugin;
import org.kde.kdeconnect.NetworkPacket;
import org.kde.kdeconnect.Plugins.Plugin;
import org.kde.kdeconnect.Plugins.PluginFactory;
import org.kde.kdeconnect_tp.R;
@PluginFactory.LoadablePlugin
public class ClipboardPlugin extends Plugin {
private final static String PACKET_TYPE_CLIPBOARD = "kdeconnect.clipboard";

View File

@@ -34,6 +34,7 @@ import org.kde.kdeconnect.Helpers.ContactsHelper.VCardBuilder;
import org.kde.kdeconnect.Helpers.ContactsHelper.uID;
import org.kde.kdeconnect.NetworkPacket;
import org.kde.kdeconnect.Plugins.Plugin;
import org.kde.kdeconnect.Plugins.PluginFactory;
import org.kde.kdeconnect_tp.R;
import java.util.ArrayList;
@@ -43,6 +44,7 @@ import java.util.Map;
import java.util.Set;
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2)
@PluginFactory.LoadablePlugin
public class ContactsPlugin extends Plugin {
/**

View File

@@ -80,7 +80,7 @@ public class FindMyPhoneActivity extends Activity {
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
Uri ringtone;
String ringtoneString = prefs.getString("select_ringtone", "");
String ringtoneString = prefs.getString(getString(R.string.findmyphone_preference_key_ringtone), "");
if (ringtoneString.isEmpty()) {
ringtone = Settings.System.DEFAULT_RINGTONE_URI;
} else {

View File

@@ -20,13 +20,17 @@
package org.kde.kdeconnect.Plugins.FindMyPhonePlugin;
import android.app.Activity;
import android.content.Intent;
import org.kde.kdeconnect.Helpers.DeviceHelper;
import org.kde.kdeconnect.NetworkPacket;
import org.kde.kdeconnect.Plugins.Plugin;
import org.kde.kdeconnect.Plugins.PluginFactory;
import org.kde.kdeconnect.UserInterface.PluginSettingsFragment;
import org.kde.kdeconnect_tp.R;
@PluginFactory.LoadablePlugin
public class FindMyPhonePlugin extends Plugin {
public final static String PACKET_TYPE_FINDMYPHONE_REQUEST = "kdeconnect.findmyphone.request";
@@ -75,4 +79,8 @@ public class FindMyPhonePlugin extends Plugin {
return true;
}
@Override
public PluginSettingsFragment getSettingsFragment(Activity activity) {
return FindMyPhoneSettingsFragment.newInstance(getPluginKey());
}
}

View File

@@ -0,0 +1,113 @@
/*
* Copyright 2018 Erik Duisters <e.duisters1@gmail.com>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of
* the License or (at your option) version 3 or any later version
* accepted by the membership of KDE e.V. (or its successor approved
* by the membership of KDE e.V.), which shall act as a proxy
* defined in Section 14 of version 3 of the license.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.kde.kdeconnect.Plugins.FindMyPhonePlugin;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
import org.kde.kdeconnect.UserInterface.PluginSettingsFragment;
import org.kde.kdeconnect_tp.R;
import androidx.annotation.NonNull;
import androidx.preference.Preference;
import androidx.preference.PreferenceManager;
public class FindMyPhoneSettingsFragment extends PluginSettingsFragment {
private static final int REQUEST_CODE_SELECT_RINGTONE = 1000;
private String preferenceKeyRingtone;
private SharedPreferences sharedPreferences;
private Preference ringtonePreference;
public static FindMyPhoneSettingsFragment newInstance(@NonNull String pluginKey) {
FindMyPhoneSettingsFragment fragment = new FindMyPhoneSettingsFragment();
fragment.setArguments(pluginKey);
return fragment;
}
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
super.onCreatePreferences(savedInstanceState, rootKey);
preferenceKeyRingtone = getString(R.string.findmyphone_preference_key_ringtone);
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(requireContext());
ringtonePreference = getPreferenceScreen().findPreference(preferenceKeyRingtone);
setRingtoneSummary();
}
private void setRingtoneSummary() {
String ringtone = sharedPreferences.getString(preferenceKeyRingtone, Settings.System.DEFAULT_RINGTONE_URI.toString());
Uri ringtoneUri = Uri.parse(ringtone);
ringtonePreference.setSummary(RingtoneManager.getRingtone(requireContext(), ringtoneUri).getTitle(requireContext()));
}
@Override
public boolean onPreferenceTreeClick(Preference preference) {
/*
* There is no RingtonePreference in support library nor androidx, this is the workaround proposed here:
* https://issuetracker.google.com/issues/37057453
*/
if (preference.hasKey() && preference.getKey().equals(preferenceKeyRingtone)) {
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_SILENT, false);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, Settings.System.DEFAULT_NOTIFICATION_URI);
String existingValue = sharedPreferences.getString(preferenceKeyRingtone, null);
if (existingValue != null) {
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, Uri.parse(existingValue));
} else {
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, Settings.System.DEFAULT_RINGTONE_URI);
}
startActivityForResult(intent, REQUEST_CODE_SELECT_RINGTONE);
return true;
}
return super.onPreferenceTreeClick(preference);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_CODE_SELECT_RINGTONE && resultCode == Activity.RESULT_OK) {
Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
if (uri != null) {
sharedPreferences.edit()
.putString(preferenceKeyRingtone, uri.toString())
.apply();
setRingtoneSummary();
}
}
}
}

View File

@@ -25,9 +25,10 @@ import android.app.Activity;
import org.kde.kdeconnect.NetworkPacket;
import org.kde.kdeconnect.Plugins.FindMyPhonePlugin.FindMyPhonePlugin;
import org.kde.kdeconnect.Plugins.Plugin;
import org.kde.kdeconnect.Plugins.PluginFactory;
import org.kde.kdeconnect_tp.R;
@PluginFactory.LoadablePlugin
public class FindRemoteDevicePlugin extends Plugin {
@Override

View File

@@ -25,7 +25,6 @@ import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.view.GestureDetector;
import android.view.HapticFeedbackConstants;
import android.view.Menu;
@@ -39,6 +38,8 @@ import org.kde.kdeconnect.BackgroundService;
import org.kde.kdeconnect.UserInterface.ThemeUtil;
import org.kde.kdeconnect_tp.R;
import androidx.appcompat.app.AppCompatActivity;
public class MousePadActivity extends AppCompatActivity implements GestureDetector.OnGestureListener, GestureDetector.OnDoubleTapListener, MousePadGestureDetector.OnGestureListener {
private String deviceId;
@@ -221,7 +222,7 @@ public class MousePadActivity extends AppCompatActivity implements GestureDetect
mCurrentX = event.getX();
mCurrentY = event.getY();
BackgroundService.runWithPlugin(this, deviceId, MousePadPlugin.class, plugin -> {
BackgroundService.RunWithPlugin(this, deviceId, MousePadPlugin.class, plugin -> {
float deltaX = (mCurrentX - mPrevX) * displayDpiMultiplier * mCurrentSensitivity;
float deltaY = (mCurrentY - mPrevY) * displayDpiMultiplier * mCurrentSensitivity;
@@ -292,7 +293,7 @@ public class MousePadActivity extends AppCompatActivity implements GestureDetect
@Override
public void onLongPress(MotionEvent e) {
getWindow().getDecorView().performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY);
BackgroundService.runWithPlugin(this, deviceId, MousePadPlugin.class, MousePadPlugin::sendSingleHold);
BackgroundService.RunWithPlugin(this, deviceId, MousePadPlugin.class, MousePadPlugin::sendSingleHold);
}
@Override
@@ -302,13 +303,13 @@ public class MousePadActivity extends AppCompatActivity implements GestureDetect
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
BackgroundService.runWithPlugin(this, deviceId, MousePadPlugin.class, MousePadPlugin::sendSingleClick);
BackgroundService.RunWithPlugin(this, deviceId, MousePadPlugin.class, MousePadPlugin::sendSingleClick);
return true;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
BackgroundService.runWithPlugin(this, deviceId, MousePadPlugin.class, MousePadPlugin::sendDoubleClick);
BackgroundService.RunWithPlugin(this, deviceId, MousePadPlugin.class, MousePadPlugin::sendDoubleClick);
return true;
}
@@ -347,19 +348,21 @@ public class MousePadActivity extends AppCompatActivity implements GestureDetect
private void sendMiddleClick() {
BackgroundService.runWithPlugin(this, deviceId, MousePadPlugin.class, MousePadPlugin::sendMiddleClick);
BackgroundService.RunWithPlugin(this, deviceId, MousePadPlugin.class, MousePadPlugin::sendMiddleClick);
}
private void sendRightClick() {
BackgroundService.runWithPlugin(this, deviceId, MousePadPlugin.class, MousePadPlugin::sendRightClick);
BackgroundService.RunWithPlugin(this, deviceId, MousePadPlugin.class, MousePadPlugin::sendRightClick);
}
private void sendScroll(final float y) {
BackgroundService.runWithPlugin(this, deviceId, MousePadPlugin.class, plugin -> plugin.sendScroll(0, y));
BackgroundService.RunWithPlugin(this, deviceId, MousePadPlugin.class, plugin -> plugin.sendScroll(0, y));
}
//TODO: Does not work on KitKat with or without requestFocus()
private void showKeyboard() {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
keyListenerView.requestFocus();
imm.toggleSoftInputFromWindow(keyListenerView.getWindowToken(), 0, 0);
}

View File

@@ -23,12 +23,15 @@ package org.kde.kdeconnect.Plugins.MousePadPlugin;
import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.support.v4.content.ContextCompat;
import org.kde.kdeconnect.NetworkPacket;
import org.kde.kdeconnect.Plugins.Plugin;
import org.kde.kdeconnect.Plugins.PluginFactory;
import org.kde.kdeconnect_tp.R;
import androidx.core.content.ContextCompat;
@PluginFactory.LoadablePlugin
public class MousePadPlugin extends Plugin {
//public final static String PACKET_TYPE_MOUSEPAD = "kdeconnect.mousepad";

View File

@@ -28,11 +28,12 @@ import android.graphics.BitmapFactory;
import android.net.ConnectivityManager;
import android.os.AsyncTask;
import android.os.Build;
import android.support.v4.util.LruCache;
import android.util.Log;
import com.jakewharton.disklrucache.DiskLruCache;
import org.kde.kdeconnect.NetworkPacket;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
@@ -45,6 +46,8 @@ import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import androidx.collection.LruCache;
/**
* Handles the cache for album art
*/
@@ -243,7 +246,7 @@ final class AlbumArtCache {
private static final class FetchURLTask extends AsyncTask<Void, Void, Boolean> {
private final URL url;
private InputStream input;
private NetworkPacket.Payload payload;
private final DiskLruCache.Editor cacheItem;
private OutputStream output;
@@ -251,12 +254,12 @@ final class AlbumArtCache {
* Initialize an url fetch
*
* @param url The url being fetched
* @param payloadInput A payload input stream (if from the connected device). null if fetched from http(s)
* @param payload A NetworkPacket Payload (if from the connected device). null if fetched from http(s)
* @param cacheItem The disk cache item to edit
*/
FetchURLTask(URL url, InputStream payloadInput, DiskLruCache.Editor cacheItem) throws IOException {
FetchURLTask(URL url, NetworkPacket.Payload payload, DiskLruCache.Editor cacheItem) throws IOException {
this.url = url;
this.input = payloadInput;
this.payload = payload;
this.cacheItem = cacheItem;
output = cacheItem.newOutputStream(0);
}
@@ -266,7 +269,7 @@ final class AlbumArtCache {
*
* @return True if succeeded
*/
private boolean openHttp() throws IOException {
private InputStream openHttp() throws IOException {
//Default android behaviour does not follow https -> http urls, so do this manually
if (!url.getProtocol().equals("http") && !url.getProtocol().equals("https")) {
throw new AssertionError("Invalid url: not http(s) in background album art fetch");
@@ -287,28 +290,25 @@ final class AlbumArtCache {
currentUrl = new URL(currentUrl, location); // Deal with relative URLs
//Again, only support http(s)
if (!currentUrl.getProtocol().equals("http") && !currentUrl.getProtocol().equals("https")) {
return false;
return null;
}
connection.disconnect();
continue;
}
//Found a non-redirecting connection, so do something with it
input = connection.getInputStream();
return true;
return connection.getInputStream();
}
return false;
return null;
}
@Override
protected Boolean doInBackground(Void... params) {
try {
//See if we need to open a http(s) connection here, or if we use a payload input stream
//See if we need to open a http(s) connection here, or if we use a payload input stream
try (InputStream input = payload == null ? openHttp() : payload.getInputStream()) {
if (input == null) {
if (!openHttp()) {
return false;
}
return false;
}
byte[] buffer = new byte[4096];
@@ -321,6 +321,10 @@ final class AlbumArtCache {
return true;
} catch (IOException e) {
return false;
} finally {
if (payload != null) {
payload.close();
}
}
}
@@ -425,16 +429,15 @@ final class AlbumArtCache {
* @param albumUrl The url of the album art (should be a file:// url)
* @param payload The payload input stream
*/
static void payloadToDiskCache(String albumUrl, InputStream payload) {
static void payloadToDiskCache(String albumUrl, NetworkPacket.Payload payload) {
//We need the disk cache for this
if (diskCache == null) {
Log.e("KDE/Mpris/AlbumArtCache", "The disk cache is not intialized!");
try {
payload.close();
} catch (IOException ignored) {}
if (payload == null) {
return;
}
if (payload == null) {
if (diskCache == null) {
Log.e("KDE/Mpris/AlbumArtCache", "The disk cache is not intialized!");
payload.close();
return;
}
@@ -443,41 +446,31 @@ final class AlbumArtCache {
url = new URL(albumUrl);
} catch (MalformedURLException e) {
//Shouldn't happen (checked on receival of the url), but just to be sure
try {
payload.close();
} catch (IOException ignored) {}
payload.close();
return;
}
if (!"file".equals(url.getProtocol())) {
//Shouldn't happen (otherwise we wouldn't have asked for the payload), but just to be sure
try {
payload.close();
} catch (IOException ignored) {}
payload.close();
return;
}
//Only fetch the URL if we're not fetching it already
if (isFetchingList.contains(url)) {
try {
payload.close();
} catch (IOException ignored) {}
payload.close();
return;
}
//Check if we already have this art
try {
if (memoryCache.get(albumUrl) != null || diskCache.get(urlToDiskCacheKey(albumUrl)) != null) {
try {
payload.close();
} catch (IOException ignored) {}
payload.close();
return;
}
} catch (IOException e) {
Log.e("KDE/Mpris/AlbumArtCache", "Disk cache problem!", e);
try {
payload.close();
} catch (IOException ignored) {}
payload.close();
return;
}
@@ -491,9 +484,7 @@ final class AlbumArtCache {
Log.e("KDE/Mpris/AlbumArtCache",
"Two disk cache edits happened at the same time, should be impossible!");
--numFetching;
try {
payload.close();
} catch (IOException ignored) {}
payload.close();
return;
}

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