Compare commits

...

100 Commits

Author SHA1 Message Date
akwizgran
75dfa80541 Bump version numbers for 1.2.4 release. 2019-11-06 09:58:00 +00:00
akwizgran
41b59fbcfe Merge branch '1610-pending-contacts-offline-snackbar' into 'master'
Don't show offline snackbar when there's no pending contacts

Closes #1610

See merge request briar/briar!1193
2019-11-06 09:50:39 +00:00
akwizgran
98a4f5def1 Merge branch '1654-notification-channel-unavailable' into 'master'
Fail gracefully when ACTION_CHANNEL_NOTIFICATION_SETTINGS is not available

Closes #1654

See merge request briar/briar!1192
2019-11-06 09:49:21 +00:00
akwizgran
aeefa35f38 Merge branch '1454-theme-system-crash' into 'master'
Prevent crash when user has set theme to system default on unsupported API level

Closes #1454

See merge request briar/briar!1191
2019-11-06 09:46:48 +00:00
akwizgran
4e7f33edfd Merge branch '1483-group-invite-not-allowed' into 'master'
Make sure group actions can only be made by the correct role

See merge request briar/briar!1190
2019-11-06 09:45:28 +00:00
akwizgran
f1e957ffed Merge branch '1655-no-bluetooth-activity' into 'master'
Check if REQUEST_BLUETOOTH_DISCOVERABLE is available before launching

Closes #1655

See merge request briar/briar!1189
2019-11-06 09:42:00 +00:00
akwizgran
9e3fed6bc0 Merge branch '1651-no-ringtone-picker' into 'master'
Check if ringtone picker is available before launching it

Closes #1485 and #1651

See merge request briar/briar!1188
2019-11-06 09:40:30 +00:00
Torsten Grote
bf9a39cc6c [android] don't show offline snackbar when there's no pending contacts
If the pending contact list is opened concurrently
with the last pending contact being removed (unlikely but possible)
then the "no internet connection" snackbar would be shown
even though the app is connected to Tor.
2019-11-05 15:35:10 -03:00
Torsten Grote
72aa5397f8 [android] fail gracefully when ACTION_CHANNEL_NOTIFICATION_SETTINGS is not available 2019-11-05 15:17:10 -03:00
Torsten Grote
21eaab3259 [android] prevent crash when user has set theme to system default
on an API level that does not support it.
2019-11-05 14:57:25 -03:00
Torsten Grote
92d595da35 [android] make sure group actions can only be made by the correct role 2019-11-05 14:46:10 -03:00
Torsten Grote
5e85566fc3 [android] check if REQUEST_BLUETOOTH_DISCOVERABLE is available before launching 2019-11-05 12:54:02 -03:00
Torsten Grote
1574bf35fc [android] do not use file:// Uris for notification sounds
This causes a FileUriExposedException otherwise.

Closes #1485
2019-11-05 12:31:25 -03:00
Torsten Grote
533e01e881 [android] check if ringtone picker is available before launching
Also refuse file:// Uri as they cause a FileUriExposedException as in #1485
2019-11-05 12:03:00 -03:00
akwizgran
383367f0c8 Merge branch 'remove-remove-contacts-feature-flag' into 'master'
Remove contacts feature flag

See merge request briar/briar!1185
2019-11-01 14:29:37 +00:00
Torsten Grote
ca052ea7dd update translations 2019-11-01 11:12:26 -03:00
Torsten Grote
5147f6b7e6 Remove RemoteContacts feature flag in preparation of 1.2 release 2019-11-01 11:09:43 -03:00
akwizgran
84a8ff1dd8 Merge branch '1629-delete-message-subset' into 'master'
Support for deleting a subset of all conversation messages

Closes #1629

See merge request briar/briar!1180
2019-10-28 16:52:41 +00:00
Torsten Grote
6c489fbea3 [core] also delete attachments when deleting select messages 2019-10-28 10:22:04 -03:00
Torsten Grote
c7200910c9 [core] address feedback for selective conversation message deletion 2019-10-28 09:45:41 -03:00
akwizgran
663e5c4b46 Merge branch '1405-emoji-keyboard' into 'master'
Always show keyboard when clicking text input field

Closes #1405

See merge request briar/briar!1181
2019-10-28 12:16:15 +00:00
Torsten Grote
529eaceec7 [android] show keyboard when clicking text input field 2019-10-22 12:43:35 -03:00
Torsten Grote
f516dbe34f [core] add method to ConversationManager for deleting a set of messages 2019-10-22 11:18:10 -03:00
Torsten Grote
5b515d7e18 [core] implement subset conversation message deletion for IntroductionManager 2019-10-22 11:18:10 -03:00
Torsten Grote
ef04a26cfc [core] implement subset conversation message deletion for GroupInvitationManager 2019-10-22 11:18:09 -03:00
Torsten Grote
2e6fe42074 [core] implement subset conversation message deletion for SharingManager 2019-10-22 11:18:09 -03:00
Torsten Grote
124e2f99b0 [core] Add method to ConversationClient for deleting a set of messages
This also implements the method for MessagingManager
(including integration tests) and adds no-op implementations for other
clients.
2019-10-22 11:18:09 -03:00
Torsten Grote
190a6bff96 [core] Add method to ConversationClient that returns a set of MessageIds it is responsible for 2019-10-22 11:18:08 -03:00
Torsten Grote
01df141c08 Merge branch '843-landscape-keyboard' into 'master'
Raise target API version to 28 and fix soft keyboard issues

Closes #1505

See merge request briar/briar!1043
2019-10-21 12:38:38 +00:00
Torsten Grote
d7c9bf80de Merge branch 'xml-formatting-settings' into 'master'
Update XML code style settings

See merge request briar/briar!1178
2019-10-18 16:51:30 +00:00
akwizgran
3a5e51e248 Update XML code style settings. 2019-10-18 17:38:41 +01:00
akwizgran
a76e3dcec1 Fix bug with enter key when rotating screen. 2019-10-18 14:03:01 +01:00
akwizgran
0fdc7199ed Hide keyboard when contact alias dialog is closed. 2019-10-18 14:03:01 +01:00
akwizgran
248f482fee Use requestFocus tag for RSS import. 2019-10-18 14:03:00 +01:00
akwizgran
4196d046a3 Use stateAlwaysVisible for consistent behaviour. 2019-10-18 14:03:00 +01:00
akwizgran
722ebb22f6 Use requestFocus tag to request initial focus. 2019-10-18 13:45:48 +01:00
akwizgran
a4f561ca1a Request focus when showing soft keyboard. 2019-10-18 13:45:48 +01:00
akwizgran
c7db0bf6fa Remove unused listener implementation. 2019-10-18 13:45:47 +01:00
akwizgran
ca6f458551 Always hide keyboard when importing RSS feed. 2019-10-18 13:45:47 +01:00
akwizgran
c85990408a Remove redundant requestFocus() call. 2019-10-18 13:45:47 +01:00
akwizgran
3ed0204170 Clean up soft input modes. 2019-10-18 13:45:46 +01:00
akwizgran
e2b3340734 Remove redundant methods for showing/hiding keyboard. 2019-10-18 13:45:45 +01:00
akwizgran
78aac8de52 Replace EditText with TextInputEditText. 2019-10-18 13:45:45 +01:00
akwizgran
971ae3a20e Raise target API level to 28. 2019-10-18 13:45:44 +01:00
Torsten Grote
622e7a775a [android] Soft keyboard fixes
1. Manually request focus for input fields and show keyboard

This is needed when targetting API 28 which doesn't give focus anymore
automatically like it used to be.

Closes #1505

2. Remember keyboard states across screen rotations

This also upgrades the emoji library and gets rid of the
KeyboardAwareLinearLayout that is still a relict from the time when we
were using Signal's emoji implementation.

3. Move soft keyboard showing/hiding into UiUtils
2019-10-18 13:44:44 +01:00
akwizgran
103e8482b0 Merge branch 'codeStylesAS3.5' into 'master'
Android Studio 3.5 changed our codeStyles

See merge request briar/briar!1177
2019-10-17 16:56:13 +00:00
Torsten Grote
ddcfc11012 Android Studio 3.5 changed our codeStyles 2019-10-17 13:33:51 -03:00
akwizgran
ab2e40abde Merge branch '1565-duplicate-remote-contacts' into 'master'
UX for handling duplicate handshake links

Closes #1565

See merge request briar/briar!1173
2019-10-16 16:16:08 +00:00
Torsten Grote
1ddceaadd6 Always replace pending contacts no matter their state when link is re-entered 2019-10-16 13:06:21 -03:00
akwizgran
7a644f7d8b Merge branch '1210-fix-list-duplicates' into 'master'
[android] Fix duplicate items in lists

Closes #1210

See merge request briar/briar!1174
2019-10-16 14:32:49 +00:00
Torsten Grote
397afbfec0 Address review comments for detecting duplicate (pending) contacts 2019-10-16 11:15:14 -03:00
Torsten Grote
0d4cb05ac0 [android] fix possible duplicates in list
When doing reloads of list items such as when adding test contacts,
we loaded different versions of those items and added them to the list.
According to the documentation
https://developer.android.com/reference/android/support/v7/util/SortedList.html#add
> If the sorting criteria of the item is changed,
> SortedList won't be able to find its duplicate in the list
> which will result in having a duplicate of the Item in the list.

For the contact list at least, new contacts caused reloads of the entire list
and new messages caused the contacts to be sorted differently.
Thus we ended up with duplicate contacts in the list.

This commit fixes this by replacing the contacts in the list instead of adding them.
It applies the same fix to forums and private groups
which use the same logic and are thus also affected.

Fixes #1210
2019-10-15 16:25:10 -03:00
Torsten Grote
aa0937e6aa [android] Show dialog when (pending) contact already exists
If two different people sent the same link, show warning dialog to the
user to prevent a social attack trying to discover contact
relationships.
2019-10-15 14:47:42 -03:00
Torsten Grote
4bf8d4c0e7 [bramble] add method for getting pending contact state 2019-10-15 14:46:37 -03:00
Torsten Grote
75fcd28071 [bramble] throw exceptions when adding pending contact which exists 2019-10-15 10:32:52 -03:00
Torsten Grote
5f29ab3b40 [bramble-core] Add DB method for getting contact by handshake key 2019-10-15 10:12:59 -03:00
Torsten Grote
f45d00e23c Update translations, add Bosnian and Swahili 2019-10-14 15:11:44 -03:00
akwizgran
2b589c2da6 Merge branch 'tor64' into 'master'
Add support for 64-bit Tor binaries

Closes #1506

See merge request briar/briar!1161
2019-10-14 16:33:53 +00:00
akwizgran
67d15ec82e Merge branch '1633-min-api-16' into 'master'
[android] Raise minimum API level to 16

Closes #1633

See merge request briar/briar!1171
2019-10-14 15:37:43 +00:00
akwizgran
2d44d749ba Merge branch '1627-test-fix' into 'master'
Fix group sharing message deletion test

See merge request briar/briar!1168
2019-10-14 15:36:12 +00:00
Torsten Grote
6ef86c5638 Merge branch 'remove-tor-settings-migration' into 'master'
Remove old migration code for Tor settings

See merge request briar/briar!1172
2019-10-14 15:28:24 +00:00
akwizgran
131f9b9696 Remove old migration code for Tor settings. 2019-10-14 16:00:43 +01:00
akwizgran
a876d4cfb7 Remove a couple of redundant comments. 2019-10-14 15:59:14 +01:00
akwizgran
fafcacf808 Remove a couple more API version checks. 2019-10-14 15:56:44 +01:00
akwizgran
7a0d990f0b Don't include non-PIE binaries in APK.
This shouldn't be merged before raising the minimum
API version to 16.
2019-10-14 15:49:37 +01:00
Torsten Grote
234bdf686e [android] Raise minimum API level to 16 2019-10-14 11:49:06 -03:00
akwizgran
edb9da107f Merge branch '1632-allow-resharing-shareable' into 'master'
Allow sharer to re-share a shareable again after leaving

Closes #1632

See merge request briar/briar!1169
2019-10-14 14:29:38 +00:00
Torsten Grote
d1d4914c6a Merge branch '1582-restore-recycler-view-behaviour' into 'master'
Restore custom layout behaviour for handling snackbar

Closes #1582

See merge request briar/briar!1170
2019-10-14 14:26:01 +00:00
Torsten Grote
9261d23bba [core] allow sharer to re-share a shareable again after leaving 2019-10-14 11:13:01 -03:00
akwizgran
f4febe90c9 Restore custom layout behaviour for handling snackbar. 2019-10-14 14:45:23 +01:00
Torsten Grote
ecd766b204 [core] Fix group sharing message deletion test 2019-10-14 09:40:52 -03:00
akwizgran
ca4fc2dc26 Merge branch '1627-delete-completed-privategroup-sessions' into 'master'
Delete conversation messages belonging to completed private group sessions

Closes #1627

See merge request briar/briar!1167
2019-10-14 11:57:27 +00:00
akwizgran
c3ddcdffe0 Merge branch '1627-delete-completed-sharing-sessions' into 'master'
Delete conversation messages belonging to completed sharing sessions

See merge request briar/briar!1164
2019-10-14 11:45:30 +00:00
Torsten Grote
2e37619357 [android] use new obfs4 release with only pie builds and fixed arm64 2019-10-10 10:01:15 -03:00
Torsten Grote
c247d745df [bramble-android] add support for 64-bit Tor binaries 2019-10-10 09:29:24 -03:00
akwizgran
3a4de3d2cb Merge branch '68-fix-message-tracker' into 'master'
Fix MessageTracker group counts after deleting messages

See merge request briar/briar!1166
2019-10-10 08:54:45 +00:00
Torsten Grote
04f1036dbf [android] Change non-deletion message to refer to ongoing sessions 2019-10-09 17:21:41 -03:00
Torsten Grote
9736f9d31f [core] allow messages from private group sessions with responses get deleted 2019-10-09 17:21:41 -03:00
Torsten Grote
440d5239b1 [core] track GroupCount properly when deleting messages from SharingManager 2019-10-09 13:32:41 -03:00
Torsten Grote
e4a8b10b94 [core] allow messages from shareable sessions with responses get deleted 2019-10-09 13:22:37 -03:00
Torsten Grote
41676065c5 [core] Fix MessageTracker group counts after deleting messages 2019-10-09 13:19:43 -03:00
Torsten Grote
1fcc83a0d0 Merge branch 'feature-flag-message-deletion' into 'master'
Add feature flag for private message deletion

See merge request briar/briar!1165
2019-10-09 15:56:17 +00:00
akwizgran
249b85cd26 Add feature flag for private message deletion. 2019-10-09 16:22:04 +01:00
akwizgran
a23e0699d8 Merge branch '1627-delete-completed-introduction-sessions' into 'master'
Delete conversation messages belonging to completed introduction sessions

See merge request briar/briar!1163
2019-10-09 12:39:05 +00:00
Torsten Grote
e3e47dae48 [core] throw AssertionError if SessionId is missing
Also remove stale comment
2019-10-09 08:27:33 -03:00
Torsten Grote
9660ff2fff [core] delete conversation messages belonging to completed introduction sessions
A session is completed if it returned to the START state
and if all sent messages have been ACKed by the receiver.

The session's metadata is kept in case the user restarts the session
by doing another introduction.
2019-10-09 08:24:16 -03:00
akwizgran
ea810c817b Merge branch '1626-delete-all-messages-ui' into 'master'
Add conversation menu action to delete all messages

Closes #1626

See merge request briar/briar!1159
2019-10-07 16:56:44 +00:00
Torsten Grote
876d50975e [android] fix typo s/can not/cannot/ 2019-10-07 12:08:18 -03:00
akwizgran
bf5bdc52b4 Merge branch '1577-headless-readme-improvements' into 'master'
Clarify minor things in headless readme

Closes #1577

See merge request briar/briar!1157
2019-10-07 14:55:17 +00:00
akwizgran
29320c410e Merge branch '1625-conversation-client-message-deletion' into 'master'
Add ConversationManager method for deleting all messages

Closes #1625

See merge request briar/briar!1158
2019-10-07 14:44:41 +00:00
Nico Alt
d41472a18c Clarify minor things in headless readme
Based on answers received in #1577, I tried to clarify outstanding
questions I had about the Briar Headless API.

Fixes #1577.
2019-10-07 16:35:21 +02:00
akwizgran
c411065255 Merge branch '1582-pending-contacts-snackbar-fab' into 'master'
Use snackbar-aware behaviour for FAB.

Closes #1582

See merge request briar/briar!1156
2019-10-07 13:48:01 +00:00
Torsten Grote
3ac5646355 [briar-android] Add conversation menu action to delete all messages 2019-10-03 15:24:36 -03:00
Torsten Grote
c46fdce277 Add ConversationManager method for deleting all messages
Note that this does not yet delete special conversation messages
such as invitations or introductions and their responses.
2019-10-03 14:47:12 -03:00
akwizgran
643ef593e1 Use dodgeInsetEdges to make room for the snackbar. 2019-10-02 12:16:24 +01:00
akwizgran
eda17449be Merge branch '1582-pending-contacts-snackbar' into 'master'
Prevent pending contacts snackbar from covering contact list

See merge request briar/briar!1152
2019-10-01 12:18:11 +00:00
Torsten Grote
28f82a1507 Use snackbar-aware behaviour for FAB. 2019-10-01 13:01:44 +01:00
Torsten Grote
8734825346 [android] prevent pending contacts snackbar from covering contact list 2019-10-01 08:53:14 -03:00
akwizgran
640f3d63b0 Merge branch '1583-remote-contacts-small-screens' into 'master'
Make Remote Contact layouts work on small screens

Closes #1583

See merge request briar/briar!1155
2019-09-27 14:58:43 +00:00
Torsten Grote
945fdb8ee4 [android] Make Remote Contact layouts work on small screens 2019-07-01 17:56:28 +02:00
138 changed files with 5424 additions and 1134 deletions

View File

@@ -1,16 +1,7 @@
<component name="ProjectCodeStyleConfiguration"> <component name="ProjectCodeStyleConfiguration">
<code_scheme name="Project" version="173"> <code_scheme name="Project" version="173">
<option name="RIGHT_MARGIN" value="100" />
<AndroidXmlCodeStyleSettings>
<option name="USE_CUSTOM_SETTINGS" value="true" />
</AndroidXmlCodeStyleSettings>
<JavaCodeStyleSettings> <JavaCodeStyleSettings>
<option name="ANNOTATION_PARAMETER_WRAP" value="1" /> <option name="ANNOTATION_PARAMETER_WRAP" value="1" />
<option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="99" />
<option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="99" />
<option name="PACKAGES_TO_USE_IMPORT_ON_DEMAND">
<value />
</option>
<option name="IMPORT_LAYOUT_TABLE"> <option name="IMPORT_LAYOUT_TABLE">
<value> <value>
<package name="android" withSubpackages="true" static="false" /> <package name="android" withSubpackages="true" static="false" />
@@ -77,7 +68,6 @@
</indentOptions> </indentOptions>
</codeStyleSettings> </codeStyleSettings>
<codeStyleSettings language="XML"> <codeStyleSettings language="XML">
<option name="FORCE_REARRANGE_MODE" value="1" />
<indentOptions> <indentOptions>
<option name="CONTINUATION_INDENT_SIZE" value="4" /> <option name="CONTINUATION_INDENT_SIZE" value="4" />
<option name="USE_TAB_CHARACTER" value="true" /> <option name="USE_TAB_CHARACTER" value="true" />
@@ -90,7 +80,8 @@
<match> <match>
<AND> <AND>
<NAME>xmlns:android</NAME> <NAME>xmlns:android</NAME>
<XML_NAMESPACE>Namespace:</XML_NAMESPACE> <XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND> </AND>
</match> </match>
</rule> </rule>
@@ -100,7 +91,8 @@
<match> <match>
<AND> <AND>
<NAME>xmlns:.*</NAME> <NAME>xmlns:.*</NAME>
<XML_NAMESPACE>Namespace:</XML_NAMESPACE> <XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE>
</AND> </AND>
</match> </match>
<order>BY_NAME</order> <order>BY_NAME</order>
@@ -111,6 +103,7 @@
<match> <match>
<AND> <AND>
<NAME>.*:id</NAME> <NAME>.*:id</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND> </AND>
</match> </match>
@@ -121,6 +114,7 @@
<match> <match>
<AND> <AND>
<NAME>.*:name</NAME> <NAME>.*:name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND> </AND>
</match> </match>
@@ -131,6 +125,7 @@
<match> <match>
<AND> <AND>
<NAME>name</NAME> <NAME>name</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE> <XML_NAMESPACE>^$</XML_NAMESPACE>
</AND> </AND>
</match> </match>
@@ -141,6 +136,7 @@
<match> <match>
<AND> <AND>
<NAME>style</NAME> <NAME>style</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE> <XML_NAMESPACE>^$</XML_NAMESPACE>
</AND> </AND>
</match> </match>
@@ -151,6 +147,7 @@
<match> <match>
<AND> <AND>
<NAME>.*</NAME> <NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>^$</XML_NAMESPACE> <XML_NAMESPACE>^$</XML_NAMESPACE>
</AND> </AND>
</match> </match>
@@ -161,64 +158,12 @@
<rule> <rule>
<match> <match>
<AND> <AND>
<NAME>.*:layout_width</NAME> <NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE> <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND> </AND>
</match> </match>
</rule> <order>ANDROID_ATTRIBUTE_ORDER</order>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_height</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:layout_.*</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:width</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*:height</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule>
</section>
<section>
<rule>
<match>
<AND>
<NAME>.*</NAME>
<XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
</AND>
</match>
<order>BY_NAME</order>
</rule> </rule>
</section> </section>
<section> <section>
@@ -226,6 +171,7 @@
<match> <match>
<AND> <AND>
<NAME>.*</NAME> <NAME>.*</NAME>
<XML_ATTRIBUTE />
<XML_NAMESPACE>.*</XML_NAMESPACE> <XML_NAMESPACE>.*</XML_NAMESPACE>
</AND> </AND>
</match> </match>

View File

@@ -9,10 +9,10 @@ android {
buildToolsVersion '28.0.3' buildToolsVersion '28.0.3'
defaultConfig { defaultConfig {
minSdkVersion 14 minSdkVersion 16
targetSdkVersion 26 targetSdkVersion 28
versionCode 10109 versionCode 10204
versionName "1.1.9" versionName "1.2.4"
consumerProguardFiles 'proguard-rules.txt' consumerProguardFiles 'proguard-rules.txt'
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@@ -30,8 +30,8 @@ configurations {
dependencies { dependencies {
implementation project(path: ':bramble-core', configuration: 'default') implementation project(path: ':bramble-core', configuration: 'default')
tor 'org.briarproject:tor-android:0.3.5.8@zip' tor 'org.briarproject:tor-android:0.3.5.8-64@zip'
tor 'org.briarproject:obfs4proxy-android:0.0.9@zip' tor 'org.briarproject:obfs4proxy-android:0.0.11-2@zip'
annotationProcessor 'com.google.dagger:dagger-compiler:2.22.1' annotationProcessor 'com.google.dagger:dagger-compiler:2.22.1'
@@ -59,6 +59,8 @@ task unpackTorBinaries {
copy { copy {
from configurations.tor.collect { zipTree(it) } from configurations.tor.collect { zipTree(it) }
into torBinariesDir into torBinariesDir
// TODO: Remove after next Tor upgrade, which won't include non-PIE binaries
include 'geoip.zip', '*_pie.zip'
} }
} }
dependsOn cleanTorBinaries dependsOn cleanTorBinaries

View File

@@ -1,7 +1,6 @@
package org.briarproject.bramble.plugin.tor; package org.briarproject.bramble.plugin.tor;
import android.content.Context; import android.content.Context;
import android.os.Build;
import org.briarproject.bramble.api.battery.BatteryManager; import org.briarproject.bramble.api.battery.BatteryManager;
import org.briarproject.bramble.api.event.EventBus; import org.briarproject.bramble.api.event.EventBus;
@@ -89,9 +88,15 @@ public class AndroidTorPluginFactory implements DuplexPluginFactory {
// Check that we have a Tor binary for this architecture // Check that we have a Tor binary for this architecture
String architecture = null; String architecture = null;
for (String abi : AndroidUtils.getSupportedArchitectures()) { for (String abi : AndroidUtils.getSupportedArchitectures()) {
if (abi.startsWith("x86")) { if (abi.startsWith("x86_64")) {
architecture = "x86_64";
break;
} else if (abi.startsWith("x86")) {
architecture = "x86"; architecture = "x86";
break; break;
} else if (abi.startsWith("arm64")) {
architecture = "arm64";
break;
} else if (abi.startsWith("armeabi")) { } else if (abi.startsWith("armeabi")) {
architecture = "arm"; architecture = "arm";
break; break;
@@ -101,8 +106,8 @@ public class AndroidTorPluginFactory implements DuplexPluginFactory {
LOG.info("Tor is not supported on this architecture"); LOG.info("Tor is not supported on this architecture");
return null; return null;
} }
// Use position-independent executable for SDK >= 16 // Use position-independent executable
if (Build.VERSION.SDK_INT >= 16) architecture += "_pie"; architecture += "_pie";
Backoff backoff = backoffFactory.createBackoff(MIN_POLLING_INTERVAL, Backoff backoff = backoffFactory.createBackoff(MIN_POLLING_INTERVAL,
MAX_POLLING_INTERVAL, BACKOFF_BASE); MAX_POLLING_INTERVAL, BACKOFF_BASE);

View File

@@ -23,6 +23,7 @@ import javax.annotation.concurrent.Immutable;
import javax.inject.Inject; import javax.inject.Inject;
import static android.content.Context.WIFI_SERVICE; import static android.content.Context.WIFI_SERVICE;
import static android.os.Build.VERSION.SDK_INT;
import static android.provider.Settings.Secure.ANDROID_ID; import static android.provider.Settings.Secure.ANDROID_ID;
@Immutable @Immutable
@@ -74,8 +75,7 @@ class AndroidSecureRandomProvider extends UnixSecureRandomProvider {
// Silence strict mode // Silence strict mode
StrictMode.ThreadPolicy tp = StrictMode.allowThreadDiskWrites(); StrictMode.ThreadPolicy tp = StrictMode.allowThreadDiskWrites();
super.writeSeed(); super.writeSeed();
if (Build.VERSION.SDK_INT >= 16 && Build.VERSION.SDK_INT <= 18) if (SDK_INT <= 18) applyOpenSslFix();
applyOpenSslFix();
StrictMode.setThreadPolicy(tp); StrictMode.setThreadPolicy(tp);
} }

View File

@@ -66,8 +66,8 @@ dependencyVerification {
'org.beanshell:bsh:1.3.0:bsh-1.3.0.jar:9b04edc75d19db54f1b4e8b5355e9364384c6cf71eb0a1b9724c159d779879f8', 'org.beanshell:bsh:1.3.0:bsh-1.3.0.jar:9b04edc75d19db54f1b4e8b5355e9364384c6cf71eb0a1b9724c159d779879f8',
'org.bouncycastle:bcpkix-jdk15on:1.56:bcpkix-jdk15on-1.56.jar:7043dee4e9e7175e93e0b36f45b1ec1ecb893c5f755667e8b916eb8dd201c6ca', 'org.bouncycastle:bcpkix-jdk15on:1.56:bcpkix-jdk15on-1.56.jar:7043dee4e9e7175e93e0b36f45b1ec1ecb893c5f755667e8b916eb8dd201c6ca',
'org.bouncycastle:bcprov-jdk15on:1.56:bcprov-jdk15on-1.56.jar:963e1ee14f808ffb99897d848ddcdb28fa91ddda867eb18d303e82728f878349', 'org.bouncycastle:bcprov-jdk15on:1.56:bcprov-jdk15on-1.56.jar:963e1ee14f808ffb99897d848ddcdb28fa91ddda867eb18d303e82728f878349',
'org.briarproject:obfs4proxy-android:0.0.9:obfs4proxy-android-0.0.9.zip:9b7e9181535ea8d8bbe8ae6338e08cf4c5fc1e357a779393e0ce49586d459ae0', 'org.briarproject:obfs4proxy-android:0.0.11-2:obfs4proxy-android-0.0.11-2.zip:57e55cbe87aa2aac210fdbb6cd8cdeafe15f825406a08ebf77a8b787aa2c6a8a',
'org.briarproject:tor-android:0.3.5.8:tor-android-0.3.5.8.zip:42a13a6f185be1a62f42e3f30ce66a3c099ac5ec890a65e7593111b65b44a54a', 'org.briarproject:tor-android:0.3.5.8-64:tor-android-0.3.5.8-64.zip:9f144088c0fe845d1cf3232cdc2b51c68e6f9a22660592009f43a5633fca8824',
'org.checkerframework:checker-compat-qual:2.5.3:checker-compat-qual-2.5.3.jar:d76b9afea61c7c082908023f0cbc1427fab9abd2df915c8b8a3e7a509bccbc6d', 'org.checkerframework:checker-compat-qual:2.5.3:checker-compat-qual-2.5.3.jar:d76b9afea61c7c082908023f0cbc1427fab9abd2df915c8b8a3e7a509bccbc6d',
'org.checkerframework:checker-qual:2.5.2:checker-qual-2.5.2.jar:64b02691c8b9d4e7700f8ee2e742dce7ea2c6e81e662b7522c9ee3bf568c040a', 'org.checkerframework:checker-qual:2.5.2:checker-qual-2.5.2.jar:64b02691c8b9d4e7700f8ee2e742dce7ea2c6e81e662b7522c9ee3bf568c040a',
'org.codehaus.groovy:groovy-all:2.4.15:groovy-all-2.4.15.jar:51d6c4e71782e85674239189499854359d380fb75e1a703756e3aaa5b98a5af0', 'org.codehaus.groovy:groovy-all:2.4.15:groovy-all-2.4.15.jar:51d6c4e71782e85674239189499854359d380fb75e1a703756e3aaa5b98a5af0',

View File

@@ -7,5 +7,5 @@ public interface FeatureFlags {
boolean shouldEnableImageAttachments(); boolean shouldEnableImageAttachments();
boolean shouldEnableRemoteContacts(); boolean shouldEnablePrivateMessageDeletion();
} }

View File

@@ -4,8 +4,10 @@ import org.briarproject.bramble.api.FormatException;
import org.briarproject.bramble.api.Pair; import org.briarproject.bramble.api.Pair;
import org.briarproject.bramble.api.UnsupportedVersionException; import org.briarproject.bramble.api.UnsupportedVersionException;
import org.briarproject.bramble.api.crypto.SecretKey; import org.briarproject.bramble.api.crypto.SecretKey;
import org.briarproject.bramble.api.db.ContactExistsException;
import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.db.NoSuchContactException; import org.briarproject.bramble.api.db.NoSuchContactException;
import org.briarproject.bramble.api.db.PendingContactExistsException;
import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.db.Transaction;
import org.briarproject.bramble.api.identity.Author; import org.briarproject.bramble.api.identity.Author;
import org.briarproject.bramble.api.identity.AuthorId; import org.briarproject.bramble.api.identity.AuthorId;
@@ -117,9 +119,14 @@ public interface ContactManager {
* @throws FormatException If the link is invalid * @throws FormatException If the link is invalid
* @throws GeneralSecurityException If the pending contact's handshake * @throws GeneralSecurityException If the pending contact's handshake
* public key is invalid * public key is invalid
* @throws ContactExistsException If a contact with the same handshake
* public key already exists
* @throws PendingContactExistsException If a pending contact with the same
* handshake public key already exists
*/ */
PendingContact addPendingContact(String link, String alias) PendingContact addPendingContact(String link, String alias)
throws DbException, FormatException, GeneralSecurityException; throws DbException, FormatException, GeneralSecurityException,
ContactExistsException, PendingContactExistsException;
/** /**
* Returns the pending contact with the given ID. * Returns the pending contact with the given ID.

View File

@@ -83,7 +83,7 @@ public interface DatabaseComponent extends TransactionManager {
/** /**
* Stores a pending contact. * Stores a pending contact.
*/ */
void addPendingContact(Transaction txn, PendingContact p) void addPendingContact(Transaction txn, PendingContact p, AuthorId local)
throws DbException; throws DbException;
/** /**

View File

@@ -1,9 +1,21 @@
package org.briarproject.bramble.api.db; package org.briarproject.bramble.api.db;
import org.briarproject.bramble.api.contact.PendingContact;
/** /**
* Thrown when a duplicate pending contact is added to the database. This * Thrown when a duplicate pending contact is added to the database. This
* exception may occur due to concurrent updates and does not indicate a * exception may occur due to concurrent updates and does not indicate a
* database error. * database error.
*/ */
public class PendingContactExistsException extends DbException { public class PendingContactExistsException extends DbException {
private final PendingContact pendingContact;
public PendingContactExistsException(PendingContact pendingContact) {
this.pendingContact = pendingContact;
}
public PendingContact getPendingContact() {
return pendingContact;
}
} }

View File

@@ -139,7 +139,8 @@ class ContactManagerImpl implements ContactManager, EventListener {
pendingContactFactory.createPendingContact(link, alias); pendingContactFactory.createPendingContact(link, alias);
Transaction txn = db.startTransaction(false); Transaction txn = db.startTransaction(false);
try { try {
db.addPendingContact(txn, p); AuthorId local = identityManager.getLocalAuthor(txn).getId();
db.addPendingContact(txn, p, local);
KeyPair ourKeyPair = identityManager.getHandshakeKeys(txn); KeyPair ourKeyPair = identityManager.getHandshakeKeys(txn);
keyManager.addPendingContact(txn, p.getId(), p.getPublicKey(), keyManager.addPendingContact(txn, p.getId(), p.getPublicKey(),
ourKeyPair); ourKeyPair);

View File

@@ -267,6 +267,16 @@ interface Database<T> {
*/ */
Collection<ContactId> getContacts(T txn, AuthorId local) throws DbException; Collection<ContactId> getContacts(T txn, AuthorId local) throws DbException;
/**
* Returns the contact with the given {@code handshakePublicKey}
* for the given local pseudonym or {@code null} if none exists.
* <p/>
* Read-only.
*/
@Nullable
Contact getContact(T txn, PublicKey handshakePublicKey, AuthorId local)
throws DbException;
/** /**
* Returns the group with the given ID. * Returns the group with the given ID.
* <p/> * <p/>

View File

@@ -291,12 +291,17 @@ class DatabaseComponentImpl<T> implements DatabaseComponent {
} }
@Override @Override
public void addPendingContact(Transaction transaction, PendingContact p) public void addPendingContact(Transaction transaction, PendingContact p,
throws DbException { AuthorId local) throws DbException {
if (transaction.isReadOnly()) throw new IllegalArgumentException(); if (transaction.isReadOnly()) throw new IllegalArgumentException();
T txn = unbox(transaction); T txn = unbox(transaction);
if (db.containsPendingContact(txn, p.getId())) Contact contact = db.getContact(txn, p.getPublicKey(), local);
throw new PendingContactExistsException(); if (contact != null)
throw new ContactExistsException(local, contact.getAuthor());
if (db.containsPendingContact(txn, p.getId())) {
PendingContact existing = db.getPendingContact(txn, p.getId());
throw new PendingContactExistsException(existing);
}
db.addPendingContact(txn, p); db.addPendingContact(txn, p);
transaction.attach(new PendingContactAddedEvent(p)); transaction.attach(new PendingContactAddedEvent(p));
} }

View File

@@ -1465,6 +1465,47 @@ abstract class JdbcDatabase implements Database<Connection> {
} }
} }
@Nullable
@Override
public Contact getContact(Connection txn, PublicKey handshakePublicKey,
AuthorId localAuthorId) throws DbException {
PreparedStatement ps = null;
ResultSet rs = null;
try {
String sql = "SELECT contactId, authorId, formatVersion, name,"
+ " alias, publicKey, verified"
+ " FROM contacts"
+ " WHERE handshakePublicKey = ? AND localAuthorId = ?";
ps = txn.prepareStatement(sql);
ps.setBytes(1, handshakePublicKey.getEncoded());
ps.setBytes(2, localAuthorId.getBytes());
rs = ps.executeQuery();
if (!rs.next()) {
rs.close();
ps.close();
return null;
}
ContactId contactId = new ContactId(rs.getInt(1));
AuthorId authorId = new AuthorId(rs.getBytes(2));
int formatVersion = rs.getInt(3);
String name = rs.getString(4);
String alias = rs.getString(5);
PublicKey publicKey = new SignaturePublicKey(rs.getBytes(6));
boolean verified = rs.getBoolean(7);
if (rs.next()) throw new DbStateException();
rs.close();
ps.close();
Author author =
new Author(authorId, formatVersion, name, publicKey);
return new Contact(contactId, author, localAuthorId, alias,
handshakePublicKey, verified);
} catch (SQLException e) {
tryToClose(rs, LOG, WARNING);
tryToClose(ps, LOG, WARNING);
throw new DbException(e);
}
}
@Override @Override
public Group getGroup(Connection txn, GroupId g) throws DbException { public Group getGroup(Connection txn, GroupId g) throws DbException {
PreparedStatement ps = null; PreparedStatement ps = null;

View File

@@ -195,8 +195,6 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener {
if (!assetsAreUpToDate()) installAssets(); if (!assetsAreUpToDate()) installAssets();
if (cookieFile.exists() && !cookieFile.delete()) if (cookieFile.exists() && !cookieFile.delete())
LOG.warning("Old auth cookie not deleted"); LOG.warning("Old auth cookie not deleted");
// Migrate old settings before having a chance to stop
migrateSettings();
// Start a new Tor process // Start a new Tor process
LOG.info("Starting Tor"); LOG.info("Starting Tor");
String torPath = torFile.getAbsolutePath(); String torPath = torFile.getAbsolutePath();
@@ -816,21 +814,6 @@ abstract class TorPlugin implements DuplexPlugin, EventHandler, EventListener {
controlConnection.setConf("ConnectionPadding", enable ? "1" : "0"); controlConnection.setConf("ConnectionPadding", enable ? "1" : "0");
} }
// TODO remove when sufficient time has passed. Added 2018-08-15
private void migrateSettings() {
Settings sOld = callback.getSettings();
int oldNetwork = sOld.getInt("network", -1);
if (oldNetwork == -1) return;
Settings s = new Settings();
if (oldNetwork == 0) {
s.putInt(PREF_TOR_NETWORK, PREF_TOR_NETWORK_NEVER);
} else if (oldNetwork == 1) {
s.putBoolean(PREF_TOR_MOBILE, false);
}
s.putInt("network", -1);
callback.mergeSettings(s);
}
private static class ConnectionStatus { private static class ConnectionStatus {
// All of the following are locking: this // All of the following are locking: this

View File

@@ -34,6 +34,7 @@ import org.briarproject.bramble.test.BrambleTestCase;
import org.briarproject.bramble.test.SettableClock; import org.briarproject.bramble.test.SettableClock;
import org.briarproject.bramble.test.TestDatabaseConfig; import org.briarproject.bramble.test.TestDatabaseConfig;
import org.briarproject.bramble.test.TestMessageFactory; import org.briarproject.bramble.test.TestMessageFactory;
import org.briarproject.bramble.test.TestUtils;
import org.junit.After; import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -1149,6 +1150,43 @@ public abstract class JdbcDatabaseTest extends BrambleTestCase {
db.close(); db.close();
} }
@Test
public void testGetContactsByHandshakePublicKey() throws Exception {
Database<Connection> db = open(false);
Connection txn = db.startTransaction();
// Add an identity for a local author - no contacts should be
// associated
db.addIdentity(txn, identity);
PublicKey handshakePublicKey = TestUtils.getSignaturePublicKey();
Contact contact =
db.getContact(txn, handshakePublicKey, localAuthor.getId());
assertNull(contact);
// Add a contact associated with the local author
assertEquals(contactId, db.addContact(txn, author, localAuthor.getId(),
handshakePublicKey, true));
contact = db.getContact(txn, handshakePublicKey, localAuthor.getId());
assertNotNull(contact);
assertEquals(contactId, contact.getId());
assertEquals(author, contact.getAuthor());
assertNull(contact.getAlias());
assertEquals(handshakePublicKey, contact.getHandshakePublicKey());
assertTrue(contact.isVerified());
assertEquals(author.getName(), contact.getAuthor().getName());
assertEquals(author.getPublicKey(), contact.getAuthor().getPublicKey());
assertEquals(author.getFormatVersion(),
contact.getAuthor().getFormatVersion());
// Ensure no contacts are returned after contact was deleted
db.removeContact(txn, contactId);
contact = db.getContact(txn, handshakePublicKey, localAuthor.getId());
assertNull(contact);
db.commitTransaction(txn);
db.close();
}
@Test @Test
public void testOfferedMessages() throws Exception { public void testOfferedMessages() throws Exception {
Database<Connection> db = open(false); Database<Connection> db = open(false);

View File

@@ -26,7 +26,7 @@ public class BrambleCoreIntegrationTestModule {
} }
@Override @Override
public boolean shouldEnableRemoteContacts() { public boolean shouldEnablePrivateMessageDeletion() {
return true; return true;
} }
}; };

View File

@@ -20,10 +20,10 @@ android {
buildToolsVersion '28.0.3' buildToolsVersion '28.0.3'
defaultConfig { defaultConfig {
minSdkVersion 15 minSdkVersion 16
targetSdkVersion 26 targetSdkVersion 28
versionCode 10109 versionCode 10204
versionName "1.1.9" versionName "1.2.4"
applicationId "org.briarproject.briar.android" applicationId "org.briarproject.briar.android"
buildConfigField "String", "GitHash", buildConfigField "String", "GitHash",
"\"${getStdout(['git', 'rev-parse', '--short=7', 'HEAD'], 'No commit hash')}\"" "\"${getStdout(['git', 'rev-parse', '--short=7', 'HEAD'], 'No commit hash')}\""
@@ -117,7 +117,7 @@ dependencies {
implementation 'de.hdodenhof:circleimageview:2.2.0' implementation 'de.hdodenhof:circleimageview:2.2.0'
implementation 'com.google.zxing:core:3.3.3' implementation 'com.google.zxing:core:3.3.3'
implementation 'uk.co.samuelwall:material-tap-target-prompt:2.14.0' implementation 'uk.co.samuelwall:material-tap-target-prompt:2.14.0'
implementation 'com.vanniktech:emoji-google:0.5.1' implementation 'com.vanniktech:emoji-google:0.6.0' // later versions already use androidx
implementation 'com.github.kobakei:MaterialFabSpeedDial:1.2.1' // later versions already use androidx implementation 'com.github.kobakei:MaterialFabSpeedDial:1.2.1' // later versions already use androidx
def glideVersion = '4.9.0' def glideVersion = '4.9.0'
implementation("com.github.bumptech.glide:glide:$glideVersion") { implementation("com.github.bumptech.glide:glide:$glideVersion") {

View File

@@ -73,7 +73,7 @@
android:label="@string/crash_report_title" android:label="@string/crash_report_title"
android:launchMode="singleInstance" android:launchMode="singleInstance"
android:theme="@style/BriarTheme.NoActionBar" android:theme="@style/BriarTheme.NoActionBar"
android:windowSoftInputMode="stateHidden"> android:windowSoftInputMode="adjustResize|stateHidden">
</activity> </activity>
<activity <activity
@@ -89,7 +89,7 @@
<activity <activity
android:name="org.briarproject.briar.android.account.SetupActivity" android:name="org.briarproject.briar.android.account.SetupActivity"
android:label="@string/setup_title" android:label="@string/setup_title"
android:windowSoftInputMode="adjustResize"> android:windowSoftInputMode="adjustResize|stateAlwaysVisible">
</activity> </activity>
<activity <activity
@@ -126,7 +126,7 @@
android:label="@string/app_name" android:label="@string/app_name"
android:parentActivityName="org.briarproject.briar.android.navdrawer.NavDrawerActivity" android:parentActivityName="org.briarproject.briar.android.navdrawer.NavDrawerActivity"
android:theme="@style/BriarTheme.NoActionBar" android:theme="@style/BriarTheme.NoActionBar"
android:windowSoftInputMode="stateHidden|adjustResize"> android:windowSoftInputMode="adjustResize|stateUnchanged">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value="org.briarproject.briar.android.navdrawer.NavDrawerActivity"/> android:value="org.briarproject.briar.android.navdrawer.NavDrawerActivity"/>
@@ -145,7 +145,7 @@
android:name="org.briarproject.briar.android.privategroup.creation.CreateGroupActivity" android:name="org.briarproject.briar.android.privategroup.creation.CreateGroupActivity"
android:label="@string/groups_create_group_title" android:label="@string/groups_create_group_title"
android:parentActivityName="org.briarproject.briar.android.navdrawer.NavDrawerActivity" android:parentActivityName="org.briarproject.briar.android.navdrawer.NavDrawerActivity"
android:windowSoftInputMode="adjustResize"> android:windowSoftInputMode="adjustResize|stateAlwaysVisible">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value="org.briarproject.briar.android.navdrawer.NavDrawerActivity"/> android:value="org.briarproject.briar.android.navdrawer.NavDrawerActivity"/>
@@ -174,8 +174,7 @@
<activity <activity
android:name="org.briarproject.briar.android.privategroup.memberlist.GroupMemberListActivity" android:name="org.briarproject.briar.android.privategroup.memberlist.GroupMemberListActivity"
android:label="@string/groups_member_list" android:label="@string/groups_member_list"
android:parentActivityName="org.briarproject.briar.android.privategroup.conversation.GroupActivity" android:parentActivityName="org.briarproject.briar.android.privategroup.conversation.GroupActivity">
android:windowSoftInputMode="adjustResize|stateHidden">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value="org.briarproject.briar.android.privategroup.conversation.GroupActivity"/> android:value="org.briarproject.briar.android.privategroup.conversation.GroupActivity"/>
@@ -184,8 +183,7 @@
<activity <activity
android:name="org.briarproject.briar.android.privategroup.reveal.RevealContactsActivity" android:name="org.briarproject.briar.android.privategroup.reveal.RevealContactsActivity"
android:label="@string/groups_reveal_contacts" android:label="@string/groups_reveal_contacts"
android:parentActivityName="org.briarproject.briar.android.privategroup.conversation.GroupActivity" android:parentActivityName="org.briarproject.briar.android.privategroup.conversation.GroupActivity">
android:windowSoftInputMode="adjustResize|stateAlwaysHidden">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value="org.briarproject.briar.android.privategroup.conversation.GroupActivity"/> android:value="org.briarproject.briar.android.privategroup.conversation.GroupActivity"/>
@@ -223,7 +221,7 @@
android:name="org.briarproject.briar.android.forum.CreateForumActivity" android:name="org.briarproject.briar.android.forum.CreateForumActivity"
android:label="@string/create_forum_title" android:label="@string/create_forum_title"
android:parentActivityName="org.briarproject.briar.android.navdrawer.NavDrawerActivity" android:parentActivityName="org.briarproject.briar.android.navdrawer.NavDrawerActivity"
android:windowSoftInputMode="adjustResize"> android:windowSoftInputMode="adjustResize|stateAlwaysVisible">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value="org.briarproject.briar.android.navdrawer.NavDrawerActivity"/> android:value="org.briarproject.briar.android.navdrawer.NavDrawerActivity"/>
@@ -292,7 +290,7 @@
android:name="org.briarproject.briar.android.blog.WriteBlogPostActivity" android:name="org.briarproject.briar.android.blog.WriteBlogPostActivity"
android:label="@string/blogs_write_blog_post" android:label="@string/blogs_write_blog_post"
android:parentActivityName="org.briarproject.briar.android.blog.BlogActivity" android:parentActivityName="org.briarproject.briar.android.blog.BlogActivity"
android:windowSoftInputMode="stateVisible|adjustResize"> android:windowSoftInputMode="adjustResize|stateAlwaysVisible">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value="org.briarproject.briar.android.blog.BlogActivity"/> android:value="org.briarproject.briar.android.blog.BlogActivity"/>
@@ -302,7 +300,7 @@
android:name="org.briarproject.briar.android.blog.ReblogActivity" android:name="org.briarproject.briar.android.blog.ReblogActivity"
android:label="@string/blogs_reblog_button" android:label="@string/blogs_reblog_button"
android:parentActivityName="org.briarproject.briar.android.blog.BlogActivity" android:parentActivityName="org.briarproject.briar.android.blog.BlogActivity"
android:windowSoftInputMode="stateHidden"> android:windowSoftInputMode="adjustResize|stateHidden">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value="org.briarproject.briar.android.blog.BlogActivity"/> android:value="org.briarproject.briar.android.blog.BlogActivity"/>
@@ -312,7 +310,7 @@
android:name="org.briarproject.briar.android.blog.RssFeedImportActivity" android:name="org.briarproject.briar.android.blog.RssFeedImportActivity"
android:label="@string/blogs_rss_feeds_import" android:label="@string/blogs_rss_feeds_import"
android:parentActivityName="org.briarproject.briar.android.navdrawer.NavDrawerActivity" android:parentActivityName="org.briarproject.briar.android.navdrawer.NavDrawerActivity"
android:windowSoftInputMode="stateVisible|adjustResize"> android:windowSoftInputMode="adjustResize|stateAlwaysVisible">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value="org.briarproject.briar.android.navdrawer.NavDrawerActivity"/> android:value="org.briarproject.briar.android.navdrawer.NavDrawerActivity"/>
@@ -341,7 +339,7 @@
android:name="org.briarproject.briar.android.introduction.IntroductionActivity" android:name="org.briarproject.briar.android.introduction.IntroductionActivity"
android:label="@string/introduction_activity_title" android:label="@string/introduction_activity_title"
android:parentActivityName="org.briarproject.briar.android.conversation.ConversationActivity" android:parentActivityName="org.briarproject.briar.android.conversation.ConversationActivity"
android:windowSoftInputMode="stateHidden|adjustResize"> android:windowSoftInputMode="adjustResize|stateHidden">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value="org.briarproject.briar.android.conversation.ConversationActivity"/> android:value="org.briarproject.briar.android.conversation.ConversationActivity"/>
@@ -369,7 +367,8 @@
<activity <activity
android:name="org.briarproject.briar.android.login.ChangePasswordActivity" android:name="org.briarproject.briar.android.login.ChangePasswordActivity"
android:label="@string/change_password" android:label="@string/change_password"
android:parentActivityName="org.briarproject.briar.android.settings.SettingsActivity"> android:parentActivityName="org.briarproject.briar.android.settings.SettingsActivity"
android:windowSoftInputMode="adjustResize|stateAlwaysVisible">
<meta-data <meta-data
android:name="android.support.PARENT_ACTIVITY" android:name="android.support.PARENT_ACTIVITY"
android:value="org.briarproject.briar.android.settings.SettingsActivity"/> android:value="org.briarproject.briar.android.settings.SettingsActivity"/>
@@ -424,7 +423,7 @@
android:name=".android.contact.add.remote.AddContactActivity" android:name=".android.contact.add.remote.AddContactActivity"
android:label="@string/add_contact_remotely_title_case" android:label="@string/add_contact_remotely_title_case"
android:theme="@style/BriarTheme" android:theme="@style/BriarTheme"
android:windowSoftInputMode="stateHidden|adjustResize"/> android:windowSoftInputMode="adjustResize|stateHidden"/>
<activity <activity
android:name=".android.contact.add.remote.PendingContactListActivity" android:name=".android.contact.add.remote.PendingContactListActivity"

View File

@@ -347,8 +347,10 @@ class AndroidNotificationManagerImpl implements AndroidNotificationManager,
if (currentTime - lastSound > SOUND_DELAY) { if (currentTime - lastSound > SOUND_DELAY) {
boolean sound = settings.getBoolean(PREF_NOTIFY_SOUND, true); boolean sound = settings.getBoolean(PREF_NOTIFY_SOUND, true);
String ringtoneUri = settings.get(PREF_NOTIFY_RINGTONE_URI); String ringtoneUri = settings.get(PREF_NOTIFY_RINGTONE_URI);
if (sound && !StringUtils.isNullOrEmpty(ringtoneUri)) if (sound && !StringUtils.isNullOrEmpty(ringtoneUri)) {
b.setSound(Uri.parse(ringtoneUri)); Uri uri = Uri.parse(ringtoneUri);
if (!"file".equals(uri.getScheme())) b.setSound(uri);
}
b.setDefaults(getDefaults()); b.setDefaults(getDefaults());
lastSound = currentTime; lastSound = currentTime;
} }
@@ -359,7 +361,8 @@ class AndroidNotificationManagerImpl implements AndroidNotificationManager,
int defaults = DEFAULT_LIGHTS; int defaults = DEFAULT_LIGHTS;
boolean sound = settings.getBoolean(PREF_NOTIFY_SOUND, true); boolean sound = settings.getBoolean(PREF_NOTIFY_SOUND, true);
String ringtoneUri = settings.get(PREF_NOTIFY_RINGTONE_URI); String ringtoneUri = settings.get(PREF_NOTIFY_RINGTONE_URI);
if (sound && StringUtils.isNullOrEmpty(ringtoneUri)) if (sound && (StringUtils.isNullOrEmpty(ringtoneUri) ||
"file".equals(Uri.parse(ringtoneUri).getScheme())))
defaults |= DEFAULT_SOUND; defaults |= DEFAULT_SOUND;
if (settings.getBoolean(PREF_NOTIFY_VIBRATION, true)) if (settings.getBoolean(PREF_NOTIFY_VIBRATION, true))
defaults |= DEFAULT_VIBRATE; defaults |= DEFAULT_VIBRATE;

View File

@@ -243,7 +243,7 @@ public class AppModule {
} }
@Override @Override
public boolean shouldEnableRemoteContacts() { public boolean shouldEnablePrivateMessageDeletion() {
return IS_DEBUG_BUILD; return IS_DEBUG_BUILD;
} }
}; };

View File

@@ -1,54 +0,0 @@
package org.briarproject.briar.android;
import android.app.Activity;
import android.app.Application.ActivityLifecycleCallbacks;
import android.os.Bundle;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import java.util.concurrent.atomic.AtomicInteger;
import javax.annotation.Nullable;
import javax.annotation.concurrent.ThreadSafe;
@ThreadSafe
@NotNullByDefault
class BackgroundMonitor implements ActivityLifecycleCallbacks {
private final AtomicInteger foregroundActivities = new AtomicInteger(0);
boolean isRunningInBackground() {
return foregroundActivities.get() == 0;
}
@Override
public void onActivityCreated(Activity a, @Nullable Bundle state) {
}
@Override
public void onActivityStarted(Activity a) {
foregroundActivities.incrementAndGet();
}
@Override
public void onActivityResumed(Activity a) {
}
@Override
public void onActivityPaused(Activity a) {
}
@Override
public void onActivityStopped(Activity a) {
foregroundActivities.decrementAndGet();
}
@Override
public void onActivitySaveInstanceState(Activity a,
@Nullable Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity a) {
}
}

View File

@@ -34,7 +34,6 @@ import java.util.logging.LogRecord;
import java.util.logging.Logger; import java.util.logging.Logger;
import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND; import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND;
import static android.os.Build.VERSION.SDK_INT;
import static java.util.logging.Level.FINE; import static java.util.logging.Level.FINE;
import static java.util.logging.Level.INFO; import static java.util.logging.Level.INFO;
import static java.util.logging.Logger.getLogger; import static java.util.logging.Logger.getLogger;
@@ -86,7 +85,6 @@ public class BriarApplicationImpl extends Application
getLogger(BriarApplicationImpl.class.getName()); getLogger(BriarApplicationImpl.class.getName());
private final CachingLogHandler logHandler = new CachingLogHandler(); private final CachingLogHandler logHandler = new CachingLogHandler();
private final BackgroundMonitor backgroundMonitor = new BackgroundMonitor();
private AndroidComponent applicationComponent; private AndroidComponent applicationComponent;
private volatile SharedPreferences prefs; private volatile SharedPreferences prefs;
@@ -127,9 +125,6 @@ public class BriarApplicationImpl extends Application
applicationComponent = createApplicationComponent(); applicationComponent = createApplicationComponent();
EmojiManager.install(new GoogleEmojiProvider()); EmojiManager.install(new GoogleEmojiProvider());
if (SDK_INT < 16)
registerActivityLifecycleCallbacks(backgroundMonitor);
} }
protected AndroidComponent createApplicationComponent() { protected AndroidComponent createApplicationComponent() {
@@ -191,12 +186,8 @@ public class BriarApplicationImpl extends Application
@Override @Override
public boolean isRunningInBackground() { public boolean isRunningInBackground() {
if (SDK_INT >= 16) { RunningAppProcessInfo info = new RunningAppProcessInfo();
RunningAppProcessInfo info = new RunningAppProcessInfo(); ActivityManager.getMyMemoryState(info);
ActivityManager.getMyMemoryState(info); return (info.importance != IMPORTANCE_FOREGROUND);
return (info.importance != IMPORTANCE_FOREGROUND);
} else {
return backgroundMonitor.isRunningInBackground();
}
} }
} }

View File

@@ -238,8 +238,6 @@ public class BriarService extends Service {
} else if (level == TRIM_MEMORY_RUNNING_LOW) { } else if (level == TRIM_MEMORY_RUNNING_LOW) {
LOG.info("Trim memory: running low"); LOG.info("Trim memory: running low");
} else if (level == TRIM_MEMORY_RUNNING_CRITICAL) { } else if (level == TRIM_MEMORY_RUNNING_CRITICAL) {
// This level may be received if SDK_INT < 16, although the
// constant isn't declared until API level 16
LOG.warning("Trim memory: running critically low"); LOG.warning("Trim memory: running critically low");
// If we're not in the foreground, clear the UI to save memory // If we're not in the foreground, clear the UI to save memory
if (app.isRunningInBackground()) hideUi(); if (app.isRunningInBackground()) hideUi();

View File

@@ -150,7 +150,7 @@ class ScreenFilterMonitorImpl implements ScreenFilterMonitor, Service {
// Get permissions // Get permissions
String[] requestedPermissions = packageInfo.requestedPermissions; String[] requestedPermissions = packageInfo.requestedPermissions;
if (requestedPermissions == null) return false; if (requestedPermissions == null) return false;
if (SDK_INT >= 16 && SDK_INT < 23) { if (SDK_INT < 23) {
// Check whether the permission has been requested and granted // Check whether the permission has been requested and granted
int[] flags = packageInfo.requestedPermissionsFlags; int[] flags = packageInfo.requestedPermissionsFlags;
for (int i = 0; i < requestedPermissions.length; i++) { for (int i = 0; i < requestedPermissions.length; i++) {

View File

@@ -16,13 +16,10 @@ import org.briarproject.briar.android.activity.ActivityComponent;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import static android.view.inputmethod.EditorInfo.IME_ACTION_NEXT;
import static android.view.inputmethod.EditorInfo.IME_ACTION_NONE;
import static java.util.Objects.requireNonNull; import static java.util.Objects.requireNonNull;
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH; import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
import static org.briarproject.bramble.util.StringUtils.toUtf8; import static org.briarproject.bramble.util.StringUtils.toUtf8;
import static org.briarproject.briar.android.util.UiUtils.setError; import static org.briarproject.briar.android.util.UiUtils.setError;
import static org.briarproject.briar.android.util.UiUtils.showSoftKeyboard;
@MethodsNotNullByDefault @MethodsNotNullByDefault
@ParametersNotNullByDefault @ParametersNotNullByDefault
@@ -65,12 +62,6 @@ public class AuthorNameFragment extends SetupFragment {
return TAG; return TAG;
} }
@Override
public void onResume() {
super.onResume();
showSoftKeyboard(authorNameInput);
}
@Override @Override
protected String getHelpText() { protected String getHelpText() {
return getString(R.string.setup_name_explanation); return getString(R.string.setup_name_explanation);
@@ -82,8 +73,6 @@ public class AuthorNameFragment extends SetupFragment {
boolean error = authorNameLength > MAX_AUTHOR_NAME_LENGTH; boolean error = authorNameLength > MAX_AUTHOR_NAME_LENGTH;
setError(authorNameWrapper, getString(R.string.name_too_long), error); setError(authorNameWrapper, getString(R.string.name_too_long), error);
boolean enabled = authorNameLength > 0 && !error; boolean enabled = authorNameLength > 0 && !error;
authorNameInput
.setImeOptions(enabled ? IME_ACTION_NEXT : IME_ACTION_NONE);
authorNameInput.setOnEditorActionListener(enabled ? this : null); authorNameInput.setOnEditorActionListener(enabled ? this : null);
nextButton.setEnabled(enabled); nextButton.setEnabled(enabled);
} }

View File

@@ -61,7 +61,6 @@ public class SetPasswordFragment extends SetupFragment {
strengthMeter = v.findViewById(R.id.strength_meter); strengthMeter = v.findViewById(R.id.strength_meter);
passwordEntryWrapper = v.findViewById(R.id.password_entry_wrapper); passwordEntryWrapper = v.findViewById(R.id.password_entry_wrapper);
passwordEntry = v.findViewById(R.id.password_entry); passwordEntry = v.findViewById(R.id.password_entry);
passwordEntry.requestFocus();
passwordConfirmationWrapper = passwordConfirmationWrapper =
v.findViewById(R.id.password_confirm_wrapper); v.findViewById(R.id.password_confirm_wrapper);
passwordConfirmation = v.findViewById(R.id.password_confirm); passwordConfirmation = v.findViewById(R.id.password_confirm);

View File

@@ -2,7 +2,6 @@ package org.briarproject.briar.android.activity;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.os.IBinder;
import android.support.annotation.LayoutRes; import android.support.annotation.LayoutRes;
import android.support.annotation.UiThread; import android.support.annotation.UiThread;
import android.support.v4.app.Fragment; import android.support.v4.app.Fragment;
@@ -12,7 +11,6 @@ import android.support.v7.widget.Toolbar;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams; import android.view.ViewGroup.LayoutParams;
import android.view.inputmethod.InputMethodManager;
import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
@@ -44,10 +42,10 @@ import javax.inject.Inject;
import static android.arch.lifecycle.Lifecycle.State.STARTED; import static android.arch.lifecycle.Lifecycle.State.STARTED;
import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
import static android.view.WindowManager.LayoutParams.FLAG_SECURE; import static android.view.WindowManager.LayoutParams.FLAG_SECURE;
import static android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT;
import static java.util.logging.Level.INFO; import static java.util.logging.Level.INFO;
import static java.util.logging.Logger.getLogger; import static java.util.logging.Logger.getLogger;
import static org.briarproject.briar.android.TestingConstants.PREVENT_SCREENSHOTS; import static org.briarproject.briar.android.TestingConstants.PREVENT_SCREENSHOTS;
import static org.briarproject.briar.android.util.UiUtils.hideSoftKeyboard;
/** /**
* Warning: Some activities don't extend {@link BaseActivity}. * Warning: Some activities don't extend {@link BaseActivity}.
@@ -217,17 +215,6 @@ public abstract class BaseActivity extends AppCompatActivity
}); });
} }
public void showSoftKeyboard(View view) {
Object o = getSystemService(INPUT_METHOD_SERVICE);
((InputMethodManager) o).showSoftInput(view, SHOW_IMPLICIT);
}
public void hideSoftKeyboard(View view) {
IBinder token = view.getWindowToken();
Object o = getSystemService(INPUT_METHOD_SERVICE);
((InputMethodManager) o).hideSoftInputFromWindow(token, 0);
}
@UiThread @UiThread
public void handleDbException(DbException e) { public void handleDbException(DbException e) {
supportFinishAfterTransition(); supportFinishAfterTransition();

View File

@@ -32,6 +32,7 @@ import static android.view.View.VISIBLE;
import static android.view.inputmethod.EditorInfo.IME_ACTION_DONE; import static android.view.inputmethod.EditorInfo.IME_ACTION_DONE;
import static java.util.logging.Level.WARNING; import static java.util.logging.Level.WARNING;
import static org.briarproject.bramble.util.LogUtils.logException; import static org.briarproject.bramble.util.LogUtils.logException;
import static org.briarproject.briar.android.util.UiUtils.hideSoftKeyboard;
public class RssFeedImportActivity extends BriarActivity { public class RssFeedImportActivity extends BriarActivity {
@@ -77,7 +78,6 @@ public class RssFeedImportActivity extends BriarActivity {
if (actionId == IME_ACTION_DONE && importButton.isEnabled() && if (actionId == IME_ACTION_DONE && importButton.isEnabled() &&
importButton.getVisibility() == VISIBLE) { importButton.getVisibility() == VISIBLE) {
publish(); publish();
hideSoftKeyboard(urlInput);
return true; return true;
} }
return false; return false;
@@ -123,6 +123,7 @@ public class RssFeedImportActivity extends BriarActivity {
// hide import button, show progress bar // hide import button, show progress bar
importButton.setVisibility(GONE); importButton.setVisibility(GONE);
progressBar.setVisibility(VISIBLE); progressBar.setVisibility(VISIBLE);
hideSoftKeyboard(urlInput);
String url = validateAndNormaliseUrl(urlInput.getText().toString()); String url = validateAndNormaliseUrl(urlInput.getText().toString());
if (url == null) throw new AssertionError(); if (url == null) throw new AssertionError();

View File

@@ -3,11 +3,8 @@ package org.briarproject.briar.android.blog;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.view.KeyEvent;
import android.view.MenuItem; import android.view.MenuItem;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.TextView.OnEditorActionListener;
import org.briarproject.bramble.api.FormatException; import org.briarproject.bramble.api.FormatException;
import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.db.DbException;
@@ -44,7 +41,7 @@ import static org.briarproject.briar.api.blog.BlogConstants.MAX_BLOG_POST_TEXT_L
@MethodsNotNullByDefault @MethodsNotNullByDefault
@ParametersNotNullByDefault @ParametersNotNullByDefault
public class WriteBlogPostActivity extends BriarActivity public class WriteBlogPostActivity extends BriarActivity
implements OnEditorActionListener, SendListener { implements SendListener {
private static final Logger LOG = private static final Logger LOG =
Logger.getLogger(WriteBlogPostActivity.class.getName()); Logger.getLogger(WriteBlogPostActivity.class.getName());
@@ -113,12 +110,6 @@ public class WriteBlogPostActivity extends BriarActivity
component.inject(this); component.inject(this);
} }
@Override
public boolean onEditorAction(TextView textView, int actionId, KeyEvent e) {
input.requestFocus();
return true;
}
@Override @Override
public void onSendClick(@Nullable String text, public void onSendClick(@Nullable String text,
List<AttachmentHeader> headers) { List<AttachmentHeader> headers) {

View File

@@ -14,7 +14,6 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.TextView; import android.widget.TextView;
import org.briarproject.bramble.api.FeatureFlags;
import org.briarproject.bramble.api.contact.Contact; import org.briarproject.bramble.api.contact.Contact;
import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.contact.ContactManager; import org.briarproject.bramble.api.contact.ContactManager;
@@ -57,7 +56,6 @@ import javax.inject.Inject;
import io.github.kobakei.materialfabspeeddial.FabSpeedDial; import io.github.kobakei.materialfabspeeddial.FabSpeedDial;
import io.github.kobakei.materialfabspeeddial.FabSpeedDial.OnMenuItemClickListener; import io.github.kobakei.materialfabspeeddial.FabSpeedDial.OnMenuItemClickListener;
import io.github.kobakei.materialfabspeeddial.FabSpeedDialMenu;
import static android.os.Build.VERSION.SDK_INT; import static android.os.Build.VERSION.SDK_INT;
import static android.support.design.widget.Snackbar.LENGTH_INDEFINITE; import static android.support.design.widget.Snackbar.LENGTH_INDEFINITE;
@@ -85,8 +83,6 @@ public class ContactListFragment extends BaseFragment implements EventListener,
EventBus eventBus; EventBus eventBus;
@Inject @Inject
AndroidNotificationManager notificationManager; AndroidNotificationManager notificationManager;
@Inject
FeatureFlags featureFlags;
private ContactListAdapter adapter; private ContactListAdapter adapter;
private BriarRecyclerView list; private BriarRecyclerView list;
@@ -126,19 +122,7 @@ public class ContactListFragment extends BaseFragment implements EventListener,
container, false); container, false);
FabSpeedDial speedDial = contentView.findViewById(R.id.speedDial); FabSpeedDial speedDial = contentView.findViewById(R.id.speedDial);
if (featureFlags.shouldEnableRemoteContacts()) { speedDial.addOnMenuItemClickListener(this);
speedDial.addOnMenuItemClickListener(this);
} else {
speedDial.setMenu(new FabSpeedDialMenu(contentView.getContext()));
speedDial.addOnStateChangeListener(open -> {
if (open) {
Intent intent = new Intent(getContext(),
ContactExchangeActivity.class);
startActivity(intent);
speedDial.closeMenu();
}
});
}
OnContactClickListener<ContactListItem> onContactClickListener = OnContactClickListener<ContactListItem> onContactClickListener =
(view, item) -> { (view, item) -> {
@@ -169,9 +153,10 @@ public class ContactListFragment extends BaseFragment implements EventListener,
startActivity(i); startActivity(i);
} }
}; };
adapter = new ContactListAdapter(getContext(), onContactClickListener); adapter = new ContactListAdapter(requireContext(),
onContactClickListener);
list = contentView.findViewById(R.id.list); list = contentView.findViewById(R.id.list);
list.setLayoutManager(new LinearLayoutManager(getContext())); list.setLayoutManager(new LinearLayoutManager(requireContext()));
list.setAdapter(adapter); list.setAdapter(adapter);
list.setEmptyImage(R.drawable.ic_empty_state_contact_list); list.setEmptyImage(R.drawable.ic_empty_state_contact_list);
list.setEmptyText(getString(R.string.no_contacts)); list.setEmptyText(getString(R.string.no_contacts));
@@ -267,7 +252,7 @@ public class ContactListFragment extends BaseFragment implements EventListener,
if (revision == adapter.getRevision()) { if (revision == adapter.getRevision()) {
adapter.incrementRevision(); adapter.incrementRevision();
if (contacts.isEmpty()) list.showData(); if (contacts.isEmpty()) list.showData();
else adapter.addAll(contacts); else adapter.replaceAll(contacts);
} else { } else {
LOG.info("Concurrent update, reloading"); LOG.info("Concurrent update, reloading");
loadContacts(); loadContacts();

View File

@@ -9,8 +9,10 @@ import android.support.annotation.Nullable;
import org.briarproject.bramble.api.FormatException; import org.briarproject.bramble.api.FormatException;
import org.briarproject.bramble.api.UnsupportedVersionException; import org.briarproject.bramble.api.UnsupportedVersionException;
import org.briarproject.bramble.api.contact.ContactManager; import org.briarproject.bramble.api.contact.ContactManager;
import org.briarproject.bramble.api.contact.PendingContact;
import org.briarproject.bramble.api.db.DatabaseExecutor; import org.briarproject.bramble.api.db.DatabaseExecutor;
import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.db.DbException;
import org.briarproject.bramble.api.db.NoSuchPendingContactException;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.android.viewmodel.LiveEvent; import org.briarproject.briar.android.viewmodel.LiveEvent;
import org.briarproject.briar.android.viewmodel.LiveResult; import org.briarproject.briar.android.viewmodel.LiveResult;
@@ -118,4 +120,19 @@ public class AddContactViewModel extends AndroidViewModel {
return addContactResult; return addContactResult;
} }
public void updatePendingContact(String name, PendingContact p) {
dbExecutor.execute(() -> {
try {
contactManager.removePendingContact(p.getId());
addContact(name);
} catch(NoSuchPendingContactException e) {
logException(LOG, WARNING, e);
// no error in UI as pending contact was converted into contact
} catch (DbException e) {
logException(LOG, WARNING, e);
addContactResult.postValue(new LiveResult<>(e));
}
});
}
} }

View File

@@ -1,5 +1,6 @@
package org.briarproject.briar.android.contact.add.remote; package org.briarproject.briar.android.contact.add.remote;
import android.animation.ObjectAnimator;
import android.arch.lifecycle.ViewModelProvider; import android.arch.lifecycle.ViewModelProvider;
import android.arch.lifecycle.ViewModelProviders; import android.arch.lifecycle.ViewModelProviders;
import android.content.ClipData; import android.content.ClipData;
@@ -11,7 +12,9 @@ import android.support.v4.app.ShareCompat.IntentBuilder;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.ViewTreeObserver.OnGlobalLayoutListener;
import android.widget.Button; import android.widget.Button;
import android.widget.ScrollView;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
@@ -34,7 +37,8 @@ import static org.briarproject.briar.android.util.UiUtils.observeOnce;
@MethodsNotNullByDefault @MethodsNotNullByDefault
@ParametersNotNullByDefault @ParametersNotNullByDefault
public class LinkExchangeFragment extends BaseFragment { public class LinkExchangeFragment extends BaseFragment
implements OnGlobalLayoutListener {
private static final String TAG = LinkExchangeFragment.class.getName(); private static final String TAG = LinkExchangeFragment.class.getName();
@@ -90,9 +94,30 @@ public class LinkExchangeFragment extends BaseFragment {
observeOnce(viewModel.getHandshakeLink(), this, observeOnce(viewModel.getHandshakeLink(), this,
this::onHandshakeLinkLoaded); this::onHandshakeLinkLoaded);
if (savedInstanceState == null) {
ScrollView scrollView = (ScrollView) v;
// we need to wait for views to be laid out to get the heights
scrollView.getViewTreeObserver().addOnGlobalLayoutListener(this);
}
return v; return v;
} }
@Override
public void onGlobalLayout() {
ScrollView scrollView = (ScrollView) requireNonNull(getView());
View layout = scrollView.getChildAt(0);
int scrollBy = layout.getHeight() - scrollView.getHeight();
if (scrollBy > 0) {
// smoothScrollTo() is too fast due to the transition animation
ObjectAnimator animator = ObjectAnimator
.ofInt(scrollView, "scrollY", scrollBy);
animator.setDuration(1000);
animator.start();
}
layout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
private void onHandshakeLinkLoaded(String link) { private void onHandshakeLinkLoaded(String link) {
View v = requireNonNull(getView()); View v = requireNonNull(getView());

View File

@@ -2,10 +2,15 @@ package org.briarproject.briar.android.contact.add.remote;
import android.arch.lifecycle.ViewModelProvider; import android.arch.lifecycle.ViewModelProvider;
import android.arch.lifecycle.ViewModelProviders; import android.arch.lifecycle.ViewModelProviders;
import android.content.Context;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent; import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.StringRes;
import android.support.design.widget.TextInputEditText; import android.support.design.widget.TextInputEditText;
import android.support.design.widget.TextInputLayout; import android.support.design.widget.TextInputLayout;
import android.support.v7.app.AlertDialog.Builder;
import android.text.Editable; import android.text.Editable;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@@ -15,6 +20,10 @@ import android.widget.ProgressBar;
import android.widget.Toast; import android.widget.Toast;
import org.briarproject.bramble.api.UnsupportedVersionException; import org.briarproject.bramble.api.UnsupportedVersionException;
import org.briarproject.bramble.api.contact.PendingContact;
import org.briarproject.bramble.api.db.ContactExistsException;
import org.briarproject.bramble.api.db.PendingContactExistsException;
import org.briarproject.bramble.api.identity.Author;
import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
import org.briarproject.briar.R; import org.briarproject.briar.R;
@@ -24,9 +33,13 @@ import org.briarproject.briar.android.fragment.BaseFragment;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.inject.Inject; import javax.inject.Inject;
import static android.support.v4.content.ContextCompat.getColor;
import static android.support.v4.content.ContextCompat.getDrawable;
import static android.support.v4.graphics.drawable.DrawableCompat.setTint;
import static android.view.View.INVISIBLE; import static android.view.View.INVISIBLE;
import static android.view.View.VISIBLE; import static android.view.View.VISIBLE;
import static android.widget.Toast.LENGTH_LONG; import static android.widget.Toast.LENGTH_LONG;
import static java.util.Objects.requireNonNull;
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH; import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
import static org.briarproject.bramble.util.StringUtils.utf8IsTooLong; import static org.briarproject.bramble.util.StringUtils.utf8IsTooLong;
@@ -107,23 +120,95 @@ public class NicknameFragment extends BaseFragment {
viewModel.getAddContactResult().observe(this, result -> { viewModel.getAddContactResult().observe(this, result -> {
if (result == null) return; if (result == null) return;
if (result.hasError()) { if (result.hasError())
int stringRes; handleException(name, requireNonNull(result.getException()));
if (result else
.getException() instanceof UnsupportedVersionException) { showPendingContactListActivity();
stringRes = R.string.unsupported_link;
} else {
stringRes = R.string.adding_contact_error;
}
Toast.makeText(getContext(), stringRes, LENGTH_LONG).show();
} else {
Intent intent = new Intent(getActivity(),
PendingContactListActivity.class);
startActivity(intent);
}
finish();
}); });
viewModel.addContact(name); viewModel.addContact(name);
} }
private void showPendingContactListActivity() {
Intent intent = new Intent(getActivity(),
PendingContactListActivity.class);
startActivity(intent);
finish();
}
private void handleException(String name, Exception e) {
if (e instanceof ContactExistsException) {
ContactExistsException ce = (ContactExistsException) e;
handleExistingContact(name, ce.getRemoteAuthor());
} else if (e instanceof PendingContactExistsException) {
PendingContactExistsException pe =
(PendingContactExistsException) e;
handleExistingPendingContact(name, pe.getPendingContact());
} else if (e instanceof UnsupportedVersionException) {
int stringRes = R.string.unsupported_link;
Toast.makeText(getContext(), stringRes, LENGTH_LONG).show();
finish();
} else {
int stringRes = R.string.adding_contact_error;
Toast.makeText(getContext(), stringRes, LENGTH_LONG).show();
finish();
}
}
private void handleExistingContact(String name, Author existing) {
OnClickListener listener = (d, w) -> {
d.dismiss();
String str = getString(R.string.contact_already_exists, name);
Toast.makeText(getContext(), str, LENGTH_LONG).show();
finish();
};
showSameLinkDialog(existing.getName(), name,
R.string.duplicate_link_dialog_text_1_contact, listener);
}
private void handleExistingPendingContact(String name, PendingContact p) {
OnClickListener listener = (d, w) -> {
viewModel.updatePendingContact(name, p);
Toast.makeText(getContext(), R.string.pending_contact_updated_toast,
LENGTH_LONG).show();
d.dismiss();
showPendingContactListActivity();
};
showSameLinkDialog(p.getAlias(), name,
R.string.duplicate_link_dialog_text_1, listener);
}
private void showSameLinkDialog(String name1, String name2,
@StringRes int existsRes, OnClickListener samePersonListener) {
Context ctx = requireContext();
Builder b = new Builder(ctx, R.style.BriarDialogTheme_Neutral);
b.setTitle(getString(R.string.duplicate_link_dialog_title));
String msg = getString(existsRes, name1) + "\n\n" +
getString(R.string.duplicate_link_dialog_text_2, name2, name1);
b.setMessage(msg);
b.setPositiveButton(R.string.same_person_button, samePersonListener);
b.setNegativeButton(R.string.different_person_button, (d, w) -> {
d.dismiss();
showWarningDialog(name1, name2);
});
b.setCancelable(false);
b.show();
}
private void showWarningDialog(String name1, String name2) {
Context ctx = requireContext();
Builder b = new Builder(ctx, R.style.BriarDialogTheme);
Drawable icon = getDrawable(ctx, R.drawable.alerts_and_states_error);
setTint(requireNonNull(icon), getColor(ctx, R.color.color_primary));
b.setIcon(icon);
b.setTitle(getString(R.string.duplicate_link_dialog_title));
b.setMessage(
getString(R.string.duplicate_link_dialog_text_3, name1, name2));
b.setPositiveButton(R.string.ok, (d, w) -> {
d.dismiss();
finish();
});
b.setCancelable(false);
b.show();
}
} }

View File

@@ -91,7 +91,7 @@ public class PendingContactListViewModel extends AndroidViewModel
Collection<Pair<PendingContact, PendingContactState>> pairs = Collection<Pair<PendingContact, PendingContactState>> pairs =
contactManager.getPendingContacts(); contactManager.getPendingContacts();
List<PendingContactItem> items = new ArrayList<>(pairs.size()); List<PendingContactItem> items = new ArrayList<>(pairs.size());
boolean online = false; boolean online = items.isEmpty();
for (Pair<PendingContact, PendingContactState> pair : pairs) { for (Pair<PendingContact, PendingContactState> pair : pairs) {
PendingContact p = pair.getFirst(); PendingContact p = pair.getFirst();
PendingContactState state = pair.getSecond(); PendingContactState state = pair.getSecond();

View File

@@ -21,9 +21,12 @@ import org.briarproject.briar.android.activity.BaseActivity;
import javax.inject.Inject; import javax.inject.Inject;
import static android.view.WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE;
import static java.util.Objects.requireNonNull; import static java.util.Objects.requireNonNull;
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH; import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
import static org.briarproject.bramble.util.StringUtils.toUtf8; import static org.briarproject.bramble.util.StringUtils.toUtf8;
import static org.briarproject.briar.android.util.UiUtils.hideSoftKeyboard;
import static org.briarproject.briar.android.util.UiUtils.showSoftKeyboard;
@MethodsNotNullByDefault @MethodsNotNullByDefault
@ParametersNotNullByDefault @ParametersNotNullByDefault
@@ -76,12 +79,13 @@ public class AliasDialogFragment extends AppCompatDialogFragment {
setButton.setOnClickListener(v1 -> onSetButtonClicked()); setButton.setOnClickListener(v1 -> onSetButtonClicked());
Button cancelButton = v.findViewById(R.id.cancelButton); Button cancelButton = v.findViewById(R.id.cancelButton);
cancelButton.setOnClickListener(v1 -> getDialog().cancel()); cancelButton.setOnClickListener(v1 -> onCancelButtonClicked());
return v; return v;
} }
private void onSetButtonClicked() { private void onSetButtonClicked() {
hideSoftKeyboard(aliasEditText);
String alias = aliasEditText.getText().toString().trim(); String alias = aliasEditText.getText().toString().trim();
if (toUtf8(alias).length > MAX_AUTHOR_NAME_LENGTH) { if (toUtf8(alias).length > MAX_AUTHOR_NAME_LENGTH) {
aliasEditLayout.setError(getString(R.string.name_too_long)); aliasEditLayout.setError(getString(R.string.name_too_long));
@@ -91,4 +95,17 @@ public class AliasDialogFragment extends AppCompatDialogFragment {
} }
} }
private void onCancelButtonClicked() {
hideSoftKeyboard(aliasEditText);
getDialog().cancel();
}
@Override
public void onStart() {
super.onStart();
requireNonNull(getDialog().getWindow())
.setSoftInputMode(SOFT_INPUT_STATE_ALWAYS_VISIBLE);
showSoftKeyboard(aliasEditText);
}
} }

View File

@@ -276,7 +276,7 @@ public class ConversationActivity extends BriarActivity
textInputView.setSendController(sendController); textInputView.setSendController(sendController);
textInputView.setMaxTextLength(MAX_PRIVATE_MESSAGE_TEXT_LENGTH); textInputView.setMaxTextLength(MAX_PRIVATE_MESSAGE_TEXT_LENGTH);
textInputView.setReady(false); textInputView.setReady(false);
textInputView.addOnKeyboardShownListener(this::scrollToBottom); textInputView.setOnKeyboardShownListener(this::scrollToBottom);
} }
private void scrollToBottom() { private void scrollToBottom() {
@@ -356,6 +356,11 @@ public class ConversationActivity extends BriarActivity
MenuInflater inflater = getMenuInflater(); MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.conversation_actions, menu); inflater.inflate(R.menu.conversation_actions, menu);
// Hide private message deletion action if feature is not enabled
if (!featureFlags.shouldEnablePrivateMessageDeletion()) {
menu.removeItem(R.id.action_delete_all_messages);
}
// enable introduction action if available // enable introduction action if available
observeOnce(viewModel.showIntroductionAction(), this, enable -> { observeOnce(viewModel.showIntroductionAction(), this, enable -> {
if (enable != null && enable) { if (enable != null && enable) {
@@ -389,6 +394,9 @@ public class ConversationActivity extends BriarActivity
AliasDialogFragment.newInstance().show( AliasDialogFragment.newInstance().show(
getSupportFragmentManager(), AliasDialogFragment.TAG); getSupportFragmentManager(), AliasDialogFragment.TAG);
return true; return true;
case R.id.action_delete_all_messages:
askToDeleteAllMessages();
return true;
case R.id.action_social_remove_person: case R.id.action_social_remove_person:
askToRemoveContact(); askToRemoveContact();
return true; return true;
@@ -727,6 +735,52 @@ public class ConversationActivity extends BriarActivity
addConversationItem(h.accept(visitor)); addConversationItem(h.accept(visitor));
} }
private void askToDeleteAllMessages() {
AlertDialog.Builder builder =
new AlertDialog.Builder(this, R.style.BriarDialogTheme);
builder.setTitle(getString(R.string.dialog_title_delete_all_messages));
builder.setMessage(
getString(R.string.dialog_message_delete_all_messages));
builder.setNegativeButton(R.string.delete,
(dialog, which) -> deleteAllMessages());
builder.setPositiveButton(R.string.cancel, null);
builder.show();
}
private void deleteAllMessages() {
list.showProgressBar();
runOnDbThread(() -> {
try {
boolean allDeleted =
conversationManager.deleteAllMessages(contactId);
reloadConversationAfterDeletingAllMessages(allDeleted);
} catch (DbException e) {
logException(LOG, WARNING, e);
runOnUiThreadUnlessDestroyed(() -> list.showData());
}
});
}
private void reloadConversationAfterDeletingAllMessages(
boolean allDeleted) {
runOnUiThreadUnlessDestroyed(() -> {
adapter.clear();
loadMessages();
if (!allDeleted) showNotAllDeletedDialog();
});
}
private void showNotAllDeletedDialog() {
AlertDialog.Builder builder =
new AlertDialog.Builder(this, R.style.BriarDialogTheme);
builder.setTitle(
getString(R.string.dialog_title_not_all_messages_deleted));
builder.setMessage(
getString(R.string.dialog_message_not_all_messages_deleted));
builder.setPositiveButton(R.string.ok, null);
builder.show();
}
private void askToRemoveContact() { private void askToRemoveContact() {
DialogInterface.OnClickListener okListener = DialogInterface.OnClickListener okListener =
(dialog, which) -> removeContact(); (dialog, which) -> removeContact();

View File

@@ -142,11 +142,8 @@ public class ImageActivity extends BriarActivity
viewPager.setAdapter(pagerAdapter); viewPager.setAdapter(pagerAdapter);
viewPager.setCurrentItem(position); viewPager.setCurrentItem(position);
if (SDK_INT >= 16) { viewModel.getOnImageClicked().observeEvent(this, this::onImageClicked);
viewModel.getOnImageClicked() window.getDecorView().setSystemUiVisibility(UI_FLAGS_DEFAULT);
.observeEvent(this, this::onImageClicked);
window.getDecorView().setSystemUiVisibility(UI_FLAGS_DEFAULT);
}
} }
@Override @Override
@@ -174,11 +171,7 @@ public class ImageActivity extends BriarActivity
viewModel.setToolbarPosition( viewModel.setToolbarPosition(
appBarLayout.getTop(), appBarLayout.getBottom() appBarLayout.getTop(), appBarLayout.getBottom()
); );
if (SDK_INT >= 16) { layout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
layout.getViewTreeObserver().removeOnGlobalLayoutListener(this);
} else {
layout.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
} }
@Override @Override
@@ -265,7 +258,7 @@ public class ImageActivity extends BriarActivity
* when the previous activity (with visible status bar) is shown. * when the previous activity (with visible status bar) is shown.
*/ */
private void showStatusBarBeforeFinishing() { private void showStatusBarBeforeFinishing() {
if (SDK_INT >= 16 && appBarLayout.getVisibility() == GONE) { if (appBarLayout.getVisibility() == GONE) {
View decorView = getWindow().getDecorView(); View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(UI_FLAGS_DEFAULT); decorView.setSystemUiVisibility(UI_FLAGS_DEFAULT);
} }

View File

@@ -34,6 +34,8 @@ import static org.briarproject.bramble.util.LogUtils.logDuration;
import static org.briarproject.bramble.util.LogUtils.logException; import static org.briarproject.bramble.util.LogUtils.logException;
import static org.briarproject.bramble.util.LogUtils.now; import static org.briarproject.bramble.util.LogUtils.now;
import static org.briarproject.briar.android.util.UiUtils.enterPressed; import static org.briarproject.briar.android.util.UiUtils.enterPressed;
import static org.briarproject.briar.android.util.UiUtils.hideSoftKeyboard;
import static org.briarproject.briar.android.util.UiUtils.showSoftKeyboard;
import static org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_NAME_LENGTH; import static org.briarproject.briar.api.forum.ForumConstants.MAX_FORUM_NAME_LENGTH;
@MethodsNotNullByDefault @MethodsNotNullByDefault
@@ -91,12 +93,6 @@ public class CreateForumActivity extends BriarActivity {
progress = findViewById(R.id.createForumProgressBar); progress = findViewById(R.id.createForumProgressBar);
} }
@Override
public void onStart() {
super.onStart();
showSoftKeyboard(nameEntry);
}
@Override @Override
public void injectActivity(ActivityComponent component) { public void injectActivity(ActivityComponent component) {
component.inject(this); component.inject(this);

View File

@@ -182,7 +182,7 @@ public class ForumListFragment extends BaseEventFragment implements
if (revision == adapter.getRevision()) { if (revision == adapter.getRevision()) {
adapter.incrementRevision(); adapter.incrementRevision();
if (forums.isEmpty()) list.showData(); if (forums.isEmpty()) list.showData();
else adapter.addAll(forums); else adapter.replaceAll(forums);
} else { } else {
LOG.info("Concurrent update, reloading"); LOG.info("Concurrent update, reloading");
loadForums(); loadForums();

View File

@@ -43,6 +43,7 @@ import static java.util.Objects.requireNonNull;
import static java.util.logging.Level.WARNING; import static java.util.logging.Level.WARNING;
import static org.briarproject.bramble.util.LogUtils.logException; import static org.briarproject.bramble.util.LogUtils.logException;
import static org.briarproject.briar.android.util.UiUtils.getContactDisplayName; import static org.briarproject.briar.android.util.UiUtils.getContactDisplayName;
import static org.briarproject.briar.android.util.UiUtils.hideSoftKeyboard;
import static org.briarproject.briar.api.introduction.IntroductionConstants.MAX_INTRODUCTION_TEXT_LENGTH; import static org.briarproject.briar.api.introduction.IntroductionConstants.MAX_INTRODUCTION_TEXT_LENGTH;
@MethodsNotNullByDefault @MethodsNotNullByDefault
@@ -184,7 +185,7 @@ public class IntroductionMessageFragment extends BaseFragment
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { switch (item.getItemId()) {
case android.R.id.home: case android.R.id.home:
introductionActivity.hideSoftKeyboard(ui.message); hideSoftKeyboard(ui.message);
introductionActivity.onBackPressed(); introductionActivity.onBackPressed();
return true; return true;
default: default:
@@ -201,7 +202,7 @@ public class IntroductionMessageFragment extends BaseFragment
makeIntroduction(contact1, contact2, text); makeIntroduction(contact1, contact2, text);
// don't wait for the introduction to be made before finishing activity // don't wait for the introduction to be made before finishing activity
introductionActivity.hideSoftKeyboard(ui.message); hideSoftKeyboard(ui.message);
introductionActivity.setResult(RESULT_OK); introductionActivity.setResult(RESULT_OK);
introductionActivity.supportFinishAfterTransition(); introductionActivity.supportFinishAfterTransition();
} }

View File

@@ -35,7 +35,6 @@ import static android.hardware.Camera.Parameters.FOCUS_MODE_FIXED;
import static android.hardware.Camera.Parameters.FOCUS_MODE_MACRO; import static android.hardware.Camera.Parameters.FOCUS_MODE_MACRO;
import static android.hardware.Camera.Parameters.SCENE_MODE_AUTO; import static android.hardware.Camera.Parameters.SCENE_MODE_AUTO;
import static android.hardware.Camera.Parameters.SCENE_MODE_BARCODE; import static android.hardware.Camera.Parameters.SCENE_MODE_BARCODE;
import static android.os.Build.VERSION.SDK_INT;
import static java.util.logging.Level.INFO; import static java.util.logging.Level.INFO;
import static java.util.logging.Level.WARNING; import static java.util.logging.Level.WARNING;
import static org.briarproject.bramble.util.LogUtils.logException; import static org.briarproject.bramble.util.LogUtils.logException;
@@ -340,7 +339,7 @@ public class CameraView extends SurfaceView implements SurfaceHolder.Callback,
@UiThread @UiThread
private void setVideoStabilisation(Parameters params) { private void setVideoStabilisation(Parameters params) {
if (SDK_INT >= 15 && params.isVideoStabilizationSupported()) { if (params.isVideoStabilizationSupported()) {
params.setVideoStabilization(true); params.setVideoStabilization(true);
} }
} }
@@ -415,10 +414,8 @@ public class CameraView extends SurfaceView implements SurfaceHolder.Callback,
} catch (RuntimeException e) { } catch (RuntimeException e) {
throw new CameraException(e); throw new CameraException(e);
} }
if (SDK_INT >= 15) { LOG.info("Video stabilisation enabled: "
LOG.info("Video stabilisation enabled: " + params.getVideoStabilization());
+ params.getVideoStabilization());
}
LOG.info("Scene mode: " + params.getSceneMode()); LOG.info("Scene mode: " + params.getSceneMode());
LOG.info("Focus mode: " + params.getFocusMode()); LOG.info("Focus mode: " + params.getFocusMode());
LOG.info("Flash mode: " + params.getFlashMode()); LOG.info("Flash mode: " + params.getFlashMode());

View File

@@ -62,8 +62,7 @@ public class ContactExchangeActivity extends KeyAgreementActivity {
@UiThread @UiThread
private void contactExchangeSucceeded(Author remoteAuthor) { private void contactExchangeSucceeded(Author remoteAuthor) {
String contactName = remoteAuthor.getName(); String contactName = remoteAuthor.getName();
String format = getString(R.string.contact_added_toast); String text = getString(R.string.contact_added_toast, contactName);
String text = String.format(format, contactName);
Toast.makeText(this, text, LENGTH_LONG).show(); Toast.makeText(this, text, LENGTH_LONG).show();
supportFinishAfterTransition(); supportFinishAfterTransition();
} }

View File

@@ -183,10 +183,14 @@ public abstract class KeyAgreementActivity extends BriarActivity implements
if (bt == null) { if (bt == null) {
setBluetoothState(BluetoothState.NO_ADAPTER); setBluetoothState(BluetoothState.NO_ADAPTER);
} else { } else {
setBluetoothState(BluetoothState.WAITING);
wasAdapterEnabled = bt.isEnabled();
Intent i = new Intent(ACTION_REQUEST_DISCOVERABLE); Intent i = new Intent(ACTION_REQUEST_DISCOVERABLE);
startActivityForResult(i, REQUEST_BLUETOOTH_DISCOVERABLE); if (i.resolveActivity(getPackageManager()) != null) {
setBluetoothState(BluetoothState.WAITING);
wasAdapterEnabled = bt.isEnabled();
startActivityForResult(i, REQUEST_BLUETOOTH_DISCOVERABLE);
} else {
setBluetoothState(BluetoothState.NO_ADAPTER);
}
} }
} }

View File

@@ -26,6 +26,8 @@ import javax.inject.Inject;
import static android.view.View.INVISIBLE; import static android.view.View.INVISIBLE;
import static android.view.View.VISIBLE; import static android.view.View.VISIBLE;
import static org.briarproject.bramble.api.crypto.PasswordStrengthEstimator.QUITE_WEAK; import static org.briarproject.bramble.api.crypto.PasswordStrengthEstimator.QUITE_WEAK;
import static org.briarproject.briar.android.util.UiUtils.hideSoftKeyboard;
import static org.briarproject.briar.android.util.UiUtils.showSoftKeyboard;
public class ChangePasswordActivity extends BriarActivity public class ChangePasswordActivity extends BriarActivity
implements OnClickListener, OnEditorActionListener { implements OnClickListener, OnEditorActionListener {

View File

@@ -83,12 +83,6 @@ public class PasswordFragment extends BaseFragment implements TextWatcher {
return v; return v;
} }
@Override
public void onResume() {
super.onResume();
showSoftKeyboard(password);
}
@Override @Override
public void beforeTextChanged(CharSequence s, int start, int count, public void beforeTextChanged(CharSequence s, int start, int count,
int after) { int after) {

View File

@@ -47,7 +47,9 @@ public class GroupActivity extends
@Inject @Inject
GroupController controller; GroupController controller;
private boolean isCreator, isDissolved = false; @Nullable
private Boolean isCreator = null;
private boolean isDissolved = false;
private MenuItem revealMenuItem, inviteMenuItem, leaveMenuItem, private MenuItem revealMenuItem, inviteMenuItem, leaveMenuItem,
dissolveMenuItem; dissolveMenuItem;
@@ -137,6 +139,14 @@ public class GroupActivity extends
inviteMenuItem = menu.findItem(R.id.action_group_invite); inviteMenuItem = menu.findItem(R.id.action_group_invite);
leaveMenuItem = menu.findItem(R.id.action_group_leave); leaveMenuItem = menu.findItem(R.id.action_group_leave);
dissolveMenuItem = menu.findItem(R.id.action_group_dissolve); dissolveMenuItem = menu.findItem(R.id.action_group_dissolve);
// all role-dependent items are invisible until we know our role
revealMenuItem.setVisible(false);
inviteMenuItem.setVisible(false);
leaveMenuItem.setVisible(false);
dissolveMenuItem.setVisible(false);
// show items based on role
showMenuItems(); showMenuItems();
return super.onCreateOptionsMenu(menu); return super.onCreateOptionsMenu(menu);
@@ -151,19 +161,27 @@ public class GroupActivity extends
startActivity(i1); startActivity(i1);
return true; return true;
case R.id.action_group_reveal: case R.id.action_group_reveal:
if (isCreator == null || isCreator)
throw new IllegalStateException();
Intent i2 = new Intent(this, RevealContactsActivity.class); Intent i2 = new Intent(this, RevealContactsActivity.class);
i2.putExtra(GROUP_ID, groupId.getBytes()); i2.putExtra(GROUP_ID, groupId.getBytes());
startActivity(i2); startActivity(i2);
return true; return true;
case R.id.action_group_invite: case R.id.action_group_invite:
if (isCreator == null || !isCreator)
throw new IllegalStateException();
Intent i3 = new Intent(this, GroupInviteActivity.class); Intent i3 = new Intent(this, GroupInviteActivity.class);
i3.putExtra(GROUP_ID, groupId.getBytes()); i3.putExtra(GROUP_ID, groupId.getBytes());
startActivityForResult(i3, REQUEST_GROUP_INVITE); startActivityForResult(i3, REQUEST_GROUP_INVITE);
return true; return true;
case R.id.action_group_leave: case R.id.action_group_leave:
if (isCreator == null || isCreator)
throw new IllegalStateException();
showLeaveGroupDialog(); showLeaveGroupDialog();
return true; return true;
case R.id.action_group_dissolve: case R.id.action_group_dissolve:
if (isCreator == null || !isCreator)
throw new IllegalStateException();
showDissolveGroupDialog(); showDissolveGroupDialog();
default: default:
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
@@ -209,18 +227,12 @@ public class GroupActivity extends
} }
private void showMenuItems() { private void showMenuItems() {
if (leaveMenuItem == null || dissolveMenuItem == null) return; // we need to have the menu items and know if we are the creator
if (isCreator) { if (leaveMenuItem == null || isCreator == null) return;
revealMenuItem.setVisible(false); revealMenuItem.setVisible(!isCreator);
inviteMenuItem.setVisible(true); inviteMenuItem.setVisible(isCreator);
leaveMenuItem.setVisible(false); leaveMenuItem.setVisible(!isCreator);
dissolveMenuItem.setVisible(true); dissolveMenuItem.setVisible(isCreator);
} else {
revealMenuItem.setVisible(true);
inviteMenuItem.setVisible(false);
leaveMenuItem.setVisible(true);
dissolveMenuItem.setVisible(false);
}
} }
private void showLeaveGroupDialog() { private void showLeaveGroupDialog() {

View File

@@ -24,6 +24,7 @@ import static android.view.View.GONE;
import static android.view.View.VISIBLE; import static android.view.View.VISIBLE;
import static android.view.inputmethod.EditorInfo.IME_ACTION_DONE; import static android.view.inputmethod.EditorInfo.IME_ACTION_DONE;
import static org.briarproject.briar.android.util.UiUtils.enterPressed; import static org.briarproject.briar.android.util.UiUtils.enterPressed;
import static org.briarproject.briar.android.util.UiUtils.hideSoftKeyboard;
import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_NAME_LENGTH; import static org.briarproject.briar.api.privategroup.PrivateGroupConstants.MAX_GROUP_NAME_LENGTH;
@MethodsNotNullByDefault @MethodsNotNullByDefault
@@ -91,12 +92,6 @@ public class CreateGroupFragment extends BaseFragment {
return v; return v;
} }
@Override
public void onStart() {
super.onStart();
listener.showSoftKeyboard(nameEntry);
}
@Override @Override
public String getUniqueTag() { public String getUniqueTag() {
return TAG; return TAG;
@@ -120,7 +115,7 @@ public class CreateGroupFragment extends BaseFragment {
private void createGroup() { private void createGroup() {
if (!validateName()) return; if (!validateName()) return;
listener.hideSoftKeyboard(nameEntry); hideSoftKeyboard(nameEntry);
createGroupButton.setVisibility(GONE); createGroupButton.setVisibility(GONE);
progress.setVisibility(VISIBLE); progress.setVisibility(VISIBLE);
listener.onGroupNameChosen(nameEntry.getText().toString()); listener.onGroupNameChosen(nameEntry.getText().toString());

View File

@@ -1,15 +1,8 @@
package org.briarproject.briar.android.privategroup.creation; package org.briarproject.briar.android.privategroup.creation;
import android.view.View;
import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener; import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener;
interface CreateGroupListener extends BaseFragmentListener { interface CreateGroupListener extends BaseFragmentListener {
void onGroupNameChosen(String name); void onGroupNameChosen(String name);
void showSoftKeyboard(View view);
void hideSoftKeyboard(View view);
} }

View File

@@ -194,7 +194,7 @@ public class GroupListFragment extends BaseFragment implements
if (revision == adapter.getRevision()) { if (revision == adapter.getRevision()) {
adapter.incrementRevision(); adapter.incrementRevision();
if (groups.isEmpty()) list.showData(); if (groups.isEmpty()) list.showData();
else adapter.addAll(groups); else adapter.replaceAll(groups);
} else { } else {
LOG.info("Concurrent update, reloading"); LOG.info("Concurrent update, reloading");
loadGroups(); loadGroups();

View File

@@ -90,14 +90,9 @@ public class BriarReportPrimer implements ReportPrimer {
ActivityManager.MemoryInfo mem = new ActivityManager.MemoryInfo(); ActivityManager.MemoryInfo mem = new ActivityManager.MemoryInfo();
am.getMemoryInfo(mem); am.getMemoryInfo(mem);
String systemMemory; String systemMemory;
if (Build.VERSION.SDK_INT >= 16) { systemMemory = (mem.totalMem / 1024 / 1024) + " MiB total, "
systemMemory = (mem.totalMem / 1024 / 1024) + " MiB total, " + (mem.availMem / 1024 / 1204) + " MiB free, "
+ (mem.availMem / 1024 / 1204) + " MiB free, " + (mem.threshold / 1024 / 1024) + " MiB threshold";
+ (mem.threshold / 1024 / 1024) + " MiB threshold";
} else {
systemMemory = (mem.availMem / 1024 / 1204) + " MiB free, "
+ (mem.threshold / 1024 / 1024) + " MiB threshold";
}
customData.put("System memory", systemMemory); customData.put("System memory", systemMemory);
// Virtual machine memory // Virtual machine memory

View File

@@ -218,11 +218,17 @@ public class SettingsFragment extends PreferenceFragmentCompat
}); });
if (SDK_INT < 27) { if (SDK_INT < 27) {
// remove System Default Theme option // remove System Default Theme option from preference entries
// as it is not functional on this API anyway
List<CharSequence> entries = List<CharSequence> entries =
new ArrayList<>(Arrays.asList(theme.getEntries())); new ArrayList<>(Arrays.asList(theme.getEntries()));
entries.remove(getString(R.string.pref_theme_system)); entries.remove(getString(R.string.pref_theme_system));
theme.setEntries(entries.toArray(new CharSequence[0])); theme.setEntries(entries.toArray(new CharSequence[0]));
// also remove corresponding value
List<CharSequence> values =
new ArrayList<>(Arrays.asList(theme.getEntryValues()));
values.remove(getString(R.string.pref_theme_system_value));
theme.setEntryValues(values.toArray(new CharSequence[0]));
} }
if (IS_DEBUG_BUILD) { if (IS_DEBUG_BUILD) {
findPreference("pref_key_explode").setOnPreferenceClickListener( findPreference("pref_key_explode").setOnPreferenceClickListener(
@@ -489,7 +495,13 @@ public class SettingsFragment extends PreferenceFragmentCompat
Intent intent = new Intent(ACTION_CHANNEL_NOTIFICATION_SETTINGS) Intent intent = new Intent(ACTION_CHANNEL_NOTIFICATION_SETTINGS)
.putExtra(EXTRA_APP_PACKAGE, packageName) .putExtra(EXTRA_APP_PACKAGE, packageName)
.putExtra(EXTRA_CHANNEL_ID, channelId); .putExtra(EXTRA_CHANNEL_ID, channelId);
startActivity(intent); Context ctx = requireContext();
if (intent.resolveActivity(ctx.getPackageManager()) != null) {
startActivity(intent);
} else {
Toast.makeText(ctx, R.string.error_start_activity, LENGTH_SHORT)
.show();
}
return true; return true;
}); });
} }
@@ -511,7 +523,12 @@ public class SettingsFragment extends PreferenceFragmentCompat
else uri = Uri.parse(ringtoneUri); else uri = Uri.parse(ringtoneUri);
i.putExtra(EXTRA_RINGTONE_EXISTING_URI, uri); i.putExtra(EXTRA_RINGTONE_EXISTING_URI, uri);
} }
startActivityForResult(i, REQUEST_RINGTONE); if (i.resolveActivity(requireActivity().getPackageManager()) != null) {
startActivityForResult(i, REQUEST_RINGTONE);
} else {
Toast.makeText(getContext(), R.string.cannot_load_ringtone,
LENGTH_SHORT).show();
}
return true; return true;
} }
@@ -646,7 +663,7 @@ public class SettingsFragment extends PreferenceFragmentCompat
} else { } else {
// The user chose a ringtone other than the default // The user chose a ringtone other than the default
Ringtone r = RingtoneManager.getRingtone(getContext(), uri); Ringtone r = RingtoneManager.getRingtone(getContext(), uri);
if (r == null) { if (r == null || "file".equals(uri.getScheme())) {
Toast.makeText(getContext(), R.string.cannot_load_ringtone, Toast.makeText(getContext(), R.string.cannot_load_ringtone,
LENGTH_SHORT).show(); LENGTH_SHORT).show();
} else { } else {

View File

@@ -64,12 +64,6 @@ public abstract class BaseMessageFragment extends BaseFragment
@StringRes @StringRes
protected abstract int getHintText(); protected abstract int getHintText();
@Override
public void onStart() {
super.onStart();
message.showSoftKeyboard();
}
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { switch (item.getItemId()) {

View File

@@ -27,7 +27,6 @@ import org.briarproject.briar.android.threaded.ThreadListController.ThreadListDa
import org.briarproject.briar.android.threaded.ThreadListController.ThreadListListener; import org.briarproject.briar.android.threaded.ThreadListController.ThreadListListener;
import org.briarproject.briar.android.util.BriarSnackbarBuilder; import org.briarproject.briar.android.util.BriarSnackbarBuilder;
import org.briarproject.briar.android.view.BriarRecyclerView; import org.briarproject.briar.android.view.BriarRecyclerView;
import org.briarproject.briar.android.view.KeyboardAwareLinearLayout;
import org.briarproject.briar.android.view.TextInputView; import org.briarproject.briar.android.view.TextInputView;
import org.briarproject.briar.android.view.TextSendController; import org.briarproject.briar.android.view.TextSendController;
import org.briarproject.briar.android.view.TextSendController.SendListener; import org.briarproject.briar.android.view.TextSendController.SendListener;
@@ -284,14 +283,10 @@ public abstract class ThreadListActivity<G extends NamedGroup, I extends ThreadI
scrollToItemAtTop(item); scrollToItemAtTop(item);
} else { } else {
// wait with scrolling until keyboard opened // wait with scrolling until keyboard opened
textInput.addOnKeyboardShownListener( textInput.setOnKeyboardShownListener(() -> {
new KeyboardAwareLinearLayout.OnKeyboardShownListener() { scrollToItemAtTop(item);
@Override textInput.setOnKeyboardShownListener(null);
public void onKeyboardShown() { });
scrollToItemAtTop(item);
textInput.removeOnKeyboardShownListener(this);
}
});
} }
} }
@@ -332,7 +327,6 @@ public abstract class ThreadListActivity<G extends NamedGroup, I extends ThreadI
private void updateTextInput() { private void updateTextInput() {
if (replyId != null) { if (replyId != null) {
textInput.setHint(R.string.forum_message_reply_hint); textInput.setHint(R.string.forum_message_reply_hint);
textInput.requestFocus();
textInput.showSoftKeyboard(); textInput.showSoftKeyboard();
} else { } else {
textInput.setHint(R.string.forum_new_message_hint); textInput.setHint(R.string.forum_new_message_hint);

View File

@@ -79,6 +79,10 @@ public abstract class BriarAdapter<T, V extends ViewHolder>
this.items.addAll(items); this.items.addAll(items);
} }
public void replaceAll(Collection<T> items) {
this.items.replaceAll(items);
}
public void setItems(Collection<T> items) { public void setItems(Collection<T> items) {
this.items.beginBatchedUpdates(); this.items.beginBatchedUpdates();
this.items.clear(); this.items.clear();

View File

@@ -4,13 +4,18 @@ import android.support.annotation.ColorRes;
import android.support.annotation.Nullable; import android.support.annotation.Nullable;
import android.support.annotation.StringRes; import android.support.annotation.StringRes;
import android.support.design.widget.Snackbar; import android.support.design.widget.Snackbar;
import android.support.design.widget.Snackbar.Callback;
import android.view.View; import android.view.View;
import android.view.View.OnClickListener; import android.view.View.OnClickListener;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import org.briarproject.briar.R; import org.briarproject.briar.R;
import static android.os.Build.VERSION.SDK_INT;
import static android.support.design.widget.Snackbar.LENGTH_INDEFINITE;
import static android.support.v4.content.ContextCompat.getColor; import static android.support.v4.content.ContextCompat.getColor;
import static android.view.View.INVISIBLE;
import static android.view.View.VISIBLE;
@NotNullByDefault @NotNullByDefault
public class BriarSnackbarBuilder { public class BriarSnackbarBuilder {
@@ -30,6 +35,24 @@ public class BriarSnackbarBuilder {
R.color.briar_button_text_positive)); R.color.briar_button_text_positive));
s.setAction(actionResId, onClickListener); s.setAction(actionResId, onClickListener);
} }
// Workaround for https://issuetracker.google.com/issues/64285517
if (duration == LENGTH_INDEFINITE && SDK_INT < 21) {
// Hide snackbar while it's opening to make bouncing less noticeable
s.getView().setVisibility(INVISIBLE);
s.addCallback(new Callback() {
@Override
public void onShown(Snackbar snackbar) {
snackbar.getView().setVisibility(VISIBLE);
// Request layout again in case snackbar is in wrong place
snackbar.getView().requestLayout();
}
@Override
public void onDismissed(Snackbar snackbar, int event) {
snackbar.getView().setVisibility(INVISIBLE);
}
});
}
return s; return s;
} }

View File

@@ -92,9 +92,11 @@ public class UiUtils {
public static final float GREY_OUT = 0.5f; public static final float GREY_OUT = 0.5f;
public static void showSoftKeyboard(View view) { public static void showSoftKeyboard(View view) {
InputMethodManager imm = requireNonNull( if (view.requestFocus()) {
getSystemService(view.getContext(), InputMethodManager.class)); InputMethodManager imm = requireNonNull(getSystemService(
imm.showSoftInput(view, SHOW_IMPLICIT); view.getContext(), InputMethodManager.class));
imm.showSoftInput(view, SHOW_IMPLICIT);
}
} }
public static void hideSoftKeyboard(View view) { public static void hideSoftKeyboard(View view) {

View File

@@ -1,44 +0,0 @@
package org.briarproject.briar.android.view;
import android.content.Context;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.Snackbar;
import android.util.AttributeSet;
import android.view.View;
public class BriarRecyclerViewBehavior
extends CoordinatorLayout.Behavior<BriarRecyclerView> {
public BriarRecyclerViewBehavior(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onDependentViewChanged(CoordinatorLayout parent,
BriarRecyclerView child, View dependency) {
// FIXME the below code works, but does not reset margin when snackbar is dismissed
/*
int margin = 0;
if (dependency.isShown()) margin = dependency.getHeight();
// set snackbar height as bottom margin if it is shown
CoordinatorLayout.LayoutParams params =
(CoordinatorLayout.LayoutParams) child.getLayoutParams();
params.setMargins(0, 0, 0, margin);
child.setLayoutParams(params);
child.scrollToPosition(0);
*/
return true;
}
@Override
public boolean layoutDependsOn(CoordinatorLayout parent,
BriarRecyclerView child, View dependency) {
// we only want to trigger the change
// only when the changes is from a snackbar
return dependency instanceof Snackbar.SnackbarLayout;
}
}

View File

@@ -13,7 +13,6 @@ import android.widget.ProgressBar;
import org.briarproject.briar.R; import org.briarproject.briar.R;
import static android.content.Context.LAYOUT_INFLATER_SERVICE; import static android.content.Context.LAYOUT_INFLATER_SERVICE;
import static android.os.Build.VERSION.SDK_INT;
import static java.util.Objects.requireNonNull; import static java.util.Objects.requireNonNull;
public class CompositeSendButton extends FrameLayout { public class CompositeSendButton extends FrameLayout {
@@ -75,33 +74,24 @@ public class CompositeSendButton extends FrameLayout {
if (showImageButton) { if (showImageButton) {
imageButton.setVisibility(VISIBLE); imageButton.setVisibility(VISIBLE);
sendButton.setEnabled(false); sendButton.setEnabled(false);
if (SDK_INT <= 15) { sendButton.clearAnimation();
sendButton.animate().alpha(0f).withEndAction(() -> {
sendButton.setVisibility(INVISIBLE); sendButton.setVisibility(INVISIBLE);
imageButton.setEnabled(true); imageButton.setEnabled(true);
} else { }).start();
sendButton.clearAnimation(); imageButton.clearAnimation();
sendButton.animate().alpha(0f).withEndAction(() -> { imageButton.animate().alpha(1f).start();
sendButton.setVisibility(INVISIBLE);
imageButton.setEnabled(true);
}).start();
imageButton.clearAnimation();
imageButton.animate().alpha(1f).start();
}
} else { } else {
sendButton.setVisibility(VISIBLE); sendButton.setVisibility(VISIBLE);
// enable/disable buttons right away to allow fast sending // enable/disable buttons right away to allow fast sending
sendButton.setEnabled(sendEnabled); sendButton.setEnabled(sendEnabled);
imageButton.setEnabled(false); imageButton.setEnabled(false);
if (SDK_INT <= 15) { sendButton.clearAnimation();
imageButton.setVisibility(INVISIBLE); sendButton.animate().alpha(1f).start();
} else { imageButton.clearAnimation();
sendButton.clearAnimation(); imageButton.animate().alpha(0f).withEndAction(() ->
sendButton.animate().alpha(1f).start(); imageButton.setVisibility(INVISIBLE)
imageButton.clearAnimation(); ).start();
imageButton.animate().alpha(0f).withEndAction(() ->
imageButton.setVisibility(INVISIBLE)
).start();
}
} }
} }

View File

@@ -13,8 +13,8 @@ import android.util.AttributeSet;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.inputmethod.InputMethodManager; import android.view.inputmethod.InputMethodManager;
import android.widget.EditText; import android.widget.EditText;
import android.widget.LinearLayout;
import com.vanniktech.emoji.EmojiEditText;
import com.vanniktech.emoji.EmojiPopup; import com.vanniktech.emoji.EmojiPopup;
import com.vanniktech.emoji.RecentEmoji; import com.vanniktech.emoji.RecentEmoji;
@@ -31,8 +31,9 @@ import static android.view.inputmethod.InputMethodManager.SHOW_IMPLICIT;
import static java.lang.Character.isWhitespace; import static java.lang.Character.isWhitespace;
import static java.util.Objects.requireNonNull; import static java.util.Objects.requireNonNull;
import static org.briarproject.bramble.util.StringUtils.utf8IsTooLong; import static org.briarproject.bramble.util.StringUtils.utf8IsTooLong;
import static org.briarproject.briar.android.util.UiUtils.resolveColorAttribute;
public class EmojiTextInputView extends KeyboardAwareLinearLayout implements public class EmojiTextInputView extends LinearLayout implements
TextWatcher { TextWatcher {
@Inject @Inject
@@ -41,12 +42,16 @@ public class EmojiTextInputView extends KeyboardAwareLinearLayout implements
private final AppCompatImageButton emojiToggle; private final AppCompatImageButton emojiToggle;
private final EmojiPopup emojiPopup; private final EmojiPopup emojiPopup;
private final EditText editText; private final EditText editText;
private final InputMethodManager imm;
@Nullable @Nullable
private TextInputListener listener; private TextInputListener listener;
@Nullable
private OnKeyboardShownListener keyboardShownListener;
private int maxLength = Integer.MAX_VALUE; private int maxLength = Integer.MAX_VALUE;
private boolean emptyTextAllowed = false; private boolean emptyTextAllowed = false;
private boolean isEmpty = true; private boolean isEmpty = true;
private boolean keyboardOpen = false;
public EmojiTextInputView(Context context) { public EmojiTextInputView(Context context) {
this(context, null); this(context, null);
@@ -80,7 +85,6 @@ public class EmojiTextInputView extends KeyboardAwareLinearLayout implements
editText = findViewById(R.id.input_text); editText = findViewById(R.id.input_text);
editText.setPadding(0, 0, paddingEnd, paddingBottom); editText.setPadding(0, 0, paddingEnd, paddingBottom);
if (maxLines > 0) editText.setMaxLines(maxLines); if (maxLines > 0) editText.setMaxLines(maxLines);
editText.setOnClickListener(v -> showSoftKeyboard());
editText.addTextChangedListener(this); editText.addTextChangedListener(this);
editText.setOnEditorActionListener((v, actionId, event) -> { editText.setOnEditorActionListener((v, actionId, event) -> {
if (actionId == IME_ACTION_SEND) { if (actionId == IME_ACTION_SEND) {
@@ -104,18 +108,30 @@ public class EmojiTextInputView extends KeyboardAwareLinearLayout implements
// stuff we can't do in edit mode goes below // stuff we can't do in edit mode goes below
if (isInEditMode()) { if (isInEditMode()) {
emojiPopup = null; emojiPopup = null;
imm = null;
return; return;
} }
Object o = getContext().getSystemService(INPUT_METHOD_SERVICE);
imm = (InputMethodManager) requireNonNull(o);
BriarApplication app = BriarApplication app =
(BriarApplication) context.getApplicationContext(); (BriarApplication) context.getApplicationContext();
app.getApplicationComponent().inject(this); app.getApplicationComponent().inject(this);
emojiPopup = EmojiPopup.Builder emojiPopup = EmojiPopup.Builder
.fromRootView(this) .fromRootView(getRootView())
.setRecentEmoji(recentEmoji) .setRecentEmoji(recentEmoji)
.setOnEmojiPopupShownListener(this::showKeyboardIcon) .setOnEmojiPopupShownListener(this::showKeyboardIcon)
.setOnEmojiPopupDismissListener(this::showEmojiIcon) .setOnEmojiPopupDismissListener(this::showEmojiIcon)
.build((EmojiEditText) editText); .setKeyboardAnimationStyle(R.style.emoji_fade_animation_style)
.setOnSoftKeyboardOpenListener(this::onKeyboardOpened)
.setOnSoftKeyboardCloseListener(this::onKeyboardClosed)
.setIconColor(resolveColorAttribute(getContext(),
R.attr.colorControlNormal))
.build(editText);
emojiToggle.setOnClickListener(v -> emojiPopup.toggle()); emojiToggle.setOnClickListener(v -> emojiPopup.toggle());
editText.setOnClickListener(v -> {
if (emojiPopup.isShowing()) emojiPopup.dismiss();
});
} }
@Override @Override
@@ -231,6 +247,10 @@ public class EmojiTextInputView extends KeyboardAwareLinearLayout implements
editText.setHint(hint); editText.setHint(hint);
} }
boolean isKeyboardOpen() {
return keyboardOpen || imm.isFullscreenMode();
}
private void showEmojiIcon() { private void showEmojiIcon() {
emojiToggle.setImageResource(R.drawable.ic_emoji_toggle); emojiToggle.setImageResource(R.drawable.ic_emoji_toggle);
} }
@@ -240,23 +260,43 @@ public class EmojiTextInputView extends KeyboardAwareLinearLayout implements
} }
void showSoftKeyboard() { void showSoftKeyboard() {
Object o = getContext().getSystemService(INPUT_METHOD_SERVICE); if (editText.requestFocus()) imm.showSoftInput(editText, SHOW_IMPLICIT);
InputMethodManager imm = (InputMethodManager) requireNonNull(o);
imm.showSoftInput(editText, SHOW_IMPLICIT);
} }
void hideSoftKeyboard() { void hideSoftKeyboard() {
if (emojiPopup.isShowing()) emojiPopup.dismiss(); if (emojiPopup.isShowing()) emojiPopup.dismiss();
IBinder token = editText.getWindowToken(); IBinder token = editText.getWindowToken();
Object o = getContext().getSystemService(INPUT_METHOD_SERVICE);
InputMethodManager imm = (InputMethodManager) requireNonNull(o);
imm.hideSoftInputFromWindow(token, 0); imm.hideSoftInputFromWindow(token, 0);
} }
private void onKeyboardOpened(
@SuppressWarnings("unused") int keyboardHeight) {
keyboardOpen = true;
if (keyboardShownListener != null)
keyboardShownListener.onKeyboardShown();
}
private void onKeyboardClosed() {
if (imm.isFullscreenMode()) {
onKeyboardOpened(0);
return;
}
keyboardOpen = false;
}
void setOnKeyboardShownListener(
@Nullable OnKeyboardShownListener listener) {
keyboardShownListener = listener;
}
interface TextInputListener { interface TextInputListener {
void onTextIsEmptyChanged(boolean isEmpty); void onTextIsEmptyChanged(boolean isEmpty);
void onSendEvent(); void onSendEvent();
} }
public interface OnKeyboardShownListener {
void onKeyboardShown();
}
} }

View File

@@ -1,225 +0,0 @@
/*
Taken from Signal, licences under GPLv3
*/
package org.briarproject.briar.android.view;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Rect;
import android.os.Build;
import android.preference.PreferenceManager;
import android.support.annotation.UiThread;
import android.util.AttributeSet;
import android.view.View;
import android.view.WindowManager;
import android.widget.LinearLayout;
import org.briarproject.briar.R;
import java.lang.reflect.Field;
import java.util.HashSet;
import java.util.Set;
import java.util.logging.Logger;
import javax.annotation.Nullable;
import static android.content.Context.WINDOW_SERVICE;
import static android.view.Surface.ROTATION_270;
import static android.view.Surface.ROTATION_90;
import static java.util.Objects.requireNonNull;
import static java.util.logging.Level.INFO;
import static java.util.logging.Level.WARNING;
/**
* RelativeLayout that, when a view container, will report back when it thinks
* a soft keyboard has been opened and what its height would be.
*/
@UiThread
public class KeyboardAwareLinearLayout extends LinearLayout {
private static final Logger LOG =
Logger.getLogger(KeyboardAwareLinearLayout.class.getName());
private final Rect rect = new Rect();
private final Set<OnKeyboardShownListener> shownListeners = new HashSet<>();
private final int minKeyboardSize;
private final int minCustomKeyboardSize;
private final int defaultCustomKeyboardSize;
private final int minCustomKeyboardTopMargin;
private final int statusBarHeight;
private int viewInset;
private boolean keyboardOpen = false;
private int rotation = -1;
public KeyboardAwareLinearLayout(Context context) {
this(context, null);
}
public KeyboardAwareLinearLayout(Context context,
@Nullable AttributeSet attrs) {
this(context, attrs, 0);
}
public KeyboardAwareLinearLayout(Context context,
@Nullable AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
rotation = getDeviceRotation();
int statusBarRes = getResources()
.getIdentifier("status_bar_height", "dimen", "android");
minKeyboardSize =
getResources().getDimensionPixelSize(R.dimen.min_keyboard_size);
minCustomKeyboardSize = getResources()
.getDimensionPixelSize(R.dimen.min_custom_keyboard_size);
defaultCustomKeyboardSize = getResources()
.getDimensionPixelSize(R.dimen.default_custom_keyboard_size);
minCustomKeyboardTopMargin = getResources()
.getDimensionPixelSize(R.dimen.min_custom_keyboard_top_margin);
statusBarHeight = statusBarRes > 0 ?
getResources().getDimensionPixelSize(statusBarRes) : 0;
viewInset = getViewInset();
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
updateRotation();
updateKeyboardState();
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
private void updateRotation() {
int oldRotation = rotation;
rotation = getDeviceRotation();
if (oldRotation != rotation) {
LOG.info("Rotation changed");
onKeyboardClose();
}
}
private void updateKeyboardState() {
if (isLandscape()) {
if (keyboardOpen) onKeyboardClose();
return;
}
if (viewInset == 0 && Build.VERSION.SDK_INT >= 21)
viewInset = getViewInset();
int availableHeight =
getRootView().getHeight() - statusBarHeight - viewInset;
getWindowVisibleDisplayFrame(rect);
int keyboardHeight = availableHeight - (rect.bottom - rect.top);
if (keyboardHeight > minKeyboardSize) {
if (getKeyboardHeight() != keyboardHeight)
setKeyboardPortraitHeight(keyboardHeight);
if (!keyboardOpen) onKeyboardOpen(keyboardHeight);
} else if (keyboardOpen) {
onKeyboardClose();
}
}
@TargetApi(21)
private int getViewInset() {
try {
Field attachInfoField = View.class.getDeclaredField("mAttachInfo");
attachInfoField.setAccessible(true);
Object attachInfo = attachInfoField.get(this);
if (attachInfo != null) {
Field stableInsetsField =
attachInfo.getClass().getDeclaredField("mStableInsets");
stableInsetsField.setAccessible(true);
Rect insets = (Rect) stableInsetsField.get(attachInfo);
return insets.bottom;
}
} catch (NoSuchFieldException e) {
LOG.log(WARNING,
"field reflection error when measuring view inset", e);
} catch (IllegalAccessException e) {
LOG.log(WARNING,
"access reflection error when measuring view inset", e);
}
return 0;
}
protected void onKeyboardOpen(int keyboardHeight) {
if (LOG.isLoggable(INFO))
LOG.info("onKeyboardOpen(" + keyboardHeight + ")");
keyboardOpen = true;
notifyShownListeners();
}
protected void onKeyboardClose() {
LOG.info("onKeyboardClose()");
keyboardOpen = false;
}
public boolean isKeyboardOpen() {
return keyboardOpen;
}
public int getKeyboardHeight() {
return isLandscape() ? getKeyboardLandscapeHeight() :
getKeyboardPortraitHeight();
}
public boolean isLandscape() {
int rotation = getDeviceRotation();
return rotation == ROTATION_90 || rotation == ROTATION_270;
}
private int getDeviceRotation() {
WindowManager windowManager =
(WindowManager) getContext().getSystemService(WINDOW_SERVICE);
return requireNonNull(windowManager).getDefaultDisplay().getRotation();
}
private int getKeyboardLandscapeHeight() {
return Math.max(getHeight(), getRootView().getHeight()) / 2;
}
private int getKeyboardPortraitHeight() {
SharedPreferences prefs =
PreferenceManager.getDefaultSharedPreferences(getContext());
int keyboardHeight = prefs.getInt("keyboard_height_portrait",
defaultCustomKeyboardSize);
return clamp(keyboardHeight, minCustomKeyboardSize,
getRootView().getHeight() - minCustomKeyboardTopMargin);
}
private int clamp(int value, int min, int max) {
return Math.min(Math.max(value, min), max);
}
private void setKeyboardPortraitHeight(int height) {
SharedPreferences prefs =
PreferenceManager.getDefaultSharedPreferences(getContext());
prefs.edit().putInt("keyboard_height_portrait", height).apply();
}
public void addOnKeyboardShownListener(OnKeyboardShownListener listener) {
shownListeners.add(listener);
}
public void removeOnKeyboardShownListener(
OnKeyboardShownListener listener) {
shownListeners.remove(listener);
}
private void notifyShownListeners() {
// Make a copy as listeners may remove themselves when called
Set<OnKeyboardShownListener> listeners = new HashSet<>(shownListeners);
for (OnKeyboardShownListener listener : listeners) {
listener.onKeyboardShown();
}
}
public interface OnKeyboardShownListener {
void onKeyboardShown();
}
}

View File

@@ -0,0 +1,50 @@
package org.briarproject.briar.android.view;
import android.content.Context;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.CoordinatorLayout.Behavior;
import android.support.design.widget.CoordinatorLayout.LayoutParams;
import android.support.design.widget.Snackbar.SnackbarLayout;
import android.util.AttributeSet;
import android.view.View;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
/**
* This behavior makes room for a snackbar at the bottom of the screen. The
* proper solution is to use layout_dodgeInsetEdges="bottom", but when used on
* a scrollable view that results in the view being pushed under the app bar
* (see https://issuetracker.google.com/issues/116541304).
*/
@NotNullByDefault
public class SnackbarAwareBehavior<V extends View> extends Behavior<V> {
public SnackbarAwareBehavior(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onDependentViewChanged(CoordinatorLayout parent,
V child, View snackbar) {
setMargin(child, snackbar.getHeight());
return true;
}
@Override
public void onDependentViewRemoved(CoordinatorLayout parent,
V child, View snackbar) {
setMargin(child, 0);
}
@Override
public boolean layoutDependsOn(CoordinatorLayout parent,
V child, View dependency) {
return dependency instanceof SnackbarLayout;
}
private void setMargin(V child, int margin) {
LayoutParams params = (LayoutParams) child.getLayoutParams();
params.setMargins(0, 0, 0, margin);
child.setLayoutParams(params);
}
}

View File

@@ -16,7 +16,7 @@ import android.widget.LinearLayout;
import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
import org.briarproject.briar.R; import org.briarproject.briar.R;
import org.briarproject.briar.android.view.KeyboardAwareLinearLayout.OnKeyboardShownListener; import org.briarproject.briar.android.view.EmojiTextInputView.OnKeyboardShownListener;
import static android.content.Context.LAYOUT_INFLATER_SERVICE; import static android.content.Context.LAYOUT_INFLATER_SERVICE;
import static java.util.Objects.requireNonNull; import static java.util.Objects.requireNonNull;
@@ -139,13 +139,9 @@ public class TextInputView extends LinearLayout {
textInput.hideSoftKeyboard(); textInput.hideSoftKeyboard();
} }
public void addOnKeyboardShownListener(OnKeyboardShownListener listener) { public void setOnKeyboardShownListener(
textInput.addOnKeyboardShownListener(listener); @Nullable OnKeyboardShownListener listener) {
} textInput.setOnKeyboardShownListener(listener);
public void removeOnKeyboardShownListener(
OnKeyboardShownListener listener) {
textInput.removeOnKeyboardShownListener(listener);
} }
} }

View File

@@ -29,13 +29,17 @@
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:passwordToggleEnabled="true"> app:passwordToggleEnabled="true">
<EditText <android.support.design.widget.TextInputEditText
android:id="@+id/current_password_entry" android:id="@+id/current_password_entry"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="@string/current_password" android:hint="@string/current_password"
android:importantForAutofill="no"
android:inputType="textPassword" android:inputType="textPassword"
android:maxLines="1"/> android:maxLines="1"/>
<requestFocus/>
</android.support.design.widget.TextInputLayout> </android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout <android.support.design.widget.TextInputLayout
@@ -49,11 +53,12 @@
app:layout_constraintTop_toBottomOf="@id/current_password_entry_wrapper" app:layout_constraintTop_toBottomOf="@id/current_password_entry_wrapper"
app:passwordToggleEnabled="true"> app:passwordToggleEnabled="true">
<EditText <android.support.design.widget.TextInputEditText
android:id="@+id/new_password_entry" android:id="@+id/new_password_entry"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="@string/choose_new_password" android:hint="@string/choose_new_password"
android:importantForAutofill="no"
android:inputType="textPassword" android:inputType="textPassword"
android:maxLines="1"/> android:maxLines="1"/>
</android.support.design.widget.TextInputLayout> </android.support.design.widget.TextInputLayout>
@@ -69,12 +74,13 @@
app:layout_constraintTop_toBottomOf="@id/new_password_entry_wrapper" app:layout_constraintTop_toBottomOf="@id/new_password_entry_wrapper"
app:passwordToggleEnabled="true"> app:passwordToggleEnabled="true">
<EditText <android.support.design.widget.TextInputEditText
android:id="@+id/new_password_confirm" android:id="@+id/new_password_confirm"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="@string/confirm_new_password" android:hint="@string/confirm_new_password"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:importantForAutofill="no"
android:inputType="textPassword" android:inputType="textPassword"
android:maxLines="1"/> android:maxLines="1"/>
</android.support.design.widget.TextInputLayout> </android.support.design.widget.TextInputLayout>

View File

@@ -15,14 +15,17 @@
app:errorEnabled="true" app:errorEnabled="true"
app:hintEnabled="false"> app:hintEnabled="false">
<EditText <android.support.design.widget.TextInputEditText
android:id="@+id/createForumNameEntry" android:id="@+id/createForumNameEntry"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="@string/choose_forum_hint" android:hint="@string/choose_forum_hint"
android:importantForAutofill="no"
android:inputType="text|textCapSentences" android:inputType="text|textCapSentences"
android:maxLines="1"/> android:maxLines="1"/>
<requestFocus/>
</android.support.design.widget.TextInputLayout> </android.support.design.widget.TextInputLayout>
<Button <Button

View File

@@ -18,7 +18,7 @@
app:cardCornerRadius="0dp" app:cardCornerRadius="0dp"
app:cardUseCompatPadding="false"> app:cardUseCompatPadding="false">
<EditText <android.support.design.widget.TextInputEditText
android:id="@+id/urlInput" android:id="@+id/urlInput"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
@@ -26,9 +26,14 @@
android:gravity="top" android:gravity="top"
android:hint="@string/blogs_rss_feeds_import_hint" android:hint="@string/blogs_rss_feeds_import_hint"
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:importantForAutofill="no"
android:inputType="textUri" android:inputType="textUri"
android:padding="@dimen/margin_medium" android:padding="@dimen/margin_medium"
android:textColor="?android:attr/textColorPrimary"/> android:textColor="?android:attr/textColorPrimary">
<requestFocus/>
</android.support.design.widget.TextInputEditText>
</android.support.v7.widget.CardView> </android.support.v7.widget.CardView>

View File

@@ -14,7 +14,11 @@
android:gravity="bottom" android:gravity="bottom"
app:buttonText="@string/blogs_publish_blog_post" app:buttonText="@string/blogs_publish_blog_post"
app:fillHeight="true" app:fillHeight="true"
app:hint="@string/blogs_write_blog_post_body_hint"/> app:hint="@string/blogs_write_blog_post_body_hint">
<requestFocus/>
</org.briarproject.briar.android.view.LargeTextInputView>
<ProgressBar <ProgressBar
android:id="@+id/progressBar" android:id="@+id/progressBar"

View File

@@ -6,7 +6,7 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="horizontal" android:orientation="horizontal"
tools:parentTag="org.briarproject.briar.android.view.KeyboardAwareLinearLayout" tools:parentTag="android.widget.LinearLayout"
tools:showIn="@layout/fragment_reblog"> tools:showIn="@layout/fragment_reblog">
<android.support.v7.widget.AppCompatImageButton <android.support.v7.widget.AppCompatImageButton

View File

@@ -9,6 +9,7 @@
android:id="@+id/list" android:id="@+id/list"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
app:layout_behavior="org.briarproject.briar.android.view.SnackbarAwareBehavior"
app:scrollToEnd="false"/> app:scrollToEnd="false"/>
<io.github.kobakei.materialfabspeeddial.FabSpeedDial <io.github.kobakei.materialfabspeeddial.FabSpeedDial
@@ -19,6 +20,8 @@
app:fab_fabRippleColor="@android:color/transparent" app:fab_fabRippleColor="@android:color/transparent"
app:fab_menu="@menu/contact_list_actions" app:fab_menu="@menu/contact_list_actions"
app:fab_miniFabTextBackground="@color/briar_accent" app:fab_miniFabTextBackground="@color/briar_accent"
app:fab_miniFabTextColor="@android:color/white"/> app:fab_miniFabTextColor="@android:color/white"
app:layout_anchorGravity="bottom|right|end"
app:layout_behavior="org.briarproject.briar.android.view.SnackbarAwareBehavior"/>
</android.support.design.widget.CoordinatorLayout> </android.support.design.widget.CoordinatorLayout>

View File

@@ -15,14 +15,17 @@
app:errorEnabled="true" app:errorEnabled="true"
app:hintEnabled="false"> app:hintEnabled="false">
<EditText <android.support.design.widget.TextInputEditText
android:id="@+id/name" android:id="@+id/name"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:hint="@string/groups_create_group_hint" android:hint="@string/groups_create_group_hint"
android:importantForAutofill="no"
android:inputType="text|textCapSentences" android:inputType="text|textCapSentences"
android:maxLines="1"/> android:maxLines="1"/>
<requestFocus/>
</android.support.design.widget.TextInputLayout> </android.support.design.widget.TextInputLayout>
<Button <Button

View File

@@ -26,7 +26,8 @@
app:layout_constraintEnd_toStartOf="@+id/guideline" app:layout_constraintEnd_toStartOf="@+id/guideline"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0"/> app:layout_constraintVertical_bias="0.0"
app:layout_constraintVertical_chainStyle="packed"/>
<TextView <TextView
android:id="@+id/stepOneText" android:id="@+id/stepOneText"
@@ -74,12 +75,14 @@
<ImageView <ImageView
android:id="@+id/imageView" android:id="@+id/imageView"
android:layout_width="wrap_content" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="0dp"
android:layout_marginTop="32dp" android:layout_marginTop="32dp"
android:src="@drawable/ic_nickname" android:src="@drawable/ic_nickname"
app:layout_constraintBottom_toTopOf="@+id/nicknameIcon" app:layout_constraintBottom_toTopOf="@+id/nicknameIcon"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_max="256dp"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/stepOneText" app:layout_constraintTop_toBottomOf="@+id/stepOneText"
tools:ignore="ContentDescription"/> tools:ignore="ContentDescription"/>
@@ -118,6 +121,7 @@
android:layout_marginTop="16dp" android:layout_marginTop="16dp"
app:errorEnabled="true" app:errorEnabled="true"
app:hintEnabled="false" app:hintEnabled="false"
app:layout_constraintBottom_toTopOf="@+id/space"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5" app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
@@ -133,6 +137,16 @@
</android.support.design.widget.TextInputLayout> </android.support.design.widget.TextInputLayout>
<Space
android:id="@+id/space"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/addButton"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_default="wrap"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/contactNameLayout"/>
<Button <Button
android:id="@+id/addButton" android:id="@+id/addButton"
style="@style/BriarButton" style="@style/BriarButton"

View File

@@ -31,6 +31,9 @@
android:imeOptions="actionDone" android:imeOptions="actionDone"
android:inputType="textPassword" android:inputType="textPassword"
android:maxLines="1"/> android:maxLines="1"/>
<requestFocus/>
</android.support.design.widget.TextInputLayout> </android.support.design.widget.TextInputLayout>
<Button <Button

View File

@@ -38,6 +38,7 @@
android:maxLines="1"/> android:maxLines="1"/>
<requestFocus/> <requestFocus/>
</android.support.design.widget.TextInputLayout> </android.support.design.widget.TextInputLayout>
<Button <Button

View File

@@ -39,6 +39,7 @@
android:maxLines="1"> android:maxLines="1">
<requestFocus/> <requestFocus/>
</android.support.design.widget.TextInputEditText> </android.support.design.widget.TextInputEditText>
</android.support.design.widget.TextInputLayout> </android.support.design.widget.TextInputLayout>

View File

@@ -16,6 +16,11 @@
android:enabled="false" android:enabled="false"
app:showAsAction="never"/> app:showAsAction="never"/>
<item
android:id="@+id/action_delete_all_messages"
android:title="@string/delete_all_messages"
app:showAsAction="never"/>
<item <item
android:id="@+id/action_social_remove_person" android:id="@+id/action_social_remove_person"
android:icon="@drawable/action_delete_white" android:icon="@drawable/action_delete_white"

View File

@@ -175,6 +175,13 @@
<string name="step_1">‮واحدة</string> <string name="step_1">‮واحدة</string>
<!--This is a numeral indicating the second step in a series of screens--> <!--This is a numeral indicating the second step in a series of screens-->
<string name="step_2">2</string> <string name="step_2">2</string>
<!--This is a question asking whether two nicknames refer to the same person-->
<!--This is a button for answering that two nicknames do indeed refer to the same person. This
string will be used in a dialog button, so if the translation of this string is longer than 20
characters, please use "Yes" instead, and use "No" for the "Different Person" button-->
<!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button-->
<!--Introductions--> <!--Introductions-->
<string name="introduction_onboarding_title">قم بتقديم جهات إتصالك</string> <string name="introduction_onboarding_title">قم بتقديم جهات إتصالك</string>
<string name="introduction_onboarding_text">يمكنك أن تقدم جهات إتصالك لبعضها البعض، فلا يحتاجون للمقابلة الشخصية ليتواصلوا عبر Briar (براير).</string> <string name="introduction_onboarding_text">يمكنك أن تقدم جهات إتصالك لبعضها البعض، فلا يحتاجون للمقابلة الشخصية ليتواصلوا عبر Briar (براير).</string>

View File

@@ -118,7 +118,9 @@
<string name="message_hint">Mesaj yazın</string> <string name="message_hint">Mesaj yazın</string>
<string name="image_caption_hint">Mövzu əlavə edin (isteyə bağlı)</string> <string name="image_caption_hint">Mövzu əlavə edin (isteyə bağlı)</string>
<string name="image_attach">Şəkil əlavə edin</string> <string name="image_attach">Şəkil əlavə edin</string>
<string name="image_attach_error">Şəkil əlavə edilmədi</string> <string name="image_attach_error">Şəkil (lər) əlavə etmək alınmadı</string>
<string name="image_attach_error_too_big">Şəkilin həcmi böyükdür. Limit %d MB.</string>
<string name="image_attach_error_invalid_mime_type">Şəkil formatı dəstəklənmir: %s</string>
<string name="set_contact_alias">Kontakt adı dəyişdirin</string> <string name="set_contact_alias">Kontakt adı dəyişdirin</string>
<string name="set_contact_alias_hint">Əlaqə adı</string> <string name="set_contact_alias_hint">Əlaqə adı</string>
<string name="set_alias_button">Dəyiş</string> <string name="set_alias_button">Dəyiş</string>
@@ -138,6 +140,7 @@
<string name="dialog_title_image_support">İndi bu kontakta şəkilləri göndərə bilərsiniz</string> <string name="dialog_title_image_support">İndi bu kontakta şəkilləri göndərə bilərsiniz</string>
<string name="dialog_message_image_support">Şəkilləri əlavə etmək üçün bu simvola toxunun.</string> <string name="dialog_message_image_support">Şəkilləri əlavə etmək üçün bu simvola toxunun.</string>
<!--Adding Contacts--> <!--Adding Contacts-->
<string name="add_contact_title">Yaxında kontakt əlavə etmək</string>
<string name="face_to_face">Kontakta əlavə etmək istədiyiniz şəxslə tanış olmalısınız. Bu, hər kəsin kimliyinizi və ya mesajlarınızı gələcəkdə oxumasını maneə törədir.</string> <string name="face_to_face">Kontakta əlavə etmək istədiyiniz şəxslə tanış olmalısınız. Bu, hər kəsin kimliyinizi və ya mesajlarınızı gələcəkdə oxumasını maneə törədir.</string>
<string name="continue_button">Davam et</string> <string name="continue_button">Davam et</string>
<string name="try_again_button">Yenidən cəhd elə</string> <string name="try_again_button">Yenidən cəhd elə</string>
@@ -155,12 +158,56 @@
<string name="connection_error_explanation">Həmin Wi-Fi şəbəkəsinə qoşulduğunuzu yoxlayın.</string> <string name="connection_error_explanation">Həmin Wi-Fi şəbəkəsinə qoşulduğunuzu yoxlayın.</string>
<string name="connection_error_feedback">Bu problem davam edərsə, tətbiqin təkmilləşdirilməsinə kömək etmək üçün rəy göndərin.</string> <string name="connection_error_feedback">Bu problem davam edərsə, tətbiqin təkmilləşdirilməsinə kömək etmək üçün rəy göndərin.</string>
<!--Adding Contacts Remotely--> <!--Adding Contacts Remotely-->
<string name="add_contact_remotely_title_case">Məsafədə kontakt əlavə etmək </string>
<string name="add_contact_nearby_title">Yaxında kontakt əlavə etmək </string>
<string name="add_contact_remotely_title">Məsafədə kontakt əlavə etmək </string>
<string name="contact_name_hint">Niklə kontakt saxlayın</string>
<string name="contact_link_intro">Kontaktın linkini buraya daxil edin</string>
<string name="contact_link_hint">Kontaktın linki</string>
<string name="paste_button">Yapışdır</string>
<string name="add_contact_button">Kontankt əlavə et</string>
<string name="copy_button">Kopyala</string> <string name="copy_button">Kopyala</string>
<string name="share_button">Paylaş</string> <string name="share_button">Paylaş</string>
<string name="send_link_title">Link mübadiləsi</string>
<string name="add_contact_choose_nickname">Ad seç</string>
<string name="add_contact_choose_a_nickname">Ad daxil et</string>
<string name="nickname_intro">Niklə kontakt saxlayın. Bunu ancaq siz görəcəksiniz. </string>
<string name="your_link">Əlavə etmək istədiyiniz kontakt üçün bu linki verin</string>
<string name="link_clip_label">Briar link</string>
<string name="link_copied_toast">Link kopyalandı</string>
<string name="adding_contact_error">Kontaktı əlavə edərkən səhv baş verdi.</string>
<string name="pending_contact_requests_snackbar">Gözləyən kontakt sorğuları var. </string>
<string name="pending_contact_requests">Kənara qoyulmuş kontak sorğuları</string>
<string name="no_pending_contacts">Gözləyən kontakt yoxdur</string>
<string name="add_contact_remote_connecting">Qoşulur...</string> <string name="add_contact_remote_connecting">Qoşulur...</string>
<string name="waiting_for_contact_to_come_online">Kontaktı xəttdə gözləyin ...</string>
<string name="connecting">Qoşulur...</string> <string name="connecting">Qoşulur...</string>
<string name="adding_contact">Kontaktın əlavə etməsi... </string>
<string name="adding_contact_failed">Kontakt əlavə etməsi alınmadı</string>
<string name="dialog_title_remove_pending_contact">Silməyi təstiqlə</string>
<string name="dialog_message_remove_pending_contact">Bu kontakt hələ də əlavə olunur. İndi onu çıxararsanız, əlavə olunmayacaq.</string>
<string name="own_link_error">Kontaktınızın linkini daxil edin, özünüzü deyil</string>
<string name="nickname_missing">Zəhmət olmasa adı daxil edin</string>
<string name="invalid_link">Səhv link</string>
<string name="unsupported_link">Bu link Briar-ın daha yeni versiyasından gəlir. Ən son versiyaya keçin və yenidən cəhd edin.</string>
<string name="intent_own_link">Öz linkini açdın. Əlavə etmək istədiyiniz kontaktlardan birini istifadə edin!</string>
<string name="missing_link">Zəhmət olmasa linki daxil edin</string>
<!--This is a numeral indicating the first step in a series of screens--> <!--This is a numeral indicating the first step in a series of screens-->
<string name="step_1">1</string>
<!--This is a numeral indicating the second step in a series of screens--> <!--This is a numeral indicating the second step in a series of screens-->
<string name="step_2">2</string>
<string name="offline_state">İnternet bağlantısı yoxdur</string>
<string name="duplicate_link_dialog_title">Dublikat Link</string>
<!--This is a question asking whether two nicknames refer to the same person-->
<!--This is a button for answering that two nicknames do indeed refer to the same person. This
string will be used in a dialog button, so if the translation of this string is longer than 20
characters, please use "Yes" instead, and use "No" for the "Different Person" button-->
<string name="same_person_button">Eyni şəxs</string>
<!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button-->
<string name="different_person_button">Fərqli şəxs</string>
<string name="pending_contact_updated_toast">Gözləyən kontakt yeniləndi</string>
<!--Introductions--> <!--Introductions-->
<string name="introduction_onboarding_title">Kontaktınızı tanıtın</string> <string name="introduction_onboarding_title">Kontaktınızı tanıtın</string>
<string name="introduction_onboarding_text">Kontaktlarınızı bir-birinizə təqdim edə bilərsiniz, lakin Briar-a qoşulmaq üçün şəxsən görüşmək lazım deyil.</string> <string name="introduction_onboarding_text">Kontaktlarınızı bir-birinizə təqdim edə bilərsiniz, lakin Briar-a qoşulmaq üçün şəxsən görüşmək lazım deyil.</string>

View File

@@ -0,0 +1,501 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Setup-->
<string name="setup_title">Dobrodošli u Briar</string>
<string name="setup_name_explanation">Vaše korisničko ime će biti prikazano pored sadržaja posta. Nemožete ga mijenjati nakon kreiranje računa.</string>
<string name="setup_next">Dalje</string>
<string name="setup_password_intro">Izaberite lozinku</string>
<string name="setup_password_explanation">Vaš Briar račun je kriptovan i sačuvan na vašem uređaju, ne na serveru ili oblaku. Ako zaboravite šifru ili deinstalirate Briar, ne postoji način da povratite vaš račun.\n\nIzaberite dugačku lozinku koju je teško pogoditi, kao četiri nasumične riječi ili deset nasumičnih slova, brojeva i simbola.</string>
<string name="setup_doze_title">Konekcije u pozadinskom modu</string>
<string name="setup_doze_intro">Da bi primao poruke, Briar mora da ostane konektovan u pozadinskom modu.</string>
<string name="setup_doze_explanation">Da bi primao poruke, Briar mora da ostane konektovan u pozadinskom modu. Molim vas da isključite optimizacije baterije kako bi Briar ostao konektovan.</string>
<string name="setup_doze_button">Dozvolite konekcije</string>
<string name="choose_nickname">Izaberite vaše korisničko ime</string>
<string name="choose_password">Izaberite vašu lozinku</string>
<string name="confirm_password">Potvrdite vašu lozinku</string>
<string name="name_too_long">Ime je predugačko</string>
<string name="password_too_weak">Lozinka nije dovoljno jaka</string>
<string name="passwords_do_not_match">Lozinke se ne poklapaju</string>
<string name="create_account_button">Kreirajte korisnički račun</string>
<string name="more_info">Više informacija</string>
<string name="don_t_ask_again">Ne pitaj ponovo</string>
<string name="setup_huawei_text">Molim dotaknite dugme ispod i provjerite da je Briar zaštićen na \"Protected Apps\" listi.</string>
<string name="setup_huawei_button">Zaštiti Briar</string>
<string name="setup_huawei_help">Ako Briar nije dodat u listu zaštićenih aplikacija - protected apps, neće moći da radi u pozadinskom modu.</string>
<string name="warning_dozed">%s nije mogao da se pokrene u pozadinskom modu</string>
<!--Login-->
<string name="enter_password">Lozinka</string>
<string name="try_again">Pogrešna lozinka, probajte ponovo</string>
<string name="sign_in_button">Prijavite se</string>
<string name="forgotten_password">Zaboravio/la sam lozinku</string>
<string name="dialog_title_lost_password">Izgubljena Lozinka</string>
<string name="dialog_message_lost_password">Vaš Briar račun je kriptovan i sačuvan na vašem uređaju, ne na serveru ili oblaku, pa nemožemo resetovati vašu lozinku. Želite li da izbrišete račun i počnete iz početka?\n\nPažnja: Vaši identiteti, kontakti i poruke će biti premanentno izgubljene.</string>
<string name="startup_failed_notification_title">Brirar nije mogao da se pokrene</string>
<string name="startup_failed_notification_text">Dotaknite za više informacija.</string>
<string name="startup_failed_activity_title">Briar neuspješno pokretanje</string>
<string name="startup_failed_db_error">Iz nekog razloga, Briar baza podataka je nepovratno oštećena. Vaš račun, vaši podaci i svi kontakti su izgubljeni. Nažalost, morate reinstalirati Briar ili podesiti novi račun tako što ćete izabrati opciju \'ZaboraviIi ste lozinku?\' .</string>
<string name="startup_failed_data_too_old_error">Vaš račun je napravljen sa starom verzijom aplikacije i nemože se otvoriti novom verzijom. Morate reinstalirati staru verziju ili podesiti novi račun tako što ćete izabrati opciju \'ZaboraviIi ste lozinku?\' kod unosa lozinke.</string>
<string name="startup_failed_data_too_new_error">Ova verzija aplikacije je stara. Molim vas da aplikaciju ažurirate na posljednju verziju a zatim pokušate ponovo.</string>
<string name="startup_failed_service_error">Briar nije mogao da pokrene potreban plugin-dodatak. Reinstaliranje Briara obično riješi problem. Međutim, imajte na umu da ćete izgubiti vaš račun i sve podatke vezane za njega pošto Briar ne koristi centralne servere da sačuva vaše podatke.</string>
<string name="expiry_update">Krajnji datum testiranja je pomjeren. Vaš račun će sada isteći za %d dana.</string>
<string name="expiry_date_reached">Ovaj softver nije više aktuelan.\nHvala na testiranju!</string>
<string name="download_briar">Da bi nastavili koristiti Briar, molimo preuzmite verziju 1.0</string>
<string name="create_new_account">Morate kreirati novi račun, ali možete koristiti isto korisničko ime.</string>
<string name="download_briar_button">Preuzmite Briar 1.0</string>
<string name="startup_open_database">Dekriptujem bazu...</string>
<string name="startup_migrate_database">Ažuriram bazu...</string>
<string name="startup_compact_database">Baza se kompaktuje...</string>
<!--Navigation Drawer-->
<string name="nav_drawer_open_description">Otvori navigacionu ladicu</string>
<string name="nav_drawer_close_description">Zatvori navigacionu ladicu</string>
<string name="contact_list_button">Kontakti</string>
<string name="groups_button">Privatne Grupe</string>
<string name="forums_button">Forumi</string>
<string name="blogs_button">Blogovi</string>
<!--This is part of the main menu. The app will be locked when this is tapped.-->
<string name="lock_button">Zaključaj aplikaciju</string>
<string name="settings_button">Podešavanja</string>
<string name="sign_out_button">Odjava</string>
<!--Transports-->
<string name="transport_tor">Internet</string>
<string name="transport_bt">Bluetooth</string>
<string name="transport_lan">Wi-Fi</string>
<!--Notifications-->
<string name="reminder_notification_title">Odjavljeni ste iz Briara</string>
<string name="reminder_notification_text">Dotaknite da se prijavite nazad.</string>
<string name="reminder_notification_channel_title">Briarov podsjetnik za prijavu</string>
<string name="reminder_notification_dismiss">Obustavi</string>
<string name="ongoing_notification_title">Prijavljeni ste u Briar</string>
<string name="ongoing_notification_text">Dodirnite da otvorite Briar.</string>
<!--Misc-->
<string name="now">sada</string>
<string name="show">Prikaži</string>
<string name="hide">Sakrij</string>
<string name="ok">OK</string>
<string name="cancel">Odustani</string>
<string name="got_it">Jasno</string>
<string name="delete">Obriši</string>
<string name="accept">Prihvati</string>
<string name="decline">Odbij</string>
<string name="options">Opcije</string>
<string name="online">Online</string>
<string name="offline">Offline</string>
<string name="send">Pošalji</string>
<string name="allow">Dozvoli</string>
<string name="open">Otvori</string>
<string name="no_data">Nema podataka</string>
<string name="ellipsis">...</string>
<string name="text_too_long">Tekst koji ste unijeli je predugačak</string>
<string name="show_onboarding">Otvori dijalog za Pomoć</string>
<string name="fix">Popravi</string>
<string name="help">Pomoć</string>
<string name="sorry">Izvini</string>
<!--Contacts and Private Conversations-->
<string name="no_contacts">Nema kontakata za prikazivanje</string>
<string name="no_contacts_action">Taknite + ikonu da dodate kontakt</string>
<string name="date_no_private_messages">Nema poruka.</string>
<string name="no_private_messages">Nema poruka za prikazivanje</string>
<string name="message_hint">Ukucajte poruku</string>
<string name="image_caption_hint">Dodaj naslov (opciono)</string>
<string name="image_attach">Priloži fotografiju</string>
<string name="image_attach_error">Nije moguće priložiti fotografiju/e</string>
<string name="image_attach_error_too_big">Fotografija je prevelika. Limit je %d MB.</string>
<string name="image_attach_error_invalid_mime_type">Fromat fotografije nije podržan: %s</string>
<string name="set_contact_alias">Promijeni ime kontakta</string>
<string name="set_contact_alias_hint">Ime kontakta</string>
<string name="set_alias_button">Promijeni</string>
<string name="delete_contact">Izbrišite kontakt</string>
<string name="dialog_title_delete_contact">Potvrdite brisanje kontakta</string>
<string name="dialog_message_delete_contact">Jeste li sigurni da želite da uklonite ovaj kontakt i sve poruke koje ste razmijenili?</string>
<string name="contact_deleted_toast">Kontakt je izbrisan</string>
<!--This is shown in the action bar when opening an image in fullscreen that the user sent-->
<string name="you">Vi</string>
<string name="save_image">Sačuvaj fotografiju</string>
<string name="dialog_title_save_image">Želite li sačuvati fotografiju?</string>
<string name="dialog_message_save_image">Čuvanje ove fotografije će omogućiti drugim aplikacijama da joj pristupe.\n\nJeste li sigurni da želite da je sačuvate?</string>
<string name="save_image_success">Fotografija je sačuvana</string>
<string name="save_image_error">Nije moguće sačuvati fotografiju</string>
<string name="dialog_title_no_image_support">Slike nisu dostupne</string>
<string name="dialog_message_no_image_support">Briar ne podržava prložene fotografije. Nakon nadogradnje vidjet ćete drugu ikonu.</string>
<string name="dialog_title_image_support">Sada možete slati fotografije ovom kontaktu</string>
<string name="dialog_message_image_support">Dodirni ovu ikonu da priložiš fotografije</string>
<!--Adding Contacts-->
<string name="add_contact_title">Dodaj kontakt u blizini vas</string>
<string name="face_to_face">Morate se sresti sa osobom koju želite da dodate kao kontakt.\n\nOvo će spriječiti bilo koga da se predstavi kao vi ili da ubuduće čita poruke.</string>
<string name="continue_button">Nastavi</string>
<string name="try_again_button">Probajte ponovo</string>
<string name="waiting_for_contact_to_scan">Čekam da kontakt skenira i poveže se\u2026</string>
<string name="exchanging_contact_details">Razmjenjujem detalje o kontaktu\u2026</string>
<string name="contact_added_toast">Dodani kontakt: %s</string>
<string name="contact_already_exists">Kontakt %s već postoji</string>
<string name="qr_code_invalid">QR kod nije validan</string>
<string name="qr_code_too_old">Skenirani QR kod pripada staroj verziji %s.\n\nMolimo vas da zatražite od vašeg kontakta da ažurira aplikaciju na posljednjiu verziju, a zatim pokušajte ponovo</string>
<string name="qr_code_too_new">QR kod koji skenirate pripada novijoj verziji %s.\n\nMolimo vas nadogradite aplikaciju na posljednju verziju, a zatim pokušajte ponovo.</string>
<string name="camera_error">Greska kamere</string>
<string name="connecting_to_device">Povezujem se sa uređajem\u2026</string>
<string name="authenticating_with_device">Autentikacija sa uređajem\u2026</string>
<string name="connection_error_title">Nije moguće povezivanje sa vašim kontaktom</string>
<string name="connection_error_explanation">Provjerite jeste li oboje povezani na ist Wi-Fi mrežu.</string>
<string name="connection_error_feedback">Ako se problem ponavlja, Molimo vas <a href="feedback">pošaljite povratne informacije</a> kako bi pomogli poboljšanju aplikacije.</string>
<!--Adding Contacts Remotely-->
<string name="add_contact_remotely_title_case">Dodaj udaljeni konktakt</string>
<string name="add_contact_nearby_title">Dodaj kontakt koji je u blizini</string>
<string name="add_contact_remotely_title">Dodaj udaljeni kontakt</string>
<string name="contact_name_hint">Dodjeli kontaktu nadimak</string>
<string name="contact_link_intro">Unesite link vašeg kontakta ovdje</string>
<string name="contact_link_hint">Kontaktov link</string>
<string name="paste_button">Zalepi</string>
<string name="add_contact_button">Dodaj kontakt</string>
<string name="copy_button">Kopiraj</string>
<string name="share_button">Podijeli</string>
<string name="send_link_title">Razmjena linkova</string>
<string name="add_contact_choose_nickname">Izaberi korisničko ime</string>
<string name="add_contact_choose_a_nickname">Unesi korisničko ime</string>
<string name="nickname_intro">Dodjeli vašem kontaktu nadimak. Samo vi možete vidjeti dodjeljeni nadimak.</string>
<string name="your_link">Dodjeli link kontaktu kojeg želite dodati</string>
<string name="link_clip_label">Briar link</string>
<string name="link_copied_toast">Link je kopiran</string>
<string name="adding_contact_error">Došlo je do greške tokom dodavanja kontakta.</string>
<string name="pending_contact_requests_snackbar">Postoje zahtjevi za kontaktima koji čekanju</string>
<string name="pending_contact_requests">Zahtjevi za kontaktima na čekanju</string>
<string name="no_pending_contacts">Nema Zahtjeva za kontaktima na čekanju</string>
<string name="add_contact_remote_connecting">Konektovanje…</string>
<string name="waiting_for_contact_to_come_online">Čekanje da kontakt bude online…</string>
<string name="connecting">Konektovanje…</string>
<string name="adding_contact">Dodavanje kontakta...</string>
<string name="adding_contact_failed">Dodavanje kontakta nije uspjelo</string>
<string name="dialog_title_remove_pending_contact">Potvrda Uklanjanja</string>
<string name="dialog_message_remove_pending_contact">Ovaj se kontakt još dodaje. Ako ga sada uklonite, neće biti dodan.</string>
<string name="own_link_error">Unesite link vašeg kontakta, a ne vaš vlastiti link.</string>
<string name="nickname_missing">Molim vas unesite korisničko ime</string>
<string name="invalid_link">Neispravan link</string>
<string name="unsupported_link">Ovaj link dolazi sa nove verzije Briar-a. Molim vas ažurirajte aplikaciju na posljednju verziju, a zatim pokušajte ponovo.</string>
<string name="intent_own_link">Otvorili ste vaš vlastiti link. Koristite link od kontakta kojeg želite dodati.</string>
<string name="missing_link">Molim vas unesite link</string>
<!--This is a numeral indicating the first step in a series of screens-->
<string name="step_1">1</string>
<!--This is a numeral indicating the second step in a series of screens-->
<string name="step_2">2</string>
<string name="adding_contact_slow_warning">Dodavanje ovog kontakta traje duže nego obično</string>
<string name="adding_contact_slow_title">Nije moguće povezivanje sa kontaktom</string>
<string name="adding_contact_slow_text">Dodavanje ovog kontakta traje duže nego obično.\n\nMolim vas provjerite da li je vaš kontakt dobio vaš link i dodao vas:</string>
<string name="offline_state">Nema konekcije na internet</string>
<string name="duplicate_link_dialog_title">Duliciran Link</string>
<string name="duplicate_link_dialog_text_1">Već imate kontakta na čekanju sa ovim linkom: %s</string>
<!--This is a question asking whether two nicknames refer to the same person-->
<string name="duplicate_link_dialog_text_2">Da li su %s i %s ista osoba?</string>
<!--This is a button for answering that two nicknames do indeed refer to the same person. This
string will be used in a dialog button, so if the translation of this string is longer than 20
characters, please use "Yes" instead, and use "No" for the "Different Person" button-->
<string name="same_person_button">Ista osoba</string>
<!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button-->
<string name="different_person_button">Različita osoba</string>
<string name="duplicate_link_dialog_text_3">%s i %s poslsli su vam isti link.\n\nJedan od njih moguće da pokušava otkriti ko su vaši kontakti.\n\nNemojte im reći da ste primili isti link od druge osobe.</string>
<string name="pending_contact_updated_toast">Ažuriranje kontakta je na čekanju</string>
<!--Introductions-->
<string name="introduction_onboarding_title">Upoznajte vaše kontakte</string>
<string name="introduction_onboarding_text">Vi možete da upoznate vaše kontakte međusobno, nije potrebno da se oni sreću licem u lice kako bi se povezali na Briar-u.</string>
<string name="introduction_menu_item">Izvršite upoznavanje</string>
<string name="introduction_activity_title">Izaberite kontakt</string>
<string name="introduction_not_possible">Vi već imate započeto jedno upoznavanje ovim kontaktom. Molimo vas dozvolite da ono prvo završi. Ako ste vi ili vaš kontakt rijetko na vezi, ovo može da potraje.</string>
<string name="introduction_message_title">Upoznajte kontakte</string>
<string name="introduction_message_hint">Dodajte poruku (opciono)</string>
<string name="introduction_button">Izvršite upoznavanje</string>
<string name="introduction_sent">Vaše poziv na upoznavanje je poslat</string>
<string name="introduction_error">Došlo je do greške pri izvršenju upoznavanja.</string>
<string name="introduction_response_error">Greška pri odgovoru na upoznavanje</string>
<string name="introduction_request_sent">Tražili ste da se %1$s i %2$s upoznaju.</string>
<string name="introduction_request_received">%1$s je tražio da vas upozna sa %2$s. Da li želite da dodate %2$s u vašu listu kontakata?</string>
<string name="introduction_request_exists_received">%1$s je tražio da vas upozna sa %2$s, ali %2$s je već u vašoj listi kontakata. Pošto %1$s to možda ne zna, vi i dalje možete da odgovorite: </string>
<string name="introduction_request_answered_received">%1$s je tražio da vas upozna sa %2$s.</string>
<string name="introduction_response_accepted_sent">Prihvatili ste upoznavanje sa %1$s.</string>
<string name="introduction_response_accepted_sent_info">Prije nego što %1$s bude u vašim kontaktima, mora da prihvati i upoznavanje. Ovo može potrajati.</string>
<string name="introduction_response_declined_sent">Odbili ste upoznavanje sa %1$s.</string>
<string name="introduction_response_accepted_received">%1$s prihvata upoznavanje sa %2$s.</string>
<string name="introduction_response_declined_received">%1$s odbija upoznavanje sa %2$s.</string>
<string name="introduction_response_declined_received_by_introducee">%1$s kaže da je %2$s odbio-la upoznavanje.</string>
<!--Private Groups-->
<string name="groups_list_empty">Nema grupa za prikazivanje</string>
<string name="groups_list_empty_action">Dotaknite + ikonu da kreirate grupu, ili pitajte vaše kontakte da podijele grupe sa vama</string>
<string name="groups_created_by">Kreator je %s</string>
<string name="groups_group_is_empty">Grupa je prazna</string>
<string name="groups_group_is_dissolved">Ova grupa je rasformirana</string>
<string name="groups_remove">Ukloni</string>
<string name="groups_create_group_title">Kreiraj privatnu grupu</string>
<string name="groups_create_group_button">Kreiraj grupu</string>
<string name="groups_create_group_invitation_button">Pošalji poziv</string>
<string name="groups_create_group_hint">Izaberite ime za vašu privatnu grupu</string>
<string name="groups_invitation_sent">Grupna pozivnica je poslata</string>
<string name="groups_member_list">Lista članova</string>
<string name="groups_invite_members">Pošaljite poziv članovima</string>
<string name="groups_member_created_you">Vi ste kreirali grupu</string>
<string name="groups_member_created">%s je kreator grupe</string>
<string name="groups_member_joined_you">Pristupili ste grupi</string>
<string name="groups_member_joined">%s je pristupio-la grupi</string>
<string name="groups_leave">Napusti grupu</string>
<string name="groups_leave_dialog_title">Potvrdite napuštanje grupe</string>
<string name="groups_leave_dialog_message">Jeste li sigurni da želite da napustite grupu?</string>
<string name="groups_dissolve">Raspustite grupu</string>
<string name="groups_dissolve_dialog_title">Potvrdite raspuštanje grupe</string>
<string name="groups_dissolve_dialog_message">Jeste li sigurni da želite raspustiti ovu grupu?\n\nSvi ostali članovi neće moći nastaviti konverzaciju i možda neće primiti najnovije poruke.</string>
<string name="groups_dissolve_button">Raspusti</string>
<string name="groups_dissolved_dialog_title">Grupa je raspuštena</string>
<string name="groups_dissolved_dialog_message">Kreator je raspustio ovu grupu.\n\nNe možete više pisati poruke u grupi i možda nećete primiti poljednje poruke koje su napisane.</string>
<!--Private Group Invitations-->
<string name="groups_invitations_title">Grupni pozivi</string>
<string name="groups_invitations_invitation_sent">Pozvali ste %1$s da se pridruži grupi \"%2$s\".</string>
<string name="groups_invitations_invitation_received">%1$s je poslao-la poziv da pristupite grupi \"%2$s\".</string>
<string name="groups_invitations_joined">Pristupili ste grupi</string>
<string name="groups_invitations_declined">Grupni poziv je odbijen</string>
<string name="groups_invitations_response_accepted_sent">Prihvatili ste grupni poziv od %s.</string>
<string name="groups_invitations_response_declined_sent">Odbili ste grupni poziv od %s.</string>
<string name="groups_invitations_response_accepted_received">%s je prihvatio-la grupni poziv.</string>
<string name="groups_invitations_response_declined_received">1%s je odbio-la grupni poziv.</string>
<string name="sharing_status_groups">Samo kreator moze da pozove nove članove u grupu. Ispod su trenutni članovi grupe.</string>
<!--Private Groups Revealing Contacts-->
<string name="groups_reveal_contacts">Otkrijte kontakte</string>
<string name="groups_reveal_dialog_message">Možete odlučiti da otkrijete kontakte svim trenutnim i budućim članovima ove grupe.\n\nOtkrivanje kontakata čini konekciju ka članovima grupe bržom i pouzdanijom, jer možete da komunicirate sa otkrivenim kontaktima čak i kad kreator grupe nije na vezi.</string>
<string name="groups_reveal_visible">Veze kontakata su vidljive grupi</string>
<string name="groups_reveal_visible_revealed_by_us">Veze kontakata su vidljive grupi (vi ste je otkrili)</string>
<string name="groups_reveal_visible_revealed_by_contact">Veze kontakata su vidljive grupi (otkriveno od strane %s)</string>
<string name="groups_reveal_invisible">Veze kontakata nisu vidljive grupi</string>
<!--Forums-->
<string name="no_forums">Nema foruma za prikazivanje</string>
<string name="no_forums_action">Dotaknite + ikonu da kreirate forum, ili pitajte vaše kontakte da podijele forume sa vama</string>
<string name="create_forum_title">Kreiraj forum</string>
<string name="choose_forum_hint">Izaberite ime za vaš forum</string>
<string name="create_forum_button">Kreiraj forum</string>
<string name="forum_created_toast">Forum je kreiran</string>
<string name="no_forum_posts">Nema postova za prikazivanje</string>
<string name="no_posts">Nema postova</string>
<string name="forum_new_message_hint">Novi post</string>
<string name="forum_message_reply_hint">Novi odgovor</string>
<string name="btn_reply">Odgovor</string>
<string name="forum_leave">Napusti forum</string>
<string name="dialog_title_leave_forum">Potvrdite napuštanje foruma</string>
<string name="dialog_message_leave_forum">Jeste li sigurni da želite da napustite ovaj forum?\n\nKontakti sa kojima ste podijelili ovaj forum možda prestanu dobijati novosti.</string>
<string name="dialog_button_leave">Napusti</string>
<string name="forum_left_toast">Napušten forum</string>
<!--Forum Sharing-->
<string name="forum_share_button">Podijeli forum</string>
<string name="contacts_selected">Kontakti selektovani</string>
<string name="activity_share_toolbar_header">Izaberite kontakte</string>
<string name="no_contacts_selector">Nema kontakata za prikazivanje</string>
<string name="no_contacts_selector_action">Molimo vas vratite se ovdje nakon dodavanja kontakta</string>
<string name="forum_shared_snackbar">Forum je podijeljen sa selektovanim kontaktima</string>
<string name="forum_share_message">Dodajte poruku (opciono)</string>
<string name="forum_share_error">Došlo je do greške prilikom dijeljenja ovog foruma.</string>
<string name="forum_invitation_received">%1$s je podijelio-la forum \"%2$s\" sa vama.</string>
<string name="forum_invitation_sent">Podijelili ste forum \"%1$s\" sa %2$s.</string>
<string name="forum_invitations_title">Pozivnice za forum</string>
<string name="forum_invitation_exists">Već ste prihvatili poziv u ovaj forum.\n\nPrihvatanje dodatnih poziva će učiniti vašu vezu sa forumom bržom i pouzdanijom.</string>
<string name="forum_joined_toast">Forumu ste pristupili</string>
<string name="forum_declined_toast">Poziv odbijen</string>
<string name="shared_by_format">Podijelio-la %s</string>
<string name="forum_invitation_already_sharing">Već se dijeli</string>
<string name="forum_invitation_response_accepted_sent">Prihvatili ste poziv u forum od %s.</string>
<string name="forum_invitation_response_declined_sent">Odbili ste poziv u forum od %s.</string>
<string name="forum_invitation_response_accepted_received">1%s prihvata vaš poziv u forum.</string>
<string name="forum_invitation_response_declined_received">%s odbija vaš poziv u forum.</string>
<string name="sharing_status">Status dijeljenja</string>
<string name="sharing_status_forum">Bilo koji član foruma može forum podijeliti sa svojim kontaktima. Vi dijelite forum sa slijedećim kontaktima. Moguće je da ima drugih članova koje ne vidite.</string>
<string name="shared_with">Pdijeljeno sa %1$d (%2$d na vezi)</string>
<string name="nobody">Niko</string>
<!--Blogs-->
<string name="blogs_other_blog_empty_state">Nema postova za prikazivanje</string>
<string name="read_more">pročitaj više</string>
<string name="blogs_write_blog_post">Napiši Blog Post</string>
<string name="blogs_write_blog_post_body_hint">Ukucajte vaš blog post</string>
<string name="blogs_publish_blog_post">Objavi</string>
<string name="blogs_blog_post_created">Blog post je kreiran</string>
<string name="blogs_blog_post_received">Primljen je novi blog post</string>
<string name="blogs_blog_post_scroll_to">Skroluj do</string>
<string name="blogs_feed_empty_state">Nema postova za prikazivanje</string>
<string name="blogs_feed_empty_state_action">Postovi od vaših kontakata i blogova na koje se prijavite će se prikazivati ovdje.\n\nDotaknite ikonu olovke da napišete post</string>
<string name="blogs_remove_blog">Ukloni blog</string>
<string name="blogs_remove_blog_dialog_message">Jeste li sigurni da želite da uklonite blog?\n\nPostovi će biti uklonjeni sa vašeg uređaja ali ne is uređaja drugih ljudi.\n\nKontakti kojima ste podijelili ovaj blog će možda prestati da dobijaju novosti.</string>
<string name="blogs_remove_blog_ok">Ukloni</string>
<string name="blogs_blog_removed">Blog je uklonjen</string>
<string name="blogs_reblog_comment_hint">Dodajte komentar (opciono)</string>
<string name="blogs_reblog_button">Rebloguj</string>
<!--Blog Sharing-->
<string name="blogs_sharing_share">Podijeli blog</string>
<string name="blogs_sharing_error">Došlo je do greške pri podjeli bloga.</string>
<string name="blogs_sharing_button">Podijeli blog</string>
<string name="blogs_sharing_snackbar">Blog je podijeljen sa izabranim kontaktima</string>
<string name="blogs_sharing_response_accepted_sent">Prihvatili ste blog pozivnicu od %s.</string>
<string name="blogs_sharing_response_declined_sent">Odbili ste blog pozivnicu od %s.</string>
<string name="blogs_sharing_response_accepted_received">%s je prihvatio-la blog pozivnicu.</string>
<string name="blogs_sharing_response_declined_received">%s je odbio-la blog pozivnicu.</string>
<string name="blogs_sharing_invitation_received">%1$s je podijelio-la blog \"%2$s\" sa vama.</string>
<string name="blogs_sharing_invitation_sent">Podijelili ste blog \"%1$s\" sa %2$s.</string>
<string name="blogs_sharing_invitations_title">Blog Pozivnice</string>
<string name="blogs_sharing_joined_toast">Prijavljeni ste na blog</string>
<string name="blogs_sharing_declined_toast">Poziv odbijen</string>
<string name="sharing_status_blog">Bilo ko, ko se prijavi za ovaj blog, može blog da podijeli sa svojim kontaktima. Vi dijelite blog sa slijedećim kontaktima. Moguće je da ima još potpisnika koje nemožete da vidite.</string>
<!--RSS Feeds-->
<string name="blogs_rss_feeds_import">Uvezi RSS kanal</string>
<string name="blogs_rss_feeds_import_button">Uvezi</string>
<string name="blogs_rss_feeds_import_hint">Unesi URL od RSS kanala</string>
<string name="blogs_rss_feeds_import_error">Žao nam je! Došlo je do greške pri unosu vašeg kanala.</string>
<string name="blogs_rss_feeds_manage">Upravljanje RSS kanalima</string>
<string name="blogs_rss_feeds_manage_imported">Uvezeno:</string>
<string name="blogs_rss_feeds_manage_author">Autor:</string>
<string name="blogs_rss_feeds_manage_updated">Zadnje ažuriranje:</string>
<string name="blogs_rss_remove_feed">Uklonite kanal</string>
<string name="blogs_rss_remove_feed_dialog_message">Jeste li sigurni da želite da uklonite kanal?\n\nPostovi će biti uklonjeni sa vašeg uređaja ali ne is uređaja drugih ljudi.\n\nKontakti kojima ste podijelili ovaj blog će možda prestati da dobijaju novosti.</string>
<string name="blogs_rss_remove_feed_ok">Ukloni</string>
<string name="blogs_rss_feeds_manage_delete_error">Kanal nije bilo moguće ukloniti!</string>
<string name="blogs_rss_feeds_manage_empty_state">Nema RSS kanala za prikazivanje\n\nDotaknite + ikonu da uvezete kanal</string>
<string name="blogs_rss_feeds_manage_error">Došlo je do problema pri učitavanju vaših kanala. Probajte opet kasnije.</string>
<!--Settings Display-->
<string name="pref_language_title">Jezik i regija</string>
<string name="pref_language_changed">Ovo podešavanje će stupiti na snagu kada restartujete Briar. Molim vas da se odjavite i restartujete Briar.</string>
<string name="pref_language_default">Podrazumjevane postavke sistema</string>
<string name="display_settings_title">Ekran</string>
<string name="pref_theme_title">Tema</string>
<string name="pref_theme_light">Svijetlost</string>
<string name="pref_theme_dark">Tamna</string>
<string name="pref_theme_auto">Automatski (Dnevno)</string>
<string name="pref_theme_system">Podrazumjevane postavke sistema</string>
<!--Settings Network-->
<string name="network_settings_title">Mreže</string>
<string name="bluetooth_setting">Povežite se preko Bluetooth-a</string>
<string name="bluetooth_setting_enabled">Kad god su kontakti blizu</string>
<string name="bluetooth_setting_disabled">Samo pri dodavanju kontakata</string>
<string name="tor_network_setting">Konektuj se preko Interneta (Tor)</string>
<string name="tor_network_setting_automatic">Automatski prema na lokaciji</string>
<string name="tor_network_setting_without_bridges">Koristi Tor bez mostova</string>
<string name="tor_network_setting_with_bridges">Koristi Tor sa mostovima</string>
<string name="tor_network_setting_never">Ne konektuj se</string>
<!--How and when Tor will connect after Automatic: E.g. Don't connect (in China) or Use Tor with bridges (in Belarus)-->
<string name="tor_network_setting_summary">Automatski: %1$s (za %2$s)</string>
<string name="tor_mobile_data_title">Koristi mobilinu mrežu</string>
<string name="tor_only_when_charging_title">Konektuj se preko Interneta (Tor) samo tokom punjenja uređaja</string>
<string name="tor_only_when_charging_summary">Onemogući interent konekciju kada se uređaj napaja samo sa baterijie</string>
<!--Settings Security and Panic-->
<string name="security_settings_title">Sigurnost</string>
<string name="pref_lock_title">Zaključavanje applikacije</string>
<string name="pref_lock_summary">Koristi zaključavanje ekrana uređaja da bi zaštitili Briar dok ste prijavljeni</string>
<string name="pref_lock_disabled_summary">Da bi koristili ovu mogućnost, podesite zaključavanje ekrana za vašem uređaju</string>
<string name="pref_lock_timeout_title">Zaključavanje aplikacije zbog neaktivnosti</string>
<!--The %s placeholder is replaced with the following time spans, e.g. 5 Minutes, 1 Hour-->
<string name="pref_lock_timeout_summary">Kada se ne koristi Briar, automatski zaključaj poslije %s</string>
<!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"-->
<string name="pref_lock_timeout_1">1 minute</string>
<!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"-->
<string name="pref_lock_timeout_5">5 minuta</string>
<!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"-->
<string name="pref_lock_timeout_15">15 minuta</string>
<!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"-->
<string name="pref_lock_timeout_30">30 minuta</string>
<!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"-->
<string name="pref_lock_timeout_60">1 sata</string>
<string name="pref_lock_timeout_never">Nikad</string>
<string name="pref_lock_timeout_never_summary">Ne zaključavaj Briar automatski</string>
<string name="change_password">Promijeni lozinku</string>
<string name="current_password">Trenutna lozinka</string>
<string name="choose_new_password">Nova lozinka</string>
<string name="confirm_new_password">Potvrdi novu lozinku</string>
<string name="password_changed">Lozinka je promijenjena</string>
<string name="panic_setting">Podešavanje Panik dugmeta</string>
<string name="panic_setting_title">Panik dugme</string>
<string name="panic_setting_hint">Podesite kako Briar reaguje kad koristite Panik dugme app</string>
<string name="panic_app_setting_title">Panik Dugne App</string>
<string name="unknown_app">nepoznata aplikacija</string>
<string name="panic_app_setting_summary">Nema postavljene aplikacije</string>
<string name="panic_app_setting_none">Ništa</string>
<string name="dialog_title_connect_panic_app">Potvrdi Panic App</string>
<string name="dialog_message_connect_panic_app">Jeste li sigurni da želite da dozvolite %1$s da pokrene destruktivne akcije panik dugmeta?</string>
<string name="panic_setting_destructive_action">Destruktivne akcije</string>
<string name="panic_setting_signout_title">Odjava</string>
<string name="panic_setting_signout_summary">Izloguj se iz Briar-a ako je pritisnuto panik dugme</string>
<string name="purge_setting_title">Izbriši račun</string>
<string name="purge_setting_summary">Izbriši Briar račun ako je panik dugme pritisnuto. Pažnja: Ovo će trajno izbrisati vaše identitete, kontakte i poruke</string>
<string name="uninstall_setting_title">Deinstaliraj Briar</string>
<string name="uninstall_setting_summary">Ovo zahtijeva ručnu potvrdu u slučaju panike</string>
<!--Settings Notifications-->
<string name="notification_settings_title">Obavještenja</string>
<string name="notify_sign_in_title">Podsjeti me da se prijavim</string>
<string name="notify_sign_in_summary">Prikazi podsjetnik kada se telefon uključi ili kada se aplikacija ažurira</string>
<string name="notify_private_messages_setting_title">Privatne poruke</string>
<string name="notify_private_messages_setting_summary">Prikaži upozorenja za privatne poruke</string>
<string name="notify_private_messages_setting_summary_26">Podesite upozorenja za privatne poruke</string>
<string name="notify_group_messages_setting_title">Grupne poruke</string>
<string name="notify_group_messages_setting_summary">Prikaži upozorenja za grupne poruke</string>
<string name="notify_group_messages_setting_summary_26">Podesite upozorenja za grupne poruke</string>
<string name="notify_forum_posts_setting_title">Forum postovi</string>
<string name="notify_forum_posts_setting_summary">Prikaži upozorenja za forum postove</string>
<string name="notify_forum_posts_setting_summary_26">Podesite upozorenja za forum postove</string>
<string name="notify_blog_posts_setting_title">Blog postovi</string>
<string name="notify_blog_posts_setting_summary">Prikaži upozorenja na blog postove</string>
<string name="notify_blog_posts_setting_summary_26">Podesite upozorenja za blog postove</string>
<string name="notify_vibration_setting">Vibriranje</string>
<string name="notify_sound_setting">Zvuk</string>
<string name="notify_sound_setting_default">Podrazumijevana melodija</string>
<string name="notify_sound_setting_disabled">Ništa</string>
<string name="choose_ringtone_title">Izaberi melodiju</string>
<string name="cannot_load_ringtone">Ne mogu otvoriti melodiju</string>
<!--Settings Feedback-->
<string name="feedback_settings_title">Povratne informacije</string>
<string name="send_feedback">Šalji povratne informacije</string>
<!--Link Warning-->
<string name="link_warning_title">Link upozorenja</string>
<string name="link_warning_intro">Upravo ćete otvoriti slijedeći link sa eksternom aplikacijom</string>
<string name="link_warning_text">Ovo se može koristiti da se otkrije vaš identitet. Razmislite o tome vjerujete li osobi koja vam je poslala ovaj link i razmislite o otvaranju s Tor Browser-om.</string>
<string name="link_warning_open_link">Otvori link</string>
<!--Crash Reporter-->
<string name="crash_report_title">Briar izvještaj o rušenju aplikacije</string>
<string name="briar_crashed">Izvinite, Briar aplikacija se srušila.</string>
<string name="not_your_fault">Greška nije do vas.</string>
<string name="please_send_report">Molimo pomozite nam da napravimo bolji Briar tako što ćete nam poslati izvještaj o rušenju aplikacije.</string>
<string name="report_is_encrypted">Obećavamo da je izvještaj kriptovan i sigurno poslat.</string>
<string name="feedback_title">Povratne informacije</string>
<string name="describe_crash">Opišite šta se desilo (opciono)</string>
<string name="enter_feedback">Unesite vašu povratnu informaciju</string>
<string name="optional_contact_email">Vaša email adresa (opciono)</string>
<string name="include_debug_report_crash">Uključite anonimne podatke o rušenju</string>
<string name="include_debug_report_feedback">Uključite anonimne podatke o ovom uređaju</string>
<string name="could_not_load_report_data">Nije bilo moguće učitati podatke izvještaja</string>
<string name="send_report">Pošalji izvještaj</string>
<string name="close">Zatvori</string>
<string name="dev_report_saved">Izvještaj je sačuvan. Biće poslat slijedeći put kada se ulogujete u Briar.</string>
<!--Sign Out-->
<string name="progress_title_logout">Odjavite se iz Briara...</string>
<!--Screen Filters & Tapjacking-->
<string name="screen_filter_title">Detektovano je prekrivanje ekrana</string>
<string name="screen_filter_body">Druga aplikacija precrtava preko Briara. Da bi vas zaštitio, Briar neće reagovati na dodir dok druga aplikacija precrtava preko ekrana.\n\nSlijedeće aplikacije mogu precrtavati preko:\n\n%1$s</string>
<string name="screen_filter_allow">Dozvoli ovim aplikacijama da precrtavaju ekran</string>
<!--Permission Requests-->
<string name="permission_camera_title">Dozvole kamere</string>
<string name="permission_camera_request_body">Da bi skenirao QR kod, Briaru je potreban pristup kameri.</string>
<string name="permission_location_title">Dozvole lokacije</string>
<string name="permission_location_request_body">Da bi otkrio Bluetooth uređaj, Brair treba douzvolu za pristup vašoj lokaciji.\n\nBriar neće snimati vašu lokaciju ili je dijeliti sa bilo kime.</string>
<string name="permission_camera_location_title">Kamera i locationkacija</string>
<string name="permission_camera_location_request_body">Da bi skenirao QR kod, Briar treba pristup vašoj kameri.\n\nDa bi otkrio Bluetooth uređaj, Brair treba douzvolu za pristup vašoj lokaciji.\n\nBriar neće snimati vašu lokaciju ili je dijeliti sa bilo kime.</string>
<string name="permission_camera_denied_body">Uskratili ste pristup kameri, ali dodavanje kontakata zahtijeva pristup kameri.\n\nMolim vas da uzmete u obzir odobravanja pristupa.</string>
<string name="qr_code">QR kod</string>
<string name="show_qr_code_fullscreen">Prikazi QR kod na puni ekran</string>
<!--App Locking-->
<string name="lock_unlock">Otključaj Briar</string>
<string name="lock_unlock_verbose">Unesite PIN uređaja, figuru ili lozinku</string>
<string name="lock_unlock_fingerprint_description">Dodirnite senzor otiska sa registrovanim prstom da bi nastavili</string>
<string name="lock_unlock_password">Koristi lozinku</string>
<string name="lock_is_locked">Briar je zaključan</string>
<string name="lock_tap_to_unlock">Dotakni da otključaš</string>
<!--Screenshots-->
<!--This is a name to be used in screenshots. Feel free to change it to a local name.-->
<string name="screenshot_alice">Fata</string>
<!--This is a name to be used in screenshots. Feel free to change it to a local name.-->
<string name="screenshot_bob">Mujo</string>
<!--This is a name to be used in screenshots. Feel free to change it to a local name.-->
<string name="screenshot_carol">Suljo</string>
<!--This is a message to be used in screenshots. Please use the same translation for Bob!-->
<string name="screenshot_message_1">Zdravo Mujo!</string>
<!--This is a message to be used in screenshots. Please use the same translation for Alice!-->
<string name="screenshot_message_2">Zdravo Fato! Hvala što mi govoriš o Briar-u!</string>
<!--This is a message to be used in screenshots.-->
<string name="screenshot_message_3">Nema problema, nadam se da ti se sviđa 😀</string>
</resources>

View File

@@ -44,7 +44,7 @@
<string name="expiry_update">Das Ablaufdatum des Tests wurde verlängert. Dein Konto läuft nun in %d Tagen ab.</string> <string name="expiry_update">Das Ablaufdatum des Tests wurde verlängert. Dein Konto läuft nun in %d Tagen ab.</string>
<string name="expiry_date_reached">Diese Software ist abgelaufen.\nDanke, dass du Briar getestet hast!</string> <string name="expiry_date_reached">Diese Software ist abgelaufen.\nDanke, dass du Briar getestet hast!</string>
<string name="download_briar">Lade bitte Version 1.0 herunter, um Briar weiterhin zu nutzen.</string> <string name="download_briar">Lade bitte Version 1.0 herunter, um Briar weiterhin zu nutzen.</string>
<string name="create_new_account">Du wirst ein neues Konto erstellen müssen, wobei du jedoch wieder den selben Benutzernamen verwenden kannst.</string> <string name="create_new_account">Du wirst ein neues Konto erstellen müssen, wobei du jedoch wieder denselben Benutzernamen verwenden kannst.</string>
<string name="download_briar_button">Lade Briar 1.0 herunter</string> <string name="download_briar_button">Lade Briar 1.0 herunter</string>
<string name="startup_open_database">Datenbank wird entschlüsselt...</string> <string name="startup_open_database">Datenbank wird entschlüsselt...</string>
<string name="startup_migrate_database">Datenbank wird aktualisiert...</string> <string name="startup_migrate_database">Datenbank wird aktualisiert...</string>
@@ -124,6 +124,11 @@
<string name="set_contact_alias">Kontaktnamen ändern</string> <string name="set_contact_alias">Kontaktnamen ändern</string>
<string name="set_contact_alias_hint">Name des Kontakts</string> <string name="set_contact_alias_hint">Name des Kontakts</string>
<string name="set_alias_button">Ändern</string> <string name="set_alias_button">Ändern</string>
<string name="delete_all_messages">Alle Nachrichten löschen</string>
<string name="dialog_title_delete_all_messages">Löschen der Nachrichten bestätigen</string>
<string name="dialog_message_delete_all_messages">Bist Du sicher, dass Du alle Nachrichten löschen willst?</string>
<string name="dialog_title_not_all_messages_deleted">Konnte nicht alle Nachrichten löschen</string>
<string name="dialog_message_not_all_messages_deleted">Nachrichten mit Bezug auf offene Kontaktempfehlungen oder Einladungen können erst nach Abschluss dieser gelöscht werden.</string>
<string name="delete_contact">Kontakt löschen</string> <string name="delete_contact">Kontakt löschen</string>
<string name="dialog_title_delete_contact">Löschen des Kontakts bestätigen</string> <string name="dialog_title_delete_contact">Löschen des Kontakts bestätigen</string>
<string name="dialog_message_delete_contact">Bist du sicher, dass du diesen Kontakt und alle dazugehörigen Nachrichten löschen möchtest?</string> <string name="dialog_message_delete_contact">Bist du sicher, dass du diesen Kontakt und alle dazugehörigen Nachrichten löschen möchtest?</string>
@@ -139,6 +144,7 @@
<string name="dialog_message_no_image_support">Der Briar deines Kontakts unterstützt noch keine Bildanhänge. Sobald die Aktualisierung abgeschlossen ist, siehst du ein anderes Symbol.</string> <string name="dialog_message_no_image_support">Der Briar deines Kontakts unterstützt noch keine Bildanhänge. Sobald die Aktualisierung abgeschlossen ist, siehst du ein anderes Symbol.</string>
<string name="dialog_title_image_support">Du kannst nun Bilder an diesen Kontakt senden</string> <string name="dialog_title_image_support">Du kannst nun Bilder an diesen Kontakt senden</string>
<string name="dialog_message_image_support">Tippe auf das Symbol, um Bilder anzuhängen.</string> <string name="dialog_message_image_support">Tippe auf das Symbol, um Bilder anzuhängen.</string>
<string name="messaging_too_many_attachments_toast">Nur die ersten %d Bilder werden übertragen werden</string>
<!--Adding Contacts--> <!--Adding Contacts-->
<string name="add_contact_title">Kontakt in der Nähe hinzufügen</string> <string name="add_contact_title">Kontakt in der Nähe hinzufügen</string>
<string name="face_to_face">Um einen neuen Kontakt hinzuzufügen, ist es notwendig, dass sich beide Kontakte an einem Ort treffen.\n\nDadurch wird betrügerische Identitätsvortäuschung und unautorisierter Kommunikationszugriff verhindert.</string> <string name="face_to_face">Um einen neuen Kontakt hinzuzufügen, ist es notwendig, dass sich beide Kontakte an einem Ort treffen.\n\nDadurch wird betrügerische Identitätsvortäuschung und unautorisierter Kommunikationszugriff verhindert.</string>
@@ -150,7 +156,7 @@
<string name="contact_already_exists">Kontakt %s existiert bereits</string> <string name="contact_already_exists">Kontakt %s existiert bereits</string>
<string name="qr_code_invalid">Der QR-Code ist ungültig</string> <string name="qr_code_invalid">Der QR-Code ist ungültig</string>
<string name="qr_code_too_old">Der QR-Code, den du eingescannt hast, kommt von einer älteren Version von %s.\n\nBitte deinen Kontakt, zur neuesten Version upzudaten, und probiere es erneut.</string> <string name="qr_code_too_old">Der QR-Code, den du eingescannt hast, kommt von einer älteren Version von %s.\n\nBitte deinen Kontakt, zur neuesten Version upzudaten, und probiere es erneut.</string>
<string name="qr_code_too_new">Der QR-Code, den du gescannt hast, kommt von einer neueren Version von .\n\nBitte update %s auf die neueste Version und versuche es erneut.</string> <string name="qr_code_too_new">Der QR-Code, den du gescannt hast, kommt von einer neueren Version.\n\nBitte aktualisiere %s auf die neueste Version und versuche es erneut.</string>
<string name="camera_error">Kamerafehler</string> <string name="camera_error">Kamerafehler</string>
<string name="connecting_to_device">Verbinde mit Gerät\u2026</string> <string name="connecting_to_device">Verbinde mit Gerät\u2026</string>
<string name="authenticating_with_device">Authentifiziere Gerät\u2026</string> <string name="authenticating_with_device">Authentifiziere Gerät\u2026</string>
@@ -185,8 +191,8 @@
<string name="adding_contact">Kontakt hinzufügen...</string> <string name="adding_contact">Kontakt hinzufügen...</string>
<string name="adding_contact_failed">Hinzufügen von Kontakt ist fehlgeschlagen</string> <string name="adding_contact_failed">Hinzufügen von Kontakt ist fehlgeschlagen</string>
<string name="dialog_title_remove_pending_contact">Entfernung bestätigen</string> <string name="dialog_title_remove_pending_contact">Entfernung bestätigen</string>
<string name="dialog_message_remove_pending_contact">Dieser Kontakt befindet sich noch beim Hinzufügen. Wenn er jetzt Entfernt wird, wird das Hinzufügen abgebrochen.</string> <string name="dialog_message_remove_pending_contact">Dieser Kontakt befindet sich noch beim Hinzufügen. Wenn er jetzt entfernt wird, wird das Hinzufügen abgebrochen.</string>
<string name="own_link_error">Gebe den Link deines Kontakts ein, nicht deinen Eigenen.</string> <string name="own_link_error">Gebe den Link deines Kontakts ein, nicht deinen eigenen.</string>
<string name="nickname_missing">Bitte gib einen Spitznamen an</string> <string name="nickname_missing">Bitte gib einen Spitznamen an</string>
<string name="invalid_link">Ungültiger Link</string> <string name="invalid_link">Ungültiger Link</string>
<string name="unsupported_link">Dieser Link kommt von einer neueren Version von Briar. Bitte führe eine Aktualisierung auf die aktuelle Version durch und versuche es dann nochmal. </string> <string name="unsupported_link">Dieser Link kommt von einer neueren Version von Briar. Bitte führe eine Aktualisierung auf die aktuelle Version durch und versuche es dann nochmal. </string>
@@ -200,12 +206,13 @@
<item quantity="one">Neuer Kontakt hinzugefügt.</item> <item quantity="one">Neuer Kontakt hinzugefügt.</item>
<item quantity="other">%d neue Kontakte hinzugefügt.</item> <item quantity="other">%d neue Kontakte hinzugefügt.</item>
</plurals> </plurals>
<string name="adding_contact_slow_warning">Das Hinzufügen des Kontakts dauert länger den normal</string> <string name="adding_contact_slow_warning">Das Hinzufügen des Kontakts dauert länger als normal</string>
<string name="adding_contact_slow_title">Kann nicht zu Kontakt verbinden</string> <string name="adding_contact_slow_title">Kann nicht zu Kontakt verbinden</string>
<string name="adding_contact_slow_text">Das Hinzufügen des Kontakts dauert länger den normal.\n\nBitte kontrolliere, dass dein Kontakt dein Link erhalten und eingegeben hat:</string> <string name="adding_contact_slow_text">Das Hinzufügen des Kontakts dauert länger als normal.\n\nBitte kontrolliere, dass dein Kontakt deinen Link erhalten und eingegeben hat:</string>
<string name="offline_state">Keine Internetverbindung</string> <string name="offline_state">Keine Internetverbindung</string>
<string name="duplicate_link_dialog_title">Link duplizieren</string> <string name="duplicate_link_dialog_title">Link duplizieren</string>
<string name="duplicate_link_dialog_text_1">Du hast bereits einen Kontakt mit diesem Link ausstehend: %s</string> <string name="duplicate_link_dialog_text_1">Du hast bereits einen Kontakt mit diesem Link ausstehend: %s</string>
<string name="duplicate_link_dialog_text_1_contact">Du hast bereits einen Kontakt mit diesem Link: %s</string>
<!--This is a question asking whether two nicknames refer to the same person--> <!--This is a question asking whether two nicknames refer to the same person-->
<string name="duplicate_link_dialog_text_2">Sind %s und %s dieselbe Person?</string> <string name="duplicate_link_dialog_text_2">Sind %s und %s dieselbe Person?</string>
<!--This is a button for answering that two nicknames do indeed refer to the same person. This <!--This is a button for answering that two nicknames do indeed refer to the same person. This
@@ -216,7 +223,7 @@
will be used in a dialog button, so if the translation of this string longer than 20 characters, will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button--> please use "No" instead, and use "Yes" for the "Same Person" button-->
<string name="different_person_button">Andere Person</string> <string name="different_person_button">Andere Person</string>
<string name="duplicate_link_dialog_text_3">%s und %s haben Dir denselben Link geschickt.\n\nMöglicherweise versucht einer der beiden mehr über deine Kontakte zu erfahren.\n\nDu solltest deswegen niemandem sagen, dass Du diesen Link auch von jemand anderem erhalten hast,</string> <string name="duplicate_link_dialog_text_3">%s und %s haben Dir denselben Link geschickt.\n\nMöglicherweise versucht einer der beiden mehr über deine Kontakte zu erfahren.\n\nDu solltest deswegen niemandem sagen, dass Du diesen Link auch von jemand anderem erhalten hast.</string>
<string name="pending_contact_updated_toast">Ausstehender Kontakt aktualisiert</string> <string name="pending_contact_updated_toast">Ausstehender Kontakt aktualisiert</string>
<!--Introductions--> <!--Introductions-->
<string name="introduction_onboarding_title">Mache deine Kontakte untereinander bekannt</string> <string name="introduction_onboarding_title">Mache deine Kontakte untereinander bekannt</string>
@@ -326,7 +333,7 @@
<string name="forum_invitation_received">%1$s hat das Forum \"%2$s\" mit dir geteilt.</string> <string name="forum_invitation_received">%1$s hat das Forum \"%2$s\" mit dir geteilt.</string>
<string name="forum_invitation_sent">Du hast das Forum \"%1$s\" mit %2$s geteilt.</string> <string name="forum_invitation_sent">Du hast das Forum \"%1$s\" mit %2$s geteilt.</string>
<string name="forum_invitations_title">Foreneinladungen</string> <string name="forum_invitations_title">Foreneinladungen</string>
<string name="forum_invitation_exists">Du hast bereits eine Einladung zu diesem Forum angenommen.\n\nMehrere Einladungen anzunehmen, wird deine Verbindung zu diesem Forum schneller und zuverlässiger machen.</string> <string name="forum_invitation_exists">Du hast bereits eine Einladung zu diesem Forum angenommen.\n\nMehrere Einladungen anzunehmen wird deine Verbindung zu diesem Forum schneller und zuverlässiger machen.</string>
<string name="forum_joined_toast">Dem Forum beigetreten</string> <string name="forum_joined_toast">Dem Forum beigetreten</string>
<string name="forum_declined_toast">Einladung abgelehnt</string> <string name="forum_declined_toast">Einladung abgelehnt</string>
<string name="shared_by_format">Geteilt durch %s</string> <string name="shared_by_format">Geteilt durch %s</string>
@@ -418,11 +425,11 @@
<!--Settings Security and Panic--> <!--Settings Security and Panic-->
<string name="security_settings_title">Sicherheit</string> <string name="security_settings_title">Sicherheit</string>
<string name="pref_lock_title">App-Sperre</string> <string name="pref_lock_title">App-Sperre</string>
<string name="pref_lock_summary">Systemsperrbildschirm benutzen um Briar zu schützen, während angemeldet</string> <string name="pref_lock_summary">Systemsperrbildschirm benutzen um ein angemeldetes Briar zu schützen</string>
<string name="pref_lock_disabled_summary">Um dieses Feature zu benutzen, aktiviere den Systemsperrbildschirm</string> <string name="pref_lock_disabled_summary">Um dieses Feature zu benutzen, aktiviere den Systemsperrbildschirm</string>
<string name="pref_lock_timeout_title">Zeitlimit der Inaktivität für die App-Sperr-Funktion</string> <string name="pref_lock_timeout_title">Zeitlimit der Inaktivität für die App-Sperr-Funktion</string>
<!--The %s placeholder is replaced with the following time spans, e.g. 5 Minutes, 1 Hour--> <!--The %s placeholder is replaced with the following time spans, e.g. 5 Minutes, 1 Hour-->
<string name="pref_lock_timeout_summary">Briar automatisch nach %s sperren, wenn unbenutzt.</string> <string name="pref_lock_timeout_summary">Bei Nichtnutzung Briar automatisch nach %s sperren</string>
<!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"--> <!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"-->
<string name="pref_lock_timeout_1">1 Minute</string> <string name="pref_lock_timeout_1">1 Minute</string>
<!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"--> <!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"-->

View File

@@ -118,10 +118,17 @@
<string name="message_hint">Escribe un mensaje</string> <string name="message_hint">Escribe un mensaje</string>
<string name="image_caption_hint">Añade una breve descripción (opcional)</string> <string name="image_caption_hint">Añade una breve descripción (opcional)</string>
<string name="image_attach">Adjuntar imagen</string> <string name="image_attach">Adjuntar imagen</string>
<string name="image_attach_error">No se pudo adjuntar imagen</string> <string name="image_attach_error">No se pudieron adjuntar las imágenes</string>
<string name="image_attach_error_too_big">Imagen demasiado grande. El límite es de %d MB.</string>
<string name="image_attach_error_invalid_mime_type">Formato de imagen no admitido: %s</string>
<string name="set_contact_alias">Cambiar nombre del contacto</string> <string name="set_contact_alias">Cambiar nombre del contacto</string>
<string name="set_contact_alias_hint">Nombre del contacto</string> <string name="set_contact_alias_hint">Nombre del contacto</string>
<string name="set_alias_button">Cambiar</string> <string name="set_alias_button">Cambiar</string>
<string name="delete_all_messages">Eliminar todos los mensajes</string>
<string name="dialog_title_delete_all_messages">Confirmar la eliminación del mensaje</string>
<string name="dialog_message_delete_all_messages">¿Estás seguro de que deseas eliminar todos los mensajes?</string>
<string name="dialog_title_not_all_messages_deleted">No se pudieron eliminar todos los mensajes.</string>
<string name="dialog_message_not_all_messages_deleted">Los mensajes relacionados con presentaciones o invitaciones en curso no se pueden eliminar hasta que finalicen.</string>
<string name="delete_contact">Eliminar contacto</string> <string name="delete_contact">Eliminar contacto</string>
<string name="dialog_title_delete_contact">Confirmar eliminación de contacto</string> <string name="dialog_title_delete_contact">Confirmar eliminación de contacto</string>
<string name="dialog_message_delete_contact">¿Seguro que quieres eliminar este contacto y todos los mensajes intercambiados entre vosotros?</string> <string name="dialog_message_delete_contact">¿Seguro que quieres eliminar este contacto y todos los mensajes intercambiados entre vosotros?</string>
@@ -137,7 +144,9 @@
<string name="dialog_message_no_image_support">El Briar de tu contacto todavía no soporta imágenes. Una vez que lo actualice verás un ícono diferente.</string> <string name="dialog_message_no_image_support">El Briar de tu contacto todavía no soporta imágenes. Una vez que lo actualice verás un ícono diferente.</string>
<string name="dialog_title_image_support">Ahora puedes enviar imágenes a este contacto.</string> <string name="dialog_title_image_support">Ahora puedes enviar imágenes a este contacto.</string>
<string name="dialog_message_image_support">Pulsa este ícono para adjuntar imágenes.</string> <string name="dialog_message_image_support">Pulsa este ícono para adjuntar imágenes.</string>
<string name="messaging_too_many_attachments_toast">Solo se enviarán las primeras %d imágenes</string>
<!--Adding Contacts--> <!--Adding Contacts-->
<string name="add_contact_title">Agregar Contacto Cercano</string>
<string name="face_to_face">Debes reunirte con la persona a la que quieras añadir como contacto.\n\nHaciéndolo así prevendrás que nadie te suplante o pueda leer tus mensajes en el futuro.</string> <string name="face_to_face">Debes reunirte con la persona a la que quieras añadir como contacto.\n\nHaciéndolo así prevendrás que nadie te suplante o pueda leer tus mensajes en el futuro.</string>
<string name="continue_button">Continuar</string> <string name="continue_button">Continuar</string>
<string name="try_again_button">Prueba de nuevo</string> <string name="try_again_button">Prueba de nuevo</string>
@@ -155,15 +164,67 @@
<string name="connection_error_explanation">Por favor comprobar que ambos estén conectados a la misma red Wi-Fi.</string> <string name="connection_error_explanation">Por favor comprobar que ambos estén conectados a la misma red Wi-Fi.</string>
<string name="connection_error_feedback">Si este problema persiste, por favor <a href="feedback">envía tus comentarios</a> para ayudarnos a mejorar la aplicación.</string> <string name="connection_error_feedback">Si este problema persiste, por favor <a href="feedback">envía tus comentarios</a> para ayudarnos a mejorar la aplicación.</string>
<!--Adding Contacts Remotely--> <!--Adding Contacts Remotely-->
<string name="add_contact_remotely_title_case">Añadir un Contacto a Distancia</string>
<string name="add_contact_nearby_title">Agregar un contacto cercano</string>
<string name="add_contact_remotely_title">Añadir un contacto a distancia</string>
<string name="contact_name_hint">Ponerle un sobrenombre al contacto</string>
<string name="contact_link_intro">Introduzca el enlace de su contacto aquí</string>
<string name="contact_link_hint">Enlace de contacto</string>
<string name="paste_button">Pegar</string> <string name="paste_button">Pegar</string>
<string name="add_contact_button">Agregar contacto</string>
<string name="copy_button">Copiar</string> <string name="copy_button">Copiar</string>
<string name="share_button">Compartir</string> <string name="share_button">Compartir</string>
<string name="send_link_title">Intercambiar enlaces</string>
<string name="add_contact_choose_nickname">Elija un sobrenombre</string>
<string name="add_contact_choose_a_nickname">Ingrese un sobrenombre</string>
<string name="nickname_intro">Dele a su contacto un sobrenombre. Sólo usted puede verlo.</string>
<string name="your_link">Déle este enlace al contacto que desea añadir</string>
<string name="link_clip_label">Enlace Briar</string>
<string name="link_copied_toast">Enlace copiado</string>
<string name="adding_contact_error">Se ha producido un error al añadir el contacto.</string>
<string name="pending_contact_requests_snackbar">Hay solicitudes de contacto pendientes</string>
<string name="pending_contact_requests">Solicitudes de contacto pendientes</string>
<string name="no_pending_contacts">No hay contactos pendientes</string>
<string name="add_contact_remote_connecting">Conectando...</string> <string name="add_contact_remote_connecting">Conectando...</string>
<string name="waiting_for_contact_to_come_online">Esperando que el contacto se ponga en línea....</string>
<string name="connecting">Conectando...</string> <string name="connecting">Conectando...</string>
<string name="adding_contact">Añadir contacto....</string>
<string name="adding_contact_failed">La adición de un contacto ha fallado</string>
<string name="dialog_title_remove_pending_contact">Confirmar la eliminación</string>
<string name="dialog_message_remove_pending_contact">Este contacto todavía está siendo añadido. Si lo quita ahora, no se añadirá.</string>
<string name="own_link_error">Introduzca el enlace de su contacto, no el suyo propio</string>
<string name="nickname_missing">Por favor, introduzca un sobrenombre</string>
<string name="invalid_link">Enlace inválido</string>
<string name="unsupported_link">Este enlace proviene de una nueva versión de Briar. Por favor, actualice a la última versión e inténtelo de nuevo.</string>
<string name="intent_own_link">Abrió su propio enlace. ¡Utilice el del contacto que quiere añadir!</string>
<string name="missing_link">Por favor, introduzca un enlace</string>
<!--This is a numeral indicating the first step in a series of screens--> <!--This is a numeral indicating the first step in a series of screens-->
<string name="step_1">1</string> <string name="step_1">1</string>
<!--This is a numeral indicating the second step in a series of screens--> <!--This is a numeral indicating the second step in a series of screens-->
<string name="step_2">2</string> <string name="step_2">2</string>
<plurals name="contact_added_notification_text">
<item quantity="one">Nuevo contacto añadido.</item>
<item quantity="other">%d nuevos contactos añadidos.</item>
</plurals>
<string name="adding_contact_slow_warning">Añadir este contacto tarda más de lo habitual</string>
<string name="adding_contact_slow_title">No se puede conectar con el contacto</string>
<string name="adding_contact_slow_text">Agregar este contacto está tomando más tiempo de lo normal.\n\nPor favor, compruebe que su contacto ha recibido su enlace y lo ha agregado:</string>
<string name="offline_state">No hay conexión a Internet</string>
<string name="duplicate_link_dialog_title">Duplicar enlace</string>
<string name="duplicate_link_dialog_text_1">Ya tiene un contacto pendiente con este enlace: %s</string>
<string name="duplicate_link_dialog_text_1_contact">Ya tienes un contacto con este enlace: %s</string>
<!--This is a question asking whether two nicknames refer to the same person-->
<string name="duplicate_link_dialog_text_2">¿Son %s y %s la misma persona?</string>
<!--This is a button for answering that two nicknames do indeed refer to the same person. This
string will be used in a dialog button, so if the translation of this string is longer than 20
characters, please use "Yes" instead, and use "No" for the "Different Person" button-->
<string name="same_person_button">Misma persona</string>
<!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button-->
<string name="different_person_button">Diferente Persona</string>
<string name="duplicate_link_dialog_text_3">%s y %s le envió el mismo enlace.\n\nUno de ellos puede estar tratando de descubrir quiénes son sus contactos.\n\nNo les diga que recibió el mismo enlace de otra persona.</string>
<string name="pending_contact_updated_toast">Contacto pendiente actualizado</string>
<!--Introductions--> <!--Introductions-->
<string name="introduction_onboarding_title">Presenta a tus contactos</string> <string name="introduction_onboarding_title">Presenta a tus contactos</string>
<string name="introduction_onboarding_text">Presenta a tus contactos entre sí para ahorrarles encontrarse en persona para poder conectar mediante Briar.</string> <string name="introduction_onboarding_text">Presenta a tus contactos entre sí para ahorrarles encontrarse en persona para poder conectar mediante Briar.</string>

View File

@@ -116,14 +116,19 @@
<string name="date_no_private_messages">Ez dago mezurik.</string> <string name="date_no_private_messages">Ez dago mezurik.</string>
<string name="no_private_messages">Ez dago erakusteko mezurik</string> <string name="no_private_messages">Ez dago erakusteko mezurik</string>
<string name="message_hint">Idatzi mezua</string> <string name="message_hint">Idatzi mezua</string>
<string name="image_caption_hint">Gehitu epigrafea (aukerakoa)</string> <string name="image_caption_hint">Gehitu epigrafe bat (aukerakoa)</string>
<string name="image_attach">Erantsi irudia</string> <string name="image_attach">Erantsi irudia</string>
<string name="image_attach_error">Ezin izan dira irudiak erantsi</string> <string name="image_attach_error">Ezin izan da irudia(k) erantsi</string>
<string name="image_attach_error_too_big">Irudia handiegia da. Muga %d MB da.</string> <string name="image_attach_error_too_big">Irudia handiegia da. Muga %d MBkoa da.</string>
<string name="image_attach_error_invalid_mime_type">Onartu gabeko irudi formatua: %s</string> <string name="image_attach_error_invalid_mime_type">Onartu gabeko irudi formatua: %s</string>
<string name="set_contact_alias">Aldatu kontaktuaren izena</string> <string name="set_contact_alias">Aldatu kontaktuaren izena</string>
<string name="set_contact_alias_hint">Kontaktuaren izena</string> <string name="set_contact_alias_hint">Kontaktuaren izena</string>
<string name="set_alias_button">Aldatu</string> <string name="set_alias_button">Aldatu</string>
<string name="delete_all_messages">Ezabatu mezu guztiak</string>
<string name="dialog_title_delete_all_messages">Baieztatu mezuak ezabatzea</string>
<string name="dialog_message_delete_all_messages">Ziur mezu guztiak ezabatu nahi dituzula?</string>
<string name="dialog_title_not_all_messages_deleted">Ezin izan dira mezu guztiak ezabatu</string>
<string name="dialog_message_not_all_messages_deleted">Abian diren aurkezpenen edo gonbidapenen mezuak ezin dira ezabatu hauek amaitu arte.</string>
<string name="delete_contact">Ezabatu kontaktua</string> <string name="delete_contact">Ezabatu kontaktua</string>
<string name="dialog_title_delete_contact">Baieztatu kontaktua ezabatzea</string> <string name="dialog_title_delete_contact">Baieztatu kontaktua ezabatzea</string>
<string name="dialog_message_delete_contact">Ziur zaude kontaktu hau eta berarekin trukatutako mezu guztiak kendu nahi dituzula?</string> <string name="dialog_message_delete_contact">Ziur zaude kontaktu hau eta berarekin trukatutako mezu guztiak kendu nahi dituzula?</string>
@@ -132,13 +137,14 @@
<string name="you">Zu</string> <string name="you">Zu</string>
<string name="save_image">Gorde irudia</string> <string name="save_image">Gorde irudia</string>
<string name="dialog_title_save_image">Gorde irudia?</string> <string name="dialog_title_save_image">Gorde irudia?</string>
<string name="dialog_message_save_image">Irudi hau gordetzeak beste aplikazioei berau atzitea ahalbietuko lieke.\n\nZiur gorde nahi duzula?</string> <string name="dialog_message_save_image">Irudi hau gordetzeak beste aplikazioei bera atzitzen utziko lieke.\n\nZiur zaude gorde nahi duzula?</string>
<string name="save_image_success">Irudia gorde da</string> <string name="save_image_success">Irudia gorde da</string>
<string name="save_image_error">Ezin izan da irudia gorde</string> <string name="save_image_error">Ezin izan da irudia gorde</string>
<string name="dialog_title_no_image_support">Irudiak ez daude eskuragarri</string> <string name="dialog_title_no_image_support">Irudiak ez daude erabilgarri</string>
<string name="dialog_message_no_image_support">Zure kontaktuaren Briar bertsioak ez ditu oraindik irudiak eranskin gisa onartzen. Eguneratzen duenean zuk ikono desberdin bat ikusiko duzu.</string> <string name="dialog_message_no_image_support">Zure kontaktuaren Briar bertsioak ez ditu oraindik irudiak eranskin gisa onartzen. Eguneratzen duenean zuk ikono desberdin bat ikusiko duzu.</string>
<string name="dialog_title_image_support">Orain irudiak bidali ahal dizkiozu eranskin gisa kontaktu honei</string> <string name="dialog_title_image_support">Orain irudiak bidali ahal dizkiozu kontaktu honi</string>
<string name="dialog_message_image_support">Sakatu ikono hau irudiak eransteko.</string> <string name="dialog_message_image_support">Sakatu ikono hau irudiak eransteko.</string>
<string name="messaging_too_many_attachments_toast">Lehen %d irudiak bidaliko dira, gehiagorik ez</string>
<!--Adding Contacts--> <!--Adding Contacts-->
<string name="add_contact_title">Gehitu inguruko kontaktua</string> <string name="add_contact_title">Gehitu inguruko kontaktua</string>
<string name="face_to_face">Kontaktu gisa gehitu nahi duzun pertsonarekin aurrez aurre egon behar duzu.\n\nHonek etorkizunean inork zure itxurak egitea edo zure mezuak irakurtzea eragotziko du.</string> <string name="face_to_face">Kontaktu gisa gehitu nahi duzun pertsonarekin aurrez aurre egon behar duzu.\n\nHonek etorkizunean inork zure itxurak egitea edo zure mezuak irakurtzea eragotziko du.</string>
@@ -162,28 +168,28 @@
<string name="add_contact_nearby_title">Gehitu inguruko kontaktua</string> <string name="add_contact_nearby_title">Gehitu inguruko kontaktua</string>
<string name="add_contact_remotely_title">Gehitu urruneko kontaktua</string> <string name="add_contact_remotely_title">Gehitu urruneko kontaktua</string>
<string name="contact_name_hint">Eman ezizena kontaktuari</string> <string name="contact_name_hint">Eman ezizena kontaktuari</string>
<string name="contact_link_intro">Sartu zure kontaktuaren ezizena hemen</string> <string name="contact_link_intro">Sartu hemen zure kontaktuaren esteka</string>
<string name="contact_link_hint">Kontaktuaren esteka</string> <string name="contact_link_hint">Kontaktuaren esteka</string>
<string name="paste_button">Itsatsi</string> <string name="paste_button">Itsatsi</string>
<string name="add_contact_button">Gehitu kontaktua</string> <string name="add_contact_button">Gehitu kontaktua</string>
<string name="copy_button">Kopiatu</string> <string name="copy_button">Kopiatu</string>
<string name="share_button">Elkarbanatu</string> <string name="share_button">Partekatu</string>
<string name="send_link_title">Partekatu estekak</string> <string name="send_link_title">Partekatu estekak</string>
<string name="add_contact_choose_nickname">Aukeratu ezizena</string> <string name="add_contact_choose_nickname">Aukeratu ezizena</string>
<string name="add_contact_choose_a_nickname">Sartu ezizen bat</string> <string name="add_contact_choose_a_nickname">Sartu ezizen bat</string>
<string name="nickname_intro">Eman ezizena zure kontaktuari. Zuk ikusi dezakezu, beste inork ez</string> <string name="nickname_intro">Eman ezizena zure kontaktuari. Zuk ikusi dezakezu, beste inork ez</string>
<string name="your_link">Eman esteka hau gehitu nahi duzun kontaktuari</string> <string name="your_link">Eman esteka hau gehitu nahi duzun kontaktuari</string>
<string name="link_clip_label">Briar esteka</string> <string name="link_clip_label">Briar esteka</string>
<string name="link_copied_toast">Esteka kopiatuta</string> <string name="link_copied_toast">Esteka kopiatu da</string>
<string name="adding_contact_error">Errore bat gertatu da kontaktua gehitzean.</string> <string name="adding_contact_error">Errore bat gertatu da kontaktua gehitzean.</string>
<string name="pending_contact_requests_snackbar">Kontaktu eskaerak daude aztertzeke</string> <string name="pending_contact_requests_snackbar">Kontaktu eskaerak daude aztertzeke</string>
<string name="pending_contact_requests">Kontaktu eskaerak aztertzeke</string> <string name="pending_contact_requests">Kontaktu eskaerak aztertzeke</string>
<string name="no_pending_contacts">Ez dago kontakturik aztertzeke</string> <string name="no_pending_contacts">Ez dago kontakturik aztertzeke</string>
<string name="add_contact_remote_connecting">Elkartzen</string> <string name="add_contact_remote_connecting">Konektatzen...</string>
<string name="waiting_for_contact_to_come_online">Kontaktua konektatu bitartean zain...</string> <string name="waiting_for_contact_to_come_online">Kontaktua konektatu bitartean zain...</string>
<string name="connecting">Elkartzen</string> <string name="connecting">Konektatzen...</string>
<string name="adding_contact">Kontaktua gehitzen...</string> <string name="adding_contact">Kontaktua gehitzen...</string>
<string name="adding_contact_failed">Kontaktua gehitzeak huts egin du</string> <string name="adding_contact_failed">Kontaktua gehitzea huts egin du</string>
<string name="dialog_title_remove_pending_contact">Berretsi kentzea</string> <string name="dialog_title_remove_pending_contact">Berretsi kentzea</string>
<string name="dialog_message_remove_pending_contact">Kontaktu hau gehitzen ari da oraindik. orain kentzen baduzu, ez da gehituko.</string> <string name="dialog_message_remove_pending_contact">Kontaktu hau gehitzen ari da oraindik. orain kentzen baduzu, ez da gehituko.</string>
<string name="own_link_error">Sartu zure kontaktuaren esteka, ez zurea</string> <string name="own_link_error">Sartu zure kontaktuaren esteka, ez zurea</string>
@@ -206,6 +212,7 @@
<string name="offline_state">Internet konexiorik ez</string> <string name="offline_state">Internet konexiorik ez</string>
<string name="duplicate_link_dialog_title">Bikoiztutako esteka</string> <string name="duplicate_link_dialog_title">Bikoiztutako esteka</string>
<string name="duplicate_link_dialog_text_1">Baduzu kontaktu bat aztertzeke esteka honekin: %s</string> <string name="duplicate_link_dialog_text_1">Baduzu kontaktu bat aztertzeke esteka honekin: %s</string>
<string name="duplicate_link_dialog_text_1_contact">Baduzu esteka hau duen kontaktu bat: %s</string>
<!--This is a question asking whether two nicknames refer to the same person--> <!--This is a question asking whether two nicknames refer to the same person-->
<string name="duplicate_link_dialog_text_2">Ziur %s eta %s pertsona bera direla?</string> <string name="duplicate_link_dialog_text_2">Ziur %s eta %s pertsona bera direla?</string>
<!--This is a button for answering that two nicknames do indeed refer to the same person. This <!--This is a button for answering that two nicknames do indeed refer to the same person. This
@@ -215,7 +222,7 @@
<!--This is a button for answering that two nicknames refer to different people. This string <!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters, will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button--> please use "No" instead, and use "Yes" for the "Same Person" button-->
<string name="different_person_button">Pertsona desberdina</string> <string name="different_person_button">Beste pertsona bat</string>
<string name="duplicate_link_dialog_text_3">%s eta %s erabiltzaileek esteka bera bidali dizute.\n\nBietako batek agian zure kontaktuak zeintzuk diren asmatu nahi du.\n\nEz esan esteka bera jaso duzula beste norbaitengandik.</string> <string name="duplicate_link_dialog_text_3">%s eta %s erabiltzaileek esteka bera bidali dizute.\n\nBietako batek agian zure kontaktuak zeintzuk diren asmatu nahi du.\n\nEz esan esteka bera jaso duzula beste norbaitengandik.</string>
<string name="pending_contact_updated_toast">Aztertzeke zegoen kontaktua eguneratu da</string> <string name="pending_contact_updated_toast">Aztertzeke zegoen kontaktua eguneratu da</string>
<!--Introductions--> <!--Introductions-->

View File

@@ -148,6 +148,13 @@
<string name="step_1">1</string> <string name="step_1">1</string>
<!--This is a numeral indicating the second step in a series of screens--> <!--This is a numeral indicating the second step in a series of screens-->
<string name="step_2">2</string> <string name="step_2">2</string>
<!--This is a question asking whether two nicknames refer to the same person-->
<!--This is a button for answering that two nicknames do indeed refer to the same person. This
string will be used in a dialog button, so if the translation of this string is longer than 20
characters, please use "Yes" instead, and use "No" for the "Different Person" button-->
<!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button-->
<!--Introductions--> <!--Introductions-->
<string name="introduction_onboarding_title">Esittele yhteyshenkilösi</string> <string name="introduction_onboarding_title">Esittele yhteyshenkilösi</string>
<string name="introduction_onboarding_text">Voit esitellä muita käyttäjiä toisilleen, niin että heidän ei tarvitse tavata kasvokkain ollakseen yhteydessä Briarin kautta.</string> <string name="introduction_onboarding_text">Voit esitellä muita käyttäjiä toisilleen, niin että heidän ei tarvitse tavata kasvokkain ollakseen yhteydessä Briarin kautta.</string>

View File

@@ -35,7 +35,7 @@
<string name="startup_failed_activity_title">Échec de démarrage de Briar</string> <string name="startup_failed_activity_title">Échec de démarrage de Briar</string>
<string name="startup_failed_db_error">Pour quelque raison, votre base de données Briar est corrompue sans espoir de réparation. Votre compte, vos données et tous vos contacts sont perdus. Malheureusement, vous devez réinstaller Briar et créer un nouveau compte en choisissant « Jai oublié mon mot de passe » dans linvite de mot de passe.</string> <string name="startup_failed_db_error">Pour quelque raison, votre base de données Briar est corrompue sans espoir de réparation. Votre compte, vos données et tous vos contacts sont perdus. Malheureusement, vous devez réinstaller Briar et créer un nouveau compte en choisissant « Jai oublié mon mot de passe » dans linvite de mot de passe.</string>
<string name="startup_failed_data_too_old_error">Votre compte a été créé avec une ancienne version de cette appli et ne peut pas être ouvert avec cette version. Vous devez soit réinstaller lancienne version, soit créer un nouveau compte en choisissant « Jai oublié mon mot de passe » dans linvite de mot de passe.</string> <string name="startup_failed_data_too_old_error">Votre compte a été créé avec une ancienne version de cette appli et ne peut pas être ouvert avec cette version. Vous devez soit réinstaller lancienne version, soit créer un nouveau compte en choisissant « Jai oublié mon mot de passe » dans linvite de mot de passe.</string>
<string name="startup_failed_data_too_new_error">Cette version de lappli est trop ancienne. Veuillez la mettre à niveau vers la dernière version et ressayer.</string> <string name="startup_failed_data_too_new_error">Cette version de lappli est trop ancienne. Veuillez passer à la version la plus récente et ressayer.</string>
<string name="startup_failed_service_error">Briar na pas pu démarrer un greffon exigé. Réinstaller Briar résout généralement ce problème. Veuillez cependant noter que vous perdrez votre compte et toutes données relatives puisque Briar nutilise pas de serveurs centralisés sur lesquels enregistrer vos données.</string> <string name="startup_failed_service_error">Briar na pas pu démarrer un greffon exigé. Réinstaller Briar résout généralement ce problème. Veuillez cependant noter que vous perdrez votre compte et toutes données relatives puisque Briar nutilise pas de serveurs centralisés sur lesquels enregistrer vos données.</string>
<plurals name="expiry_warning"> <plurals name="expiry_warning">
<item quantity="one">Ceci est une version de test de Briar. Votre compte arrivera à expiration dans %d jour et ne peut pas être renouvelé.</item> <item quantity="one">Ceci est une version de test de Briar. Votre compte arrivera à expiration dans %d jour et ne peut pas être renouvelé.</item>
@@ -118,10 +118,17 @@
<string name="message_hint">Rédiger le message</string> <string name="message_hint">Rédiger le message</string>
<string name="image_caption_hint">Ajouter une légende (facultatif)</string> <string name="image_caption_hint">Ajouter une légende (facultatif)</string>
<string name="image_attach">Joindre une image</string> <string name="image_attach">Joindre une image</string>
<string name="image_attach_error">Impossible dattacher une image</string> <string name="image_attach_error">Impossible de joindre une ou des images</string>
<string name="image_attach_error_too_big">Limage est trop volumineuse. La limite est %d Mo</string>
<string name="image_attach_error_invalid_mime_type">Format dimage non pris en charge : %s</string>
<string name="set_contact_alias">Changer le nom du contact</string> <string name="set_contact_alias">Changer le nom du contact</string>
<string name="set_contact_alias_hint">Nom du contact</string> <string name="set_contact_alias_hint">Nom du contact</string>
<string name="set_alias_button">Modifier</string> <string name="set_alias_button">Modifier</string>
<string name="delete_all_messages">Supprimer tous les messages</string>
<string name="dialog_title_delete_all_messages">Confirmer la suppression des messages</string>
<string name="dialog_message_delete_all_messages">Voulez-vous vraiment supprimer tous les messages?</string>
<string name="dialog_title_not_all_messages_deleted">Impossible de supprimer tous les messages</string>
<string name="dialog_message_not_all_messages_deleted">Les messages relatifs aux présentations ou invitations en cours ne peuvent pas être supprimés jusquà leur conclusion.</string>
<string name="delete_contact">Supprimer le contact</string> <string name="delete_contact">Supprimer le contact</string>
<string name="dialog_title_delete_contact">Confirmer la suppression du contact</string> <string name="dialog_title_delete_contact">Confirmer la suppression du contact</string>
<string name="dialog_message_delete_contact">Voulez-vous vraiment supprimer ce contact et tous les messages associés?</string> <string name="dialog_message_delete_contact">Voulez-vous vraiment supprimer ce contact et tous les messages associés?</string>
@@ -137,18 +144,19 @@
<string name="dialog_message_no_image_support">Le Briar de votre contact ne prend pas encore en charge les images jointes. Une fois que son appli aura été mise à niveau, vous verrez une icône différente.</string> <string name="dialog_message_no_image_support">Le Briar de votre contact ne prend pas encore en charge les images jointes. Une fois que son appli aura été mise à niveau, vous verrez une icône différente.</string>
<string name="dialog_title_image_support">Vous pouvez désormais envoyer des images à ce contact</string> <string name="dialog_title_image_support">Vous pouvez désormais envoyer des images à ce contact</string>
<string name="dialog_message_image_support">Touchez cette icône pour joindre des images.</string> <string name="dialog_message_image_support">Touchez cette icône pour joindre des images.</string>
<string name="messaging_too_many_attachments_toast">Seules les %d premières images seront envoyées</string>
<!--Adding Contacts--> <!--Adding Contacts-->
<string name="add_contact_title">Ajouter un contact à proximité</string> <string name="add_contact_title">Ajouter un contact à proximité</string>
<string name="face_to_face">Vous devez rencontrer la personne que vous voulez ajouter comme contact, afin déviter que quelquun se fasse passer pour vous et puisse lire vos messages à lavenir.</string> <string name="face_to_face">Vous devez rencontrer la personne que vous voulez ajouter comme contact, afin déviter que quelquun se fasse passer pour vous et puisse lire vos messages à lavenir.</string>
<string name="continue_button">Continuer</string> <string name="continue_button">Continuer</string>
<string name="try_again_button">Ressayer</string> <string name="try_again_button">Ressayer</string>
<string name="waiting_for_contact_to_scan">En attente de lecture du code QR par le contact et de sa connexion\u2026</string> <string name="waiting_for_contact_to_scan">En attente de balayage du code QR par le contact et de sa connexion\u2026</string>
<string name="exchanging_contact_details">Échange des renseignements de contact\u2026</string> <string name="exchanging_contact_details">Échange des renseignements de contact\u2026</string>
<string name="contact_added_toast">Contact ajouté : %s</string> <string name="contact_added_toast">Contact ajouté : %s</string>
<string name="contact_already_exists">Le contact %s existe déjà</string> <string name="contact_already_exists">Le contact %s existe déjà</string>
<string name="qr_code_invalid">Le code QR est invalide</string> <string name="qr_code_invalid">Le code QR est invalide</string>
<string name="qr_code_too_old">Le code QR que vous avez lu provient dune version plus ancienne de %s.\n\nVeuillez demander à votre contact de passer à la version la plus récente, puis ressayez.</string> <string name="qr_code_too_old">Le code QR que vous avez balayé provient dune version plus ancienne de %s.\n\nVeuillez demander à votre contact de passer à la version la plus récente et ressayer.</string>
<string name="qr_code_too_new">Le code QR que vous avez lu provient dune version plus récente de %s.\n\nVeuillez passer à la version la plus récente, puis ressayez.</string> <string name="qr_code_too_new">Le code QR que vous avez balayé provient dune version plus récente de %s.\n\nVeuillez passer à la version la plus récente et ressayer.</string>
<string name="camera_error">Erreur de lappareil photo</string> <string name="camera_error">Erreur de lappareil photo</string>
<string name="connecting_to_device">Connexion à lappareil\u2026</string> <string name="connecting_to_device">Connexion à lappareil\u2026</string>
<string name="authenticating_with_device">Autentification avec lappareil\u2026</string> <string name="authenticating_with_device">Autentification avec lappareil\u2026</string>
@@ -178,13 +186,16 @@
<string name="pending_contact_requests">Demandes de contact en attente</string> <string name="pending_contact_requests">Demandes de contact en attente</string>
<string name="no_pending_contacts">Il ny a aucun contact en attente</string> <string name="no_pending_contacts">Il ny a aucun contact en attente</string>
<string name="add_contact_remote_connecting">Connexion…</string> <string name="add_contact_remote_connecting">Connexion…</string>
<string name="waiting_for_contact_to_come_online">En attente de larrivée en ligne du contact…\n\nA-t-il déjà saisi votre lien?</string> <string name="waiting_for_contact_to_come_online">En attente de larrivée en ligne du contact…</string>
<string name="connecting">Connexion…</string> <string name="connecting">Connexion…</string>
<string name="adding_contact">Ajout du contact…</string> <string name="adding_contact">Ajout du contact…</string>
<string name="adding_contact_failed">Échec dajout du contact</string> <string name="adding_contact_failed">Échec dajout du contact</string>
<string name="dialog_title_remove_pending_contact">Confirmer la suppression</string>
<string name="dialog_message_remove_pending_contact">Le contact est encore en cours dajout. Si vous le supprimez maintenant, il ne sera pas ajouté.</string>
<string name="own_link_error">Saisissez le lien de votre contact, pas le vôtre</string> <string name="own_link_error">Saisissez le lien de votre contact, pas le vôtre</string>
<string name="nickname_missing">Veuillez saisir un pseudonyme</string> <string name="nickname_missing">Veuillez saisir un pseudonyme</string>
<string name="invalid_link">Le lien est invalide</string> <string name="invalid_link">Le lien est invalide</string>
<string name="unsupported_link">Ce lien provient dune version plus récente de Briar. Veuillez passer à la version la plus récente et ressayer.</string>
<string name="intent_own_link">Vous avez ouvert votre propre lien. Utilisez celui du contact que vous souhaitez ajouter.</string> <string name="intent_own_link">Vous avez ouvert votre propre lien. Utilisez celui du contact que vous souhaitez ajouter.</string>
<string name="missing_link">Veuillez saisir un lien</string> <string name="missing_link">Veuillez saisir un lien</string>
<!--This is a numeral indicating the first step in a series of screens--> <!--This is a numeral indicating the first step in a series of screens-->
@@ -195,6 +206,25 @@
<item quantity="one">Un nouveau contact a été ajouté</item> <item quantity="one">Un nouveau contact a été ajouté</item>
<item quantity="other">%d nouveaux contacts ont été ajoutés.</item> <item quantity="other">%d nouveaux contacts ont été ajoutés.</item>
</plurals> </plurals>
<string name="adding_contact_slow_warning">Lajout de ce contact prend plus longtemps que dhabitude</string>
<string name="adding_contact_slow_title">Impossible de se connecter au contact</string>
<string name="adding_contact_slow_text">Lajout de ce contact prend plus longtemps que dhabitude.\n\nVeuillez vérifier si votre contact a reçu votre lien et vous a ajouté :</string>
<string name="offline_state">Aucune connexion à Internet</string>
<string name="duplicate_link_dialog_title">Lien en double</string>
<string name="duplicate_link_dialog_text_1">Vous avez déjà un contact en attente avec ce lien : %s</string>
<string name="duplicate_link_dialog_text_1_contact">Vous avez déjà un contact avec ce lien : %s</string>
<!--This is a question asking whether two nicknames refer to the same person-->
<string name="duplicate_link_dialog_text_2">%s et %s sont-elles la même personne?</string>
<!--This is a button for answering that two nicknames do indeed refer to the same person. This
string will be used in a dialog button, so if the translation of this string is longer than 20
characters, please use "Yes" instead, and use "No" for the "Different Person" button-->
<string name="same_person_button">La même personne</string>
<!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button-->
<string name="different_person_button">Une personne différente</string>
<string name="duplicate_link_dialog_text_3">%s et %s vous ont envoyé le même lien.\n\nL\'une delle pourrait tenter de découvrir qui sont vos contacts.\n\nNe lui dites pas que vous avez reçu le même lien de quelquun dautre.</string>
<string name="pending_contact_updated_toast">Le contact en attente a été mis à jour</string>
<!--Introductions--> <!--Introductions-->
<string name="introduction_onboarding_title">Présenter vos contacts</string> <string name="introduction_onboarding_title">Présenter vos contacts</string>
<string name="introduction_onboarding_text">Vous pouvez présenter vos contacts mutuellement, afin quils naient pas à se rencontrer en personne pour se connecter les uns aux autres avec Briar.</string> <string name="introduction_onboarding_text">Vous pouvez présenter vos contacts mutuellement, afin quils naient pas à se rencontrer en personne pour se connecter les uns aux autres avec Briar.</string>
@@ -487,11 +517,11 @@
<string name="screen_filter_allow">Permettre à ces applis de safficher par-dessus</string> <string name="screen_filter_allow">Permettre à ces applis de safficher par-dessus</string>
<!--Permission Requests--> <!--Permission Requests-->
<string name="permission_camera_title">Autorisation daccès à lappareil photo</string> <string name="permission_camera_title">Autorisation daccès à lappareil photo</string>
<string name="permission_camera_request_body">Afin de lire le code QR, Briar doit accéder à lappareil photo.</string> <string name="permission_camera_request_body">Afin de balayer le code QR, Briar doit accéder à lappareil photo.</string>
<string name="permission_location_title">Autorisation daccès à la position</string> <string name="permission_location_title">Autorisation daccès à la position</string>
<string name="permission_location_request_body">Afin de découvrir des périphériques Bluetooth, Briar doit accéder à votre position.\n\nBriar nenregistre pas votre position et ne la partage avec personne.</string> <string name="permission_location_request_body">Afin de découvrir des périphériques Bluetooth, Briar doit accéder à votre position.\n\nBriar nenregistre pas votre position et ne la partage avec personne.</string>
<string name="permission_camera_location_title">Appareil photo et position</string> <string name="permission_camera_location_title">Appareil photo et position</string>
<string name="permission_camera_location_request_body">Afin de lire le code QR, Briar doit accéder à lappareil photo.\n\nAfin de découvrir des périphériques Bluetooth, Briar doit accéder à votre position.\n\nBriar nenregistre pas votre position et ne la partage avec personne.</string> <string name="permission_camera_location_request_body">Afin de balayer le code QR, Briar doit accéder à lappareil photo.\n\nAfin de découvrir des périphériques Bluetooth, Briar doit accéder à votre position.\n\nBriar nenregistre pas votre position et ne la partage avec personne.</string>
<string name="permission_camera_denied_body">Vous avez refusé laccès à la caméra, mais lajout de contacts exige lutilisation de celle-ci.\n\nVeuillez envisager dy accorder laccès.</string> <string name="permission_camera_denied_body">Vous avez refusé laccès à la caméra, mais lajout de contacts exige lutilisation de celle-ci.\n\nVeuillez envisager dy accorder laccès.</string>
<string name="qr_code">Code QR</string> <string name="qr_code">Code QR</string>
<string name="show_qr_code_fullscreen">Afficher le code QR en plein écran</string> <string name="show_qr_code_fullscreen">Afficher le code QR en plein écran</string>

View File

@@ -131,10 +131,17 @@
<string name="message_hint">הקלד הודעה</string> <string name="message_hint">הקלד הודעה</string>
<string name="image_caption_hint">הוסף כיתוב (רשותי)</string> <string name="image_caption_hint">הוסף כיתוב (רשותי)</string>
<string name="image_attach">צרף תמונה</string> <string name="image_attach">צרף תמונה</string>
<string name="image_attach_error">לא היה ניתן לצרף תמונה</string> <string name="image_attach_error">לא היה ניתן לצרף תמונה (או תמונות)</string>
<string name="image_attach_error_too_big">התמונה גדולה מדי. המגבלה היא %d מ\"ב.</string>
<string name="image_attach_error_invalid_mime_type">תסדיר תמונה בלתי נתמך: %s</string>
<string name="set_contact_alias">שַׁנֵּה שם איש קשר</string> <string name="set_contact_alias">שַׁנֵּה שם איש קשר</string>
<string name="set_contact_alias_hint">שם איש הקשר</string> <string name="set_contact_alias_hint">שם איש הקשר</string>
<string name="set_alias_button">שַׁנֵּה</string> <string name="set_alias_button">שַׁנֵּה</string>
<string name="delete_all_messages">מחק את כל ההודעות</string>
<string name="dialog_title_delete_all_messages">אשר מחיקת הודעה</string>
<string name="dialog_message_delete_all_messages">האם אתה בטוח שאתה רוצה למחוק את כל ההודעות?</string>
<string name="dialog_title_not_all_messages_deleted">לא היה ניתן למחוק את כל ההודעות</string>
<string name="dialog_message_not_all_messages_deleted">הודעות שקשורות אל היכרויות מתמשכות או הזמנות אינן יכולות להימחק עד שההיכרויות או ההזמנות יסוימו.</string>
<string name="delete_contact">מחק איש קשר</string> <string name="delete_contact">מחק איש קשר</string>
<string name="dialog_title_delete_contact">אשר מחיקת איש קשר</string> <string name="dialog_title_delete_contact">אשר מחיקת איש קשר</string>
<string name="dialog_message_delete_contact">האם אתה בטוח שאתה רוצה למחוק איש קשר זה ואת כל ההודעות שהוחלפו עם איש קשר זה?</string> <string name="dialog_message_delete_contact">האם אתה בטוח שאתה רוצה למחוק איש קשר זה ואת כל ההודעות שהוחלפו עם איש קשר זה?</string>
@@ -150,6 +157,7 @@
<string name="dialog_message_no_image_support">Briar של איש הקשר שלך אינו תומך בצרופות תמונה. ברגע שהוא ישדרג, תראה צלמית שונה.</string> <string name="dialog_message_no_image_support">Briar של איש הקשר שלך אינו תומך בצרופות תמונה. ברגע שהוא ישדרג, תראה צלמית שונה.</string>
<string name="dialog_title_image_support">אתה יכול כעת לשלוח תמונות אל איש קשר זה</string> <string name="dialog_title_image_support">אתה יכול כעת לשלוח תמונות אל איש קשר זה</string>
<string name="dialog_message_image_support">הקש על צלמית זו כדי לצרף תמונות.</string> <string name="dialog_message_image_support">הקש על צלמית זו כדי לצרף תמונות.</string>
<string name="messaging_too_many_attachments_toast">רק %d התמונות הראשונות יישלחו</string>
<!--Adding Contacts--> <!--Adding Contacts-->
<string name="add_contact_title">הוסף איש קשר בקרבה</string> <string name="add_contact_title">הוסף איש קשר בקרבה</string>
<string name="face_to_face">אתם חייבים להפגש עם האדם שאותו תרצו להוסיף כאיש קשר. <string name="face_to_face">אתם חייבים להפגש עם האדם שאותו תרצו להוסיף כאיש קשר.
@@ -193,13 +201,16 @@
<string name="pending_contact_requests">בקשות ממתינות של אנשי קשר</string> <string name="pending_contact_requests">בקשות ממתינות של אנשי קשר</string>
<string name="no_pending_contacts">אין בקשות ממתינות של אנשי קשר</string> <string name="no_pending_contacts">אין בקשות ממתינות של אנשי קשר</string>
<string name="add_contact_remote_connecting">מתחבר...</string> <string name="add_contact_remote_connecting">מתחבר...</string>
<string name="waiting_for_contact_to_come_online">ממתין אל איש הקשר שיהיה מקוון...\n\nהאם הוא הכניס כבר את הקישור?</string> <string name="waiting_for_contact_to_come_online">ממתין אל איש הקשר שיהיה מקוון...</string>
<string name="connecting">מתחבר...</string> <string name="connecting">מתחבר...</string>
<string name="adding_contact">מוסיף איש קשר...</string> <string name="adding_contact">מוסיף איש קשר...</string>
<string name="adding_contact_failed">הוספת איש קשר נכשלה</string> <string name="adding_contact_failed">הוספת איש קשר נכשלה</string>
<string name="dialog_title_remove_pending_contact">אשר הסרה</string>
<string name="dialog_message_remove_pending_contact">איש קשר זה מתווסף. אם תסיר אותו כעת, הוא לא יתווסף.</string>
<string name="own_link_error">הכנס את הקישור של איש הקשר שלך, לא את שלך</string> <string name="own_link_error">הכנס את הקישור של איש הקשר שלך, לא את שלך</string>
<string name="nickname_missing">אנא הכנס כינוי</string> <string name="nickname_missing">אנא הכנס כינוי</string>
<string name="invalid_link">קישור בלתי תקף</string> <string name="invalid_link">קישור בלתי תקף</string>
<string name="unsupported_link">קישור זה מגיע מגרסה חדשה יותר של Briar. אנא שדרג אל הגרסה האחרונה ונסה שוב.</string>
<string name="intent_own_link">פתחת את הקישור של עצמך. השתמש באחד של איש הקשר שאתה רוצה להוסיף!</string> <string name="intent_own_link">פתחת את הקישור של עצמך. השתמש באחד של איש הקשר שאתה רוצה להוסיף!</string>
<string name="missing_link">אנא הכנס קישור</string> <string name="missing_link">אנא הכנס קישור</string>
<!--This is a numeral indicating the first step in a series of screens--> <!--This is a numeral indicating the first step in a series of screens-->
@@ -212,6 +223,25 @@
<item quantity="many">%dאנשי קשר חדשים התווספו. </item> <item quantity="many">%dאנשי קשר חדשים התווספו. </item>
<item quantity="other">%d אנשי קשר חדשים התווספו.</item> <item quantity="other">%d אנשי קשר חדשים התווספו.</item>
</plurals> </plurals>
<string name="adding_contact_slow_warning">הוספת איש קשר זה לוקחת מעבר לזמן הרגיל</string>
<string name="adding_contact_slow_title">לא ניתן להתחבר אל איש קשר</string>
<string name="adding_contact_slow_text">הוספת איש קשר זה לוקחת מעבר לזמן הרגיל.\n\nאנא בדוק שאיש הקשר שלך קיבל את הקישור שלך ושהוא הוסיף אותך:</string>
<string name="offline_state">אין חיבור אינטרנט</string>
<string name="duplicate_link_dialog_title">קישור כפול</string>
<string name="duplicate_link_dialog_text_1">יש לך כבר איש קשר ממתין עם קישור זה: %s</string>
<string name="duplicate_link_dialog_text_1_contact">יש לך כבר איש קשר עם קישור זה: %s</string>
<!--This is a question asking whether two nicknames refer to the same person-->
<string name="duplicate_link_dialog_text_2">האם %s ו־%s הם אותו איש?</string>
<!--This is a button for answering that two nicknames do indeed refer to the same person. This
string will be used in a dialog button, so if the translation of this string is longer than 20
characters, please use "Yes" instead, and use "No" for the "Different Person" button-->
<string name="same_person_button">אותו איש</string>
<!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button-->
<string name="different_person_button">איש שונה</string>
<string name="duplicate_link_dialog_text_3">%s ו־%s שלחו לך את אותו הקישור.\n\nייתכן שאחד מהם מנסה לגלות מי הם אנשי הקשר שלך.\n\nאל תגיד לו שקיבלת את אותו הקישור ממישהו אחר.</string>
<string name="pending_contact_updated_toast">איש קשר ממתין עודכן</string>
<!--Introductions--> <!--Introductions-->
<string name="introduction_onboarding_title">הציגו את אנשי קשר שלכם</string> <string name="introduction_onboarding_title">הציגו את אנשי קשר שלכם</string>
<string name="introduction_onboarding_text">אתם יכולים להציג את אנשי הקשר שלכם אחד לשני, כך שהם לא צריכים להפגש פנים-מול-פנים על מנת להתחבר בבריאר.</string> <string name="introduction_onboarding_text">אתם יכולים להציג את אנשי הקשר שלכם אחד לשני, כך שהם לא צריכים להפגש פנים-מול-פנים על מנת להתחבר בבריאר.</string>

View File

@@ -119,6 +119,8 @@
<string name="image_caption_hint">एक कैप्शन जोड़ें (वैकल्पिक)</string> <string name="image_caption_hint">एक कैप्शन जोड़ें (वैकल्पिक)</string>
<string name="image_attach">छवि संलग्न करें</string> <string name="image_attach">छवि संलग्न करें</string>
<string name="image_attach_error">छवि संलग्न नहीं कर सका</string> <string name="image_attach_error">छवि संलग्न नहीं कर सका</string>
<string name="image_attach_error_too_big">छवि बहुत बड़ी है। सीमा %d एमबी है।</string>
<string name="image_attach_error_invalid_mime_type">छवि प्रारूप असमर्थित: %s</string>
<string name="set_contact_alias">संपर्क नाम बदलें</string> <string name="set_contact_alias">संपर्क नाम बदलें</string>
<string name="set_contact_alias_hint">संपर्क नाम</string> <string name="set_contact_alias_hint">संपर्क नाम</string>
<string name="set_alias_button">परिवर्तन</string> <string name="set_alias_button">परिवर्तन</string>
@@ -138,6 +140,7 @@
<string name="dialog_title_image_support">अब आप इस संपर्क को चित्र भेज सकते हैं</string> <string name="dialog_title_image_support">अब आप इस संपर्क को चित्र भेज सकते हैं</string>
<string name="dialog_message_image_support">छवियों को संलग्न करने के लिए इस प्रतिकृति को दबायें।</string> <string name="dialog_message_image_support">छवियों को संलग्न करने के लिए इस प्रतिकृति को दबायें।</string>
<!--Adding Contacts--> <!--Adding Contacts-->
<string name="add_contact_title">आस-पास वाले संपर्क जोड़ें</string>
<string name="face_to_face">आपको उस व्यक्ति के साथ मिलना चाहिए जिसे आप संपर्क के रूप में जोड़ना चाहते हैं। \ N \ n यह किसी को भविष्य में आपके प्रतिरूपण या पढ़ने के बाद से किसी को भी रोकेगा।</string> <string name="face_to_face">आपको उस व्यक्ति के साथ मिलना चाहिए जिसे आप संपर्क के रूप में जोड़ना चाहते हैं। \ N \ n यह किसी को भविष्य में आपके प्रतिरूपण या पढ़ने के बाद से किसी को भी रोकेगा।</string>
<string name="continue_button">जारी रहना</string> <string name="continue_button">जारी रहना</string>
<string name="try_again_button">पुनः प्रयास करें</string> <string name="try_again_button">पुनः प्रयास करें</string>
@@ -155,11 +158,66 @@
<string name="connection_error_explanation">कृपया जांचें कि आप दोनों एक ही वाई-फाई नेटवर्क से जुड़े हुए हैं।</string> <string name="connection_error_explanation">कृपया जांचें कि आप दोनों एक ही वाई-फाई नेटवर्क से जुड़े हुए हैं।</string>
<string name="connection_error_feedback">यदि यह समस्या बनी रहती है, तो कृपया ऐप को बेहतर बनाने में हमारी सहायता के लिए <a href="feedback">फ़ीडबैक भेजें</a></string> <string name="connection_error_feedback">यदि यह समस्या बनी रहती है, तो कृपया ऐप को बेहतर बनाने में हमारी सहायता के लिए <a href="feedback">फ़ीडबैक भेजें</a></string>
<!--Adding Contacts Remotely--> <!--Adding Contacts Remotely-->
<string name="add_contact_remotely_title_case">दूरी वाले संपर्क जोड़ें</string>
<string name="add_contact_nearby_title">आस-पास वाले संपर्क जोड़ें</string>
<string name="add_contact_remotely_title">दूरी वाले संपर्क जोड़ें</string>
<string name="contact_name_hint">संपर्क को एक उपनाम दें</string>
<string name="contact_link_intro">यहां अपने संपर्क से लिंक दर्ज करें</string>
<string name="contact_link_hint">संपर्क का लिंक</string>
<string name="paste_button">चिपकाएं</string>
<string name="add_contact_button">संपर्क जोड़ें</string>
<string name="copy_button">प्रतिलिपि बनाएं</string>
<string name="share_button">शेयर</string> <string name="share_button">शेयर</string>
<string name="send_link_title">लिंक अदला बदली करें</string>
<string name="add_contact_choose_nickname">उपनाम चुने</string>
<string name="add_contact_choose_a_nickname">एक उपनाम दर्ज करें</string>
<string name="nickname_intro">अपने संपर्क को एक उपनाम दें। केवल आप इसे देख सकते हैं।</string>
<string name="your_link">आप जिस संपर्क को जोड़ना चाहते हैं, उसे यह लिंक दें</string>
<string name="link_clip_label">Briar लिंक</string>
<string name="link_copied_toast">लिंक कॉपी किया गया</string>
<string name="adding_contact_error">संपर्क जोड़ने में त्रुटि हुई।</string>
<string name="pending_contact_requests_snackbar">संपर्क अनुरोध लंबित हैं</string>
<string name="pending_contact_requests">लंबित संपर्क अनुरोध</string>
<string name="no_pending_contacts">कोई लंबित संपर्क नहीं</string>
<string name="add_contact_remote_connecting">कनेक्ट हो रहा है ...</string> <string name="add_contact_remote_connecting">कनेक्ट हो रहा है ...</string>
<string name="waiting_for_contact_to_come_online">संपर्क की ऑनलाइन आने की प्रतीक्षा की जा रही है...</string>
<string name="connecting">कनेक्ट हो रहा है ...</string> <string name="connecting">कनेक्ट हो रहा है ...</string>
<string name="adding_contact">संपर्क जोड़ रहा है ...</string>
<string name="adding_contact_failed">संपर्क जोड़ना विफल रहा</string>
<string name="dialog_title_remove_pending_contact">हटाने की पुष्टि करें</string>
<string name="dialog_message_remove_pending_contact">यह संपर्क अभी भी जोड़ा जा रहा है। यदि आप इसे अभी हटाते हैं, तो इसे जोड़ा नहीं जाएगा।</string>
<string name="own_link_error">अपना संपर्क का लिंक दर्ज करें, अपना नहीं</string>
<string name="nickname_missing">कृपया एक उपनाम दर्ज करें</string>
<string name="invalid_link">अमान्य लिंक</string>
<string name="unsupported_link">यह लिंक Briar के नए संस्करण से आया है। कृपया नवीनतम संस्करण में अद्यतन करें और पुनः प्रयास करें।</string>
<string name="intent_own_link">आपने अपना लिंक खोला। उस संपर्क का उपयोग करें जिसे आप जोड़ना चाहते हैं!</string>
<string name="missing_link">कृपया एक लिंक डालें।</string>
<!--This is a numeral indicating the first step in a series of screens--> <!--This is a numeral indicating the first step in a series of screens-->
<string name="step_1">1</string>
<!--This is a numeral indicating the second step in a series of screens--> <!--This is a numeral indicating the second step in a series of screens-->
<string name="step_2">2</string>
<plurals name="contact_added_notification_text">
<item quantity="one">नया संपर्क जोड़ा गया|</item>
<item quantity="other">%d नए संपर्क जोड़े गए</item>
</plurals>
<string name="adding_contact_slow_warning">इस संपर्क को जोड़ने में सामान्य से अधिक समय लग रहा है</string>
<string name="adding_contact_slow_title">संपर्क से जुड़ नहीं कर सकता</string>
<string name="adding_contact_slow_text">इस संपर्क को जोड़ने में सामान्य से अधिक समय लग रहा है। \n\n कृपया जांचें कि आपके संपर्क ने आपका लिंक प्राप्त कर लिया है और आपको जोड़ दिया है:</string>
<string name="offline_state">कोई इंटरनेट कनेक्शन नहीं</string>
<string name="duplicate_link_dialog_title">प्रतिलिपि लिंक</string>
<string name="duplicate_link_dialog_text_1">आपके पास इस लिंक के साथ पहले से ही एक लंबित संपर्क है: %s</string>
<!--This is a question asking whether two nicknames refer to the same person-->
<string name="duplicate_link_dialog_text_2">क्या %s और %s एक ही व्यक्ति हैं?</string>
<!--This is a button for answering that two nicknames do indeed refer to the same person. This
string will be used in a dialog button, so if the translation of this string is longer than 20
characters, please use "Yes" instead, and use "No" for the "Different Person" button-->
<string name="same_person_button">वही आदमी</string>
<!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button-->
<string name="different_person_button">अलग व्यक्ति</string>
<string name="duplicate_link_dialog_text_3">%s और %s ने एक ही लिंक भेजा है। \n\n और उनमें से कोई भी यह जानने की कोशिश कर सकता है कि आपके संपर्क कौन हैं। \n\n उन्हें यह न बताएं कि आपको वही लिंक किसी और से मिला है।</string>
<string name="pending_contact_updated_toast">लंबित संपर्क अपडेट किया गया</string>
<!--Introductions--> <!--Introductions-->
<string name="introduction_onboarding_title">अपने संपर्कों का परिचय दें</string> <string name="introduction_onboarding_title">अपने संपर्कों का परिचय दें</string>
<string name="introduction_onboarding_text">आप अपने संपर्कों को एक दूसरे से जोड़ सकते हैं, इसलिए उन्हें Briar से जुड़ने के लिए व्यक्तिगत रूप से मिलने की जरूरत नहीं है।</string> <string name="introduction_onboarding_text">आप अपने संपर्कों को एक दूसरे से जोड़ सकते हैं, इसलिए उन्हें Briar से जुड़ने के लिए व्यक्तिगत रूप से मिलने की जरूरत नहीं है।</string>

View File

@@ -116,14 +116,37 @@
<string name="date_no_private_messages">Nincs üzenet.</string> <string name="date_no_private_messages">Nincs üzenet.</string>
<string name="no_private_messages">Nincs megjeleníthető üzenet</string> <string name="no_private_messages">Nincs megjeleníthető üzenet</string>
<string name="message_hint">Üzenet írása</string> <string name="message_hint">Üzenet írása</string>
<string name="image_caption_hint">Felirat hozzáadása (opcionális)</string>
<string name="image_attach">Kép csatolása</string>
<string name="image_attach_error">Nem sikerült a kép(ek) csatolása</string>
<string name="image_attach_error_too_big">A kép túl nagy. A korlát: %d MB.</string>
<string name="image_attach_error_invalid_mime_type">Képformátum nem támogatott: %s</string>
<string name="set_contact_alias">Kapcsolat nevének megváltoztatása</string>
<string name="set_contact_alias_hint">Kapcsolat neve</string>
<string name="set_alias_button">Módosítás</string> <string name="set_alias_button">Módosítás</string>
<string name="delete_all_messages">Minden üzenet törlése</string>
<string name="dialog_title_delete_all_messages">Üzenet törlés megerősítése</string>
<string name="dialog_message_delete_all_messages">Biztos, hogy szeretné törölni összes üzenetét?</string>
<string name="dialog_title_not_all_messages_deleted">Nem törölhető minden üzenet</string>
<string name="dialog_message_not_all_messages_deleted">Azok az üzenetek amik kimenő bemutatkozások vagy meghívások nem törölhetők, míg be nem fejeződnek.</string>
<string name="delete_contact">Kapcsolat törlése</string> <string name="delete_contact">Kapcsolat törlése</string>
<string name="dialog_title_delete_contact">Kapcsolat törlésének megerősítése</string> <string name="dialog_title_delete_contact">Kapcsolat törlésének megerősítése</string>
<string name="dialog_message_delete_contact">Biztosan eltávolítja ezt a kapcsolatot és minden vele történt üzenetváltását?</string> <string name="dialog_message_delete_contact">Biztosan eltávolítja ezt a kapcsolatot és minden vele történt üzenetváltását?</string>
<string name="contact_deleted_toast">Kapcsolat törölve</string> <string name="contact_deleted_toast">Kapcsolat törölve</string>
<!--This is shown in the action bar when opening an image in fullscreen that the user sent--> <!--This is shown in the action bar when opening an image in fullscreen that the user sent-->
<string name="you">Te</string> <string name="you">Ön</string>
<string name="save_image">Kép mentése</string>
<string name="dialog_title_save_image">Kép mentése?</string>
<string name="dialog_message_save_image">A kép mentése lehetővé teszi, hogy más alkalmazások is elérjék.\n\nBiztosan szeretné menteni?</string>
<string name="save_image_success">Kép mentve</string>
<string name="save_image_error">Sikertelen kép mentés</string>
<string name="dialog_title_no_image_support">Képek nem elérhetők</string>
<string name="dialog_message_no_image_support">A Briar kapcsolata nem támogatja a kép csatolmányokat. Ha frissített, akkor más ikont fog látni.</string>
<string name="dialog_title_image_support">Most már küldhet képeket a kapcsolatainak</string>
<string name="dialog_message_image_support">Érintse meg az ikont képek csatolásához.</string>
<string name="messaging_too_many_attachments_toast">Csak az első %d kép kerül küldésre</string>
<!--Adding Contacts--> <!--Adding Contacts-->
<string name="add_contact_title">Közeli kontakt hozzáadása</string>
<string name="face_to_face">Találkoznia kell a személlyel akit, hozzá szeretne adni a kapcsolatokhoz.\n\nEz megelőzi azt, hogy valaki megszemélyesítse Önt, vagy elolvassa későbbi üzeneteit.</string> <string name="face_to_face">Találkoznia kell a személlyel akit, hozzá szeretne adni a kapcsolatokhoz.\n\nEz megelőzi azt, hogy valaki megszemélyesítse Önt, vagy elolvassa későbbi üzeneteit.</string>
<string name="continue_button">Folytatás</string> <string name="continue_button">Folytatás</string>
<string name="try_again_button">Újrapróbálkozás</string> <string name="try_again_button">Újrapróbálkozás</string>
@@ -141,15 +164,68 @@
<string name="connection_error_explanation">Ellenőrizzék, hogy mindketten ugyanahhoz a Wi-Fi hálózathoz vannak-e csatlakozva.</string> <string name="connection_error_explanation">Ellenőrizzék, hogy mindketten ugyanahhoz a Wi-Fi hálózathoz vannak-e csatlakozva.</string>
<string name="connection_error_feedback">Ha ez a probléma tartósan fennáll, kérjük <a href="feedback"> küldjön visszajelzést </a> nekünk, hogy segítsen fejleszteni az appot.</string> <string name="connection_error_feedback">Ha ez a probléma tartósan fennáll, kérjük <a href="feedback"> küldjön visszajelzést </a> nekünk, hogy segítsen fejleszteni az appot.</string>
<!--Adding Contacts Remotely--> <!--Adding Contacts Remotely-->
<string name="add_contact_remotely_title_case">Távoli kapcsolat hozzá adása</string>
<string name="add_contact_nearby_title">Közeli kapcsolat hozzáadása</string>
<string name="add_contact_remotely_title">Távoli kapcsolat hozzá adása</string>
<string name="contact_name_hint">Adjon a kapcsolatnak becenevet</string>
<string name="contact_link_intro">Írj a be a linket a kapcsolatától ide</string>
<string name="contact_link_hint">Kapcsolat linkje</string>
<string name="paste_button">Beilleszt</string> <string name="paste_button">Beilleszt</string>
<string name="add_contact_button">Kapcsolat hozzáadása</string>
<string name="copy_button">Másol</string> <string name="copy_button">Másol</string>
<string name="share_button">Megoszt</string> <string name="share_button">Megoszt</string>
<string name="send_link_title">Linkek cseréje</string>
<string name="add_contact_choose_nickname">Becenév választása</string>
<string name="add_contact_choose_a_nickname">Becenév megadása</string>
<string name="nickname_intro">Adja meg a kontakt becenevét. Csak ön láthatja.</string>
<string name="your_link">Adja oda ezt a linket annak a kapcsolatának, akit hozzá szeretne adni</string>
<string name="link_clip_label">Briar link</string>
<string name="link_copied_toast">Link másolva</string>
<string name="adding_contact_error">Hiba történt a kapcsolat hozzáadásakor.</string>
<string name="pending_contact_requests_snackbar">Vannak még folyamatban lévő kérelmek</string>
<string name="pending_contact_requests">Folyamatban lévő kapcsolati kérelmek</string>
<string name="no_pending_contacts">Nincs várakozó kapcsolat</string>
<string name="add_contact_remote_connecting">Csatlakozás...</string> <string name="add_contact_remote_connecting">Csatlakozás...</string>
<string name="waiting_for_contact_to_come_online">Várakozás a kapcsolatra, hogy online legyen...</string>
<string name="connecting">Csatlakozás...</string> <string name="connecting">Csatlakozás...</string>
<string name="adding_contact">Kapcsolat hozzáadása...</string>
<string name="adding_contact_failed">Kapcsolat hozzáadása sikertelen</string>
<string name="dialog_title_remove_pending_contact">Eltávolítás megerősítése</string>
<string name="dialog_message_remove_pending_contact">A kapcsolat még hozzáadás alatt. Ha törli, akkor nem kerül hozzá adásra.</string>
<string name="own_link_error">A kapcsolata linkjét adja meg, ne a sajátját</string>
<string name="nickname_missing">Kérjük adjon meg becenevet</string>
<string name="invalid_link">Érvénytelen link</string>
<string name="unsupported_link">Ez a link a Briar újabb verziójából származik.
Kérjük frissítsen a legutolsó verzióra és próbálja újra.</string>
<string name="intent_own_link">A saját linkjét nyitotta meg. Használja a kapcsolatától kapottat a hozzáadáshoz!</string>
<string name="missing_link">Kérjük adja meg a linket</string>
<!--This is a numeral indicating the first step in a series of screens--> <!--This is a numeral indicating the first step in a series of screens-->
<string name="step_1">1</string> <string name="step_1">1</string>
<!--This is a numeral indicating the second step in a series of screens--> <!--This is a numeral indicating the second step in a series of screens-->
<string name="step_2">2</string> <string name="step_2">2</string>
<plurals name="contact_added_notification_text">
<item quantity="one">Új kapcsolat hozzáadva.</item>
<item quantity="other">%d új kapcsolat hozzáadva</item>
</plurals>
<string name="adding_contact_slow_warning">Ennek a kapcsolatnak a hozzáadása a szokásosnál tovább tart</string>
<string name="adding_contact_slow_title">Sikertelen csatlakozás a kapcsolathoz</string>
<string name="adding_contact_slow_text">Ennek a kapcsolatnak a hozzáadása tovább tart, mint általában.\n\nKérjük ellenőrizze, hogy a kapcsolata megkapta-e a linket és hozzáadta-e Önt:</string>
<string name="offline_state">Nincs internet kapcsolat</string>
<string name="duplicate_link_dialog_title">Duplikált link</string>
<string name="duplicate_link_dialog_text_1">Önnek már van várakozó kapcsolata ezzel a linkkel: %s</string>
<string name="duplicate_link_dialog_text_1_contact">Önnek már van kapcsolata ezzel a linkkel: %s</string>
<!--This is a question asking whether two nicknames refer to the same person-->
<string name="duplicate_link_dialog_text_2">%s és %s ugyanaz a személy?</string>
<!--This is a button for answering that two nicknames do indeed refer to the same person. This
string will be used in a dialog button, so if the translation of this string is longer than 20
characters, please use "Yes" instead, and use "No" for the "Different Person" button-->
<string name="same_person_button">Ugyanaz a személy</string>
<!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button-->
<string name="different_person_button">Másik személy</string>
<string name="duplicate_link_dialog_text_3">%s és %s ugyanazt a linket küldte.\n\nEgyikük lehet, hogy megpróbálja kikutatni, hogy kik a kapcsolatai.\n\nNe árulja el nekik, hogy ugyanazt a linket már megkapta mástól.</string>
<string name="pending_contact_updated_toast">Várakozó kapcsolat frissítve</string>
<!--Introductions--> <!--Introductions-->
<string name="introduction_onboarding_title">Kapcsolatai bemutatása</string> <string name="introduction_onboarding_title">Kapcsolatai bemutatása</string>
<string name="introduction_onboarding_text">Bemutathatja kapcsolatait egymásnak, így nem szükséges, hogy találkozzanak személyesen, hogy kapcsolódhassanak a Briar-on.</string> <string name="introduction_onboarding_text">Bemutathatja kapcsolatait egymásnak, így nem szükséges, hogy találkozzanak személyesen, hogy kapcsolódhassanak a Briar-on.</string>
@@ -347,6 +423,8 @@
<!--How and when Tor will connect after Automatic: E.g. Don't connect (in China) or Use Tor with bridges (in Belarus)--> <!--How and when Tor will connect after Automatic: E.g. Don't connect (in China) or Use Tor with bridges (in Belarus)-->
<string name="tor_network_setting_summary">Automatikus: %1$s ( %2$s)</string> <string name="tor_network_setting_summary">Automatikus: %1$s ( %2$s)</string>
<string name="tor_mobile_data_title">Mobil adat használata</string> <string name="tor_mobile_data_title">Mobil adat használata</string>
<string name="tor_only_when_charging_title">Csatlakozás az internethez Tor-ral, töltés alatt</string>
<string name="tor_only_when_charging_summary">Letiltja az internet kapcsolatot, amikor elemről fut az eszköz</string>
<!--Settings Security and Panic--> <!--Settings Security and Panic-->
<string name="security_settings_title">Biztonság</string> <string name="security_settings_title">Biztonság</string>
<string name="pref_lock_title">App zár</string> <string name="pref_lock_title">App zár</string>
@@ -417,6 +495,7 @@ Vigyázat: Ez végleg törli az identitásait, kapcsolatait és üzeneteit</stri
<!--Link Warning--> <!--Link Warning-->
<string name="link_warning_title">Link figyelmeztetés</string> <string name="link_warning_title">Link figyelmeztetés</string>
<string name="link_warning_intro">Épp megnyit egy linket egy külső alkalmazással.</string> <string name="link_warning_intro">Épp megnyit egy linket egy külső alkalmazással.</string>
<string name="link_warning_text">Ez tudja azonosítani Önt. Gondolkodjon el arról, hogy megbízik-e a személyben, aki a linket küldte és nyissa meg azt a Tor böngészőben.</string>
<string name="link_warning_open_link">Link megnyitása</string> <string name="link_warning_open_link">Link megnyitása</string>
<!--Crash Reporter--> <!--Crash Reporter-->
<string name="crash_report_title">Briar összeomlási jelentés</string> <string name="crash_report_title">Briar összeomlási jelentés</string>

View File

@@ -118,9 +118,11 @@
<string name="message_hint">Skrifaðu skilaboð</string> <string name="message_hint">Skrifaðu skilaboð</string>
<string name="image_caption_hint">Bæta við fyrirsögn (valfrjálst)</string> <string name="image_caption_hint">Bæta við fyrirsögn (valfrjálst)</string>
<string name="image_attach">Hengja við mynd</string> <string name="image_attach">Hengja við mynd</string>
<string name="image_attach_error">Gat ekki hengt við mynd(ir)</string>
<string name="set_contact_alias">Breyta nafni tengiliðar</string> <string name="set_contact_alias">Breyta nafni tengiliðar</string>
<string name="set_contact_alias_hint">Nafn tengiliðar</string> <string name="set_contact_alias_hint">Nafn tengiliðar</string>
<string name="set_alias_button">Breyta</string> <string name="set_alias_button">Breyta</string>
<string name="dialog_title_not_all_messages_deleted">Gat ekki eytt öllum skilaboðum</string>
<string name="delete_contact">Eyða tengilið</string> <string name="delete_contact">Eyða tengilið</string>
<string name="dialog_title_delete_contact">Staðfesta eyðingu tengiliðar</string> <string name="dialog_title_delete_contact">Staðfesta eyðingu tengiliðar</string>
<string name="dialog_message_delete_contact">Ertu viss að þú viljir fjarlægja þennan tengilið ásamt öllum þeim skilaboðum sem ykkur hafa farið á milli?</string> <string name="dialog_message_delete_contact">Ertu viss að þú viljir fjarlægja þennan tengilið ásamt öllum þeim skilaboðum sem ykkur hafa farið á milli?</string>

View File

@@ -118,10 +118,17 @@
<string name="message_hint">Scrivi un messaggio</string> <string name="message_hint">Scrivi un messaggio</string>
<string name="image_caption_hint">Aggiungi una didascalia (facoltativo)</string> <string name="image_caption_hint">Aggiungi una didascalia (facoltativo)</string>
<string name="image_attach">Allega immagine</string> <string name="image_attach">Allega immagine</string>
<string name="image_attach_error">Non è stato possibile allegare l\'immagine</string> <string name="image_attach_error">Impossibile allegare l\'immagine/i</string>
<string name="image_attach_error_too_big">Immagine troppo grande. Il limite è di %d MB.</string>
<string name="image_attach_error_invalid_mime_type">Formato immagine non supportato: %s</string>
<string name="set_contact_alias">Cambia il nome del contatto</string> <string name="set_contact_alias">Cambia il nome del contatto</string>
<string name="set_contact_alias_hint">Nome contatto</string> <string name="set_contact_alias_hint">Nome contatto</string>
<string name="set_alias_button">Cambia</string> <string name="set_alias_button">Cambia</string>
<string name="delete_all_messages">Elimina tutti i messaggi</string>
<string name="dialog_title_delete_all_messages">Conferma l\'eliminazione dei messaggi</string>
<string name="dialog_message_delete_all_messages">Sei sicuro di voler eliminare tutti i messaggi?</string>
<string name="dialog_title_not_all_messages_deleted">Impossibile eliminare i messaggi</string>
<string name="dialog_message_not_all_messages_deleted">I messaggi relativi a presentazioni o inviti in corso non posssono essere eliminati fino alla loro conclusione.</string>
<string name="delete_contact">Elimina contatto</string> <string name="delete_contact">Elimina contatto</string>
<string name="dialog_title_delete_contact">Conferma cancellazione contatto</string> <string name="dialog_title_delete_contact">Conferma cancellazione contatto</string>
<string name="dialog_message_delete_contact">Sei sicuro di voler rimuovere questo contatto e tutti i messaggi scambiati con esso?</string> <string name="dialog_message_delete_contact">Sei sicuro di voler rimuovere questo contatto e tutti i messaggi scambiati con esso?</string>
@@ -137,8 +144,9 @@
<string name="dialog_message_no_image_support">Il Briar del tuo contatto non supporta ancora le immagini in allegato. Quando avrà aggiornato vedrai un\'icona diversa.</string> <string name="dialog_message_no_image_support">Il Briar del tuo contatto non supporta ancora le immagini in allegato. Quando avrà aggiornato vedrai un\'icona diversa.</string>
<string name="dialog_title_image_support">Ora puoi inviare immagini a questo contatto</string> <string name="dialog_title_image_support">Ora puoi inviare immagini a questo contatto</string>
<string name="dialog_message_image_support">Tocca questa icona per allegare immagini.</string> <string name="dialog_message_image_support">Tocca questa icona per allegare immagini.</string>
<string name="messaging_too_many_attachments_toast">Verranno inviate solo le prime %d immagini</string>
<!--Adding Contacts--> <!--Adding Contacts-->
<string name="add_contact_title">Aggiungi contatto vicino</string> <string name="add_contact_title">Aggiungi contatti vicino</string>
<string name="face_to_face">Devi incontrarti con la persona che vuoi aggiungere come contatto.\n\nQuesto evita che qualcuno ti impersoni o legga i tuoi messaggi in futuro.</string> <string name="face_to_face">Devi incontrarti con la persona che vuoi aggiungere come contatto.\n\nQuesto evita che qualcuno ti impersoni o legga i tuoi messaggi in futuro.</string>
<string name="continue_button">Continua</string> <string name="continue_button">Continua</string>
<string name="try_again_button">Riprova</string> <string name="try_again_button">Riprova</string>
@@ -160,7 +168,7 @@
<string name="add_contact_nearby_title">Aggiungi contatto vicino</string> <string name="add_contact_nearby_title">Aggiungi contatto vicino</string>
<string name="add_contact_remotely_title">Aggiungi contatto distante</string> <string name="add_contact_remotely_title">Aggiungi contatto distante</string>
<string name="contact_name_hint">Dai un nickname al contatto</string> <string name="contact_name_hint">Dai un nickname al contatto</string>
<string name="contact_link_intro">Inserisci il link dal tuo contatto qui</string> <string name="contact_link_intro">Inserisci qui il link dal tuo contatto</string>
<string name="contact_link_hint">Link del contatto</string> <string name="contact_link_hint">Link del contatto</string>
<string name="paste_button">Incolla</string> <string name="paste_button">Incolla</string>
<string name="add_contact_button">Aggiungi contatto</string> <string name="add_contact_button">Aggiungi contatto</string>
@@ -178,13 +186,16 @@
<string name="pending_contact_requests">Richieste di contatto in attesa</string> <string name="pending_contact_requests">Richieste di contatto in attesa</string>
<string name="no_pending_contacts">Nessun contatto in attesa</string> <string name="no_pending_contacts">Nessun contatto in attesa</string>
<string name="add_contact_remote_connecting">Connessione in corso...</string> <string name="add_contact_remote_connecting">Connessione in corso...</string>
<string name="waiting_for_contact_to_come_online">In attesa che il contatto sia in linea…\n\nHa già inserito il tuo link?</string> <string name="waiting_for_contact_to_come_online">In attesa che il contatto sia in linea...</string>
<string name="connecting">Connessione in corso...</string> <string name="connecting">Connessione in corso...</string>
<string name="adding_contact">Aggiunta contatto…</string> <string name="adding_contact">Aggiunta contatto…</string>
<string name="adding_contact_failed">Aggiunta del contatto fallita</string> <string name="adding_contact_failed">Aggiunta del contatto fallita</string>
<string name="dialog_title_remove_pending_contact">Conferma la rimozione</string>
<string name="dialog_message_remove_pending_contact">Questo contatto sta ancora per essere aggiunto. Se lo rimuovi ora, non verrà aggiunto.</string>
<string name="own_link_error">Inserisci il link del contatto, non il tuo</string> <string name="own_link_error">Inserisci il link del contatto, non il tuo</string>
<string name="nickname_missing">Inserisci un nickname</string> <string name="nickname_missing">Inserisci un nickname</string>
<string name="invalid_link">Link non valido</string> <string name="invalid_link">Link non valido</string>
<string name="unsupported_link">Questo collegamento viene da una versione più recente di Briar. Aggiorna all\'ultima versione e riprova.</string>
<string name="intent_own_link">Hai aperto il tuo stesso link. Usa quello del contatto che vuoi aggiungere!</string> <string name="intent_own_link">Hai aperto il tuo stesso link. Usa quello del contatto che vuoi aggiungere!</string>
<string name="missing_link">Inserisci un link</string> <string name="missing_link">Inserisci un link</string>
<!--This is a numeral indicating the first step in a series of screens--> <!--This is a numeral indicating the first step in a series of screens-->
@@ -195,6 +206,25 @@
<item quantity="one">Nuovo contatto aggiunto.</item> <item quantity="one">Nuovo contatto aggiunto.</item>
<item quantity="other">%d nuovi contatti aggiunti.</item> <item quantity="other">%d nuovi contatti aggiunti.</item>
</plurals> </plurals>
<string name="adding_contact_slow_warning">L\'aggiunta di questo contatto sta impiegando più tempo del solito</string>
<string name="adding_contact_slow_title">Impossibile connettersi al contatto</string>
<string name="adding_contact_slow_text">L\'aggiunta di questo contatto sta impiegando più tempo del solito.\n\nControlla che il tuo contatto abbia ricevuto il tuo link e ti abbia aggiunto:</string>
<string name="offline_state">Nessuna connessione internet</string>
<string name="duplicate_link_dialog_title">Duplica il link</string>
<string name="duplicate_link_dialog_text_1">Hai già un contatto in attesa con questo link: %s</string>
<string name="duplicate_link_dialog_text_1_contact">Hai già un contatto con questo link: %s</string>
<!--This is a question asking whether two nicknames refer to the same person-->
<string name="duplicate_link_dialog_text_2">%s e %s sono la stessa persona?</string>
<!--This is a button for answering that two nicknames do indeed refer to the same person. This
string will be used in a dialog button, so if the translation of this string is longer than 20
characters, please use "Yes" instead, and use "No" for the "Different Person" button-->
<string name="same_person_button">Stessa persona</string>
<!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button-->
<string name="different_person_button">Persone diverse</string>
<string name="duplicate_link_dialog_text_3">%s e %s ti hanno inviato lo stesso link.\n\nUno dei due potrebbe tentare di scoprire chi sono i tuoi contatti.\n\nNon dirgli che hai ricevuto lo stesso link da qualcun altro.</string>
<string name="pending_contact_updated_toast">Contatto in attesa aggiornato</string>
<!--Introductions--> <!--Introductions-->
<string name="introduction_onboarding_title">Introduzione tuoi contatti</string> <string name="introduction_onboarding_title">Introduzione tuoi contatti</string>
<string name="introduction_onboarding_text">Puoi presentare i tuoi contatti fra di loro, così non hanno bisogno di incontrarsi di persona per connettersi a Briar.</string> <string name="introduction_onboarding_text">Puoi presentare i tuoi contatti fra di loro, così non hanno bisogno di incontrarsi di persona per connettersi a Briar.</string>

View File

@@ -1,12 +1,15 @@
<?xml version='1.0' encoding='UTF-8'?> <?xml version='1.0' encoding='UTF-8'?>
<resources> <resources xmlns:tools="http://schemas.android.com/tools">
<!--Setup--> <!--Setup-->
<string name="setup_title">Briarへようこそ</string> <string name="setup_title">Briarへようこそ</string>
<string name="setup_name_explanation">あなたのニックネームは、常に、あなたが投稿するコンテンツとともに表示されます。プロフィール作成後編集はできません。</string> <string name="setup_name_explanation">あなたのニックネームは、常に、あなたが投稿するコンテンツとともに表示されます。プロフィール作成後編集はできません。</string>
<string name="setup_next">次へ</string> <string name="setup_next">次へ</string>
<string name="setup_password_intro">パスワードを選択</string> <string name="setup_password_intro">パスワードを選択</string>
<string name="setup_password_explanation">Briarのアカウント情報はクラウドではなく、暗号化され端末に保存されます。アプリのアンインストールやパスワードの紛失をした場合、アカウントへのアクセスとデータを回復する手段はありません。推測するのが難しい、長いパスワードを設定してください。ランダムな4単語やランダムな10文字などです。</string> <string name="setup_password_explanation">Briarのアカウント情報はクラウドではなく、暗号化され端末に保存されます。アプリのアンインストールやパスワードの紛失をした場合、アカウントへのアクセスとデータを回復する手段はありません。\n\n推測するのが難しい、長いパスワードを設定してください。ランダムな4単語やランダムな10文字と数字と記号を組み合わせたものなどです。</string>
<string name="setup_doze_title">バックグラウンド接続</string> <string name="setup_doze_title">バックグラウンド接続</string>
<string name="setup_doze_intro">メッセージを受信するには、Briarはバックグラウンドで接続を維持する必要があります。</string>
<string name="setup_doze_explanation">メッセージを受信するには、Briarはバックグラウンドで接続を維持する必要があります。 Briarが接続を維持できるように、バッテリーの最適化を無効にしてください。</string>
<string name="setup_doze_button">接続を許可</string>
<string name="choose_nickname">ニックネームを入力</string> <string name="choose_nickname">ニックネームを入力</string>
<string name="choose_password">パスワードを入力</string> <string name="choose_password">パスワードを入力</string>
<string name="confirm_password">確認のため再度パスワードを入力</string> <string name="confirm_password">確認のため再度パスワードを入力</string>
@@ -14,33 +17,57 @@
<string name="password_too_weak">パスワードが弱すぎます。</string> <string name="password_too_weak">パスワードが弱すぎます。</string>
<string name="passwords_do_not_match">パスワードが一致しません。</string> <string name="passwords_do_not_match">パスワードが一致しません。</string>
<string name="create_account_button">アカウントを作成</string> <string name="create_account_button">アカウントを作成</string>
<string name="more_info">詳細情報</string>
<string name="don_t_ask_again">次からはたずねない</string>
<string name="setup_huawei_text">下のボタンをタップして、「保護されたアプリ」画面でBriarが保護されていることを確認してください。</string>
<string name="setup_huawei_button">Briarを保護</string>
<string name="setup_huawei_help">Briarが保護されたアプリのリストに追加されていない場合、Briarはバックグラウンドで実行することができません。</string>
<string name="warning_dozed">%sはバックグラウンドで実行することができませんでした</string>
<!--Login--> <!--Login-->
<string name="enter_password">パスワード</string> <string name="enter_password">パスワード</string>
<string name="try_again">パスワードが間違っています。もう一度入力してください。</string> <string name="try_again">パスワードが間違っています。もう一度入力してください。</string>
<string name="sign_in_button">Sign In</string> <string name="sign_in_button">サインイン</string>
<string name="forgotten_password">パスワードを忘れました。</string> <string name="forgotten_password">パスワードを忘れました。</string>
<string name="dialog_title_lost_password">パスワードを紛失</string> <string name="dialog_title_lost_password">パスワードを紛失</string>
<string name="dialog_message_lost_password">あなたのBriarアカウントはクラウド上ではなく、暗号化さた上であなたのデバイスに保存さています。したがってBriarはパスワードをリセットできません。アカウントを削除しはじめからやりなおしますか注意あなたのID、連絡先、メッセージは永久に削除されます</string> <string name="dialog_message_lost_password">あなたのBriarアカウントはクラウド上ではなく、暗号化さた上であなたのデバイスに保存さています。したがってBriarはパスワードをリセットできません。アカウントを削除しはじめからやりなおしますか\n\n注意あなたのID、連絡先、メッセージは永久に復元できません</string>
<string name="startup_failed_notification_title">Briarを起動できません。</string> <string name="startup_failed_notification_title">Briarを起動できません。</string>
<string name="startup_failed_activity_title">起動に失敗</string> <string name="startup_failed_notification_text">「詳細情報」をタップしてください。</string>
<string name="startup_failed_activity_title">起動に失敗しました</string>
<string name="startup_failed_db_error">何らかの理由で、Briarデータベースが修復できないほど破損しています。 アカウント、データ、およびすべての連絡先が失われています。 残念ながら、パスワードプロンプトで「パスワードを忘れましました。」を選択して、Briarを再インストールするか、新しいアカウントを設定する必要があります。</string>
<string name="startup_failed_data_too_old_error">アカウントはこのアプリの古いバージョンで作成されたため、このバージョンで開くことはできません。 パスワードプロンプトで「パスワードを紛失しました。」を選択して、古いバージョンを再インストールするか、新しいアカウントを設定する必要があります。</string>
<string name="startup_failed_data_too_new_error">このバージョンのアプリは古すぎます。 最新バージョンにアップグレードして、もう一度試してみてください。</string>
<string name="startup_failed_service_error">プラグインの起動に失敗しました。Briarを再インストールすることで通常は直ります。Briarは中央サーバにデータを保存していないため、アカウントとそれに関連する情報は全て失われることに注意してください。</string> <string name="startup_failed_service_error">プラグインの起動に失敗しました。Briarを再インストールすることで通常は直ります。Briarは中央サーバにデータを保存していないため、アカウントとそれに関連する情報は全て失われることに注意してください。</string>
<plurals name="expiry_warning">
<item quantity="other">これは、Briarのテストバージョンです。 アカウントは%d日で期限切れになり、更新できません。</item>
</plurals>
<string name="expiry_update">テストの有効期限が延長されました。 アカウントは%d日後に有効期限が切れます。</string>
<string name="expiry_date_reached">このソフトの有効期限が切れました。テストに参加してくださりありがとうございます!</string> <string name="expiry_date_reached">このソフトの有効期限が切れました。テストに参加してくださりありがとうございます!</string>
<string name="download_briar">引き続きBriarを使用するには、バージョン1.0を使用してください。</string>
<string name="create_new_account">新しいアカウントを作成する必要があります。同じニックネームも使用できます。</string>
<string name="download_briar_button">Briar 1.0をダウンロード</string>
<string name="startup_open_database">データベースの復号化中…</string>
<string name="startup_migrate_database">データベースをアップグレード中…</string>
<string name="startup_compact_database">データベースの圧縮中…</string>
<!--Navigation Drawer--> <!--Navigation Drawer-->
<string name="nav_drawer_open_description">ナビゲーションを開く</string> <string name="nav_drawer_open_description">ナビゲーションを開く</string>
<string name="nav_drawer_close_description">ナビゲーションを閉じる</string> <string name="nav_drawer_close_description">ナビゲーションを閉じる</string>
<string name="contact_list_button">連絡先</string> <string name="contact_list_button">連絡先</string>
<string name="groups_button">Private Groups</string> <string name="groups_button">プライベートグループ</string>
<string name="forums_button">フォーラム</string> <string name="forums_button">フォーラム</string>
<string name="blogs_button">Blogs</string> <string name="blogs_button">ブログ</string>
<!--This is part of the main menu. The app will be locked when this is tapped.--> <!--This is part of the main menu. The app will be locked when this is tapped.-->
<string name="lock_button">アプリをロック</string> <string name="lock_button">アプリをロック</string>
<string name="settings_button">Settings</string> <string name="settings_button">設定</string>
<string name="sign_out_button">サインアウト</string> <string name="sign_out_button">サインアウト</string>
<!--Transports--> <!--Transports-->
<string name="transport_tor">インターネット</string> <string name="transport_tor">インターネット</string>
<string name="transport_bt">Bluetooth</string> <string name="transport_bt">Bluetooth</string>
<string name="transport_lan">Wi-Fi</string> <string name="transport_lan">Wi-Fi</string>
<!--Notifications--> <!--Notifications-->
<string name="reminder_notification_title">Briarからサインアウト</string>
<string name="reminder_notification_text">タップして再ログインします。</string>
<string name="reminder_notification_channel_title">Briarサインインリマインダー</string>
<string name="reminder_notification_dismiss">断る</string>
<string name="ongoing_notification_title">Briarにサインイン</string> <string name="ongoing_notification_title">Briarにサインイン</string>
<string name="ongoing_notification_text">Briarを開く</string> <string name="ongoing_notification_text">Briarを開く</string>
<plurals name="private_message_notification_text"> <plurals name="private_message_notification_text">
@@ -53,12 +80,12 @@
<item quantity="other">%d件の新規フォーラム投稿</item> <item quantity="other">%d件の新規フォーラム投稿</item>
</plurals> </plurals>
<plurals name="blog_post_notification_text"> <plurals name="blog_post_notification_text">
<item quantity="other">%d件の新規ブログポスト</item> <item quantity="other">%d件の新規ブログ投稿</item>
</plurals> </plurals>
<!--Misc--> <!--Misc-->
<string name="now">現在</string> <string name="now">たった今</string>
<string name="show">表示</string> <string name="show">表示</string>
<string name="hide">非表示</string> <string name="hide">隠す</string>
<string name="ok">OK</string> <string name="ok">OK</string>
<string name="cancel">キャンセル</string> <string name="cancel">キャンセル</string>
<string name="got_it">了解</string> <string name="got_it">了解</string>
@@ -66,7 +93,7 @@
<string name="accept">承認</string> <string name="accept">承認</string>
<string name="decline">却下</string> <string name="decline">却下</string>
<string name="options">オプション</string> <string name="options">オプション</string>
<string name="online">プショ</string> <string name="online">ンライ</string>
<string name="offline">オフライン</string> <string name="offline">オフライン</string>
<string name="send">送信</string> <string name="send">送信</string>
<string name="allow">許可</string> <string name="allow">許可</string>
@@ -74,75 +101,431 @@
<string name="no_data">データなし</string> <string name="no_data">データなし</string>
<string name="ellipsis">...</string> <string name="ellipsis">...</string>
<string name="text_too_long">入力された文章が長すぎます。</string> <string name="text_too_long">入力された文章が長すぎます。</string>
<string name="show_onboarding">ヘルプを表示</string> <string name="show_onboarding">ヘルプダイアログを表示</string>
<string name="fix">修復する</string>
<string name="help">ヘルプ</string> <string name="help">ヘルプ</string>
<string name="sorry">すみません</string>
<!--Contacts and Private Conversations--> <!--Contacts and Private Conversations-->
<string name="no_contacts">表示する連絡先がありません</string>
<string name="no_contacts_action">「+」アイコンをタップして連絡先を追加</string>
<string name="date_no_private_messages">メッセージがありません。</string> <string name="date_no_private_messages">メッセージがありません。</string>
<string name="no_private_messages">表示するメッセージがありません</string>
<string name="message_hint">メッセージ入力</string> <string name="message_hint">メッセージ入力</string>
<string name="delete_contact">連絡先を削除</string> <string name="image_caption_hint">説明文を追加する(任意)</string>
<string name="contact_deleted_toast">連絡先の削除完了</string> <string name="image_attach">画像を添付</string>
<string name="image_attach_error">画像を添付できませんでした</string>
<string name="image_attach_error_too_big">画像が大きすぎます。 %dMBが制限です。</string>
<string name="image_attach_error_invalid_mime_type">サポートされていない画像形式:%s</string>
<string name="set_contact_alias">連絡先を変更</string>
<string name="set_contact_alias_hint">連絡先名</string>
<string name="set_alias_button">変更</string>
<string name="delete_contact">この連絡先を削除</string>
<string name="dialog_title_delete_contact">連絡先の削除時に確認</string>
<string name="dialog_message_delete_contact">この連絡先と、この連絡先とのすべてのメッセージを削除してもよろしいですか?</string>
<string name="contact_deleted_toast">連絡先を削除しました</string>
<!--This is shown in the action bar when opening an image in fullscreen that the user sent-->
<string name="you">あなた</string>
<string name="save_image">画像を保存</string>
<string name="dialog_title_save_image">画像を保存しますか?</string>
<string name="dialog_message_save_image">画像を保存すると、他のアプリがその画像にアクセスできるようになります。\n\n保存してもよろしいですか</string>
<string name="save_image_success">画像を保存しました</string>
<string name="save_image_error">画像を保存できませんでした</string>
<string name="dialog_title_no_image_support">利用できない画像です</string>
<string name="dialog_message_no_image_support">あなたのこの連絡先のBriarは画像の添付ファイルをまだサポートしていません。連絡先がアップグレードすると、別のアイコンが表示されます。</string>
<string name="dialog_title_image_support">この連絡先に画像を送信できるようになりました</string>
<string name="dialog_message_image_support">このアイコンをタップして画像を添付します。</string>
<!--Adding Contacts--> <!--Adding Contacts-->
<string name="add_contact_title">連絡先追加</string> <string name="add_contact_title">近くの人を連絡先追加する</string>
<string name="face_to_face">連絡先として追加したい人と会う必要があります。\n\nこれにより、だれかがあなたになりすましたり、メッセージを読んだりするのを防ぐことができます。</string>
<string name="continue_button">続ける</string> <string name="continue_button">続ける</string>
<string name="try_again_button">もう一度やり直してください</string> <string name="try_again_button">もう一度やり直してください</string>
<string name="waiting_for_contact_to_scan">連絡先がスキャンして接続するのを待っています\u2026</string>
<string name="exchanging_contact_details">連絡先の詳細を交換しています\ u2026</string>
<string name="contact_added_toast">追加された連絡先:%s</string>
<string name="contact_already_exists">連絡先%sは既に存在しています </string>
<string name="qr_code_invalid">QRコードが無効です</string>
<string name="qr_code_too_old">スキャンしたQRコードは%sの古いバージョンから取得されました。\n\n最新バージョンへアップグレードしてもらって、もう一度お試しください。</string>
<string name="qr_code_too_new">スキャンしたQRコードは、新しいバージョンの%sから取得されました。\n\n最新バージョンにアップグレードしてから、もう一度お試しください。</string>
<string name="camera_error">カメラエラー</string>
<string name="connecting_to_device">デバイスに接続中\u2026</string>
<string name="authenticating_with_device">デバイス同士での認証中\u2026</string>
<string name="connection_error_title">連絡先に接続できませんでした</string>
<string name="connection_error_explanation">あなたと連絡相手、両方が同じWi-Fiネットワークに接続していることを確認してください。</string>
<string name="connection_error_feedback">この問題が解決しない場合、アプリを改善するために<a href="feedback">フィードバック</a>を送信してください。</string>
<!--Adding Contacts Remotely-->
<string name="add_contact_remotely_title_case">離れた場所にいる相手を連絡先に追加</string>
<string name="add_contact_nearby_title">近くにいる相手を連絡先に追加</string>
<string name="add_contact_remotely_title">離れた場所にいる相手を連絡先に追加</string>
<string name="contact_name_hint">連絡先にニックネームを付ける</string>
<string name="contact_link_intro">連絡相手のリンクをここに入力してください</string>
<string name="contact_link_hint">連絡相手のリンク</string>
<string name="paste_button">貼り付け</string>
<string name="add_contact_button">連絡相手を追加</string>
<string name="copy_button">コピー</string>
<string name="share_button">共有</string>
<string name="send_link_title">リンクの交換</string>
<string name="add_contact_choose_nickname">ニックネームを選んでください</string>
<string name="add_contact_choose_a_nickname">ニックネームを入力してください</string>
<string name="nickname_intro">この連絡相手にニックネームを付けます。 あなただけがそれを見ることができます。</string>
<string name="your_link">リンクを共有する連絡相手を追加する</string>
<string name="link_clip_label">Briarリンク</string>
<string name="link_copied_toast">リンクをコピーしました</string>
<string name="adding_contact_error">連絡先への追加中にエラーが発生しました。</string>
<string name="pending_contact_requests_snackbar">保留中の連絡先への追加リクエストがあります</string>
<string name="pending_contact_requests">連絡先追加リクエスト</string>
<string name="no_pending_contacts">保留中の連絡先追加リクエストはありません</string>
<string name="add_contact_remote_connecting">接続中…</string>
<string name="waiting_for_contact_to_come_online">連絡相手がオンラインになるのを待っています…</string>
<string name="connecting">接続中…</string>
<string name="adding_contact">連絡先を追加しています…</string>
<string name="adding_contact_failed">連絡先の追加に失敗しました</string>
<string name="dialog_title_remove_pending_contact">削除の確認</string>
<string name="dialog_message_remove_pending_contact">この連絡先はまだ追加中です。 今削除すると、追加されません。</string>
<string name="own_link_error">あなたのリンクではなく連絡先のリンクを入力してください</string>
<string name="nickname_missing">ニックネームを入力してください</string>
<string name="invalid_link">無効なリンク</string>
<string name="unsupported_link">このリンクは、Briarの新しいバージョンからのものです。 最新バージョンにアップグレードしてから、もう一度試してください。</string>
<string name="intent_own_link">あなたのBriar自身を指すリンクを開きました。 別の追加したい連絡先を使用してください!</string>
<string name="missing_link">リンクを入力してください</string>
<!--This is a numeral indicating the first step in a series of screens-->
<string name="step_1">1</string>
<!--This is a numeral indicating the second step in a series of screens-->
<string name="step_2">2</string>
<plurals name="contact_added_notification_text">
<item quantity="other">%d 新しい連絡先が追加されました。</item>
</plurals>
<string name="adding_contact_slow_warning">この連絡先の追加には通常より時間がかかります</string>
<string name="adding_contact_slow_title">連絡先に接続できません</string>
<string name="adding_contact_slow_text">この連絡先の追加には通常より時間がかかります。\n \n連絡先がリンクを受信して追加したことを確認してください</string>
<string name="offline_state">インターネットに接続されていません</string>
<string name="duplicate_link_dialog_title">重複リンク</string>
<string name="duplicate_link_dialog_text_1">既に保留中の連絡先があります。リンク:%s</string>
<!--This is a question asking whether two nicknames refer to the same person-->
<string name="duplicate_link_dialog_text_2">%sと%sは同じ人ですか</string>
<!--This is a button for answering that two nicknames do indeed refer to the same person. This
string will be used in a dialog button, so if the translation of this string is longer than 20
characters, please use "Yes" instead, and use "No" for the "Different Person" button-->
<string name="same_person_button">同じ人</string>
<!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button-->
<string name="different_person_button">別の人</string>
<string name="duplicate_link_dialog_text_3">%sと%sから同じリンクを受信しました。\n\nどちらかがあなたの連絡先の内容を知ろうとしている可能性があります。\n\n他の人から同じリンクを受け取ったことを伝えないでください。</string>
<string name="pending_contact_updated_toast">保留中の連絡先が更新されました</string>
<!--Introductions--> <!--Introductions-->
<string name="introduction_onboarding_title">連絡先を紹介</string>
<string name="introduction_onboarding_text">連絡先をお互いに紹介できるので、Briarを使用して連絡するために直接会う必要はありません。</string>
<string name="introduction_menu_item">はじめに</string>
<string name="introduction_activity_title">連絡先を選択</string>
<string name="introduction_not_possible">これらの連絡先については、すでに1つの紹介が進行中です。 これが最初に完了するようにしてください。 あなたやあなたの連絡相手がめったにオンラインにならない場合、これには時間がかかることがあります。</string>
<string name="introduction_message_title">連絡相手を紹介する</string>
<string name="introduction_message_hint">メッセージを追加する(任意)</string>
<string name="introduction_button">はじめに</string>
<string name="introduction_sent">こちらの構成情報を送信しました。</string>
<string name="introduction_error">構成情報の作成中にエラーが発生しました。</string>
<string name="introduction_response_error">連絡相手からの構成情報に返信する際のエラー</string>
<string name="introduction_request_sent">%1$sを%2$sに追加するように要求しました。</string>
<string name="introduction_request_received">%1$sから%2$sへの紹介を求められました。 連絡先リストに%2$sを追加しますか</string>
<string name="introduction_request_exists_received">%1$sから%2$sの紹介を求められましたが、%2$sは既に連絡先リストにあります。%1$sはそれを知らない可能性があるため、引き続き応じれます</string>
<string name="introduction_request_answered_received">%1$sから%2$sへの紹介を求められました。</string>
<string name="introduction_response_accepted_sent">%1$sの紹介を受け入れました。</string>
<string name="introduction_response_accepted_sent_info">%1$sを連絡先に追加する前に、紹介を受け入れる必要があります。 これには時間がかかる場合があります。</string>
<string name="introduction_response_declined_sent">%1$sへの紹介を辞退しました。</string>
<string name="introduction_response_accepted_received">%1$sは%2$sの紹介を受け入れました。</string>
<string name="introduction_response_declined_received">%1$sは%2$sへの紹介を辞退しました。</string>
<string name="introduction_response_declined_received_by_introducee">%1$sによると、%2$sが紹介を辞退しました。</string>
<!--Private Groups--> <!--Private Groups-->
<string name="groups_list_empty">表示するグループがありません</string>
<string name="groups_list_empty_action">「+」アイコンをタップしてグループを作成するか、連絡先に登録している誰かにグループを共有してもらう</string>
<string name="groups_created_by">%sによって作成されました。</string>
<plurals name="messages">
<item quantity="other">%d通のメッセージ</item>
</plurals>
<string name="groups_group_is_empty">このグループは空です</string>
<string name="groups_group_is_dissolved">このグループは解散しました</string>
<string name="groups_remove">削除</string> <string name="groups_remove">削除</string>
<string name="groups_create_group_title">プライベートグループ作成</string> <string name="groups_create_group_title">プライベートグループ作成</string>
<string name="groups_create_group_button">グループ作成</string> <string name="groups_create_group_button">グループ作成</string>
<string name="groups_create_group_invitation_button">招待する</string> <string name="groups_create_group_invitation_button">招待する</string>
<string name="groups_create_group_hint">プライベートグループに名前をつける</string> <string name="groups_create_group_hint">プライベートグループに名前をつける</string>
<string name="groups_invitation_sent">グループ招待状が送信されました</string>
<string name="groups_member_list">メンバー一覧</string> <string name="groups_member_list">メンバー一覧</string>
<string name="groups_invite_members">メンバーを招待</string>
<string name="groups_member_created_you">グループを作成しました</string>
<string name="groups_member_created">%sがグループを作成しました</string>
<string name="groups_member_joined_you">グループに参加しました</string>
<string name="groups_member_joined">%sがグループに参加しました</string>
<string name="groups_leave">グループをやめる</string>
<string name="groups_leave_dialog_title">グループをやめる確認</string>
<string name="groups_leave_dialog_message">このグループをやめてもよろしいですか?</string>
<string name="groups_dissolve">グループを削除</string>
<string name="groups_dissolve_dialog_title">グループの削除の確認</string>
<string name="groups_dissolve_dialog_message">このグループを削除してもよろしいですか?\n\nグループを削除すると、他のすべてのメンバーは会話を続けることができなくなり、最新のメッセージは受信できなくなります。</string>
<string name="groups_dissolve_button">削除</string>
<string name="groups_dissolved_dialog_title">グループを削除しました</string>
<string name="groups_dissolved_dialog_message">このグループの作成者はこのグループを削除しました。\n\nそのため、書き込まれたすべてのメンバーは会話を続けることができなくなり、最新のメッセージも受信できなくなりました。</string>
<!--Private Group Invitations--> <!--Private Group Invitations-->
<string name="groups_invitations_title">グループへ招待</string>
<string name="groups_invitations_invitation_sent">%1$sをグループ \"%2$s\"に招待しています。</string>
<string name="groups_invitations_invitation_received">%1$sがあなたをグループ \"%2$s\"に招待しています。</string>
<string name="groups_invitations_joined">グループに参加しました</string>
<string name="groups_invitations_declined">グループへの招待を辞退しました</string>
<plurals name="groups_invitations_open">
<item quantity="other">%d個のオープングループへの招待</item>
</plurals>
<string name="groups_invitations_response_accepted_sent">%sからのグループ招待を受け入れました。</string>
<string name="groups_invitations_response_declined_sent">%sからのグループへの招待を辞退しました。</string>
<string name="groups_invitations_response_accepted_received">%sはグループへの招待を受け入れました。</string>
<string name="groups_invitations_response_declined_received">%sはグループへの招待を辞退しました。</string>
<string name="sharing_status_groups">グループに新しいメンバーを招待できるのは、作成者のみです。 以下は、グループの現在の全員のメンバーです。</string>
<!--Private Groups Revealing Contacts--> <!--Private Groups Revealing Contacts-->
<string name="groups_reveal_contacts">連絡先を公開する</string>
<string name="groups_reveal_dialog_message">このグループの現在および将来のすべてのメンバーに連絡先を公開するかどうかを選択できます。\n\n連絡先を公開すると、グループの作成者がオフラインの場合でも公開された連絡先と通信できるため、グループへの接続がより高速で信頼性が高くなります。</string>
<string name="groups_reveal_visible">連絡先関係はグループに表示されます</string>
<string name="groups_reveal_visible_revealed_by_us">連絡先の関係はグループに表示されます(あなたによって公開されました)</string>
<string name="groups_reveal_visible_revealed_by_contact">連絡先の関係はグループに表示されます(%sによって公開されました</string>
<string name="groups_reveal_invisible">連絡先の関係はグループには表示されません</string>
<!--Forums--> <!--Forums-->
<string name="no_forums">表示するフォーラムがありません</string>
<string name="no_forums_action">「+」アイコンをタップしてフォーラムを作成するか、連絡先に登録している誰かにフォーラムを共有してもらいます</string>
<string name="create_forum_title">フォーラムを作成</string>
<string name="choose_forum_hint">フォーラムの名前を選択してください</string>
<string name="create_forum_button">フォーラムを作成</string>
<string name="forum_created_toast">フォーラムが作成されました</string>
<string name="no_forum_posts">表示する投稿がありません</string>
<string name="no_posts">投稿なし</string>
<plurals name="posts">
<item quantity="other">%dつの投稿</item>
</plurals>
<string name="forum_new_message_hint">新しい投稿</string>
<string name="forum_message_reply_hint">新しい返信</string>
<string name="btn_reply">返信</string> <string name="btn_reply">返信</string>
<string name="forum_leave">フォーラムをやめる</string>
<string name="dialog_title_leave_forum">フォーラムをやめる確認</string>
<string name="dialog_message_leave_forum">このフォーラムをやめてもよろしいですか?\n\nこのフォーラムで共有した連絡先は更新の受信を停止します。</string>
<string name="dialog_button_leave">脱退する</string>
<string name="forum_left_toast">フォーラムをやめました</string>
<!--Forum Sharing--> <!--Forum Sharing-->
<string name="forum_share_button">フォーラムを共有</string>
<string name="contacts_selected">選択した連絡先</string>
<string name="activity_share_toolbar_header">連絡先を選択</string>
<string name="no_contacts_selector">表示する連絡先がありません</string>
<string name="no_contacts_selector_action">連絡先を追加した後、ここに戻ってください</string>
<string name="forum_shared_snackbar">選択した連絡先と共有されるフォーラム</string>
<string name="forum_share_message">メッセージを追加する(任意)</string>
<string name="forum_share_error">このフォーラムの共有中にエラーが発生しました。</string>
<string name="forum_invitation_received">%1$sがフォーラム\"%2$s\"をあなたと共有しました。</string>
<string name="forum_invitation_sent">フォーラム\"%1$s\"を%2$sと共有しました。</string>
<string name="forum_invitations_title">フォーラムへの招待</string>
<string name="forum_invitation_exists">既にこのフォーラムへの招待を受け入れています。\n\n招待をさらに受け入れると、フォーラムへの接続がより速く、より信頼できるものになります。</string>
<string name="forum_joined_toast">フォーラムに参加しました</string>
<string name="forum_declined_toast">招待を辞退しました</string>
<string name="shared_by_format">%sによって共有されました。</string>
<string name="forum_invitation_already_sharing">既に共有しています</string>
<string name="forum_invitation_response_accepted_sent">%sからのフォーラムへの招待を受け入れました。</string>
<string name="forum_invitation_response_declined_sent">%sからのフォーラムへの招待を辞退しました。</string>
<string name="forum_invitation_response_accepted_received">%sはフォーラムへの招待を受け入れました。</string>
<string name="forum_invitation_response_declined_received">%sはフォーラムへの招待を辞退しました。</string>
<string name="sharing_status">共有ステータス</string>
<string name="sharing_status_forum">フォーラムのメンバーは誰でも連絡先と共有できます。 このフォーラムを次の連絡先と共有しています。 他のメンバーが表示されない場合もあります。</string>
<string name="shared_with">%1$dと共有%2$d オンライン)</string>
<plurals name="forums_shared">
<item quantity="other">連絡先に登録している人が共有している%dフォーラム</item>
</plurals>
<string name="nobody">誰もいません</string>
<!--Blogs--> <!--Blogs-->
<string name="blogs_other_blog_empty_state">表示する投稿がありません</string>
<string name="read_more">続きを読む</string>
<string name="blogs_write_blog_post">ブログに投稿する</string>
<string name="blogs_write_blog_post_body_hint">ブログの投稿内容を入力してください</string>
<string name="blogs_publish_blog_post">公開</string> <string name="blogs_publish_blog_post">公開</string>
<string name="blogs_blog_post_created">ブログポストが作成されました</string>
<string name="blogs_blog_post_received">新しいブログの投稿を受け取りました</string>
<string name="blogs_blog_post_scroll_to">スクロール:</string>
<string name="blogs_feed_empty_state">表示する投稿がありません</string>
<string name="blogs_feed_empty_state_action">登録している連絡先やブログからの投稿がここに表示されます\n\nペンアイコンをタップして投稿を書き込みます</string>
<string name="blogs_remove_blog">ブログを削除</string>
<string name="blogs_remove_blog_dialog_message">このブログを削除してもよろしいですか?\n\n投稿はデバイスから削除されますが、他の人のデバイスからは削除されません。\n\nこのブログを共有した人に更新の受信を停止します。</string>
<string name="blogs_remove_blog_ok">解除</string> <string name="blogs_remove_blog_ok">解除</string>
<string name="blogs_blog_removed">ブログを削除しました</string>
<string name="blogs_reblog_comment_hint">コメントを追加する(任意)</string>
<string name="blogs_reblog_button">リブログ</string>
<!--Blog Sharing--> <!--Blog Sharing-->
<string name="blogs_sharing_share">ブログを共有</string>
<string name="blogs_sharing_error">このブログの共有中にエラーが発生しました。</string>
<string name="blogs_sharing_button">ブログを共有</string>
<string name="blogs_sharing_snackbar">選択した連絡先と共有するブログ</string>
<string name="blogs_sharing_response_accepted_sent">%sからのブログへの招待を受け入れました。</string>
<string name="blogs_sharing_response_declined_sent">%sからのブログへの招待を辞退しました。</string>
<string name="blogs_sharing_response_accepted_received">%sはブログへの招待を受け入れました。</string>
<string name="blogs_sharing_response_declined_received">%sはブログへの招待を辞退しました。</string>
<string name="blogs_sharing_invitation_received">%1$sがブログ\"%2$s\"をあなたと共有しました。</string>
<string name="blogs_sharing_invitation_sent">ブログ\"%1$s\"を%2$sと共有しました。</string>
<string name="blogs_sharing_invitations_title">ブログへの招待</string>
<string name="blogs_sharing_joined_toast">ブログの購読</string>
<string name="blogs_sharing_declined_toast">招待を辞退しました</string>
<string name="sharing_status_blog">ブログを購読している人は誰でも、ブログを連絡先と共有できます。 このブログを次の連絡先と共有しています。 表示できない他の購読者もいる可能性があります。</string>
<!--RSS Feeds--> <!--RSS Feeds-->
<string name="blogs_rss_feeds_import">RSSフィードをインポート</string>
<string name="blogs_rss_feeds_import_button">インポート</string> <string name="blogs_rss_feeds_import_button">インポート</string>
<string name="blogs_rss_feeds_import_hint">RSSフィードのURLを入力してください</string>
<string name="blogs_rss_feeds_import_error">申し訳ありません! フィードのインポート中にエラーが発生しました。</string>
<string name="blogs_rss_feeds_manage">RSSフィードを管理</string>
<string name="blogs_rss_feeds_manage_imported">インポート済み:</string>
<string name="blogs_rss_feeds_manage_author">著者:</string> <string name="blogs_rss_feeds_manage_author">著者:</string>
<string name="blogs_rss_feeds_manage_updated">最終更新:</string> <string name="blogs_rss_feeds_manage_updated">最終更新:</string>
<string name="blogs_rss_remove_feed">フィードを削除</string>
<string name="blogs_rss_remove_feed_dialog_message">このフィードを削除してもよろしいですか?\n\n投稿はデバイスから削除されますが、他の人のデバイスからは削除されません。\n\nこのフィードを共有した人は更新の受信を停止されます。</string>
<string name="blogs_rss_remove_feed_ok">解除</string> <string name="blogs_rss_remove_feed_ok">解除</string>
<string name="blogs_rss_feeds_manage_delete_error">フィードを削除できませんでした!</string>
<string name="blogs_rss_feeds_manage_empty_state">表示するRSSフィードはありません\n\n「」アイコンをタップしてフィードをインポートします</string>
<string name="blogs_rss_feeds_manage_error">フィードの読み込み中に問題が発生しました。 後でもう一度やり直してください。</string>
<!--Settings Display--> <!--Settings Display-->
<string name="pref_language_title">言語 &amp; 領域</string>
<string name="pref_language_changed">この設定は、Briarを再起動すると有効になります。 サインアウトしてBriarを再起動してください。</string>
<string name="pref_language_default">システムのデフォルト</string>
<string name="display_settings_title">表示</string> <string name="display_settings_title">表示</string>
<string name="pref_theme_title">テーマ</string> <string name="pref_theme_title">テーマ</string>
<string name="pref_theme_light">ライト</string> <string name="pref_theme_light">ライト</string>
<string name="pref_theme_dark">ダーク</string> <string name="pref_theme_dark">ダーク</string>
<string name="pref_theme_auto">自動(昼間)</string>
<string name="pref_theme_system">システムデフォルト</string> <string name="pref_theme_system">システムデフォルト</string>
<!--Settings Network--> <!--Settings Network-->
<string name="network_settings_title">ネットワーク</string>
<string name="bluetooth_setting">Bluetooth経由で接続する</string>
<string name="bluetooth_setting_enabled">連絡先に登録している人が近くにいるときはいつでも接続する</string>
<string name="bluetooth_setting_disabled">その人を追加した場合のみ</string>
<string name="tor_network_setting">インターネット経由で接続するTor</string>
<string name="tor_network_setting_automatic">場所に基づいて自動的に接続する</string>
<string name="tor_network_setting_without_bridges">ブリッジなしでTorを使用する</string>
<string name="tor_network_setting_with_bridges">ブリッジを通してTorを使用する</string>
<string name="tor_network_setting_never">接続しない</string>
<!--How and when Tor will connect after Automatic: E.g. Don't connect (in China) or Use Tor with bridges (in Belarus)--> <!--How and when Tor will connect after Automatic: E.g. Don't connect (in China) or Use Tor with bridges (in Belarus)-->
<string name="tor_network_setting_summary">自動:%1$s%2$sのうち</string>
<string name="tor_mobile_data_title">モバイルデータを使用する</string>
<string name="tor_only_when_charging_title">充電時にのみインターネットTor経由で接続する</string>
<string name="tor_only_when_charging_summary">デバイスがバッテリー使用している場合、インターネット接続を無効にする</string>
<!--Settings Security and Panic--> <!--Settings Security and Panic-->
<string name="security_settings_title">セキュリティ</string> <string name="security_settings_title">セキュリティ</string>
<string name="pref_lock_title">アプリロック</string>
<string name="pref_lock_summary">ログイン中にデバイスの画面ロックを使用して、Briarを保護します</string>
<string name="pref_lock_disabled_summary">この機能を使用するには、デバイスの画面ロックを設定します</string>
<string name="pref_lock_timeout_title">\"Inactivity timeout\"された場合、アプリロックをロックする</string>
<!--The %s placeholder is replaced with the following time spans, e.g. 5 Minutes, 1 Hour--> <!--The %s placeholder is replaced with the following time spans, e.g. 5 Minutes, 1 Hour-->
<string name="pref_lock_timeout_summary">Briarを使用しない場合、%s後に自動的にロックします</string>
<!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"--> <!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"-->
<string name="pref_lock_timeout_1">1 分</string> <string name="pref_lock_timeout_1">1 分</string>
<!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"--> <!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"-->
<string name="pref_lock_timeout_5">5 分</string> <string name="pref_lock_timeout_5">5 分</string>
<!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"--> <!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"-->
<string name="pref_lock_timeout_15">15分</string>
<!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"--> <!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"-->
<string name="pref_lock_timeout_30">30分</string>
<!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"--> <!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"-->
<string name="pref_lock_timeout_60">1 時間</string> <string name="pref_lock_timeout_60">1 時間</string>
<string name="pref_lock_timeout_never">二度としない</string> <string name="pref_lock_timeout_never">しない</string>
<string name="pref_lock_timeout_never_summary">Briarを自動的にロックしない</string>
<string name="change_password">パスワードの変更</string> <string name="change_password">パスワードの変更</string>
<string name="current_password">現在のパスワード</string>
<string name="choose_new_password">新しいパスワード</string>
<string name="confirm_new_password">新しいパスワードの確認</string> <string name="confirm_new_password">新しいパスワードの確認</string>
<string name="password_changed">パスワードが変更されました。</string>
<string name="panic_setting">パニックボタンのセットアップ</string>
<string name="panic_setting_title">パニックボタン</string>
<string name="panic_setting_hint">パニックボタンアプリを使用したときのBriarの反応を構成する</string>
<string name="panic_app_setting_title">パニックボタンアプリ</string>
<string name="unknown_app">未知のアプリ</string>
<string name="panic_app_setting_summary">アプリが設定されていません</string>
<string name="panic_app_setting_none">なし</string> <string name="panic_app_setting_none">なし</string>
<string name="dialog_title_connect_panic_app">パニックアプリを確認</string>
<string name="dialog_message_connect_panic_app">%1$sが強制力の強いパニックボタンアクションをトリガーすることを許可してもよろしいですか</string>
<string name="panic_setting_destructive_action">強制力の強いアクション</string>
<string name="panic_setting_signout_title">サインアウト</string> <string name="panic_setting_signout_title">サインアウト</string>
<string name="panic_setting_signout_summary">パニックボタンが押された場合、Briarからログアウトする</string>
<string name="purge_setting_title">アカウントを削除</string> <string name="purge_setting_title">アカウントを削除</string>
<string name="purge_setting_summary">パニックボタンが押された場合は、Briarアカウントを削除します。 注意これにより、ID、連絡先、メッセージが完全に削除されます</string>
<string name="uninstall_setting_title">Briarをアンインストールする</string>
<string name="uninstall_setting_summary">これには、パニックイベントの手動の確認が必要です</string>
<!--Settings Notifications--> <!--Settings Notifications-->
<string name="notification_settings_title">通知</string> <string name="notification_settings_title">通知</string>
<string name="notify_sign_in_title">サインインするように通知する</string>
<string name="notify_sign_in_summary">電話の起動時またはアプリの更新時にリマインダーを表示する</string>
<string name="notify_private_messages_setting_title">プライベート・メッセージ</string> <string name="notify_private_messages_setting_title">プライベート・メッセージ</string>
<string name="notify_lock_screen_setting_title">ロック画面</string> <string name="notify_private_messages_setting_summary">プライベートメッセージのアラートを表示する</string>
<string name="notify_private_messages_setting_summary_26">プライベートメッセージのアラートを設定する</string>
<string name="notify_group_messages_setting_title">グループメッセージ</string>
<string name="notify_group_messages_setting_summary">グループメッセージのアラートを表示する</string>
<string name="notify_group_messages_setting_summary_26">グループメッセージのアラートを設定する</string>
<string name="notify_forum_posts_setting_title">フォーラム投稿</string>
<string name="notify_forum_posts_setting_summary">フォーラム投稿のアラートを表示する</string>
<string name="notify_forum_posts_setting_summary_26">フォーラム投稿のアラートを設定する</string>
<string name="notify_blog_posts_setting_title">ブログポスト</string>
<string name="notify_blog_posts_setting_summary">ブログ投稿のアラートを表示する</string>
<string name="notify_blog_posts_setting_summary_26">ブログ投稿のアラートを設定する</string>
<string name="notify_vibration_setting">バイブレーション</string>
<string name="notify_sound_setting"></string>
<string name="notify_sound_setting_default">デフォルト着信音</string>
<string name="notify_sound_setting_disabled">なし</string> <string name="notify_sound_setting_disabled">なし</string>
<string name="choose_ringtone_title">着信音を選択</string>
<string name="cannot_load_ringtone">着信音を読み込めません</string>
<!--Settings Feedback--> <!--Settings Feedback-->
<string name="feedback_settings_title">フィードバック</string>
<string name="send_feedback">フィードバックを送信</string>
<!--Link Warning--> <!--Link Warning-->
<string name="link_warning_title">リンクの警告</string>
<string name="link_warning_intro">外部アプリで次のリンクを開こうとしています。</string>
<string name="link_warning_text">これはあなたを識別するために使用できます。 このリンクを送ってきた人を信頼していいのどうか考えてください。リンクを開く場合は、Tor Browserで開いてください。</string>
<string name="link_warning_open_link">リンクを開く</string>
<!--Crash Reporter--> <!--Crash Reporter-->
<string name="crash_report_title">Briarのクラッシュレポート</string>
<string name="briar_crashed">申し訳ありませんが、Briarはクラッシュしました。</string>
<string name="not_your_fault">これはあなたのせいではありません。</string>
<string name="please_send_report">クラッシュレポートを送信して、より良いBriarの開発にご協力ください。</string>
<string name="report_is_encrypted">レポートは暗号化され、安全に送信されることをお約束します。</string>
<string name="feedback_title">フィードバック</string>
<string name="describe_crash">何が起こったかのかを説明してください(任意)</string>
<string name="enter_feedback">フィードバックを入力してください</string>
<string name="optional_contact_email">あなたのメールアドレス(任意)</string>
<string name="include_debug_report_crash">クラッシュに関する匿名のデータを添付する</string>
<string name="include_debug_report_feedback">このデバイスに関する匿名のデータを添付する</string>
<string name="could_not_load_report_data">レポートデータを読み込めませんでした。</string>
<string name="send_report">レポートを送信</string>
<string name="close">閉じる</string> <string name="close">閉じる</string>
<string name="dev_report_saved">レポートを保存しました。 次回、Briarにログインしたときに送信されます。</string>
<!--Sign Out--> <!--Sign Out-->
<string name="progress_title_logout">Briarからサインアウト中…</string>
<!--Screen Filters & Tapjacking--> <!--Screen Filters & Tapjacking-->
<string name="screen_filter_title">スクリーンオーバーレイが検出されました</string>
<string name="screen_filter_body">別のアプリがBriarの画面上に描画しています。 セキュリティを保護するために、Briarは、別のアプリがBriarの画面上に描画している場合、タッチに応答しません。\n\n次のアプリが上に描画されている可能性があります\n\n%1$s</string>
<string name="screen_filter_allow">これらのアプリがBriarの画面上に描画できるようにする</string>
<!--Permission Requests--> <!--Permission Requests-->
<string name="permission_camera_title">カメラへのアクセス許可</string>
<string name="permission_camera_request_body">QRコードをスキャンするには、Briarはカメラにアクセスする必要があります。</string>
<string name="permission_location_title">位置情報へのアクセスの許可</string>
<string name="permission_location_request_body">Bluetoothデバイスを検出するには、Briarがあなたの位置情報へのアクセスを必要とします。\n\nBriarはあなたの場所を保存したり、誰とも共有したりしません。</string>
<string name="permission_camera_location_title">カメラと位置情報</string>
<string name="permission_camera_location_request_body">QRコードをスキャンするには、Briarはカメラにアクセスする必要があります。\n\nBluetoothデバイスを検出するには、Briarは現在地情報にアクセスする許可が必要です。\n\nBriarは現在地を保存したり、誰とも共有したりしません。</string>
<string name="permission_camera_denied_body">カメラへのアクセスをが拒否されましたが、連絡先を追加するにはカメラを使用する必要があります。\n\nカメラへのアクセスの許可を考えてください。</string>
<string name="qr_code">QRコード</string>
<string name="show_qr_code_fullscreen">QRコードを全画面表示する</string>
<!--App Locking--> <!--App Locking-->
<string name="lock_unlock">Briarのロックを解除</string>
<string name="lock_unlock_verbose">Briarのロックを解除するには、デバイスのPIN、パターン、またはパスワードを入力してください</string>
<string name="lock_unlock_fingerprint_description">登録した指で指紋センサーに触れて続行します</string>
<string name="lock_unlock_password">パスワードを使用</string>
<string name="lock_is_locked">Briarはロックされています</string>
<string name="lock_tap_to_unlock">タップしてロック解除</string>
<!--Screenshots-->
<!--This is a name to be used in screenshots. Feel free to change it to a local name.-->
<string name="screenshot_alice">アリス</string>
<!--This is a name to be used in screenshots. Feel free to change it to a local name.-->
<string name="screenshot_bob">ボブ</string>
<!--This is a name to be used in screenshots. Feel free to change it to a local name.-->
<string name="screenshot_carol">キャロル</string>
<!--This is a message to be used in screenshots. Please use the same translation for Bob!-->
<string name="screenshot_message_1">こんにちは、ボブ!</string>
<!--This is a message to be used in screenshots. Please use the same translation for Alice!-->
<string name="screenshot_message_2">やあ、アリス! Briarを教えてくれてありがとう</string>
<!--This is a message to be used in screenshots.-->
<string name="screenshot_message_3">どういたしまして!気に入ってくれるといいな😀</string>
</resources> </resources>

View File

@@ -134,6 +134,11 @@
<string name="set_contact_alias">Pakeisti adresato vardą</string> <string name="set_contact_alias">Pakeisti adresato vardą</string>
<string name="set_contact_alias_hint">Adresato vardas</string> <string name="set_contact_alias_hint">Adresato vardas</string>
<string name="set_alias_button">Pakeisti</string> <string name="set_alias_button">Pakeisti</string>
<string name="delete_all_messages">Ištrinti visas žinutes</string>
<string name="dialog_title_delete_all_messages">Patvirtinkite žinutės ištrynimą</string>
<string name="dialog_message_delete_all_messages">Ar tikrai norite ištrinti visas žinutes?</string>
<string name="dialog_title_not_all_messages_deleted">Nepavyko ištrinti visų žinučių</string>
<string name="dialog_message_not_all_messages_deleted">Žinutės, susijusios su vykstančiais supažindinimais ar pakvietimais negali būti ištrintos, kol nebus išspręstos.</string>
<string name="delete_contact">Ištrinti adresatą</string> <string name="delete_contact">Ištrinti adresatą</string>
<string name="dialog_title_delete_contact">Patvirtinkite adresato ištrynimą</string> <string name="dialog_title_delete_contact">Patvirtinkite adresato ištrynimą</string>
<string name="dialog_message_delete_contact">Ar tikrai norite pašalinti šį adresatą ir visas žinutes, kuriomis apsikeitėte su šiuo adresatu ?</string> <string name="dialog_message_delete_contact">Ar tikrai norite pašalinti šį adresatą ir visas žinutes, kuriomis apsikeitėte su šiuo adresatu ?</string>
@@ -149,6 +154,7 @@
<string name="dialog_message_no_image_support">Jūsų adresato Briar kol kas nepalaiko paveikslo priedų. Jam atnaujinus programėlę, jūs matysite kitokią piktogramą.</string> <string name="dialog_message_no_image_support">Jūsų adresato Briar kol kas nepalaiko paveikslo priedų. Jam atnaujinus programėlę, jūs matysite kitokią piktogramą.</string>
<string name="dialog_title_image_support">Dabar šiam adresatui galite siųsti paveikslus</string> <string name="dialog_title_image_support">Dabar šiam adresatui galite siųsti paveikslus</string>
<string name="dialog_message_image_support">Bakstelėkite šią piktogramą, norėdami pridėti paveikslus.</string> <string name="dialog_message_image_support">Bakstelėkite šią piktogramą, norėdami pridėti paveikslus.</string>
<string name="messaging_too_many_attachments_toast">Bus išsiųsti tik %d pirmi paveikslai</string>
<!--Adding Contacts--> <!--Adding Contacts-->
<string name="add_contact_title">Pridėti šalia esantį adresatą</string> <string name="add_contact_title">Pridėti šalia esantį adresatą</string>
<string name="face_to_face">Jūs privalote susitikti gyvai su asmeniu, kurį norite pridėti kaip adresatą.\n\nTai neleis bet kam apsimetinėti jumis ar ateityje skaityti jūsų žinutes.</string> <string name="face_to_face">Jūs privalote susitikti gyvai su asmeniu, kurį norite pridėti kaip adresatą.\n\nTai neleis bet kam apsimetinėti jumis ar ateityje skaityti jūsų žinutes.</string>
@@ -218,6 +224,7 @@
<string name="offline_state">Nėra interneto ryšio</string> <string name="offline_state">Nėra interneto ryšio</string>
<string name="duplicate_link_dialog_title">Identiška nuoroda</string> <string name="duplicate_link_dialog_title">Identiška nuoroda</string>
<string name="duplicate_link_dialog_text_1">Jūs jau turite laukiančią adresato užklausą su šia nuoroda: %s</string> <string name="duplicate_link_dialog_text_1">Jūs jau turite laukiančią adresato užklausą su šia nuoroda: %s</string>
<string name="duplicate_link_dialog_text_1_contact">Jau turite adresatą su šia nuoroda: %s</string>
<!--This is a question asking whether two nicknames refer to the same person--> <!--This is a question asking whether two nicknames refer to the same person-->
<string name="duplicate_link_dialog_text_2">Ar %s ir %s yra tas pats asmuo?</string> <string name="duplicate_link_dialog_text_2">Ar %s ir %s yra tas pats asmuo?</string>
<!--This is a button for answering that two nicknames do indeed refer to the same person. This <!--This is a button for answering that two nicknames do indeed refer to the same person. This

View File

@@ -118,10 +118,17 @@
<string name="message_hint">Напиши порака</string> <string name="message_hint">Напиши порака</string>
<string name="image_caption_hint">Додај наслов (опционално)</string> <string name="image_caption_hint">Додај наслов (опционално)</string>
<string name="image_attach">Прикачи слика</string> <string name="image_attach">Прикачи слика</string>
<string name="image_attach_error">Сликата не може да се прикачи</string> <string name="image_attach_error">Сликата/те не може да се прикачи(ат)</string>
<string name="image_attach_error_too_big">Сликата е преголема. Лимитот е %d MB.</string>
<string name="image_attach_error_invalid_mime_type">Форматот на сликата не е поддржан: %s</string>
<string name="set_contact_alias">Промена на име на контакт</string> <string name="set_contact_alias">Промена на име на контакт</string>
<string name="set_contact_alias_hint">Име на контакт</string> <string name="set_contact_alias_hint">Име на контакт</string>
<string name="set_alias_button">Промени</string> <string name="set_alias_button">Промени</string>
<string name="delete_all_messages">Избриши ги сите пораки</string>
<string name="dialog_title_delete_all_messages">Потврди бришење на порака</string>
<string name="dialog_message_delete_all_messages">Дали сте сигурни дека сакате да ги избришете сите пораки?</string>
<string name="dialog_title_not_all_messages_deleted">Не можат да бидат избришани сите пораки</string>
<string name="dialog_message_not_all_messages_deleted">Порактите поврзани со претставувањата или поканите кои се во тек не можат да бидат избришани додека не бидат завршени.</string>
<string name="delete_contact">Избриши контакт</string> <string name="delete_contact">Избриши контакт</string>
<string name="dialog_title_delete_contact">Потврди бришење на контакт</string> <string name="dialog_title_delete_contact">Потврди бришење на контакт</string>
<string name="dialog_message_delete_contact">Дали сте сигурни дека сакате да го избришете овој контакт и сите пораки поврзани со него?</string> <string name="dialog_message_delete_contact">Дали сте сигурни дека сакате да го избришете овој контакт и сите пораки поврзани со него?</string>
@@ -137,6 +144,7 @@
<string name="dialog_message_no_image_support">Верзијата на Briar на контактот се уште не поддржува прикачувања на слики. Во моментот кога тој ќе го ажурира Briar, ќе видите различна икона.</string> <string name="dialog_message_no_image_support">Верзијата на Briar на контактот се уште не поддржува прикачувања на слики. Во моментот кога тој ќе го ажурира Briar, ќе видите различна икона.</string>
<string name="dialog_title_image_support">Сега можете да му испраќате слики на овој контакт</string> <string name="dialog_title_image_support">Сега можете да му испраќате слики на овој контакт</string>
<string name="dialog_message_image_support">Допрете ја оваа икона за да прикачите слики.</string> <string name="dialog_message_image_support">Допрете ја оваа икона за да прикачите слики.</string>
<string name="messaging_too_many_attachments_toast">Само првите %d слики ќе бидат испратени</string>
<!--Adding Contacts--> <!--Adding Contacts-->
<string name="add_contact_title">Додај контакт ВО БЛИЗИНА</string> <string name="add_contact_title">Додај контакт ВО БЛИЗИНА</string>
<string name="face_to_face">Морате да се сретнете со лицето кое сакате да го додадете за контакт.\n\nОва спречува во иднина било кој да се преставува како вас или да ги чита вашите пораки во иднина.</string> <string name="face_to_face">Морате да се сретнете со лицето кое сакате да го додадете за контакт.\n\nОва спречува во иднина било кој да се преставува како вас или да ги чита вашите пораки во иднина.</string>
@@ -178,13 +186,16 @@
<string name="pending_contact_requests">Барања за контакт на чекање</string> <string name="pending_contact_requests">Барања за контакт на чекање</string>
<string name="no_pending_contacts">Нема контакти на чекање</string> <string name="no_pending_contacts">Нема контакти на чекање</string>
<string name="add_contact_remote_connecting">Се поврзува...</string> <string name="add_contact_remote_connecting">Се поврзува...</string>
<string name="waiting_for_contact_to_come_online">Чекање контактот да се вклучи...\n\nДали веќе го внел твојот линк?</string> <string name="waiting_for_contact_to_come_online">Чекање на контакт да се вклучи...</string>
<string name="connecting">Се поврзува...</string> <string name="connecting">Се поврзува...</string>
<string name="adding_contact">Додавање контакт...</string> <string name="adding_contact">Додавање контакт...</string>
<string name="adding_contact_failed">Додавањето на контакт беше неуспешно</string> <string name="adding_contact_failed">Додавањето на контакт беше неуспешно</string>
<string name="dialog_title_remove_pending_contact">Потврди отстранување</string>
<string name="dialog_message_remove_pending_contact">Овој контакт е сеуште додаден. Ако го отстраните сега, нема да биде додаден.</string>
<string name="own_link_error">Внеси го линкот на твојот контакт, а не својот линк</string> <string name="own_link_error">Внеси го линкот на твојот контакт, а не својот линк</string>
<string name="nickname_missing">Ве молиме внесете прекар</string> <string name="nickname_missing">Ве молиме внесете прекар</string>
<string name="invalid_link">Неважечки линк</string> <string name="invalid_link">Неважечки линк</string>
<string name="unsupported_link">Овој линк доаѓа од понова верзија на Briar. Ве молиме надградете во последна верзија и обидете се повторно.</string>
<string name="intent_own_link">Го отвори твојот линк. Користи го линкот на контактот што сакаш да го додадеш!</string> <string name="intent_own_link">Го отвори твојот линк. Користи го линкот на контактот што сакаш да го додадеш!</string>
<string name="missing_link">Ве молиме внесете линк</string> <string name="missing_link">Ве молиме внесете линк</string>
<!--This is a numeral indicating the first step in a series of screens--> <!--This is a numeral indicating the first step in a series of screens-->
@@ -195,6 +206,25 @@
<item quantity="one">Нов контакт е додаден.</item> <item quantity="one">Нов контакт е додаден.</item>
<item quantity="other">%dнови контакти се додадени.</item> <item quantity="other">%dнови контакти се додадени.</item>
</plurals> </plurals>
<string name="adding_contact_slow_warning">Додавањето на овој контакт е подолго од вообичаено</string>
<string name="adding_contact_slow_title">Не може да се поврзе со контакт</string>
<string name="adding_contact_slow_text">Додавањето на овој контакт е подолго од вообичаеното.\n\nВе молиме проверете дека вашиот контакт го добил вашиот линк и дека ве додал: </string>
<string name="offline_state">Нема Интернет врска</string>
<string name="duplicate_link_dialog_title">Дуплицирање на линк</string>
<string name="duplicate_link_dialog_text_1">Веќе имате контакт на чекање со овој линк: %s</string>
<string name="duplicate_link_dialog_text_1_contact">Веќе имате контакт со овој линк: %s</string>
<!--This is a question asking whether two nicknames refer to the same person-->
<string name="duplicate_link_dialog_text_2">Дали %s и %s е истата личност?</string>
<!--This is a button for answering that two nicknames do indeed refer to the same person. This
string will be used in a dialog button, so if the translation of this string is longer than 20
characters, please use "Yes" instead, and use "No" for the "Different Person" button-->
<string name="same_person_button">Истата личност</string>
<!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button-->
<string name="different_person_button">Различна личност</string>
<string name="duplicate_link_dialog_text_3">%sи %s ти го испратија истиот линк.\n\nЕден од нив можеби се обидува да открие кои се твоите контакти.\n\nНе им кажувајте дека сте добиле ист линк од некој друг.</string>
<string name="pending_contact_updated_toast">Контактот на чекање е ажуриран</string>
<!--Introductions--> <!--Introductions-->
<string name="introduction_onboarding_title">Запознај ги твоите контакти</string> <string name="introduction_onboarding_title">Запознај ги твоите контакти</string>
<string name="introduction_onboarding_text">Можете да ги запознаете вашите контакти меѓусебно, па тие нема да имаат потреба да се запознаваат лично за да се поврзат на Briar.</string> <string name="introduction_onboarding_text">Можете да ги запознаете вашите контакти меѓусебно, па тие нема да имаат потреба да се запознаваат лично за да се поврзат на Briar.</string>

View File

@@ -118,7 +118,9 @@
<string name="message_hint">Schrijf een bericht</string> <string name="message_hint">Schrijf een bericht</string>
<string name="image_caption_hint">Voeg een titel toe (optioneel)</string> <string name="image_caption_hint">Voeg een titel toe (optioneel)</string>
<string name="image_attach">Voeg een afbeelding toe</string> <string name="image_attach">Voeg een afbeelding toe</string>
<string name="image_attach_error">Kon afbeelding niet toevoegen</string> <string name="image_attach_error">Kon afbeelding(en) niet toevoegen</string>
<string name="image_attach_error_too_big">Afbeelding is te groot. Grens is %d MB.</string>
<string name="image_attach_error_invalid_mime_type">Bestandsformaat wordt niet ondersteund: %s</string>
<string name="set_contact_alias">Verander naam van contact</string> <string name="set_contact_alias">Verander naam van contact</string>
<string name="set_contact_alias_hint">Contactnaam</string> <string name="set_contact_alias_hint">Contactnaam</string>
<string name="set_alias_button">Wijzigen</string> <string name="set_alias_button">Wijzigen</string>
@@ -138,6 +140,7 @@
<string name="dialog_title_image_support">Je kan nu afbeeldingen naar dit contact sturen</string> <string name="dialog_title_image_support">Je kan nu afbeeldingen naar dit contact sturen</string>
<string name="dialog_message_image_support">Tik op dit icoon om afbeelding bij te sluiten.</string> <string name="dialog_message_image_support">Tik op dit icoon om afbeelding bij te sluiten.</string>
<!--Adding Contacts--> <!--Adding Contacts-->
<string name="add_contact_title">Voeg contact in de buurt toe</string>
<string name="face_to_face">Je moet een persoon in levenden lijve ontmoeten om die als contact toe te voegen.\n\nDit voortkomt dat anderen zich als jou voor kunnen doen of in de toekomst je berichten kunnen lezen.</string> <string name="face_to_face">Je moet een persoon in levenden lijve ontmoeten om die als contact toe te voegen.\n\nDit voortkomt dat anderen zich als jou voor kunnen doen of in de toekomst je berichten kunnen lezen.</string>
<string name="continue_button">Ga verder</string> <string name="continue_button">Ga verder</string>
<string name="try_again_button">Probeer nog een keer</string> <string name="try_again_button">Probeer nog een keer</string>
@@ -155,15 +158,66 @@
<string name="connection_error_explanation">Controleer alsjeblieft dat jullie beiden met hetzelfde wifinetwerk zijn verbonden.</string> <string name="connection_error_explanation">Controleer alsjeblieft dat jullie beiden met hetzelfde wifinetwerk zijn verbonden.</string>
<string name="connection_error_feedback">Als dit probleem aanhoudt, <a href="feedback">stuur feedback</a> alsjeblieft om ons te helpen de app te verbeteren.</string> <string name="connection_error_feedback">Als dit probleem aanhoudt, <a href="feedback">stuur feedback</a> alsjeblieft om ons te helpen de app te verbeteren.</string>
<!--Adding Contacts Remotely--> <!--Adding Contacts Remotely-->
<string name="add_contact_remotely_title_case">Voeg een contact ver weg toe</string>
<string name="add_contact_nearby_title">Voeg contact dat in de buurt is toe</string>
<string name="add_contact_remotely_title">Voeg een contact dat niet in de buurt is toe</string>
<string name="contact_name_hint">Geef contact een bijnaam</string>
<string name="contact_link_intro">Voer de link van je contact hier in</string>
<string name="contact_link_hint">Link van contact</string>
<string name="paste_button">Plakken</string> <string name="paste_button">Plakken</string>
<string name="add_contact_button">Voeg contact toe</string>
<string name="copy_button">Kopiëren</string> <string name="copy_button">Kopiëren</string>
<string name="share_button">Delen</string> <string name="share_button">Delen</string>
<string name="send_link_title">Wissel links uit</string>
<string name="add_contact_choose_nickname">Kies bijnaam</string>
<string name="add_contact_choose_a_nickname">Voer bijnaam in</string>
<string name="nickname_intro">Geef je contact een bijnaam. Alleen jij dat dit zien.</string>
<string name="your_link">Geef deze link aan de contact die je toe wil voegen</string>
<string name="link_clip_label">Briar-link</string>
<string name="link_copied_toast">Link is gekopieerd</string>
<string name="adding_contact_error">Er was een probleem met toevoegen van het contact.</string>
<string name="pending_contact_requests_snackbar">Er zijn geen wachtende contactverzoeken</string>
<string name="pending_contact_requests">Wachtende contactverzoeken</string>
<string name="no_pending_contacts">Geen wachtende contactverzoeken</string>
<string name="add_contact_remote_connecting">Bezig met verbinden...</string> <string name="add_contact_remote_connecting">Bezig met verbinden...</string>
<string name="waiting_for_contact_to_come_online">Aan het wachten tot contact online komt...</string>
<string name="connecting">Bezig met verbinden...</string> <string name="connecting">Bezig met verbinden...</string>
<string name="adding_contact">Contact aan het toevoegen...</string>
<string name="adding_contact_failed">Toevoegen van contact is gefaald</string>
<string name="dialog_title_remove_pending_contact">Bevestig verwijderen</string>
<string name="dialog_message_remove_pending_contact">Dit contact wordt nog toegevoegd. Als je het nu verwijderd, zal het niet worden toegevoegd.</string>
<string name="own_link_error">Voer de link van je contact in, niet je eigenste</string>
<string name="nickname_missing">Voer a.u.b. een bijnaam in</string>
<string name="invalid_link">Ongeldige link</string>
<string name="unsupported_link">Deze link komt van een nieuwe versie van Briar. Upgrade alsjeblieft naar de laatste versie en probeer het nog eens.</string>
<string name="intent_own_link">Je hebt je eigen link geopend. Gebruik de link van jouw contact die je wil toevoegen!</string>
<string name="missing_link">Voeg a.u.b. link in</string>
<!--This is a numeral indicating the first step in a series of screens--> <!--This is a numeral indicating the first step in a series of screens-->
<string name="step_1">1</string> <string name="step_1">1</string>
<!--This is a numeral indicating the second step in a series of screens--> <!--This is a numeral indicating the second step in a series of screens-->
<string name="step_2">2</string> <string name="step_2">2</string>
<plurals name="contact_added_notification_text">
<item quantity="one">Nieuw contact toegevoegd</item>
<item quantity="other">%d nieuwe contacten zijn toegevoegd.</item>
</plurals>
<string name="adding_contact_slow_warning">Toevoegen van dit contact duurt langer dan gebruikelijk</string>
<string name="adding_contact_slow_title">Kan niet verbinden met contact</string>
<string name="adding_contact_slow_text">Het toeveogen van dit contact duurt langer dan gebruikelijk.\n\nGa alsjeblieft na of je contact jouw link heeft ontvangen en je heeft toegevoegd.</string>
<string name="offline_state">Geen internetverbinding</string>
<string name="duplicate_link_dialog_title">Duplicate link</string>
<string name="duplicate_link_dialog_text_1">Je hebt al en wachtend contact met deze link: %s</string>
<!--This is a question asking whether two nicknames refer to the same person-->
<string name="duplicate_link_dialog_text_2">Zijn %s en %s dezelfde persoon?</string>
<!--This is a button for answering that two nicknames do indeed refer to the same person. This
string will be used in a dialog button, so if the translation of this string is longer than 20
characters, please use "Yes" instead, and use "No" for the "Different Person" button-->
<string name="same_person_button">Zelfde persoon</string>
<!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button-->
<string name="different_person_button">Ander persoon</string>
<string name="duplicate_link_dialog_text_3">%s en %s hebben je dezelfde link gestuurd.\n\nEen van hen kan proberen te ontdekken wie jouw contacten zijn.\n\nVertel ze niet dat je dezelfde link al van een ander persoon hebt ontvangen.</string>
<string name="pending_contact_updated_toast">Wachtend contact is bijgewerkt</string>
<!--Introductions--> <!--Introductions-->
<string name="introduction_onboarding_title">Introduceer je contacten</string> <string name="introduction_onboarding_title">Introduceer je contacten</string>
<string name="introduction_onboarding_text">Je kan je contacten aan elkaar introduceren zodat ze niet in levenden lijve elkaar te hoeven ontmoeten om op Briar in contact te komen.</string> <string name="introduction_onboarding_text">Je kan je contacten aan elkaar introduceren zodat ze niet in levenden lijve elkaar te hoeven ontmoeten om op Briar in contact te komen.</string>

View File

@@ -120,7 +120,9 @@ Volètz suprimir vòstre compte e ne crear un nòu?\n
<string name="message_hint">Picatz lo messatge</string> <string name="message_hint">Picatz lo messatge</string>
<string name="image_caption_hint">Ajustar una legenda (optionala)</string> <string name="image_caption_hint">Ajustar una legenda (optionala)</string>
<string name="image_attach">Juntar un imatge</string> <string name="image_attach">Juntar un imatge</string>
<string name="image_attach_error">Fracàs de lapondon de limatge</string> <string name="image_attach_error">Impossible de juntar dimatges</string>
<string name="image_attach_error_too_big">Imatge tròp pesuc. Limit de %d Mo. </string>
<string name="image_attach_error_invalid_mime_type">Format dimatge pas compatible: %s</string>
<string name="set_contact_alias">Cambiar lo nom del contacte</string> <string name="set_contact_alias">Cambiar lo nom del contacte</string>
<string name="set_contact_alias_hint">Nom del contacte</string> <string name="set_contact_alias_hint">Nom del contacte</string>
<string name="set_alias_button">Cambiar</string> <string name="set_alias_button">Cambiar</string>
@@ -140,6 +142,7 @@ Volètz suprimir vòstre compte e ne crear un nòu?\n
<string name="dialog_title_image_support">Ara podètz enviar dimatges a aqueste contacte</string> <string name="dialog_title_image_support">Ara podètz enviar dimatges a aqueste contacte</string>
<string name="dialog_message_image_support">Tocatz aquesta icòna per juntar dimatges.</string> <string name="dialog_message_image_support">Tocatz aquesta icòna per juntar dimatges.</string>
<!--Adding Contacts--> <!--Adding Contacts-->
<string name="add_contact_title">Ajustar un contacte a proximitat</string>
<string name="face_to_face">Vos cal vos amassar amb la persona que volètz apondre als contactes.\n\n Aquò es fach per evitar quòm vos raube lidentitat e que vòstres messatges sián legits per dautres.</string> <string name="face_to_face">Vos cal vos amassar amb la persona que volètz apondre als contactes.\n\n Aquò es fach per evitar quòm vos raube lidentitat e que vòstres messatges sián legits per dautres.</string>
<string name="continue_button">Contunhar</string> <string name="continue_button">Contunhar</string>
<string name="try_again_button">Tornar ensajar</string> <string name="try_again_button">Tornar ensajar</string>
@@ -157,10 +160,66 @@ Volètz suprimir vòstre compte e ne crear un nòu?\n
<string name="connection_error_explanation">Verificatz que sètz los dos connectats al meteis ret wifi.</string> <string name="connection_error_explanation">Verificatz que sètz los dos connectats al meteis ret wifi.</string>
<string name="connection_error_feedback">Saqueste problèma dura, mercés <a href="feedback"> denviar un comentari</a> per nos ajudar a melhorar laplicacion.</string> <string name="connection_error_feedback">Saqueste problèma dura, mercés <a href="feedback"> denviar un comentari</a> per nos ajudar a melhorar laplicacion.</string>
<!--Adding Contacts Remotely--> <!--Adding Contacts Remotely-->
<string name="add_contact_remotely_title_case">Ajustar un contacte a distància</string>
<string name="add_contact_nearby_title">Ajustatz un contacte a proximitat</string>
<string name="add_contact_remotely_title">Ajustatz un contacte a distància</string>
<string name="contact_name_hint">Donar un escais-nom a un contacte</string>
<string name="contact_link_intro">Picatz lo ligam del contacte aquí</string>
<string name="contact_link_hint">Ligam del contacte</string>
<string name="paste_button">Pegar</string>
<string name="add_contact_button">Ajustar un contacte</string>
<string name="copy_button">Copiar</string> <string name="copy_button">Copiar</string>
<string name="share_button">Partejar</string> <string name="share_button">Partejar</string>
<string name="send_link_title">Escambiar de ligams</string>
<string name="add_contact_choose_nickname">Causir lescais-nom</string>
<string name="add_contact_choose_a_nickname">Picatz lescais-nom</string>
<string name="nickname_intro">Donatz un escais-nom a vòstre contacte. Pas que vosautres poiretz lo veire.</string>
<string name="your_link">Donatz aqueste ligam al contacte que volètz ajustar</string>
<string name="link_clip_label">Ligam Briar</string>
<string name="link_copied_toast">Ligam copiat</string>
<string name="adding_contact_error">I a agut una error en ajustar lo contacte.</string>
<string name="pending_contact_requests_snackbar">I a de demandas dapondon en espèra</string>
<string name="pending_contact_requests">Demandas dapondon en espèra</string>
<string name="no_pending_contacts">Cap de demanda en espèra</string>
<string name="add_contact_remote_connecting">Connexion…</string>
<string name="waiting_for_contact_to_come_online">En espèra que lo contacte passe en linha…</string>
<string name="connecting">Connexion…</string>
<string name="adding_contact">Apondon del contacte…</string>
<string name="adding_contact_failed">Lapondon a pas foncionat</string>
<string name="dialog_title_remove_pending_contact">Confirmar la supression</string>
<string name="dialog_message_remove_pending_contact">Aqueste contacte es a èsser ajustat. Se lo levatz ara, serà pas ajustat.</string>
<string name="own_link_error">Picatz lo ligam del contacte, non pas lo vòstre</string>
<string name="nickname_missing">Mercés de picar un escais-nom</string>
<string name="invalid_link">Ligam invalid</string>
<string name="unsupported_link">Aqueste ligam ven duna version de Briar mai recenta. Passatz a la darrièra version e tornatz ensajar.</string>
<string name="intent_own_link">Avètz dubèrt vòstre pròpi ligam. Utilizatz çò dun contacte que volètz ajustar!</string>
<string name="missing_link">Mercés de picar un ligam</string>
<!--This is a numeral indicating the first step in a series of screens--> <!--This is a numeral indicating the first step in a series of screens-->
<string name="step_1">1</string>
<!--This is a numeral indicating the second step in a series of screens--> <!--This is a numeral indicating the second step in a series of screens-->
<string name="step_2">2</string>
<plurals name="contact_added_notification_text">
<item quantity="one">Nòu contacte ajustat.</item>
<item quantity="other">%d nòus contactes ajustats.</item>
</plurals>
<string name="adding_contact_slow_warning">Lapondon del contacte tarda mai que de costuma</string>
<string name="adding_contact_slow_title">Connexion impossibla al contacte</string>
<string name="adding_contact_slow_text">.Lapondon del contacte tarda mai que de costuma\n\nVerificatz que vòstre contacte aja ben recebut vòstre ligam e vos aja ajustat:</string>
<string name="offline_state">Cap de connexion Internet</string>
<string name="duplicate_link_dialog_title">Duplicar lo ligam</string>
<string name="duplicate_link_dialog_text_1">Avètz ja una demanda en espèra amb aqueste ligam: %s</string>
<!--This is a question asking whether two nicknames refer to the same person-->
<string name="duplicate_link_dialog_text_2">Son %s e %s la meteissa persona?</string>
<!--This is a button for answering that two nicknames do indeed refer to the same person. This
string will be used in a dialog button, so if the translation of this string is longer than 20
characters, please use "Yes" instead, and use "No" for the "Different Person" button-->
<string name="same_person_button">Meteissa persona</string>
<!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button-->
<string name="different_person_button">Persona diferenta</string>
<string name="duplicate_link_dialog_text_3">%s e %s vos envia lo meteis ligam.\n\nUn deles poiriá ensajar de descobrir quines son vòstres contactes.\n\n Digatz-los pas quavètz recebut lo meteis ligam de qualquun mai.</string>
<string name="pending_contact_updated_toast">Contact en espèra actualizat</string>
<!--Introductions--> <!--Introductions-->
<string name="introduction_onboarding_title">Presentatz vòstres contactes</string> <string name="introduction_onboarding_title">Presentatz vòstres contactes</string>
<string name="introduction_onboarding_text">Podètz presentar vòstres contactes, lor caldrà pas se veire per sapondre e se connectar a Briar.</string> <string name="introduction_onboarding_text">Podètz presentar vòstres contactes, lor caldrà pas se veire per sapondre e se connectar a Briar.</string>

View File

@@ -5,10 +5,10 @@
<string name="setup_name_explanation">Twoja nazwa użytkownika będzie wyświetlana przy każdej zamieszczonej przez Ciebie treści. Nie można jej zmienić po tworzeniu konta.</string> <string name="setup_name_explanation">Twoja nazwa użytkownika będzie wyświetlana przy każdej zamieszczonej przez Ciebie treści. Nie można jej zmienić po tworzeniu konta.</string>
<string name="setup_next">Dalej</string> <string name="setup_next">Dalej</string>
<string name="setup_password_intro">Wybierz Hasło</string> <string name="setup_password_intro">Wybierz Hasło</string>
<string name="setup_password_explanation">Twoje konto Briar jest przechowywane i szyfrowane na Twoim urządzeniu nie w chmurze. Jeśli zapomnisz hasła lub odinstalujesz Briar, nie ma możliwości aby odzyskać Twoje konto.\n\nWybierz długie hasło, które jest trudne do odgadnięcia, czyli takie z losowymi literami numerami i symbolami.</string> <string name="setup_password_explanation">Twoje konto Briar jest przechowywane w postaci zaszyfrowanej na Twoim urządzeniu, a nie w chmurze. Jeżeli zapomnisz hasło lub odinstalujesz Briar, nie da się odzyskać Twojego konta.\n\nWybierz długie hasło, które jest trudne do odgadnięcia, jak np. cztery losowe słowa, lub dziesięć losowych liter, liczb i symboli </string>
<string name="setup_doze_title">Połączenia w Tle</string> <string name="setup_doze_title">Połączenia w tle</string>
<string name="setup_doze_intro">Aby otrzymywać wiadomości, Briar musi utrzymywać połączenie w tle.</string> <string name="setup_doze_intro">Aby otrzymywać wiadomości, Briar musi utrzymywać połączenie w tle.</string>
<string name="setup_doze_explanation">Aby otrzymywać wiadomości, Briar musi utrzymywać połączenie w tle. Wyłącz optymalizacje baterii aby Briar mógł zostać połączony.</string> <string name="setup_doze_explanation">Aby otrzymywać wiadomości, Briar musi utrzymywać połączenie w tle. Wyłącz optymalizacje baterii aby Briar mógł utrzymywać połączenie w tle.</string>
<string name="setup_doze_button">Pozwól na Połączenia</string> <string name="setup_doze_button">Pozwól na Połączenia</string>
<string name="choose_nickname">Wybierz nazwę użytkownika</string> <string name="choose_nickname">Wybierz nazwę użytkownika</string>
<string name="choose_password">Wybierz hasło</string> <string name="choose_password">Wybierz hasło</string>
@@ -21,19 +21,19 @@
<string name="don_t_ask_again">Nie pytaj ponownie</string> <string name="don_t_ask_again">Nie pytaj ponownie</string>
<string name="setup_huawei_text">Proszę dotknąć przycisku poniżej i upewnić się, że Briar jest na liście chronionych aplikacji.</string> <string name="setup_huawei_text">Proszę dotknąć przycisku poniżej i upewnić się, że Briar jest na liście chronionych aplikacji.</string>
<string name="setup_huawei_button">Chroń Briar</string> <string name="setup_huawei_button">Chroń Briar</string>
<string name="setup_huawei_help">Jeśli Briar nie będzie na liście chronionych aplikacji nie będzie miał możliwości aby działać w tle.</string> <string name="setup_huawei_help">Jeśli Briar nie będzie na liście chronionych aplikacji, nie będzie miał możliwości aby działać w tle.</string>
<string name="warning_dozed">%s nie był wstanie działać w tle</string> <string name="warning_dozed">%s nie był wstanie działać w tle</string>
<!--Login--> <!--Login-->
<string name="enter_password">Hasło</string> <string name="enter_password">Hasło</string>
<string name="try_again">Złe hasło, spróbuj ponownie</string> <string name="try_again">Złe hasło, spróbuj ponownie</string>
<string name="sign_in_button">Zaloguj Się</string> <string name="sign_in_button">Zaloguj Się</string>
<string name="forgotten_password">Przypomnij hasło</string> <string name="forgotten_password">Zapomniałem hasło</string>
<string name="dialog_title_lost_password">Nie pamiętam hasła</string> <string name="dialog_title_lost_password">Nie pamiętam hasła</string>
<string name="dialog_message_lost_password">Twoje konto Briar jest zaszyfrowane na Twoim urządzeniu nie w chmurze, więc nie będzie można zresetować Twojego hasła. Czy chcesz usunąć swoje konto i stworzyć nowe?\n\nUwaga: Twoje hasła, kontakty i wiadomości będą utracone.</string> <string name="dialog_message_lost_password">Twoje konto Briar jest zaszyfrowane na Twoim urządzeniu nie w chmurze, więc nie będzie można zresetować Twojego hasła. Czy chcesz usunąć swoje konto i stworzyć nowe?\n\nUwaga: Twoje hasła, kontakty i wiadomości będą utracone.</string>
<string name="startup_failed_notification_title">Briar nie mógł się uruchomić</string> <string name="startup_failed_notification_title">Briar nie mógł się uruchomić</string>
<string name="startup_failed_notification_text">Więcej informacji</string> <string name="startup_failed_notification_text">Naciśnij, aby uzyskać więcej informacji</string>
<string name="startup_failed_activity_title">Briar nie mógł się uruchomić</string> <string name="startup_failed_activity_title">Briar nie mógł się uruchomić</string>
<string name="startup_failed_db_error">Niestety baza danych Briar została uszkodzona i nie można jej napraw. Twoje konto, dane i kontakty zostały utracone. Niestety musisz przeinstalować Briar lub utworzyć nowe konto wybierając opcje \"Zapomniałem hasła\".</string> <string name="startup_failed_db_error">Z jakiegoś powodu Twoja baza danych Briar została uszkodzona w stopniu uniemożliwiającym naprawę. Twoje konto, dane i kontakty zostały utracone. Niestety musisz przeinstalować Briar lub utworzyć nowe konto wybierając opcje \"Zapomniałem hasła\".</string>
<string name="startup_failed_data_too_old_error">Twoje konto zostało stworzone przez starszą wersję aplikacji i nie może zostać otwarte w tej wersji. Musisz zainstalować starszą wersję aplikacji lub utworzyć nowe konto klikając \"Zapomniałem hasła\".</string> <string name="startup_failed_data_too_old_error">Twoje konto zostało stworzone przez starszą wersję aplikacji i nie może zostać otwarte w tej wersji. Musisz zainstalować starszą wersję aplikacji lub utworzyć nowe konto klikając \"Zapomniałem hasła\".</string>
<string name="startup_failed_data_too_new_error">Ta wersja aplikacji jest zbyt stara. Proszę zaktualizować program do najnowszej wersji i spróbować ponownie.</string> <string name="startup_failed_data_too_new_error">Ta wersja aplikacji jest zbyt stara. Proszę zaktualizować program do najnowszej wersji i spróbować ponownie.</string>
<string name="startup_failed_service_error">Briar nie był w stanie uruchomić wybranego rozszerzenia. Przeinstalowanie Briar zwykle rozwiązuje ten problem. Pamiętaj jednak, że stracisz wtedy swoje konto i wszystkie powiązanie z nim dane, gdyż Briar nie używa centralnych serwerów by przechowywać dane.</string> <string name="startup_failed_service_error">Briar nie był w stanie uruchomić wybranego rozszerzenia. Przeinstalowanie Briar zwykle rozwiązuje ten problem. Pamiętaj jednak, że stracisz wtedy swoje konto i wszystkie powiązanie z nim dane, gdyż Briar nie używa centralnych serwerów by przechowywać dane.</string>
@@ -46,7 +46,7 @@
<string name="expiry_update">Okres testowania został wydłużony. Twoje konto wygaśnie za %d dni.</string> <string name="expiry_update">Okres testowania został wydłużony. Twoje konto wygaśnie za %d dni.</string>
<string name="expiry_date_reached">Ten program wygasł.\nDziękujemy za testy!</string> <string name="expiry_date_reached">Ten program wygasł.\nDziękujemy za testy!</string>
<string name="download_briar">Aby dalej korzystać z Briar, proszę pobrać wersję 1.0.</string> <string name="download_briar">Aby dalej korzystać z Briar, proszę pobrać wersję 1.0.</string>
<string name="create_new_account">Będzie potrzeba stworzenia nowego konta, ale możesz użyć takiej samej nazwy użytkownika.</string> <string name="create_new_account">Musisz utworz nowe konto, ale możesz użyć takiej samej nazwy użytkownika.</string>
<string name="download_briar_button">Pobierz Briar 1.0</string> <string name="download_briar_button">Pobierz Briar 1.0</string>
<string name="startup_open_database">Deszyfruję Bazę Danych...</string> <string name="startup_open_database">Deszyfruję Bazę Danych...</string>
<string name="startup_migrate_database">Aktualizuję Bazę Danych...</string> <string name="startup_migrate_database">Aktualizuję Bazę Danych...</string>
@@ -68,8 +68,8 @@
<string name="transport_lan">Wi-Fi</string> <string name="transport_lan">Wi-Fi</string>
<!--Notifications--> <!--Notifications-->
<string name="reminder_notification_title">Wylogowano z Briar</string> <string name="reminder_notification_title">Wylogowano z Briar</string>
<string name="reminder_notification_text">Dotknij aby zalogować.</string> <string name="reminder_notification_text">Dotknij, aby zalogować się ponownie</string>
<string name="reminder_notification_channel_title">Przypomnienie o zalogowaniu</string> <string name="reminder_notification_channel_title">Przypomnienie o zalogowaniu do Briar</string>
<string name="reminder_notification_dismiss">Odrzuć</string> <string name="reminder_notification_dismiss">Odrzuć</string>
<string name="ongoing_notification_title">Zalogowany w Briar</string> <string name="ongoing_notification_title">Zalogowany w Briar</string>
<string name="ongoing_notification_text">Dotknij aby otworzyć Briar</string> <string name="ongoing_notification_text">Dotknij aby otworzyć Briar</string>
@@ -127,51 +127,52 @@
<string name="no_private_messages">Brak wiadomości do pokazania</string> <string name="no_private_messages">Brak wiadomości do pokazania</string>
<string name="message_hint">Typ wiadomości</string> <string name="message_hint">Typ wiadomości</string>
<string name="image_caption_hint">Dodaj podpis (opcjonalne)</string> <string name="image_caption_hint">Dodaj podpis (opcjonalne)</string>
<string name="image_attach">Załącz zdjęcie</string> <string name="image_attach">Załącz obraz</string>
<string name="image_attach_error">Nie udało się dołączyć zdjęcia/zdjęć</string> <string name="image_attach_error">Nie udało się dołączyć obrazu(ów)</string>
<string name="image_attach_error_too_big">Zdjęcie jest zbyt duże. Limit wynosi %d MB.</string> <string name="image_attach_error_too_big">Obraz zajmuje za dużo. Limit wynosi %d MB.</string>
<string name="image_attach_error_invalid_mime_type">Format zdjęcia jest nieobsługiwany: %s</string> <string name="image_attach_error_invalid_mime_type">Format obrazu jest nieobsługiwany: %s</string>
<string name="set_contact_alias">Zmień imię kontaktu</string> <string name="set_contact_alias">Zmień nazwę kontaktu</string>
<string name="set_contact_alias_hint">Nazwa kontaktu</string> <string name="set_contact_alias_hint">Nazwa kontaktu</string>
<string name="set_alias_button">Zmień</string> <string name="set_alias_button">Zmień</string>
<string name="dialog_title_not_all_messages_deleted">Nie mogłem usunąć wszystkich wiadomości</string>
<string name="delete_contact">Usuń kontakt</string> <string name="delete_contact">Usuń kontakt</string>
<string name="dialog_title_delete_contact">Potwierdź usunięcie kontaktu</string> <string name="dialog_title_delete_contact">Potwierdź usunięcie kontaktu</string>
<string name="dialog_message_delete_contact">Czy na pewno chcesz usunąć ten kontakt i wszystkie wymienione z nim wiadomości?</string> <string name="dialog_message_delete_contact">Czy na pewno chcesz usunąć ten kontakt i wszystkie wymienione z nim wiadomości?</string>
<string name="contact_deleted_toast">Kontakt usunięty</string> <string name="contact_deleted_toast">Kontakt usunięty</string>
<!--This is shown in the action bar when opening an image in fullscreen that the user sent--> <!--This is shown in the action bar when opening an image in fullscreen that the user sent-->
<string name="you">You</string> <string name="you">Ty</string>
<string name="save_image">Zapisz obrazek</string> <string name="save_image">Zapisz obraz</string>
<string name="dialog_title_save_image">Zapisać Zdjęcie?</string> <string name="dialog_title_save_image">Zapisać obraz?</string>
<string name="dialog_message_save_image">Zapisanie tego zdjęcia pozwoli innym aplikacjom na dostęp do niego.\n\nJesteś pewien, że chcesz go zapisać?</string> <string name="dialog_message_save_image">Zapisanie tego obrazu pozwoli innym aplikacjom na dostęp do niego.\n\nJesteś pewien, że chcesz go zapisać?</string>
<string name="save_image_success">Zdjęcie zostało zapisane</string> <string name="save_image_success">Obraz został zapisany</string>
<string name="save_image_error">Nie udało się zapisać zdjęcia</string> <string name="save_image_error">Nie udało się zapisać obrazu</string>
<string name="dialog_title_no_image_support">Zdjęcie Niedostępne</string> <string name="dialog_title_no_image_support">Obrazy są niedostępne</string>
<string name="dialog_message_no_image_support">Briar twojego kontaktu nie obsługuje jeszcze załączników zdjęć. Jak wykonają aktualizację, zobaczysz inną ikonę.</string> <string name="dialog_message_no_image_support">Briar twoich kontaktów nie obsługuje jeszcze obrazów jako załączników. Jak wykonają aktualizację, zobaczysz inną ikonę.</string>
<string name="dialog_title_image_support">Możesz teraz wysyłać zdjęcia do tego kontaktu</string> <string name="dialog_title_image_support">Możesz teraz wysyłać obrazy do tego kontaktu</string>
<string name="dialog_message_image_support">Kliknij tą ikonę aby dołączyć zdjęcia.</string> <string name="dialog_message_image_support">Kliknij tą ikonę aby dołączyć obrazy</string>
<!--Adding Contacts--> <!--Adding Contacts-->
<string name="add_contact_title">Dodaj Kontakt w Pobliżu</string> <string name="add_contact_title">Dodaj kontakt w pobliżu</string>
<string name="face_to_face">Musisz spotkać się z osobą którą chcesz dodać jako kontakt.\n\nTo uniemożliwi komukolwiek podszyć się pod Ciebie lub czytać wysyłane wiadomości.</string> <string name="face_to_face">Musisz spotkać się z osobą którą chcesz dodać jako kontakt.\n\nTo uniemożliwi komukolwiek udawanie Ciebie lub czytanie Twoich wiadomości w przyszłości.</string>
<string name="continue_button">Kontynuuj</string> <string name="continue_button">Kontynuuj</string>
<string name="try_again_button">Spróbuj ponownie</string> <string name="try_again_button">Spróbuj ponownie</string>
<string name="waiting_for_contact_to_scan">Czekanie aż ktoś zeskanuje kod i połączy się\u2026</string> <string name="waiting_for_contact_to_scan">Czekanie aż kontakt zeskanuje kod i połączy się\u2026</string>
<string name="exchanging_contact_details">Wymienianie szczegółów dotyczących kontatku\u2026</string> <string name="exchanging_contact_details">Wymienianie szczegółów dotyczących kontatku\u2026</string>
<string name="contact_added_toast">Kontakt dodany: %s</string> <string name="contact_added_toast">Kontakt dodany: %s</string>
<string name="contact_already_exists">Kontakt %s już istnieje</string> <string name="contact_already_exists">Kontakt %s już istnieje</string>
<string name="qr_code_invalid">Kod QR jest nie prawidłowy</string> <string name="qr_code_invalid">Kod QR jest nieprawidłowy</string>
<string name="qr_code_too_old">Kod QR, który zeskanowałeś pochodzi od starszej wersji %s.\n\nPoproś swój kontakt do aktualizacji do najnowszej wersji i spróbuj ponownie.</string> <string name="qr_code_too_old">Kod QR, który zeskanowałeś pochodzi od starszej wersji %s.\n\nPoproś swój kontakt o zaktualizowanie do najnowszej wersji i wtedy spróbuj ponownie.</string>
<string name="qr_code_too_new">Kod QR, który zeskanowałeś pochodzi od nowszej wersji %s.\n\nZaktualizuj do najnowszej wersji i spróbuj ponownie.</string> <string name="qr_code_too_new">Kod QR, który zeskanowałeś pochodzi od nowszej wersji %s.\n\n Wykonaj aktualizację do najnowszej wersji i spróbuj ponownie.</string>
<string name="camera_error">Błąd aparatu</string> <string name="camera_error">Błąd aparatu</string>
<string name="connecting_to_device">Łączenie z urządzeniem\u2026</string> <string name="connecting_to_device">Łączenie z urządzeniem\u2026</string>
<string name="authenticating_with_device">Autoryzowanie z urządzeniem\u2026</string> <string name="authenticating_with_device">Autoryzowanie z urządzeniem\u2026</string>
<string name="connection_error_title">Nie udało się połączyć z kontaktem</string> <string name="connection_error_title">Nie udało się połączyć z kontaktem</string>
<string name="connection_error_explanation">Sprawdź czy oboje jesteście połączeni z tą samą siecią Wi-Fi.</string> <string name="connection_error_explanation">Sprawdź czy obaj jesteście połączeni z tą samą siecią Wi-Fi.</string>
<string name="connection_error_feedback">Jeśli problem będzie występować, proszę <a href="feedback">wysłać zgłoszenie</a> aby pomóc nam ulepszyć aplikację.</string> <string name="connection_error_feedback">Jeśli problem będzie występować dalej, proszę <a href="feedback">wysłać zgłoszenie</a> aby pomóc nam ulepszyć aplikację.</string>
<!--Adding Contacts Remotely--> <!--Adding Contacts Remotely-->
<string name="add_contact_remotely_title_case">Dodaj Kontakt na Odległość</string> <string name="add_contact_remotely_title_case">Dodaj Kontakt na odległość</string>
<string name="add_contact_nearby_title">Dodaj kontakt w pobliżu</string> <string name="add_contact_nearby_title">Dodaj kontakt w pobliżu</string>
<string name="add_contact_remotely_title">Dodaj kontakt na odległość</string> <string name="add_contact_remotely_title">Dodaj kontakt na odległość</string>
<string name="contact_name_hint">Daj pseudonim kontaktowi</string> <string name="contact_name_hint">Nadaj pseudonim kontaktowi</string>
<string name="contact_link_intro">Wprowadź tutaj link od swojego kontaktu</string> <string name="contact_link_intro">Wprowadź tutaj link od swojego kontaktu</string>
<string name="contact_link_hint">Link kontaktu</string> <string name="contact_link_hint">Link kontaktu</string>
<string name="paste_button">Wklej</string> <string name="paste_button">Wklej</string>
@@ -181,14 +182,14 @@
<string name="send_link_title">Wymień linki</string> <string name="send_link_title">Wymień linki</string>
<string name="add_contact_choose_nickname">Wybierz Pseudonim</string> <string name="add_contact_choose_nickname">Wybierz Pseudonim</string>
<string name="add_contact_choose_a_nickname">Wprowadź pseudonim</string> <string name="add_contact_choose_a_nickname">Wprowadź pseudonim</string>
<string name="nickname_intro">Daj pseudonim swojemu kontaktowi. Tylko ty możesz go widzieć.</string> <string name="nickname_intro">Nadaj pseudonim swojemu kontaktowi. Tylko ty możesz go widzieć.</string>
<string name="your_link">Podaj ten link kontaktowi, którego chcesz dodać</string> <string name="your_link">Podaj ten link kontaktowi, którego chcesz dodać</string>
<string name="link_clip_label">Link Briar</string> <string name="link_clip_label">Link Briar</string>
<string name="link_copied_toast">Link skopiowany</string> <string name="link_copied_toast">Link skopiowany</string>
<string name="adding_contact_error">Wystąpił błąd podczas dodawaniu kontaktu</string> <string name="adding_contact_error">Wystąpił błąd podczas dodawaniu kontaktu</string>
<string name="pending_contact_requests_snackbar">Są prośby oczekujących kontaktów</string> <string name="pending_contact_requests_snackbar">Są prośby o dodanie do kontaktów</string>
<string name="pending_contact_requests">Prośby Oczekujących Kontaktów</string> <string name="pending_contact_requests">Prośby o dodanie do kontaktów</string>
<string name="no_pending_contacts">Brak oczekujących kontaktów</string> <string name="no_pending_contacts">Brak próśb o dodanie do kontaktów</string>
<string name="add_contact_remote_connecting">Trwa łączenie...</string> <string name="add_contact_remote_connecting">Trwa łączenie...</string>
<string name="waiting_for_contact_to_come_online">Czekam, aż kontakt pojawi się online…</string> <string name="waiting_for_contact_to_come_online">Czekam, aż kontakt pojawi się online…</string>
<string name="connecting">Trwa łączenie...</string> <string name="connecting">Trwa łączenie...</string>
@@ -196,12 +197,12 @@
<string name="adding_contact_failed">Dodawanie kontaktu nie powiodło się</string> <string name="adding_contact_failed">Dodawanie kontaktu nie powiodło się</string>
<string name="dialog_title_remove_pending_contact">Potwierdź Usunięcie</string> <string name="dialog_title_remove_pending_contact">Potwierdź Usunięcie</string>
<string name="dialog_message_remove_pending_contact">Ten kontakt jest nadal dodawany. Jeżeli go teraz usuniesz, nie zostanie on dodany.</string> <string name="dialog_message_remove_pending_contact">Ten kontakt jest nadal dodawany. Jeżeli go teraz usuniesz, nie zostanie on dodany.</string>
<string name="own_link_error">Wprowadź link twojego kontaktu, nie swój</string> <string name="own_link_error">Wprowadź link twojego kontaktu, a nie swój</string>
<string name="nickname_missing">Proszę, wprowadź pseudonim</string> <string name="nickname_missing">Proszę, wprowadź pseudonim</string>
<string name="invalid_link">Niepoprawny pseudonim</string> <string name="invalid_link">Niepoprawny link</string>
<string name="unsupported_link">Ten link pochodzi od nowszej wersji Briara. Zaktualizuj do najnowszej wersji i spróbuj ponownie.</string> <string name="unsupported_link">Ten link pochodzi od nowszej wersji Briara. Wykonaj aktualizację do najnowszej wersji i spróbuj ponownie.</string>
<string name="intent_own_link">Otworzyłeś swój własny link. Użyj jednego z kontaktów, którego chcesz dodać!</string> <string name="intent_own_link">Otworzyłeś swój własny link. Użyj linku od kontaktu, którego chcesz dodać!</string>
<string name="missing_link">Proszę, wprowadź link</string> <string name="missing_link">Proszę wprowadź link</string>
<!--This is a numeral indicating the first step in a series of screens--> <!--This is a numeral indicating the first step in a series of screens-->
<string name="step_1">1</string> <string name="step_1">1</string>
<!--This is a numeral indicating the second step in a series of screens--> <!--This is a numeral indicating the second step in a series of screens-->
@@ -213,45 +214,45 @@
<item quantity="other">Dodano %d nowych kontaktów.</item> <item quantity="other">Dodano %d nowych kontaktów.</item>
</plurals> </plurals>
<string name="adding_contact_slow_warning">Dodawanie tego kontaktu zajmuje więcej czasu niż zwykle</string> <string name="adding_contact_slow_warning">Dodawanie tego kontaktu zajmuje więcej czasu niż zwykle</string>
<string name="adding_contact_slow_title">Nie Można Połączyć się z Kontaktem</string> <string name="adding_contact_slow_title">Nie można połączyć się z Kontaktem</string>
<string name="adding_contact_slow_text">Dodawanie tego kontaktu zajmuje więcej czasu niż zwykle.\n\nProsze sprawdź czy twój kontakt otrzymał twój link i ciebie dodał:</string> <string name="adding_contact_slow_text">Dodawanie tego kontaktu zajmuje więcej czasu niż zwykle.\n\nProsze sprawdź czy twój kontakt otrzymał twój link i ciebie dodał:</string>
<string name="offline_state">Brak połączenia z Internetem</string> <string name="offline_state">Brak połączenia z Internetem</string>
<string name="duplicate_link_dialog_title">Link Duplikat</string> <string name="duplicate_link_dialog_title">Duplikat Linku</string>
<string name="duplicate_link_dialog_text_1">Masz już oczekujący kontakt z tym linkiem: %s</string> <string name="duplicate_link_dialog_text_1">Masz już oczekujący kontakt z tym linkiem: %s</string>
<!--This is a question asking whether two nicknames refer to the same person--> <!--This is a question asking whether two nicknames refer to the same person-->
<string name="duplicate_link_dialog_text_2">Czy %s i %s to te same osoby?</string> <string name="duplicate_link_dialog_text_2">Czy %s i %s to ta sama osoba?</string>
<!--This is a button for answering that two nicknames do indeed refer to the same person. This <!--This is a button for answering that two nicknames do indeed refer to the same person. This
string will be used in a dialog button, so if the translation of this string is longer than 20 string will be used in a dialog button, so if the translation of this string is longer than 20
characters, please use "Yes" instead, and use "No" for the "Different Person" button--> characters, please use "Yes" instead, and use "No" for the "Different Person" button-->
<string name="same_person_button">Ta Sama Osoba</string> <string name="same_person_button">Ta sama osoba</string>
<!--This is a button for answering that two nicknames refer to different people. This string <!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters, will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button--> please use "No" instead, and use "Yes" for the "Same Person" button-->
<string name="different_person_button">Inna Osoba</string> <string name="different_person_button">Inna osoba</string>
<string name="duplicate_link_dialog_text_3">%s i %s wysłał ci ten sam link.\n\nJeden z nich może próbować odkryć, kim są twoje kontakty.\n\nNie mów im, że otrzymałeś ten sam link od kogoś innego.</string> <string name="duplicate_link_dialog_text_3">%s i %s wysłał ci ten sam link.\n\nJeden z nich może próbować odkryć, kim są twoje kontakty.\n\nNie mów im, że otrzymałeś ten sam link od kogoś innego.</string>
<string name="pending_contact_updated_toast">Oczekujący kontakt zaktualizowany</string> <string name="pending_contact_updated_toast">Oczekujący kontakt zaktualizowany</string>
<!--Introductions--> <!--Introductions-->
<string name="introduction_onboarding_title">Udostępnij swoje kontakty.</string> <string name="introduction_onboarding_title">Przedstaw swoje kontakty.</string>
<string name="introduction_onboarding_text">Możesz udostępniać kontakty, tak aby osoby nie musiały spotykać się osobiście.</string> <string name="introduction_onboarding_text">Możesz przedstawić twoje kontakty sobie nawzajem, wtedy nie będą musiały spotykać się osobiście, żeby połączyć się w Briar</string>
<string name="introduction_menu_item">Udostępnij</string> <string name="introduction_menu_item">Wykonaj przedstawienie</string>
<string name="introduction_activity_title">Wybierz kontakt</string> <string name="introduction_activity_title">Wybierz kontakt</string>
<string name="introduction_not_possible">Masz już jedno udostępnianie w toku. Proszę pozwolić aby proces zakończył się. Jeśli kontakty są rzadko online, może to zabrać trochę czasu.</string> <string name="introduction_not_possible">Masz już jedno przedstawienie w toku. Proszę pozwolić aby proces najpierw się zakończył. Jeśli ty, albo twoje kontakty są rzadko online, może to zabrać trochę czasu.</string>
<string name="introduction_message_title">Udostępnij kontakty</string> <string name="introduction_message_title">Przedstaw kontakty</string>
<string name="introduction_message_hint">Dodaj wiadomość (opcjonalne)</string> <string name="introduction_message_hint">Dodaj wiadomość (opcjonalne)</string>
<string name="introduction_button">Udostępnij</string> <string name="introduction_button">Wykonaj przedstawienie</string>
<string name="introduction_sent">Udostępnianie zostało wysłane.</string> <string name="introduction_sent">Twoje przedstawienie zostało wysłane.</string>
<string name="introduction_error">Wystąpił błąd podczas udostępniania.</string> <string name="introduction_error">Wystąpił błąd podczas wykonywania przedstawienia.</string>
<string name="introduction_response_error">Wystąpił błąd podczas odpowiedzi na udostępnienie</string> <string name="introduction_response_error">Wystąpił błąd podczas odpowiedzi na przedstawienie</string>
<string name="introduction_request_sent">Udostępniłeś %1$s kontaktowi %2$s.</string> <string name="introduction_request_sent">Poprosiłeś o przedstawienie %1$s kontaktowi %2$s.</string>
<string name="introduction_request_received">%1$s poprosił o udostępnienie Twojego kontaktu dla %2$s. Czy chcesz dodać %2$s do listy kontaktów?</string> <string name="introduction_request_received">%1$s poprosił o możliwość przedstawienia Ciebie kontaktowi %2$s. Czy chcesz dodać %2$s do listy kontaktów?</string>
<string name="introduction_request_exists_received">%1$s poprosił o udostępnienie Twojego kontaktu dla %2$s, ale %2$s jest już na liście Twoich kontaktów. Jednak %1$s o tym nie wie i możesz odpowiedzieć:</string> <string name="introduction_request_exists_received">%1$s poprosił o możliwość przedstawienia Ciebie kontaktowi %2$s, ale %2$s jest już na liście Twoich kontaktów. Skoro %1$s może o tym nie wiedzieć, możesz nadal odpowiedzieć:</string>
<string name="introduction_request_answered_received">%1$s poprosił aby udostępnić Twój kontakt dla %2$s.</string> <string name="introduction_request_answered_received">%1$s poprosił o możliwość przedstawienia Ciebie kontaktowi %2$s.</string>
<string name="introduction_response_accepted_sent">Zaakceptowałeś kontakt %1$s.</string> <string name="introduction_response_accepted_sent">Zaakceptowałeś przedstawienie kontaktowi %1$s.</string>
<string name="introduction_response_accepted_sent_info">Zanim %1$s zostanie dodany jako Twój kontakt, musi także zaakceptować udostępnienie. To może trochę potrwać.</string> <string name="introduction_response_accepted_sent_info">Zanim %1$s zostanie dodany jako Twój kontakt, musi także zaakceptować przedstawienie. To może trochę potrwać.</string>
<string name="introduction_response_declined_sent">Odrzuciłeś udostępnienie kontaktu do %1$s.</string> <string name="introduction_response_declined_sent">Odrzuciłeś przedstawienie dla kontaktu%1$s.</string>
<string name="introduction_response_accepted_received">%1$s zaakceptował udostępnienie kontaktu %2$s</string> <string name="introduction_response_accepted_received">%1$s zaakceptował przedstawienie kontaktowi %2$s</string>
<string name="introduction_response_declined_received">%1$s odrzucił udostępnienie kontaktu %2$s</string> <string name="introduction_response_declined_received">%1$s odrzucił przedstawienie kontaktowi %2$s</string>
<string name="introduction_response_declined_received_by_introducee">%1$s mówi, że %2$s odrzucił udostępnienie kontaktu.</string> <string name="introduction_response_declined_received_by_introducee">%1$s mówi, że %2$s odrzucił przedstawienie</string>
<!--Private Groups--> <!--Private Groups-->
<string name="groups_list_empty">Brak grup do pokazania</string> <string name="groups_list_empty">Brak grup do pokazania</string>
<string name="groups_list_empty_action">Dotknij ikonkę + aby stworzyć grupę, lub poprosić kontakty o ich udostępnienie</string> <string name="groups_list_empty_action">Dotknij ikonkę + aby stworzyć grupę, lub poprosić kontakty o ich udostępnienie</string>
@@ -281,10 +282,10 @@
<string name="groups_leave_dialog_message">Jesteś pewny, że chcesz opuścić tą grupę?</string> <string name="groups_leave_dialog_message">Jesteś pewny, że chcesz opuścić tą grupę?</string>
<string name="groups_dissolve">Rozwiąż Grupę</string> <string name="groups_dissolve">Rozwiąż Grupę</string>
<string name="groups_dissolve_dialog_title">Potwierdź Rozwiązanie Grupy</string> <string name="groups_dissolve_dialog_title">Potwierdź Rozwiązanie Grupy</string>
<string name="groups_dissolve_dialog_message">Czy chcesz rozwiązać tą grupę?\n\nWszyscy członkowie nie będą mogli kontynuować swoich konwersacji ani otrzymywać wiadomości.</string> <string name="groups_dissolve_dialog_message">Czy chcesz rozwiązać tą grupę?\n\nPozostali członkowie nie będą mogli kontynuować swoich konwersacji oraz mogą nie otrzymać najnowszych wiadomości</string>
<string name="groups_dissolve_button">Rozwiąż</string> <string name="groups_dissolve_button">Rozwiąż</string>
<string name="groups_dissolved_dialog_title">Grupa Została Rozwiązana</string> <string name="groups_dissolved_dialog_title">Grupa Została Rozwiązana</string>
<string name="groups_dissolved_dialog_message">Twórca tej grupy rozwiązał ją.\n\nNie możesz już więcej pisać z członkami grupy ani czytpostów które zostały już napisane.</string> <string name="groups_dissolved_dialog_message">Twórca tej grupy rozwiązał ją.\n\nNie możesz już więcej pisać wiadomości do grupy i możesz nie otrzymwszystkich wiadomości które zostały napisane.</string>
<!--Private Group Invitations--> <!--Private Group Invitations-->
<string name="groups_invitations_title">Zaproszenia do Grup</string> <string name="groups_invitations_title">Zaproszenia do Grup</string>
<string name="groups_invitations_invitation_sent">Zaprosiłeś %1$s aby dołączył do grupy \"%2$s\".</string> <string name="groups_invitations_invitation_sent">Zaprosiłeś %1$s aby dołączył do grupy \"%2$s\".</string>
@@ -301,16 +302,16 @@
<string name="groups_invitations_response_declined_sent">Odrzuciłeś zaproszenie do grupy od %s.</string> <string name="groups_invitations_response_declined_sent">Odrzuciłeś zaproszenie do grupy od %s.</string>
<string name="groups_invitations_response_accepted_received">%s przyjął zaproszenie do grupy.</string> <string name="groups_invitations_response_accepted_received">%s przyjął zaproszenie do grupy.</string>
<string name="groups_invitations_response_declined_received">%s odrzucił zaproszenie do grupy.</string> <string name="groups_invitations_response_declined_received">%s odrzucił zaproszenie do grupy.</string>
<string name="sharing_status_groups">Tylko osoba która utworzyła grupę może zapraszać nowych użytkowników do grupy. Poniżej są osoby, które dołączyły do grupy.</string> <string name="sharing_status_groups">Tylko osoba która utworzyła grupę może zapraszać nowych użytkowników do grupy. Poniżej są wszyscy aktualni członkowie grupy.</string>
<!--Private Groups Revealing Contacts--> <!--Private Groups Revealing Contacts-->
<string name="groups_reveal_contacts">Ujawnij kontakty</string> <string name="groups_reveal_contacts">Ujawnij kontakty</string>
<string name="groups_reveal_dialog_message">Możesz wybrać czy chcesz ujawnić kontakty dla wszystkich aktualnych i przyszłych członków tej grupy.\n\nUjawnienie kontaktów sprawia że połączenie do grupy jest szybsze i bardziej stabilne, ponieważ możesz komunikować się z ujawnionymi kontaktami nawet wtedy kiedy twórca grupy jest offline.</string> <string name="groups_reveal_dialog_message">Możesz wybrać czy chcesz ujawnić kontakty dla wszystkich aktualnych i przyszłych członków tej grupy.\n\nUjawnienie kontaktów sprawia że połączenie do grupy jest szybsze i bardziej stabilne, ponieważ możesz komunikować się z ujawnionymi kontaktami nawet wtedy kiedy twórca grupy jest offline.</string>
<string name="groups_reveal_visible">Powiązanie kontaktów jest widoczne dla grupy</string> <string name="groups_reveal_visible">Powiązanie kontaktów jest widoczne dla grupy</string>
<string name="groups_reveal_visible_revealed_by_us">Relacje kontaktów są widoczne dla grupy (ujawnione przez Ciebie)</string> <string name="groups_reveal_visible_revealed_by_us">Relacje kontaktów są widoczne dla grupy (ujawnione przez Ciebie)</string>
<string name="groups_reveal_visible_revealed_by_contact">Relacje kontaktów są widoczne dla grupy (ujawnione przez %s)</string> <string name="groups_reveal_visible_revealed_by_contact">Relacje kontaktów są widoczne dla grupy (ujawnione przez %s)</string>
<string name="groups_reveal_invisible">Relacje kontaktów są nie widoczne dla grupy</string> <string name="groups_reveal_invisible">Relacje kontaktów są niewidoczne dla grupy</string>
<!--Forums--> <!--Forums-->
<string name="no_forums">Brak for do pokazania</string> <string name="no_forums">Brak forów do pokazania</string>
<string name="no_forums_action">Dotknij ikonkę + aby stworzyć forum, lub poprosić kontakty o ich udostępnienie</string> <string name="no_forums_action">Dotknij ikonkę + aby stworzyć forum, lub poprosić kontakty o ich udostępnienie</string>
<string name="create_forum_title">Stwórz Forum</string> <string name="create_forum_title">Stwórz Forum</string>
<string name="choose_forum_hint">Wybierz nazwę dla swojego forum</string> <string name="choose_forum_hint">Wybierz nazwę dla swojego forum</string>
@@ -329,7 +330,7 @@
<string name="btn_reply">Odpowiedz</string> <string name="btn_reply">Odpowiedz</string>
<string name="forum_leave">Opuść Forum</string> <string name="forum_leave">Opuść Forum</string>
<string name="dialog_title_leave_forum">Potwierdź Opuszczenie Forum</string> <string name="dialog_title_leave_forum">Potwierdź Opuszczenie Forum</string>
<string name="dialog_message_leave_forum">Jesteś pewny, że chcesz opuścić to forum?\n\nWszystkie kontakty którym udostępniłeś to forum mogą przestać otrzymywać powiadomienia.</string> <string name="dialog_message_leave_forum">Jesteś pewny, że chcesz opuścić to forum?\n\nWszystkie kontakty którym udostępniłeś to forum mogą przestać otrzymywać uaktualnienia postów</string>
<string name="dialog_button_leave">Opuść</string> <string name="dialog_button_leave">Opuść</string>
<string name="forum_left_toast">Opuścił/a Forum</string> <string name="forum_left_toast">Opuścił/a Forum</string>
<!--Forum Sharing--> <!--Forum Sharing-->
@@ -343,7 +344,7 @@
<string name="forum_share_error">Wystąpił problem podczas udostępniania tego forum.</string> <string name="forum_share_error">Wystąpił problem podczas udostępniania tego forum.</string>
<string name="forum_invitation_received">%1$s udostępnił Ci forum \"%2$s\"</string> <string name="forum_invitation_received">%1$s udostępnił Ci forum \"%2$s\"</string>
<string name="forum_invitation_sent">Udostępniłeś forum \"%1$s\" użytkownikowi %2$s.</string> <string name="forum_invitation_sent">Udostępniłeś forum \"%1$s\" użytkownikowi %2$s.</string>
<string name="forum_invitations_title">Zaproszenia do for</string> <string name="forum_invitations_title">Zaproszenia do forów</string>
<string name="forum_invitation_exists">Już zaakceptowałeś zaproszenie do tego forum.\n\nAkceptowanie większej ilości zaproszeń sprawi, że Twoje połączenie będzie szybsze i bardziej stabilne.</string> <string name="forum_invitation_exists">Już zaakceptowałeś zaproszenie do tego forum.\n\nAkceptowanie większej ilości zaproszeń sprawi, że Twoje połączenie będzie szybsze i bardziej stabilne.</string>
<string name="forum_joined_toast">Dołączył do forum</string> <string name="forum_joined_toast">Dołączył do forum</string>
<string name="forum_declined_toast">Zaproszenie odrzucone</string> <string name="forum_declined_toast">Zaproszenie odrzucone</string>
@@ -371,11 +372,11 @@
<string name="blogs_publish_blog_post">Opublikuj</string> <string name="blogs_publish_blog_post">Opublikuj</string>
<string name="blogs_blog_post_created">Wpis na Bloga Utworzony</string> <string name="blogs_blog_post_created">Wpis na Bloga Utworzony</string>
<string name="blogs_blog_post_received">Otrzymano Nowy Wpis z Bloga</string> <string name="blogs_blog_post_received">Otrzymano Nowy Wpis z Bloga</string>
<string name="blogs_blog_post_scroll_to">Przewiń Do</string> <string name="blogs_blog_post_scroll_to">Przewiń do</string>
<string name="blogs_feed_empty_state">Brak postów do pokazania</string> <string name="blogs_feed_empty_state">Brak postów do pokazania</string>
<string name="blogs_feed_empty_state_action">Posty twoich od Twoich kontaktów i blogów które subskrybujesz pojawią się tutaj\n\nDotknij ikonki długopisu aby napisać post</string> <string name="blogs_feed_empty_state_action">Postyod Twoich kontaktów i blogów które subskrybujesz pojawią się tutaj\n\nDotknij ikonki długopisu aby napisać post</string>
<string name="blogs_remove_blog">Usuń Blog</string> <string name="blogs_remove_blog">Usuń Blog</string>
<string name="blogs_remove_blog_dialog_message">Jesteś pewny, że chcesz usunąć ten blog?\n\nPosty będą usunięte z Twojego urządzenia ale nie z urządzeń innych osób.\n\nWszystkie kontakty którym udostępniłeś ten blog mogą przestać otrzymywać powiadomienia.</string> <string name="blogs_remove_blog_dialog_message">Jesteś pewny, że chcesz usunąć ten blog?\n\nPosty będą usunięte z Twojego urządzenia ale nie z urządzeń innych osób.\n\nWszystkie kontakty którym udostępniłeś ten blog mogą przestać otrzymywać aktualizacje postów.</string>
<string name="blogs_remove_blog_ok">Usuń</string> <string name="blogs_remove_blog_ok">Usuń</string>
<string name="blogs_blog_removed">Blog usunięty</string> <string name="blogs_blog_removed">Blog usunięty</string>
<string name="blogs_reblog_comment_hint">Dodaj komentarz (opcjonalne)</string> <string name="blogs_reblog_comment_hint">Dodaj komentarz (opcjonalne)</string>
@@ -396,25 +397,25 @@
<string name="blogs_sharing_declined_toast">Zaproszenie odrzucone</string> <string name="blogs_sharing_declined_toast">Zaproszenie odrzucone</string>
<string name="sharing_status_blog">Każdy kto subskrybuje blog może go udostępnić swoim kontaktom. Udostępniasz ten blog następującym kontaktom. Mogą być tu także subskrybenci których nie możesz zobaczyć.</string> <string name="sharing_status_blog">Każdy kto subskrybuje blog może go udostępnić swoim kontaktom. Udostępniasz ten blog następującym kontaktom. Mogą być tu także subskrybenci których nie możesz zobaczyć.</string>
<!--RSS Feeds--> <!--RSS Feeds-->
<string name="blogs_rss_feeds_import">Zaimportuj RSS</string> <string name="blogs_rss_feeds_import">Zaimportuj kanał RSS</string>
<string name="blogs_rss_feeds_import_button">Zaimportuj</string> <string name="blogs_rss_feeds_import_button">Zaimportuj</string>
<string name="blogs_rss_feeds_import_hint">Wprowadź adres URL do RSS</string> <string name="blogs_rss_feeds_import_hint">Wprowadź adres URL do kanału RSS</string>
<string name="blogs_rss_feeds_import_error">Wystąpił błąd podczas importowania.</string> <string name="blogs_rss_feeds_import_error">Przepraszamy! Wystąpił błąd podczas importowania twojego kanału RSS</string>
<string name="blogs_rss_feeds_manage">Zarządzaj RSS</string> <string name="blogs_rss_feeds_manage">Zarządzaj kanałami RSS</string>
<string name="blogs_rss_feeds_manage_imported">Zaimportowane:</string> <string name="blogs_rss_feeds_manage_imported">Zaimportowane:</string>
<string name="blogs_rss_feeds_manage_author">Autor:</string> <string name="blogs_rss_feeds_manage_author">Autor:</string>
<string name="blogs_rss_feeds_manage_updated">Ostatnio Zaktualizowane:</string> <string name="blogs_rss_feeds_manage_updated">Ostatnio Zaktualizowane:</string>
<string name="blogs_rss_remove_feed">Usuń RSS</string> <string name="blogs_rss_remove_feed">Usuń kanał RSS</string>
<string name="blogs_rss_remove_feed_dialog_message">Jesteś pewny, że chcesz usunąć tą tablicę?\n\nPosty będą usunięte z Twojego urządzenia ale nie z urządzeń innych ludzi.\n\nWszystkie kontakty którym udostępniłeś ten blog mogą przestać otrzymywać powiadomienia.</string> <string name="blogs_rss_remove_feed_dialog_message">Jesteś pewny, że chcesz usunąć ten kanał RSS?\n\nPosty będą usunięte z Twojego urządzenia, ale nie z urządzeń innych ludzi.\n\nWszystkie kontakty którym udostępniłeś ten kanał mogą przestać otrzymywać jego uaktualnienia</string>
<string name="blogs_rss_remove_feed_ok">Usuń</string> <string name="blogs_rss_remove_feed_ok">Usuń</string>
<string name="blogs_rss_feeds_manage_delete_error">Kanał nie mógł zostać usunięty!</string> <string name="blogs_rss_feeds_manage_delete_error">Kanał nie mógł zostać usunięty!</string>
<string name="blogs_rss_feeds_manage_empty_state">Brak RSS do wyświetlenia\n\nDotknij ikonki + aby zaimportować</string> <string name="blogs_rss_feeds_manage_empty_state">Brak RSS do wyświetlenia\n\nDotknij ikonki + aby zaimportować kanał.</string>
<string name="blogs_rss_feeds_manage_error">Wystąpił problem podczas ładowania twoich RSS. Proszę spróbować ponownie.</string> <string name="blogs_rss_feeds_manage_error">Wystąpił problem podczas ładowania twoich kanałów RSS. Proszę spróbować ponownie później.</string>
<!--Settings Display--> <!--Settings Display-->
<string name="pref_language_title">Język &amp; region</string> <string name="pref_language_title">Język &amp; region</string>
<string name="pref_language_changed">Aby zastosować ustawienia musisz zrestartować Briar. Proszę się wylogować i zrestartować Briar.</string> <string name="pref_language_changed">Te ustawienia zostaną zastosowane gdy zrestartujesz Briar. Proszę się wylogować i zrestartować Briar.</string>
<string name="pref_language_default">Domyślny systemu</string> <string name="pref_language_default">Domyślny systemu</string>
<string name="display_settings_title">Wyświetl</string> <string name="display_settings_title">Wyświetlacz</string>
<string name="pref_theme_title">Motyw</string> <string name="pref_theme_title">Motyw</string>
<string name="pref_theme_light">Jasny</string> <string name="pref_theme_light">Jasny</string>
<string name="pref_theme_dark">Ciemny</string> <string name="pref_theme_dark">Ciemny</string>
@@ -424,7 +425,7 @@
<string name="network_settings_title">Sieci</string> <string name="network_settings_title">Sieci</string>
<string name="bluetooth_setting">Połącz przez Bluetooth</string> <string name="bluetooth_setting">Połącz przez Bluetooth</string>
<string name="bluetooth_setting_enabled">Zawsze wtedy gdy kontakty są w pobliżu</string> <string name="bluetooth_setting_enabled">Zawsze wtedy gdy kontakty są w pobliżu</string>
<string name="bluetooth_setting_disabled">Tylko gdy doda kontakty</string> <string name="bluetooth_setting_disabled">Tylko przy dodawaniu kontaktów</string>
<string name="tor_network_setting">Połącz przez Internet (Tor)</string> <string name="tor_network_setting">Połącz przez Internet (Tor)</string>
<string name="tor_network_setting_automatic">Automatycznie bazując na lokalizacji</string> <string name="tor_network_setting_automatic">Automatycznie bazując na lokalizacji</string>
<string name="tor_network_setting_without_bridges">Używaj Tor bez mostów</string> <string name="tor_network_setting_without_bridges">Używaj Tor bez mostów</string>
@@ -440,7 +441,7 @@
<string name="pref_lock_title">Blokada aplikacji</string> <string name="pref_lock_title">Blokada aplikacji</string>
<string name="pref_lock_summary">Użyj blokady ekranu urządzenia by chronić Briar gdy zalogowany</string> <string name="pref_lock_summary">Użyj blokady ekranu urządzenia by chronić Briar gdy zalogowany</string>
<string name="pref_lock_disabled_summary">Aby użyć tej funkcji skonfiguruj blokadę ekranu na swoim urządzeniu</string> <string name="pref_lock_disabled_summary">Aby użyć tej funkcji skonfiguruj blokadę ekranu na swoim urządzeniu</string>
<string name="pref_lock_timeout_title">Czas bezczynności aplikacji</string> <string name="pref_lock_timeout_title">Blokada aplikacji po czasie bezczynności</string>
<!--The %s placeholder is replaced with the following time spans, e.g. 5 Minutes, 1 Hour--> <!--The %s placeholder is replaced with the following time spans, e.g. 5 Minutes, 1 Hour-->
<string name="pref_lock_timeout_summary">Gdy nie używam Briar, automatycznie zablokuj po %s</string> <string name="pref_lock_timeout_summary">Gdy nie używam Briar, automatycznie zablokuj po %s</string>
<!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"--> <!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"-->
@@ -464,18 +465,18 @@
<string name="panic_setting_title">Przycisk wyjścia awaryjnego</string> <string name="panic_setting_title">Przycisk wyjścia awaryjnego</string>
<string name="panic_setting_hint">Skonfiguruj jak Briar ma zareagować gdy wciśniesz przycisk wyjścia awaryjnego</string> <string name="panic_setting_hint">Skonfiguruj jak Briar ma zareagować gdy wciśniesz przycisk wyjścia awaryjnego</string>
<string name="panic_app_setting_title">Aplikacja Przycisku Wyjścia Awaryjnego</string> <string name="panic_app_setting_title">Aplikacja Przycisku Wyjścia Awaryjnego</string>
<string name="unknown_app">nie znana aplikacja</string> <string name="unknown_app">nieznana aplikacja</string>
<string name="panic_app_setting_summary">Żadna aplikacja nie została ustawiona</string> <string name="panic_app_setting_summary">Żadna aplikacja nie została ustawiona</string>
<string name="panic_app_setting_none">Brak</string> <string name="panic_app_setting_none">Brak</string>
<string name="dialog_title_connect_panic_app">Potwierdź Awaryjną Aplikację</string> <string name="dialog_title_connect_panic_app">Potwierdź Awaryjną Aplikację</string>
<string name="dialog_message_connect_panic_app">Czy na pewno chcesz pozwolić %1$s aby działała jako przycisk wyjścia awaryjnego?</string> <string name="dialog_message_connect_panic_app">Czy na pewno chcesz pozwolić %1$s aby działała jako przycisk wyjścia awaryjnego?</string>
<string name="panic_setting_destructive_action">Działania Destrukcyjne</string> <string name="panic_setting_destructive_action">Działania Destrukcyjne</string>
<string name="panic_setting_signout_title">Wyloguj się</string> <string name="panic_setting_signout_title">Wyloguj się</string>
<string name="panic_setting_signout_summary">Wyloguj się z Briar jeśli przycisk zostanie wciśnięty</string> <string name="panic_setting_signout_summary">Wyloguj się z Briar jeśli przycisk awaryjny zostanie wciśnięty</string>
<string name="purge_setting_title">Skasuj Konto</string> <string name="purge_setting_title">Skasuj Konto</string>
<string name="purge_setting_summary">Skasuj Twoje konto Briar jeśli przycisk wyjścia awaryjnego zostanie wciśnięty. Ostrzeżenie: Ta akcja usunie permanentnie Twoje konto, kontakty i wiadomości</string> <string name="purge_setting_summary">Skasuj Twoje konto Briar jeśli przycisk wyjścia awaryjnego zostanie wciśnięty. Ostrzeżenie: Ta akcja usunie permanentnie Twoje konto, kontakty i wiadomości</string>
<string name="uninstall_setting_title">Odinstaluj Briar</string> <string name="uninstall_setting_title">Odinstaluj Briar</string>
<string name="uninstall_setting_summary">To wymaga manualnego potwierdzenia w przypadku aktywowania</string> <string name="uninstall_setting_summary">To wymaga manualnego potwierdzenia w przypadku aktywowania procedury awaryjnej</string>
<!--Settings Notifications--> <!--Settings Notifications-->
<string name="notification_settings_title">Powiadomienia</string> <string name="notification_settings_title">Powiadomienia</string>
<string name="notify_sign_in_title">Przypomnij mi by się zalogować</string> <string name="notify_sign_in_title">Przypomnij mi by się zalogować</string>
@@ -484,14 +485,14 @@
<string name="notify_private_messages_setting_summary">Pokaż powiadomienia dla prywatnych wiadomości</string> <string name="notify_private_messages_setting_summary">Pokaż powiadomienia dla prywatnych wiadomości</string>
<string name="notify_private_messages_setting_summary_26">Skonfiguruj powiadomienia dla prywatnych wiadomości</string> <string name="notify_private_messages_setting_summary_26">Skonfiguruj powiadomienia dla prywatnych wiadomości</string>
<string name="notify_group_messages_setting_title">Wiadomości grupowe</string> <string name="notify_group_messages_setting_title">Wiadomości grupowe</string>
<string name="notify_group_messages_setting_summary">Pokaż powiadomienia dla aplikacji grupowych</string> <string name="notify_group_messages_setting_summary">Pokaż powiadomienia dla wiadomości grupowych</string>
<string name="notify_group_messages_setting_summary_26">Skonfiguruj powiadomienia dla wiadomości grupowych</string> <string name="notify_group_messages_setting_summary_26">Skonfiguruj powiadomienia dla wiadomości grupowych</string>
<string name="notify_forum_posts_setting_title">Posty na forum</string> <string name="notify_forum_posts_setting_title">Posty na forum</string>
<string name="notify_forum_posts_setting_summary">Pokazuj powiadomienia dla postów w forach</string> <string name="notify_forum_posts_setting_summary">Pokazuj powiadomienia dla postów na forach</string>
<string name="notify_forum_posts_setting_summary_26">Skonfiguruj powiadomienia dla postów w forach</string> <string name="notify_forum_posts_setting_summary_26">Skonfiguruj powiadomienia dla postów na forach</string>
<string name="notify_blog_posts_setting_title">Wpisy na blogach</string> <string name="notify_blog_posts_setting_title">Wpisy na blogach</string>
<string name="notify_blog_posts_setting_summary">Pokazuj powiadomienia dla wpisów na blogach</string> <string name="notify_blog_posts_setting_summary">Pokazuj powiadomienia dla wpisów na blogach</string>
<string name="notify_blog_posts_setting_summary_26">Skonfiguruj alerty dla wpisów na blogach</string> <string name="notify_blog_posts_setting_summary_26">Skonfiguruj powiadomienia dla wpisów na blogach</string>
<string name="notify_vibration_setting">Wibruj</string> <string name="notify_vibration_setting">Wibruj</string>
<string name="notify_sound_setting">Dźwięk</string> <string name="notify_sound_setting">Dźwięk</string>
<string name="notify_sound_setting_default">Domyślny dzwonek</string> <string name="notify_sound_setting_default">Domyślny dzwonek</string>
@@ -499,26 +500,26 @@
<string name="choose_ringtone_title">Wybierz dzwonek</string> <string name="choose_ringtone_title">Wybierz dzwonek</string>
<string name="cannot_load_ringtone">Nie mogę załadować dzwonka</string> <string name="cannot_load_ringtone">Nie mogę załadować dzwonka</string>
<!--Settings Feedback--> <!--Settings Feedback-->
<string name="feedback_settings_title">Wsparcie</string> <string name="feedback_settings_title">Twoja opinia</string>
<string name="send_feedback">Wyślij wsparcie</string> <string name="send_feedback">Wyślij opinię</string>
<!--Link Warning--> <!--Link Warning-->
<string name="link_warning_title">Uważaj na link</string> <string name="link_warning_title">Ostrzeżenie o linku</string>
<string name="link_warning_intro">Otwierasz link w zewnętrznej aplikacji.</string> <string name="link_warning_intro">Zaraz otworzysz następujący link w zewnętrznej aplikacji.</string>
<string name="link_warning_text">Może to posłużyć do twojej identyfikacji. Zastanów się czy ufasz osobie która wysłała Ci ten link i rozważ otwarcie go za pomocą Przeglądarki Tor.</string> <string name="link_warning_text">Może to posłużyć do twojej identyfikacji. Zastanów się czy ufasz osobie która wysłała Ci ten link i rozważ otwarcie go za pomocą Przeglądarki Tor.</string>
<string name="link_warning_open_link">Otwórz Link</string> <string name="link_warning_open_link">Otwórz Link</string>
<!--Crash Reporter--> <!--Crash Reporter-->
<string name="crash_report_title">Zgłoś błąd w Briar</string> <string name="crash_report_title">Zgłoś awarię w Briar</string>
<string name="briar_crashed">Przepraszamy, wystąpił błąd w Briar</string> <string name="briar_crashed">Przepraszamy, wystąpił awaria w Briar</string>
<string name="not_your_fault">To nie Twoja wina.</string> <string name="not_your_fault">To nie Twoja wina.</string>
<string name="please_send_report">Proszę pomóż nam ulepszać Briar wysyłając raport z usterki.</string> <string name="please_send_report">Proszę pomóż nam ulepszać Briar wysyłając raport z awarii.</string>
<string name="report_is_encrypted">Raport z usterki jest zaszyfrowany i wysyłany bezpiecznie.</string> <string name="report_is_encrypted">Obiecujemy, że raport z awarii jest zaszyfrowany i wysyłany bezpiecznie.</string>
<string name="feedback_title">Wsparcie</string> <string name="feedback_title">Twoja opinia</string>
<string name="describe_crash">Opisz co się stało (opcjonalne)</string> <string name="describe_crash">Opisz co się stało (opcjonalne)</string>
<string name="enter_feedback">Wprowadź swoje uwagi</string> <string name="enter_feedback">Wprowadź swoje uwagi</string>
<string name="optional_contact_email">Twój adres email (opcjonalne)</string> <string name="optional_contact_email">Twój adres email (opcjonalne)</string>
<string name="include_debug_report_crash">Załącz anonimowe dane na temat usterki</string> <string name="include_debug_report_crash">Załącz anonimowe dane na temat awarii</string>
<string name="include_debug_report_feedback">Załącz anonimowe dane o tym urządzeniu</string> <string name="include_debug_report_feedback">Załącz anonimowe dane o tym urządzeniu</string>
<string name="could_not_load_report_data">Nie można było załadować danych.</string> <string name="could_not_load_report_data">Nie można było załadować danych raportu.</string>
<string name="send_report">Wyślij raport</string> <string name="send_report">Wyślij raport</string>
<string name="close">Zamknij</string> <string name="close">Zamknij</string>
<string name="dev_report_saved">Raport zapisany. Zostanie wysłany następnym razem kiedy zalogujesz się do Briar.</string> <string name="dev_report_saved">Raport zapisany. Zostanie wysłany następnym razem kiedy zalogujesz się do Briar.</string>
@@ -526,22 +527,22 @@
<string name="progress_title_logout">Wylogowywanie z Briar...</string> <string name="progress_title_logout">Wylogowywanie z Briar...</string>
<!--Screen Filters & Tapjacking--> <!--Screen Filters & Tapjacking-->
<string name="screen_filter_title">Wykryto nakładkę na ekran</string> <string name="screen_filter_title">Wykryto nakładkę na ekran</string>
<string name="screen_filter_body">Inna aplikacja jest rysowana nad Briar. Aby bronić Twoje bezpieczeństwo, Briar nie będzie odpowiadał na dotyk gdy inna aplikacja jest rysowana nad nim.\n\nNastępujące aplikacje mogą być przyczyną:\n\n%1$s</string> <string name="screen_filter_body">Inna aplikacja jest rysowana nad Briar. Aby bronić Twoje bezpieczeństwo, Briar nie będzie odpowiadał na dotyk gdy inna aplikacja jest rysowana nad nim.\n\nNastępujące aplikacje mogą wyświetlać nad nim:\n\n%1$s</string>
<string name="screen_filter_allow">Pozwól tym aplikacjom na pozostanie na pierwszym planie</string> <string name="screen_filter_allow">Pozwól tym aplikacjom na pozostanie na pierwszym planie</string>
<!--Permission Requests--> <!--Permission Requests-->
<string name="permission_camera_title">Dostęp do aparatu</string> <string name="permission_camera_title">Dostęp do aparatu</string>
<string name="permission_camera_request_body">Aby zeskanować kod QR, Briar potrzebuje mieć dostęp do aparatu.</string> <string name="permission_camera_request_body">Aby zeskanować kod QR, Briar potrzebuje dostępu do aparatu.</string>
<string name="permission_location_title">Dostęp do lokalizacji</string> <string name="permission_location_title">Zezwolenie na lokalizację </string>
<string name="permission_location_request_body">Aby odkryć urządzenia Bluetooth, Briar potrzebuje zezwolenia na dostęp do twojej lokalizacji.\n\nBriar nie przechowuje twojej lokalizacji ani nie udostępnia jej nikomu.</string> <string name="permission_location_request_body">Aby odkryć urządzenia Bluetooth, Briar potrzebuje zezwolenia na dostęp do twojej lokalizacji.\n\nBriar nie przechowuje twojej lokalizacji ani nie udostępnia jej nikomu.</string>
<string name="permission_camera_location_title">Kamera i lokalizacja</string> <string name="permission_camera_location_title">Kamera i lokalizacja</string>
<string name="permission_camera_location_request_body">Aby zeskanować kod QR, Briar potrzebuje dostępu do kamery.\n\nAby odkryć urządzenia Bluetooth, Briar potrzebuje zezwolenia na dostęp do Twojej lokalizacji.\n\nBriar nie przechowuje Twojej lokalizacji ani nie udostępnia jej nikomu.</string> <string name="permission_camera_location_request_body">Aby zeskanować kod QR, Briar potrzebuje dostępu do kamery.\n\nAby odkryć urządzenia Bluetooth, Briar potrzebuje zezwolenia na dostęp do Twojej lokalizacji.\n\nBriar nie przechowuje Twojej lokalizacji ani nie udostępnia jej nikomu.</string>
<string name="permission_camera_denied_body">Odmówiłeś dostępu do kamery, lecz dodawanie kontaktów tego wymaga.\n\nProszę udziel dostępu.</string> <string name="permission_camera_denied_body">Odmówiłeś dostępu do aparatu, lecz dodawanie kontaktów wymaga jego użycia.\n\nProszę rozważyć udzielenie dostępu do aparatu</string>
<string name="qr_code">Kod QR</string> <string name="qr_code">Kod QR</string>
<string name="show_qr_code_fullscreen">Pokaż QR na pełnym ekranie</string> <string name="show_qr_code_fullscreen">Pokaż QR na pełnym ekranie</string>
<!--App Locking--> <!--App Locking-->
<string name="lock_unlock">Odblokuj Briar</string> <string name="lock_unlock">Odblokuj Briar</string>
<string name="lock_unlock_verbose">Wprowadź PIN swojego urządzenia, wzór lub hasło aby odblokować Briar</string> <string name="lock_unlock_verbose">Wprowadź PIN swojego urządzenia, wzór lub hasło aby odblokować Briar</string>
<string name="lock_unlock_fingerprint_description">Dotknij czytnika linii papilarnych zapisanym odciskiem palca.</string> <string name="lock_unlock_fingerprint_description">Dotknij czytnika linii papilarnych zarejestrowanym odciskiem palca aby kontynuować. </string>
<string name="lock_unlock_password">Użyj hasła</string> <string name="lock_unlock_password">Użyj hasła</string>
<string name="lock_is_locked">Briar jest zablokowany</string> <string name="lock_is_locked">Briar jest zablokowany</string>
<string name="lock_tap_to_unlock">Dotknij by odblokować</string> <string name="lock_tap_to_unlock">Dotknij by odblokować</string>
@@ -549,13 +550,13 @@
<!--This is a name to be used in screenshots. Feel free to change it to a local name.--> <!--This is a name to be used in screenshots. Feel free to change it to a local name.-->
<string name="screenshot_alice">Alicja</string> <string name="screenshot_alice">Alicja</string>
<!--This is a name to be used in screenshots. Feel free to change it to a local name.--> <!--This is a name to be used in screenshots. Feel free to change it to a local name.-->
<string name="screenshot_bob">Bob</string> <string name="screenshot_bob">Janusz</string>
<!--This is a name to be used in screenshots. Feel free to change it to a local name.--> <!--This is a name to be used in screenshots. Feel free to change it to a local name.-->
<string name="screenshot_carol">Karol</string> <string name="screenshot_carol">Grażyna</string>
<!--This is a message to be used in screenshots. Please use the same translation for Bob!--> <!--This is a message to be used in screenshots. Please use the same translation for Bob!-->
<string name="screenshot_message_1">Hej Bob!</string> <string name="screenshot_message_1">Hej Janusz!</string>
<!--This is a message to be used in screenshots. Please use the same translation for Alice!--> <!--This is a message to be used in screenshots. Please use the same translation for Alice!-->
<string name="screenshot_message_2">Hej Alicja! Dzięki za opowiedzenie mi o Briarze!</string> <string name="screenshot_message_2">Hej Alicja! Dzięki za opowiedzenie mi o Briarze!</string>
<!--This is a message to be used in screenshots.--> <!--This is a message to be used in screenshots.-->
<string name="screenshot_message_3">Nie ma problemu, mam nadzieję, że ci się podoba 😀</string> <string name="screenshot_message_3">Nie ma sprawy, mam nadzieję, że ci się podoba 😀</string>
</resources> </resources>

View File

@@ -124,6 +124,7 @@
<string name="set_contact_alias">Alterar nome do contato</string> <string name="set_contact_alias">Alterar nome do contato</string>
<string name="set_contact_alias_hint">Nome de contato</string> <string name="set_contact_alias_hint">Nome de contato</string>
<string name="set_alias_button">Trocar</string> <string name="set_alias_button">Trocar</string>
<string name="dialog_title_not_all_messages_deleted">Não foi possível apagar todas as mensagens</string>
<string name="delete_contact">Apagar contato</string> <string name="delete_contact">Apagar contato</string>
<string name="dialog_title_delete_contact">Confirmar remoção do contato</string> <string name="dialog_title_delete_contact">Confirmar remoção do contato</string>
<string name="dialog_message_delete_contact">Você tem certeza que quer remover este contato e todas mensagens trocadas com ele?</string> <string name="dialog_message_delete_contact">Você tem certeza que quer remover este contato e todas mensagens trocadas com ele?</string>

View File

@@ -129,6 +129,11 @@
<string name="set_contact_alias">Schimbă nume contact</string> <string name="set_contact_alias">Schimbă nume contact</string>
<string name="set_contact_alias_hint">Nume contact</string> <string name="set_contact_alias_hint">Nume contact</string>
<string name="set_alias_button">Modifică</string> <string name="set_alias_button">Modifică</string>
<string name="delete_all_messages">Șterge toate mesajele</string>
<string name="dialog_title_delete_all_messages">Confirmare ștergere mesaj</string>
<string name="dialog_message_delete_all_messages">Sigur doriți să ștergeți toate mesajele?</string>
<string name="dialog_title_not_all_messages_deleted">Nu s-au putut șterge toate mesajele</string>
<string name="dialog_message_not_all_messages_deleted">Mesajele referitoare la recomandări sau invitații în curs nu pot fi șterse înainte de a se încheia.</string>
<string name="delete_contact">Șterge contactul</string> <string name="delete_contact">Șterge contactul</string>
<string name="dialog_title_delete_contact">Confirmare ștergere contact</string> <string name="dialog_title_delete_contact">Confirmare ștergere contact</string>
<string name="dialog_message_delete_contact">Sigur doriți să ștergeți acest contact și toate mesajele schimbate?</string> <string name="dialog_message_delete_contact">Sigur doriți să ștergeți acest contact și toate mesajele schimbate?</string>
@@ -144,6 +149,7 @@
<string name="dialog_message_no_image_support">Versiunea aplicației Briar a contactului dumneavoastră nu suportă încă atașamente imagini. Odată ce au actualizat veți vedea o iconiță diferită.</string> <string name="dialog_message_no_image_support">Versiunea aplicației Briar a contactului dumneavoastră nu suportă încă atașamente imagini. Odată ce au actualizat veți vedea o iconiță diferită.</string>
<string name="dialog_title_image_support">Acum puteți trimite imagini către acest contact</string> <string name="dialog_title_image_support">Acum puteți trimite imagini către acest contact</string>
<string name="dialog_message_image_support">Atingeți această iconiță pentru a atașa imagini</string> <string name="dialog_message_image_support">Atingeți această iconiță pentru a atașa imagini</string>
<string name="messaging_too_many_attachments_toast">Doar primele %d imagini vor fi trimise</string>
<!--Adding Contacts--> <!--Adding Contacts-->
<string name="add_contact_title">Adaugă un contact din apropiere</string> <string name="add_contact_title">Adaugă un contact din apropiere</string>
<string name="face_to_face">Trebuie să vă întâlniți cu persoana pe care doriți să o adăugați la contacte.\n\nAcest pas împiedică alte persoane să vă fure identitatea sau să vă citească mesajele în viitor.</string> <string name="face_to_face">Trebuie să vă întâlniți cu persoana pe care doriți să o adăugați la contacte.\n\nAcest pas împiedică alte persoane să vă fure identitatea sau să vă citească mesajele în viitor.</string>
@@ -212,6 +218,7 @@
<string name="offline_state">Nu este disponibilă o conexiune la internet</string> <string name="offline_state">Nu este disponibilă o conexiune la internet</string>
<string name="duplicate_link_dialog_title">Adresă duplicat</string> <string name="duplicate_link_dialog_title">Adresă duplicat</string>
<string name="duplicate_link_dialog_text_1">Deja aveți un contact în așteptare cu această adresă: %s</string> <string name="duplicate_link_dialog_text_1">Deja aveți un contact în așteptare cu această adresă: %s</string>
<string name="duplicate_link_dialog_text_1_contact">Deja aveți un contact cu această adresă: %s</string>
<!--This is a question asking whether two nicknames refer to the same person--> <!--This is a question asking whether two nicknames refer to the same person-->
<string name="duplicate_link_dialog_text_2">Sunt %s și %s aceeași persoană?</string> <string name="duplicate_link_dialog_text_2">Sunt %s și %s aceeași persoană?</string>
<!--This is a button for answering that two nicknames do indeed refer to the same person. This <!--This is a button for answering that two nicknames do indeed refer to the same person. This

View File

@@ -9,7 +9,7 @@
<string name="setup_doze_title">Фоновые подключения</string> <string name="setup_doze_title">Фоновые подключения</string>
<string name="setup_doze_intro">Для получения сообщений Briar должен работать в фоновом режиме.</string> <string name="setup_doze_intro">Для получения сообщений Briar должен работать в фоновом режиме.</string>
<string name="setup_doze_explanation">Для получения сообщений Briar должен работать в фоновом режиме. Отключите оптимизацию электропитания для Briar.</string> <string name="setup_doze_explanation">Для получения сообщений Briar должен работать в фоновом режиме. Отключите оптимизацию электропитания для Briar.</string>
<string name="setup_doze_button">Разрешить подключения</string> <string name="setup_doze_button">Разрешить соединения</string>
<string name="choose_nickname">Придумайте псевдоним</string> <string name="choose_nickname">Придумайте псевдоним</string>
<string name="choose_password">Придумайте пароль</string> <string name="choose_password">Придумайте пароль</string>
<string name="confirm_password">Подтвердите пароль</string> <string name="confirm_password">Подтвердите пароль</string>
@@ -69,12 +69,12 @@
<string name="transport_bt">Bluetooth</string> <string name="transport_bt">Bluetooth</string>
<string name="transport_lan">Wi-Fi</string> <string name="transport_lan">Wi-Fi</string>
<!--Notifications--> <!--Notifications-->
<string name="reminder_notification_title">Выполнен выход из Briar</string> <string name="reminder_notification_title">Вы не авторизованы в Briar</string>
<string name="reminder_notification_text">Нажмите для входа</string> <string name="reminder_notification_text">Нажмите для входа</string>
<string name="reminder_notification_channel_title">Briar Напоминание о входе</string> <string name="reminder_notification_channel_title">Briar Напоминание о входе</string>
<string name="reminder_notification_dismiss">Закрыть</string> <string name="reminder_notification_dismiss">Закрыть</string>
<string name="ongoing_notification_title">Выполнен вход в Briar</string> <string name="ongoing_notification_title">Вы авторизованы в Briar</string>
<string name="ongoing_notification_text">Нажмите для открытия Briar</string> <string name="ongoing_notification_text">Нажмите для открытия</string>
<plurals name="private_message_notification_text"> <plurals name="private_message_notification_text">
<item quantity="one">Новое личное сообщение.</item> <item quantity="one">Новое личное сообщение.</item>
<item quantity="few">%d новых личных сообщения.</item> <item quantity="few">%d новых личных сообщения.</item>
@@ -127,13 +127,20 @@
<string name="no_contacts_action">Для добавления контакта нажмите значок +</string> <string name="no_contacts_action">Для добавления контакта нажмите значок +</string>
<string name="date_no_private_messages">Нет сообщений.</string> <string name="date_no_private_messages">Нет сообщений.</string>
<string name="no_private_messages">Нет сообщений для отображения</string> <string name="no_private_messages">Нет сообщений для отображения</string>
<string name="message_hint">Печатает сообщение</string> <string name="message_hint">Введите сообщение</string>
<string name="image_caption_hint">Добавить подпись (необязательно)</string> <string name="image_caption_hint">Добавить подпись (необязательно)</string>
<string name="image_attach">Прикрепить изображение</string> <string name="image_attach">Прикрепить изображение</string>
<string name="image_attach_error">Не удалось прикрепить изображение</string> <string name="image_attach_error">Не удалось прикрепить изображение(я)</string>
<string name="image_attach_error_too_big">Изображение слишком большое. Лимит %d МБ.</string>
<string name="image_attach_error_invalid_mime_type">Формат изображения не поддерживается: %s</string>
<string name="set_contact_alias">Изменить имя контакта</string> <string name="set_contact_alias">Изменить имя контакта</string>
<string name="set_contact_alias_hint">Имя контакта</string> <string name="set_contact_alias_hint">Имя контакта</string>
<string name="set_alias_button">Изменить</string> <string name="set_alias_button">Изменить</string>
<string name="delete_all_messages">Удалить все сообщения</string>
<string name="dialog_title_delete_all_messages">Подтверждение удаления сообщений</string>
<string name="dialog_message_delete_all_messages">Вы уверены, что хотите удалить все сообщения?</string>
<string name="dialog_title_not_all_messages_deleted">Не удалось удалить все сообщения</string>
<string name="dialog_message_not_all_messages_deleted">Сообщения, связанные с текущими представлениями или приглашениями, не могут быть удалены до их завершения.</string>
<string name="delete_contact">Удалить контакт</string> <string name="delete_contact">Удалить контакт</string>
<string name="dialog_title_delete_contact">Подтвердите удаление контакта</string> <string name="dialog_title_delete_contact">Подтвердите удаление контакта</string>
<string name="dialog_message_delete_contact">Вы действительно хотите удалить этот контакт и все связанные с ним сообщения?</string> <string name="dialog_message_delete_contact">Вы действительно хотите удалить этот контакт и все связанные с ним сообщения?</string>
@@ -149,7 +156,9 @@
<string name="dialog_message_no_image_support">Briar вашего собеседника не поддерживает вложение изображений. Как только он обновится, вы увидите другую иконку.</string> <string name="dialog_message_no_image_support">Briar вашего собеседника не поддерживает вложение изображений. Как только он обновится, вы увидите другую иконку.</string>
<string name="dialog_title_image_support">Теперь вы можете отправлять изображения этому контакту</string> <string name="dialog_title_image_support">Теперь вы можете отправлять изображения этому контакту</string>
<string name="dialog_message_image_support">Нажмите на этот значок, чтобы прикрепить изображения.</string> <string name="dialog_message_image_support">Нажмите на этот значок, чтобы прикрепить изображения.</string>
<string name="messaging_too_many_attachments_toast">Будут отправлены только %d первых изображений</string>
<!--Adding Contacts--> <!--Adding Contacts-->
<string name="add_contact_title">Добавление контакта поблизости</string>
<string name="face_to_face">Вы должны встретиться с человеком, которого хотите добавить в контакты.\n\nЭто не позволит кому-либо выдать себя за вас или читать ваши сообщения.</string> <string name="face_to_face">Вы должны встретиться с человеком, которого хотите добавить в контакты.\n\nЭто не позволит кому-либо выдать себя за вас или читать ваши сообщения.</string>
<string name="continue_button">Продолжить</string> <string name="continue_button">Продолжить</string>
<string name="try_again_button">Попробовать снова</string> <string name="try_again_button">Попробовать снова</string>
@@ -167,15 +176,69 @@
<string name="connection_error_explanation">Убедитесь, что вы оба подключены к той же сети Wi-Fi.</string> <string name="connection_error_explanation">Убедитесь, что вы оба подключены к той же сети Wi-Fi.</string>
<string name="connection_error_feedback">Если эта проблема сохраняется, пожалуйста <a href="feedback">отправьте отзыв</a>, чтобы помочь нам улучшить приложение.</string> <string name="connection_error_feedback">Если эта проблема сохраняется, пожалуйста <a href="feedback">отправьте отзыв</a>, чтобы помочь нам улучшить приложение.</string>
<!--Adding Contacts Remotely--> <!--Adding Contacts Remotely-->
<string name="paste_button">Вставка</string> <string name="add_contact_remotely_title_case">Добавление контакта на расстоянии</string>
<string name="add_contact_nearby_title">Добавить контакт поблизости</string>
<string name="add_contact_remotely_title">Добавить контакт на расстоянии</string>
<string name="contact_name_hint">Дать контакту ник</string>
<string name="contact_link_intro">Введите ссылку от вашего контакта здесь</string>
<string name="contact_link_hint">Ссылка контакта</string>
<string name="paste_button">Вставить</string>
<string name="add_contact_button">Добавить контакт</string>
<string name="copy_button">Копировать</string> <string name="copy_button">Копировать</string>
<string name="share_button">Поделиться</string> <string name="share_button">Поделиться</string>
<string name="add_contact_remote_connecting">Идёт подключение...</string> <string name="send_link_title">Обмен ссылками</string>
<string name="connecting">Идёт подключение...</string> <string name="add_contact_choose_nickname">Выберите ник</string>
<string name="add_contact_choose_a_nickname">Введите ник</string>
<string name="nickname_intro">Дайте вашему контакту ник. Увидеть его сможете только вы.</string>
<string name="your_link">Передайте эту ссылку контакту, которого вы хотите добавить.</string>
<string name="link_clip_label">Ссылка Briar</string>
<string name="link_copied_toast">Ссылка скопирована</string>
<string name="adding_contact_error">При добавлении контакта произошла ошибка.</string>
<string name="pending_contact_requests_snackbar">Есть ожидающие запросы на контакт</string>
<string name="pending_contact_requests">Ожидающие запросы на контакт</string>
<string name="no_pending_contacts">Нет запросов на контакт</string>
<string name="add_contact_remote_connecting">Подключение...</string>
<string name="waiting_for_contact_to_come_online">Ожидание появления контакта онлайн...</string>
<string name="connecting">Подключение...</string>
<string name="adding_contact">Добавление контакта…</string>
<string name="adding_contact_failed">Не удалось добавить контакт</string>
<string name="dialog_title_remove_pending_contact">Подтвердите удаление</string>
<string name="dialog_message_remove_pending_contact">Этот контакт находится в процессе добавления. Если вы удалите его сейчас, он не будет добавлен.</string>
<string name="own_link_error">Введите ссылку вашего контакта, а не свою</string>
<string name="nickname_missing">Пожалуйста, введите ник</string>
<string name="invalid_link">Неправильная ссылка</string>
<string name="unsupported_link">Эта ссылка из более новой версии Briar. Пожалуйста, обновитесь до последней версии и попробуйте снова.</string>
<string name="intent_own_link">Вы открыли свою собственную ссылку. Используйте контакт, который вы хотите добавить!</string>
<string name="missing_link">Пожалуйста, введите ссылку</string>
<!--This is a numeral indicating the first step in a series of screens--> <!--This is a numeral indicating the first step in a series of screens-->
<string name="step_1">1</string> <string name="step_1">1</string>
<!--This is a numeral indicating the second step in a series of screens--> <!--This is a numeral indicating the second step in a series of screens-->
<string name="step_2">2</string> <string name="step_2">2</string>
<plurals name="contact_added_notification_text">
<item quantity="one">Добавлен новый контакт.</item>
<item quantity="few">Добавлено %d новых контакта.</item>
<item quantity="many">Добавлено %d новых контактов.</item>
<item quantity="other">Добавлено %d новых контактов.</item>
</plurals>
<string name="adding_contact_slow_warning">Добавление этого контакта занимает больше времени, чем обычно</string>
<string name="adding_contact_slow_title">Не удается подключиться к контакту</string>
<string name="adding_contact_slow_text">Добавление этого контакта занимает больше времени, чем обычно.\n\nПожалуйста, проверьте, что ваш контакт получил вашу ссылку и добавил вас:</string>
<string name="offline_state">Подключение к интернету отсутствует</string>
<string name="duplicate_link_dialog_title">Дублировать ссылку</string>
<string name="duplicate_link_dialog_text_1">У вас уже есть ожидающий контакт с этой ссылкой: %s</string>
<string name="duplicate_link_dialog_text_1_contact"> У вас уже есть контакт с этой ссылкой: %s</string>
<!--This is a question asking whether two nicknames refer to the same person-->
<string name="duplicate_link_dialog_text_2">%s и %s тот же человек?</string>
<!--This is a button for answering that two nicknames do indeed refer to the same person. This
string will be used in a dialog button, so if the translation of this string is longer than 20
characters, please use "Yes" instead, and use "No" for the "Different Person" button-->
<string name="same_person_button">Тот же человек</string>
<!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button-->
<string name="different_person_button">Другой человек</string>
<string name="duplicate_link_dialog_text_3">%s и %s отправили вам ту же ссылку.\n\nОдин из них, возможно, пытается выяснить, кто ваши контакты.\n\nНе говорите им, что вы получили такую ​​же ссылку от кого-то еще.</string>
<string name="pending_contact_updated_toast">Ожидающий контакт обновлен</string>
<!--Introductions--> <!--Introductions-->
<string name="introduction_onboarding_title">Представление ваших контактов</string> <string name="introduction_onboarding_title">Представление ваших контактов</string>
<string name="introduction_onboarding_text">Вы можете представить ваши контакты друг другу. Это позволит исключить личную встречу, чтобы связаться через Briar. </string> <string name="introduction_onboarding_text">Вы можете представить ваши контакты друг другу. Это позволит исключить личную встречу, чтобы связаться через Briar. </string>
@@ -195,7 +258,7 @@
<string name="introduction_response_accepted_sent">Вы приняли представление %1$s.</string> <string name="introduction_response_accepted_sent">Вы приняли представление %1$s.</string>
<string name="introduction_response_accepted_sent_info">Прежде чем добавить %1$s в свои контакты, необходимо чтобы он принял представление. Это может занять некоторое время.</string> <string name="introduction_response_accepted_sent_info">Прежде чем добавить %1$s в свои контакты, необходимо чтобы он принял представление. Это может занять некоторое время.</string>
<string name="introduction_response_declined_sent">Вы отказались от представления %1$s.</string> <string name="introduction_response_declined_sent">Вы отказались от представления %1$s.</string>
<string name="introduction_response_accepted_received">%1$s принял представление %2$s.</string> <string name="introduction_response_accepted_received">%1$s принял(-а) представление %2$s.</string>
<string name="introduction_response_declined_received">%1$s отказался от представления %2$s.</string> <string name="introduction_response_declined_received">%1$s отказался от представления %2$s.</string>
<string name="introduction_response_declined_received_by_introducee">%1$s сообщает, что %2$s отказался от представления.</string> <string name="introduction_response_declined_received_by_introducee">%1$s сообщает, что %2$s отказался от представления.</string>
<!--Private Groups--> <!--Private Groups-->
@@ -245,8 +308,8 @@
</plurals> </plurals>
<string name="groups_invitations_response_accepted_sent">Вы приняли приглашение в группу от %s.</string> <string name="groups_invitations_response_accepted_sent">Вы приняли приглашение в группу от %s.</string>
<string name="groups_invitations_response_declined_sent">Вы отклонили приглашение в группу от %s.</string> <string name="groups_invitations_response_declined_sent">Вы отклонили приглашение в группу от %s.</string>
<string name="groups_invitations_response_accepted_received">%s принял приглашение в группу.</string> <string name="groups_invitations_response_accepted_received">%s принял(-а) приглашение в группу.</string>
<string name="groups_invitations_response_declined_received">%s отклонил приглашение в группу.</string> <string name="groups_invitations_response_declined_received">%s отклонил(-а) приглашение в группу.</string>
<string name="sharing_status_groups">Только создатель может пригласить новых участников в группу. Ниже перечислены все текущие участники группы.</string> <string name="sharing_status_groups">Только создатель может пригласить новых участников в группу. Ниже перечислены все текущие участники группы.</string>
<!--Private Groups Revealing Contacts--> <!--Private Groups Revealing Contacts-->
<string name="groups_reveal_contacts">Показать контакты</string> <string name="groups_reveal_contacts">Показать контакты</string>
@@ -297,8 +360,8 @@
<string name="forum_invitation_already_sharing">Уже поделился</string> <string name="forum_invitation_already_sharing">Уже поделился</string>
<string name="forum_invitation_response_accepted_sent">Вы приняли приглашение на форум от %s.</string> <string name="forum_invitation_response_accepted_sent">Вы приняли приглашение на форум от %s.</string>
<string name="forum_invitation_response_declined_sent">Вы отклонили приглашение на форум от %s.</string> <string name="forum_invitation_response_declined_sent">Вы отклонили приглашение на форум от %s.</string>
<string name="forum_invitation_response_accepted_received">%sпринял приглашение на форум.</string> <string name="forum_invitation_response_accepted_received">%s принял(-а) приглашение на форум.</string>
<string name="forum_invitation_response_declined_received">%s отклонил приглашение на форум.</string> <string name="forum_invitation_response_declined_received">%s отклонил(-а) приглашение на форум.</string>
<string name="sharing_status">Статус общего доступа</string> <string name="sharing_status">Статус общего доступа</string>
<string name="sharing_status_forum">Любой участник форума может поделиться им со своими контактами. Вы делитесь этим форумом со следующими контактами. Могут быть и другие участники, которых вы не видите.</string> <string name="sharing_status_forum">Любой участник форума может поделиться им со своими контактами. Вы делитесь этим форумом со следующими контактами. Могут быть и другие участники, которых вы не видите.</string>
<string name="shared_with">Совместно с %1$d (%2$d в сети)</string> <string name="shared_with">Совместно с %1$d (%2$d в сети)</string>
@@ -333,8 +396,8 @@
<string name="blogs_sharing_snackbar">Поделиться блогом совместно с выбранными контактами</string> <string name="blogs_sharing_snackbar">Поделиться блогом совместно с выбранными контактами</string>
<string name="blogs_sharing_response_accepted_sent">Вы приняли приглашение в блог от %s.</string> <string name="blogs_sharing_response_accepted_sent">Вы приняли приглашение в блог от %s.</string>
<string name="blogs_sharing_response_declined_sent">Вы отклонили приглашение в блог от %s.</string> <string name="blogs_sharing_response_declined_sent">Вы отклонили приглашение в блог от %s.</string>
<string name="blogs_sharing_response_accepted_received">%s принял приглашение в блог.</string> <string name="blogs_sharing_response_accepted_received">%s принял(-а) приглашение в блог.</string>
<string name="blogs_sharing_response_declined_received">%s отклонил приглашение в блог.</string> <string name="blogs_sharing_response_declined_received">%s отклонил(-а) приглашение в блог.</string>
<string name="blogs_sharing_invitation_received">%1$s поделился блогом \"%2$s\" с вами.</string> <string name="blogs_sharing_invitation_received">%1$s поделился блогом \"%2$s\" с вами.</string>
<string name="blogs_sharing_invitation_sent">Вы поделились блогом \"%1$s\" с %2$s.</string> <string name="blogs_sharing_invitation_sent">Вы поделились блогом \"%1$s\" с %2$s.</string>
<string name="blogs_sharing_invitations_title">Приглашения в блог</string> <string name="blogs_sharing_invitations_title">Приглашения в блог</string>
@@ -357,7 +420,7 @@
<string name="blogs_rss_feeds_manage_empty_state">Нет RSS-лент для отображения\n\nКоснитесь значка + для импорта ленты</string> <string name="blogs_rss_feeds_manage_empty_state">Нет RSS-лент для отображения\n\nКоснитесь значка + для импорта ленты</string>
<string name="blogs_rss_feeds_manage_error">Ошибка при загрузке вашей ленты. Повторите попытку позже.</string> <string name="blogs_rss_feeds_manage_error">Ошибка при загрузке вашей ленты. Повторите попытку позже.</string>
<!--Settings Display--> <!--Settings Display-->
<string name="pref_language_title">Язык &amp; регион</string> <string name="pref_language_title">Язык и регион</string>
<string name="pref_language_changed">Этот параметр вступит в силу после перезапуска Briar. Пожалуйста, выйдите и перезапустите Briar.</string> <string name="pref_language_changed">Этот параметр вступит в силу после перезапуска Briar. Пожалуйста, выйдите и перезапустите Briar.</string>
<string name="pref_language_default">По умолчанию</string> <string name="pref_language_default">По умолчанию</string>
<string name="display_settings_title">Отображение</string> <string name="display_settings_title">Отображение</string>
@@ -450,7 +513,7 @@
<!--Link Warning--> <!--Link Warning-->
<string name="link_warning_title">Предупреждение о ссылке</string> <string name="link_warning_title">Предупреждение о ссылке</string>
<string name="link_warning_intro">Вы собираетесь открыть следующую ссылку в стороннем приложении.</string> <string name="link_warning_intro">Вы собираетесь открыть следующую ссылку в стороннем приложении.</string>
<string name="link_warning_text">Это может быть использовано для вашей идентификации. Подумайте, доверяете ли вы тому, кто отправил вам эту ссылку и рассмотрите возможность ее открытия в Tor Browser.</string> <string name="link_warning_text">Это может быть использовано для вашей идентификации. Подумайте, доверяете ли вы тому, кто отправил вам эту ссылку и рассмотрите возможность ее открытия в браузере Tor.</string>
<string name="link_warning_open_link">Открыть ссылку</string> <string name="link_warning_open_link">Открыть ссылку</string>
<!--Crash Reporter--> <!--Crash Reporter-->
<string name="crash_report_title">Отчет о сбое Briar</string> <string name="crash_report_title">Отчет о сбое Briar</string>

View File

@@ -118,10 +118,17 @@
<string name="message_hint">Shtypni mesazhin</string> <string name="message_hint">Shtypni mesazhin</string>
<string name="image_caption_hint">Shtoni një titull (na daçi)</string> <string name="image_caption_hint">Shtoni një titull (na daçi)</string>
<string name="image_attach">Bashkëngjitni figurë</string> <string name="image_attach">Bashkëngjitni figurë</string>
<string name="image_attach_error">Su bashkëngjit dot figurë</string> <string name="image_attach_error">Su bashkëngjit dot figurë(a)</string>
<string name="image_attach_error_too_big">Figurë shumë e madhe. Kufiri është %d MB.</string>
<string name="image_attach_error_invalid_mime_type">Format i pambuluar figure: %s</string>
<string name="set_contact_alias">Ndryshoni emër kontakti</string> <string name="set_contact_alias">Ndryshoni emër kontakti</string>
<string name="set_contact_alias_hint">Emër kontakti</string> <string name="set_contact_alias_hint">Emër kontakti</string>
<string name="set_alias_button">Ndryshoje</string> <string name="set_alias_button">Ndryshoje</string>
<string name="delete_all_messages">Fshiji krejt mesazhet</string>
<string name="dialog_title_delete_all_messages">Ripohoni Fshirje Mesazhesh</string>
<string name="dialog_message_delete_all_messages">Jeni i sigurt se doni të fshihen krejt mesazhet?</string>
<string name="dialog_title_not_all_messages_deleted">Su fshinë dot krejt mesazhet</string>
<string name="dialog_message_not_all_messages_deleted">Mesazhet që lidhen me hyrje në zhvillim e sipër, ose me ftesa, smund të fshihen pa përfunduar.</string>
<string name="delete_contact">Fshije kontaktin</string> <string name="delete_contact">Fshije kontaktin</string>
<string name="dialog_title_delete_contact">Ripohoni Fshirje Kontakti</string> <string name="dialog_title_delete_contact">Ripohoni Fshirje Kontakti</string>
<string name="dialog_message_delete_contact">Jeni i sigurt se doni të hiqet ky kontakt dhe krejt mesazhet e shkëmbyer me këtë kontakt?</string> <string name="dialog_message_delete_contact">Jeni i sigurt se doni të hiqet ky kontakt dhe krejt mesazhet e shkëmbyer me këtë kontakt?</string>
@@ -137,6 +144,7 @@
<string name="dialog_message_no_image_support">Briar-i i kontaktit tuaj nuk i mbulon ende bashkëngjitjet figura. Sapo ta përditësojë, do të shihni tjetër ikonë.</string> <string name="dialog_message_no_image_support">Briar-i i kontaktit tuaj nuk i mbulon ende bashkëngjitjet figura. Sapo ta përditësojë, do të shihni tjetër ikonë.</string>
<string name="dialog_title_image_support">Tani mund ti dërgoni figura këtij kontakti</string> <string name="dialog_title_image_support">Tani mund ti dërgoni figura këtij kontakti</string>
<string name="dialog_message_image_support">Prekeni këtë ikonë që të bashkëngjitni figura.</string> <string name="dialog_message_image_support">Prekeni këtë ikonë që të bashkëngjitni figura.</string>
<string name="messaging_too_many_attachments_toast">Do të dërgohen vetëm %d figurat e para</string>
<!--Adding Contacts--> <!--Adding Contacts-->
<string name="add_contact_title">Shtoni Kontakt Atypari </string> <string name="add_contact_title">Shtoni Kontakt Atypari </string>
<string name="face_to_face">Duhet të takoheni me personin që doni ta shtoni si kontakt.\n\nKjo do të pengojë cilindo të hiqet si ju ose të lexojë në të ardhmen mesazhet tuaj.</string> <string name="face_to_face">Duhet të takoheni me personin që doni ta shtoni si kontakt.\n\nKjo do të pengojë cilindo të hiqet si ju ose të lexojë në të ardhmen mesazhet tuaj.</string>
@@ -178,13 +186,16 @@
<string name="pending_contact_requests">Kërkesa Kontakti Pezull</string> <string name="pending_contact_requests">Kërkesa Kontakti Pezull</string>
<string name="no_pending_contacts">Ska kontakte pezull</string> <string name="no_pending_contacts">Ska kontakte pezull</string>
<string name="add_contact_remote_connecting">Duke u kyqur...</string> <string name="add_contact_remote_connecting">Duke u kyqur...</string>
<string name="waiting_for_contact_to_come_online">Po pritet që kontakti të jetë në linjë…\n\nE kanë përdorur tashmë lidhjen tuaj?</string> <string name="waiting_for_contact_to_come_online">Po pritet që kontakti të jetë në linjë…</string>
<string name="connecting">Duke u kyqur...</string> <string name="connecting">Duke u kyqur...</string>
<string name="adding_contact">Po shtohet kontakti…</string> <string name="adding_contact">Po shtohet kontakti…</string>
<string name="adding_contact_failed">Shtimi i kontaktit dështoi</string> <string name="adding_contact_failed">Shtimi i kontaktit dështoi</string>
<string name="dialog_title_remove_pending_contact">Ripohoni Heqjen</string>
<string name="dialog_message_remove_pending_contact">Ky kontakt ende po shtohet. Nëse e hiqni tani, sdo të shtohet.</string>
<string name="own_link_error">Jepni lidhjen e kontaktit tuaj, jo tuajën</string> <string name="own_link_error">Jepni lidhjen e kontaktit tuaj, jo tuajën</string>
<string name="nickname_missing">Ju lutemi, jepni një nofkë</string> <string name="nickname_missing">Ju lutemi, jepni një nofkë</string>
<string name="invalid_link">Lidhje e pavlefshme</string> <string name="invalid_link">Lidhje e pavlefshme</string>
<string name="unsupported_link">Kjo lidhje vjen prej një versioni më të ri të Briar-it. Ju lutemi, përmirësojeni me versionin më të ri dhe riprovoni.</string>
<string name="intent_own_link">Hapët lidhjen tuaj. Përdorni atë të kontaktit që doni të shtoni!</string> <string name="intent_own_link">Hapët lidhjen tuaj. Përdorni atë të kontaktit që doni të shtoni!</string>
<string name="missing_link">Ju lutemi, jepni një lidhje</string> <string name="missing_link">Ju lutemi, jepni një lidhje</string>
<!--This is a numeral indicating the first step in a series of screens--> <!--This is a numeral indicating the first step in a series of screens-->
@@ -195,6 +206,25 @@
<item quantity="one">U shtua kontakt i ri.</item> <item quantity="one">U shtua kontakt i ri.</item>
<item quantity="other">U shtuan %d kontakte të reja.</item> <item quantity="other">U shtuan %d kontakte të reja.</item>
</plurals> </plurals>
<string name="adding_contact_slow_warning">Shtimi i këtij kontakti po zgjat më shumë se zakonisht</string>
<string name="adding_contact_slow_title">Slidhet Dot Me Kontaktin</string>
<string name="adding_contact_slow_text">Shtimi i këtij kontakti po zgjat më shumë se zakonisht.\n\nJu lutemi, kontrolloni nëse kontakti juaj e ka marrë lidhjen tuaj dhe ju ka shtuar:</string>
<string name="offline_state">Ska lidhje internet</string>
<string name="duplicate_link_dialog_title">Lidhje e Përsëdytur</string>
<string name="duplicate_link_dialog_text_1">Keni tashmë një kontakt pezull me këtë lidhje: %s</string>
<string name="duplicate_link_dialog_text_1_contact">Keni tashmë një kontakt me këtë lidhje: %s</string>
<!--This is a question asking whether two nicknames refer to the same person-->
<string name="duplicate_link_dialog_text_2">A janë %s dhe %s i njëjti person?</string>
<!--This is a button for answering that two nicknames do indeed refer to the same person. This
string will be used in a dialog button, so if the translation of this string is longer than 20
characters, please use "Yes" instead, and use "No" for the "Different Person" button-->
<string name="same_person_button">I njëjti Person</string>
<!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button-->
<string name="different_person_button">Person i Ndryshëm</string>
<string name="duplicate_link_dialog_text_3">%s dhe %s ju dërguan të njëjtën lidhje.\n\nNjëri prej tyre mund të jetë duke u rrekur të zbulojë se cilët janë kontaktet tuaj.\n\nMos u tregoni se morët të njëjtën lidhje nga dikush tjetër.</string>
<string name="pending_contact_updated_toast">Kontakti pezull u përditësua</string>
<!--Introductions--> <!--Introductions-->
<string name="introduction_onboarding_title">Prezantoni kontaktet tuaja</string> <string name="introduction_onboarding_title">Prezantoni kontaktet tuaja</string>
<string name="introduction_onboarding_text">Kontaktet tuaja mund t\ia prezantoni njëri-tjetrit, që kështu të mos u duhet të takohen realisht për të mundur të lidhen në Briar.</string> <string name="introduction_onboarding_text">Kontaktet tuaja mund t\ia prezantoni njëri-tjetrit, që kështu të mos u duhet të takohen realisht për të mundur të lidhen në Briar.</string>

View File

@@ -125,7 +125,6 @@ Izaberite dugačku lozinku koju je teško pogoditi, kao četiri nasumične rije
<string name="message_hint">Ukucajte poruku</string> <string name="message_hint">Ukucajte poruku</string>
<string name="image_caption_hint">Dodaj naslov (opciono)</string> <string name="image_caption_hint">Dodaj naslov (opciono)</string>
<string name="image_attach">Zakaci sliku</string> <string name="image_attach">Zakaci sliku</string>
<string name="image_attach_error">Nisam mogao da zakacim sliku</string>
<string name="set_contact_alias">Promijeni ime kontakta</string> <string name="set_contact_alias">Promijeni ime kontakta</string>
<string name="set_contact_alias_hint">Ime kontakta</string> <string name="set_contact_alias_hint">Ime kontakta</string>
<string name="set_alias_button">Promijeni</string> <string name="set_alias_button">Promijeni</string>
@@ -163,6 +162,13 @@ Jeste li sigurno da zelite da je sacuvate?</string>
<string name="step_1">1 </string> <string name="step_1">1 </string>
<!--This is a numeral indicating the second step in a series of screens--> <!--This is a numeral indicating the second step in a series of screens-->
<string name="step_2">2</string> <string name="step_2">2</string>
<!--This is a question asking whether two nicknames refer to the same person-->
<!--This is a button for answering that two nicknames do indeed refer to the same person. This
string will be used in a dialog button, so if the translation of this string is longer than 20
characters, please use "Yes" instead, and use "No" for the "Different Person" button-->
<!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button-->
<!--Introductions--> <!--Introductions-->
<string name="introduction_onboarding_title">Upoznajte vaše kontakte</string> <string name="introduction_onboarding_title">Upoznajte vaše kontakte</string>
<string name="introduction_onboarding_text">Vi možete da upoznate vaše kontakte međusobno, da nebi morali da srijeću lice u liceda bi se povezali na Briar.</string> <string name="introduction_onboarding_text">Vi možete da upoznate vaše kontakte međusobno, da nebi morali da srijeću lice u liceda bi se povezali na Briar.</string>

View File

@@ -63,7 +63,7 @@
<!--Transports--> <!--Transports-->
<string name="transport_tor">Internet</string> <string name="transport_tor">Internet</string>
<string name="transport_bt">Bluetooth</string> <string name="transport_bt">Bluetooth</string>
<string name="transport_lan">wifi</string> <string name="transport_lan">Wi-Fi</string>
<!--Notifications--> <!--Notifications-->
<string name="reminder_notification_title">Utloggad från Briar</string> <string name="reminder_notification_title">Utloggad från Briar</string>
<string name="reminder_notification_text">Tryck för att logga in igen.</string> <string name="reminder_notification_text">Tryck för att logga in igen.</string>
@@ -118,7 +118,9 @@
<string name="message_hint">Skriv ett meddelande</string> <string name="message_hint">Skriv ett meddelande</string>
<string name="image_caption_hint">Lägg till bildtext (valfritt)</string> <string name="image_caption_hint">Lägg till bildtext (valfritt)</string>
<string name="image_attach">Bifoga bild</string> <string name="image_attach">Bifoga bild</string>
<string name="image_attach_error">Kunde ej bifoga bild</string> <string name="image_attach_error">Kunde inte bifoga en eller flera bilder</string>
<string name="image_attach_error_too_big">Bilden är för stor. Gränsen är %d MB.</string>
<string name="image_attach_error_invalid_mime_type">Bildformatet stöds ej: %s</string>
<string name="set_contact_alias">Ändra namn på kontakt</string> <string name="set_contact_alias">Ändra namn på kontakt</string>
<string name="set_contact_alias_hint">Kontaktnamn</string> <string name="set_contact_alias_hint">Kontaktnamn</string>
<string name="set_alias_button">Ändra</string> <string name="set_alias_button">Ändra</string>
@@ -138,6 +140,7 @@
<string name="dialog_title_image_support">Du kan nu skicka bilder till den här kontakten</string> <string name="dialog_title_image_support">Du kan nu skicka bilder till den här kontakten</string>
<string name="dialog_message_image_support">Tryck på denna ikon för att bifoga bilder.</string> <string name="dialog_message_image_support">Tryck på denna ikon för att bifoga bilder.</string>
<!--Adding Contacts--> <!--Adding Contacts-->
<string name="add_contact_title">Lägg till en närvarande kontakt</string>
<string name="face_to_face">Du måste personligen träffa den som du vill lägga till som kontakt.\n\nDetta för att undvika att någon senare låtsas vara du eller läser dina meddelanden.</string> <string name="face_to_face">Du måste personligen träffa den som du vill lägga till som kontakt.\n\nDetta för att undvika att någon senare låtsas vara du eller läser dina meddelanden.</string>
<string name="continue_button">Fortsätt</string> <string name="continue_button">Fortsätt</string>
<string name="try_again_button">Försök igen</string> <string name="try_again_button">Försök igen</string>
@@ -152,17 +155,69 @@
<string name="connecting_to_device">Ansluter till enhet\u2026</string> <string name="connecting_to_device">Ansluter till enhet\u2026</string>
<string name="authenticating_with_device">Autentiserar med enhet\u2026</string> <string name="authenticating_with_device">Autentiserar med enhet\u2026</string>
<string name="connection_error_title">Kunde ej ansluta till din kontakt</string> <string name="connection_error_title">Kunde ej ansluta till din kontakt</string>
<string name="connection_error_explanation">Kontrollera att ni båda är anslutna på samma wifi-nätverk.</string> <string name="connection_error_explanation">Kontrollera att ni båda är anslutna på samma Wi-Fi-nätverk.</string>
<string name="connection_error_feedback">Om det här problemet kvarstår, vänligen<a href="feedback">ge feedback</a> så vi kan förbättra appan.</string> <string name="connection_error_feedback">Om det här problemet kvarstår, vänligen<a href="feedback">ge återkoppling</a> så vi kan förbättra appan.</string>
<!--Adding Contacts Remotely--> <!--Adding Contacts Remotely-->
<string name="add_contact_remotely_title_case">Lägg till en kontakt på avstånd</string>
<string name="add_contact_nearby_title">Lägg till en närvarande kontakt</string>
<string name="add_contact_remotely_title">Lägg till en kontakt på avstånd</string>
<string name="contact_name_hint">Ge kontakten ett smeknamn</string>
<string name="contact_link_intro">Skriv in länken från din kontakt här</string>
<string name="contact_link_hint">Kontaktens länk</string>
<string name="paste_button">Klistra in</string> <string name="paste_button">Klistra in</string>
<string name="add_contact_button">Lägg till kontakt</string>
<string name="copy_button">Kopiera</string> <string name="copy_button">Kopiera</string>
<string name="share_button">Dela</string> <string name="share_button">Dela</string>
<string name="send_link_title">Utbyt länkar</string>
<string name="add_contact_choose_nickname">Välj smeknamn</string>
<string name="add_contact_choose_a_nickname">Skriv ett smeknamn</string>
<string name="nickname_intro">Ge din kontakt ett smeknamn. Bara du kan se detta.</string>
<string name="your_link">Ge den här länken till kontakten du vill lägga till</string>
<string name="link_clip_label">Briar-länk</string>
<string name="link_copied_toast">Länken kopierades</string>
<string name="adding_contact_error">Något gick fel när kontakten skulle läggas till.</string>
<string name="pending_contact_requests_snackbar">Det finns väntande kontaktförfrågningar</string>
<string name="pending_contact_requests">Väntande kontaktförfrågningar</string>
<string name="no_pending_contacts">Inga väntande kontakter</string>
<string name="add_contact_remote_connecting">Ansluter...</string> <string name="add_contact_remote_connecting">Ansluter...</string>
<string name="waiting_for_contact_to_come_online">Väntar på att kontakten ska koppla upp sig...</string>
<string name="connecting">Ansluter...</string> <string name="connecting">Ansluter...</string>
<string name="adding_contact">Lägger till kontakt...</string>
<string name="adding_contact_failed">Kontakten kunde ej läggas till</string>
<string name="dialog_title_remove_pending_contact">Bekräfta borttagning</string>
<string name="dialog_message_remove_pending_contact">Denna kontakt håller på att läggas till. Om du tar bort den nu kommer den ej läggas till.</string>
<string name="own_link_error">Skriv in länken du fick från din kontakt, inte din egna länk</string>
<string name="nickname_missing">Skriv in ett smeknamn</string>
<string name="invalid_link">Felakting länk</string>
<string name="unsupported_link">Denna länk kommer från en nyare version av Briar. Var snäll och uppgradera till den senaste versionen och försök igen.</string>
<string name="intent_own_link">Du har öppnat din egna länk. Använd länken du fick från kontakten du vill lägga till!</string>
<string name="missing_link">Skriv in en länk</string>
<!--This is a numeral indicating the first step in a series of screens--> <!--This is a numeral indicating the first step in a series of screens-->
<string name="step_1">Ett</string> <string name="step_1">Ett</string>
<!--This is a numeral indicating the second step in a series of screens--> <!--This is a numeral indicating the second step in a series of screens-->
<string name="step_2">2</string>
<plurals name="contact_added_notification_text">
<item quantity="one">%d nya kontakter lades till.</item>
<item quantity="other">%d nya kontakter lades till.</item>
</plurals>
<string name="adding_contact_slow_warning">Det tar längre tid än vanligt att lägga till den här kontakten.</string>
<string name="adding_contact_slow_title">Kan ej ansluta till kontakten</string>
<string name="adding_contact_slow_text">Det tar längre tid än vanligt att lägga till den här kontakten.\n\nVänligen kontrollera att din kontakt har tagit emot din länk och lagt till dig:</string>
<string name="offline_state">Ingen Internetanslutning</string>
<string name="duplicate_link_dialog_title">Kopiera länk</string>
<string name="duplicate_link_dialog_text_1">Du har redan en väntande kontakt med den här länken: %s</string>
<!--This is a question asking whether two nicknames refer to the same person-->
<string name="duplicate_link_dialog_text_2">Är %s och %s samma person?</string>
<!--This is a button for answering that two nicknames do indeed refer to the same person. This
string will be used in a dialog button, so if the translation of this string is longer than 20
characters, please use "Yes" instead, and use "No" for the "Different Person" button-->
<string name="same_person_button">Samma person</string>
<!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button-->
<string name="different_person_button">Olika personer</string>
<string name="duplicate_link_dialog_text_3">%s och %s har skickat samma länk till dig.\n\nEn av dem kanske försöker ta reda på vilka kontakter du har.\n\nSäg inte till någon av dem att du tagit emot samma länk från någon annan.</string>
<string name="pending_contact_updated_toast">Väntande kontakt har uppdaterats</string>
<!--Introductions--> <!--Introductions-->
<string name="introduction_onboarding_title">Presentera dina kontakter</string> <string name="introduction_onboarding_title">Presentera dina kontakter</string>
<string name="introduction_onboarding_text">Du kan presentera dina kontakter för varandra, på så sätt behöver de inte träffas personligen för att lägga till varandra på Briar.</string> <string name="introduction_onboarding_text">Du kan presentera dina kontakter för varandra, på så sätt behöver de inte träffas personligen för att lägga till varandra på Briar.</string>
@@ -279,7 +334,7 @@
<string name="forum_invitation_response_accepted_sent">Du godkände foruminbjudan från %s.</string> <string name="forum_invitation_response_accepted_sent">Du godkände foruminbjudan från %s.</string>
<string name="forum_invitation_response_declined_sent">Du avvisade foruminbjudan från %s.</string> <string name="forum_invitation_response_declined_sent">Du avvisade foruminbjudan från %s.</string>
<string name="forum_invitation_response_accepted_received">%s godkände foruminbjudan.</string> <string name="forum_invitation_response_accepted_received">%s godkände foruminbjudan.</string>
<string name="forum_invitation_response_declined_received">%savvisade foruminbjudan.</string> <string name="forum_invitation_response_declined_received">%s avvisade foruminbjudan.</string>
<string name="sharing_status">Delningsstatus</string> <string name="sharing_status">Delningsstatus</string>
<string name="sharing_status_forum">Alla medlemmar i ett forum kan bjuda in sina kontakter. Du har bjudit in följande kontakter till detta forum. Det kan finnas fler forummedlemmar som du inte kan se.</string> <string name="sharing_status_forum">Alla medlemmar i ett forum kan bjuda in sina kontakter. Du har bjudit in följande kontakter till detta forum. Det kan finnas fler forummedlemmar som du inte kan se.</string>
<string name="shared_with">Delas med %1$d (%2$d uppkopplade)</string> <string name="shared_with">Delas med %1$d (%2$d uppkopplade)</string>
@@ -424,8 +479,8 @@
<string name="choose_ringtone_title">Välj ringsignal</string> <string name="choose_ringtone_title">Välj ringsignal</string>
<string name="cannot_load_ringtone">Kan ej ladda ringsignal</string> <string name="cannot_load_ringtone">Kan ej ladda ringsignal</string>
<!--Settings Feedback--> <!--Settings Feedback-->
<string name="feedback_settings_title">Feedback</string> <string name="feedback_settings_title">Återkoppling</string>
<string name="send_feedback">Ge feedback</string> <string name="send_feedback">Ge återkoppling</string>
<!--Link Warning--> <!--Link Warning-->
<string name="link_warning_title">Länkvarning</string> <string name="link_warning_title">Länkvarning</string>
<string name="link_warning_intro">Följande länk är på väg att öppnas i en extern app.</string> <string name="link_warning_intro">Följande länk är på väg att öppnas i en extern app.</string>
@@ -437,10 +492,10 @@
<string name="not_your_fault">Detta är inte ditt fel.</string> <string name="not_your_fault">Detta är inte ditt fel.</string>
<string name="please_send_report">Hjälp oss att förbättra Briar genom att skicka en felrapport.</string> <string name="please_send_report">Hjälp oss att förbättra Briar genom att skicka en felrapport.</string>
<string name="report_is_encrypted">Vi lovar att felrapporten är krypterad och skickas säkert.</string> <string name="report_is_encrypted">Vi lovar att felrapporten är krypterad och skickas säkert.</string>
<string name="feedback_title">Feedback</string> <string name="feedback_title">Återkoppling</string>
<string name="describe_crash">Beskriv vad som hänt (valfritt)</string> <string name="describe_crash">Beskriv vad som hänt (valfritt)</string>
<string name="enter_feedback">Ge din feedback</string> <string name="enter_feedback">Ge din återkoppling</string>
<string name="optional_contact_email">Din epostadress (valfritt)</string> <string name="optional_contact_email">Din e-postadress (valfritt)</string>
<string name="include_debug_report_crash">Inkludera anonym data om krashen.</string> <string name="include_debug_report_crash">Inkludera anonym data om krashen.</string>
<string name="include_debug_report_feedback">Inkludera anonym data om den här enheten</string> <string name="include_debug_report_feedback">Inkludera anonym data om den här enheten</string>
<string name="could_not_load_report_data">Kunde ej ladda rapportdata.</string> <string name="could_not_load_report_data">Kunde ej ladda rapportdata.</string>

View File

@@ -0,0 +1,490 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources xmlns:tools="http://schemas.android.com/tools">
<!--Setup-->
<string name="setup_title">Karibu kwenye Briar</string>
<string name="setup_name_explanation">lakabu lako litaonekana kwenye kila chapisho lako . Na hutaweza badilisha baada ya kuteneneza akaunti yako .</string>
<string name="setup_next">Ifuatayo</string>
<string name="setup_password_intro">Chagua neno siri </string>
<string name="setup_password_explanation">Akaunti yako ya Briar imeifaziwa katika msimbo fiche kwenye kifaa chako ,nasio kwenye mawingu. kama utasahau nywila yako au kuondoa Briar, hamana namna unaweza kuokua akaunti yako . \n\nchagua nywila ndefu ambayo ni ngumu kubuniwa , kama maneno mannne ya nasibu, au kumi ya barua za nasibu, namba na herufi.</string>
<string name="setup_doze_title">uhusiano wa nyuma</string>
<string name="setup_doze_intro">kupokea ujumbe kwenye Briar unaitajika uwe umeunganishwa kwenye mkondo </string>
<string name="setup_doze_explanation">ili kupokea ujumbe , Briar unatakiwa uwe umeunganishwa kwenye mkongo kwa nyuma . Tafathali tengua oboreshaji wa betri ili Briar iendele kuunganishwa.</string>
<string name="setup_doze_button">ruhusa kuunganishwa </string>
<string name="choose_nickname">chagua lakabu yako</string>
<string name="choose_password">chagua Nywila yako
chagua nenosiri lako </string>
<string name="confirm_password">hakikisha Nywila yako
hakikisha nenosiri lako </string>
<string name="name_too_long">jina ni refu sana </string>
<string name="password_too_weak">Nywila yako ni thahifu
nenosiri lako ni thahifu</string>
<string name="passwords_do_not_match">nywila zako haziendani
nenosiri zako haziendani </string>
<string name="create_account_button">tengeneza akauntu</string>
<string name="more_info">habari za ziada </string>
<string name="don_t_ask_again">usiulize tena </string>
<string name="setup_huawei_text">tafathali bonyeza alama hapo chini ili kuhakikisha Briar imelindwa na \"programu Ulizi\" kwenye kioo chako </string>
<string name="setup_huawei_button">Linda Briar </string>
<string name="setup_huawei_help">kama Briar haija wekwa kwenye orotha programu Ulizi, haitaweza kufanya kazi kwenye nyuma ya mkongo</string>
<string name="warning_dozed">%shaijawezekana kujiendesha kwa nyuma ya mkongo</string>
<!--Login-->
<string name="enter_password">Nywila
nenosiri</string>
<string name="try_again">umekosea nywila , jaribu tena
umekosea nenosiri, jaribu tena</string>
<string name="sign_in_button">ingia</string>
<string name="forgotten_password">nimesahau Nywila yangu
nimesahau nenosiri yangu</string>
<string name="dialog_title_lost_password">umepoteza nywila
umepoteza nenosiri</string>
<string name="startup_failed_notification_title">Briar imeshidwa Anza</string>
<string name="startup_failed_notification_text">bonyeza kwa taarifa zaidi </string>
<string name="startup_failed_activity_title">Briar kuaza kumeshidwa</string>
<string name="startup_failed_db_error">Kutokana na sababu mbali mbali Briar yako imevurugika kwenye kifadhidata. Na akaunti yako data na mawasiliano yako yote yamepotea. Itabidi upakue tena Briar au Tengeneza Akaunti nyingine ila chagua umesahau Nenosiri lako\' pale kwenye uwanja nenosiri .</string>
<string name="startup_failed_data_too_old_error">Akaunti yako imetengenezwa na tolea la zamani la programu hii na Haiwezekani kufungua hili toleo . Nilazima ubadili hili toleo la zamani au utengeneze Akaunti mpaya kwa kuchagua umesahau nenosiri Katika uwanja wa nenosiri </string>
<string name="startup_failed_data_too_new_error">Hili toleo la programu ulilo tumia nila zamani . Tafathi boresha kuwa toleo jipya na ujaribu tena .</string>
<string name="startup_failed_service_error">Briar imeshindikan kuanza Unabidi uunganishwe . Hianzishe Briar kama kwawaida kuondoka hilo tatizo . Japo kuwa utapoteza Akaunti yako na data zako zote kutokana na Briar haifathi data zako kwenye seva kuu.</string>
<string name="expiry_update">Muda wa majaribio umeongezwa mbele . Akaunti yako itafikia muda wake kuisha %d siku .</string>
<string name="expiry_date_reached">Hii programu imemaliza muda wake.\nAsante kwa kujaribu </string>
<string name="download_briar">kuendelea kutumia Briar, Tafathali pakua toleo 1.0.</string>
<string name="create_new_account">Unahitajika kutenege Akaunti Mpaya , ila unaweza endelea kutumia lakabu yako .</string>
<string name="download_briar_button">Pakua Briar 1.0</string>
<string name="startup_open_database">Kupunguka Hifadhidata</string>
<string name="startup_migrate_database">Boresha Hifadhidata</string>
<string name="startup_compact_database">Kuingiliana Hifadhidata</string>
<!--Navigation Drawer-->
<string name="nav_drawer_open_description">Fungua njia ya Usambazaji </string>
<string name="nav_drawer_close_description">Funga njia ya Usambazaji </string>
<string name="contact_list_button">Mawasiliano </string>
<string name="groups_button">Vikundi vya kibinafsi</string>
<string name="forums_button">Ukumbi</string>
<string name="blogs_button">blogi</string>
<!--This is part of the main menu. The app will be locked when this is tapped.-->
<string name="lock_button">Funga programu</string>
<string name="settings_button">vipimo</string>
<string name="sign_out_button">Kutoka</string>
<!--Transports-->
<string name="transport_tor">Mtandao </string>
<string name="transport_bt">Bluetooth</string>
<string name="transport_lan">WI-FI</string>
<!--Notifications-->
<string name="reminder_notification_title">Toka Briar</string>
<string name="reminder_notification_text">bonyeza Kuingia tena .</string>
<string name="reminder_notification_channel_title">Briar ingia kwenye kumbukumbu </string>
<string name="reminder_notification_dismiss">tokaa </string>
<string name="ongoing_notification_title">Ingia kwenye Briar </string>
<string name="ongoing_notification_text">bonyeza kufungua Briar.</string>
<!--Misc-->
<string name="now">sasa</string>
<string name="show">onyesha</string>
<string name="hide">ficha</string>
<string name="ok">sawa</string>
<string name="cancel">ghairi</string>
<string name="got_it">nimeelewa </string>
<string name="delete">futa</string>
<string name="accept">kukubali</string>
<string name="decline">kukata</string>
<string name="options">chaguo</string>
<string name="online">mkondoni</string>
<string name="offline">nje ya mkondo</string>
<string name="send">tuma</string>
<string name="allow">ruhusu</string>
<string name="open">fungua</string>
<string name="no_data">hakuna data</string>
<string name="ellipsis">...</string>
<string name="text_too_long">Maneno ulio yainguza nimarefu sana </string>
<string name="show_onboarding">Kisanduku cha Msahada </string>
<string name="fix">kurekebisha</string>
<string name="help">Msahada</string>
<string name="sorry">Samahani</string>
<!--Contacts and Private Conversations-->
<string name="no_contacts">hakuna mawasiliano yakuonyesha </string>
<string name="no_contacts_action">bonyeza ikoni + kuongeza mawasiliano </string>
<string name="date_no_private_messages">hakuna ujumbe </string>
<string name="no_private_messages">hakuna ujumbe wakuonyesha </string>
<string name="message_hint">andika ujumbe </string>
<string name="image_caption_hint">ongeza maelezo mafupi (sio ya hiari)</string>
<string name="image_attach">Ambatanisha na taswira</string>
<string name="image_attach_error">imeshidikana kuambatanisha taswira(s)</string>
<string name="image_attach_error_too_big">Taswira nikubwa sana . kiwango ni %d MB.</string>
<string name="image_attach_error_invalid_mime_type">Mfumo wa taswira hauendani: %s</string>
<string name="set_contact_alias">badilisha jina lako la mawasiliano </string>
<string name="set_contact_alias_hint">jina la mawasiliano </string>
<string name="set_alias_button">badili</string>
<string name="delete_contact">futaa mawasiliano </string>
<string name="dialog_title_delete_contact">thibitisha kufuta mawasiliano </string>
<string name="dialog_message_delete_contact">unauwakika unataka kuondoa mawasiliano na ujumbe wote kati yenu .</string>
<string name="contact_deleted_toast">mawasiliano yame ondolewa </string>
<!--This is shown in the action bar when opening an image in fullscreen that the user sent-->
<string name="you">wewe</string>
<string name="save_image">Hifathi taswira</string>
<string name="dialog_title_save_image">Unaitaji kuhifathi Taswira?</string>
<string name="dialog_message_save_image">Hifathi hii taswira ila itaruhusu programu nyengine kuziona . Una uwakika unaitaji kuhifathi ?</string>
<string name="save_image_success">Taswira imehifathiwa </string>
<string name="save_image_error">Haiwezekani kuhifathi Taswira.</string>
<string name="dialog_title_no_image_support">Taswira haipatikani </string>
<string name="dialog_message_no_image_support">Mfumo wako wa Briar hausaidi Uambatanishaji wa taswira . Utakapo boresha Briar utaona ikoni tofauti.</string>
<string name="dialog_title_image_support">Sasa unaweza tuma taswira kwa mawasiliano yako.</string>
<string name="dialog_message_image_support">Bonyeza ikoni hii kuambatanisha Taswira.</string>
<!--Adding Contacts-->
<string name="add_contact_title">Ongeza mawasaliano ya walio karibu </string>
<string name="face_to_face">Ni lazima ukutane na mtu unaye taka kumuongeza kwenye mawasiliano.\n\nHii ita kuepusha na mtu mwengine kuweza kusoma ujembo wako huko mbeleni.</string>
<string name="continue_button">Endelea</string>
<string name="try_again_button">jaribu tena</string>
<string name="waiting_for_contact_to_scan">Usubi kwa mawasiliano ku skana na kuunganishwa\u2026</string>
<string name="exchanging_contact_details">Kubadilishana mawasiliano taharifa\u2026</string>
<string name="contact_added_toast">mawasiliano wameongezwa:%s</string>
<string name="contact_already_exists">Wasiliano%s tayari lipo.</string>
<string name="qr_code_invalid">The QR nambari sio sahihi </string>
<string name="qr_code_too_old">Nambari ya QR ulio skana inatokea kwenye toleo la zamani %s.\n\nTafathali wasiliana na mwenzio au boreshe kwenye toleo jipya na ujaribu tena .</string>
<string name="qr_code_too_new">Nambari ya QR ulio skana Inatoka kwenye toleo jipya %s.\n\nTafathali boresha kuwa kwenye toleo jipya na ujaribu tena .</string>
<string name="camera_error">kamera Hitilafu</string>
<string name="connecting_to_device">kunganishwa kwenye kifaa\u2026</string>
<string name="authenticating_with_device">Uhalisishaji wa kifaa\u2026</string>
<string name="connection_error_title">imeshidwa unganishwa kwenye mawasiliano </string>
<string name="connection_error_explanation">Tafathali Angalia kama wote Mmeunganishwa kwenye Mtandao wa WI-FI mmoja .</string>
<string name="connection_error_feedback">Kama hilo tatizo linaendela , Tafathali <a href="feedback"> tutumie maoni</a>ilituboreshe Programu .</string>
<!--Adding Contacts Remotely-->
<string name="add_contact_remotely_title_case">Ongeza mawasiliano kwambali </string>
<string name="add_contact_nearby_title">ongeza mawasiliano kwa karibu </string>
<string name="add_contact_remotely_title">Ongeza Mawasilina kwa wambali </string>
<string name="contact_name_hint">Ipe lakabu wasilinao hili </string>
<string name="contact_link_intro">Ingiza kiungo cha mawasiliano hapa. </string>
<string name="contact_link_hint">unganisha mawasiliano </string>
<string name="paste_button">bandika </string>
<string name="add_contact_button">ongeza mawasiliano </string>
<string name="copy_button">nakala</string>
<string name="share_button">kushiriki </string>
<string name="send_link_title">Badilisha Kiungo. </string>
<string name="add_contact_choose_nickname">Chagua lakabu </string>
<string name="add_contact_choose_a_nickname">Ingiza lakabu </string>
<string name="nickname_intro">Ipe namba hii lakabu . Na niwewe tu utaiona .</string>
<string name="your_link">Mpe kiungo hichi unaye taka kuwasiliana nae </string>
<string name="link_clip_label">Briar kiunga</string>
<string name="link_copied_toast">Kiungo nakili </string>
<string name="adding_contact_error">kulikuwa na Hitilafu wakati wa kuongeza mawasiliano </string>
<string name="pending_contact_requests_snackbar">Maombi ya mawasiliano yalio subirishwa </string>
<string name="pending_contact_requests">Maombi yalio subirishwa </string>
<string name="no_pending_contacts">Hakuna maombi yalio subirishwa </string>
<string name="add_contact_remote_connecting">kuunganishwa...</string>
<string name="waiting_for_contact_to_come_online">Subiri kwaulie wasiliana nae aje Mkondoni .</string>
<string name="connecting">kuunganishwa...</string>
<string name="adding_contact">Ongeza Mawasiliano....</string>
<string name="adding_contact_failed">Imeshidikana kuongeza Mawasiliano </string>
<string name="dialog_title_remove_pending_contact">Hakiki Kufuta </string>
<string name="dialog_message_remove_pending_contact">Mawawasilano haya bado yanaendea kuhifathiwa , kama uta ondoa sasa , hayata kuwa yameifathiwa .</string>
<string name="own_link_error">Ingiza kiunga cha mawasiliano, Ambacho sio cha kwako </string>
<string name="nickname_missing">Tafathali andika lakabu</string>
<string name="invalid_link">kiunga batili </string>
<string name="unsupported_link">Hichi kiunga kimetoka kwenye tolea jipya Bria. Tafathali boresha kuwa kwenye Tolea jipya na ujaribu tena .</string>
<string name="intent_own_link">Umefungua kiunga cha kwako mwenyewe. Tumia kingine unachotaka kuongeza!</string>
<string name="missing_link">Tafathali ingiza Kiungo </string>
<!--This is a numeral indicating the first step in a series of screens-->
<string name="step_1">1</string>
<!--This is a numeral indicating the second step in a series of screens-->
<string name="step_2">2</string>
<plurals name="contact_added_notification_text">
<item quantity="one">mawasiliano mapya yameongezeka </item>
<item quantity="other">%dmawawasiliano mapya yameongezeka</item>
</plurals>
<string name="adding_contact_slow_warning">kuongeza mawawasiliano haya yatachukua muda kuliko</string>
<string name="adding_contact_slow_title">inashidikana kuungana na mawasiliano </string>
<string name="adding_contact_slow_text">kuongeza mawasiliano haya yatachukua muda kuliko.\n\nTafathali angalia Kama unaye wasiliana nae kakuunganisha na wewe.</string>
<string name="offline_state">Hakuna mtandao</string>
<string name="duplicate_link_dialog_title">Kiunga cha kurudia.</string>
<string name="duplicate_link_dialog_text_1">Tayari unayo mawasiliano yenye kiunga hiki:%s</string>
<!--This is a question asking whether two nicknames refer to the same person-->
<string name="duplicate_link_dialog_text_2">yani%sna%sni mtu mmoja?</string>
<!--This is a button for answering that two nicknames do indeed refer to the same person. This
string will be used in a dialog button, so if the translation of this string is longer than 20
characters, please use "Yes" instead, and use "No" for the "Different Person" button-->
<string name="same_person_button">Mtu Mmoja</string>
<!--This is a button for answering that two nicknames refer to different people. This string
will be used in a dialog button, so if the translation of this string longer than 20 characters,
please use "No" instead, and use "Yes" for the "Same Person" button-->
<string name="different_person_button">Mtu Tofauti</string>
<string name="duplicate_link_dialog_text_3">%sna%swamekutumia kiunga sawa.\n\nMmoja wapo anajaribu kujuha ninani umewasiliana nae.\n\nUsi waambie umepokea kiunga hicho kwa mtu mwengine .</string>
<string name="pending_contact_updated_toast">mawasiano yalio subirishwa yamesasishwa </string>
<!--Introductions-->
<string name="introduction_onboarding_title">Tambulisha mawasiliano yako </string>
<string name="introduction_onboarding_text">Unaweza yatambulisha mawasiliano yako kwenu wote,Ili isiwe lazima mpaka wakutane ndio waungane kwenye Briar.</string>
<string name="introduction_menu_item">Anza Utambulisho </string>
<string name="introduction_activity_title">chagua mawasiliano </string>
<string name="introduction_not_possible">Tayari ulisha kuwa na utambulisho wa mawasilino yanaendelea. Tafathali ruhusa kwanza haya yaishe. Ila kama wewe au unaye wasiliananae wanapatikana muda mchache mtandaoni, itachukua muda kuisha .</string>
<string name="introduction_message_title">Tambulisha Mawasiliano </string>
<string name="introduction_message_hint">Ungeza Ujumbe (hiari)</string>
<string name="introduction_button">Anza Utambulisho </string>
<string name="introduction_sent">Utambulisho wako Umetumwa.</string>
<string name="introduction_error">Kulikuwa na hitilafu wakati wa utambulisho .</string>
<string name="introduction_response_error">Hitilafu wakati wa kujibu Utambulisho.</string>
<string name="introduction_request_sent">Umeombwa umtambulishe %1$skwa%2$s.</string>
<string name="introduction_request_received">%1$sameombwa akutambulishe Wewe kwa %2$s. Unataka kumuongeza %2$skwenye orodha ya mawasiliano ? </string>
<string name="introduction_request_exists_received">%1$sAmeombwa akutambulishe wewe kwa %2$s,ila%2$sYupo tayari kwenye orodha ya mawasiliano yako . Tangu%1$shafahamu hilo, unaweza ukamjibu tu .</string>
<string name="introduction_request_answered_received">%1$sAmeombwa Akutambulishe kwa %2$s.</string>
<string name="introduction_response_accepted_sent">Umekubali utambulisho kwa%1$s.</string>
<string name="introduction_response_accepted_sent_info">Kabla%1$sAja ongezwa kwenye mawasilino yako, Wanatakiwa wakubali utambulisho vyema . Pia inaweza chukua mudaa </string>
<string name="introduction_response_declined_sent">Une kataa utambulisho kwa%1$s.</string>
<string name="introduction_response_accepted_received">%1$samekubali utabulisho kwa %2$s</string>
<string name="introduction_response_declined_received">%1$sKakataa Utambulisho kwa %2$s.</string>
<string name="introduction_response_declined_received_by_introducee">%1$skasema kwamba %2$s kakataa utambulisho.</string>
<!--Private Groups-->
<string name="groups_list_empty">Hakuna kikundi cha kuonyesha </string>
<string name="groups_list_empty_action">Bonyeza +ikoni kutenege kikundi, au uliza mawasiliano yako wakuunge kwenye kikundi </string>
<string name="groups_created_by">Imetengenezwa na %s</string>
<string name="groups_group_is_empty">Hichi kikundi hakina watu </string>
<string name="groups_group_is_dissolved">Hichi kikundi kilisha futwaa</string>
<string name="groups_remove">Ondoa</string>
<string name="groups_create_group_title">Tengeneza Kikundi Binafsi</string>
<string name="groups_create_group_button">Tengeneza Kikundi </string>
<string name="groups_create_group_invitation_button">Tuma mwaliko</string>
<string name="groups_create_group_hint">Chagua jina la Kikundi binafsi </string>
<string name="groups_invitation_sent">Mwaliko wa kikundi umetumwa</string>
<string name="groups_member_list">Orodha ya wanachama </string>
<string name="groups_invite_members">Wahalike Wanachama </string>
<string name="groups_member_created_you">Umetengeneza Kikundi </string>
<string name="groups_member_created">%s katengeneza Kikundi </string>
<string name="groups_member_joined_you">Umejiunga kwenye kikundi </string>
<string name="groups_member_joined">%sAmejiunga kwenye kikundi</string>
<string name="groups_leave">Toka kwenye kikundi</string>
<string name="groups_leave_dialog_title">Thibitisha kutoka kwenye Kikundi </string>
<string name="groups_leave_dialog_message">Unauwakika unataka kutoka kwenye hichi kikundi ?</string>
<string name="groups_dissolve">Ondoka Kwenye Kikundi </string>
<string name="groups_dissolve_dialog_title">Hakiki Kufota kikundi </string>
<string name="groups_dissolve_dialog_message">Unauwakika unataka kufuta kikundi hiki?\n\nWote wanakikundi hawata weza endelea kujadiliana na Hawataweza pata ujumbe mpaya.</string>
<string name="groups_dissolve_button">kufuta</string>
<string name="groups_dissolved_dialog_title">Kikundi kime futwa </string>
<string name="groups_dissolved_dialog_message">Alie tengeneza kikundi kakifuta .\n\nWewe hautaweza kuandika ujumbe kwenye hili kundi na hutaweza pata chapisho ambalo lilisha wahi andikwa .</string>
<!--Private Group Invitations-->
<string name="groups_invitations_title">Mwaliko wa Kikundi </string>
<string name="groups_invitations_invitation_sent">Umemwalika %1$skujiunga kwenye kikundi \"%2$s\".</string>
<string name="groups_invitations_invitation_received">%1$samekualika kujiunga kwenye kikundi\"%2$s\".</string>
<string name="groups_invitations_joined">jiunge kwenye Kikundi </string>
<string name="groups_invitations_declined">mwaliko wa kikundi umekata</string>
<string name="groups_invitations_response_accepted_sent">Umekubali mwaliko wa kikundi kutoka kwa %s.</string>
<string name="groups_invitations_response_declined_sent">Umekata mwaliko wa kikundi kutoka kwa %s.</string>
<string name="groups_invitations_response_accepted_received">%sKakubali mwaliko wa Kikundi .</string>
<string name="groups_invitations_response_declined_received">%sWamekata mwaliko wa kikundi.</string>
<string name="sharing_status_groups">Ni alie tengeneza tu kikundi ndio anaweza mwalika mtu tu. Hapo chini ni wanakikundi waliopo.</string>
<!--Private Groups Revealing Contacts-->
<string name="groups_reveal_contacts">Onyesha Mawasiliano </string>
<string name="groups_reveal_dialog_message">Unaweza chagua kuonyesha mawasiliano yote sasa au hapo mbeleni ya wanakikundi.\n\nKuonyesha mawasiliano inafanya kikundi chako kuwa hai na kinapatikana marakwamara , kwasababu unawasiliana na mawasiliano yanayo tambulika hata kama unaye wasiliana nae hayupo mtandaoni </string>
<string name="groups_reveal_visible">Mahusiano ya mawasiliano yanaonekana kwenye kikundi</string>
<string name="groups_reveal_visible_revealed_by_us">Mahusiano ya kikundi yanaonekana ( Yameonyeshwa na wewe)</string>
<string name="groups_reveal_visible_revealed_by_contact">Mahusiano ya mawasiliano yanaonekana kwenye kikundi (Yanaonyeshwa na %s)</string>
<string name="groups_reveal_invisible">Mawaliano yanaonekana kwenye hichi kikundi </string>
<!--Forums-->
<string name="no_forums">Hakuna Mikutano yaku onyesha </string>
<string name="no_forums_action">Bonyeza + ikoni kutenege ukumbi , au uliza mawasiliano yako wakuunge kwenye ukumbi</string>
<string name="create_forum_title">Tengeneza Ukimbi </string>
<string name="choose_forum_hint">Chagua jina la mkutano wako</string>
<string name="create_forum_button">Tengeneza Ukimbi</string>
<string name="forum_created_toast">Ukumbi Umetengenezwa</string>
<string name="no_forum_posts">Hakuna chapisho lakuonyesha </string>
<string name="no_posts">Hakuna Chapisho </string>
<string name="forum_new_message_hint">Chapisho jipaya</string>
<string name="forum_message_reply_hint">Jibu jipya</string>
<string name="btn_reply">Jibu</string>
<string name="forum_leave">Toka kwenye ukumbi</string>
<string name="dialog_title_leave_forum">Thibitisha kutoka kwenye Ukumbi</string>
<string name="dialog_message_leave_forum">unauwakika unataka toka kwenye ukumbi?\n\nNa mawasiliano ambayo uliyaweka kwenye hichi kikundi hawataweza endelea pata taharifa . </string>
<string name="dialog_button_leave">Toka</string>
<string name="forum_left_toast">ondoka kwenye Ukumbi </string>
<!--Forum Sharing-->
<string name="forum_share_button">Sambaza Ukumbi</string>
<string name="contacts_selected">Mawasiliano yalio chaguliwa </string>
<string name="activity_share_toolbar_header">Chagua Mawasiliano </string>
<string name="no_contacts_selector">hakuna mawasiliano yakuonyesha </string>
<string name="no_contacts_selector_action">Tafathali rudi tena hapa baada ya kuongeza mawasiliano </string>
<string name="forum_shared_snackbar">Umetawanya kumbi na mawasiliano ulio chagua </string>
<string name="forum_share_message">Ungeza Ujumbe (hiari)</string>
<string name="forum_share_error">kulikuwa na hitilafu wakati changia huu ukumbi </string>
<string name="forum_invitation_received">%1$skamwaharifu juu ukumbi \"%2$s\" na wewe.</string>
<string name="forum_invitation_sent">Ume taharifiwa juu ya ukumbi \"%1$s\" na %2$s.</string>
<string name="forum_invitations_title">Mwaliko wa ukumbi</string>
<string name="forum_invitation_exists">Umekubali mwaliko wa ukumbi huu tayari.\n\nNa kukubali mialiko mbali mbali itakufanya uwe na kikundi hai.</string>
<string name="forum_joined_toast">umekiunga kwenye Ukumbi </string>
<string name="forum_declined_toast">Mwaliko umekataliwa</string>
<string name="shared_by_format">Umetumwa na %s</string>
<string name="forum_invitation_already_sharing">Tayari imesha sabanzwa</string>
<string name="forum_invitation_response_accepted_sent">Umekubali mwaliko wa ukumbi kutoka kwa %s.</string>
<string name="forum_invitation_response_declined_sent">Umekata mwaliko wa ukumbi kutoka kwa %s.</string>
<string name="forum_invitation_response_accepted_received">%sKakubali mwaliko wa ukumbi.</string>
<string name="forum_invitation_response_declined_received">%skakata mwaliko wa ukumbi.</string>
<string name="sharing_status">Tawanya hali </string>
<string name="sharing_status_forum">Mwana kikundi yoyote naweza taharifu watu wengine. Una tumia ukumbi huu na marafiki zako . Nakuna watu wengine wanweza kutoona pia .</string>
<string name="shared_with">Umesabazwa na %1$d(%2$dmkondoni)</string>
<string name="nobody">Hakuna mtu </string>
<!--Blogs-->
<string name="blogs_other_blog_empty_state">Hakuna chapisho lakuonyesha </string>
<string name="read_more">Soma zaidi </string>
<string name="blogs_write_blog_post">Andika chapisho la Blogi </string>
<string name="blogs_write_blog_post_body_hint">Andika chapisho lako la blogi </string>
<string name="blogs_publish_blog_post">kuchapisha </string>
<string name="blogs_blog_post_created">Chapisho la blogi limesha tengenezwa </string>
<string name="blogs_blog_post_received">Chapisho jipya la blogi limepokelewa </string>
<string name="blogs_blog_post_scroll_to">Tembeza kwa</string>
<string name="blogs_feed_empty_state">Hakuna chapisho lakuonyesha </string>
<string name="blogs_feed_empty_state_action">Taharifa zote kutoka kwenye Mawasaliano yako na blogi unazo zifwatilia zitatokea hapa\n\nBonyeza kalamu ikoni kuandika Taharifa </string>
<string name="blogs_remove_blog">Ondoa blogi </string>
<string name="blogs_remove_blog_ok">Ondoa</string>
<string name="blogs_blog_removed">Blogi imeondolewa </string>
<string name="blogs_reblog_comment_hint">Weka maoni(hiari)</string>
<string name="blogs_reblog_button">Chapisha tena </string>
<!--Blog Sharing-->
<string name="blogs_sharing_share">tuma kwa wengine Blogi</string>
<string name="blogs_sharing_error">kulikuwa na hitilafu wakati wakuchangia blogi.</string>
<string name="blogs_sharing_button">tuma kwa wengine Blogi</string>
<string name="blogs_sharing_snackbar">Tuma blogi kwa bahathi ya mawasiliano </string>
<string name="blogs_sharing_response_accepted_sent">Umekubali mwaliko wa Blogi kutoka %s.</string>
<string name="blogs_sharing_response_declined_sent">Umekata mwaliko wa blogi kutoka kwa %s.</string>
<string name="blogs_sharing_response_accepted_received">%skakubali mwaliko wa blogi.</string>
<string name="blogs_sharing_response_declined_received">%skakata mwaliko wa blogi.</string>
<string name="blogs_sharing_invitation_received">%1$s kamwalika kwenye blogi\"%2$s\" na wewe.</string>
<string name="blogs_sharing_invitation_sent">Umemwalika kwenye blogi \"%1$s\" pia%2$s.</string>
<string name="blogs_sharing_invitations_title">Mwaliko wa Blogi</string>
<string name="blogs_sharing_joined_toast">Jisajili kwenye Blogi</string>
<string name="blogs_sharing_declined_toast">mwaliko umekataliwa</string>
<!--RSS Feeds-->
<string name="blogs_rss_feeds_import">Leta RSS taharifa</string>
<string name="blogs_rss_feeds_import_button">Leta</string>
<string name="blogs_rss_feeds_import_hint">Ingiza URL za RSS taharifa</string>
<string name="blogs_rss_feeds_import_error">Tafathi Samahani! Kulikuwa na Hitilafu wakati wakuingiza Taharifa </string>
<string name="blogs_rss_feeds_manage">Simamia RSS taharifa </string>
<string name="blogs_rss_feeds_manage_imported">Zilizoingizwa</string>
<string name="blogs_rss_feeds_manage_author">Mwandishi:</string>
<string name="blogs_rss_feeds_manage_updated">Yamwisho imesasishwa: </string>
<string name="blogs_rss_remove_feed">Ondoa taharifa</string>
<string name="blogs_rss_remove_feed_dialog_message">Unauwakika unataka kutoa hii taharifa?\n\nChapisho lako litaondolewa kwenye kifaa chako ila sio kwenye vifaa vya watu wengine.\n\nMawasiliano yoyote utakayo ambayo uliyaunganisha wataendelea kupata taharifa. </string>
<string name="blogs_rss_remove_feed_ok">Ondoa</string>
<string name="blogs_rss_feeds_manage_delete_error">Taharifa haziwezekani kuzifuta! </string>
<string name="blogs_rss_feeds_manage_empty_state">Hakuna RSS taharifa zaku onyesha\n\nBonyeza + ikoni kuleta taharifa </string>
<string name="blogs_rss_feeds_manage_error">Kulikuwa na tatizo la kufungua taharifa . Tafathali jaribu baadae kidogo.</string>
<!--Settings Display-->
<string name="pref_language_title">Lugha &amp;mkoa</string>
<string name="pref_language_changed">Huu mpango utafanya kazi baada yaku kuaza upaya Briar.Tafathali toka na kuanza upaya Briar.</string>
<string name="pref_language_default">Mfumo msingi </string>
<string name="display_settings_title">Onyesha</string>
<string name="pref_theme_title">Mada</string>
<string name="pref_theme_light">mwanga</string>
<string name="pref_theme_dark">Giza</string>
<string name="pref_theme_auto">kiotomatiki (Mchana)</string>
<string name="pref_theme_system">Mfumo Msingi </string>
<!--Settings Network-->
<string name="network_settings_title">Mtandao</string>
<string name="bluetooth_setting">Unganisha kwa Bluetooth</string>
<string name="bluetooth_setting_enabled">wakati wowote mawasiliano yakiwa karibu </string>
<string name="bluetooth_setting_disabled">Wakati waku ongeza mawasiliano tu.</string>
<string name="tor_network_setting">Unganisha kwa Mtandao (Tor)</string>
<string name="tor_network_setting_automatic">kiotomatiki inatengemeana na mahali </string>
<string name="tor_network_setting_without_bridges">tumia Tor bila madaraja </string>
<string name="tor_network_setting_with_bridges">Tumia Tor na madaraja </string>
<string name="tor_network_setting_never">usi unganishe </string>
<!--How and when Tor will connect after Automatic: E.g. Don't connect (in China) or Use Tor with bridges (in Belarus)-->
<string name="tor_network_setting_summary">kiotomatiki:%1$s (ndani%2$s)</string>
<string name="tor_mobile_data_title">Tumia Data ya simu</string>
<string name="tor_only_when_charging_title">Unganishwa kwenye mkongo (Tor) kwenye wakati wa kucharge tu</string>
<string name="tor_only_when_charging_summary">Zima mtandao wakati betri ipo chini </string>
<!--Settings Security and Panic-->
<string name="security_settings_title">Ulizi</string>
<string name="pref_lock_title">Funga programu</string>
<string name="pref_lock_summary">Tumia nenosiri la simu kulinda Briar wakati wa kuingia</string>
<string name="pref_lock_disabled_summary">Ili kutumia huu mfumo , weka ulizi kwenye kifaa chako </string>
<string name="pref_lock_timeout_title">Kifungo cha Programu kimefika mwisho wake </string>
<!--The %s placeholder is replaced with the following time spans, e.g. 5 Minutes, 1 Hour-->
<string name="pref_lock_timeout_summary">Usipo kuwa unatumia Briar , kiotomatiki itajifunga baada ya %s</string>
<!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"-->
<string name="pref_lock_timeout_1">Dakika 1</string>
<!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"-->
<string name="pref_lock_timeout_5">dakika 5</string>
<!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"-->
<string name="pref_lock_timeout_15">Dakika 15</string>
<!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"-->
<string name="pref_lock_timeout_30">Dakika 30</string>
<!--Will be shown in a list of lock times. Should fit into the %s of "automatically lock it after %s"-->
<string name="pref_lock_timeout_60">lisaa 1</string>
<string name="pref_lock_timeout_never">Kamwe</string>
<string name="pref_lock_timeout_never_summary">isijeikaji funga Briar kiotomatiki</string>
<string name="change_password">Badili nenosiri</string>
<string name="current_password">Nenosiri Lasasa</string>
<string name="choose_new_password">Nenosiri jipya</string>
<string name="confirm_new_password">Hakiki Nenosiri jipya</string>
<string name="password_changed">Nenosiri limebadilika </string>
<string name="panic_setting">Bonyeza ukiwa na hofu </string>
<string name="panic_setting_title">kitufe cha hofu </string>
<string name="panic_setting_hint">hakiki jinsi Briar ita kuwa endapo utabonyeza kitufe cha hofu kwenye programu </string>
<string name="panic_app_setting_title">Kitufe cha hofu kwenye programu </string>
<string name="unknown_app">programu isio tambulika</string>
<string name="panic_app_setting_summary">hakuna programu ilio tegeshwa </string>
<string name="panic_app_setting_none">Hakuna</string>
<string name="dialog_title_connect_panic_app">Hakiki programu Hofu</string>
<string name="dialog_message_connect_panic_app">Unauwakika unataka kumruhusu %1$skujibu taharifa za hofu ? </string>
<string name="panic_setting_destructive_action">Kitendo cha kuharibu </string>
<string name="panic_setting_signout_title">Kutoka</string>
<string name="panic_setting_signout_summary">Toka kwenye Briar endapo kitufe cha Hofu kitabo nyezwa </string>
<string name="purge_setting_title">futa akaunti</string>
<string name="purge_setting_summary">Futa Briar akaunti endapo kitufe cha Hofu kitakuwa kimebonyezwa kwa mstuko . Hii itafuta kabisa mawasiliano na ujumbe wako </string>
<string name="uninstall_setting_title">ondoa Briar</string>
<string name="uninstall_setting_summary">Hii itaitaji mwongozo wa tukio la hofu </string>
<!--Settings Notifications-->
<string name="notification_settings_title">Arifu</string>
<string name="notify_sign_in_title">Nikumbushe ku ingia</string>
<string name="notify_sign_in_summary">onyesha kumbusho wakati simu imewaka au programu imesasisha</string>
<string name="notify_private_messages_setting_title">ujumbe wa kibinafsi</string>
<string name="notify_private_messages_setting_summary">onyesha arifu kwa ujumbe wa kibinafsi</string>
<string name="notify_private_messages_setting_summary_26">sanidi arifu kwa ujembe wa kibinafsi</string>
<string name="notify_group_messages_setting_title">ujumbe wakikundi</string>
<string name="notify_group_messages_setting_summary">Onyesha Taharifa za kikundi </string>
<string name="notify_group_messages_setting_summary_26">Hakiki ujumbe wa kikundi </string>
<string name="notify_forum_posts_setting_title">chapisho Ukumbi </string>
<string name="notify_forum_posts_setting_summary">Onyesha taharifa za chapisho kwenye Ukumbi </string>
<string name="notify_forum_posts_setting_summary_26">Hakiki taharifa za chapisho kwenye ukumbi </string>
<string name="notify_blog_posts_setting_title">chapisho blogi</string>
<string name="notify_blog_posts_setting_summary">Onyesha chapisho kutoka kwenye blogi </string>
<string name="notify_blog_posts_setting_summary_26">Hakiki taharifa za chapisho kwenye blogi </string>
<string name="notify_vibration_setting">vibrate </string>
<string name="notify_sound_setting">Sauti</string>
<string name="notify_sound_setting_default">Mwiito mkuu </string>
<string name="notify_sound_setting_disabled">Hakuna</string>
<string name="choose_ringtone_title">Chagua mwiito </string>
<string name="cannot_load_ringtone">Ina shindikana kufungua mwiito </string>
<!--Settings Feedback-->
<string name="feedback_settings_title">Maoni</string>
<string name="send_feedback">Tuma Maoni </string>
<!--Link Warning-->
<string name="link_warning_title">kiungo cha onyo</string>
<string name="link_warning_open_link">Fungua kiungo </string>
<!--Crash Reporter-->
<string name="crash_report_title">Briar taharia imearibika</string>
<string name="briar_crashed">Samahani, Briar imeharibika.</string>
<string name="feedback_title">Maoni</string>
<string name="describe_crash">Eleza kilicho tokea (hiari)</string>
<string name="enter_feedback">Weka Maoni yako </string>
<string name="optional_contact_email">Barua pepe yako (hiari)</string>
<string name="send_report">Tuma repoti </string>
<string name="close">Funga</string>
<!--Sign Out-->
<!--Screen Filters & Tapjacking-->
<!--Permission Requests-->
<string name="permission_camera_title">kamera iruhusu</string>
<string name="permission_location_title">Ruhusa ya eneo</string>
<string name="permission_camera_location_title">Kamera na Eneo</string>
<!--App Locking-->
<string name="lock_unlock">Fungua Briar</string>
<string name="lock_unlock_verbose">Ingiza Nenosiri la kifaa chako,PIN au fumbo kufungua Briar </string>
<string name="lock_unlock_password">Tumia nenosiri</string>
<string name="lock_is_locked">Briar imefungwa </string>
<string name="lock_tap_to_unlock">Bonyeza kufunga</string>
<!--Screenshots-->
<!--This is a name to be used in screenshots. Feel free to change it to a local name.-->
<string name="screenshot_alice">Alice</string>
<!--This is a name to be used in screenshots. Feel free to change it to a local name.-->
<string name="screenshot_bob">Bob</string>
<!--This is a name to be used in screenshots. Feel free to change it to a local name.-->
<string name="screenshot_carol">Carol</string>
<!--This is a message to be used in screenshots. Please use the same translation for Bob!-->
<string name="screenshot_message_1">Hi Bob!</string>
<!--This is a message to be used in screenshots. Please use the same translation for Alice!-->
<string name="screenshot_message_2">Hi Alice! Asante kwa kuniambia juu ya Briar!</string>
<!--This is a message to be used in screenshots.-->
<string name="screenshot_message_3">Hakuna tatizo, natumaini utaipenda 😀</string>
</resources>

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