Compare commits

..

32 Commits

Author SHA1 Message Date
Greyson Parrelli
fd46777f04 Bump version to 4.33.4
No changes. Need to create a new version to handle Play Store issues.
2019-02-06 10:27:59 -08:00
Greyson Parrelli
5bb36c15d5 Bump version to 4.33.3 2019-02-06 09:22:19 -08:00
Meteor0id
c5571e8a8d Add 'Got it' as string to be used on link preview splash screen.
"Understood" or "Got it" is a way of dismissing a splash screen of notification without any change that is applies agreeing to anything.
It replaces "OK" which was sometimes misinterpreted as "I am OK with what I just read".
2019-02-06 09:22:19 -08:00
Greyson Parrelli
b8ab1bc3b2 Updated language translations. 2019-02-06 08:39:00 -08:00
Greyson Parrelli
3683e6a9e2 Revert "Apply contact updates in batches of 50."
This reverts commit 5d9d6ac12b.
2019-02-06 00:54:03 -08:00
Greyson Parrelli
c364345e1d Add some additional FCM logging. 2019-02-06 00:53:52 -08:00
Greyson Parrelli
7da73bbc30 Updated link preview splash layout. 2019-02-06 00:34:48 -08:00
Greyson Parrelli
177322eca4 Bump version to 4.33.2 2019-02-04 13:57:49 -08:00
Greyson Parrelli
506491d13d Updated language translations. 2019-02-04 13:56:06 -08:00
Greyson Parrelli
e884911b60 Update the link preview domain whitelist. 2019-02-04 09:05:40 -08:00
Greyson Parrelli
7b20fca1ac Clearing the text field resets link preview cancellation. 2019-02-04 08:54:54 -08:00
Greyson Parrelli
e2c2e59442 Bump version to 4.33.1 2019-02-02 10:13:37 -08:00
Greyson Parrelli
be66db898c Fix possible double-cancel in CallRequestController. 2019-02-02 10:09:38 -08:00
Greyson Parrelli
5d9d6ac12b Apply contact updates in batches of 50.
If batch sizes are too large, we'll get a Binder exception.

Fixes #8580
2019-02-01 12:47:34 -08:00
Greyson Parrelli
c6d3bed8da Hide emoji button in media flows when system emoji are enabled.
Fixes #8581
2019-02-01 09:17:07 -08:00
Greyson Parrelli
e74c429695 Bump version to 4.33.0 2019-01-30 16:34:10 -08:00
Greyson Parrelli
90a37852cc Hide quoted attachments from All Media and media rails.
Fixes #8009
2019-01-30 16:34:10 -08:00
Greyson Parrelli
1763be2956 Hide call settings for groups. 2019-01-30 16:33:02 -08:00
Greyson Parrelli
9797c54a4d Removed sonar ping from calls.
People rarely understood what it meant, and the information is available
on the screen if-needed ('dialing' vs 'ringing').
2019-01-30 16:10:47 -08:00
Greyson Parrelli
c5114e2cb3 Updated to WebRTC M71. 2019-01-30 16:10:47 -08:00
Greyson Parrelli
e3b22dabce Harden notification channels.
There's odd corner cases where channels can be duplicated. This commit
adds some hard checks where we trim any dead channels, and unset any
notification channels from recipients whose notification channel isn't
present in the system settings.
2019-01-30 16:10:47 -08:00
Bas van Schaik
ba67796992 Fix invalid equals in NotificationChannels.channelExists
`DEFAULT_CHANNEL_ID` is a String, but `channel` is a NotificationChannel. Equals will therefore always return `false`. I think my fix (using `getId()`) is what was intended.
2019-01-30 16:10:47 -08:00
Greyson Parrelli
d482c60a98 Switch from GCM to FCM. 2019-01-30 16:10:47 -08:00
Greyson Parrelli
ebe8d38a91 Update WorkManager to beta03. 2019-01-30 16:10:47 -08:00
Greyson Parrelli
c76081d99c Added support for link previews. 2019-01-30 16:10:43 -08:00
Greyson Parrelli
bef9beff16 Updated Gradle to 5.1 2019-01-29 09:22:44 -08:00
Greyson Parrelli
25e82ff5e4 Fixed issue where we'd incorrectly show input shadow.
We might have also scrolled with typing indicators when we shouldn't of.

All came down to #isAtBottom() being calculated incorrectly.
2019-01-27 22:07:55 -08:00
Greyson Parrelli
13ffba1c99 Updated language translations. 2019-01-25 17:55:31 -08:00
Greyson Parrelli
a0c1446e9f Fix notification badge display.
This reverts commit 2489ea0d5b.
2019-01-21 16:43:59 -08:00
Greyson Parrelli
657b520908 Bump version to 4.32.8 2019-01-20 14:22:27 -08:00
Greyson Parrelli
51e8e8c2c8 Go back to WorkManager beta01.
Looks like there may be a rescheduling bug in beta02. Working through it
with the WorkManager devs.
2019-01-20 14:12:29 -08:00
Greyson Parrelli
1e534a2a10 Fix group avatars not sending.
Fixes #8547
2019-01-20 12:00:18 -08:00
152 changed files with 5967 additions and 1346 deletions

View File

@@ -87,10 +87,6 @@
<uses-permission android:name="android.permission.RAISED_THREAD_PRIORITY" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
<permission android:name="org.thoughtcrime.securesms.permission.C2D_MESSAGE"
android:protectionLevel="signature" />
<uses-permission android:name="org.thoughtcrime.securesms.permission.C2D_MESSAGE" />
<application android:name=".ApplicationContext"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
@@ -110,6 +106,11 @@
<meta-data android:name="com.google.android.gms.car.application"
android:resource="@xml/automotive_app_desc" />
<meta-data android:name="firebase_analytics_collection_deactivated" android:value="true" />
<meta-data android:name="google_analytics_adid_collection_enabled" android:value="false" />
<meta-data android:name="firebase_messaging_auto_init_enabled" android:value="false" />
<meta-data android:name="firebase_analytics_collection_enabled" android:value="false" />
<activity android:name="org.thoughtcrime.securesms.WebRtcCallActivity"
android:excludeFromRecents="true"
android:screenOrientation="portrait"
@@ -472,12 +473,11 @@
<service android:name=".service.GenericForegroundService"/>
<receiver android:name=".gcm.GcmBroadcastReceiver" android:permission="com.google.android.c2dm.permission.SEND" >
<service android:name=".gcm.FcmService">
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="org.thoughtcrime.securesms" />
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</receiver>
</service>
<receiver android:name=".service.SmsListener"
android:permission="android.permission.BROADCAST_SMS"

View File

@@ -12,7 +12,7 @@ RUN dpkg --add-architecture i386 && \
ENV ANDROID_SDK_FILENAME android-sdk_r24.4.1-linux.tgz
ENV ANDROID_SDK_URL https://dl.google.com/android/${ANDROID_SDK_FILENAME}
ENV ANDROID_API_LEVELS android-28
ENV ANDROID_BUILD_TOOLS_VERSION 27.0.3
ENV ANDROID_BUILD_TOOLS_VERSION 28.0.3
ENV ANDROID_HOME /usr/local/android-sdk-linux
ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools
RUN cd /usr/local/ && \

View File

@@ -14,7 +14,8 @@ buildscript {
}
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
classpath 'com.android.tools.build:gradle:3.3.0'
classpath 'com.google.gms:google-services:4.0.2'
classpath files('libs/gradle-witness.jar')
}
}
@@ -23,35 +24,38 @@ apply plugin: 'com.android.application'
apply plugin: 'witness'
repositories {
maven {
url "https://repo1.maven.org/maven2/"
}
maven {
url "https://raw.github.com/signalapp/maven/master/preferencefragment/releases/"
}
maven {
url "https://raw.github.com/signalapp/maven/master/smil/releases/"
}
maven {
url "https://raw.github.com/signalapp/maven/master/photoview/releases/"
content {
includeGroupByRegex "com\\.github\\.chrisbanes.*"
}
}
maven {
url "https://raw.github.com/signalapp/maven/master/shortcutbadger/releases/"
content {
includeGroupByRegex "me\\.leolin.*"
}
}
maven {
url "https://raw.github.com/signalapp/maven/master/circular-progress-button/releases/"
content {
includeGroupByRegex "com\\.github\\.dmytrodanylyk\\.circular-progress-button\\.*"
}
}
maven {
url "https://raw.github.com/signalapp/maven/master/sqlcipher/release/"
}
maven {
url "https://maven.google.com"
content {
includeGroupByRegex "org\\.signal.*"
}
}
maven { // textdrawable
url 'https://dl.bintray.com/amulyakhare/maven'
content {
includeGroupByRegex "com\\.amulyakhare.*"
}
}
maven {
url 'https://dl.bintray.com/google/flexbox-layout/'
url "https://maven.google.com"
}
google()
jcenter()
@@ -70,12 +74,14 @@ dependencies {
compile "com.android.support:preference-v14:$supportVersion"
compile "com.android.support:gridlayout-v7:$supportVersion"
compile "com.android.support:exifinterface:$supportVersion"
compile 'com.android.support.constraint:constraint-layout:1.1.3'
compile 'com.android.support:multidex:1.0.3'
compile 'android.arch.lifecycle:extensions:1.1.1'
compile 'android.arch.lifecycle:common-java8:1.1.1'
compile 'android.arch.work:work-runtime:1.0.0-beta02'
compile 'android.arch.work:work-runtime:1.0.0-beta03'
compile 'com.google.android.gms:play-services-gcm:16.0.0'
compile 'com.google.firebase:firebase-messaging:17.3.4'
compile 'com.google.firebase:firebase-core:16.0.6'
compile 'com.google.android.gms:play-services-maps:16.0.0'
compile 'com.google.android.gms:play-services-places:16.0.0'
compile 'com.google.android.gms:play-services-auth:16.0.1'
@@ -83,8 +89,8 @@ dependencies {
compile 'com.google.android.exoplayer:exoplayer-core:2.9.1'
compile 'com.google.android.exoplayer:exoplayer-ui:2.9.1'
compile 'org.whispersystems:signal-service-android:2.12.5'
compile 'org.whispersystems:webrtc-android:M69'
compile 'org.whispersystems:signal-service-android:2.12.7'
compile 'org.whispersystems:webrtc-android:M71'
compile "me.leolin:ShortcutBadger:1.1.16"
compile 'se.emilsjolander:stickylistheaders:2.7.0'
@@ -103,7 +109,7 @@ dependencies {
compile 'com.squareup.dagger:dagger:1.2.2'
annotationProcessor 'com.squareup.dagger:dagger-compiler:1.2.2'
compile 'mobi.upod:time-duration-picker:1.1.3'
provided 'com.squareup.dagger:dagger-compiler:1.2.2'
compileOnly 'com.squareup.dagger:dagger-compiler:1.2.2'
compile 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
compile 'com.google.zxing:core:3.2.1'
compile ('com.davemorrissey.labs:subsampling-scale-image-view:3.6.0') {
@@ -132,22 +138,22 @@ dependencies {
exclude group: 'org.freemarker'
}
testCompile 'junit:junit:4.12'
testCompile 'org.assertj:assertj-core:1.7.1'
testCompile 'org.mockito:mockito-core:1.9.5'
testCompile 'org.powermock:powermock-api-mockito:1.6.1'
testCompile 'org.powermock:powermock-module-junit4:1.6.1'
testCompile 'org.powermock:powermock-module-junit4-rule:1.6.1'
testCompile 'org.powermock:powermock-classloading-xstream:1.6.1'
testImplementation 'junit:junit:4.12'
testImplementation 'org.assertj:assertj-core:1.7.1'
testImplementation 'org.mockito:mockito-core:1.9.5'
testImplementation 'org.powermock:powermock-api-mockito:1.6.1'
testImplementation 'org.powermock:powermock-module-junit4:1.6.1'
testImplementation 'org.powermock:powermock-module-junit4-rule:1.6.1'
testImplementation 'org.powermock:powermock-classloading-xstream:1.6.1'
androidTestCompile 'com.android.support:multidex:1.0.3'
androidTestCompile 'com.android.support:multidex-instrumentation:1.0.3'
androidTestCompile 'com.google.dexmaker:dexmaker:1.2'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2'
androidTestCompile ('org.assertj:assertj-core:1.7.1') {
androidTestImplementation 'com.android.support:multidex:1.0.3'
androidTestImplementation 'com.android.support:multidex-instrumentation:1.0.3'
androidTestImplementation 'com.google.dexmaker:dexmaker:1.2'
androidTestImplementation 'com.google.dexmaker:dexmaker-mockito:1.2'
androidTestImplementation ('org.assertj:assertj-core:1.7.1') {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
}
androidTestCompile ('com.squareup.assertj:assertj-android:1.1.1') {
androidTestImplementation ('com.squareup.assertj:assertj-android:1.1.1') {
exclude group: 'org.hamcrest', module: 'hamcrest-core'
exclude group: 'com.android.support', module: 'support-annotations'
}
@@ -169,18 +175,20 @@ dependencyVerification {
'com.android.support:cardview-v7:bc9e6b0e06ce1205f1db34f0e6193019613d19cfeb54cdccea722340d1c60f26',
'com.android.support:gridlayout-v7:5029529f7db66f8773426bf7318645f0840fc50d74f66355cd60c5e58d2da087',
'com.android.support:exifinterface:bbf44e519edd6333a24a3285aa21fd00181b920b81ca8aa89a8899f03ab4d6b0',
'com.android.support.constraint:constraint-layout:27b4e5c0b80d3ff8b92f4c93b3b4d3ecf16c01589f4cdf70ca7cf64cb42d8122',
'com.android.support:multidex:ecf6098572e23b5155bab3b9a82b2fd1530eda6c6c157745e0f5287c66eec60c',
'android.arch.work:work-runtime:a865eaf55179bb800f04b04f2fa35c3c4d1108c550bc6b447bca168dac16b56e',
'android.arch.work:work-runtime:f428464342adeb412fd350a0c268134e92a13cf3d71c5d38180386c2b23fa694',
'android.arch.lifecycle:extensions:429426b2feec2245ffc5e75b3b5309bedb36159cf06dc71843ae43526ac289b6',
'android.arch.lifecycle:common-java8:7078b5c8ccb94203df9cc2a463c69cf0021596e6cf966d78fbfd697aaafe0630',
'com.google.android.gms:play-services-gcm:921b4651a2f4d108753f8b4c5d3844b5f8c1f3c31b740c80f69765082713d004',
'com.google.firebase:firebase-messaging:e42288e7950d7d3b033d3395a5ac9365d230da3e439a2794ec13e2ef0fbaf078',
'com.google.firebase:firebase-core:07d1544aeed9690843858982ea5a69506038f94e93b5d031b741ba9164f6258a',
'com.google.android.gms:play-services-places:2d5c4e4ac3ee5be21b4ec544411bc51d11457b5ae2fa2a5d4539019f87c233c6',
'com.google.android.gms:play-services-maps:07f59c5955b759ce7b80ceaeb8261643c5b79acc9f180df2b7c3987658eed2e8',
'com.google.android.gms:play-services-auth:aec9e1c584d442cb9f59481a50b2c66dc191872607c04d97ecb82dd0eb5149ec',
'com.google.android.exoplayer:exoplayer-ui:7a942afcc402ff01e9bf48e8d3942850986710f06562d50a1408aaf04a683151',
'com.google.android.exoplayer:exoplayer-core:b6ab34abac36bc2bc6934b7a50008162feca2c0fde91aaf1e8c1c22f2c16e2c0',
'org.whispersystems:signal-service-android:d48244f9e19a4300b0baf65c2cef8c76082d55f11d331b00d098c686729cde2e',
'org.whispersystems:webrtc-android:5493c92141ce884fc5ce8240d783232f4fe14bd17a8d0d7d1bd4944d0bd1682f',
'org.whispersystems:signal-service-android:0afd2cb17ed920611dacc54385f3ed375847c10ecd7839a025d9c61c387f7678',
'org.whispersystems:webrtc-android:0620880760976d78ef429dc8b383136981b9a72178e5d70f5affa681deffed69',
'me.leolin:ShortcutBadger:e3cb3e7625892129b0c92dd5e4bc649faffdd526d5af26d9c45ee31ff8851774',
'se.emilsjolander:stickylistheaders:a08ca948aa6b220f09d82f16bbbac395f6b78897e9eeac6a9f0b0ba755928eeb',
'com.jpardogo.materialtabstrip:library:c6ef812fba4f74be7dc4a905faa4c2908cba261a94c13d4f96d5e67e4aad4aaa',
@@ -203,19 +211,32 @@ dependencyVerification {
'com.github.dmytrodanylyk.circular-progress-button:library:8dc6a29a5a8db7b2ad5a9a7fda1dc9ae0893f4c8f0545732b2c63854ea693e8e',
'org.signal:android-database-sqlcipher:33d4063336893af00b9d68b418e7b290cace74c20ce8aacffddc0911010d3d73',
'com.googlecode.ez-vcard:ez-vcard:7e24ad50b222d2f70ac91bdccfa3c0f6200b078d797cb784837f75e77bb4210f',
'com.google.android.gms:play-services-iid:62aa9d8fbfb66ab68d5afdfe78db3d5da1f6adcc19abac142cee25fb23d3391f',
'com.google.firebase:firebase-measurement-connector-impl:eacaa68ed2c5c390b517267d7dae34268084d43b006db12682db88d17bbdc0ee',
'com.google.firebase:firebase-analytics:91a6b814b556779c223c80f52d0ca8ed48edbd4645b0d9104ac7b22639d5acf1',
'com.google.android.gms:play-services-measurement-api:a026fc70e777bcda3f7e51e68e331a03ed7a1143a7b3e3f67b99c21177a5b4d5',
'com.google.firebase:firebase-analytics-impl:dff7c79fe2dc3bef441057ae36678b51e27301f9b03377657170820bbe3c7441',
'com.google.firebase:firebase-iid:bb42774e309d5eac1aa493d19711032bee4f677a409639b6a5cfa93089af93eb',
'com.google.firebase:firebase-common:3db6bfd4c6f758551e5f9acdeada2050577277e6da1aefb2412de23829759bcf',
'com.google.android.gms:play-services-auth-api-phone:19365818b9ceb048ef48db12b5ffadd5eb86dbeb2c7c7b823bfdd89c665f42e5',
'com.google.android.gms:play-services-auth-base:51dc02ad2f8d1d9dff7b5b52c4df2c6c12ef7df55d752e919d5cb4dd6002ecd0',
'com.google.firebase:firebase-iid-interop:2a86322b9346fd4836219206d249e85803311655e96036a8e4b714ce7e79693b',
'com.google.android.gms:play-services-base:aca10c780c3219bc50f3db06734f4ab88badd3113c564c0a3156ff8ff674655b',
'com.google.android.gms:play-services-stats:5b2d8281adbfd6e74d2295c94bab9ea80fc9a84dfbb397995673f5af4d4c6368',
'com.google.android.gms:play-services-places-placereport:04f8baeb1f8f8a734c7d4b1701a3974281b45591affa7e963b59dd019b8abc6e',
'com.google.android.gms:play-services-tasks:b31c18d8d1cc8d9814f295ee7435471333f370ba5bd904ca14f8f2bec4f35c35',
'com.google.firebase:firebase-measurement-connector:bc318110486ed738e1cc84d4b280e156b35a9a3964d678ee64930d846150d0c3',
'com.google.android.gms:play-services-places-placereport:04f8baeb1f8f8a734c7d4b1701a3974281b45591affa7e963b59dd019b8abc6e',
'com.google.android.gms:play-services-stats:5b2d8281adbfd6e74d2295c94bab9ea80fc9a84dfbb397995673f5af4d4c6368',
'com.google.android.gms:play-services-measurement-base:887ddc8b384108a35ff7a41c8bc5c653dcedb44d9d6e46110569f586898d3c1d',
'com.google.android.gms:play-services-ads-identifier:380b09bfc5389fff93b5719c04e57c99678c9c3af0402a91e26d89734babcc49',
'com.google.android.gms:play-services-basement:e08bfd1e87c4e50ef76161d7ac76b873aeb975367eeb3afa4abe62ea1887c7c6',
'com.android.support:support-v4:8b9031381c678d628c9e47b566ae1d161e1c9710f7855c759beeac7596cecf30',
'com.android.support:support-fragment:3772fc738ada86824ba1a4b3f197c3dbd67b7ddcfe2c9db1de95ef2e3487a915',
'com.android.support:animated-vector-drawable:271ecbc906cda8dcd9e655ba0473129c3408a4189c806f616c378e6fd18fb3b7',
'com.android.support:support-core-ui:bbc7f65fc95649464733af373361532ab5f9f3b749c3badaa2bbf27e574b6c6f',
'android.arch.persistence.room:runtime:d05c78d494dc700fd6dbc0e873451aebb2510ffbb070c82179055cb10bdd8822',
'com.android.support:support-core-utils:c81e1e98ca3cb2edae002c69cf35b22aec364b8cb2f1042c97e206eb5790ac41',
'com.android.support:support-vector-drawable:f658986d968172bccfed28578471c96050780fe5e133861e4d331069cc373f4d',
'com.android.support:transition:45d09fc51284c17bbab300f5122512ac7d7348a6d23bda2051648bbe76cc9aa5',
'com.android.support:loader:920b85efd72dc33e915b0f88a883fe73b88483c6df8751a741e17611f2460341',
'com.android.support:viewpager:013c4c53058758ec104dbae970be58159f75dfe342ba8b937d15ff5282e35ffc',
'com.android.support:coordinatorlayout:9dfacd80423dc979048fbaed83c0ee543c46259feb2417377e79a656888d3892',
'com.android.support:drawerlayout:8f6809afae4793550c37461c9810e954ae6a23dbb4d23e5333bf18148df1150a',
@@ -223,34 +244,31 @@ dependencyVerification {
'com.android.support:customview:98db03845f994e08248bf701c1ff0ccaa12e70f94251ec9272900f0f694e072b',
'com.android.support:swiperefreshlayout:a3b41f7f6730866b49865e86e49f988d4858699765f534300fb2ff5f9325e712',
'com.android.support:asynclayoutinflater:115bde87721f7334579b0c735f60dd7c98af1bb7f34010c5b0553b95dc351aa2',
'android.arch.persistence.room:runtime:d05c78d494dc700fd6dbc0e873451aebb2510ffbb070c82179055cb10bdd8822',
'com.android.support:support-core-utils:c81e1e98ca3cb2edae002c69cf35b22aec364b8cb2f1042c97e206eb5790ac41',
'com.android.support:loader:920b85efd72dc33e915b0f88a883fe73b88483c6df8751a741e17611f2460341',
'com.android.support:support-vector-drawable:f658986d968172bccfed28578471c96050780fe5e133861e4d331069cc373f4d',
'com.android.support:support-media-compat:266eff9605f515013eee1ebdbd8818a9270696dc807f34bbcc5fc11fb61a22c7',
'com.android.support:support-compat:e17e3b01dbea3f9ea1c86943292f903ca93d2231c6242e456e0b6a9c5817118a',
'com.android.support:versionedparcelable:60eb1cb08f71b65c3f6123135e03ebeb5930b5e126e1e5b2ac91b386908c9d02',
'com.android.support:collections:93c258c8a09f531a267653829742c0f8f6da0e348b11cb8655b0855628f2d4f0',
'com.android.support:cursoradapter:87feffe742b8d62ca8a9833abe564838bf6a672e31c7ad1306ec4006adf90d21',
'android.arch.lifecycle:runtime:c4e4be66c1b2f0abec593571454e1de14013f7e0f96bf2a9f212931a48cae550',
'android.arch.lifecycle:livedata:50ab0490c1ff1a7cfb4e554032998b080888946d0dd424f39900efc4a1bcd750',
'android.arch.lifecycle:livedata-core:d6fdd8b985d6178d7ea2f16986a24e83f1bee936b74d43167c69e08d3cc12c50',
'android.arch.lifecycle:runtime:c4e4be66c1b2f0abec593571454e1de14013f7e0f96bf2a9f212931a48cae550',
'android.arch.lifecycle:common:8d378e88ebd5189e09eef623414812c868fd90aa519d6160e2311fb8b81cff56',
'com.github.bumptech.glide:gifdecoder:59ccf3bb0cec11dab4b857382cbe0b171111b6fc62bf141adce4e1180889af15',
'com.android.support:interpolator:7bc7ee86a0db39a4b51956f3e89842d2bd962118d57d779eb6ed6b34ba0677ea',
'com.android.support:cursoradapter:87feffe742b8d62ca8a9833abe564838bf6a672e31c7ad1306ec4006adf90d21',
'android.arch.persistence.room:common:fa506873be8a7de9685389b6539ad5849b39731328454b6db151bcab8a9577c3',
'android.arch.persistence:db-framework:f9d1629574008e815a494390857f2125cb3e2cfc291aef8b63625bb3fdc5f360',
'android.arch.persistence:db:4ed3c473a2da0944203a66a9e84f4c2fb3bca9854c5d4a263a56b1aec4a52e74',
'android.arch.core:runtime:c3215aa5873311b3f88a6f4e4a3c25ad89971bc127de8c3e1291c57f93a05c39',
'android.arch.core:common:3a616a32f433e9e23f556b38575c31b013613d3ae85206263b7625fe1f4c151a',
'android.arch.lifecycle:common:8d378e88ebd5189e09eef623414812c868fd90aa519d6160e2311fb8b81cff56',
'android.arch.lifecycle:viewmodel:7de29cfaba77d6b5d5be234c57f6812d0150d087e63941af22ba1d1f8e2bc96a',
'com.github.bumptech.glide:gifdecoder:59ccf3bb0cec11dab4b857382cbe0b171111b6fc62bf141adce4e1180889af15',
'com.android.support:documentfile:47cdcd3e9302b7b064923f05487a5c03babbd9bbda4726b71e97791fab5d4779',
'com.android.support:localbroadcastmanager:d287c823af5fdde72c099fcfc5f630efe9687af7a914343ae6fd92de32c8a806',
'com.android.support:print:4be8a812d73e4a80e35b91ceae127def3f0bb9726bf3bc439aa0cc81503f5728',
'com.android.support:interpolator:7bc7ee86a0db39a4b51956f3e89842d2bd962118d57d779eb6ed6b34ba0677ea',
'android.arch.persistence.room:common:fa506873be8a7de9685389b6539ad5849b39731328454b6db151bcab8a9577c3',
'android.arch.persistence:db-framework:f9d1629574008e815a494390857f2125cb3e2cfc291aef8b63625bb3fdc5f360',
'android.arch.persistence:db:4ed3c473a2da0944203a66a9e84f4c2fb3bca9854c5d4a263a56b1aec4a52e74',
'com.android.support:support-annotations:5d5b9414f02d3fa0ee7526b8d5ddae0da67c8ecc8c4d63ffa6cf91488a93b927',
'com.android.support.constraint:constraint-layout-solver:2cafbe356f71c208013d021f32943904798cd6459e5107f9fe27000eb5bc2aef',
'com.google.guava:listenablefuture:e4ad7607e5c0477c6f890ef26a49cb8d1bb4dffb650bab4502afee64644e3069',
'org.signal:signal-metadata-android:d9d798aab7ee7200373ecff8718baf8aaeb632c123604e8a41b7b4c0c97eeee1',
'org.whispersystems:signal-service-java:746b0334a2c11e978b50f6474bd67ba1aa7bc76fa96b0f3658411436238d1c79',
'org.whispersystems:signal-service-java:9573395fe0b514cff10b8166f44de00a98682e0822a2b8204e9b9e696d53cb90',
'com.github.bumptech.glide:disklrucache:c1b1b6f5bbd01e2fcdc9d7f60913c8d338bdb65ed4a93bfa02b56f19daaade4b',
'com.github.bumptech.glide:annotations:bede99ef9f71517a4274bac18fd3e483e9f2b6108d7d6fe8f4949be4aa4d9512',
'com.nineoldandroids:library:68025a14e3e7673d6ad2f95e4b46d78d7d068343aa99256b686fe59de1b3163a',
@@ -280,7 +298,7 @@ dependencyVerification {
android {
flavorDimensions "none"
compileSdkVersion 28
buildToolsVersion '27.0.3'
buildToolsVersion '28.0.3'
useLibrary 'org.apache.http.legacy'
dexOptions {
@@ -288,8 +306,8 @@ android {
}
defaultConfig {
versionCode 447
versionName "4.32.7"
versionCode 453
versionName "4.33.4"
minSdkVersion 14
targetSdkVersion 26
@@ -303,8 +321,8 @@ android {
buildConfigField "String", "SIGNAL_CDN_URL", "\"https://cdn.signal.org\""
buildConfigField "String", "SIGNAL_CONTACT_DISCOVERY_URL", "\"https://api.directory.signal.org\""
buildConfigField "String", "SIGNAL_SERVICE_STATUS_URL", "\"uptime.signal.org\""
buildConfigField "String", "GIPHY_PROXY_HOST", "\"giphy-proxy-production.whispersystems.org\""
buildConfigField "int", "GIPHY_PROXY_PORT", "80"
buildConfigField "String", "CONTENT_PROXY_HOST", "\"contentproxy.signal.org\""
buildConfigField "int", "CONTENT_PROXY_PORT", "443"
buildConfigField "String", "USER_AGENT", "\"OWA\""
buildConfigField "boolean", "DEV_BUILD", "false"
buildConfigField "String", "MRENCLAVE", "\"cd6cfc342937b23b1bdd3bbf9721aa5615ac9ff50a75c5527d441cd3276826c9\""
@@ -449,14 +467,18 @@ def signProductionRelease = { variant ->
return outputFile
}
task signProductionPlayRelease << {
signProductionRelease(android.applicationVariants.find({ it.name.equals("playRelease") }))
task signProductionPlayRelease {
doLast {
signProductionRelease(android.applicationVariants.find({ it.name.equals("playRelease") }))
}
}
task signProductionWebsiteRelease << {
def variant = android.applicationVariants.find({ it.name.equals("websiteRelease") })
File signedRelease = signProductionRelease(variant)
assembleWebsiteDescriptor(variant, signedRelease);
task signProductionWebsiteRelease {
doLast {
def variant = android.applicationVariants.find({ it.name.equals("websiteRelease") })
File signedRelease = signProductionRelease(variant)
assembleWebsiteDescriptor(variant, signedRelease);
}
}
tasks.whenTaskAdded { task ->
@@ -484,4 +506,4 @@ def getLastCommitTimestamp() {
return os.toString() + "000"
}
}
apply plugin: 'com.google.gms.google-services'

42
google-services.json Normal file
View File

@@ -0,0 +1,42 @@
{
"project_info": {
"project_number": "312334754206",
"firebase_url": "https://api-project-312334754206.firebaseio.com",
"project_id": "api-project-312334754206",
"storage_bucket": "api-project-312334754206.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:312334754206:android:a9297b152879f266",
"android_client_info": {
"package_name": "org.thoughtcrime.securesms"
}
},
"oauth_client": [
{
"client_id": "312334754206-dg1p1mtekis8ivja3ica50vonmrlunh4.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyDrfzNAPBPzX6key51hqo3p5LZXF5Y-yxU"
}
],
"services": {
"analytics_service": {
"status": 1
},
"appinvite_service": {
"status": 1,
"other_platform_oauth_client": []
},
"ads_service": {
"status": 2
}
}
}
],
"configuration_version": "1"
}

View File

@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1-all.zip

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 301 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 592 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 905 KiB

View File

@@ -45,6 +45,16 @@
app:quote_colorSecondary="?attr/conversation_item_sent_text_primary_color"
tools:visibility="visible"/>
<org.thoughtcrime.securesms.components.LinkPreviewView
android:id="@+id/link_preview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="6dp"
android:layout_marginRight="6dp"
android:layout_marginTop="6dp"
android:visibility="gone"
app:linkpreview_type="compose" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"

View File

@@ -128,6 +128,12 @@
android:layout_height="wrap_content"
android:layout="@layout/conversation_item_received_thumbnail" />
<ViewStub
android:id="@+id/link_preview_stub"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout="@layout/conversation_item_received_link_preview" />
<ViewStub
android:id="@+id/audio_view_stub"
android:layout="@layout/conversation_item_received_audio"

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<org.thoughtcrime.securesms.components.LinkPreviewView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/link_preview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
app:linkpreview_type="conversation"
tools:visibility="visible" />

View File

@@ -65,6 +65,12 @@
android:layout_height="wrap_content"
android:layout="@layout/conversation_item_sent_thumbnail" />
<ViewStub
android:id="@+id/link_preview_stub"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout="@layout/conversation_item_sent_link_preview" />
<ViewStub
android:id="@+id/audio_view_stub"
android:layout="@layout/conversation_item_sent_audio"

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<org.thoughtcrime.securesms.components.LinkPreviewView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/link_preview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:visibility="gone"
app:linkpreview_type="conversation"
tools:visibility="visible" />

View File

@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:background="#FF2090ea">
<TextView
android:id="@+id/blurb"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="24dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:fontFamily="sans-serif-light"
android:gravity="center_horizontal"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:text="@string/ExperienceUpgradeActivity_introducing_link_previews"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="@android:color/white"
android:textIsSelectable="false"
android:textSize="@dimen/onboarding_title_size"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="center"
android:layout_marginStart="24dp"
android:layout_marginLeft="24dp"
android:layout_marginTop="16dp"
android:layout_marginEnd="24dp"
android:layout_marginRight="24dp"
android:layout_marginBottom="16dp"
android:src="@drawable/link_preview_splash"
app:layout_constraintBottom_toTopOf="@+id/linearLayout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHeight_max="280dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/blurb"
app:layout_constraintVertical_bias="0.0"
app:layout_constraintWidth_max="280dp" />
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginLeft="24dp"
android:layout_marginEnd="24dp"
android:layout_marginRight="24dp"
android:layout_marginBottom="16dp"
android:orientation="vertical"
app:layout_constraintBottom_toTopOf="@+id/experience_ok_button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:fontFamily="sans-serif-light"
android:gravity="center_horizontal"
android:text="@string/ExperienceUpgradeActivity_optional_link_previews_are_now_supported"
android:textColor="@color/core_white"
android:textIsSelectable="false"
android:textSize="@dimen/onboarding_subtitle_size" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="sans-serif-light"
android:gravity="center_horizontal"
android:paddingLeft="20dp"
android:paddingRight="20dp"
android:text="@string/ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews"
android:textColor="@color/core_white"
android:textIsSelectable="false"
android:textSize="16dp" />
</LinearLayout>
<android.support.v7.widget.AppCompatButton
android:id="@+id/experience_ok_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginStart="24dp"
android:layout_marginLeft="24dp"
android:layout_marginEnd="24dp"
android:layout_marginRight="24dp"
android:layout_marginBottom="24dp"
android:text="@string/ok"
android:textColor="@color/core_blue"
app:backgroundTint="@color/core_white"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</android.support.constraint.ConstraintLayout>

108
res/layout/link_preview.xml Normal file
View File

@@ -0,0 +1,108 @@
<?xml version="1.0" encoding="utf-8"?>
<merge
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto">
<android.support.constraint.ConstraintLayout
android:id="@+id/linkpreview_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="6dp"
android:background="?linkpreview_background_color">
<org.thoughtcrime.securesms.components.OutlinedThumbnailView
android:id="@+id/linkpreview_thumbnail"
android:layout_width="72dp"
android:layout_height="0dp"
android:scaleType="centerCrop"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@+id/linkpreview_divider"
app:layout_constraintHeight_min="72dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/linkpreview_title"
tools:src="@drawable/ic_contact_picture"
tools:visibility="visible" />
<org.thoughtcrime.securesms.components.emoji.EmojiTextView
android:id="@+id/linkpreview_title"
style="@style/Signal.Text.Body"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:ellipsize="end"
android:fontFamily="sans-serif-medium"
android:maxLines="2"
android:textColor="?linkpreview_primary_text_color"
app:layout_constraintEnd_toStartOf="@+id/linkpreview_close"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@+id/linkpreview_thumbnail"
app:layout_constraintTop_toTopOf="parent"
tools:text="Wall Crawler Strikes Again!" />
<org.thoughtcrime.securesms.components.emoji.EmojiTextView
android:id="@+id/linkpreview_site"
style="@style/Signal.Text.Caption"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="2dp"
android:textAllCaps="true"
android:textColor="?linkpreview_secondary_text_color"
app:layout_constraintStart_toEndOf="@+id/linkpreview_thumbnail"
app:layout_constraintTop_toBottomOf="@+id/linkpreview_title"
tools:text="dailybugle.com" />
<View
android:id="@+id/linkpreview_divider"
android:layout_width="0dp"
android:layout_height="1dp"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="6dp"
android:background="?linkpreview_divider_color"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="@+id/linkpreview_thumbnail"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/linkpreview_thumbnail"
app:layout_constraintTop_toBottomOf="@+id/linkpreview_site"
app:layout_constraintVertical_bias="0.0"
tools:visibility="visible" />
<ImageView
android:id="@+id/linkpreview_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="6dp"
android:layout_marginEnd="6dp"
android:layout_marginTop="4dp"
android:src="@drawable/ic_close_white_18dp"
android:tint="@color/gray70"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:visibility="visible" />
<com.pnikosis.materialishprogress.ProgressWheel
android:id="@+id/linkpreview_progress_wheel"
android:layout_width="match_parent"
android:layout_height="72dp"
android:layout_gravity="center_horizontal"
android:layout_marginBottom="8dp"
android:indeterminate="true"
android:padding="8dp"
android:visibility="gone"
app:layout_constraintBottom_toTopOf="@+id/linkpreview_divider"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:matProg_barColor="@color/core_blue"
app:matProg_progressIndeterminate="true" />
</android.support.constraint.ConstraintLayout>
</merge>

View File

@@ -179,9 +179,9 @@
android:id="@+id/quote_dismiss"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="4dp"
android:layout_marginRight="4dp"
android:layout_marginTop="4dp"
android:layout_marginEnd="6dp"
android:layout_marginRight="6dp"
android:layout_marginTop="6dp"
android:layout_gravity="top|end"
android:background="@drawable/dismiss_background"
android:src="@drawable/ic_close_white_18dp"

View File

@@ -1,8 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:title="@string/text_secure_normal__menu_new_message"
android:id="@+id/menu_new_message"
android:icon="?attr/menu_new_conversation_icon"
app:showAsAction="always" />
</menu>

Binary file not shown.

View File

@@ -284,6 +284,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Habilita els indicadors de tecleig</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Activa els indicadors de tecleig</string>
<string name="ExperienceUpgradeActivity_no_thanks">No, gràcies</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Introduïnt previsualitzacions d\'enllaços.</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Previsualitzacions d\'enllaços opcionals estan disponibles per algunes de les pàgines més populars d\'internet.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Pots habilitar o deshabilitar aquesta opció quan vulguis a la configuració del teu Signal (Privadesa &gt; Envia previsualitzacions d\'enllaços).</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">S\'està recuperant un missatge...</string>
<!--GcmRefreshJob-->
@@ -378,6 +381,10 @@
<string name="MediaPickerActivity_send_to">Envia-ho a %s</string>
<!--MediaPickerItemFragment-->
<string name="MediaPickerItemFragment_tap_to_select">Feu un toc per seleccionar-ho</string>
<plurals name="MediaPickerItemFragment_cant_share_more_than_n_items">
<item quantity="one">No podeu compartir més d\'%d element.</item>
<item quantity="other">No podeu compartir més de %d elements.</item>
</plurals>
<!--MediaSendActivity-->
<string name="MediaSendActivity_add_a_caption">Afegiu-hi un títol...</string>
<!--MediaRepository-->
@@ -956,6 +963,8 @@ S\'ha rebut un missatge d\'intercanvi de claus per a una versió del protocol no
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Fes servir el Signal per a tots els missatges multimèdia d\'entrada</string>
<string name="preferences__pref_enter_sends_title">Envia amb la tecla Retorn</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">En prémer Retorn s\'envia el missatge de text</string>
<string name="preferences__send_link_previews">Envia previsualitzacions d\'enllaços</string>
<string name="preferences__previews_are_supported_for">Les previsualitzacions estan disponibles per enllaços d\'Imgur, Instagram, Reddit i Youtube</string>
<string name="preferences__choose_identity">Trieu la identitat a usar</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Trieu els contactes de la llista de contactes.</string>
<string name="preferences__change_passphrase">Canvia la contrasenya</string>

View File

@@ -85,7 +85,7 @@
<!--CommunicationActions-->
<string name="CommunicationActions_no_browser_found">Nebyl nalezen žádný webový prohlížeč.</string>
<!--ConfirmIdentityDialog-->
<string name="ConfirmIdentityDialog_your_safety_number_with_s_has_changed">Vaše bezpečnostní kódy pro %1$s se změnily. To může znamenat, že se někdo pokouší zachytit vaši konverzaci, nebo jen že si %2$s přeinstaloval Signal a má teď nový identifikační klíč.</string>
<string name="ConfirmIdentityDialog_your_safety_number_with_s_has_changed">Váš bezpečnostní kód pro %1$s se změnil. To může znamenat, že se někdo pokouší zachytit vaši konverzaci, nebo jen že si %2$s přeinstaloval Signal.</string>
<string name="ConfirmIdentityDialog_you_may_wish_to_verify_your_safety_number_with_this_contact">Možná budete chtít zkontrolovat vaše bezpečnostní kódy pro tento kontakt.</string>
<string name="ConfirmIdentityDialog_accept">Přijmout</string>
<!--ContactsCursorLoader-->
@@ -160,6 +160,7 @@
<string name="ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video">Signál potřebuje oprávnění pro přístup k fotoaparátu aby mohl pořizovat fotografie nebo video, ale toto oprávnění je nyní zakázáno. Prosím pokračujte do menu nastavení aplikací, vyberte \"Oprávnění\" a povolte \"Fotoaparát\".</string>
<string name="ConversationActivity_signal_needs_camera_permissions_to_take_photos_or_video">Signál potřebuje přístup k fotoaparátu aby mohl pořizovat fotografie nebo videa.</string>
<string name="ConversationActivity_quoted_contact_message">%1$s %2$s</string>
<string name="ConversationActivity_signal_cannot_sent_sms_mms_messages_because_it_is_not_your_default_sms_app">Signal nemůže posílat SMS/MMS zprávy, protože není výchozí SMS aplikací. Chcete to změnit v nastavení Android?</string>
<string name="ConversationActivity_yes">Ano</string>
<string name="ConversationActivity_no">Ne</string>
<!--ConversationAdapter-->
@@ -311,6 +312,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Povolit indikátory psaní.</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Zapnout indikátory psaní</string>
<string name="ExperienceUpgradeActivity_no_thanks">Ne díky</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Představujeme náhledy odkazu.</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Volitelné náhledy odkazu jsou nyní podporovány na některých populárních internetových stránkách.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Tuto funkcionalitu můžete zakázat či povolit v Nastavení (Soukromí &gt; Odesílat náhledy odkazu)</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Načítám zprávu...</string>
<!--GcmRefreshJob-->
@@ -410,8 +414,17 @@
<string name="NotificationMmsMessageRecord_downloading_mms_message">Stahuji MMS zprávu</string>
<string name="NotificationMmsMessageRecord_error_downloading_mms_message">Chyba při stahování MMS zprávy, ťukněte pro opakování</string>
<!--MediaPickerActivity-->
<string name="MediaPickerActivity_send_to">Poslat %s</string>
<!--MediaPickerItemFragment-->
<string name="MediaPickerItemFragment_tap_to_select">Klepněte pro výběr</string>
<plurals name="MediaPickerItemFragment_cant_share_more_than_n_items">
<item quantity="one">Nemůžete sdílet více než %d položku.</item>
<item quantity="few">Nemůžete sdílet více než %d položek.</item>
<item quantity="many">Nemůžete sdílet více než %d položek.</item>
<item quantity="other">Nemůžete sdílet více než %d položek.</item>
</plurals>
<!--MediaSendActivity-->
<string name="MediaSendActivity_add_a_caption">Přidat titulek...</string>
<!--MediaRepository-->
<string name="MediaRepository_all_media">Všechna media</string>
<!--MessageRecord-->
@@ -526,7 +539,7 @@ telefonní číslo</string>
<string name="RegistrationActivity_no_browser">Nelze otevřít tentp odkaz. Nebyl nalezen žádný prohlížeč.</string>
<string name="RegistrationActivity_more_information">Více informací</string>
<string name="RegistrationActivity_less_information">Méně informací</string>
<string name="RegistrationActivity_signal_needs_access_to_your_contacts_and_media_in_order_to_connect_with_friends">Signál potřebuje přístup ke kontaktům, abyste s emohli spojit s vašimi přáteli, vyměnovat si zprávy a bezpečně telefonovat.</string>
<string name="RegistrationActivity_signal_needs_access_to_your_contacts_and_media_in_order_to_connect_with_friends">Signál potřebuje přístup ke kontaktům, abyste se mohli spojit s vašimi přáteli, vyměňovat si zprávy a bezpečně telefonovat.</string>
<string name="RegistrationActivity_unable_to_connect_to_service">Nelze se připojit k službě. Prosím zkontrolujte připojení k internetu a poté to zkuste znovu.</string>
<string name="RegistrationActivity_to_easily_verify_your_phone_number_signal_can_automatically_detect_your_verification_code">Po snadné ověření vašeho telefonního čísla může Signál automaticky zkontrolovat ověřovací kód pokud mu povolíte přístup k čtení SMS.</string>
<plurals name="RegistrationActivity_debug_log_hint">
@@ -602,7 +615,7 @@ Obdržen požadavek na výměnu klíčů pro neplatnou verzi protokolu.</string>
<string name="VerifyIdentityActivity_your_contact_is_running_a_newer_version_of_Signal">Váš kontakt používá novější verzi Signal s nekompatibilním formátem QR kódu. Prosím, aktualizujte svou verzi, abyste mohli QR kódy porovnat.</string>
<string name="VerifyIdentityActivity_the_scanned_qr_code_is_not_a_correctly_formatted_safety_number">Naskenovaný QR kód nemá správný formát bezpečnostního kódu. Prosím naskenujte QR kód znovu.</string>
<string name="VerifyIdentityActivity_share_safety_number_via">Sdílet bezpečnostní kód prostřednictvím ...</string>
<string name="VerifyIdentityActivity_our_signal_safety_number">Vaš Signal bezpečnostní kód:</string>
<string name="VerifyIdentityActivity_our_signal_safety_number">Náš bezpečnostní kód Signal:</string>
<string name="VerifyIdentityActivity_no_app_to_share_to">Zdá se, že nemáte žádnou aplikaci pro sdílení.</string>
<string name="VerifyIdentityActivity_no_safety_number_to_compare_was_found_in_the_clipboard">Ve schránce nebyl nalezen žádný bezpečnostní kód pro porovnání.</string>
<string name="VerifyIdentityActivity_signal_needs_the_camera_permission_in_order_to_scan_a_qr_code_but_it_has_been_permanently_denied">Signál potřebuje oprávnění pro přístup k fotoaparátu aby skenovat QR kódy, ale toto oprávnění je nyní zakázáno. Prosím pokračujte do menu nastavení aplikací, vyberte \"Oprávnění\" a povolte \"Fotoaparát\".</string>
@@ -930,7 +943,7 @@ Obdržen požadavek na výměnu klíčů pro neplatnou verzi protokolu.</string>
<string name="recipients_panel__to"><small>Zadejte jméno nebo číslo</small></string>
<string name="recipients_panel__add_members">Přidat členy</string>
<!--unknown_sender_view-->
<string name="unknown_sender_view__the_sender_is_not_in_your_contact_list">Odesílatel není v seznamu vašich konktů</string>
<string name="unknown_sender_view__the_sender_is_not_in_your_contact_list">Odesílatel není v seznamu vašich kontaktů</string>
<string name="unknown_sender_view__block">BLOKOVAT</string>
<string name="unknown_sender_view__add_to_contacts">PŘIDAT DO KONTAKTŮ</string>
<string name="unknown_sender_view__don_t_add_but_make_my_profile_visible">NEPŘIDÁVAT, ALE PONECHAT MŮJ PROFIL VIDITELNÝ</string>
@@ -1006,6 +1019,8 @@ Obdržen požadavek na výměnu klíčů pro neplatnou verzi protokolu.</string>
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Použít Signal pro všechny příchozí multimediální zprávy</string>
<string name="preferences__pref_enter_sends_title">Klávesa Enter odesílá</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Stisk tlačítka \'enter\' na klávesnici odešle zprávu</string>
<string name="preferences__send_link_previews">Odesílat náhledy odkazu</string>
<string name="preferences__previews_are_supported_for">Náhledy jsou podporovaný pro odkazy na Imgur, Instagram, Reddit a YouTube</string>
<string name="preferences__choose_identity">Zvolit identitu</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Zvolte osobu ze svého adresáře</string>
<string name="preferences__change_passphrase">Změnit heslo</string>

View File

@@ -61,10 +61,10 @@
<string name="DraftDatabase_Draft_quote_snippet">(ateb)</string>
<!--AttchmentManager-->
<string name="AttachmentManager_cant_open_media_selection">Methu canfod rhaglen i ddewis cyfryngau.</string>
<string name="AttachmentManager_signal_requires_the_external_storage_permission_in_order_to_attach_photos_videos_or_audio">Mae Signal angen caniatâd Storio er mwyn atodi lluniau, fideos neu sain, ond mae wedi\'i wrthod yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Storio".</string>
<string name="AttachmentManager_signal_requires_contacts_permission_in_order_to_attach_contact_information">Mae Signal angen caniatâd Cysylltiadau er mwyn atodi gwybodaeth gyswllt, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Cysylltiadau".</string>
<string name="AttachmentManager_signal_requires_location_information_in_order_to_attach_a_location">Mae Signal angen caniatâd Lleoliad er mwyn atodi gwybodaeth lleoliad, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Lleoliadau".</string>
<string name="AttachmentManager_signal_requires_the_camera_permission_in_order_to_take_photos_but_it_has_been_permanently_denied">Mae Signal angen caniatâd Camera er mwyn atodi tynnu lluniau, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Camera".</string>
<string name="AttachmentManager_signal_requires_the_external_storage_permission_in_order_to_attach_photos_videos_or_audio">Mae ar Signal angen caniatâd Storio er mwyn atodi lluniau, fideos neu sain, ond mae wedi\'i wrthod yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Storio".</string>
<string name="AttachmentManager_signal_requires_contacts_permission_in_order_to_attach_contact_information">Mae ar Signal angen caniatâd Cysylltiadau er mwyn atodi gwybodaeth gyswllt, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Cysylltiadau".</string>
<string name="AttachmentManager_signal_requires_location_information_in_order_to_attach_a_location">Mae ar Signal angen caniatâd Lleoliad er mwyn atodi gwybodaeth lleoliad, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Lleoliadau".</string>
<string name="AttachmentManager_signal_requires_the_camera_permission_in_order_to_take_photos_but_it_has_been_permanently_denied">Mae ar Signal angen caniatâd Camera er mwyn atodi tynnu lluniau, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Camera".</string>
<!--AudioSlidePlayer-->
<string name="AudioSlidePlayer_error_playing_audio">Gwall chwarae sain!</string>
<!--BlockedContactsActivity-->
@@ -155,13 +155,14 @@ Send neges heb ei ddiogelu?</string>
<string name="ConversationActivity_unable_to_record_audio">Methu recordio sain!</string>
<string name="ConversationActivity_there_is_no_app_available_to_handle_this_link_on_your_device">Nid oes ap ar gael i drin y ddolen hon ar eich dyfais.</string>
<string name="ConversationActivity_to_send_audio_messages_allow_signal_access_to_your_microphone">I anfon negeseuon sain, caniatewch i Signal gael mynediad i\'ch meicroffon.</string>
<string name="ConversationActivity_signal_requires_the_microphone_permission_in_order_to_send_audio_messages">Mae Signal angen caniatâd Meicroffon i anfon negeseuon sain, ond mae wed\'i atal yn barhaol. Ewch i osodiadau\'r ap, dewis "Caniatâd", a galluogi "Microffon".</string>
<string name="ConversationActivity_signal_requires_the_microphone_permission_in_order_to_send_audio_messages">Mae ar Signal angen caniatâd Meicroffon i anfon negeseuon sain, ond mae wed\'i atal yn barhaol. Ewch i osodiadau\'r ap, dewis "Caniatâd", a galluogi "Microffon".</string>
<string name="ConversationActivity_to_call_s_signal_needs_access_to_your_microphone_and_camera">I alw %s, mae angen i Signal gael mynediad i\'ch meicroffon a\'ch camera.</string>
<string name="ConversationActivity_signal_needs_the_microphone_and_camera_permissions_in_order_to_call_s">Mae Signal angen caniatâd Meicroffon a Chamera i alw %s, ond mae wedi\'i atal yn barhaol. Ewch i osodiadau\'r ap, dewis "Caniatâd", a galluogi "Microffon" a "Chamera".</string>
<string name="ConversationActivity_signal_needs_the_microphone_and_camera_permissions_in_order_to_call_s">Mae ar Signal angen caniatâd Meicroffon a Chamera i alw %s, ond mae wedi\'i atal yn barhaol. Ewch i osodiadau\'r ap, dewis "Caniatâd", a galluogi "Microffon" a "Chamera".</string>
<string name="ConversationActivity_to_capture_photos_and_video_allow_signal_access_to_the_camera">I gipio lluniau a fideo, caniatewch i Signal gael mynediad i\'r camera.</string>
<string name="ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video">Mae Signal angen caniatâd Camera er mwyn atodi tynnu lluniau neu fideos, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Camera".</string>
<string name="ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video">Mae ar Signal angen caniatâd Camera er mwyn atodi tynnu lluniau neu fideos, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Camera".</string>
<string name="ConversationActivity_signal_needs_camera_permissions_to_take_photos_or_video">Angen Signal angen caniatâd camera i dynnu lluniau neu fideo</string>
<string name="ConversationActivity_quoted_contact_message">%1$s %2$s</string>
<string name="ConversationActivity_signal_cannot_sent_sms_mms_messages_because_it_is_not_your_default_sms_app">Nid yw Signal yn gallu anfon negeseuon SMS/MMS gan nad yw eich ap ragosodedig SMS.Hoffech chi newid hyn yn eich gosodiadau Android?</string>
<string name="ConversationActivity_yes">Iawn</string>
<string name="ConversationActivity_no">Na</string>
<!--ConversationAdapter-->
@@ -313,6 +314,9 @@ Send neges heb ei ddiogelu?</string>
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Galluogi dangosyddion teipio</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Cychwyn y dangosydd teipio</string>
<string name="ExperienceUpgradeActivity_no_thanks">Dim diolch</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Yn cyflwyno rhagolygon dolenni.</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Mae rhagolygon dolenni dewisol nawr yn cael eu cynnal ar gyfer rhai o\'r gwefannau mwyaf poblogaidd ar y rhyngrwyd.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Gallwch alluogi neu analluogi\'r nodwedd yng ngosodiadau Signal. (Preifatrwydd &gt; Anfon dolen rhagolwg).</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Estyn neges...</string>
<!--GcmRefreshJob-->
@@ -369,7 +373,7 @@ Send neges heb ei ddiogelu?</string>
</plurals>
<string name="InviteActivity_lets_switch_to_signal">Gadewch i ni newid i Signal %1$s</string>
<string name="InviteActivity_no_app_to_share_to">Mae\'n edrych fel nad oes gennych unrhyw apiau i\'w rhannu.</string>
<string name="InviteActivity_friends_dont_let_friends_text_unencrypted">Dyw ffrindiau ddim gadael i ffrindiau sgwrsio heb amgryptiad.</string>
<string name="InviteActivity_friends_dont_let_friends_text_unencrypted">Dyw ffrindiau ddim yn gadael i ffrindiau sgwrsio heb amgryptiad.</string>
<!--Job-->
<string name="Job_working_in_the_background">Yn gweithio yn y cefndir...</string>
<!--MessageDetailsRecipient-->
@@ -412,8 +416,17 @@ Send neges heb ei ddiogelu?</string>
<string name="NotificationMmsMessageRecord_downloading_mms_message">Lawrlwytho neges MMS</string>
<string name="NotificationMmsMessageRecord_error_downloading_mms_message">Gwall wrth lawrlwytho neges MMS, tapio i geisio eto</string>
<!--MediaPickerActivity-->
<string name="MediaPickerActivity_send_to">Anfon i %s</string>
<!--MediaPickerItemFragment-->
<string name="MediaPickerItemFragment_tap_to_select">Tapio i ddewis</string>
<plurals name="MediaPickerItemFragment_cant_share_more_than_n_items">
<item quantity="one">Nid oes modd rhannu mwy nag %deitem.</item>
<item quantity="two">Nid oes modd rhannu mwy na %deitem.</item>
<item quantity="many">Nid oes modd rhannu mwy na %deitem.</item>
<item quantity="other">Nid oes modd rhannu mwy na %d eitem.</item>
</plurals>
<!--MediaSendActivity-->
<string name="MediaSendActivity_add_a_caption">Ychwanegu neges...</string>
<!--MediaRepository-->
<string name="MediaRepository_all_media">Pob cyfrwng</string>
<!--MessageRecord-->
@@ -459,7 +472,7 @@ Send neges heb ei ddiogelu?</string>
<string name="DeviceActivity_sorry_this_is_not_a_valid_device_link_qr_code">Mae\'n ddrwg gennym, nid yw hwn yn god dilys cyswllt dyfais QR.</string>
<string name="DeviceProvisioningActivity_link_a_signal_device">Cysylltu â dyfais Signal?</string>
<string name="DeviceProvisioningActivity_it_looks_like_youre_trying_to_link_a_signal_device_using_a_3rd_party_scanner">Mae\'n edrych fel eich bod yn ceisio cysylltu dyfais Signal gan ddefnyddio sganiwr trydydd parti. Er eich diogelwch, sganiwch y cod eto o fewn Signal.</string>
<string name="DeviceActivity_signal_needs_the_camera_permission_in_order_to_scan_a_qr_code">Mae Signal angen caniatâd Camera er mwyn sganio cod QR, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Camera".</string>
<string name="DeviceActivity_signal_needs_the_camera_permission_in_order_to_scan_a_qr_code">Mae ar Signal angen caniatâd Camera er mwyn sganio cod QR, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Camera".</string>
<string name="DeviceActivity_unable_to_scan_a_qr_code_without_the_camera_permission">Methu sganio cod QR heb ganiatâd y Camera</string>
<!--ExpirationDialog-->
<string name="ExpirationDialog_disappearing_messages">Negeseuon diflanedig</string>
@@ -485,7 +498,7 @@ Send neges heb ei ddiogelu?</string>
<string name="RecipientPreferenceActivity_block_this_contact_question">Rhwystro\'r cysllwt hwn?</string>
<string name="RecipientPreferenceActivity_you_will_no_longer_receive_messages_and_calls_from_this_contact">Ni fyddwch bellach yn derbyn negeseuon a galwadau o\'r cyswllt hwn.</string>
<string name="RecipientPreferenceActivity_block_and_leave_group">Rhwystro a gadael y grŵp hwn?</string>
<string name="RecipientPreferenceActivity_block_group">Rhwystro\\'r grŵp hwn?</string>
<string name="RecipientPreferenceActivity_block_group">Rhwystro\'r grŵp hwn?</string>
<string name="RecipientPreferenceActivity_block_and_leave_group_description">Fyddwch chi ddim yn derbyn negeseuon na diweddariadau gan y grŵp hwn.</string>
<string name="RecipientPreferenceActivity_block">Rhwystro</string>
<string name="RecipientPreferenceActivity_unblock_this_contact_question">Dadrwystro\'r cyswllt hwn?</string>
@@ -529,7 +542,7 @@ Send neges heb ei ddiogelu?</string>
<string name="RegistrationActivity_no_browser">Methu agor y ddolen. Heb ddarganfod porwr gwe.</string>
<string name="RegistrationActivity_more_information">Rhagor o wybodaeth</string>
<string name="RegistrationActivity_less_information">Llai o wybodaeth</string>
<string name="RegistrationActivity_signal_needs_access_to_your_contacts_and_media_in_order_to_connect_with_friends">Mae Signal angen mynediad i\'ch cysylltiadau a\'ch cyfryngau er mwyn cysylltu â ffrindiau, cyfnewid negeseuon, a gwneud galwadau diogel</string>
<string name="RegistrationActivity_signal_needs_access_to_your_contacts_and_media_in_order_to_connect_with_friends">Mae ar Signal angen mynediad i\'ch cysylltiadau a\'ch cyfryngau er mwyn cysylltu â ffrindiau, cyfnewid negeseuon, a gwneud galwadau diogel</string>
<string name="RegistrationActivity_unable_to_connect_to_service">Methu cysylltu â\'r gwasanaeth. Gwiriwch y cysylltiad rhwydwaith a cheisio eto.</string>
<string name="RegistrationActivity_to_easily_verify_your_phone_number_signal_can_automatically_detect_your_verification_code">I wirio eich rhif ffôn yn hawdd, gall Signal ganfod eich cod dilysu yn awtomatig os ydych yn caniatáu i Signal weld negeseuon SMS.</string>
<plurals name="RegistrationActivity_debug_log_hint">
@@ -609,7 +622,7 @@ Send neges heb ei ddiogelu?</string>
<string name="VerifyIdentityActivity_our_signal_safety_number">Ein rhif diogelwch Signal:</string>
<string name="VerifyIdentityActivity_no_app_to_share_to">Mae\'n edrych fel nad oes gennych unrhyw apiau i\'w rhannu.</string>
<string name="VerifyIdentityActivity_no_safety_number_to_compare_was_found_in_the_clipboard">Dim rhif diogelwch i\'w gymharu yn y clipfwrdd</string>
<string name="VerifyIdentityActivity_signal_needs_the_camera_permission_in_order_to_scan_a_qr_code_but_it_has_been_permanently_denied">Mae Signal angen caniatâd Camera er mwyn sganio cod QR, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Camera".</string>
<string name="VerifyIdentityActivity_signal_needs_the_camera_permission_in_order_to_scan_a_qr_code_but_it_has_been_permanently_denied">Mae ar Signal angen caniatâd Camera er mwyn sganio cod QR, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Camera".</string>
<string name="VerifyIdentityActivity_unable_to_scan_qr_code_without_camera_permission">Methu sganio cod QR heb ganiatâd y Camera</string>
<!--MessageDisplayHelper-->
<string name="MessageDisplayHelper_bad_encrypted_message">Neges amgryptio gwael</string>
@@ -635,7 +648,7 @@ Send neges heb ei ddiogelu?</string>
<string name="MediaPreviewActivity_you">Chi</string>
<string name="MediaPreviewActivity_unssuported_media_type">Math o gyfrwng heb ei gynnal</string>
<string name="MediaPreviewActivity_draft">Drafft</string>
<string name="MediaPreviewActivity_signal_needs_the_storage_permission_in_order_to_write_to_external_storage_but_it_has_been_permanently_denied">Mae Signal angen caniatâd Storio er mwyn cadw i storfa allanol, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Storfa".</string>
<string name="MediaPreviewActivity_signal_needs_the_storage_permission_in_order_to_write_to_external_storage_but_it_has_been_permanently_denied">Mae ar Signal angen caniatâd Storio er mwyn cadw i storfa allanol, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Storfa".</string>
<string name="MediaPreviewActivity_unable_to_write_to_external_storage_without_permission">Methu cadw i storfa allanol heb ganiatâd</string>
<string name="MediaPreviewActivity_media_delete_confirmation_title">Dileu neges?</string>
<string name="MediaPreviewActivity_media_delete_confirmation_message">Bydd hyn yn dileu yn barhaol y neges hon.</string>
@@ -730,12 +743,12 @@ Send neges heb ei ddiogelu?</string>
<!--single_contact_selection_activity-->
<string name="SingleContactSelectionActivity_contact_photo">Llun Cyswllt</string>
<!--ContactSelectionListFragment-->
<string name="ContactSelectionListFragment_signal_requires_the_contacts_permission_in_order_to_display_your_contacts">Mae Signal angen caniatâd Cysylltiadau er mwyn dangos eich cysylltiadau, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Cysylltiadau".</string>
<string name="ContactSelectionListFragment_signal_requires_the_contacts_permission_in_order_to_display_your_contacts">Mae ar Signal angen caniatâd Cysylltiadau er mwyn dangos eich cysylltiadau, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Cysylltiadau".</string>
<string name="ContactSelectionListFragment_error_retrieving_contacts_check_your_network_connection">Gwall wrth estyn cysylltiadau, gwiriwch eich cysylltiad rhwydwaith</string>
<!--blocked_contacts_fragment-->
<string name="blocked_contacts_fragment__no_blocked_contacts">Dim cysylltiadau wedi\'u rhwystro</string>
<!--contact_selection_list_fragment-->
<string name="contact_selection_list_fragment__signal_needs_access_to_your_contacts_in_order_to_display_them">Mae Signal angen mynediad i\'ch cysylltiadau er mwyn eu harddangos.</string>
<string name="contact_selection_list_fragment__signal_needs_access_to_your_contacts_in_order_to_display_them">Mae ar Signal angen mynediad i\'ch cysylltiadau er mwyn eu harddangos.</string>
<string name="contact_selection_list_fragment__show_contacts">Dangos Cysylltiadau</string>
<!--conversation_activity-->
<string name="conversation_activity__type_message_push">Neges Signal</string>
@@ -899,8 +912,8 @@ Send neges heb ei ddiogelu?</string>
<!--prompt_passphrase_activity-->
<string name="prompt_passphrase_activity__unlock">Datgloi</string>
<!--prompt_mms_activity-->
<string name="prompt_mms_activity__signal_requires_mms_settings_to_deliver_media_and_group_messages">Mae Signal angen gosodiadau MMS i ddarparu negeseuon cyfrwng a grŵp trwy\'ch cludwr di-wifr. Nid yw\'ch dyfais yn gwneud y wybodaeth hon ar gael, sydd weithiau\'n wir ar gyfer dyfeisiau wedi\'u cloi a ffurfweddiadau cyfyngol eraill.</string>
<string name="prompt_mms_activity__to_send_media_and_group_messages_tap_ok">I anfon negeseuon cyfryngau a grŵp, tapiwch 'Iawn' a chwblhau\'r gosodiadau gofynnol. Yn gyffredinol, gall lleoliadau MMS eich cludwr gael eu lleoli trwy chwilio am 'eich APN cludwr'. Dim ond unwaith y bydd angen i chi wneud hyn.</string>
<string name="prompt_mms_activity__signal_requires_mms_settings_to_deliver_media_and_group_messages">Mae ar Signal angen gosodiadau MMS i ddarparu negeseuon cyfrwng a grŵp trwy\'ch cludwr di-wifr. Nid yw\'ch dyfais yn gwneud y wybodaeth hon ar gael, sydd weithiau\'n wir ar gyfer dyfeisiau wedi\'u cloi a ffurfweddiadau cyfyngol eraill.</string>
<string name="prompt_mms_activity__to_send_media_and_group_messages_tap_ok">I anfon negeseuon cyfryngau a grŵp, tapiwch \'Iawn\' a chwblhau\'r gosodiadau gofynnol. Yn gyffredinol, gall lleoliadau MMS eich cludwr gael eu lleoli trwy chwilio am \'eich APN cludwr\'. Dim ond unwaith y bydd angen i chi wneud hyn.</string>
<!--profile_create_activity-->
<string name="profile_create_activity__set_later">Gosod yn hwyrach</string>
<string name="profile_create_activity__finish">GORFFEN</string>
@@ -1010,6 +1023,8 @@ Send neges heb ei ddiogelu?</string>
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Defnyddio Signal ar gyfer yr holl negeseuon amlgyfrwng sy\'n cael eu derbyn</string>
<string name="preferences__pref_enter_sends_title">Pwyso Enter i anfon</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Pwyso Enter i anfon negeseuon testun</string>
<string name="preferences__send_link_previews">Anfon rhagolwg dolen</string>
<string name="preferences__previews_are_supported_for">Mae rhagolygon dolenni Imgur, Instagram, Reddit, a YouTube yn cael eu cynnal</string>
<string name="preferences__choose_identity">Dewis hunaniaeth</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Dewiswch eich cofnod cyswllt o\'r rhestr cysylltiadau.</string>
<string name="preferences__change_passphrase">Newid cyfrinair</string>
@@ -1224,10 +1239,10 @@ Send neges heb ei ddiogelu?</string>
<string name="ConversationListFragment_loading">Llwytho...</string>
<string name="CallNotificationBuilder_connecting">Wrthi\'n cysylltu...</string>
<string name="Permissions_permission_required">Angen caniatâd</string>
<string name="ConversationActivity_signal_needs_sms_permission_in_order_to_send_an_sms">Mae Signal angen caniatâd Camera er mwyn anfon SMS, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "SMS".</string>
<string name="ConversationActivity_signal_needs_sms_permission_in_order_to_send_an_sms">Mae ar Signal angen caniatâd Camera er mwyn anfon SMS, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "SMS".</string>
<string name="Permissions_continue">Parhau</string>
<string name="Permissions_not_now">Nid nawr</string>
<string name="ConversationListActivity_signal_needs_contacts_permission_in_order_to_search_your_contacts_but_it_has_been_permanently_denied">Mae Signal angen caniatâd Cysylltiadau er mwyn chwilio eich cysylltiadau, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Cysylltiadau".</string>
<string name="ConversationListActivity_signal_needs_contacts_permission_in_order_to_search_your_contacts_but_it_has_been_permanently_denied">Mae ar Signal angen caniatâd Cysylltiadau er mwyn chwilio eich cysylltiadau, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Cysylltiadau".</string>
<string name="conversation_activity__enable_signal_messages">GALLUOGI NEGESEUON SIGNAL</string>
<string name="SQLCipherMigrationHelper_migrating_signal_database">Mudo cronfa ddata Signal</string>
<string name="PushDecryptJob_new_locked_message">Neges wedi\'i gloi newydd</string>
@@ -1260,7 +1275,7 @@ Send neges heb ei ddiogelu?</string>
<string name="BackupDialog_disable_and_delete_all_local_backups">Analluogi a dileu\'r copïau wrth gefn lleol?</string>
<string name="BackupDialog_delete_backups_statement">Dileu copïau wrth gefn</string>
<string name="BackupDialog_copied_to_clipboard">Wedi\'i gopïo i\'r clipfwrdd</string>
<string name="ChatsPreferenceFragment_signal_requires_external_storage_permission_in_order_to_create_backups">Mae angen caniatâd storio allanol ar Signal er mwyn creu copïau wrth gefn, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Storio".</string>
<string name="ChatsPreferenceFragment_signal_requires_external_storage_permission_in_order_to_create_backups">Mae ar Signal angen caniatâd storio allanol er mwyn creu copïau wrth gefn, ond fe\'i rwystrwyd yn barhaol. Ewch i ddewislen gosodiadau\'r ap, dewis "Caniatâd", a galluogi "Storio".</string>
<string name="ChatsPreferenceFragment_last_backup_s">Copi wrth gefn diwethaf %s</string>
<string name="ChatsPreferenceFragment_in_progress">Cynnydd</string>
<string name="LocalBackupJob_creating_backup">Creu copi wrth gefn ...</string>

View File

@@ -11,7 +11,7 @@
<!--AlbumThumbnailView-->
<string name="AlbumThumbnailView_plus">\+%d</string>
<!--ApplicationPreferencesActivity-->
<string name="ApplicationPreferencesActivity_currently_s">Nu: %s</string>
<string name="ApplicationPreferencesActivity_currently_s">Nuværende: %s</string>
<string name="ApplicationPreferenceActivity_you_havent_set_a_passphrase_yet">Du har ikke indtastet et kodeord</string>
<plurals name="ApplicationPreferencesActivity_messages_per_conversation">
<item quantity="one">%d besked pr. samtale</item>
@@ -26,15 +26,15 @@
<string name="ApplicationPreferencesActivity_disable_passphrase">Deaktivér kodeord?</string>
<string name="ApplicationPreferencesActivity_this_will_permanently_unlock_signal_and_message_notifications">Dette vil permanent låse op for Signal og besked notifikationer</string>
<string name="ApplicationPreferencesActivity_disable">Deaktivér</string>
<string name="ApplicationPreferencesActivity_unregistering">Afregistrerer</string>
<string name="ApplicationPreferencesActivity_unregistering_from_signal_messages_and_calls">Afmeld Signal beskeder og opkald...</string>
<string name="ApplicationPreferencesActivity_unregistering">Afmeld</string>
<string name="ApplicationPreferencesActivity_unregistering_from_signal_messages_and_calls">Afmelder Signal beskeder og opkald...</string>
<string name="ApplicationPreferencesActivity_disable_signal_messages_and_calls">Deaktivér Signal beskeder og opkald?</string>
<string name="ApplicationPreferencesActivity_disable_signal_messages_and_calls_by_unregistering">Deaktivér Signal beskeder og opkald ved at afregistrere på serveren. Du er nødt til igen at registrere dit telefonnummer, for at bruge det igen i fremtiden</string>
<string name="ApplicationPreferencesActivity_error_connecting_to_server">Kan ikke oprette forbindelse til serveren</string>
<string name="ApplicationPreferencesActivity_sms_enabled">SMS slået til</string>
<string name="ApplicationPreferencesActivity_touch_to_change_your_default_sms_app">Brug som standard SMS-program</string>
<string name="ApplicationPreferencesActivity_sms_disabled">SMS slået fra</string>
<string name="ApplicationPreferencesActivity_touch_to_make_signal_your_default_sms_app">Tap for at gøre Signal til din standard SMS-app</string>
<string name="ApplicationPreferencesActivity_disable_signal_messages_and_calls_by_unregistering">Deaktivér Signal beskeder og opkald på serveren, ved afmelding. Du er nødt til igen at registrere dit telefonnummer, for at bruge det igen i fremtiden</string>
<string name="ApplicationPreferencesActivity_error_connecting_to_server">Fejl ved oprettelse af forbindelse til serveren</string>
<string name="ApplicationPreferencesActivity_sms_enabled">SMS Aktiveret</string>
<string name="ApplicationPreferencesActivity_touch_to_change_your_default_sms_app">Brug som standard SMS applikation</string>
<string name="ApplicationPreferencesActivity_sms_disabled">SMS Deaktiveret</string>
<string name="ApplicationPreferencesActivity_touch_to_make_signal_your_default_sms_app">Tap for at gøre Signal til din standard SMS app</string>
<string name="ApplicationPreferencesActivity_on">tændt</string>
<string name="ApplicationPreferencesActivity_On">Tændt</string>
<string name="ApplicationPreferencesActivity_off">slukket</string>
@@ -51,10 +51,10 @@
<string name="DraftDatabase_Draft_image_snippet">(billede)</string>
<string name="DraftDatabase_Draft_audio_snippet">(lyd)</string>
<string name="DraftDatabase_Draft_video_snippet">(video)</string>
<string name="DraftDatabase_Draft_location_snippet">(position)</string>
<string name="DraftDatabase_Draft_location_snippet">(lokation)</string>
<string name="DraftDatabase_Draft_quote_snippet">(svar)</string>
<!--AttchmentManager-->
<string name="AttachmentManager_cant_open_media_selection">Kan ikke åbne valgte data</string>
<string name="AttachmentManager_cant_open_media_selection">Ingen app tilgængelig til valg af data</string>
<string name="AttachmentManager_signal_requires_the_external_storage_permission_in_order_to_attach_photos_videos_or_audio">Signal kræver tilladelse til at tilgå din hukommelse, for at kunne vedhæfte billeder, videoer eller lydfiler, hvilket det er blevet nægtet. Gå venligst via appens menu til Indstillinger, vælg \"Tilladelser\" og tilvælg \"Hukommelse\"</string>
<string name="AttachmentManager_signal_requires_contacts_permission_in_order_to_attach_contact_information">Signal kræver tilladelse til at tilgå dine kontakter, for at kunne vedhæfte kontakt informationer, hvilket det er blevet nægtet. Gå venligst via appens menu til Indstillinger, vælg \"Tilladelser\" og tilvælg \"Kontakter\"</string>
<string name="AttachmentManager_signal_requires_location_information_in_order_to_attach_a_location">Signal kræver tilladelse til at tilgå din lokation, for at kunne vedhæfte lokationer, hvilket det er blevet nægtet. Gå venligst via appens menu til Indstillinger, vælg \"Tilladelser\" og tilvælg \"Lokation\"</string>
@@ -79,12 +79,12 @@
<!--CommunicationActions-->
<string name="CommunicationActions_no_browser_found">Ingen Webbrowser fundet</string>
<!--ConfirmIdentityDialog-->
<string name="ConfirmIdentityDialog_your_safety_number_with_s_has_changed">Sikkerhedsnøglen for %1$s er blevet ændret. Dette kan enten betyde at nogen forsøger at opsnappe kommunikationen, eller at %2$s bare har geninstalleret Signal og nu har en ny sikkerhedsnøgle
<string name="ConfirmIdentityDialog_your_safety_number_with_s_has_changed">Sikkerhedsnøglen for %1$s er blevet ændret. Dette kan enten betyde at nogen forsøger at opsnappe kommunikationen, eller at %2$s blot har geninstalleret Signal og nu har en ny sikkerhedsnøgle
</string>
<string name="ConfirmIdentityDialog_you_may_wish_to_verify_your_safety_number_with_this_contact">Du bør verificere din sikkerhedsnøgle med denne kontakt</string>
<string name="ConfirmIdentityDialog_accept">Godkend</string>
<!--ContactsCursorLoader-->
<string name="ContactsCursorLoader_recent_chats">Nyeste samtaler</string>
<string name="ContactsCursorLoader_recent_chats">Seneste beskeder</string>
<string name="ContactsCursorLoader_contacts">Kontakter</string>
<string name="ContactsCursorLoader_groups">Grupper</string>
<!--ContactsDatabase-->
@@ -93,8 +93,8 @@
<!--ContactNameEditActivity-->
<string name="ContactNameEditActivity_given_name">Fornavn</string>
<string name="ContactNameEditActivity_family_name">Efternavn</string>
<string name="ContactNameEditActivity_prefix">Fornavn</string>
<string name="ContactNameEditActivity_suffix">Efternavn</string>
<string name="ContactNameEditActivity_prefix">Navnepræfiks</string>
<string name="ContactNameEditActivity_suffix">Navnesuffiks</string>
<string name="ContactNameEditActivity_middle_name">Mellemnavn</string>
<!--ContactShareEditActivity-->
<string name="ContactShareEditActivity_type_home">Hjemme</string>
@@ -104,54 +104,54 @@
<string name="ContactShareEditActivity_invalid_contact">Valgte kontakt findes ikke</string>
<!--ConversationItem-->
<string name="ConversationItem_error_not_delivered">Fejl ved afsendelse, tap for detaljer</string>
<string name="ConversationItem_received_key_exchange_message_tap_to_process">Udvekslingsnøgle er modtaget. Klik for at fortsætte</string>
<string name="ConversationItem_received_key_exchange_message_tap_to_process">Udvekslingsnøgle er modtaget. Tap for at fortsætte</string>
<string name="ConversationItem_group_action_left">%1$s har forladt gruppen</string>
<string name="ConversationItem_click_to_approve_unencrypted">Fejl ved afsendelse, tap for at sende ukrypteret</string>
<string name="ConversationItem_click_to_approve_unencrypted">Fejl ved afsendelse, tap for at sende usikret</string>
<string name="ConversationItem_click_to_approve_unencrypted_sms_dialog_title">Godkend ukrypteret SMS?</string>
<string name="ConversationItem_click_to_approve_unencrypted_mms_dialog_title">Godkend ukrypteret MMS?</string>
<string name="ConversationItem_click_to_approve_unencrypted_dialog_message">Denne besked vil <b>ikke</b> blive krypteret, da modtageren ikke længere er Signal-bruger.\n\nSend ukrypteret besked?</string>
<string name="ConversationItem_unable_to_open_media">Kan ikke finde en app, der kan åbne denne fil</string>
<string name="ConversationItem_click_to_approve_unencrypted_dialog_message">Denne besked vil <b>ikke</b> blive krypteret, da modtageren ikke længere er Signal-bruger.\n\nSend usikret besked?</string>
<string name="ConversationItem_unable_to_open_media">Kan ikke finde en app, der kan åbne mediet</string>
<string name="ConversationItem_copied_text">Kopieret %s</string>
<string name="ConversationItem_from_s">fra %s</string>
<string name="ConversationItem_to_s">til %s</string>
<!--ConversationActivity-->
<string name="ConversationActivity_reset_secure_session_question">Gendan sikker forbindelse?</string>
<string name="ConversationActivity_this_may_help_if_youre_having_encryption_problems">Dette vil muligvis hjælpe hvis du oplever krypteringsproblemer med denne samtale. Dine beskeder bevares</string>
<string name="ConversationActivity_reset">Gendan</string>
<string name="ConversationActivity_reset_secure_session_question">Reset sikker forbindelse?</string>
<string name="ConversationActivity_this_may_help_if_youre_having_encryption_problems">Dette vil muligvis hjælpe hvis du oplever krypteringsproblemer med samtalen. Dine beskeder bevares</string>
<string name="ConversationActivity_reset">Reset</string>
<string name="ConversationActivity_add_attachment">Vedhæft fil</string>
<string name="ConversationActivity_select_contact_info">Vælg kontaktinformation</string>
<string name="ConversationActivity_compose_message">Opret besked</string>
<string name="ConversationActivity_sorry_there_was_an_error_setting_your_attachment">Beklager, der opstod en fejl ved vedhæftning af fil</string>
<string name="ConversationActivity_recipient_is_not_a_valid_sms_or_email_address_exclamation">Modtageren har ikke en gyldig SMS- eller e-mailadresse!</string>
<string name="ConversationActivity_recipient_is_not_a_valid_sms_or_email_address_exclamation">Modtageren har ikke en gyldig SMS eller email adresse!</string>
<string name="ConversationActivity_message_is_empty_exclamation">Beskeden er tom!</string>
<string name="ConversationActivity_group_members">Gruppemedlemmer</string>
<string name="ConversationActivity_invalid_recipient">Ugyldig modtager!</string>
<string name="ConversationActivity_added_to_home_screen">Føjet til startskærm</string>
<string name="ConversationActivity_calls_not_supported">Opkald er ikke understøttet</string>
<string name="ConversationActivity_this_device_does_not_appear_to_support_dial_actions">Din enhed understøtter ikke initieret opkald.</string>
<string name="ConversationActivity_this_device_does_not_appear_to_support_dial_actions">Enheden understøtter ikke initieret opkald</string>
<string name="ConversationActivity_leave_group">Forlad gruppe?</string>
<string name="ConversationActivity_are_you_sure_you_want_to_leave_this_group">Er du sikker, du vil forlade gruppen?</string>
<string name="ConversationActivity_transport_insecure_sms">Usikker (ikke krypteret) SMS</string>
<string name="ConversationActivity_transport_insecure_mms">Usikker (ikke krypteret) MMS</string>
<string name="ConversationActivity_transport_insecure_sms">Usikret SMS</string>
<string name="ConversationActivity_transport_insecure_mms">Usikret MMS</string>
<string name="ConversationActivity_transport_signal">Signal</string>
<string name="ConversationActivity_lets_switch_to_signal">Skal vi ikke bruge Signal %1$s?</string>
<string name="ConversationActivity_lets_use_this_to_chat">Skal vi ikke bruge Signal %1$s?</string>
<string name="ConversationActivity_error_leaving_group">Der skete en fejl da du forlod gruppen</string>
<string name="ConversationActivity_lets_switch_to_signal">Lad os bruge Signal %1$s?</string>
<string name="ConversationActivity_lets_use_this_to_chat">Lad os bruge Signal til beskeder: %1$s</string>
<string name="ConversationActivity_error_leaving_group">Fejl ved forsøg på at forlade gruppen</string>
<string name="ConversationActivity_specify_recipient">Vælg venligst en kontakt</string>
<string name="ConversationActivity_unblock_this_contact_question">Fjern blokering af kontakten?</string>
<string name="ConversationActivity_unblock_this_group_question">Fjern blokering af gruppen?</string>
<string name="ConversationActivity_you_will_once_again_be_able_to_receive_messages_and_calls_from_this_contact">Nu vil du igen modtage beskeder og opkald, fra kontaktpersonen</string>
<string name="ConversationActivity_you_will_once_again_be_able_to_receive_messages_and_calls_from_this_contact">Du vil nu igen modtage beskeder og opkald fra kontaktpersonen</string>
<string name="ConversationActivity_unblock_this_group_description">Eksisterende medlemmer vil kunne tilføje dig til gruppen igen</string>
<string name="ConversationActivity_unblock">Fjern blokering</string>
<string name="ConversationActivity_attachment_exceeds_size_limits">Vedhæftet fil overskrider størrelsesbegrænsningen for den type meddelelse, du sender</string>
<string name="ConversationActivity_attachment_exceeds_size_limits">Vedhæftningen overskrider max. grænsen for filstørrelser, for den type af meddelelse du sender</string>
<string name="ConversationActivity_quick_camera_unavailable">Kamera utilgængeligt</string>
<string name="ConversationActivity_unable_to_record_audio">Fejl ved lydoptagelse!</string>
<string name="ConversationActivity_there_is_no_app_available_to_handle_this_link_on_your_device">Der er ingen app, der kan åbne dette link på din enhed</string>
<string name="ConversationActivity_to_send_audio_messages_allow_signal_access_to_your_microphone">For at sende talebeskeder skal du give Signal adgang til mikrofonen</string>
<string name="ConversationActivity_there_is_no_app_available_to_handle_this_link_on_your_device">Der er ingen app tilgængelig, der kan åbne linket på din enhed</string>
<string name="ConversationActivity_to_send_audio_messages_allow_signal_access_to_your_microphone">For at sende talebeskeder skal du give Signal tilladelse til at til mikrofonen</string>
<string name="ConversationActivity_signal_requires_the_microphone_permission_in_order_to_send_audio_messages">Signal kræver tilladelse til at tilgå mikrofonen for at kunne sende lydfiler, hvilket det er blevet nægtet. Gå venligst via appens menu til Indstillinger, vælg \"Tilladelser\" og tilvælg \"Mikrofon\"</string>
<string name="ConversationActivity_to_call_s_signal_needs_access_to_your_microphone_and_camera">For at ringe til %s har Signal brug for adgang til din mikrofon og dit kamera.</string>
<string name="ConversationActivity_signal_needs_the_microphone_and_camera_permissions_in_order_to_call_s">Signal har brug for adgang til mikrofon og kamera for at kunne ringe til %s, men det er permanent blevet afvist. Åben indstillinger og gå til \"Tilladelser\" for at give tilladelse til mikrofon og kamera.</string>
<string name="ConversationActivity_to_capture_photos_and_video_allow_signal_access_to_the_camera">Giv Signal adgang til dit kamera, for at kunne tage billeder og optage video</string>
<string name="ConversationActivity_to_call_s_signal_needs_access_to_your_microphone_and_camera">For at ringe til %s kræver Signal tilladelse til at til din mikrofon og dit kamera</string>
<string name="ConversationActivity_signal_needs_the_microphone_and_camera_permissions_in_order_to_call_s">Signal kræver tilladelse til at til mikrofon og kamera, for at kunne ringe til %s, men det er permanent blevet afvist. Gå venligst via appens menu til Indstillinger, vælg \"Tilladelser\" og tilvælg \"Mikrofon\" og \"Kamera\"</string>
<string name="ConversationActivity_to_capture_photos_and_video_allow_signal_access_to_the_camera">Signal kræver tilladelse til at til dit kamera, for at kunne tage billeder og optage video</string>
<string name="ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video">Signal kræver tilladelse til at tilgå dit kamera, for at kunne tage billeder eller optage video, hvilket det er blevet nægtet. Gå venligst via appens menu til Indstillinger, vælg \"Tilladelser\" og tilvælg \"Kamera\"</string>
<string name="ConversationActivity_signal_needs_camera_permissions_to_take_photos_or_video">Signal kræver tilladelse til at tilgå kameraet, for at tage billeder og video</string>
<string name="ConversationActivity_quoted_contact_message">%1$s%2$s</string>
@@ -170,12 +170,12 @@
</plurals>
<plurals name="ConversationFragment_this_will_permanently_delete_all_n_selected_messages">
<item quantity="one">Dette vil slette den valgte besked permanent.</item>
<item quantity="other">Dette sletter de %1$d valgte beskeder permanent</item>
<item quantity="other">Dette sletter %1$d valgte beskeder permanent</item>
</plurals>
<string name="ConversationFragment_save_to_sd_card">Gem på lager?</string>
<string name="ConversationFragment_save_to_sd_card">Gem i hukommelsen?</string>
<plurals name="ConversationFragment_saving_n_media_to_storage_warning">
<item quantity="one">At gemme denne fil på disk vil tillade alle andre apps at tilgå den.\n\nFortsæt?</item>
<item quantity="other">At gemme alle %1$d filer på disk vil tillade alle andre apps at tilgå dem.\n\nFortsæt?</item>
<item quantity="other">Gemmes alle %1$d filer i hukommelsen, vil alle andre apps også have mulighed for at tilgå dem.\n\nFortsæt?</item>
</plurals>
<plurals name="ConversationFragment_error_while_saving_attachments_to_sd_card">
<item quantity="one">Kunne ikke gemme vedhæftede fil!</item>
@@ -188,7 +188,7 @@
</plurals>
<plurals name="ConversationFragment_saving_n_attachments_to_sd_card">
<item quantity="one">Gemmer vedhæftning...</item>
<item quantity="other">Gemmer %1$d vedhæftninger...</item>
<item quantity="other">Gemmer %1$d vedhæftninger til hukommelsen...</item>
</plurals>
<string name="ConversationFragment_pending">Afventer...</string>
<string name="ConversationFragment_push">Data (Signal)</string>
@@ -196,10 +196,10 @@
<string name="ConversationFragment_sms">SMS</string>
<string name="ConversationFragment_deleting">Sletter</string>
<string name="ConversationFragment_deleting_messages">Sletter beskeder...</string>
<string name="ConversationFragment_quoted_message_not_found">Original besked ikke fundet</string>
<string name="ConversationFragment_quoted_message_not_found">Original besked blev ikke fundet</string>
<string name="ConversationFragment_quoted_message_no_longer_available">Original besked er ikke længere tilgængelig</string>
<!--ConversationListActivity-->
<string name="ConversationListActivity_there_is_no_browser_installed_on_your_device">Der er ikke installeret en browser på dit device.</string>
<string name="ConversationListActivity_there_is_no_browser_installed_on_your_device">Ingen browser er installeret på din enhed</string>
<!--ConversationListFragment-->
<string name="ConversationListFragment_no_results_found_for_s_">Ingen resultater fundet for \"%s\"</string>
<plurals name="ConversationListFragment_delete_selected_conversations">
@@ -208,7 +208,7 @@
</plurals>
<plurals name="ConversationListFragment_this_will_permanently_delete_all_n_selected_conversations">
<item quantity="one">Dette vil slette den valgte samtale permanent.</item>
<item quantity="other">Dette sletter de %1$d valgte samtaler permanent</item>
<item quantity="other">Dette sletter %1$d valgte samtaler permanent</item>
</plurals>
<string name="ConversationListFragment_deleting">Sletter</string>
<string name="ConversationListFragment_deleting_selected_conversations">Sletter valgte samtaler...</string>
@@ -219,7 +219,7 @@
<string name="ConversationListFragment_undo">FORTRYD</string>
<plurals name="ConversationListFragment_moved_conversations_to_inbox">
<item quantity="one">Samtale flyttet til inbox</item>
<item quantity="other">%d samtaler flyttet til indbakke</item>
<item quantity="other">Flyttet %d samtaler til indbakke</item>
</plurals>
<!--ConversationListItem-->
<string name="ConversationListItem_key_exchange_message">Besked med udvekslingsnøgle</string>
@@ -227,10 +227,10 @@
<string name="ConversationListItemAction_archived_conversations_d">Arkiverede samtaler (%d)</string>
<!--CreateProfileActivity-->
<string name="CreateProfileActivity_your_profile_info">Din profil</string>
<string name="CreateProfileActivity_error_setting_profile_photo">En fejl opstod under redigering af profilbilledet</string>
<string name="CreateProfileActivity_problem_setting_profile">En fejl opstod under redigering af profilen</string>
<string name="CreateProfileActivity_error_setting_profile_photo">Fejl opstået ved oprettelse af profilbilledet</string>
<string name="CreateProfileActivity_problem_setting_profile">Fejl opstod ved oprettelse af profil</string>
<string name="CreateProfileActivity_profile_photo">Profilbillede</string>
<string name="CreateProfileActivity_too_long">For lang</string>
<string name="CreateProfileActivity_too_long">For langt</string>
<!--CustomDefaultPreference-->
<string name="CustomDefaultPreference_using_custom">Anvender tilpasset: %s</string>
<string name="CustomDefaultPreference_using_default">Anvender standard: %s</string>
@@ -247,7 +247,7 @@
<string name="DeliveryStatus_read">Læst</string>
<!--DeviceListActivity-->
<string name="DeviceListActivity_unlink_s">Frakobl \"%s\"?</string>
<string name="DeviceListActivity_by_unlinking_this_device_it_will_no_longer_be_able_to_send_or_receive">Frakobler du denne enhed, vil den ikke være i stand til at sende og modtage beskeder</string>
<string name="DeviceListActivity_by_unlinking_this_device_it_will_no_longer_be_able_to_send_or_receive">Ved frakobling af denne enhed, vil den ikke længere være i stand til at sende og modtage beskeder</string>
<string name="DeviceListActivity_network_connection_failed">Forbindelse til netværk fejlede</string>
<string name="DeviceListActivity_try_again">Prøv igen</string>
<string name="DeviceListActivity_unlinking_device">Frakobler enhed...</string>
@@ -255,77 +255,80 @@
<string name="DeviceListActivity_network_failed">Netværksfejl!</string>
<!--DeviceListItem-->
<string name="DeviceListItem_unnamed_device">Unavngivet enhed</string>
<string name="DeviceListItem_linked_s">Tilkoblede %s</string>
<string name="DeviceListItem_linked_s">Tilkoblet %s</string>
<string name="DeviceListItem_last_active_s">Sidste aktive %s</string>
<string name="DeviceListItem_today">I dag</string>
<!--DocumentView-->
<string name="DocumentView_unknown_file">Ukendt fil</string>
<!--DozeReminder-->
<string name="DozeReminder_optimize_for_missing_play_services">Optimer for manglende Play Services</string>
<string name="DozeReminder_this_device_does_not_support_play_services_tap_to_disable_system_battery">Denne enhed understøtter ikke Play Services. Tap for at slå batterioptimering fra, som forhindrer Signal i at modtage beskeder i baggrunden</string>
<string name="DozeReminder_optimize_for_missing_play_services">Optimér for manglende Play Services</string>
<string name="DozeReminder_this_device_does_not_support_play_services_tap_to_disable_system_battery">Enheden understøtter ikke Play Services. Tap for at slå batterioptimering fra, som forhindrer Signal i at modtage beskeder i baggrunden</string>
<!--ShareActivity-->
<string name="ShareActivity_share_with">Del med</string>
<!--ExperienceUpgradeActivity-->
<string name="ExperienceUpgradeActivity_welcome_to_signal_dgaf">Velkommen til Signal</string>
<string name="ExperienceUpgradeActivity_textsecure_is_now_called_signal">TextSecure og RedPhone er nu én privat messenger, til enhver lejlighed: Signal</string>
<string name="ExperienceUpgradeActivity_welcome_to_signal_excited">Velkommen til Signal!</string>
<string name="ExperienceUpgradeActivity_textsecure_is_now_signal">TextSecure er nu Signal.</string>
<string name="ExperienceUpgradeActivity_textsecure_is_now_signal">TextSecure er nu Signal</string>
<string name="ExperienceUpgradeActivity_textsecure_is_now_signal_long">TextSecure og RedPhone er nu én app: Signal. Tap for at udforske</string>
<string name="ExperienceUpgradeActivity_say_hello_to_video_calls">Sig hej til sikre videoopkald</string>
<string name="ExperienceUpgradeActivity_say_hello_to_video_calls">Sig ´Hej´ til sikre videoopkald</string>
<string name="ExperienceUpgradeActivity_signal_now_supports_secure_video_calls">Signal understøtter nu sikre videoopkald. Du skal bare starte et Signal opkald som normalt, tap på video knappen og vink goddag</string>
<string name="ExperienceUpgradeActivity_signal_now_supports_secure_video_calling">Signal understøtter nu sikre videoopkald.</string>
<string name="ExperienceUpgradeActivity_signal_now_supports_secure_video_calling">Signal understøtter nu sikre videoopkald</string>
<string name="ExperienceUpgradeActivity_signal_now_supports_secure_video_calling_long">Signal understøtter nu sikre videoopkald. Tap for at udforske</string>
<string name="ExperienceUpgradeActivity_ready_for_your_closeup">Er du klar til et nærbilled?</string>
<string name="ExperienceUpgradeActivity_now_you_can_share_a_profile_photo_and_name_with_friends_on_signal">Nu kan du dele dit profilbillede og navn med dine venner på Signal</string>
<string name="ExperienceUpgradeActivity_signal_profiles_are_here">Nu er der Signal profiler</string>
<string name="ExperienceUpgradeActivity_now_you_can_share_a_profile_photo_and_name_with_friends_on_signal">Du kan nu dele dit profilbillede og navn med dine venner på Signal</string>
<string name="ExperienceUpgradeActivity_signal_profiles_are_here">Signal profiler er nu tilgængelige</string>
<string name="ExperienceUpgradeActivity_introducing_typing_indicators">Introducerer skrive indikatorer</string>
<string name="ExperienceUpgradeActivity_now_you_can_optionally_see_and_share_when_messages_are_being_typed">Nu kan du vælge at se og vise, når beskeder skrives</string>
<string name="ExperienceUpgradeActivity_now_you_can_optionally_see_and_share_when_messages_are_being_typed">Nu har du mulighed for at se og vise, når beskeder skrives</string>
<string name="ExperienceUpgradeActivity_would_you_like_to_enable_them_now">Vil du aktivere det nu?</string>
<string name="ExperienceUpgradeActivity_typing_ui_title">Skrive indikatorer er her</string>
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Aktivér skrive indikatorer</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Aktivér skrive indikatorer</string>
<string name="ExperienceUpgradeActivity_no_thanks">Nej tak</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Introducere link eksempelvisning</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Mulighed for eksempelvisning af links, er nu understøttet for de fleste populære sider på nettet</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Du kan når som helst aktivere eller deaktivere funktionaliteten, under Signal indstillinger (Privatliv &gt; Send link eksempelvisning)</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Modtager en meddelelse...</string>
<!--GcmRefreshJob-->
<string name="GcmRefreshJob_Permanent_Signal_communication_failure">Permanent fejl i Signal-kommunikationen!</string>
<string name="GcmRefreshJob_Signal_was_unable_to_register_with_Google_Play_Services">Signal var ude af stand til at registrere med Google Play Services. Signal beskeder og opkald blev deaktiverét, prøv venligst at registrere igen i Indstillinger &gt; Advanceret</string>
<string name="GcmRefreshJob_Permanent_Signal_communication_failure">Permanent fejl ved Signal kommunikationen!</string>
<string name="GcmRefreshJob_Signal_was_unable_to_register_with_Google_Play_Services">Signal var ude af stand til at registrere med Google Play Services. Signal beskeder og opkald blev deaktiveret, prøv venligst at registrere igen i Indstillinger &gt; Advanceret</string>
<!--GiphyActivity-->
<string name="GiphyActivity_error_while_retrieving_full_resolution_gif">Der opstod en fejl ved hentning af GIF i fuld opløsning</string>
<string name="GiphyActivity_error_while_retrieving_full_resolution_gif">Fejl opstod ved hentning af GIF i fuld opløsning</string>
<!--GiphyFragmentPageAdapter-->
<string name="GiphyFragmentPagerAdapter_gifs">GIFs</string>
<string name="GiphyFragmentPagerAdapter_stickers">Klistermærke</string>
<string name="GiphyFragmentPagerAdapter_gifs">GIF´s</string>
<string name="GiphyFragmentPagerAdapter_stickers">Klistermærker</string>
<!--GroupCreateActivity-->
<string name="GroupCreateActivity_actionbar_title">Opret ny gruppe</string>
<string name="GroupCreateActivity_actionbar_edit_title">Rediger gruppe</string>
<string name="GroupCreateActivity_group_name_hint">Gruppenavn</string>
<string name="GroupCreateActivity_actionbar_mms_title">Ny MMS-gruppe</string>
<string name="GroupCreateActivity_contacts_dont_support_push">Du har valgt en person der ikke understøtter Signal-grupper. Denne gruppe vil være en MMS-gruppe</string>
<string name="GroupCreateActivity_youre_not_registered_for_signal">Du er ikke sat op til Signal beskeder og opkald, Signal grupper er deaktiveret. Du bedes registrere dig under Indstillinger &gt; Advanceret</string>
<string name="GroupCreateActivity_contacts_no_members">Der skal være mindst én person i gruppen!</string>
<string name="GroupCreateActivity_contacts_dont_support_push">Du har valgt en person der ikke understøtter Signal-grupper. Gruppen oprettes derfor som en MMS-gruppe</string>
<string name="GroupCreateActivity_youre_not_registered_for_signal">Du er ikke sat op til Signal beskeder og opkald, hvorfor Signal grupper er deaktiveret. Du bedes registrere dig under Indstillinger &gt; Advanceret</string>
<string name="GroupCreateActivity_contacts_no_members">Der skal være valgt mindst én person til gruppen!</string>
<string name="GroupCreateActivity_contacts_invalid_number">En kontakt i gruppen har et nummer, der ikke kan læses. Ret nummeret eller fjern kontakten og prøv igen</string>
<string name="GroupCreateActivity_avatar_content_description">Gruppe ikon</string>
<string name="GroupCreateActivity_menu_apply_button">Anvend</string>
<string name="GroupCreateActivity_creating_group">Opretter %1$s...</string>
<string name="GroupCreateActivity_updating_group">Opdaterer %1$s...</string>
<string name="GroupCreateActivity_cannot_add_non_push_to_existing_group">Kunne ikke tilføje, da %1$s ikke er en Signal-bruger.</string>
<string name="GroupCreateActivity_cannot_add_non_push_to_existing_group">Kunne ikke tilføje, da %1$s ikke bruger Signal</string>
<string name="GroupCreateActivity_loading_group_details">Indlæser gruppedetaljer...</string>
<string name="GroupCreateActivity_youre_already_in_the_group">Du er allerede med i gruppen</string>
<!--GroupShareProfileView-->
<string name="GroupShareProfileView_share_your_profile_name_and_photo_with_this_group">Vil du dele dit profilnavn og -billede med denne gruppe?</string>
<string name="GroupShareProfileView_do_you_want_to_make_your_profile_name_and_photo_visible_to_all_current_and_future_members_of_this_group">Vil du lave dit profilnavn og profilbillede synligt for alle nuværende og fremtidige medlemmer af denne gruppe?</string>
<string name="GroupShareProfileView_share_your_profile_name_and_photo_with_this_group">Del dit profilnavn og billede med gruppen?</string>
<string name="GroupShareProfileView_do_you_want_to_make_your_profile_name_and_photo_visible_to_all_current_and_future_members_of_this_group">Vil du gøre dit profilnavn og profilbillede synligt, for alle nuværende og fremtidige medlemmer af gruppen?</string>
<string name="GroupShareProfileView_make_visible">Gør synlig</string>
<!--GroupMembersDialog-->
<string name="GroupMembersDialog_me">Mig</string>
<!--InputPanel-->
<string name="InputPanel_tap_and_hold_to_record_a_voice_message_release_to_send">Tap og hold for at optage en stemmebesked. Slip for at afsende</string>
<string name="InputPanel_tap_and_hold_to_record_a_voice_message_release_to_send">Tap og hold for at optage en stemmebesked. Slip for at sende</string>
<!--InviteActivity-->
<string name="InviteActivity_share">Del</string>
<string name="InviteActivity_choose_contacts">Vælg kontakter</string>
<string name="InviteActivity_cancel">Afbryd</string>
<string name="InviteActivity_sending">Sender...</string>
<string name="InviteActivity_heart_content_description">Hjerte</string>
<string name="InviteActivity_invitations_sent">Invitationer afsendt!</string>
<string name="InviteActivity_invitations_sent">Invitationer sendt!</string>
<string name="InviteActivity_invite_to_signal">Invitér til Signal</string>
<plurals name="InviteActivity_send_sms_to_friends">
<item quantity="one">SEND SMS TIL %d VENNER</item>
@@ -333,7 +336,7 @@
</plurals>
<plurals name="InviteActivity_send_sms_invites">
<item quantity="one">Send %d SMS invitationer?</item>
<item quantity="other">Send %d SMS-invitationer?</item>
<item quantity="other">Send %d SMS invitationer?</item>
</plurals>
<string name="InviteActivity_lets_switch_to_signal">Lad os bruge Signal: %1$s</string>
<string name="InviteActivity_no_app_to_share_to">Det lader til at du ikke har nogle apps at dele til</string>
@@ -341,7 +344,7 @@
<!--Job-->
<string name="Job_working_in_the_background">Arbejder i baggrunden...</string>
<!--MessageDetailsRecipient-->
<string name="MessageDetailsRecipient_failed_to_send">Kunne ikke sende</string>
<string name="MessageDetailsRecipient_failed_to_send">Kunne ikke sendes</string>
<string name="MessageDetailsRecipient_new_safety_number">Nyt sikkerhedsnummer</string>
<!--MessageRetrievalService-->
<string name="MessageRetrievalService_signal">Signal</string>
@@ -356,25 +359,25 @@
</plurals>
<plurals name="MediaOverviewActivity_Media_delete_confirm_message">
<item quantity="one">d</item>
<item quantity="other">Dette sletter de %1$d beskeder permanent</item>
<item quantity="other">Dette sletter %1$d beskeder permanent</item>
</plurals>
<string name="MediaOverviewActivity_Media_delete_progress_title">Sletter</string>
<string name="MediaOverviewActivity_Media_delete_progress_message">Sletter beskeder...</string>
<string name="MediaOverviewActivity_Documents">Dokumenter</string>
<string name="MediaOverviewActivity_Select_all">Markér alle</string>
<string name="MediaOverviewActivity_Select_all">Vælg alle</string>
<string name="MediaOverviewActivity_collecting_attachments">Samler vedhæftninger...</string>
<!--- NotificationBarManager-->
<string name="NotificationBarManager_signal_call_in_progress">Signalopkald i gang</string>
<string name="NotificationBarManager_signal_call_in_progress">Signal opkald i gang</string>
<string name="NotificationBarManager__establishing_signal_call">Foretager Signalopkald</string>
<string name="NotificationBarManager__incoming_signal_call">Indgående Signalopkald</string>
<string name="NotificationBarManager__incoming_signal_call">Indgående Signal opkald</string>
<string name="NotificationBarManager__deny_call">Afvis opkald</string>
<string name="NotificationBarManager__answer_call">Tag telefonen</string>
<string name="NotificationBarManager__end_call">Læg på</string>
<string name="NotificationBarManager__answer_call">Svar opkald</string>
<string name="NotificationBarManager__end_call">Afslut opkald</string>
<string name="NotificationBarManager__cancel_call">Afbryd opkald</string>
<!--NotificationMmsMessageRecord-->
<string name="NotificationMmsMessageRecord_multimedia_message">Multimediebesked</string>
<string name="NotificationMmsMessageRecord_downloading_mms_message">Henter MMS...</string>
<string name="NotificationMmsMessageRecord_error_downloading_mms_message">Kunne ikke hente MMS besked, tap for at prøve igen</string>
<string name="NotificationMmsMessageRecord_multimedia_message">Multimedie besked</string>
<string name="NotificationMmsMessageRecord_downloading_mms_message">Downloader MMS...</string>
<string name="NotificationMmsMessageRecord_error_downloading_mms_message">MMS besked kunne ikke downloades, tap for at prøve igen</string>
<!--MediaPickerActivity-->
<string name="MediaPickerActivity_send_to">Send til %s</string>
<!--MediaPickerItemFragment-->
@@ -389,31 +392,31 @@
<string name="MediaRepository_all_media">Alle mediefiler</string>
<!--MessageRecord-->
<string name="MessageRecord_message_encrypted_with_a_legacy_protocol_version_that_is_no_longer_supported">Modtog en besked krypteret med en ældre version af Signal, der ikke længere understøttes. Bed venligst afsenderen om at opgradere til den nyeste version og sende beskeden igen</string>
<string name="MessageRecord_left_group">Du har forladt gruppen.</string>
<string name="MessageRecord_you_updated_group">Du opdaterede gruppen.</string>
<string name="MessageRecord_left_group">Du har forladt gruppen</string>
<string name="MessageRecord_you_updated_group">Du opdaterede gruppen</string>
<string name="MessageRecord_you_called">Du ringede</string>
<string name="MessageRecord_called_you">Opkald fra kontakt</string>
<string name="MessageRecord_missed_call">Mistet opkald</string>
<string name="MessageRecord_missed_call">Mistede opkald</string>
<string name="MessageRecord_s_updated_group">%s opdaterede gruppen</string>
<string name="MessageRecord_s_called_you">%s har ringet til dig</string>
<string name="MessageRecord_called_s">Ringede til %s</string>
<string name="MessageRecord_s_called_you">%s ringede til dig</string>
<string name="MessageRecord_called_s">Ringet til %s</string>
<string name="MessageRecord_missed_call_from">Mistet opkald fra %s</string>
<string name="MessageRecord_s_joined_signal">%s er på Signal!</string>
<string name="MessageRecord_you_disabled_disappearing_messages">Du slog beskeder med tidsudløb fra</string>
<string name="MessageRecord_s_disabled_disappearing_messages">%1$s slog beskeder med tidsudløb fra</string>
<string name="MessageRecord_you_set_disappearing_message_time_to_s">Beskeder sat til at udløbe efter %1$s</string>
<string name="MessageRecord_s_set_disappearing_message_time_to_s">%1$s har sat beskeder til at udløbe efter %2$s</string>
<string name="MessageRecord_you_set_disappearing_message_time_to_s">Besked sat til at udløbe efter %1$s</string>
<string name="MessageRecord_s_set_disappearing_message_time_to_s">%1$s har sat beskeden til at udløbe efter %2$s</string>
<string name="MessageRecord_your_safety_number_with_s_has_changed">Dit sikkerhedsnummer med %s er ændret</string>
<string name="MessageRecord_you_marked_your_safety_number_with_s_verified">Du har markeret dit sikkerhedsnummer med %s verificeret</string>
<string name="MessageRecord_you_marked_your_safety_number_with_s_verified_from_another_device">Du har markeret dit sikkerhedsnummer med %s verificeret fra en anden enhed</string>
<string name="MessageRecord_you_marked_your_safety_number_with_s_unverified">Du har markeret dit sikkerhedsnummer med %s ubekræftet</string>
<string name="MessageRecord_you_marked_your_safety_number_with_s_unverified_from_another_device">Du har markeret dit sikkerhedsnummer med %s ubekræftet fra en anden enhed</string>
<string name="MessageRecord_you_marked_your_safety_number_with_s_verified">Du har markeret dit sikkerhedsnummer med %s som verificeret</string>
<string name="MessageRecord_you_marked_your_safety_number_with_s_verified_from_another_device">Du har markeret dit sikkerhedsnummer med %s som verificeret fra en anden enhed</string>
<string name="MessageRecord_you_marked_your_safety_number_with_s_unverified">Du har markeret dit sikkerhedsnummer med %s som ubekræftet</string>
<string name="MessageRecord_you_marked_your_safety_number_with_s_unverified_from_another_device">Du har markeret dit sikkerhedsnummer med %s som ubekræftet fra en anden enhed</string>
<!--PassphraseChangeActivity-->
<string name="PassphraseChangeActivity_passphrases_dont_match_exclamation">Kodeord matcher ikke!</string>
<string name="PassphraseChangeActivity_incorrect_old_passphrase_exclamation">Ugyldigt nuværende kodeord!</string>
<string name="PassphraseChangeActivity_incorrect_old_passphrase_exclamation">Gammelt ugyldigt kodeord!</string>
<string name="PassphraseChangeActivity_enter_new_passphrase_exclamation">Indtast nyt kodeord!</string>
<!--DeviceProvisioningActivity-->
<string name="DeviceProvisioningActivity_link_this_device">Tilkobl denne enhed?</string>
<string name="DeviceProvisioningActivity_link_this_device">Tilføj denne enhed?</string>
<string name="DeviceProvisioningActivity_cancel">AFBRYD</string>
<string name="DeviceProvisioningActivity_continue">FORTSÆT</string>
<string name="DeviceProvisioningActivity_content_intro">Den vil være i stand til at</string>
@@ -421,41 +424,41 @@
• Læs alle dine beskeder
\n• Send beskeder i dit navn
</string>
<string name="DeviceProvisioningActivity_content_progress_title">Tilkobler enhed</string>
<string name="DeviceProvisioningActivity_content_progress_content">Tilkobler ny enhed...</string>
<string name="DeviceProvisioningActivity_content_progress_success">Enhed tilkoblet!</string>
<string name="DeviceProvisioningActivity_content_progress_no_device">Ingen enhed fundet.</string>
<string name="DeviceProvisioningActivity_content_progress_title">Tilføjer enhed</string>
<string name="DeviceProvisioningActivity_content_progress_content">Tilføjer ny enhed...</string>
<string name="DeviceProvisioningActivity_content_progress_success">Enhed tilføjet!</string>
<string name="DeviceProvisioningActivity_content_progress_no_device">Ingen enhed fundet</string>
<string name="DeviceProvisioningActivity_content_progress_network_error">Netværksfejl</string>
<string name="DeviceProvisioningActivity_content_progress_key_error">Ugyldig QR-kode</string>
<string name="DeviceProvisioningActivity_sorry_you_have_too_many_devices_linked_already">Ups. Du har allerede for mange enheder tilsluttet, prøv at fjerne én</string>
<string name="DeviceActivity_sorry_this_is_not_a_valid_device_link_qr_code">Beklager. Dette er ikke en gyldig QR-kode til at forbinde enheder</string>
<string name="DeviceProvisioningActivity_link_a_signal_device">Forbind en Signal enhed?</string>
<string name="DeviceProvisioningActivity_it_looks_like_youre_trying_to_link_a_signal_device_using_a_3rd_party_scanner">Det ser ud som om du forsøger at forbinde en Signal-enhed vha. en tredjeparts-skanner. Af hensyn til sikkerhed, bør du skanne koden igen fra selve Signal-appen</string>
<string name="DeviceProvisioningActivity_link_a_signal_device">Tilføj en Signal enhed?</string>
<string name="DeviceProvisioningActivity_it_looks_like_youre_trying_to_link_a_signal_device_using_a_3rd_party_scanner">Det ser ud som om du forsøger at tilføje en Signal enhed via en 3 parts skanner. Af sikkerhedshensyn bør du skanne koden igen som findes i Signal app\'en</string>
<string name="DeviceActivity_signal_needs_the_camera_permission_in_order_to_scan_a_qr_code">Signal kræver tilladelse til at tilgå dit kamera, for at kunne skanne en QR-kode, hvilket det er blevet nægtet. Gå venligst via appens menu til Indstillinger, vælg \"Tilladelser\" og tilvælg \"Kamera\"</string>
<string name="DeviceActivity_unable_to_scan_a_qr_code_without_the_camera_permission">Kan ikke scanne QR kode uden kamera-tilladelsen</string>
<string name="DeviceActivity_unable_to_scan_a_qr_code_without_the_camera_permission">Kan ikke scanne en QR kode uden tilladelse til at tilgå kameraet</string>
<!--ExpirationDialog-->
<string name="ExpirationDialog_disappearing_messages">Beskeder med tidsudløb</string>
<string name="ExpirationDialog_your_messages_will_not_expire">Din besked udløber ikke </string>
<string name="ExpirationDialog_your_messages_will_disappear_s_after_they_have_been_seen">Beskeder sendt eller modtaget i denne samtale, vil udløbe %s, efter at de er læst</string>
<string name="ExpirationDialog_your_messages_will_disappear_s_after_they_have_been_seen">Beskeder sendt eller modtaget i denne samtale, vil udløbe %s efter at de er læst</string>
<!--PassphrasePromptActivity-->
<string name="PassphrasePromptActivity_enter_passphrase">Indtast kodeord</string>
<string name="PassphrasePromptActivity_watermark_content_description">Signal-ikon</string>
<string name="PassphrasePromptActivity_ok_button_content_description">Godkend kodeord</string>
<string name="PassphrasePromptActivity_watermark_content_description">Signal ikon</string>
<string name="PassphrasePromptActivity_ok_button_content_description">Tilføj kodeord</string>
<string name="PassphrasePromptActivity_invalid_passphrase_exclamation">Ugyldigt kodeord!</string>
<!--PlayServicesProblemFragment-->
<string name="PlayServicesProblemFragment_the_version_of_google_play_services_you_have_installed_is_not_functioning">Din version af Google Play-tjenester virker ikke korrekt. Geninstallér Google Play-tjenester og prøv igen</string>
<string name="PlayServicesProblemFragment_the_version_of_google_play_services_you_have_installed_is_not_functioning">Din installerede version af Google Play tjenester virker ikke korrekt. Geninstallér venligst Google Play tjenester og prøv igen</string>
<!--PushNotificationReceiveJob-->
<string name="PushNotificationReceiveJob_retrieving_a_message">Modtager en meddelelse...</string>
<!--RatingManager-->
<string name="RatingManager_rate_this_app">Bedøm denne app</string>
<string name="RatingManager_if_you_enjoy_using_this_app_please_take_a_moment">Hvis du kan lide at bruge denne app, så hjælp os ved at bedømme den</string>
<string name="RatingManager_rate_this_app">Bedøm app\'en</string>
<string name="RatingManager_if_you_enjoy_using_this_app_please_take_a_moment">Hvis du kan lide at bruge app\'en, så hjælp os venligst ved at bedømme den</string>
<string name="RatingManager_rate_now">Bedøm nu!</string>
<string name="RatingManager_no_thanks">Nej tak</string>
<string name="RatingManager_later">Senere</string>
<string name="RatingManager_whoops_the_play_store_app_does_not_appear_to_be_installed">Ups, det ser ud til at Play Butik ikke er installeret på din enhed</string>
<!--RecipientPreferencesActivity-->
<string name="RecipientPreferenceActivity_block_this_contact_question">Blokér denne kontakt?</string>
<string name="RecipientPreferenceActivity_you_will_no_longer_receive_messages_and_calls_from_this_contact">Du vil ikke længere modtage beskeder eller opkald fra denne kontakt</string>
<string name="RecipientPreferenceActivity_block_this_contact_question">Blokér kontakten?</string>
<string name="RecipientPreferenceActivity_you_will_no_longer_receive_messages_and_calls_from_this_contact">Du vil ikke længere modtage beskeder eller opkald fra kontakten</string>
<string name="RecipientPreferenceActivity_block_and_leave_group">Blokér og forlad gruppen?</string>
<string name="RecipientPreferenceActivity_block_group">Blokér gruppen?</string>
<string name="RecipientPreferenceActivity_block_and_leave_group_description">Du vil ikke længere modtage beskeder eller opdateringer fra gruppen</string>
@@ -496,11 +499,11 @@ telefonnummer
indtastede (%s) er ugyldigt
</string>
<string name="RegistrationActivity_missing_google_play_services">Mangler Google Play Services</string>
<string name="RegistrationActivity_this_device_is_missing_google_play_services">Denne enhed mangler Google Play Services. Du kan stadig bruge Signal, men denne konfiguration kan resultere i begrænset stabilitet og ydeevne.\n\nHvis du ikke er en superbruger, ikke kører en alternativ Android ROM eller tror du ser denne besked ved en fejl, kan du kontakte support@whispersystems.org (på engelsk) for hjælp</string>
<string name="RegistrationActivity_this_device_is_missing_google_play_services">Enheden mangler Google Play Service installeret. Du kan stadig bruge Signal men denne konfiguration kan resultere i begrænset stabilitet og ydeevne.\n\nHvis du ikke er en superbruger, ikke kører en alternativ Android ROM eller tror du ser denne besked ved en fejl, kan du kontakte support@signal.org på engelsk for hjælp</string>
<string name="RegistrationActivity_i_understand">Jeg forstår</string>
<string name="RegistrationActivity_play_services_error">Play Services fejl</string>
<string name="RegistrationActivity_google_play_services_is_updating_or_unavailable">Google Play Services bliver opdateret eller er midlertidigt utilgængelig. Prøv igen</string>
<string name="RegistrationActivity_terms_and_privacy">Betingelser og privatlivspolitik</string>
<string name="RegistrationActivity_terms_and_privacy">Vilkår og privatlivspolitik</string>
<string name="RegistrationActivity_no_browser">Kan ikke åbne linket. Ingen webbrowser installeret</string>
<string name="RegistrationActivity_more_information">Mere information</string>
<string name="RegistrationActivity_less_information">Mindre information</string>
@@ -554,8 +557,8 @@ Modtog en nøgle-besked for en ugyldig protokol-version.
<string name="ThreadRecord_missed_call">Mistet opkald</string>
<string name="ThreadRecord_media_message">Mediebesked</string>
<string name="ThreadRecord_s_is_on_signal">%s er på Signal!</string>
<string name="ThreadRecord_disappearing_messages_disabled">Beskeder med tidsudløb deaktiverét</string>
<string name="ThreadRecord_disappearing_message_time_updated_to_s">Beskeder sat til at udløbe efter %s</string>
<string name="ThreadRecord_disappearing_messages_disabled">Beskeder med tidsudløb deaktiveret</string>
<string name="ThreadRecord_disappearing_message_time_updated_to_s">Beskeder udløber efter %s</string>
<string name="ThreadRecord_safety_number_changed">Sikkerhedsnummer ændret</string>
<string name="ThreadRecord_your_safety_number_with_s_has_changed">Dit identitestsnøgle med %s er ændret</string>
<string name="ThreadRecord_you_marked_verified">Du markerede verificeret</string>
@@ -593,7 +596,7 @@ Modtog en nøgle-besked for en ugyldig protokol-version.
<string name="MmsMessageRecord_bad_encrypted_mms_message">Ugyldig krypteret MMS besked</string>
<string name="MmsMessageRecord_mms_message_encrypted_for_non_existing_session">MMS besked krypteret til en session der ikke findes</string>
<!--MuteDialog-->
<string name="MuteDialog_mute_notifications">Dæmp notifikationer</string>
<string name="MuteDialog_mute_notifications">Mute notifikationer</string>
<!--OutdatedBuildReminder-->
<string name="OutdatedBuildReminder_no_web_browser_installed">Ingen webbrowser installeret!</string>
<!--ApplicationMigrationService-->
@@ -804,7 +807,7 @@ Modtog en nøgle-besked for en ugyldig protokol-version.
<item quantity="other">%d andre</item>
</plurals>
<!--giphy_activity-->
<string name="giphy_activity_toolbar__search_gifs_and_stickers">Søg i GIFs og klistermærker</string>
<string name="giphy_activity_toolbar__search_gifs_and_stickers">Søg i GIF´s og klistermærker</string>
<!--giphy_fragment-->
<string name="giphy_fragment__nothing_found">Fandt ingenting</string>
<!--log_submit_activity-->
@@ -858,21 +861,21 @@ Modtog en nøgle-besked for en ugyldig protokol-version.
<!--prompt_passphrase_activity-->
<string name="prompt_passphrase_activity__unlock">Lås op</string>
<!--prompt_mms_activity-->
<string name="prompt_mms_activity__signal_requires_mms_settings_to_deliver_media_and_group_messages">Signal kræver adgang til MMS-indstillinger for at levere media og gruppebeskeder gennem din teleudbyder. Din enhed gør ikke denne information tilgængelig, hvilket nogle gange er tilfældet for låste enheder og andre begrænsende opsætninger</string>
<string name="prompt_mms_activity__signal_requires_mms_settings_to_deliver_media_and_group_messages">Signal kræver adgang til MMS-indstillinger for at levere medie og gruppebeskeder gennem din teleudbyder. Din enhed gør ikke denne information tilgængelig, hvilket nogle gange er tilfældet for låste enheder og andre begrænsende opsætninger</string>
<string name="prompt_mms_activity__to_send_media_and_group_messages_tap_ok">Klik \"OK\" for at sende multimedie- og gruppebeskeder og udfyld indstillingerne. MMS-indstillingerne for din teleoperatør kan ofte findes ved at søge på \"din operatørs APN\". Du behøver kun gøre dette en gang</string>
<!--profile_create_activity-->
<string name="profile_create_activity__set_later">Udskyd</string>
<string name="profile_create_activity__set_later">Senere</string>
<string name="profile_create_activity__finish">AFSLUT</string>
<string name="profile_create_activity__who_can_see_this_information">Hvem kan se denne information?</string>
<string name="profile_create_activity__your_name">Dit navn</string>
<!--recipient_preferences_activity-->
<string name="recipient_preference_activity__shared_media">Delt medie</string>
<!--recipient_preferences-->
<string name="recipient_preferences__mute_conversation">Dæmp samtale</string>
<string name="recipient_preferences__mute_conversation">Mute samtale</string>
<string name="recipient_preferences__custom_notifications">Brugerdefinerede notifikationer</string>
<string name="recipient_preferences__custom_notifications_settings">Systemindstillinger for notifikatoner</string>
<string name="recipient_preferences__notification_sound">Notifikationslyd</string>
<string name="recipient_preferences__vibrate">Vibrér</string>
<string name="recipient_preferences__vibrate">Vibration</string>
<string name="recipient_preferences__block">Blokér</string>
<string name="recipient_preferences__color">Farve</string>
<string name="recipient_preferences__view_safety_number">Vis sikkerhedsnummer</string>
@@ -932,11 +935,11 @@ Modtog en nøgle-besked for en ugyldig protokol-version.
<string name="arrays__import_export">Importér</string>
<string name="arrays__use_default">Anvend standard</string>
<string name="arrays__use_custom">Anvend tilpasset</string>
<string name="arrays__mute_for_one_hour">Dæmp 1 time</string>
<string name="arrays__mute_for_two_hours">Dæmp 2 timer</string>
<string name="arrays__mute_for_one_day">Dæmp 1 dag</string>
<string name="arrays__mute_for_seven_days">Dæmp 7 dage</string>
<string name="arrays__mute_for_one_year">Dæmp 1 år</string>
<string name="arrays__mute_for_one_hour">Mute 1 time</string>
<string name="arrays__mute_for_two_hours">Mute 2 timer</string>
<string name="arrays__mute_for_one_day">Mute 1 dag</string>
<string name="arrays__mute_for_seven_days">Mute 7 dage</string>
<string name="arrays__mute_for_one_year">Mute 1 år</string>
<string name="arrays__settings_default">Standardindstillinger</string>
<string name="arrays__enabled">Aktiveret</string>
<string name="arrays__disabled">Deaktiverét</string>
@@ -965,8 +968,10 @@ Modtog en nøgle-besked for en ugyldig protokol-version.
<string name="preferences__pref_all_mms_title">Modtag alle MMS</string>
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_text_messages">Brug Signal til alle indgående SMS\'er</string>
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Brug Signal til alle indgående MMS\'er</string>
<string name="preferences__pref_enter_sends_title">\\"Enter\\" sender</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">\\"Enter\\" vil sende beskeden</string>
<string name="preferences__pref_enter_sends_title">[Enter] sender besked</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Tap på [Enter] sender beskeden</string>
<string name="preferences__send_link_previews">Send link eksempelvisning</string>
<string name="preferences__previews_are_supported_for">Eksempelvisning er understøttet for Imgur, Instagram, Reddit og YouTube links</string>
<string name="preferences__choose_identity">Vælg identitet</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Vælg din kontakt fra kontaktlisten</string>
<string name="preferences__change_passphrase">Ændr kodeord</string>
@@ -992,7 +997,7 @@ Modtog en nøgle-besked for en ugyldig protokol-version.
<string name="preferences__three_times">Tre gange</string>
<string name="preferences__five_times">Fire gange</string>
<string name="preferences__ten_times">Ti gange</string>
<string name="preferences__vibrate">Vibrér</string>
<string name="preferences__vibrate">Vibration</string>
<string name="preferences__green">Grøn</string>
<string name="preferences__red">Rød</string>
<string name="preferences__blue">Blå</string>
@@ -1015,15 +1020,15 @@ Modtog en nøgle-besked for en ugyldig protokol-version.
<string name="preferences__mmsc_password">MMSC-kodeord</string>
<string name="preferences__sms_delivery_reports">Leveringsrapport for SMS</string>
<string name="preferences__request_a_delivery_report_for_each_sms_message_you_send">Modtag leveringsrapporter for SMS beskeder du sender</string>
<string name="preferences__automatically_delete_older_messages_once_a_conversation_exceeds_a_specified_length">Slet automatisk ældre beskeder når samtalen overstiger en specificeret længde</string>
<string name="preferences__automatically_delete_older_messages_once_a_conversation_exceeds_a_specified_length">Sletter automatisk ældre beskeder når antallet overstiger det specificerede</string>
<string name="preferences__delete_old_messages">Slet gamle beskeder</string>
<string name="preferences__chats">Chat og medier</string>
<string name="preferences__conversation_length_limit">Grænse samtaler</string>
<string name="preferences__trim_all_conversations_now">Trim alle samtaler nu</string>
<string name="preferences__scan_through_all_conversations_and_enforce_conversation_length_limits">Løb gennem alle samtaler og gennemfør begrænsninger for samtalelængde</string>
<string name="preferences__conversation_length_limit">Grænse for samtaler</string>
<string name="preferences__trim_all_conversations_now">Trim alle samtaler</string>
<string name="preferences__scan_through_all_conversations_and_enforce_conversation_length_limits">Skan alle samtaler og tilpas begrænsninger for samtalelængde</string>
<string name="preferences__linked_devices">Enheder</string>
<string name="preferences__light_theme">Lys</string>
<string name="preferences__dark_theme">Mørk</string>
<string name="preferences__light_theme">Lyst</string>
<string name="preferences__dark_theme">Mørkt</string>
<string name="preferences__appearance">Udseende</string>
<string name="preferences__theme">Tema</string>
<string name="preferences__default">Standard</string>
@@ -1047,7 +1052,7 @@ Modtog en nøgle-besked for en ugyldig protokol-version.
<string name="preferences_chats__message_trimming">Trimning af beskeder</string>
<string name="preferences_advanced__use_system_emoji">Anvend systemets emoji</string>
<string name="preferences_advanced__disable_signal_built_in_emoji_support">Deaktivér Signals indbyggede emoji-understøttelse</string>
<string name="preferences_advanced__relay_all_calls_through_the_signal_server_to_avoid_revealing_your_ip_address">Videresend alle opkald gennem Signal-serveren for at undgå at afsløre din IP-adresse for din kontakt. Dette vil give en dårligere Signalkvalitet</string>
<string name="preferences_advanced__relay_all_calls_through_the_signal_server_to_avoid_revealing_your_ip_address">Videresend alle opkald gennem Signal serveren, for at undgå at afsløre din IP-adresse for din kontakt. Dette vil give en dårligere opkaldskvalitet</string>
<string name="preferences_advanced__always_relay_calls">Videresend altid opkald</string>
<string name="preferences_app_protection__app_access">App tilgang</string>
<string name="preferences_app_protection__communication">Kommunikation</string>
@@ -1068,7 +1073,7 @@ Modtog en nøgle-besked for en ugyldig protokol-version.
<string name="preferences_communication__sealed_sender_display_indicators_description">Vis et status ikon når ´Besked detaljer´ vælges for beskeder som er modtaget, ved brug af sikker afsender</string>
<string name="preferences_communication__sealed_sender_allow_from_anyone">Tillad fra alle</string>
<string name="preferences_communication__sealed_sender_allow_from_anyone_description">Aktiver ´Sikker afsender´ for indgående beskeder fra personer som ikke er kontakter, og som hvem du ikke har delt din profil med</string>
<string name="preferences_communication__sealed_sender_learn_more">r mere</string>
<string name="preferences_communication__sealed_sender_learn_more">s mere</string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->
@@ -1092,7 +1097,7 @@ Modtog en nøgle-besked for en ugyldig protokol-version.
<!--conversation_expiring_on-->
<string name="menu_conversation_expiring_on__messages_expiring">Beskeder der udløber</string>
<!--conversation_insecure-->
<string name="conversation_insecure__invite">Invitér</string>
<string name="conversation_insecure__invite">Invitér kontakt</string>
<!--conversation_list_batch-->
<string name="conversation_list_batch__menu_delete_selected">Slet markeret</string>
<string name="conversation_list_batch__menu_select_all">Markér alle</string>
@@ -1102,17 +1107,17 @@ Modtog en nøgle-besked for en ugyldig protokol-version.
<!--conversation_list_item_view-->
<string name="conversation_list_item_view__contact_photo_image">Kontaktbillede</string>
<string name="conversation_list_item_view__archived">Arkiveret</string>
<string name="conversation_list_item_inbox_zero__inbox_zeeerrro">Indbakke nul</string>
<string name="conversation_list_item_inbox_zero__zip_zilch_zero_nada_nyou_re_all_caught_up">Ingen, nul, slut. Ingen.\nDu er opdateret!</string>
<string name="conversation_list_item_inbox_zero__inbox_zeeerrro">Indbakken er tom</string>
<string name="conversation_list_item_inbox_zero__zip_zilch_zero_nada_nyou_re_all_caught_up">Intet at se her.\nDu er opdateret!</string>
<!--conversation_list_fragment-->
<string name="conversation_list_fragment__fab_content_description">Ny samtale</string>
<string name="conversation_list_fragment__give_your_inbox_something_to_write_home_about_get_started_by_messaging_a_friend">Giv din indbakke noget at skrive hjem om. Kom i gang - skriv til en ven</string>
<!--conversation_secure_verified-->
<string name="conversation_secure_verified__menu_reset_secure_session">Gendan sikker forbindelse</string>
<!--conversation_muted-->
<string name="conversation_muted__unmute">Ophæv dæmpning</string>
<string name="conversation_muted__unmute">Fjern mute</string>
<!--conversation_unmuted-->
<string name="conversation_unmuted__mute_notifications">Dæmp notifikationer</string>
<string name="conversation_unmuted__mute_notifications">Mute notifikationer</string>
<!--conversation-->
<string name="conversation__menu_add_attachment">Vedhæft fil</string>
<string name="conversation__menu_edit_group">Rediger gruppe</string>
@@ -1145,7 +1150,7 @@ Modtog en nøgle-besked for en ugyldig protokol-version.
<item quantity="one">Din version af Signal udløber om %d dage. Tap for at opdatere til den nyeste version</item>
<item quantity="other">Din version af Signal vil udløbe om %d dage. Tap for at opdatere til den nyeste version</item>
</plurals>
<string name="reminder_header_outdated_build_details_today">Din version af Signal udløber i dag. Tap for at opdatere til den seneste version</string>
<string name="reminder_header_outdated_build_details_today">Din version af Signal udløber i dag. Tap for at opdatere til den nyeste version</string>
<string name="reminder_header_expired_build">Din version af Signal er udgået!</string>
<string name="reminder_header_expired_build_details">Beskeder vil ikke længere blive afsendt ordentligt. Tap for at opdatere til den seneste version</string>
<string name="reminder_header_sms_default_title">Anvend som standard SMS-app</string>
@@ -1161,8 +1166,8 @@ Modtog en nøgle-besked for en ugyldig protokol-version.
<string name="reminder_header_service_outage_text">Signal oplever tekniske problemer. Vi arbejder hårdt på at genoprette servicen, så hurtigt som muligt</string>
<!--media_preview-->
<string name="media_preview__save_title">Gem</string>
<string name="media_preview__forward_title">Videresend besked</string>
<string name="media_preview__all_media_title">Alle mediefiler</string>
<string name="media_preview__forward_title">Videresend</string>
<string name="media_preview__all_media_title">Delte mediefiler</string>
<!--media_overview-->
<string name="media_overview_documents_fragment__no_documents_found">Ingen dokumenter</string>
<!--media_preview_activity-->

View File

@@ -255,7 +255,7 @@
<!--DeviceListItem-->
<string name="DeviceListItem_unnamed_device">Unbenanntes Gerät</string>
<string name="DeviceListItem_linked_s">%s gekoppelt</string>
<string name="DeviceListItem_last_active_s">Zuletzt aktiv %s</string>
<string name="DeviceListItem_last_active_s">Zuletzt aktiv: %s</string>
<string name="DeviceListItem_today">Heute</string>
<!--DocumentView-->
<string name="DocumentView_unknown_file">Unbekannte Datei</string>
@@ -284,6 +284,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Tipp-Indikatoren aktivieren</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Tipp-Indikatoren einschalten</string>
<string name="ExperienceUpgradeActivity_no_thanks">Nein, danke</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Einführung von Link-Vorschauen</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Optionale Link-Vorschauen werden nun für einige der beliebtesten Internetsites unterstützt.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Du kannst diese Funktion jederzeit in Signals Einstellungen aus- oder einschalten (»Datenschutz« → »Link-Vorschauen senden«).</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Nachricht wird abgerufen </string>
<!--GcmRefreshJob-->
@@ -761,22 +764,22 @@ Schlüsselaustausch-Nachricht für eine ungültige Protokollversion empfangen</s
<item quantity="one">%d Minute</item>
<item quantity="other">%d Minuten</item>
</plurals>
<string name="expiration_minutes_abbreviated">%d min</string>
<string name="expiration_minutes_abbreviated">%dmin</string>
<plurals name="expiration_hours">
<item quantity="one">%d Stunde</item>
<item quantity="other">%d Stunden</item>
</plurals>
<string name="expiration_hours_abbreviated">%d h</string>
<string name="expiration_hours_abbreviated">%dh</string>
<plurals name="expiration_days">
<item quantity="one">%d Tag</item>
<item quantity="other">%d Tage</item>
</plurals>
<string name="expiration_days_abbreviated">%d d</string>
<string name="expiration_days_abbreviated">%dd</string>
<plurals name="expiration_weeks">
<item quantity="one">%d Woche</item>
<item quantity="other">%d Wochen</item>
</plurals>
<string name="expiration_weeks_abbreviated">%d w</string>
<string name="expiration_weeks_abbreviated">%dw</string>
<!--unverified safety numbers-->
<string name="IdentityUtil_unverified_banner_one">Deine Sicherheitsnummer mit %s hat sich geändert und ist nicht mehr verifiziert</string>
<string name="IdentityUtil_unverified_banner_two">Deine Sicherheitsnummern mit %1$s und %2$s sind nicht mehr verifiziert</string>
@@ -955,6 +958,8 @@ Schlüsselaustausch-Nachricht für eine ungültige Protokollversion empfangen</s
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Signal für alle eingehenden MMS verwenden</string>
<string name="preferences__pref_enter_sends_title">Eingabetaste sendet</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Antippen der Eingabetaste versendet Nachrichten sofort</string>
<string name="preferences__send_link_previews">Link-Vorschauen senden</string>
<string name="preferences__previews_are_supported_for">Vorschauen werden unterstützt für Links von Imgur, Instagram, Reddit und YouTube</string>
<string name="preferences__choose_identity">Kontakt auswählen</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Wähle deinen Kontakt aus der Kontaktliste.</string>
<string name="preferences__change_passphrase">Passphrase ändern</string>
@@ -1025,7 +1030,7 @@ Schlüsselaustausch-Nachricht für eine ungültige Protokollversion empfangen</s
<string name="preferences__read_receipts">Lesebestätigungen</string>
<string name="preferences__if_read_receipts_are_disabled_you_wont_be_able_to_see_read_receipts">Bei deaktivierten Lesebestätigungen wirst du auch die Lesebestätigungen anderer nicht sehen können</string>
<string name="preferences__typing_indicators">Tipp-Indikatoren</string>
<string name="preferences__if_typing_indicators_are_disabled_you_wont_be_able_to_see_typing_indicators">Bei deaktivierten Tipp-Indikatoren wirst du auch die Tipp-Indikatoren anderer nicht sehen können.</string>
<string name="preferences__if_typing_indicators_are_disabled_you_wont_be_able_to_see_typing_indicators">Bei deaktivierten Tipp-Indikatoren wirst du auch die Tipp-Indikatoren anderer nicht sehen können</string>
<string name="preferences__request_keyboard_to_disable_personalized_learning">Tastatur auffordern, personalisiertes Lernen auszuschalten</string>
<string name="preferences_app_protection__blocked_contacts">Blockierte Kontakte</string>
<string name="preferences_chats__when_using_mobile_data">Bei mobiler Datenverbindung</string>
@@ -1053,9 +1058,9 @@ Schlüsselaustausch-Nachricht für eine ungültige Protokollversion empfangen</s
<string name="preferences_notifications__priority">Priorität</string>
<string name="preferences_communication__category_sealed_sender">Vertraulicher Absender</string>
<string name="preferences_communication__sealed_sender_display_indicators">Indikatoren anzeigen</string>
<string name="preferences_communication__sealed_sender_display_indicators_description">Anzeigen eines Statussymbols unter »Nachrichtendetails« bei Nachrichten, die mittels »Vertraulicher Absender« zugestellt wurden.</string>
<string name="preferences_communication__sealed_sender_display_indicators_description">Anzeigen eines Statussymbols unter »Nachrichtendetails« bei Nachrichten, die mittels »Vertraulicher Absender« zugestellt wurden</string>
<string name="preferences_communication__sealed_sender_allow_from_anyone">Von jedem erlauben</string>
<string name="preferences_communication__sealed_sender_allow_from_anyone_description">»Vertraulicher Absender« aktivieren für eingehende Nachrichten von Nichtkontakten und weiterhin Kontakten, mit denen du dein Profil nicht geteilt hast.</string>
<string name="preferences_communication__sealed_sender_allow_from_anyone_description">»Vertraulicher Absender« aktivieren für eingehende Nachrichten von Nichtkontakten und weiterhin Kontakten, mit denen du dein Profil nicht geteilt hast</string>
<string name="preferences_communication__sealed_sender_learn_more">Mehr erfahren</string>
<!--****************************************-->
<!--menus-->
@@ -1238,7 +1243,7 @@ Schlüsselaustausch-Nachricht für eine ungültige Protokollversion empfangen</s
<string name="RegistrationActivity_oh_no">Oh nein!</string>
<string name="RegistrationActivity_registration_of_this_phone_number_will_be_possible_without_your_registration_lock_pin_after_seven_days_have_passed">Ohne deine PIN für die Registrierungssperre wird die Registrierung dieser Rufnummer erst nach Ablauf von 7 Tagen seit ihrer letzten Aktivität auf Signal möglich sein. Es verbleiben noch %d Tage.</string>
<string name="RegistrationActivity_registration_lock_pin">PIN für Registrierungssperre</string>
<string name="RegistrationActivity_this_phone_number_has_registration_lock_enabled_please_enter_the_registration_lock_pin">Für diese Rufnummer ist die Registrierungssperre aktiviert. Bitte gib die PIN für die Registrierungssperre ein.</string>
<string name="RegistrationActivity_this_phone_number_has_registration_lock_enabled_please_enter_the_registration_lock_pin">Für diese Rufnummer ist eine Registrierungssperre aktiviert. Bitte gib die PIN für die Registrierungssperre ein.</string>
<string name="RegistrationLockDialog_registration_lock_is_enabled_for_your_phone_number">Für deine Rufnummer ist die Registrierungssperre aktiviert. Damit du sie nicht vergisst, wird dich Signal regelmäßig nach der PIN für die Registrierungssperre fragen.</string>
<string name="RegistrationLockDialog_i_forgot_my_pin">Ich habe meine PIN vergessen.</string>
<string name="RegistrationLockDialog_forgotten_pin">PIN vergessen?</string>

View File

@@ -4,7 +4,7 @@
<string name="yes">Ναι</string>
<string name="no">Όχι</string>
<string name="delete">Διαγραφή</string>
<string name="please_wait">Παρακαλώ περίμενε...</string>
<string name="please_wait">Παρακαλώ περιμένετε...</string>
<string name="save">Αποθήκευση</string>
<!--AbstractNotificationBuilder-->
<string name="AbstractNotificationBuilder_new_message">Νέο μήνυμα</string>
@@ -153,6 +153,7 @@
<string name="ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video">Το Signal χρειάζεται τα δικαιώματα Κάμερας για να μπορούμε να τραβήξουμε φωτογραφίες και βίντεο, αλλά αυτά δεν έχουν δοθεί μόνιμα. Παρακαλώ πήγαινε στις ρυθμίσεις εφαρμογών, επέλεξε τα \"Δικαιώματα\", και ενεργοποίησε την \"Κάμερα\".</string>
<string name="ConversationActivity_signal_needs_camera_permissions_to_take_photos_or_video">Το Signal χρειάζεται τα δικαιώματα Κάμερας για να τραβήξει φωτογραφίες ή βίντεο</string>
<string name="ConversationActivity_quoted_contact_message">%1$s %2$s</string>
<string name="ConversationActivity_signal_cannot_sent_sms_mms_messages_because_it_is_not_your_default_sms_app">Το Signal δεν μπορεί να στείλει μηνύματα SMS/MMS επειδή δεν είναι η προκαθορισμένη εφαρμογή για SMS. Θέλετε να το αλλάξετε στις ρυθμίσεις Android;</string>
<string name="ConversationActivity_yes">Ναι</string>
<string name="ConversationActivity_no">Όχι</string>
<!--ConversationAdapter-->
@@ -275,8 +276,15 @@
<string name="ExperienceUpgradeActivity_ready_for_your_closeup">Είσαι έτοιμος/η για φωτογράφιση;</string>
<string name="ExperienceUpgradeActivity_now_you_can_share_a_profile_photo_and_name_with_friends_on_signal">Τώρα μπορείς να μοιραστείς μια φωτογραφία προφίλ και ένα όνομα με τους φίλους σου στο Signal</string>
<string name="ExperienceUpgradeActivity_signal_profiles_are_here">Ήρθαν τα προφίλ Signal</string>
<string name="ExperienceUpgradeActivity_introducing_typing_indicators">Καλωσορίζουμε τους δείκτες πληκτρολόγησης.</string>
<string name="ExperienceUpgradeActivity_now_you_can_optionally_see_and_share_when_messages_are_being_typed">Τώρα, μπορείτε προαιρετικά να βλέπετε και να μοιράζεστε το πότε πληκτρολογούνται μηνύματα.</string>
<string name="ExperienceUpgradeActivity_would_you_like_to_enable_them_now">Θέλετε να το ενεργοποιήσετε τώρα;</string>
<string name="ExperienceUpgradeActivity_typing_ui_title">Οι δείκτες πληκτρολόγησης είναι εδώ</string>
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Ενεργοποίηση δεικτών πληκτρολόγησης</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Ενεργοποίηση δεικτών πληκτρολόγησης</string>
<string name="ExperienceUpgradeActivity_no_thanks">Όχι, ευχαριστώ</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Λαμβάνουμε ένα μήνυμα...</string>
<!--GcmRefreshJob-->
<string name="GcmRefreshJob_Permanent_Signal_communication_failure">Μόνιμη αποτυχία επικοινωνίας του Signal!</string>
<string name="GcmRefreshJob_Signal_was_unable_to_register_with_Google_Play_Services">Το Signal δεν μπόρεσε να εγγραφτεί στις Υπηρεσίες Google Play. Τα μηνύματα και οι κλήσεις του Signal έχουν απενεργοποιηθεί. Παρακαλώ προσπάθησε να επανεγγραφτείς στις Ρυθμίσεις &gt; Προχωρημένες Ρυθμίσεις.</string>
@@ -330,6 +338,7 @@
<string name="InviteActivity_no_app_to_share_to">Φαινεται πως δεν έχεις κάποια εφαρμογή στην οποία μπορείς να μοιραστείς.</string>
<string name="InviteActivity_friends_dont_let_friends_text_unencrypted">Οι φίλοι δεν αφήνουν τους φίλους να συνομιλούν χωρίς κρυπτογράφηση.</string>
<!--Job-->
<string name="Job_working_in_the_background">Εργαζόμαστε στο παρασκήνιο...</string>
<!--MessageDetailsRecipient-->
<string name="MessageDetailsRecipient_failed_to_send">Αποτυχία αποστολής</string>
<string name="MessageDetailsRecipient_new_safety_number">Νέος αριθμός ασφαλείας</string>
@@ -366,8 +375,15 @@
<string name="NotificationMmsMessageRecord_downloading_mms_message">Το μήνυμα MMS λαμβάνεται</string>
<string name="NotificationMmsMessageRecord_error_downloading_mms_message">Πρόβλημα κατά τη λήψη μηνύματος MMS, πάτα για να ξαναδοκιμάσουμε</string>
<!--MediaPickerActivity-->
<string name="MediaPickerActivity_send_to">Αποστολή σε %s</string>
<!--MediaPickerItemFragment-->
<string name="MediaPickerItemFragment_tap_to_select">Πατήστε για επιλογή</string>
<plurals name="MediaPickerItemFragment_cant_share_more_than_n_items">
<item quantity="one">Δεν μπορείτε να μοιραστείτε πάνω από %d αντικείμενο.</item>
<item quantity="other">Δεν μπορείτε να μοιραστείτε πάνω από %d αντικείμενα.</item>
</plurals>
<!--MediaSendActivity-->
<string name="MediaSendActivity_add_a_caption">Προσθήκη λεζάντας...</string>
<!--MediaRepository-->
<string name="MediaRepository_all_media">Όλα τα πολυμέσα</string>
<!--MessageRecord-->
@@ -427,6 +443,7 @@
<!--PlayServicesProblemFragment-->
<string name="PlayServicesProblemFragment_the_version_of_google_play_services_you_have_installed_is_not_functioning">Η έκδοση των Υπηρεσιών Google Play που έχεις εγκαταστήσει δε λειτουργεί σωστά. Παρακαλούμε επανεγκατέστησε τις Υπηρεσίες Google Play και δοκίμασε ξανά.</string>
<!--PushNotificationReceiveJob-->
<string name="PushNotificationReceiveJob_retrieving_a_message">Λαμβάνουμε ένα μήνυμα...</string>
<!--RatingManager-->
<string name="RatingManager_rate_this_app">Βαθμολόγησε αυτή την εφαρμογή</string>
<string name="RatingManager_if_you_enjoy_using_this_app_please_take_a_moment">Αν σου αρέσει αυτή η εφαρμογή, βοήθησέ μας βαθμολογώντας την - δε θα σου πάρει πολύ χρόνο.</string>
@@ -497,6 +514,7 @@
<string name="SearchFragment_header_contacts">Επαφές</string>
<string name="SearchFragment_header_messages">Μηνύματα</string>
<!--SendJob-->
<string name="SendJob_sending_a_message">Στέλνουμε ένα μήνυμα...</string>
<!--SharedContactDetailsActivity-->
<string name="SharedContactDetailsActivity_add_to_contacts">Προσθήκη στις επαφές</string>
<string name="SharedContactDetailsActivity_invite_to_signal">Πρόσκληση στο Signal</string>
@@ -631,6 +649,10 @@
<string name="SingleRecipientNotificationBuilder_signal">Signal</string>
<string name="SingleRecipientNotificationBuilder_new_message">Νέο μήνυμα</string>
<!--TransferControlView-->
<plurals name="TransferControlView_n_items">
<item quantity="one">%d αντικείμενο</item>
<item quantity="other">%d αντικείμενα</item>
</plurals>
<!--UnauthorizedReminder-->
<string name="UnauthorizedReminder_device_no_longer_registered">Η συσκευή δεν είναι πλέον εγγεγραμμένη</string>
<string name="UnauthorizedReminder_this_is_likely_because_you_registered_your_phone_number_with_Signal_on_a_different_device">Αυτό συνέβη μάλλον επειδή καταχώρησες τον αριθμό τηλεφώνου σου στο Signal σε άλλη συσκευή. Πάτησε για να επανεγγραφτείς.</string>
@@ -1008,6 +1030,8 @@
<string name="preferences__incognito_keyboard">Κρυφό πληκτρολόγιο</string>
<string name="preferences__read_receipts">Αποδεικτικά ανάγνωσης</string>
<string name="preferences__if_read_receipts_are_disabled_you_wont_be_able_to_see_read_receipts">Αν τα αποδεικτικά ανάγνωσης είναι απενεργοποιημένα, δε θα μπορείς να βλέπεις αποδεικτικά ανάγνωσης από άλλους/ες.</string>
<string name="preferences__typing_indicators">Δείκτες πληκτρολόγησης</string>
<string name="preferences__if_typing_indicators_are_disabled_you_wont_be_able_to_see_typing_indicators">Αν οι δείκτες πληκτρολόγησης είναι απενεργοποιημένοι, δεν θα μπορείτε να δείτε δείκτες πληκτρολόγησης από άλλους/ες.</string>
<string name="preferences__request_keyboard_to_disable_personalized_learning">Αίτηση πληκτρολογίου για να απενεργοποιηθεί η προσωποποιημένη εκμάθηση</string>
<string name="preferences_app_protection__blocked_contacts">Μπλοκαρισμένες επαφές</string>
<string name="preferences_chats__when_using_mobile_data">Όταν χρησιμοποιούνται δεδομένα</string>
@@ -1034,6 +1058,9 @@
<string name="preferences_events__contact_joined_signal">Η επαφή εγκατέστησε το Signal</string>
<string name="preferences_notifications__priority">Προτεραιότητα</string>
<string name="preferences_communication__category_sealed_sender">Προστατευμένος Αποστολέας</string>
<string name="preferences_communication__sealed_sender_display_indicators">Προβολή δεικτών</string>
<string name="preferences_communication__sealed_sender_display_indicators_description">Εμφάνιση εικονιδίου κατάστασης όταν επιλέγετε τις \"¨Λεπτομέρειες μηνύματος\" για μηνύματα που παραδίδονται χρησιμοποιώντας τον προστατευμένο αποστολέα.</string>
<string name="preferences_communication__sealed_sender_allow_from_anyone">Να επιτρέπεται από οποιονδήποτε</string>
<string name="preferences_communication__sealed_sender_allow_from_anyone_description">Ενεργοποιήστε τον προστατευμένο αποστολέα για εισερχόμενα μηνύματα από άτομα που δεν βρίσκονται στις επαφές σας και άτομα με τα οποία δεν έχετε μοιραστεί το προφίλ σας.</string>
<string name="preferences_communication__sealed_sender_learn_more">Μάθετε περισσότερα</string>
<!--****************************************-->
@@ -1168,6 +1195,7 @@
<string name="preferences_chats__create_backup">Δημιουργία αντίγραφου ασφαλείας</string>
<string name="RegistrationActivity_enter_backup_passphrase">Εισαγωγή φράσης-κλειδιού αντίγραφου ασφαλείας</string>
<string name="RegistrationActivity_restore">Επαναφορά</string>
<string name="RegistrationActivity_backup_failure_downgrade">Δεν μπορούμε να εισάγουμε αντίγραφα ασφαλείας από νεότερες εκδόσεις του Signal</string>
<string name="RegistrationActivity_incorrect_backup_passphrase">Λάθος φράση-κλειδί αντίγραφου ασφαλείας</string>
<string name="RegistrationActivity_checking">Έλεγχος...</string>
<string name="RegistrationActivity_d_messages_so_far">%d μηνύματα μέχρι τώρα...</string>

1094
res/values-eo/strings.xml Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -284,6 +284,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Activar indicador de tecleo</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Activar indicador de tecleo</string>
<string name="ExperienceUpgradeActivity_no_thanks">No, gracias</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">¡Por fin previsualizaciones de enlaces!</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Ahora están disponibles las previsualizaciones de enlaces hacia los sitios más populares de Internet.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Puedes desactivar o activar esta opción en cualquier momento desde el menú de configuración de Signal (Privacidad &gt; Enviar previsualizaciones).</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Recuperando un mensaje...</string>
<!--GcmRefreshJob-->
@@ -966,6 +969,8 @@ Se recibió un mensaje de intercambio de claves para una versión no válida del
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Usar Signal para todos los mensajes multimedia entrantes</string>
<string name="preferences__pref_enter_sends_title">Enviar al tocar «Intro»</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Los mensajes se enviarán al pulsar la tecla Intro.</string>
<string name="preferences__send_link_previews">Enviar previsualizaciones</string>
<string name="preferences__previews_are_supported_for">Las previsualizaciones funcionan con enlaces de Imgur, Instagram, Reddit y YouTube.</string>
<string name="preferences__choose_identity">Seleccionar identidad</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Selecciona tu propio contacto de la lista de contactos.</string>
<string name="preferences__change_passphrase">Cambiar clave de acceso</string>

View File

@@ -154,6 +154,7 @@
<string name="ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video">Signal vajab ligipääsu kaamerale, et salvestada fotosid ja videosid, kuid see on püsivalt keelatud. Palun ava rakenduse sätete menüü, vali \"Õigused\" ja luba \"Kaamera\".</string>
<string name="ConversationActivity_signal_needs_camera_permissions_to_take_photos_or_video">Signal vajab fotode ja videote salvestamiseks ligipääsu kaamerale</string>
<string name="ConversationActivity_quoted_contact_message">%1$s %2$s</string>
<string name="ConversationActivity_signal_cannot_sent_sms_mms_messages_because_it_is_not_your_default_sms_app">Signal ei saa SMS/MMS sõnumeid saata, kuna see pole sinu vaikimisi SMS-i rakendus. Kas soovid seda muuta oma Androidi seadetes?</string>
<string name="ConversationActivity_yes">Jah</string>
<string name="ConversationActivity_no">Ei</string>
<!--ConversationAdapter-->
@@ -374,7 +375,13 @@
<string name="NotificationMmsMessageRecord_downloading_mms_message">Laadin alla MMS-sõnumit</string>
<string name="NotificationMmsMessageRecord_error_downloading_mms_message">MMS-sõnumi allalaadimisel tekkis viga, koputa uuesti proovimiseks</string>
<!--MediaPickerActivity-->
<string name="MediaPickerActivity_send_to">Saada kohta %s</string>
<!--MediaPickerItemFragment-->
<string name="MediaPickerItemFragment_tap_to_select">Koputa valimiseks</string>
<plurals name="MediaPickerItemFragment_cant_share_more_than_n_items">
<item quantity="one">Sa ei saa jagada rohkem kui %d üksust.</item>
<item quantity="other">Sa ei saa jagada rohkem kui %d üksust.</item>
</plurals>
<!--MediaSendActivity-->
<string name="MediaSendActivity_add_a_caption">Lisa pealkiri...</string>
<!--MediaRepository-->

View File

@@ -349,6 +349,7 @@
<!--MediaPickerActivity-->
<!--MediaPickerItemFragment-->
<!--MediaSendActivity-->
<string name="MediaSendActivity_add_a_caption">یک عنوان اضافه کنید...</string>
<!--MediaRepository-->
<string name="MediaRepository_all_media">تمام رسانه ها</string>
<!--MessageRecord-->

View File

@@ -154,7 +154,7 @@
<string name="ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video">Signal tarvitsee lupaa käyttää laitteesi kameraa kuvien ja videoiden ottamista varten, mutta tämä käyttöoikeus on pysyvästi evätty Signalilta. Voit muuttaa tätä menemällä sovellusten asetuksiin, valitsemalla \"Sovelluksen käyttöoikeudet\" ja laittamalla päälle \"Kamera\".</string>
<string name="ConversationActivity_signal_needs_camera_permissions_to_take_photos_or_video">Signal tarvitsee kameran käyttöoikeutta kuvien ja videoiden ottamista varten.</string>
<string name="ConversationActivity_quoted_contact_message">%1$s %2$s</string>
<string name="ConversationActivity_signal_cannot_sent_sms_mms_messages_because_it_is_not_your_default_sms_app">Signal ei voi lähettää SMS/MMS-viestejä, koska se ei ole oletus tekstiviestisovellus. Haluatko muuttaa tätä Android-asetuksissa?</string>
<string name="ConversationActivity_signal_cannot_sent_sms_mms_messages_because_it_is_not_your_default_sms_app">Signal ei voi lähettää SMS/MMS-viestejä, koska se ei ole oletus tekstiviestisovellus. Haluatko muuttaa tätä Androidin asetuksissa?</string>
<string name="ConversationActivity_yes">Kyllä</string>
<string name="ConversationActivity_no">Ei</string>
<!--ConversationAdapter-->
@@ -284,6 +284,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Ota käyttöön kirjoitustilaindikaattori</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Ota käyttöön kirjoitustilaindikaattori</string>
<string name="ExperienceUpgradeActivity_no_thanks">Ei kiitos</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Esittelemme linkkien esikatselukuvat.</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Linkkien esikatselukuvat ovat valinnaisia ja niitä tuetaan nyt joillakin Internetin suosituimmista sivustoista.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Voit poistaa tämän ominaisuuden käytöstä tai ottaa sen käyttöön milloin tahansa Signalin asetuksissa (Yksityisyys &gt; Lähetä esikatselukuva linkeistä).</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Haetaan viestiä...</string>
<!--GcmRefreshJob-->
@@ -960,6 +963,8 @@ Vastaanotetiin avaintenvaihtoviesti, joka kuuluu väärälle protokollaversiolle
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Käytä Signalia kaikkiin saapuviin multimediaviesteihin</string>
<string name="preferences__pref_enter_sends_title">Rivinvaihto lähettää</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Rivinvaihdon painallus lähettää viestin</string>
<string name="preferences__send_link_previews">Lähetä esikatselukuva linkeistä</string>
<string name="preferences__previews_are_supported_for">Esikatselu tukee sivustoja Imgur, Instagram, Reddit ja YouTube.</string>
<string name="preferences__choose_identity">Valitse identiteetti</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Valitse yhteystieto osoitekirjasta.</string>
<string name="preferences__change_passphrase">Salalauseen vaihto</string>

View File

@@ -154,6 +154,7 @@
<string name="ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video">Signal a besoin de lautorisation Appareil photo afin de prendre des photos ou des vidéos, mais elle a été refusée définitivement. Veuillez accéder au menu des paramètres des applis, sélectionner Autorisations et activer Appareil photo.</string>
<string name="ConversationActivity_signal_needs_camera_permissions_to_take_photos_or_video">Signal a besoin de lautorisation Appareil photo pour prendre des photos ou des vidéos</string>
<string name="ConversationActivity_quoted_contact_message">%1$s %2$s</string>
<string name="ConversationActivity_signal_cannot_sent_sms_mms_messages_because_it_is_not_your_default_sms_app">Signal ne peut ni envoyer de textos ni de messages multimédias, car ce nest pas votre appli de textos par défaut. Souhaitez-vous changer cela dans vos paramètres Android?</string>
<string name="ConversationActivity_yes">Oui</string>
<string name="ConversationActivity_no">Non</string>
<!--ConversationAdapter-->
@@ -283,6 +284,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Activer les indicateurs de saisie</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Activer les indicateurs de saisie</string>
<string name="ExperienceUpgradeActivity_no_thanks">Non merci</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Les aperçus de liens sont arrivés.</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Les aperçus facultatifs de liens sont maintenant pris en charge pour certains des sites les plus populaires dInternet.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Vous pouvez désactiver ou activer cette fonction en tout temps dans vos paramètres de Signal (Confidentialité &gt; Envoyer des aperçus de liens).</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Récupération dun message…</string>
<!--GcmRefreshJob-->
@@ -374,7 +378,13 @@
<string name="NotificationMmsMessageRecord_downloading_mms_message">Téléchargement du message multimédia</string>
<string name="NotificationMmsMessageRecord_error_downloading_mms_message">Erreur de téléchargement du message multimédia. Touchez pour ressayer</string>
<!--MediaPickerActivity-->
<string name="MediaPickerActivity_send_to">Envoyer à %s</string>
<!--MediaPickerItemFragment-->
<string name="MediaPickerItemFragment_tap_to_select">Touchez pour sélectionner</string>
<plurals name="MediaPickerItemFragment_cant_share_more_than_n_items">
<item quantity="one">Vous ne pouvez pas partager plus d%d élément.</item>
<item quantity="other">Vous ne pouvez pas partager plus de %d éléments.</item>
</plurals>
<!--MediaSendActivity-->
<string name="MediaSendActivity_add_a_caption">Ajouter un légende…</string>
<!--MediaRepository-->
@@ -749,7 +759,7 @@ Vous avez reçu un message déchange de clés pour une version de protocole i
<string name="experience_upgrade_preference_fragment__optionally_see_and_share_when_messages_have_been_read">Facultativement, voir et partager lorsque les messages ont été lus</string>
<string name="experience_upgrade_preference_fragment__enable_read_receipts">Activer les accusés de lecture</string>
<!--expiration-->
<string name="expiration_off">Désactivé</string>
<string name="expiration_off">Désactivés</string>
<plurals name="expiration_seconds">
<item quantity="one">%d seconde</item>
<item quantity="other">%d secondes</item>
@@ -953,6 +963,8 @@ Vous avez reçu un message déchange de clés pour une version de protocole i
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Utiliser Signal pour tous les messages multimédias entrants</string>
<string name="preferences__pref_enter_sends_title">La touche Entrée envoie</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Appuyer sur la touche Entrée enverra les textos</string>
<string name="preferences__send_link_previews">Envoyer des aperçus de liens</string>
<string name="preferences__previews_are_supported_for">Les aperçus sont pris en charge pour les liens Imgur, Instagram, Reddit et YouTube.</string>
<string name="preferences__choose_identity">Choisir une identité</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Choisissez votre entrée de contact dans la liste des contacts.</string>
<string name="preferences__change_passphrase">Changer la phrase de passe</string>

View File

@@ -140,6 +140,7 @@
<string name="ConversationActivity_unblock_this_contact_question">Desbloquear este contacto?</string>
<string name="ConversationActivity_unblock_this_group_question">Desbloquear este grupo?</string>
<string name="ConversationActivity_you_will_once_again_be_able_to_receive_messages_and_calls_from_this_contact">Volverá ser posible que recibas mensaxes e chamadas deste contacto.</string>
<string name="ConversationActivity_unblock_this_group_description">Os membros existentes poderán engadirte ao grupo de novo.</string>
<string name="ConversationActivity_unblock">Desbloquear</string>
<string name="ConversationActivity_attachment_exceeds_size_limits">O anexo excede o límite para o tipo de mensaxe que estás a enviar.</string>
<string name="ConversationActivity_quick_camera_unavailable">Cámara non dispoñible</string>
@@ -153,6 +154,7 @@
<string name="ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video">Signal necesita permiso para acceder á cámara e poder tirar fotografías, pero foi denegado de forma permanente. Vai aos axustes da aplicación, selecciona \"Permisos\" e activa \"Cámara\".</string>
<string name="ConversationActivity_signal_needs_camera_permissions_to_take_photos_or_video">Signal necesita permiso para acceder á cámara e tirar fotografías ou facer vídeos.</string>
<string name="ConversationActivity_quoted_contact_message">%1$s %2$s</string>
<string name="ConversationActivity_signal_cannot_sent_sms_mms_messages_because_it_is_not_your_default_sms_app">Signal non pode enviar SMS nin MMS porque non é a túa aplicación predefinida de SMS. Gustaríache cambiar isto nos axustes de Android?</string>
<string name="ConversationActivity_yes">Si</string>
<string name="ConversationActivity_no">Non</string>
<!--ConversationAdapter-->
@@ -275,8 +277,18 @@
<string name="ExperienceUpgradeActivity_ready_for_your_closeup">Disposto/a a un primeiro plano?</string>
<string name="ExperienceUpgradeActivity_now_you_can_share_a_profile_photo_and_name_with_friends_on_signal">Agora podes compartir un nome e fotografía de perfil coas túas amizades en Signal</string>
<string name="ExperienceUpgradeActivity_signal_profiles_are_here">Os perfís de Signal xa están aquí</string>
<string name="ExperienceUpgradeActivity_introducing_typing_indicators">Indicadores de escritura.</string>
<string name="ExperienceUpgradeActivity_now_you_can_optionally_see_and_share_when_messages_are_being_typed">Agora, opcionalmente, podes ver e compartir cando as mensaxes están a ser escritas.</string>
<string name="ExperienceUpgradeActivity_would_you_like_to_enable_them_now">Queres habilitalos agora?</string>
<string name="ExperienceUpgradeActivity_typing_ui_title">Xa temos aquí os indicadores de escritura</string>
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Habilita os indicadores de escritura</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Activa os indicadores de escritura</string>
<string name="ExperienceUpgradeActivity_no_thanks">Non, grazas</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Previsualizacións das ligazóns.</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">As previsualizacións das ligazóns estás dispoñibles para algúns dos sitios máis populares da rede.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Podes habilitar ou deshabilitar esta funcionalidade en calquera momento nos axustes de Signal (Privacidade &gt; Enviar previsualizacións das ligazóns).</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Recuperando unha mensaxe...</string>
<!--GcmRefreshJob-->
<string name="GcmRefreshJob_Permanent_Signal_communication_failure">Erro de comunicación permanente!</string>
<string name="GcmRefreshJob_Signal_was_unable_to_register_with_Google_Play_Services">Non foi posible rexistrar Signal con Servizos de Google Play. As mensaxes e chamadas de Signal foron desactivadas; tenta volver facer o rexistro en Axustes&gt;Avanzado.</string>
@@ -329,6 +341,7 @@
<string name="InviteActivity_no_app_to_share_to">Semella que non hai ningunha que permita compartir.</string>
<string name="InviteActivity_friends_dont_let_friends_text_unencrypted">Non manteñas coas túas amizades conversas sen cifrar.</string>
<!--Job-->
<string name="Job_working_in_the_background">Traballando en segundo plano...</string>
<!--MessageDetailsRecipient-->
<string name="MessageDetailsRecipient_failed_to_send">Erro ao enviar</string>
<string name="MessageDetailsRecipient_new_safety_number">Novo número de seguranza</string>
@@ -365,8 +378,15 @@
<string name="NotificationMmsMessageRecord_downloading_mms_message">Descargando mensaxe MMS</string>
<string name="NotificationMmsMessageRecord_error_downloading_mms_message">Erro ao descargar a mensaxe MMS, toca para volver tentar</string>
<!--MediaPickerActivity-->
<string name="MediaPickerActivity_send_to">Enviar a %s</string>
<!--MediaPickerItemFragment-->
<string name="MediaPickerItemFragment_tap_to_select">Toca para seleccionar</string>
<plurals name="MediaPickerItemFragment_cant_share_more_than_n_items">
<item quantity="one">Non podes compartir máis de %d elemento.</item>
<item quantity="other">Non podes compartir máis de %d elementos.</item>
</plurals>
<!--MediaSendActivity-->
<string name="MediaSendActivity_add_a_caption">Engadir un título...</string>
<!--MediaRepository-->
<string name="MediaRepository_all_media">Ficheiros multimedia</string>
<!--MessageRecord-->
@@ -427,6 +447,7 @@
<!--PlayServicesProblemFragment-->
<string name="PlayServicesProblemFragment_the_version_of_google_play_services_you_have_installed_is_not_functioning">A versión de Servizos de Google Play que tes instalada non funciona correctamente. Volve instalala e proba de novo.</string>
<!--PushNotificationReceiveJob-->
<string name="PushNotificationReceiveJob_retrieving_a_message">Recuperando unha mensaxe...</string>
<!--RatingManager-->
<string name="RatingManager_rate_this_app">Valorar esta app</string>
<string name="RatingManager_if_you_enjoy_using_this_app_please_take_a_moment">Se realmente che gusta esta aplicación, dedícalle, por favor, un intre a valorala.</string>
@@ -444,6 +465,7 @@
<string name="RecipientPreferenceActivity_unblock_this_contact_question">Desbloquear este contacto?</string>
<string name="RecipientPreferenceActivity_you_will_once_again_be_able_to_receive_messages_and_calls_from_this_contact">Volverá ser posible que recibas mensaxes e chamadas deste contacto.</string>
<string name="RecipientPreferenceActivity_unblock_this_group_question">Desbloquear este grupo?</string>
<string name="RecipientPreferenceActivity_unblock_this_group_description">Os membros existentes poderán engadirte ao grupo de novo.</string>
<string name="RecipientPreferenceActivity_error_leaving_group">Erro ao abandonar o grupo</string>
<string name="RecipientPreferenceActivity_unblock">Desbloquear</string>
<string name="RecipientPreferenceActivity_enabled">Activado</string>
@@ -484,9 +506,13 @@
<string name="RegistrationActivity_no_browser">Non é posible abrir esta ligazón. Non se atopou navegador ningún.</string>
<string name="RegistrationActivity_more_information">Máis información</string>
<string name="RegistrationActivity_less_information">Menos información</string>
<string name="RegistrationActivity_signal_needs_access_to_your_contacts_and_media_in_order_to_connect_with_friends">Signal necesita acceder aos teus contacto e ficheiros multimedia para contactar coas túas amizades, intercambiar mensaxes e facer chamadas seguras</string>
<string name="RegistrationActivity_signal_needs_access_to_your_contacts_and_media_in_order_to_connect_with_friends">Signal necesita acceder aos teus contactos e ficheiros multimedia para contactar coas túas amizades, intercambiar mensaxes e facer chamadas seguras</string>
<string name="RegistrationActivity_unable_to_connect_to_service">Non é posible contactar co servizo. Comproba a túa conexión de rede e téntao de novo.</string>
<string name="RegistrationActivity_to_easily_verify_your_phone_number_signal_can_automatically_detect_your_verification_code">Para verificar dun xeito sinxelo o teu número, Signal pode detectar automaticamente o teu código de verificación se permites que acceda ás SMS.</string>
<plurals name="RegistrationActivity_debug_log_hint">
<item quantity="one">Estás a %d pasos de enviar un informe de depuración.</item>
<item quantity="other">Estás a %d pasos de enviar un informe de depuración.</item>
</plurals>
<!--ScribbleActivity-->
<string name="ScribbleActivity_save_failure">Erro ao gardar os cambios na imaxe</string>
<!--Search-->
@@ -621,6 +647,7 @@
<string name="QuickResponseService_problem_sending_message">Problema ao enviar a mensaxe!</string>
<!--SaveAttachmentTask-->
<string name="SaveAttachmentTask_saved_to">Gardado en %s</string>
<string name="SaveAttachmentTask_saved">Gardado</string>
<!--SearchToolbar-->
<string name="SearchToolbar_search">Procurar</string>
<string name="SearchToolbar_search_for_conversations_contacts_and_messages">Buscar nas conversas, contactos e mensaxes</string>
@@ -630,6 +657,10 @@
<string name="SingleRecipientNotificationBuilder_signal">Signal</string>
<string name="SingleRecipientNotificationBuilder_new_message">Nova mensaxe</string>
<!--TransferControlView-->
<plurals name="TransferControlView_n_items">
<item quantity="one">%d elemento</item>
<item quantity="other">%d elementos.</item>
</plurals>
<!--UnauthorizedReminder-->
<string name="UnauthorizedReminder_device_no_longer_registered">Dispositivo xa non rexistrado</string>
<string name="UnauthorizedReminder_this_is_likely_because_you_registered_your_phone_number_with_Signal_on_a_different_device">Probablemente isto é así porque rexistraches o teu número de teléfono en Signal nun dispositivo diferente. Toca para volver facer o rexistro.</string>
@@ -938,6 +969,8 @@
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Utilizar Signal para todas as mensaxes multimedia recibidas</string>
<string name="preferences__pref_enter_sends_title">Tecla Intro para enviar</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Ao tocar na tecla Intro enviaranse as mensaxes</string>
<string name="preferences__send_link_previews">Enviar previsualizacións das ligazóns.</string>
<string name="preferences__previews_are_supported_for">Admítense previsualizacións de Imgur, Instagram, Reddit e YouTube</string>
<string name="preferences__choose_identity">Elixir identidade</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Elixe os contactos da túa listaxe.</string>
<string name="preferences__change_passphrase">Cambiar frase de acceso</string>
@@ -1007,6 +1040,8 @@
<string name="preferences__incognito_keyboard">Teclado de incógnito</string>
<string name="preferences__read_receipts">Confirmacións de lectura</string>
<string name="preferences__if_read_receipts_are_disabled_you_wont_be_able_to_see_read_receipts">Se desactivas as confirmacións de lectura, non poderás ver as confirmacións dos demais.</string>
<string name="preferences__typing_indicators">Indicador de escritura</string>
<string name="preferences__if_typing_indicators_are_disabled_you_wont_be_able_to_see_typing_indicators">Se os indicadores de escritura están desactivados non verás cando outras persoas está a escribir.</string>
<string name="preferences__request_keyboard_to_disable_personalized_learning">Solicitude de teclado para desactivar a aprendizaxe personalizada</string>
<string name="preferences_app_protection__blocked_contacts">Contactos bloqueados</string>
<string name="preferences_chats__when_using_mobile_data">Usando datos móbiles</string>
@@ -1032,6 +1067,11 @@
<string name="preferences_chats__message_text_size">Tamaño da fonte</string>
<string name="preferences_events__contact_joined_signal">Un contacto únese a Signal</string>
<string name="preferences_notifications__priority">Prioridade</string>
<string name="preferences_communication__category_sealed_sender">Remitente selado</string>
<string name="preferences_communication__sealed_sender_display_indicators">Indicadores na pantalla</string>
<string name="preferences_communication__sealed_sender_display_indicators_description">Mostra unha icona de estado cando seleccionas \"Detalles da mensaxe\" nas mensaxes que foron entregadas utilizando o remitente selado.</string>
<string name="preferences_communication__sealed_sender_allow_from_anyone">Permitir de calquera</string>
<string name="preferences_communication__sealed_sender_allow_from_anyone_description">Activa o remitente selado para as mensaxes entrantes de persoas que non estean nos teus contactos ou con aquelas coas que non compartiras o teu perfil.</string>
<string name="preferences_communication__sealed_sender_learn_more">Saber máis</string>
<!--****************************************-->
<!--menus-->

View File

@@ -285,6 +285,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Gépelésindikátor engedélyezése</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Gépelésindikátor bekapcsolása</string>
<string name="ExperienceUpgradeActivity_no_thanks">Nem, köszönöm</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Bemutatjuk a hivatkozások előnézeti képe szolgáltatást.</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">A hivatkozásokhoz opcionálisan engedélyezhető előnézeti képeket az internet legnépszerűbb oldalaira mutató linkekhez veheted igénybe.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">A funkció engedélyezését vagy letiltását a Signal beállításaiban teheted meg (Adatvédelem &gt; Hivatkozások előnézeti képének küldése)</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Üzenet letöltése...</string>
<!--GcmRefreshJob-->
@@ -969,6 +972,8 @@ Kulcs-csere üzenet érkezett érvénytelen protokoll verzióhoz.
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Signal használata minden bejövő multimédia üzenethez</string>
<string name="preferences__pref_enter_sends_title">Küldés az Enter lenyomásával</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Az Enter billentyű megnyomása elküldi a szöveges üzeneteket</string>
<string name="preferences__send_link_previews">Hivatkozások előnézeti képének küldése</string>
<string name="preferences__previews_are_supported_for">Az előnézeti képek az Imgur, Instagram, Reddit és YouTube szolgáltatásokhoz érhetőek el.</string>
<string name="preferences__choose_identity">Azonosító választása</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Válaszd ki saját névjegyed a névjegyzékből.</string>
<string name="preferences__change_passphrase">Jelmondat megváltoztatása</string>

View File

@@ -154,6 +154,7 @@
<string name="ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video">Signal richiede l\'autorizzazione all\'uso della fotocamera per scattare foto o registrare video, ma è stata negata in modo permanente. Si prega di continuare al menu delle impostazioni dell\'app, selezionare \"Autorizzazioni\" e abilitare \"Fotocamera\".</string>
<string name="ConversationActivity_signal_needs_camera_permissions_to_take_photos_or_video">Signal richiede l\'autorizzazione all\'uso della fotocamera per scattare foto o registrare video</string>
<string name="ConversationActivity_quoted_contact_message">%1$s %2$s</string>
<string name="ConversationActivity_signal_cannot_sent_sms_mms_messages_because_it_is_not_your_default_sms_app">Signal non può inviare SMS/MMS perchè non è la tua app predefinita per sms. Vuoi cambiare questa cosa nelle impostazioni di Android?</string>
<string name="ConversationActivity_yes"></string>
<string name="ConversationActivity_no">No</string>
<!--ConversationAdapter-->
@@ -283,6 +284,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Attiva indicatori di scrittura</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Attiva gli indicatori di scrittura</string>
<string name="ExperienceUpgradeActivity_no_thanks">No grazie</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Ti presentiamo le anteprime dei link.</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Le anteprime facoltative dei link sono ora supportate per alcuni dei siti internet più famosi.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Puoi disattivare o attivare questa funzione in qualsiasi momento nelle impostazioni di Signal (Privacy &gt; Invia anteprime dei link).</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Reperimento di un messaggio...</string>
<!--GcmRefreshJob-->
@@ -375,7 +379,13 @@ I suoi messaggi e le chiamate sono state disabilitate, si prega di provare e ri-
<string name="NotificationMmsMessageRecord_downloading_mms_message">Scarico MMS</string>
<string name="NotificationMmsMessageRecord_error_downloading_mms_message">Errore nello scaricare MMS, premi per riprovare</string>
<!--MediaPickerActivity-->
<string name="MediaPickerActivity_send_to">Invia a %s</string>
<!--MediaPickerItemFragment-->
<string name="MediaPickerItemFragment_tap_to_select">Tocca per selezionare</string>
<plurals name="MediaPickerItemFragment_cant_share_more_than_n_items">
<item quantity="one">Non puoi condividere più di %d elemento.</item>
<item quantity="other">Non puoi condividere più di %d elementi.</item>
</plurals>
<!--MediaSendActivity-->
<string name="MediaSendActivity_add_a_caption">Aggiungi una didascalia...</string>
<!--MediaRepository-->
@@ -955,6 +965,8 @@ Ricevuto un messaggio di scambio chiavi per una versione di protocollo non valid
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Usa Signal per tutti i messaggi multimediali in arrivo</string>
<string name="preferences__pref_enter_sends_title">Spedisci premendo Invio</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Il tasto Invio manderà il messaggio</string>
<string name="preferences__send_link_previews">Invia anteprime dei link</string>
<string name="preferences__previews_are_supported_for">Le anteprime sono supportate per i link di Imgur, Instagram, Reddit e YouTube</string>
<string name="preferences__choose_identity">Scegli identità</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Scegli il tuo contatto dalla rubrica.</string>
<string name="preferences__change_passphrase">Cambia password</string>

View File

@@ -160,6 +160,7 @@
<string name="ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video">Signal צריך את הרשאת המצלמה כדי לצלם תצלומים או וידיאו, אבל היא נדחתה לצמיתות. אנא המשך אל הגדרות היישום, בחר \"הרשאות\" ואפשר את \"מצלמה\".</string>
<string name="ConversationActivity_signal_needs_camera_permissions_to_take_photos_or_video">Signal צריך הרשאות מצלמה כדי לצלם תצלומים או להקליט וידיאו</string>
<string name="ConversationActivity_quoted_contact_message">%1$s%2$s</string>
<string name="ConversationActivity_signal_cannot_sent_sms_mms_messages_because_it_is_not_your_default_sms_app">Signal לא יכול לשלוח הודעות SMS/MMS מאחר שהוא לא יישום המסרונים ברירת המחדל שלך. האם אתה רוצה לשנות זאת בהגדרות Android שלך?</string>
<string name="ConversationActivity_yes">כן</string>
<string name="ConversationActivity_no">לא</string>
<!--ConversationAdapter-->
@@ -311,6 +312,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">אפשר מחווני הקלדה</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">הפעל מחווני הקלדה</string>
<string name="ExperienceUpgradeActivity_no_thanks">לא תודה</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">היכרות עם קדם־תצוגות של קישורים.</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">קדם־תצוגות רשותיות של קישורים נתמכות כעת עבור כמה מהאתרים הפופולריים ביותר באינטרנט.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">אתה יכול להשבית או לאפשר מאפיין זה בכל זמן בהגדרות Signal שלך (פרטיות &gt; שלח קדם־תצוגות של קישורים).</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">מאחזר הודעה...</string>
<!--GcmRefreshJob-->
@@ -410,7 +414,15 @@
<string name="NotificationMmsMessageRecord_downloading_mms_message">מוריד הודעת MMS</string>
<string name="NotificationMmsMessageRecord_error_downloading_mms_message">שגיאה בהורדת הודעת MMS, הקש כדי לנסות שוב</string>
<!--MediaPickerActivity-->
<string name="MediaPickerActivity_send_to">שלח אל %s</string>
<!--MediaPickerItemFragment-->
<string name="MediaPickerItemFragment_tap_to_select">הקש כדי לבחור</string>
<plurals name="MediaPickerItemFragment_cant_share_more_than_n_items">
<item quantity="one">אתה לא יכול לשתף יותר מפריט %d.</item>
<item quantity="two">אתה לא יכול לשתף יותר מן %d פריטים.</item>
<item quantity="many">אתה לא יכול לשתף יותר מן %d פריטים.</item>
<item quantity="other">אתה לא יכול לשתף יותר מן %d פריטים.</item>
</plurals>
<!--MediaSendActivity-->
<string name="MediaSendActivity_add_a_caption">הוסף כיתוב...</string>
<!--MediaRepository-->
@@ -962,7 +974,7 @@
<string name="AndroidManifest__change_passphrase">שנה משפט סיסמה</string>
<string name="AndroidManifest__verify_safety_number">וודא מספר ביטחון</string>
<string name="AndroidManifest__log_submit">הגש יומן תקלים</string>
<string name="AndroidManifest__media_preview">תצוגה מקדימה של מדיה</string>
<string name="AndroidManifest__media_preview">קדם־תצוגה של מדיה</string>
<string name="AndroidManifest__message_details">פרטי הודעה</string>
<string name="AndroidManifest__linked_devices">מכשירים מקושרים</string>
<string name="AndroidManifest__invite_friends">הזמן חברים</string>
@@ -1009,6 +1021,8 @@
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">השתמש ב-Signal עבור כל הודעות המולטימדיה הנכנסות</string>
<string name="preferences__pref_enter_sends_title">מקש Enter שולח</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">לחיצה על מקש Enter תישלח הודעות טקסט</string>
<string name="preferences__send_link_previews">שלח קדם־תצוגות של קישורים</string>
<string name="preferences__previews_are_supported_for">קדם־תצוגות נתמכות עבור קישורים של Imgur, Instagram, Reddit ו־YouTube</string>
<string name="preferences__choose_identity">בחר זהות</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">בחר את כניסת איש הקשר שלך מתוך רשימת אנשי הקשר.</string>
<string name="preferences__change_passphrase">שנה משפט סיסמה</string>
@@ -1210,7 +1224,7 @@
<!--media_overview-->
<string name="media_overview_documents_fragment__no_documents_found">אין מסמכים</string>
<!--media_preview_activity-->
<string name="media_preview_activity__media_content_description">תצוגה מקדימה של מדיה</string>
<string name="media_preview_activity__media_content_description">קדם־תצוגה של מדיה</string>
<!--new_conversation_activity-->
<string name="new_conversation_activity__refresh">רענן</string>
<!--redphone_audio_popup_menu-->

View File

@@ -270,6 +270,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">入力中アイコンを有効にする</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">入力中アイコンを表示する</string>
<string name="ExperienceUpgradeActivity_no_thanks">しません</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">リンクプレビューについて</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">リンクのプレビューは、主要なネットサービスに対応しています。</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">この機能は、Signalの設定プライバシー &gt; リンクプレビューを送る)で有効化できます。</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">メッセージを読み込んでいます...</string>
<!--GcmRefreshJob-->
@@ -360,6 +363,9 @@
<string name="MediaPickerActivity_send_to">%sに送信</string>
<!--MediaPickerItemFragment-->
<string name="MediaPickerItemFragment_tap_to_select">タップで選択</string>
<plurals name="MediaPickerItemFragment_cant_share_more_than_n_items">
<item quantity="other">%d 個を超えるアイテムは共有できません</item>
</plurals>
<!--MediaSendActivity-->
<string name="MediaSendActivity_add_a_caption">キャプション追加...</string>
<!--MediaRepository-->
@@ -923,6 +929,8 @@
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">マルチメディア・メッセージの受信はすべてSignalで行う</string>
<string name="preferences__pref_enter_sends_title">エンターキーで送信</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">エンターキーを押すとテキストメッセージが送信されます</string>
<string name="preferences__send_link_previews">リンクプレビューを送る</string>
<string name="preferences__previews_are_supported_for">リンクプレビューは、次のサービスに対応しています: Imgur, Instagram, Reddit, YouTube</string>
<string name="preferences__choose_identity">認証を選択</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">連絡先リストからあなたの連絡先を選んでください。</string>
<string name="preferences__change_passphrase">パスワードの変更</string>

View File

@@ -312,6 +312,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Įjungti rašymo indikatorius</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Įjungti rašymo indikatorius</string>
<string name="ExperienceUpgradeActivity_no_thanks">Ne, ačiū</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Pristatome nuorodų peržiūras.</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Dabar yra palaikomos pasirinktinos populiariausių svetainių internete nuorodų peržiūros.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Šią ypatybę galite bet kuriuo metu įjungti ar išjungti savo Signal nustatymuose (Privatumas &gt; Siųsti nuorodų peržiūras).</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Atgaunama žinutė...</string>
<!--GcmRefreshJob-->
@@ -1024,6 +1027,8 @@
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Naudoti Signal visoms gaunamosioms multimedijos žinutėms</string>
<string name="preferences__pref_enter_sends_title">Enter (Įvedimo) klavišas išsiunčia</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Enter (Įvedimo) klavišo paspaudimas išsiųs tekstines žinutes</string>
<string name="preferences__send_link_previews">Siųsti nuorodų peržiūras</string>
<string name="preferences__previews_are_supported_for">Peržiūros yra palaikomos Imgur, Instagram, Reddit, ir YouTube nuorodoms</string>
<string name="preferences__choose_identity">Pasirinkti tapatybę</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Pasirinkite kontaktą iš kontaktų sąrašo.</string>
<string name="preferences__change_passphrase">Pakeisti slaptafrazę</string>

View File

@@ -148,7 +148,7 @@
<string name="ConversationActivity_there_is_no_app_available_to_handle_this_link_on_your_device">Du har ingen programmer på denne enheten som kan håndtere denne lenka.</string>
<string name="ConversationActivity_to_send_audio_messages_allow_signal_access_to_your_microphone">Du må gi Signal tilgang til mikrofonen for å kunne sende lydmeldinger.</string>
<string name="ConversationActivity_signal_requires_the_microphone_permission_in_order_to_send_audio_messages">Signal krever tillatelse fra systemet for å kunne bruke mikrofonen, men du har valgt å avslå dette permanent. Gå til «Apper»-menyen på systemet og slå på tillatelsen «Mikrofon».</string>
<string name="ConversationActivity_to_call_s_signal_needs_access_to_your_microphone_and_camera">Signal må ha tilgang til mikrofon og kamera for å kunne ringe «1%s».</string>
<string name="ConversationActivity_to_call_s_signal_needs_access_to_your_microphone_and_camera">Signal må ha tilgang til mikrofon og kamera for å kunne ringe «%s».</string>
<string name="ConversationActivity_signal_needs_the_microphone_and_camera_permissions_in_order_to_call_s">Signal krever tillatelser fra systemet for å kunne ringe 1%s, men du har valgt å avslå minst én av disse permanent. Gå til «Apper»-menyen på systemet og slå på tillatelser for «Mikrofon» og «Kamera».</string>
<string name="ConversationActivity_to_capture_photos_and_video_allow_signal_access_to_the_camera">Du må gi Signal «Kamera»-tillatelse på systemet for å kunne filme og ta bilder.</string>
<string name="ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video">Signal krever tillatelse fra systemet for å kunne ta bilder eller filme, men du har valgt å avslå dette permanent. Gå til «Apper»-menyen på systemet og slå på tillatelsen «Kamera».</string>
@@ -200,7 +200,7 @@
<!--ConversationListActivity-->
<string name="ConversationListActivity_there_is_no_browser_installed_on_your_device">Denne enheten har ingen nettleser installert.</string>
<!--ConversationListFragment-->
<string name="ConversationListFragment_no_results_found_for_s_">Søket «1%s» ga ingen treff.</string>
<string name="ConversationListFragment_no_results_found_for_s_">Ingen resultater funnet for \'%s\'</string>
<plurals name="ConversationListFragment_delete_selected_conversations">
<item quantity="one">Vil du slette valgt samtale?</item>
<item quantity="other">Vil du slette valgte samtaler?</item>
@@ -284,6 +284,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Aktiver skriveindikatorer</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Slå på skriverindikatorer</string>
<string name="ExperienceUpgradeActivity_no_thanks">Nei takk</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Vi presenterer linkforhåndsvisninger.</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Valgfrie linkforhåndsvisninger støttes nå for noen av de mest populære nettstedene på Internett.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Du kan deaktivere eller aktivere denne funksjonen når som helst i innstillingene for Signal (Personvern &gt; Send linkforhåndsvisninger).</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Mottar en melding...</string>
<!--GcmRefreshJob-->
@@ -300,7 +303,7 @@
<string name="GroupCreateActivity_group_name_hint">Gruppenavn</string>
<string name="GroupCreateActivity_actionbar_mms_title">Ny MMS-gruppe</string>
<string name="GroupCreateActivity_contacts_dont_support_push">Du har valgt en kontakt som ikke støtter Signal-grupper. Denne gruppa blir derfor en MMS-gruppe.</string>
<string name="GroupCreateActivity_youre_not_registered_for_signal">Du er ikke registrert for Signal-meldinger og -samtaler. Signal-grupper er derfor slått av. Prøv å registrere programmet på nytt under Innstillinger &gt; Avansert.</string>
<string name="GroupCreateActivity_youre_not_registered_for_signal">Du er ikke registrert for Signal-meldinger og samtaler. Signal-grupper er derfor slått av. Prøv å registrere programmet på nytt under Innstillinger &gt; Avansert.</string>
<string name="GroupCreateActivity_contacts_no_members">Du må ta med minst én person i gruppa.</string>
<string name="GroupCreateActivity_contacts_invalid_number">Et av gruppemedlemmene har et nummer som ikke ble tolket skikkelig. Rett opp eller fjern aktuell kontakt, og prøv igjen.</string>
<string name="GroupCreateActivity_avatar_content_description">Gruppe-avatar</string>
@@ -377,7 +380,13 @@
<!--MediaPickerActivity-->
<string name="MediaPickerActivity_send_to">Send til %s</string>
<!--MediaPickerItemFragment-->
<string name="MediaPickerItemFragment_tap_to_select">Trykk for å velge</string>
<plurals name="MediaPickerItemFragment_cant_share_more_than_n_items">
<item quantity="one">Du kan ikke dele mer enn %d gjenstand.</item>
<item quantity="other">Du kan ikke dele mer enn %d gjenstander.</item>
</plurals>
<!--MediaSendActivity-->
<string name="MediaSendActivity_add_a_caption">Legg til bildetekst…</string>
<!--MediaRepository-->
<string name="MediaRepository_all_media">Alle medier</string>
<!--MessageRecord-->
@@ -427,7 +436,7 @@
<string name="DeviceActivity_signal_needs_the_camera_permission_in_order_to_scan_a_qr_code">Signal krever tillatelse fra systemet for å kunne skanne QR-koder, men du har valgt å avslå dette permanent. Gå til «Apper»-menyen på systemet og slå på tillatelsen «Kamera».</string>
<string name="DeviceActivity_unable_to_scan_a_qr_code_without_the_camera_permission">Du kan ikke skanne en QR-kode når systemet ikke tillater Signal å bruke kameraet</string>
<!--ExpirationDialog-->
<string name="ExpirationDialog_disappearing_messages">Utløptstid for meldinger</string>
<string name="ExpirationDialog_disappearing_messages">Utløpstid for meldinger</string>
<string name="ExpirationDialog_your_messages_will_not_expire">Meldinger går ikke ut på tid.</string>
<string name="ExpirationDialog_your_messages_will_disappear_s_after_they_have_been_seen">Meldinger du sender og mottar i denne samtalen forsvinner %s etter at de er blitt sett.</string>
<!--PassphrasePromptActivity-->
@@ -504,7 +513,7 @@ skrev inn (%s) er ugyldig.</string>
<!--ScribbleActivity-->
<string name="ScribbleActivity_save_failure">Klarte ikke å lagre bildeendringer</string>
<!--Search-->
<string name="SearchFragment_no_results">Søket «1%s» ga ingen treff.</string>
<string name="SearchFragment_no_results">Ingen resultater funnet for \'%s\'</string>
<string name="SearchFragment_header_conversations">Samtaler</string>
<string name="SearchFragment_header_contacts">Kontakter</string>
<string name="SearchFragment_header_messages">Meldinger</string>
@@ -956,6 +965,8 @@ Mottok nøkkelutvekslingsmelding for ugyldig protokollversion.</string>
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Bruk Signal for alle inngående multimediemeldinger </string>
<string name="preferences__pref_enter_sends_title">Send med enter-tast</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Bruk enter-tast for å sende tekstmeldinger</string>
<string name="preferences__send_link_previews">Send linkforhåndsvisninger</string>
<string name="preferences__previews_are_supported_for">Forhåndsvisninger støttes for Imgur, Instagram, Reddit og YouTube-koblinger</string>
<string name="preferences__choose_identity">Velg identitet</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Velg kontakt fra kontaktliste.</string>
<string name="preferences__change_passphrase">Endre passord</string>
@@ -1077,8 +1088,7 @@ Mottok nøkkelutvekslingsmelding for ugyldig protokollversion.</string>
<!--conversation_context_image-->
<string name="conversation_context_image__save_attachment">Lagre vedlegg</string>
<!--conversation_expiring_off-->
<string name="conversation_expiring_off__disappearing_messages">Utløptstid for meldinger
</string>
<string name="conversation_expiring_off__disappearing_messages">Utløpstid for meldinger</string>
<!--conversation_expiring_on-->
<string name="menu_conversation_expiring_on__messages_expiring">Utløpende meldinger</string>
<!--conversation_insecure-->

View File

@@ -3,8 +3,8 @@
<string name="app_name">Signal</string>
<string name="yes">Ja</string>
<string name="no">Nee</string>
<string name="delete">Verwijderen</string>
<string name="please_wait">Even geduld...</string>
<string name="delete">Wissen</string>
<string name="please_wait">Even geduld</string>
<string name="save">Opslaan</string>
<!--AbstractNotificationBuilder-->
<string name="AbstractNotificationBuilder_new_message">Nieuw bericht</string>
@@ -17,17 +17,17 @@
<item quantity="one">%d bericht per gesprek</item>
<item quantity="other">%d berichten per gesprek</item>
</plurals>
<string name="ApplicationPreferencesActivity_delete_all_old_messages_now">Nu alle oude berichten verwijderen?</string>
<string name="ApplicationPreferencesActivity_delete_all_old_messages_now">Nu alle oude berichten wissen?</string>
<plurals name="ApplicationPreferencesActivity_this_will_immediately_trim_all_conversations_to_the_d_most_recent_messages">
<item quantity="one">Dit zal onmiddellijk alle gesprekken inkorten tot het laatste bericht.</item>
<item quantity="other">Dit zal onmiddellijk alle gesprekken inkorten tot de laatste %d berichten.</item>
</plurals>
<string name="ApplicationPreferencesActivity_delete">Verwijderen</string>
<string name="ApplicationPreferencesActivity_delete">Wissen</string>
<string name="ApplicationPreferencesActivity_disable_passphrase">Wachtwoord uitschakelen?</string>
<string name="ApplicationPreferencesActivity_this_will_permanently_unlock_signal_and_message_notifications">Dit zal Signal- en berichtmeldingen blijvend ontgrendelen.</string>
<string name="ApplicationPreferencesActivity_disable">Uitschakelen</string>
<string name="ApplicationPreferencesActivity_unregistering">Aan het afmelden</string>
<string name="ApplicationPreferencesActivity_unregistering_from_signal_messages_and_calls">Aan het afmelden voor Signal-berichten en -oproepen...</string>
<string name="ApplicationPreferencesActivity_unregistering_from_signal_messages_and_calls">Aan het afmelden voor Signal-berichten en -oproepen</string>
<string name="ApplicationPreferencesActivity_disable_signal_messages_and_calls">Signal-berichten en -oproepen uitschakelen?</string>
<string name="ApplicationPreferencesActivity_disable_signal_messages_and_calls_by_unregistering">Dit zal Signal-berichten en -oproepen uitschakelen door je te deregistreren bij de server. Je zal je telefoonnummer opnieuw moeten registreren als je deze functies weer wil gebruiken.</string>
<string name="ApplicationPreferencesActivity_error_connecting_to_server">Fout bij verbinden met de server!</string>
@@ -55,10 +55,10 @@
<string name="DraftDatabase_Draft_quote_snippet">(beantwoorden)</string>
<!--AttchmentManager-->
<string name="AttachmentManager_cant_open_media_selection">Geen app gevonden om media te selecteren.</string>
<string name="AttachmentManager_signal_requires_the_external_storage_permission_in_order_to_attach_photos_videos_or_audio">Signal heeft toegang nodig tot de opslagruimte om foto\'s, video\'s of audio te kunnen sturen, maar deze toestemming is permanent geweigerd. Ga naar de instellingen, selecteer \"Toestemmingen\" en schakel \"Opslagruimte\" in.</string>
<string name="AttachmentManager_signal_requires_contacts_permission_in_order_to_attach_contact_information">Signal heeft toegang nodig tot de contacten om contactinformatie te kunnen sturen, maar deze toestemming is permanent geweigerd. Ga naar de instellingen, selecteer \"Toestemmingen\" en schakel \"Contacten\" in.</string>
<string name="AttachmentManager_signal_requires_location_information_in_order_to_attach_a_location">Signal heeft toegang nodig tot de locatie om locaties te kunnen sturen, maar deze toestemming is permanent geweigerd. Ga naar de instellingen, selecteer \"Toestemmingen\" en schakel \"Locatie\" in.</string>
<string name="AttachmentManager_signal_requires_the_camera_permission_in_order_to_take_photos_but_it_has_been_permanently_denied">Signal heeft toegang nodig tot de camera om foto\'s te kunnen maken, maar deze toestemming is permanent geweigerd. Ga naar de instellingen, selecteer \"Toestemmingen\" en schakel \"Camera\" in.</string>
<string name="AttachmentManager_signal_requires_the_external_storage_permission_in_order_to_attach_photos_videos_or_audio">Signal heeft toegang nodig tot de opslagruimte om foto\'s, video\'s of audio te kunnen verzenden, maar deze toestemming is permanent geweigerd. Ga naar de instellingen, selecteer \'Toestemmingen\' en schakel \'Opslagruimte\' in.</string>
<string name="AttachmentManager_signal_requires_contacts_permission_in_order_to_attach_contact_information">Signal heeft toegang nodig tot de contacten om contactinformatie in Signal weer te geven, maar deze toestemming is permanent geweigerd. Ga naar de instellingen, selecteer Toestemmingen en schakel Contacten in.</string>
<string name="AttachmentManager_signal_requires_location_information_in_order_to_attach_a_location">Signal heeft toegang nodig tot de locatie om locaties te kunnen verzenden aan je gesprekspartners, maar deze toestemming is permanent geweigerd. Ga naar de instellingen, selecteer \'Toestemmingen\' en schakel \'Locatie\' in.</string>
<string name="AttachmentManager_signal_requires_the_camera_permission_in_order_to_take_photos_but_it_has_been_permanently_denied">Signal heeft toegang nodig tot de camera om foto\'s te kunnen maken, maar deze toegang is permanent geweigerd. Ga naar de instellingen, selecteer \'Toestemmingen\' en schakel \'Camera\' in.</string>
<!--AudioSlidePlayer-->
<string name="AudioSlidePlayer_error_playing_audio">Fout bij afspelen van audio!</string>
<!--BlockedContactsActivity-->
@@ -79,7 +79,7 @@
<!--CommunicationActions-->
<string name="CommunicationActions_no_browser_found">Geen webbrowser gevonden.</string>
<!--ConfirmIdentityDialog-->
<string name="ConfirmIdentityDialog_your_safety_number_with_s_has_changed">Je veiligheidsnummer met %1$s is veranderd. Dit kan betekenen dat iemand je communicatie probeert te onderscheppen, of gewoon dat %2$s Signal opnieuw geïnstalleerd heeft.</string>
<string name="ConfirmIdentityDialog_your_safety_number_with_s_has_changed">Je veiligheidsnummer met %1$s is veranderd. Dit kan betekenen dat iemand je communicatie probeert te onderscheppen, of gewoon dat %2$s Signal opnieuw heeft geïnstalleerd.</string>
<string name="ConfirmIdentityDialog_you_may_wish_to_verify_your_safety_number_with_this_contact">Je wilt misschien jouw veiligheidsnummer bij deze contactpersoon verifiëren.</string>
<string name="ConfirmIdentityDialog_accept">Aanvaarden</string>
<!--ContactsCursorLoader-->
@@ -102,14 +102,14 @@
<string name="ContactShareEditActivity_type_missing">Anders</string>
<string name="ContactShareEditActivity_invalid_contact">Het geselecteerde contact was ongeldig</string>
<!--ConversationItem-->
<string name="ConversationItem_error_not_delivered">Verzenden is mislukt, tap voor details</string>
<string name="ConversationItem_error_not_delivered">Verzenden is mislukt, tik voor details</string>
<string name="ConversationItem_received_key_exchange_message_tap_to_process">Sleuteluitwisselingsbericht ontvangen, tik om te verwerken.</string>
<string name="ConversationItem_group_action_left">%1$s heeft de groep verlaten.</string>
<string name="ConversationItem_click_to_approve_unencrypted">Verzenden is mislukt, tap voor onbeveiligd verzenden</string>
<string name="ConversationItem_click_to_approve_unencrypted">Verzenden is mislukt, tik om onbeveiligd te verzenden</string>
<string name="ConversationItem_click_to_approve_unencrypted_sms_dialog_title">Terugvallen naar onversleutelde sms?</string>
<string name="ConversationItem_click_to_approve_unencrypted_mms_dialog_title">Terugvallen naar onversleutelde mms?</string>
<string name="ConversationItem_click_to_approve_unencrypted_dialog_message">Dit bericht zal <b>niet</b> versleuteld worden omdat de ontvanger geen Signal meer gebruikt.\n\nBericht onbeveiligd verzenden?</string>
<string name="ConversationItem_unable_to_open_media">Geen app gevonden welke dit bestand kan openen.</string>
<string name="ConversationItem_unable_to_open_media">Geen app gevonden waarmee dit bestand geopend kan openen.</string>
<string name="ConversationItem_copied_text">%s gekopieerd</string>
<string name="ConversationItem_from_s">van %s</string>
<string name="ConversationItem_to_s">naar %s</string>
@@ -125,7 +125,7 @@
<string name="ConversationActivity_message_is_empty_exclamation">Bericht is leeg!</string>
<string name="ConversationActivity_group_members">Groepsleden</string>
<string name="ConversationActivity_invalid_recipient">Ongeldige ontvanger!</string>
<string name="ConversationActivity_added_to_home_screen">Aan thuisscherm toevoegen</string>
<string name="ConversationActivity_added_to_home_screen">Aan thuisscherm toegevoegd</string>
<string name="ConversationActivity_calls_not_supported">Bellen niet ondersteund</string>
<string name="ConversationActivity_this_device_does_not_appear_to_support_dial_actions">Dit apparaat lijkt belacties niet te ondersteunen.</string>
<string name="ConversationActivity_leave_group">Groep verlaten?</string>
@@ -147,14 +147,14 @@
<string name="ConversationActivity_unable_to_record_audio">Fout bij opnemen audio!</string>
<string name="ConversationActivity_there_is_no_app_available_to_handle_this_link_on_your_device">Er is geen app beschikbaar op jouw apparaat om deze koppeling te openen.</string>
<string name="ConversationActivity_to_send_audio_messages_allow_signal_access_to_your_microphone">Om audioberichten op te nemen, moet je Signal toegang geven tot je microfoon.</string>
<string name="ConversationActivity_signal_requires_the_microphone_permission_in_order_to_send_audio_messages">Signal heeft toegang nodig tot de microfoon om audioberichten te kunnen opnemen, maar deze is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer \"Machtigingen\" en schakel \"Microfoon\" in.</string>
<string name="ConversationActivity_signal_requires_the_microphone_permission_in_order_to_send_audio_messages">Signal heeft toegang nodig tot de microfoon om audioberichten te kunnen opnemen, maar deze is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer Machtigingen en schakel Microfoon in.</string>
<string name="ConversationActivity_to_call_s_signal_needs_access_to_your_microphone_and_camera">Signal heeft toegang nodig tot je microfoon en camera om %s te bellen.</string>
<string name="ConversationActivity_signal_needs_the_microphone_and_camera_permissions_in_order_to_call_s">Signal heeft microfoon machtiging nodig om %s te kunnen bellen, maar deze is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer \"Machtigingen\" en schakel \"Microfoon\" en \"Camera\" in.</string>
<string name="ConversationActivity_signal_needs_the_microphone_and_camera_permissions_in_order_to_call_s">Signal heeft toegang nodig tot de microfoon en de camera om %s te kunnen bellen, maar deze is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer Machtigingen en schakel Microfoon en Camera in.</string>
<string name="ConversationActivity_to_capture_photos_and_video_allow_signal_access_to_the_camera">Geef Signal toegang tot de camera om foto\'s en video\'s te maken.</string>
<string name="ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video">Signal heeft toegang tot de camera nodig om foto\'s en video\'s te kunnen opnemen, maar deze is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer \"Machtigingen\" en schakel \"Camera\" in.</string>
<string name="ConversationActivity_signal_needs_camera_permissions_to_take_photos_or_video">Signal heeft toegang tot de camera nodig om foto\'s en video\'s te kunnen opnemen</string>
<string name="ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video">Signal heeft toegang nodig tot de camera om fotos en videos te kunnen opnemen, maar deze is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer Machtigingen en schakel Camera in.</string>
<string name="ConversationActivity_signal_needs_camera_permissions_to_take_photos_or_video">Signal heeft toegang tot de camera nodig om fotos en videos te kunnen opnemen</string>
<string name="ConversationActivity_quoted_contact_message">%1$s %2$s</string>
<string name="ConversationActivity_signal_cannot_sent_sms_mms_messages_because_it_is_not_your_default_sms_app">Signal kan geen Sms/Mms bericht verzenden omdat Signal niet je standaard Sms app is. Wil je dit veranderen in je Android instellingen?</string>
<string name="ConversationActivity_signal_cannot_sent_sms_mms_messages_because_it_is_not_your_default_sms_app">Signal kan geen sms-/mms-bericht verzenden omdat Signal niet je standaard sms-app is. Wil je dit veranderen in je Android-instellingen?</string>
<string name="ConversationActivity_yes">Ja</string>
<string name="ConversationActivity_no">Nee</string>
<!--ConversationAdapter-->
@@ -164,12 +164,12 @@
</plurals>
<!--ConversationFragment-->
<plurals name="ConversationFragment_delete_selected_messages">
<item quantity="one">Geselecteerd bericht verwijderen?</item>
<item quantity="other">Geselecteerde berichten verwijderen?</item>
<item quantity="one">Geselecteerd bericht wissen?</item>
<item quantity="other">Geselecteerde berichten wissen?</item>
</plurals>
<plurals name="ConversationFragment_this_will_permanently_delete_all_n_selected_messages">
<item quantity="one">Dit zal het geselecteerde bericht voorgoed verwijderen.</item>
<item quantity="other">Dit zal alle %1$d geselecteerde berichten voorgoed verwijderen.</item>
<item quantity="one">Dit zal het geselecteerde bericht voorgoed wissen.</item>
<item quantity="other">Dit zal alle %1$d geselecteerde berichten voorgoed wissen.</item>
</plurals>
<string name="ConversationFragment_save_to_sd_card">Opslaan?</string>
<plurals name="ConversationFragment_saving_n_media_to_storage_warning">
@@ -182,35 +182,35 @@
</plurals>
<string name="ConversationFragment_unable_to_write_to_sd_card_exclamation">Opslag niet beschrijfbaar!</string>
<plurals name="ConversationFragment_saving_n_attachments">
<item quantity="one">Bijlage opslaan</item>
<item quantity="other">%1$d bijlagen opslaan</item>
<item quantity="one">Bijlage aan het opslaan</item>
<item quantity="other">%1$d bijlagen aan het opslaan</item>
</plurals>
<plurals name="ConversationFragment_saving_n_attachments_to_sd_card">
<item quantity="one">Bijlage opslaan...</item>
<item quantity="other">%1$d bijlagen opslaan...</item>
<item quantity="one">Bijlage aan het opslaan naar externe opslag...</item>
<item quantity="other">%1$d bijlagen aan het opslaan naar externe opslag…</item>
</plurals>
<string name="ConversationFragment_pending">In afwachting...</string>
<string name="ConversationFragment_push">Data (Signal)</string>
<string name="ConversationFragment_pending">In afwachting</string>
<string name="ConversationFragment_push">Gegevensoverdracht (Signal)</string>
<string name="ConversationFragment_mms">Mms</string>
<string name="ConversationFragment_sms">Sms</string>
<string name="ConversationFragment_deleting">Verwijderen</string>
<string name="ConversationFragment_deleting_messages">Berichten verwijderen...</string>
<string name="ConversationFragment_deleting">Aan het wissen</string>
<string name="ConversationFragment_deleting_messages">Berichten aan het wissen…</string>
<string name="ConversationFragment_quoted_message_not_found">Oorspronkelijk bericht niet gevonden</string>
<string name="ConversationFragment_quoted_message_no_longer_available">Het originele bericht is niet meer beschikbaar</string>
<string name="ConversationFragment_quoted_message_no_longer_available">Het oorspronkelijke bericht is niet meer beschikbaar</string>
<!--ConversationListActivity-->
<string name="ConversationListActivity_there_is_no_browser_installed_on_your_device">Er is geen browser op het apparaat geïnstalleerd.</string>
<!--ConversationListFragment-->
<string name="ConversationListFragment_no_results_found_for_s_">Geen resultaten gevonden voor \'%s\'</string>
<plurals name="ConversationListFragment_delete_selected_conversations">
<item quantity="one">Geselecteerd gesprek verwijderen?</item>
<item quantity="other">Geselecteerde gesprekken verwijderen?</item>
<item quantity="one">Geselecteerd gesprek wissen?</item>
<item quantity="other">Geselecteerde gesprekken wissen?</item>
</plurals>
<plurals name="ConversationListFragment_this_will_permanently_delete_all_n_selected_conversations">
<item quantity="one">Dit zal het geselecteerde gesprek voorgoed verwijderen.</item>
<item quantity="other">Dit zal alle %1$d geselecteerde gesprekken voorgoed verwijderen.</item>
<item quantity="one">Dit zal het geselecteerde gesprek voorgoed wissen.</item>
<item quantity="other">Dit zal alle %1$d geselecteerde gesprekken voorgoed wissen.</item>
</plurals>
<string name="ConversationListFragment_deleting">Verwijderen</string>
<string name="ConversationListFragment_deleting_selected_conversations">Geselecteerde gesprekken aan het verwijderen...</string>
<string name="ConversationListFragment_deleting_selected_conversations">Geselecteerde gesprekken aan het verwijderen</string>
<plurals name="ConversationListFragment_conversations_archived">
<item quantity="one">Gesprek gearchiveerd</item>
<item quantity="other">%d gesprekken gearchiveerd</item>
@@ -242,14 +242,14 @@
<!--DeliveryStatus-->
<string name="DeliveryStatus_sending">Aan het verzenden</string>
<string name="DeliveryStatus_sent">Verzonden</string>
<string name="DeliveryStatus_delivered">Bezorgd </string>
<string name="DeliveryStatus_delivered">Afgeleverd</string>
<string name="DeliveryStatus_read">Lees</string>
<!--DeviceListActivity-->
<string name="DeviceListActivity_unlink_s">\'%s\' ontkoppelen?</string>
<string name="DeviceListActivity_by_unlinking_this_device_it_will_no_longer_be_able_to_send_or_receive">Door het ontkoppelen van dit apparaat kan het geen berichten meer verzenden of ontvangen.</string>
<string name="DeviceListActivity_network_connection_failed">Netwerkfout</string>
<string name="DeviceListActivity_try_again">Opnieuw proberen</string>
<string name="DeviceListActivity_unlinking_device">Apparaat ontkoppelen...</string>
<string name="DeviceListActivity_unlinking_device">Apparaat ontkoppelen</string>
<string name="DeviceListActivity_unlinking_device_no_ellipsis">Apparaat ontkoppelen</string>
<string name="DeviceListActivity_network_failed">Netwerkfout!</string>
<!--DeviceListItem-->
@@ -278,14 +278,17 @@
<string name="ExperienceUpgradeActivity_now_you_can_share_a_profile_photo_and_name_with_friends_on_signal">Je kan nu een profielfoto en naam delen met je contacten op Signal</string>
<string name="ExperienceUpgradeActivity_signal_profiles_are_here">Signal-profielen zijn nu beschikbaar</string>
<string name="ExperienceUpgradeActivity_introducing_typing_indicators">We introduceren typindicatoren.</string>
<string name="ExperienceUpgradeActivity_now_you_can_optionally_see_and_share_when_messages_are_being_typed">Vanaf nu kun je zien of je gesprekspartner een bericht aan het typen is. Deze functie is optioneel; je kunt het op ieder moment uitschakelen.</string>
<string name="ExperienceUpgradeActivity_now_you_can_optionally_see_and_share_when_messages_are_being_typed">Vanaf nu kun je zien of je gesprekspartner een bericht aan het typen is. Deze functie is optioneel; je kunt ze op ieder moment uitschakelen.</string>
<string name="ExperienceUpgradeActivity_would_you_like_to_enable_them_now">Wil je ze nu inschakelen?</string>
<string name="ExperienceUpgradeActivity_typing_ui_title">Typindicatoren zijn gearriveerd</string>
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Zet typindicatoren aan</string>
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Typindicatoren inschakelen</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Schakel typindicatoren in</string>
<string name="ExperienceUpgradeActivity_no_thanks">Nee bedankt</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Nieuw: voorbeeldweergaven.</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Voorbeeldweergaven worden nu optioneel ondersteund voor enkele van de populairste websites op het internet.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Je kan deze functionaliteit op eender welk moment in- of uitschakelen in je Signal-instellingen (Privacy &gt; Voorbeeldweergaven verzenden).</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Bericht aan het ophalen...</string>
<string name="GcmBroadcastReceiver_retrieving_a_message">Bericht aan het ophalen</string>
<!--GcmRefreshJob-->
<string name="GcmRefreshJob_Permanent_Signal_communication_failure">Permanente Signal-communicatiefout!</string>
<string name="GcmRefreshJob_Signal_was_unable_to_register_with_Google_Play_Services">Signal was niet in staat met Google Play services te registreren. Signal berichten en oproepen zijn nu uitgeschakeld, probeer opnieuw te registreren via Instellingen &gt; Geavanceerd.</string>
@@ -299,16 +302,16 @@
<string name="GroupCreateActivity_actionbar_edit_title">Groep bijwerken</string>
<string name="GroupCreateActivity_group_name_hint">Groepsnaam</string>
<string name="GroupCreateActivity_actionbar_mms_title">Nieuwe mms-groep</string>
<string name="GroupCreateActivity_contacts_dont_support_push">Je hebt een contactpersoon geselecteerd wie geen Signal-groepen ondersteunt, dus deze groep zal gebruik maken van mms.</string>
<string name="GroupCreateActivity_contacts_dont_support_push">Je hebt een contactpersoon geselecteerd die geen Signal-groepen ondersteunt, dus deze groep zal gebruik maken van mms.</string>
<string name="GroupCreateActivity_youre_not_registered_for_signal">Je bent niet geregistreerd voor Signal-berichten en -oproepen, dus Signal-groepen zijn uitgeschakeld. Registreren kan via Instellingen &gt; Geavanceerd.</string>
<string name="GroupCreateActivity_contacts_no_members">Je groep moet minstens één persoon bevatten!</string>
<string name="GroupCreateActivity_contacts_invalid_number">Het nummer van één van de leden van je groep kan niet goed worden gelezen. Corrigeer dit of verwijder deze contactpersoon en probeer het opnieuw.</string>
<string name="GroupCreateActivity_avatar_content_description">Groepsafbeelding</string>
<string name="GroupCreateActivity_menu_apply_button">Toepassen</string>
<string name="GroupCreateActivity_creating_group">%1$s aanmaken...</string>
<string name="GroupCreateActivity_updating_group">%1$s bijwerken...</string>
<string name="GroupCreateActivity_creating_group">%1$s aanmaken</string>
<string name="GroupCreateActivity_updating_group">%1$s bijwerken</string>
<string name="GroupCreateActivity_cannot_add_non_push_to_existing_group">Kon %1$s niet toevoegen omdat zij geen Signal-gebruiker zijn.</string>
<string name="GroupCreateActivity_loading_group_details">Groepsdetails aan het laden...</string>
<string name="GroupCreateActivity_loading_group_details">Groepsdetails aan het laden</string>
<string name="GroupCreateActivity_youre_already_in_the_group">Je bent al lid van deze groep.</string>
<!--GroupShareProfileView-->
<string name="GroupShareProfileView_share_your_profile_name_and_photo_with_this_group">Je profielnaam en -foto met deze groep delen?</string>
@@ -322,7 +325,7 @@
<string name="InviteActivity_share">Delen</string>
<string name="InviteActivity_choose_contacts">Kies contactpersonen</string>
<string name="InviteActivity_cancel">Annuleren</string>
<string name="InviteActivity_sending">Aan het verzenden...</string>
<string name="InviteActivity_sending">Aan het verzenden</string>
<string name="InviteActivity_heart_content_description">Hartje</string>
<string name="InviteActivity_invitations_sent">Uitnodigingen verzonden!</string>
<string name="InviteActivity_invite_to_signal">Uitnodigen voor Signal</string>
@@ -338,7 +341,7 @@
<string name="InviteActivity_no_app_to_share_to">Het lijkt erop dat je geen apps hebt om naar te delen.</string>
<string name="InviteActivity_friends_dont_let_friends_text_unencrypted">Vrienden laten vrienden niet onversleuteld chatten.</string>
<!--Job-->
<string name="Job_working_in_the_background">Bezig op de achtergrond...</string>
<string name="Job_working_in_the_background">Bezig op de achtergrond</string>
<!--MessageDetailsRecipient-->
<string name="MessageDetailsRecipient_failed_to_send">Verzenden mislukt</string>
<string name="MessageDetailsRecipient_new_safety_number">Nieuw veiligheidsnummer</string>
@@ -350,18 +353,18 @@
<!--MediaOverviewActivity-->
<string name="MediaOverviewActivity_Media">Media</string>
<plurals name="MediaOverviewActivity_Media_delete_confirm_title">
<item quantity="one">Geselecteerd bericht verwijderen?</item>
<item quantity="other">Geselecteerde berichten verwijderen?</item>
<item quantity="one">Geselecteerd bericht wissen?</item>
<item quantity="other">Geselecteerde berichten wissen?</item>
</plurals>
<plurals name="MediaOverviewActivity_Media_delete_confirm_message">
<item quantity="one">Dit zal het geselecteerde bericht voorgoed verwijderen.</item>
<item quantity="other">Dit zal alle %1$d geselecteerde berichten voorgoed verwijderen.</item>
<item quantity="one">Dit zal het geselecteerde bericht voorgoed wissen.</item>
<item quantity="other">Dit zal alle %1$d geselecteerde berichten voorgoed wissen.</item>
</plurals>
<string name="MediaOverviewActivity_Media_delete_progress_title">Aan het verwijderen</string>
<string name="MediaOverviewActivity_Media_delete_progress_message">Berichten aan het verwijderen...</string>
<string name="MediaOverviewActivity_Media_delete_progress_message">Berichten aan het verwijderen</string>
<string name="MediaOverviewActivity_Documents">Documenten</string>
<string name="MediaOverviewActivity_Select_all">Alles selecteren</string>
<string name="MediaOverviewActivity_collecting_attachments">Bijlagen aan het verzamelen...</string>
<string name="MediaOverviewActivity_collecting_attachments">Bijlagen aan het verzamelen</string>
<!--- NotificationBarManager-->
<string name="NotificationBarManager_signal_call_in_progress">Signal-oproep aan de gang</string>
<string name="NotificationBarManager__establishing_signal_call">Signal-oproep aan het opzetten</string>
@@ -383,7 +386,7 @@
<item quantity="other">Je kunt niet meer dan %d items delen.</item>
</plurals>
<!--MediaSendActivity-->
<string name="MediaSendActivity_add_a_caption">Voeg een bijschrift toe...</string>
<string name="MediaSendActivity_add_a_caption">Voeg een bijschrift toe</string>
<!--MediaRepository-->
<string name="MediaRepository_all_media">Alle media</string>
<!--MessageRecord-->
@@ -403,10 +406,10 @@
<string name="MessageRecord_you_set_disappearing_message_time_to_s">Je hebt de timer voor zelf-wissende berichten op %1$s ingesteld.</string>
<string name="MessageRecord_s_set_disappearing_message_time_to_s">%1$s heeft de timer voor zelf-wissende berichten op %2$s ingesteld.</string>
<string name="MessageRecord_your_safety_number_with_s_has_changed">Je veiligheidsnummer met %s is veranderd.</string>
<string name="MessageRecord_you_marked_your_safety_number_with_s_verified">Je hebt je veiligheidsnummer met %s gemarkeerd als \'geverifieerd\'</string>
<string name="MessageRecord_you_marked_your_safety_number_with_s_verified_from_another_device">Je hebt je veiligheidsnummer met %s gemarkeerd als \'geverifieerd\' vanaf een ander apparaat</string>
<string name="MessageRecord_you_marked_your_safety_number_with_s_unverified">Je hebt je veiligheidsnummer met %s gemarkeerd als \'niet geverifieerd\'</string>
<string name="MessageRecord_you_marked_your_safety_number_with_s_unverified_from_another_device">Je hebt je veiligheidsnummer met %s vanaf een ander apparaat gemarkeerd als \'niet geverifieerd\'</string>
<string name="MessageRecord_you_marked_your_safety_number_with_s_verified">Je hebt je veiligheidsnummer met %s gemarkeerd als geverifieerd</string>
<string name="MessageRecord_you_marked_your_safety_number_with_s_verified_from_another_device">Je hebt je veiligheidsnummer met %s gemarkeerd als geverifieerd vanaf een ander apparaat</string>
<string name="MessageRecord_you_marked_your_safety_number_with_s_unverified">Je hebt je veiligheidsnummer met %s gemarkeerd als niet geverifieerd</string>
<string name="MessageRecord_you_marked_your_safety_number_with_s_unverified_from_another_device">Je hebt je veiligheidsnummer met %s vanaf een ander apparaat gemarkeerd als niet geverifieerd</string>
<!--PassphraseChangeActivity-->
<string name="PassphraseChangeActivity_passphrases_dont_match_exclamation">Wachtwoorden komen niet overeen!</string>
<string name="PassphraseChangeActivity_incorrect_old_passphrase_exclamation">Incorrect oud wachtwoord!</string>
@@ -421,7 +424,7 @@
\n• Berichten onder jouw naam verzenden
</string>
<string name="DeviceProvisioningActivity_content_progress_title">Apparaat wordt gekoppeld</string>
<string name="DeviceProvisioningActivity_content_progress_content">Nieuw apparaat wordt gekoppeld...</string>
<string name="DeviceProvisioningActivity_content_progress_content">Nieuw apparaat wordt gekoppeld</string>
<string name="DeviceProvisioningActivity_content_progress_success">Apparaat goedgekeurd!</string>
<string name="DeviceProvisioningActivity_content_progress_no_device">Geen apparaat gevonden.</string>
<string name="DeviceProvisioningActivity_content_progress_network_error">Netwerkfout.</string>
@@ -429,13 +432,13 @@
<string name="DeviceProvisioningActivity_sorry_you_have_too_many_devices_linked_already">Sorry, je hebt te veel apparaten gekoppeld, probeer er eerst enkele te verwijderen</string>
<string name="DeviceActivity_sorry_this_is_not_a_valid_device_link_qr_code">Sorry, dit is geen geldige QR-code om een apparaat te koppelen.</string>
<string name="DeviceProvisioningActivity_link_a_signal_device">Een Signal-apparaat koppelen?</string>
<string name="DeviceProvisioningActivity_it_looks_like_youre_trying_to_link_a_signal_device_using_a_3rd_party_scanner">Het lijkt erop dat je een Signal-apparaat wilt koppelen met een externe scanner. Scan voor de veiligheid alsjeblieft de code opnieuw vanuit Signal.</string>
<string name="DeviceActivity_signal_needs_the_camera_permission_in_order_to_scan_a_qr_code">Signal heeft toegang tot de camera nodig om een QR-code te scannen, maar deze is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer \"Machtigingen\" en schakel \"Camera\" in.</string>
<string name="DeviceProvisioningActivity_it_looks_like_youre_trying_to_link_a_signal_device_using_a_3rd_party_scanner">Het lijkt erop dat je een Signal-apparaat wilt koppelen met een externe scanner. Scan voor de veiligheid de code opnieuw vanuit Signal.</string>
<string name="DeviceActivity_signal_needs_the_camera_permission_in_order_to_scan_a_qr_code">Signal heeft toegang tot de camera nodig om een QR-code te scannen, maar deze is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer Machtigingen en schakel Camera in.</string>
<string name="DeviceActivity_unable_to_scan_a_qr_code_without_the_camera_permission">Kan geen QR-code scannen zonder toegang tot camera</string>
<!--ExpirationDialog-->
<string name="ExpirationDialog_disappearing_messages">Zelf-wissende berichten</string>
<string name="ExpirationDialog_your_messages_will_not_expire">De berichten zullen zichzelf niet verwijderen.</string>
<string name="ExpirationDialog_your_messages_will_disappear_s_after_they_have_been_seen">Nieuwe berichten die in dit gesprek verzonden en ontvangen worden zullen %s nadat ze gelezen zijn zich zelf wissen.</string>
<string name="ExpirationDialog_your_messages_will_disappear_s_after_they_have_been_seen">Nieuwe berichten die in dit gesprek verzonden en ontvangen worden zullen %s nadat ze gelezen zijn zichzelf wissen.</string>
<!--PassphrasePromptActivity-->
<string name="PassphrasePromptActivity_enter_passphrase">Voer wachtwoord in</string>
<string name="PassphrasePromptActivity_watermark_content_description">Signal-pictogram</string>
@@ -444,7 +447,7 @@
<!--PlayServicesProblemFragment-->
<string name="PlayServicesProblemFragment_the_version_of_google_play_services_you_have_installed_is_not_functioning">De versie van Google Play Services die je in gebruik hebt werkt niet zoals het hoort. Installeer Google Play Services opnieuw en probeer het nog eens.</string>
<!--PushNotificationReceiveJob-->
<string name="PushNotificationReceiveJob_retrieving_a_message">Bericht aan het ophalen...</string>
<string name="PushNotificationReceiveJob_retrieving_a_message">Bericht aan het ophalen</string>
<!--RatingManager-->
<string name="RatingManager_rate_this_app">Beoordeel deze app</string>
<string name="RatingManager_if_you_enjoy_using_this_app_please_take_a_moment">Gebruik je deze app graag? Help ons dan even met een beoordeling.</string>
@@ -458,7 +461,7 @@
<string name="RecipientPreferenceActivity_block_and_leave_group">Deze groep blokkeren en verlaten?</string>
<string name="RecipientPreferenceActivity_block_group">Deze groep blokkeren?</string>
<string name="RecipientPreferenceActivity_block_and_leave_group_description">Je zult niet langer berichten of meldingen van deze groep ontvangen.</string>
<string name="RecipientPreferenceActivity_block">Blokkeer deze gesprekspartner</string>
<string name="RecipientPreferenceActivity_block">Deze gesprekspartner blokkeren</string>
<string name="RecipientPreferenceActivity_unblock_this_contact_question">Gesprekspartner deblokkeren?</string>
<string name="RecipientPreferenceActivity_you_will_once_again_be_able_to_receive_messages_and_calls_from_this_contact">Je kan weer berichten en oproepen van deze gesprekspartner ontvangen.</string>
<string name="RecipientPreferenceActivity_unblock_this_group_question">Deze groep deblokkeren?</string>
@@ -467,7 +470,7 @@
<string name="RecipientPreferenceActivity_unblock">Deblokkeren</string>
<string name="RecipientPreferenceActivity_enabled">Ingeschakeld</string>
<string name="RecipientPreferenceActivity_disabled">Uitgeschakeld</string>
<string name="RecipientPreferenceActivity_available_once_a_message_has_been_sent_or_received">Beschikbaar zodra er een bericht verzonden of ontvangen is</string>
<string name="RecipientPreferenceActivity_available_once_a_message_has_been_sent_or_received">Beschikbaar zodra er een bericht verzonden of ontvangen is.</string>
<!--RecipientProvider-->
<string name="RecipientProvider_unnamed_group">Naamloze groep</string>
<!--RedPhone-->
@@ -495,7 +498,7 @@
ingevoerd (%s) is ongeldig.
</string>
<string name="RegistrationActivity_missing_google_play_services">De Google Play Services zijn niet aanwezig</string>
<string name="RegistrationActivity_this_device_is_missing_google_play_services">Dit apparaat bevat geen Google Play Services. Je kunt Signal nog steeds gebruiken, maar deze configuratie kan de betrouwbaarheid en prestaties verslechteren.\n\nAls je geen gevorderde gebruiker bent, geen aangepaste ROM gebruikt of denkt dat het tonen van dit bericht onterecht is, neem dan a.u.b. contact op met support@signal.org voor hulp met probleemoplossen.</string>
<string name="RegistrationActivity_this_device_is_missing_google_play_services">Dit apparaat bevat geen Google Play Services. Je kunt Signal nog steeds gebruiken, maar deze configuratie kan de betrouwbaarheid en prestaties verslechteren.\n\nAls je geen gevorderde gebruiker bent, geen aangepaste ROM gebruikt of denkt dat het tonen van dit bericht onterecht is, neem dan contact op met support@signal.org voor hulp met probleemoplossen.</string>
<string name="RegistrationActivity_i_understand">Ik begrijp het</string>
<string name="RegistrationActivity_play_services_error">Play services fout</string>
<string name="RegistrationActivity_google_play_services_is_updating_or_unavailable">De Google Play Services zijn momenteel aan het updaten of zijn tijdelijk niet beschikbaar. Probeer het nog eens.</string>
@@ -518,7 +521,7 @@
<string name="SearchFragment_header_contacts">Contacten</string>
<string name="SearchFragment_header_messages">Berichten</string>
<!--SendJob-->
<string name="SendJob_sending_a_message">Bericht aan het versturen...</string>
<string name="SendJob_sending_a_message">Bericht aan het versturen</string>
<!--SharedContactDetailsActivity-->
<string name="SharedContactDetailsActivity_add_to_contacts">Toevoegen aan contacten</string>
<string name="SharedContactDetailsActivity_invite_to_signal">Uitnodigen voor Signal</string>
@@ -533,11 +536,11 @@
<string name="Slide_audio">Audio</string>
<string name="Slide_video">Video</string>
<!--SmsMessageRecord-->
<string name="SmsMessageRecord_received_corrupted_key_exchange_message">Misvormd sleuteluitwisselingsbericht
<string name="SmsMessageRecord_received_corrupted_key_exchange_message">Beschadigd sleuteluitwisselingsbericht
ontvangen!
</string>
<string name="SmsMessageRecord_received_key_exchange_message_for_invalid_protocol_version">
Sleuteluitwisselingsbericht ontvangen voor een verkeerde protocol-versie.
Sleuteluitwisselingsbericht ontvangen voor een verkeerde protocolversie.
</string>
<string name="SmsMessageRecord_received_message_with_new_safety_number_tap_to_process">Er is een bericht met een nieuw veiligheidsnummer ontvangen. Tik om te verwerken en te tonen.</string>
<string name="SmsMessageRecord_secure_session_reset">Je hebt de beveiligde sessie opnieuw ingesteld.</string>
@@ -564,10 +567,10 @@
<string name="UpdateApkReadyListener_a_new_version_of_signal_is_available_tap_to_update">Er is een nieuwe versie van Signal beschikbaar, tik om bij te werken</string>
<!--UnknownSenderView-->
<string name="UnknownSenderView_block_s">%s blokkeren?</string>
<string name="UnknownSenderView_blocked_contacts_will_no_longer_be_able_to_send_you_messages_or_call_you">Geblokkeerde contactenpersonen zullen je geen berichten meer kunnen sturen en zullen jou niet meer kunnen bellen.</string>
<string name="UnknownSenderView_block">Blokkeer deze gesprekspartner</string>
<string name="UnknownSenderView_blocked_contacts_will_no_longer_be_able_to_send_you_messages_or_call_you">Geblokkeerde contactpersonen zullen je geen berichten meer kunnen sturen en zullen je niet meer kunnen bellen.</string>
<string name="UnknownSenderView_block">Blokkeren</string>
<string name="UnknownSenderView_share_profile_with_s">Je profiel delen met %s?</string>
<string name="UnknownSenderView_the_easiest_way_to_share_your_profile_information_is_to_add_the_sender_to_your_contacts">De eenvoudigste manier om je profielinformatie te delen is door de afzender aan je contacten toe te voegen. Als je dit niet wilt, kun je jouw profielinformatie nog steeds langs deze weg delen.</string>
<string name="UnknownSenderView_the_easiest_way_to_share_your_profile_information_is_to_add_the_sender_to_your_contacts">De eenvoudigste manier om je profielinformatie te delen is door de afzender aan je contacten toe te voegen. Als je dit niet wilt, kun je je profielinformatie nog steeds langs deze weg delen.</string>
<string name="UnknownSenderView_share_profile">Profiel delen</string>
<!--UntrustedSendDialog-->
<string name="UntrustedSendDialog_send_message">Bericht verzenden?</string>
@@ -579,11 +582,11 @@
<string name="VerifyIdentityActivity_your_contact_is_running_an_old_version_of_signal">Deze contactpersoon gebruikt een oude versie van Signal. Vraag hem om eerst Signal bij te werken, alvorens je het veiligheidsnummer verifieert.</string>
<string name="VerifyIdentityActivity_your_contact_is_running_a_newer_version_of_Signal">Deze contactpersoon gebruikt een nieuwere versie van Signal met een incompatibel QR-codeformaat. Werk Signal bij om te vergelijken.</string>
<string name="VerifyIdentityActivity_the_scanned_qr_code_is_not_a_correctly_formatted_safety_number">De gescande QR-code is geen goed geformatteerd veiligheidsnummer verificatie code. Probeer de code opnieuw te scannen.</string>
<string name="VerifyIdentityActivity_share_safety_number_via">Veiligheidsnummer delen via...</string>
<string name="VerifyIdentityActivity_share_safety_number_via">Veiligheidsnummer delen via</string>
<string name="VerifyIdentityActivity_our_signal_safety_number">Ons Signal-veiligheidsnummer:</string>
<string name="VerifyIdentityActivity_no_app_to_share_to">Het lijkt erop dat je geen apps hebt om naar te delen.</string>
<string name="VerifyIdentityActivity_no_safety_number_to_compare_was_found_in_the_clipboard">Geen veiligheidsnummer gevonden op het klembord</string>
<string name="VerifyIdentityActivity_signal_needs_the_camera_permission_in_order_to_scan_a_qr_code_but_it_has_been_permanently_denied">Signal heeft toegang tot de camera nodig om een QR-code te scannen, maar deze is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer \"Machtigingen\" en schakel \"Camera\" in.</string>
<string name="VerifyIdentityActivity_signal_needs_the_camera_permission_in_order_to_scan_a_qr_code_but_it_has_been_permanently_denied">Signal heeft toegang tot de camera nodig om een QR-code te scannen, maar deze is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer Machtigingen en schakel Camera in.</string>
<string name="VerifyIdentityActivity_unable_to_scan_qr_code_without_camera_permission">Kan QR-code niet scannen zonder toegang tot camera</string>
<!--MessageDisplayHelper-->
<string name="MessageDisplayHelper_bad_encrypted_message">Verkeerd versleuteld bericht</string>
@@ -598,21 +601,21 @@
<!--ApplicationMigrationService-->
<string name="ApplicationMigrationService_import_in_progress">Bezig met importeren</string>
<string name="ApplicationMigrationService_importing_text_messages">Tekstberichten aan het importeren</string>
<string name="ApplicationMigrationService_import_complete">Importeren voltooid!</string>
<string name="ApplicationMigrationService_import_complete">Importeren voltooid</string>
<string name="ApplicationMigrationService_system_database_import_is_complete">Het importeren van de systeemdatabase is voltooid.</string>
<!--KeyCachingService-->
<string name="KeyCachingService_signal_passphrase_cached">Tik om te openen.</string>
<string name="KeyCachingService_signal_passphrase_cached_with_lock">Tik om te openen of tik op het slot om te sluiten.</string>
<string name="KeyCachingService_passphrase_cached">Signal is ontgrendeld</string>
<string name="KeyCachingService_lock">Signal vergrendelen</string>
<string name="KeyCachingService_lock">Vergrendel Signal</string>
<!--MediaPreviewActivity-->
<string name="MediaPreviewActivity_you">Jij</string>
<string name="MediaPreviewActivity_unssuported_media_type">Niet-ondersteund mediatype</string>
<string name="MediaPreviewActivity_draft">Concept</string>
<string name="MediaPreviewActivity_signal_needs_the_storage_permission_in_order_to_write_to_external_storage_but_it_has_been_permanently_denied">Signal heeft toegang tot externe opslagruimte nodig om iets op te slaan op de externe opslag, maar deze toegang is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer \"Machtigingen\" en schakel \"Opslagruimte\" in.</string>
<string name="MediaPreviewActivity_signal_needs_the_storage_permission_in_order_to_write_to_external_storage_but_it_has_been_permanently_denied">Signal heeft toegang tot externe opslagruimte nodig om iets op te slaan op de externe opslag, maar deze toegang is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer Machtigingen en schakel Opslagruimte in.</string>
<string name="MediaPreviewActivity_unable_to_write_to_external_storage_without_permission">Kan niet opslaan naar externe opslag zonder machtiging</string>
<string name="MediaPreviewActivity_media_delete_confirmation_title">Bericht verwijderen?</string>
<string name="MediaPreviewActivity_media_delete_confirmation_message">Dit bericht zal voorgoed verwijderd worden.</string>
<string name="MediaPreviewActivity_media_delete_confirmation_title">Bericht wissen?</string>
<string name="MediaPreviewActivity_media_delete_confirmation_message">Dit bericht zal voorgoed gewist worden.</string>
<!--MessageNotifier-->
<string name="MessageNotifier_d_new_messages_in_d_conversations">%1$d nieuwe berichten in %2$d gesprekken</string>
<string name="MessageNotifier_most_recent_from_s">Meest recente van: %1$s</string>
@@ -655,8 +658,8 @@
<string name="SingleRecipientNotificationBuilder_new_message">Nieuw bericht</string>
<!--TransferControlView-->
<plurals name="TransferControlView_n_items">
<item quantity="one">%d Item</item>
<item quantity="other">%d Items</item>
<item quantity="one">%d item</item>
<item quantity="other">%d items</item>
</plurals>
<!--UnauthorizedReminder-->
<string name="UnauthorizedReminder_device_no_longer_registered">Apparaat niet meer geregistreerd</string>
@@ -665,7 +668,7 @@
<string name="VideoPlayer_error_playing_video">Fout bij afspelen van video</string>
<!--WebRtcCallActivity-->
<string name="WebRtcCallActivity_to_answer_the_call_from_s_give_signal_access_to_your_microphone">Geef Signal toegang tot je microfoon om de oproep van %s te beantwoorden.</string>
<string name="WebRtcCallActivity_signal_requires_microphone_and_camera_permissions_in_order_to_make_or_receive_calls">Signal heeft toegang nodig tot de microfoon en de camera om oproepen te maken of te ontvangen, maar deze toegang is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer \"Machtigingen\" en schakel \"Microfoon\" en \"Camera\" in.</string>
<string name="WebRtcCallActivity_signal_requires_microphone_and_camera_permissions_in_order_to_make_or_receive_calls">Signal heeft toegang nodig tot de microfoon en de camera om oproepen te maken of te ontvangen, maar deze toegang is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer Machtigingen en schakel Microfoon en Camera in.</string>
<!--WebRtcCallScreen-->
<string name="WebRtcCallScreen_new_safety_numbers">Je veiligheidsnummer met %1$s is veranderd. Dit kan betekenen dat iemand je communicatie probeert te onderscheppen, of gewoon dat %2$s Signal opnieuw geïnstalleerd heeft.</string>
<string name="WebRtcCallScreen_you_may_wish_to_verify_this_contact">Het wordt aanbevolen de veiligheidsnummers met deze contactpersoon te verifiëren.</string>
@@ -698,16 +701,16 @@
<string name="contact_selection_activity__enter_name_or_number">Typ naam of nummer</string>
<!--contact_selection_group_activity-->
<string name="contact_selection_group_activity__no_contacts">Geen contactpersonen.</string>
<string name="contact_selection_group_activity__finding_contacts">Contactpersonen laden...</string>
<string name="contact_selection_group_activity__finding_contacts">Contactpersonen laden</string>
<!--single_contact_selection_activity-->
<string name="SingleContactSelectionActivity_contact_photo">Foto van contactpersoon</string>
<!--ContactSelectionListFragment-->
<string name="ContactSelectionListFragment_signal_requires_the_contacts_permission_in_order_to_display_your_contacts">Signal heeft toegang tot je lijst met contacten nodig om je contacten weer te kunnen geven, maar toestemming om contacten in te zien is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer \"Machtigingen\" en schakel \"Contacten\" in.</string>
<string name="ContactSelectionListFragment_signal_requires_the_contacts_permission_in_order_to_display_your_contacts">Signal heeft toegang tot je lijst met contacten nodig om je contacten weer te kunnen geven, maar toestemming om contacten in te zien is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer Machtigingen en schakel Contacten in.</string>
<string name="ContactSelectionListFragment_error_retrieving_contacts_check_your_network_connection">Fout bij ophalen van contactpersonen, controleer je netwerkverbinding</string>
<!--blocked_contacts_fragment-->
<string name="blocked_contacts_fragment__no_blocked_contacts">Geen geblokkeerde contactpersonen</string>
<!--contact_selection_list_fragment-->
<string name="contact_selection_list_fragment__signal_needs_access_to_your_contacts_in_order_to_display_them">Signal heeft toegang nodig tot je contacten om contactpersonen weer te kunnen geven.</string>
<string name="contact_selection_list_fragment__signal_needs_access_to_your_contacts_in_order_to_display_them">Signal heeft toegang nodig tot je contacten om contactpersonen te kunnen weergeven.</string>
<string name="contact_selection_list_fragment__show_contacts">Contactpersonen tonen</string>
<!--conversation_activity-->
<string name="conversation_activity__type_message_push">Signal-bericht</string>
@@ -729,7 +732,7 @@
<!--conversation_item_sent-->
<string name="conversation_item_sent__send_failed_indicator_description">Verzenden mislukt</string>
<string name="conversation_item_sent__pending_approval_description">In afwachting van goedkeuring</string>
<string name="conversation_item_sent__delivered_description">Bezorgd </string>
<string name="conversation_item_sent__delivered_description">Afgeleverd</string>
<string name="conversation_item_sent__message_read">Bericht gelezen</string>
<!--conversation_item_received-->
<string name="conversation_item_received__contact_photo_description">Foto van contactpersoon</string>
@@ -747,7 +750,7 @@
<!--conversation_fragment-->
<string name="conversation_fragment__scroll_to_the_bottom_content_description">Scroll naar bodem</string>
<!--country_selection_fragment-->
<string name="country_selection_fragment__loading_countries">Landen laden...</string>
<string name="country_selection_fragment__loading_countries">Landen laden</string>
<string name="country_selection_fragment__search">Zoeken</string>
<!--device_add_fragment-->
<string name="device_add_fragment__scan_the_qr_code_displayed_on_the_device_to_link">Scan de weergegeven QR-code op het te koppelen apparaat</string>
@@ -775,7 +778,7 @@
<string name="expiration_minutes_abbreviated">%dm</string>
<plurals name="expiration_hours">
<item quantity="one">%d uur</item>
<item quantity="other">%d uur</item>
<item quantity="other">%d uren</item>
</plurals>
<string name="expiration_hours_abbreviated">%dh</string>
<plurals name="expiration_days">
@@ -789,10 +792,10 @@
</plurals>
<string name="expiration_weeks_abbreviated">%dw</string>
<!--unverified safety numbers-->
<string name="IdentityUtil_unverified_banner_one">Je veiligheidsnummer met %s is veranderd en niet meer geverifieerd</string>
<string name="IdentityUtil_unverified_banner_one">Je veiligheidsnummer met %s is veranderd en is niet meer geverifieerd</string>
<string name="IdentityUtil_unverified_banner_two">Je veiligheidsnummers met %1$s en %2$s zijn niet meer geverifieerd</string>
<string name="IdentityUtil_unverified_banner_many">Je veiligheidsnummers met %1$s, %2$s en %3$s zijn niet meer geverifieerd</string>
<string name="IdentityUtil_unverified_dialog_one">Je veiligheidsnummer met %1$s is veranderd en niet meer geverifieerd. Dit kan betekenen dat iemand je communicatie probeert te onderscheppen, of gewoon dat %1$s Signal opnieuw geïnstalleerd heeft.</string>
<string name="IdentityUtil_unverified_dialog_one">Je veiligheidsnummer met %1$s is veranderd en niet meer geverifieerd. Dit kan betekenen dat iemand je communicatie probeert te onderscheppen, of gewoon dat %1$s Signal opnieuw heeft geïnstalleerd.</string>
<string name="IdentityUtil_unverified_dialog_two">Je veiligheidsnummers met %1$s en %2$s zijn niet meer geverifieerd. Dit kan betekenen dat iemand je communicatie probeert te onderscheppen, of gewoon dat ze Signal opnieuw geïnstalleerd hebben.</string>
<string name="IdentityUtil_unverified_dialog_many">Je veiligheidsnummers met %1$s, %2$s en %3$s zijn niet meer geverifieerd. Dit kan betekenen dat iemand je communicatie probeert te onderscheppen, of gewoon dat ze Signal opnieuw geïnstalleerd hebben.</string>
<string name="IdentityUtil_untrusted_dialog_one">Je veiligheidsnummer met %s is net veranderd.</string>
@@ -815,28 +818,28 @@
<string name="log_submit_activity__button_submit">Indienen</string>
<string name="log_submit_activity__button_got_it">Begrepen</string>
<string name="log_submit_activity__button_compose_email">E-mail opstellen</string>
<string name="log_submit_activity__this_log_will_be_posted_online">Dit logbestand wordt publiek beschikbaar gesteld op internet zodat de ontwikkelaars het kunnen zien, je kunt het bestuderen en aanpassen voor je het verzend.</string>
<string name="log_submit_activity__loading_logs">Logbestanden inladen...</string>
<string name="log_submit_activity__uploading_logs">Logbestanden aan het uploaden...</string>
<string name="log_submit_activity__success">Succesvol!</string>
<string name="log_submit_activity__copy_this_url_and_add_it_to_your_issue">Kopieer deze URL en voeg het toe aan het foutrapport of aan een e-mail naar de helpdesk:\n\n<b>%1$s</b>\n</string>
<string name="log_submit_activity__this_log_will_be_posted_online">Dit logbestand wordt publiek beschikbaar gesteld op internet zodat de ontwikkelaars het kunnen zien, je kunt het bestuderen en aanpassen voor je het verzendt.</string>
<string name="log_submit_activity__loading_logs">Logbestanden inladen</string>
<string name="log_submit_activity__uploading_logs">Logbestanden aan het uploaden</string>
<string name="log_submit_activity__success">Succesvol verzonden!</string>
<string name="log_submit_activity__copy_this_url_and_add_it_to_your_issue">Kopieer deze URL en voeg deze toe aan het foutrapport of aan een e-mail naar de helpdesk:\n\n<b>%1$s</b>\n</string>
<string name="log_submit_activity__copied_to_clipboard">Gekopieerd naar klembord</string>
<string name="log_submit_activity__choose_email_app">Kies e-mail app</string>
<string name="log_submit_activity__please_review_this_log_from_my_app">Bestudeer a.u.b. dit logbestand van mijn app: %1$s</string>
<string name="log_submit_activity__choose_email_app">Kies e-mail-app</string>
<string name="log_submit_activity__please_review_this_log_from_my_app">Gelieve dit logbestand van mijn app te bestuderen: %1$s</string>
<string name="log_submit_activity__network_failure">Netwerkfout. Probeer het opnieuw.</string>
<!--database_migration_activity-->
<string name="database_migration_activity__would_you_like_to_import_your_existing_text_messages">Wil je je huidige tekstberichtendatabase importeren naar de versleutelde database van Signal?</string>
<string name="database_migration_activity__the_default_system_database_will_not_be_modified">De standaardsysteemdatabase zal niet gewijzigd of aangepast worden op enige wijze.</string>
<string name="database_migration_activity__skip">Overslaan</string>
<string name="database_migration_activity__import">Importeer</string>
<string name="database_migration_activity__import">Importeren</string>
<string name="database_migration_activity__this_could_take_a_moment_please_be_patient">Dit kan even duren. Even geduld, we zullen je melden wanneer het importeren voltooid is.</string>
<string name="database_migration_activity__importing">AAN HET IMPORTEREN</string>
<string name="database_migration_activity__importing">BEZIG MET IMPORTEREN</string>
<!--database_upgrade_activity-->
<string name="database_upgrade_activity__updating_database">Database bijwerken...</string>
<string name="database_upgrade_activity__updating_database">Database bijwerken</string>
<string name="import_fragment__import_system_sms_database">Sms-berichten uit de systeemdatabase importeren?</string>
<string name="import_fragment__import_the_database_from_the_default_system">Importeer de database van de standaardberichtenapp</string>
<string name="import_fragment__import_plaintext_backup">Onversleutelde back-up importeren</string>
<string name="import_fragment__import_a_plaintext_backup_file">Importeer een onversleutelde back-up. Compatibel met \'Sms back-up &amp; Herstellen\'.</string>
<string name="import_fragment__import_a_plaintext_backup_file">Importeer een onversleutelde back-up. Compatibel met Sms back-up &amp; Herstellen.</string>
<!--load_more_header-->
<string name="load_more_header__see_full_conversation">Bekijk volledig gesprek</string>
<string name="load_more_header__loading">Aan het laden</string>
@@ -845,7 +848,7 @@
<!--message_recipients_list_item-->
<string name="message_recipients_list_item__view">WEERGEVEN</string>
<string name="message_recipients_list_item__resend">OPNIEUW VERZENDEN</string>
<string name="message_recipients_list_item__resending">Opnieuw aan het verzenden...</string>
<string name="message_recipients_list_item__resending">Opnieuw aan het verzenden</string>
<!--GroupUtil-->
<plurals name="GroupUtil_joined_the_group">
<item quantity="one">%1$s is toegevoegd aan de groep.</item>
@@ -858,7 +861,7 @@
<string name="prompt_passphrase_activity__unlock">Ontgrendelen</string>
<!--prompt_mms_activity-->
<string name="prompt_mms_activity__signal_requires_mms_settings_to_deliver_media_and_group_messages">Signal heeft mms-instellingen nodig om mediaberichten te kunnen versturen via je telefoonprovider. Je apparaat maakt deze informatie niet beschikbaar. Dit komt vaker voor bij gelockte apparaten en andere beperkende configuraties.</string>
<string name="prompt_mms_activity__to_send_media_and_group_messages_tap_ok">Om media- en groepsberichten te verzenden tik je op \'Oké\' en voer je de gevraagde gegevens in. De mms-instellingen voor je provider kunnen meestal gevonden worden door online te zoeken naar \"naam-van-je-provider APN\". Dit hoef je maar één keer te doen.</string>
<string name="prompt_mms_activity__to_send_media_and_group_messages_tap_ok">Om media- en groepsberichten te verzenden tik je op Oké en voer je de gevraagde gegevens in. De mms-instellingen voor je provider kunnen meestal gevonden worden door online te zoeken naar naam-van-je-provider APN. Dit hoef je maar één keer te doen.</string>
<!--profile_create_activity-->
<string name="profile_create_activity__set_later">Later instellen</string>
<string name="profile_create_activity__finish">KLAAR</string>
@@ -872,7 +875,7 @@
<string name="recipient_preferences__custom_notifications_settings">Systeemmeldingsinstellingen</string>
<string name="recipient_preferences__notification_sound">Meldingsgeluid</string>
<string name="recipient_preferences__vibrate">Vibreren</string>
<string name="recipient_preferences__block">Blokkeer deze groep</string>
<string name="recipient_preferences__block">Blokkeren</string>
<string name="recipient_preferences__color">Kleur</string>
<string name="recipient_preferences__view_safety_number">Veiligheidsnummer weergeven</string>
<string name="recipient_preferences__chat_settings">Gespreksinstellingen</string>
@@ -885,7 +888,7 @@
<string name="redphone_call_controls__flip_camera_rear">Andere camera</string>
<!--registration_activity-->
<string name="registration_activity__phone_number">TELEFOONNUMMER</string>
<string name="registration_activity__registration_will_transmit_some_contact_information_to_the_server_temporariliy">Signal maakt het eenvoudig om met je bestaande telefoonnummer en adresboek te communiceren. Vrienden en contactpersonen die jou al via je telefoon kunnen bereiken zullen eenvoudig contact met jou kunnen opnemen via Signal.\n\nRegistreren deelt enige informatie met de server. Die informatie wordt niet bewaard.</string>
<string name="registration_activity__registration_will_transmit_some_contact_information_to_the_server_temporariliy">Signal maakt het eenvoudig om met je bestaande telefoonnummer en adresboek te communiceren. Vrienden en contactpersonen die je al via je telefoon kunnen bereiken zullen eenvoudig contact met je kunnen opnemen via Signal.\n\nRegistreren deelt enige informatie met de server. Die informatie wordt niet bewaard.</string>
<string name="registration_activity__verify_your_number">Verifieer je nummer</string>
<string name="registration_activity__please_enter_your_mobile_number_to_receive_a_verification_code_carrier_rates_may_apply">Voer je telefoonnummer in om een verificatiecode te ontvangen. Extra providerkosten zijn mogelijk van toepassing.</string>
<!--recipients_panel-->
@@ -899,7 +902,7 @@
<!--verify_display_fragment-->
<string name="verify_display_fragment__if_you_wish_to_verify_the_security_of_your_end_to_end_encryption_with_s"><![CDATA[Als je de veiligheid van je eind-tot-eindversleuteling met %s wilt verifiëren, vergelijk dan de bovenstaande nummers met de nummers op het apparaat van je contact. Je kan ook de code op hun telefoon scannen, of hen vragen jouw code te scannen. <a href="https://signal.org/redirect/safety-numbers">Lees meer.</a>]]></string>
<string name="verify_display_fragment__tap_to_scan">Tik om te scannen</string>
<string name="verify_display_fragment__loading">Aan het laden...</string>
<string name="verify_display_fragment__loading">Bezig met laden</string>
<string name="verify_display_fragment__verified">Geverifieerd</string>
<!--verify_identity-->
<string name="verify_identity__share_safety_number">Veiligheidsnummer delen</string>
@@ -910,7 +913,7 @@
<string name="message_details_header__issues_need_your_attention">Enkele dingen vergen je aandacht.</string>
<string name="message_details_header__sent">Verzonden</string>
<string name="message_details_header__received">Ontvangen</string>
<string name="message_details_header__disappears">Verdwijnt</string>
<string name="message_details_header__disappears">Wist zichzelf</string>
<string name="message_details_header__via">Via</string>
<string name="message_details_header__to">Naar:</string>
<string name="message_details_header__from">Van:</string>
@@ -921,7 +924,7 @@
<string name="AndroidManifest__change_passphrase">Wachtwoord wijzigen</string>
<string name="AndroidManifest__verify_safety_number">Veiligheidsnummer verifiëren</string>
<string name="AndroidManifest__log_submit">Foutopsporingslogboek indienen</string>
<string name="AndroidManifest__media_preview">Media voorbeeld</string>
<string name="AndroidManifest__media_preview">Mediavoorbeeld</string>
<string name="AndroidManifest__message_details">Berichtdetails</string>
<string name="AndroidManifest__linked_devices">Gekoppelde apparaten</string>
<string name="AndroidManifest__invite_friends">Vrienden uitnodigen</string>
@@ -966,6 +969,8 @@
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Signal gebruiken voor alle inkomende multimediaberichten</string>
<string name="preferences__pref_enter_sends_title">Enter-toets verzendt</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Gebruik de Enter-toets voor verzenden van tekstberichten</string>
<string name="preferences__send_link_previews">Voorbeeldweergaven verzenden</string>
<string name="preferences__previews_are_supported_for">Voorbeelden worden ondersteund voor koppelingen naar Imgur, Instagram, Reddit en YouTube</string>
<string name="preferences__choose_identity">Identiteit kiezen</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Kies je contactgegevens uit de lijst met contactpersonen.</string>
<string name="preferences__change_passphrase">Wachtwoord wijzigen</string>
@@ -1014,8 +1019,8 @@
<string name="preferences__mmsc_password">MMSC-wachtwoord</string>
<string name="preferences__sms_delivery_reports">Sms-ontvangstbevestigingen</string>
<string name="preferences__request_a_delivery_report_for_each_sms_message_you_send">Vraag een ontvangstbevestiging voor ieder verzonden sms-bericht</string>
<string name="preferences__automatically_delete_older_messages_once_a_conversation_exceeds_a_specified_length">Verwijder automatisch oudere berichten wanneer een gesprek meer dan een bepaald aantal berichten bevat</string>
<string name="preferences__delete_old_messages">Verwijder oude berichten</string>
<string name="preferences__automatically_delete_older_messages_once_a_conversation_exceeds_a_specified_length">Wis automatisch oudere berichten wanneer een gesprek meer dan een bepaald aantal berichten bevat</string>
<string name="preferences__delete_old_messages">Wis oude berichten</string>
<string name="preferences__chats">Gesprekken en media</string>
<string name="preferences__conversation_length_limit">Gesprekslengtelimiet</string>
<string name="preferences__trim_all_conversations_now">Oude berichten nu verwijderen</string>
@@ -1039,14 +1044,14 @@
<string name="preferences__if_typing_indicators_are_disabled_you_wont_be_able_to_see_typing_indicators">Als typindicatoren zijn uitgeschakeld, kunnen anderen niet zien of je aan het typen bent, maar je kunt ook niet zien wanneer anderen aan het typen zijn.</string>
<string name="preferences__request_keyboard_to_disable_personalized_learning">Schakel gepersonaliseerd leren van toetsenbord uit</string>
<string name="preferences_app_protection__blocked_contacts">Geblokkeerde contactpersonen</string>
<string name="preferences_chats__when_using_mobile_data">Wanneer mobiele gegevensoverdracht gebruikt wordt</string>
<string name="preferences_chats__when_using_mobile_data">Wanneer mobielegegevensoverdracht gebruikt wordt</string>
<string name="preferences_chats__when_using_wifi">Wanneer wifi gebruikt wordt</string>
<string name="preferences_chats__when_roaming">Bij roaming</string>
<string name="preferences_chats__media_auto_download">Media automatisch downloaden</string>
<string name="preferences_chats__message_trimming">Bericht inkorten</string>
<string name="preferences_advanced__use_system_emoji">Gebruik systeem-emoji</string>
<string name="preferences_advanced__disable_signal_built_in_emoji_support">De ingebouwde emoji-ondersteuning van Signal uitschakelen</string>
<string name="preferences_advanced__relay_all_calls_through_the_signal_server_to_avoid_revealing_your_ip_address">Breng oproepen tot stand via de Signal server om te voorkomen dat je gesprekspartner jouw IP-adres kan achterhalen. Dit zorgt wel voor een verminderde geluidskwaliteit.</string>
<string name="preferences_advanced__relay_all_calls_through_the_signal_server_to_avoid_revealing_your_ip_address">Breng oproepen tot stand via de Signal-server om te voorkomen dat je gesprekspartner jouw IP-adres kan achterhalen. Dit leidt wel tot een verminderde geluidskwaliteit.</string>
<string name="preferences_advanced__always_relay_calls">Alle oproepen doorsturen</string>
<string name="preferences_app_protection__app_access">Toegang tot app</string>
<string name="preferences_app_protection__communication">Communicatie</string>
@@ -1054,7 +1059,7 @@
<string name="preferences_notifications__messages">Berichten</string>
<string name="preferences_notifications__events">Gebeurtenissen</string>
<string name="preferences_notifications__in_chat_sounds">Geluiden in gesprek</string>
<string name="preferences_notifications__show">Laat zien</string>
<string name="preferences_notifications__show">Tonen</string>
<string name="preferences_notifications__calls">Oproepen</string>
<string name="preferences_notifications__ringtone">Beltoon</string>
<string name="preferences_chats__show_invitation_prompts">Uitnodigingsvragen tonen</string>
@@ -1064,7 +1069,7 @@
<string name="preferences_notifications__priority">Urgentie instellen</string>
<string name="preferences_communication__category_sealed_sender">Verzegelde afzender</string>
<string name="preferences_communication__sealed_sender_display_indicators">Toon of verzegelde afzender is gebruikt</string>
<string name="preferences_communication__sealed_sender_display_indicators_description">Laat een statusicoon zien als je drukt op \"Berichtdetails\" bij berichten die zijn afgeleverd met een verzegelde afzender.</string>
<string name="preferences_communication__sealed_sender_display_indicators_description">Laat een statusicoon zien als je drukt op Berichtdetails bij berichten die zijn afgeleverd met een verzegelde afzender.</string>
<string name="preferences_communication__sealed_sender_allow_from_anyone">Van iedereen toestaan</string>
<string name="preferences_communication__sealed_sender_allow_from_anyone_description">Verzegelde afzender inschakelen voor berichten van niet-contactpersonen en mensen waarmee je jouw profiel niet hebt gedeeld.</string>
<string name="preferences_communication__sealed_sender_learn_more">Meer leren</string>
@@ -1072,7 +1077,7 @@
<!--menus-->
<!--****************************************-->
<!--contact_selection_list-->
<string name="contact_selection_list__unknown_contact">Nieuw bericht naar...</string>
<string name="contact_selection_list__unknown_contact">Nieuw bericht naar</string>
<!--conversation_callable_insecure-->
<string name="conversation_callable_insecure__menu_call">Bellen</string>
<!--conversation_callable_secure-->
@@ -1080,20 +1085,20 @@
<!--conversation_context-->
<string name="conversation_context__menu_message_details">Berichtdetails</string>
<string name="conversation_context__menu_copy_text">Tekst kopiëren</string>
<string name="conversation_context__menu_delete_message">Bericht verwijderen</string>
<string name="conversation_context__menu_delete_message">Bericht wissen</string>
<string name="conversation_context__menu_forward_message">Bericht doorsturen</string>
<string name="conversation_context__menu_resend_message">Bericht opnieuw verzenden</string>
<string name="conversation_context__menu_reply_to_message">Bericht beantwoorden</string>
<!--conversation_context_image-->
<string name="conversation_context_image__save_attachment">Bijlage opslaan</string>
<!--conversation_expiring_off-->
<string name="conversation_expiring_off__disappearing_messages">Zelf wissende berichten</string>
<string name="conversation_expiring_off__disappearing_messages">Zelf-wissende berichten</string>
<!--conversation_expiring_on-->
<string name="menu_conversation_expiring_on__messages_expiring">Zichzelf vernietigende berichten</string>
<!--conversation_insecure-->
<string name="conversation_insecure__invite">Uitnodigen</string>
<!--conversation_list_batch-->
<string name="conversation_list_batch__menu_delete_selected">Geselecteerde verwijderen</string>
<string name="conversation_list_batch__menu_delete_selected">Geselecteerde gesprekken wissen</string>
<string name="conversation_list_batch__menu_select_all">Alles selecteren</string>
<string name="conversation_list_batch_archive__menu_archive_selected">Selectie archiveren</string>
<string name="conversation_list_batch_unarchive__menu_unarchive_selected">Selectie dearchiveren</string>
@@ -1171,24 +1176,24 @@
<!--redphone_audio_popup_menu-->
<!--Trimmer-->
<string name="trimmer__deleting">Aan het verwijderen</string>
<string name="trimmer__deleting_old_messages">Oude berichten aan het verwijderen...</string>
<string name="trimmer__old_messages_successfully_deleted">Oude berichten succesvol verwijderd</string>
<string name="trimmer__deleting_old_messages">Oude berichten aan het verwijderen</string>
<string name="trimmer__old_messages_successfully_deleted">Oude berichten succesvol gewist</string>
<!--transport_selection_list_item-->
<string name="transport_selection_list_item__transport_icon">Transport methode pictogram</string>
<string name="ConversationListFragment_loading">Aan het laden...</string>
<string name="CallNotificationBuilder_connecting">Aan het verbinden...</string>
<string name="transport_selection_list_item__transport_icon">Transportmethodepictogram</string>
<string name="ConversationListFragment_loading">Bezig met laden</string>
<string name="CallNotificationBuilder_connecting">Aan het verbinden</string>
<string name="Permissions_permission_required">Toestemming vereist</string>
<string name="ConversationActivity_signal_needs_sms_permission_in_order_to_send_an_sms">Signal heeft toestemming nodig om sms-berichten te sturen, maar deze toestemming is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer \"Machtigingen\" en schakel \"Sms\" in.</string>
<string name="ConversationActivity_signal_needs_sms_permission_in_order_to_send_an_sms">Signal heeft toestemming nodig om sms-berichten te sturen, maar deze toestemming is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer Machtigingen en schakel Sms in.</string>
<string name="Permissions_continue">Doorgaan</string>
<string name="Permissions_not_now">Niet nu</string>
<string name="ConversationListActivity_signal_needs_contacts_permission_in_order_to_search_your_contacts_but_it_has_been_permanently_denied">Signal heeft toegang nodig tot je lijst met contacten om contactpersonen te zoeken, maar toestemming om de contactenlijst in te zien is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer \"Machtigingen\" en schakel \"Contacten\" in.</string>
<string name="ConversationListActivity_signal_needs_contacts_permission_in_order_to_search_your_contacts_but_it_has_been_permanently_denied">Signal heeft toegang nodig tot je lijst met contacten om contactpersonen te zoeken, maar toestemming om de contactenlijst in te zien is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer Machtigingen en schakel Contacten in.</string>
<string name="conversation_activity__enable_signal_messages">SIGNAL-BERICHTEN INSCHAKELEN</string>
<string name="SQLCipherMigrationHelper_migrating_signal_database">Signal-database wordt gemigreerd</string>
<string name="PushDecryptJob_new_locked_message">Nieuw vergrendeld bericht</string>
<string name="PushDecryptJob_unlock_to_view_pending_messages">Ontgrendel om je berichten te lezen</string>
<string name="ExperienceUpgradeActivity_unlock_to_complete_update">Ontgrendel om bijwerken te voltooien</string>
<string name="ExperienceUpgradeActivity_please_unlock_signal_to_complete_update">Ontgrendel Signal om bijwerken te voltooien</string>
<string name="enter_backup_passphrase_dialog__backup_passphrase">Back-up wachtwoord</string>
<string name="enter_backup_passphrase_dialog__backup_passphrase">Back-upwachtwoord</string>
<string name="backup_enable_dialog__backups_will_be_saved_to_external_storage_and_encrypted_with_the_passphrase_below_you_must_have_this_passphrase_in_order_to_restore_a_backup">Back-ups worden opgeslagen op het externe opslaggeheugen en versleuteld met het wachtwoord hieronder. Je hebt dit wachtwoord nodig om de back-up terug te zetten.</string>
<string name="backup_enable_dialog__i_have_written_down_this_passphrase">Ik heb dit wachtwoord opgeschreven. Zonder dit wachtwoord kan ik deze back-up niet terugzetten.</string>
<string name="registration_activity__restore_backup">Back-up terugzetten</string>
@@ -1201,8 +1206,8 @@
<string name="RegistrationActivity_restore">Herstellen</string>
<string name="RegistrationActivity_backup_failure_downgrade">Kan geen back-ups importeren uit nieuwere versies van Signal</string>
<string name="RegistrationActivity_incorrect_backup_passphrase">Verkeerd back-upwachtwoord</string>
<string name="RegistrationActivity_checking">Aan het controleren...</string>
<string name="RegistrationActivity_d_messages_so_far">%d berichten tot nu toe...</string>
<string name="RegistrationActivity_checking">Aan het controleren</string>
<string name="RegistrationActivity_d_messages_so_far">%d berichten tot nu toe</string>
<string name="RegistrationActivity_restore_from_backup">Back-up terugzetten?</string>
<string name="RegistrationActivity_restore_your_messages_and_media_from_a_local_backup">Zet je berichten en media terug van een lokale back-up. Als je de back-up nu niet terugzet, kun je deze later niet meer terugzetten.</string>
<string name="RegistrationActivity_backup_size_s">Back-upgrootte: %s</string>
@@ -1210,14 +1215,14 @@
<string name="BackupDialog_enable_local_backups">Lokale back-ups inschakelen?</string>
<string name="BackupDialog_enable_backups">Back-ups inschakelen</string>
<string name="BackupDialog_please_acknowledge_your_understanding_by_marking_the_confirmation_check_box">Vink het selectievakje aan om te verklaren dat je het begrijpt.</string>
<string name="BackupDialog_delete_backups">Back-ups verwijderen?</string>
<string name="BackupDialog_disable_and_delete_all_local_backups">Uitschakelen en alle lokale back-ups verwijderen?</string>
<string name="BackupDialog_delete_backups_statement">Back-ups verwijderen</string>
<string name="BackupDialog_delete_backups">Back-ups wissen?</string>
<string name="BackupDialog_disable_and_delete_all_local_backups">Uitschakelen en alle lokale back-ups wissen?</string>
<string name="BackupDialog_delete_backups_statement">Back-ups wissen</string>
<string name="BackupDialog_copied_to_clipboard">Gekopieerd naar klembord</string>
<string name="ChatsPreferenceFragment_signal_requires_external_storage_permission_in_order_to_create_backups">Signal heeft toegang nodig tot de externe opslagruimte om back-ups te kunnen maken, maar deze is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer \"Machtigingen\" en schakel \"Opslagruimte\" in.</string>
<string name="ChatsPreferenceFragment_signal_requires_external_storage_permission_in_order_to_create_backups">Signal heeft toegang nodig tot de externe opslagruimte om back-ups te kunnen maken, maar deze is permanent geweigerd. Ga naar de instellingen voor deze app, selecteer Machtigingen en schakel Opslagruimte in.</string>
<string name="ChatsPreferenceFragment_last_backup_s">Laatste back-up: %s</string>
<string name="ChatsPreferenceFragment_in_progress">Bezig</string>
<string name="LocalBackupJob_creating_backup">Back-up aan het maken...</string>
<string name="LocalBackupJob_creating_backup">Back-up aan het maken</string>
<string name="ProgressPreference_d_messages_so_far">%d berichten tot nu toe</string>
<string name="RegistrationActivity_verify_s">%s verifiëren</string>
<string name="RegistrationActivity_please_enter_the_verification_code_sent_to_s">Voer de verificatiecode in die naar %s verzonden is.</string>

View File

@@ -373,6 +373,7 @@
<!--MediaPickerActivity-->
<!--MediaPickerItemFragment-->
<!--MediaSendActivity-->
<string name="MediaSendActivity_add_a_caption">Legg til bildetekst …</string>
<!--MediaRepository-->
<string name="MediaRepository_all_media">All media</string>
<!--MessageRecord-->

View File

@@ -110,7 +110,7 @@
<!--ConversationItem-->
<string name="ConversationItem_error_not_delivered">Wysyłanie nie powiodło się, dotknij, aby wyświetlić szczegóły</string>
<string name="ConversationItem_received_key_exchange_message_tap_to_process">Otrzymano wiadomość wymiany kluczy, dotknij aby kontynuować.</string>
<string name="ConversationItem_group_action_left">%1$s opuścił grupę.</string>
<string name="ConversationItem_group_action_left">%1$s opuścił(a) grupę.</string>
<string name="ConversationItem_click_to_approve_unencrypted">Wysyłanie nie powiodło się, dotknij w celu użycia niezabezpieczonej alternatywy</string>
<string name="ConversationItem_click_to_approve_unencrypted_sms_dialog_title">Fallback do nieszyfrowanej wiadomości SMS?</string>
<string name="ConversationItem_click_to_approve_unencrypted_mms_dialog_title">Fallback do nieszyfrowanych wiadomości MMS?</string>
@@ -129,7 +129,7 @@
<string name="ConversationActivity_sorry_there_was_an_error_setting_your_attachment">Przepraszamy, wystąpił błąd podczas dodawania załącznika.</string>
<string name="ConversationActivity_recipient_is_not_a_valid_sms_or_email_address_exclamation">Podany numer lub adres e-mail jest niepoprawny!</string>
<string name="ConversationActivity_message_is_empty_exclamation">Wiadomość jest pusta!</string>
<string name="ConversationActivity_group_members">Użytkownicy grupy</string>
<string name="ConversationActivity_group_members">Członkowie grupy</string>
<string name="ConversationActivity_invalid_recipient">Nieprawidłowy adresat!</string>
<string name="ConversationActivity_added_to_home_screen">Dodano do ekranu głównego</string>
<string name="ConversationActivity_calls_not_supported">Połączenia nie są obsługiwane</string>
@@ -312,6 +312,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Włącz wskaźniki pisania</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Włącz wskaźniki pisania</string>
<string name="ExperienceUpgradeActivity_no_thanks">Nie dzięki</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Przedstawiamy podgląd linków.</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Opcjonalne podglądy linków są teraz obsługiwane dla niektórych najpopularniejszych witryn w Internecie.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">W dowolnej chwili możesz wyłączyć lub włączyć tę funkcję w ustawieniach Signal (Prywatność &amp;gt Podgląd linków).</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Pobieranie wiadomości...</string>
<!--GcmRefreshJob-->
@@ -580,7 +583,7 @@ Otrzymano wiadomość wymiany klucz dla niepoprawnej wersji protokołu.</string>
<string name="ThreadRecord_left_the_group">Opuścił(a) grupę</string>
<string name="ThreadRecord_secure_session_reset">Reset bezpiecznej sesji.</string>
<string name="ThreadRecord_draft">Szkic:</string>
<string name="ThreadRecord_called">Ty dzwoniłeś(aś)</string>
<string name="ThreadRecord_called">Dzwoniłeś(aś)</string>
<string name="ThreadRecord_called_you">Dzwonił(a)</string>
<string name="ThreadRecord_missed_call">Nieodebrane połączenie</string>
<string name="ThreadRecord_media_message">Wiadomość multimedialna</string>
@@ -707,7 +710,7 @@ Otrzymano wiadomość wymiany klucz dla niepoprawnej wersji protokołu.</string>
<string name="WebRtcCallScreen_accept">Akceptuj</string>
<string name="WebRtcCallScreen_end_call">Zakończ rozmowę</string>
<!--WebRtcCallControls-->
<string name="WebRtcCallControls_tap_to_enable_your_video">Dotnij, aby włączyć wideo</string>
<string name="WebRtcCallControls_tap_to_enable_your_video">Dotknij, aby włączyć wideo</string>
<!--attachment_type_selector-->
<string name="attachment_type_selector__audio">Audio</string>
<string name="attachment_type_selector__audio_description">Dźwięk</string>
@@ -894,10 +897,10 @@ Otrzymano wiadomość wymiany klucz dla niepoprawnej wersji protokołu.</string>
<string name="message_recipients_list_item__resending">Ponowne wysyłanie...</string>
<!--GroupUtil-->
<plurals name="GroupUtil_joined_the_group">
<item quantity="one">%1$s dołączył do grupy.</item>
<item quantity="one">%1$s dołączył(a) do grupy.</item>
<item quantity="few">%1$s dołączyli do grupy.</item>
<item quantity="many">%1$s dołączył do grupy.</item>
<item quantity="other">%1$s dołączył do grupy.</item>
<item quantity="many">%1$s dołączyli do grupy.</item>
<item quantity="other">%1$s dołączyli do grupy.</item>
</plurals>
<string name="GroupUtil_group_name_is_now">Aktualna nazwa grupy to \'%1$s\'.</string>
<!--profile_group_share_view-->
@@ -1016,6 +1019,8 @@ Otrzymano wiadomość wymiany klucz dla niepoprawnej wersji protokołu.</string>
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Używaj Signal dla wszystkich wiadomości multimedialnych</string>
<string name="preferences__pref_enter_sends_title">Enter wysyła</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Wciśnięcie przycisku Enter spowoduje wysłanie wiadomości</string>
<string name="preferences__send_link_previews">Podgląd linków</string>
<string name="preferences__previews_are_supported_for">Podglądy linków są obsługiwane dla Imgur, Instagram, Reddit i YouTube.</string>
<string name="preferences__choose_identity">Wybierz tożsamość</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Wybierz swój kontakt z listy kontaktów.</string>
<string name="preferences__change_passphrase">Zmień hasło</string>

View File

@@ -284,6 +284,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Ativar indicadores de escrever</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Ativar indicadores de escrever</string>
<string name="ExperienceUpgradeActivity_no_thanks">Não, obrigado</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Introdução à pré-visualização de hiperligações.</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Agora são suportadas pré-visualizações de hiperligações para os sites mais populares da Internet.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Pode desativar ou desativar esta funcionalidade a qualquer altura nas configurações do Signal (Privacidade &gt; Enviar pré-visualização de hiperligações).</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">A obter uma mensagem...</string>
<!--GcmRefreshJob-->
@@ -962,6 +965,8 @@ Mensagem de troca de chaves inválida para esta versão do protocolo.
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Utilizar o Signal para receber todas as mensagens multimédia </string>
<string name="preferences__pref_enter_sends_title">Tecla de enter envia</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Pressionar a tecla Enter envia mensagem de texto</string>
<string name="preferences__send_link_previews">Enviar pré-visualização de hiperligações</string>
<string name="preferences__previews_are_supported_for">As pré-visualizações são suportadas em hiperligações do Imgur, Instagram, Reddit, e YouTube.</string>
<string name="preferences__choose_identity">Escolher identidade</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Escolha o seu próprio contacto da lista de contactos.</string>
<string name="preferences__change_passphrase">Alterar frase-chave</string>

View File

@@ -157,6 +157,7 @@
<string name="ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video">Signal are nevoie de permisiunea pentru Cameră pentru a captura poze sau filme dar i-a fost refuzat accesul permanent. Vă rog navigați în meniul de setări al aplicației, selectați \"Permisiuni\" și activați \"Cameră\".</string>
<string name="ConversationActivity_signal_needs_camera_permissions_to_take_photos_or_video">Signal are nevoie de permisiunea pentru Cameră pentru a captura poze sau filme</string>
<string name="ConversationActivity_quoted_contact_message">%1$s %2$s</string>
<string name="ConversationActivity_signal_cannot_sent_sms_mms_messages_because_it_is_not_your_default_sms_app">Signal nu poate trimite mesaje SMS/MMS pentru că nu este aplicația implicită de SMS. Doriți să schimbați asta în setările dvs. Android?</string>
<string name="ConversationActivity_yes">Da</string>
<string name="ConversationActivity_no">Nu</string>
<!--ConversationAdapter-->
@@ -297,6 +298,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Activează indicatorii de tastare</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Activează indicatorii de tastare</string>
<string name="ExperienceUpgradeActivity_no_thanks">Nu, mulţumesc</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Vă prezentăm previzualizarea link-urilor</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Previzualizarea opțională de link-uri este acum suportată pentru unele dintre cele mai populare site-uri de pe Internet.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Puteți activa sau dezactiva această functionalitate oricând din setările Signal ( Confidențialitate &gt; Trimite previzualizarea link-urilor).</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Se obține un mesaj...</string>
<!--GcmRefreshJob-->
@@ -392,8 +396,16 @@
<string name="NotificationMmsMessageRecord_downloading_mms_message">Se descarcă mesajul MMS</string>
<string name="NotificationMmsMessageRecord_error_downloading_mms_message">Eroare la descărcarea mesajului MMS, apasă pentru reîncercare</string>
<!--MediaPickerActivity-->
<string name="MediaPickerActivity_send_to">Trimiteți la %s</string>
<!--MediaPickerItemFragment-->
<string name="MediaPickerItemFragment_tap_to_select">Apăsați pentru a selecta</string>
<plurals name="MediaPickerItemFragment_cant_share_more_than_n_items">
<item quantity="one">Nu puteți partaja mai mult de %d element.</item>
<item quantity="few">Nu puteți partaja mai mult de %d element.</item>
<item quantity="other">Nu puteți partaja mai mult de %d elemente.</item>
</plurals>
<!--MediaSendActivity-->
<string name="MediaSendActivity_add_a_caption">Adăugați un titlu...</string>
<!--MediaRepository-->
<string name="MediaRepository_all_media">Toate fișierele media</string>
<!--MessageRecord-->
@@ -981,6 +993,8 @@ Am primit mesajul conform căruia schimbul de chei a avut loc pentru o versiune
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Utilizează Signal pentru toate mesajele multimedia de intrare</string>
<string name="preferences__pref_enter_sends_title">Trimiteți cu Enter</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Apăsarea tastei Enter va trimite mesajele text</string>
<string name="preferences__send_link_previews">Trimite previzualizarea link-urilor</string>
<string name="preferences__previews_are_supported_for">Previzualizarea este suportată pentru link-uri Imgur, Instagram, Reddit și YouTube</string>
<string name="preferences__choose_identity">Selectează identitatea</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Selectează persoana din lista de contacte.</string>
<string name="preferences__change_passphrase">Schimbă parola</string>
@@ -1118,7 +1132,7 @@ Am primit mesajul conform căruia schimbul de chei a avut loc pentru o versiune
<string name="conversation_list_item_view__contact_photo_image">Poză contact</string>
<string name="conversation_list_item_view__archived">Arhivat</string>
<string name="conversation_list_item_inbox_zero__inbox_zeeerrro">Inbox zeeerrro</string>
<string name="conversation_list_item_inbox_zero__zip_zilch_zero_nada_nyou_re_all_caught_up">Gol. Zero. Nimic.\n Ești la curent cu toate!</string>
<string name="conversation_list_item_inbox_zero__zip_zilch_zero_nada_nyou_re_all_caught_up">Gol. Zero. Nimic.\n Sunteți la curent cu toate!</string>
<!--conversation_list_fragment-->
<string name="conversation_list_fragment__fab_content_description">Conversație nouă</string>
<string name="conversation_list_fragment__give_your_inbox_something_to_write_home_about_get_started_by_messaging_a_friend">Dă-i inbox-ului ceva de scris. Începeți prin a trimite unui prieten un mesaj.</string>
@@ -1247,10 +1261,10 @@ Am primit mesajul conform căruia schimbul de chei a avut loc pentru o versiune
<string name="preferences_app_protection__lock_signal_access_with_android_screen_lock_or_fingerprint">Blocați accesul la Signal prin ecranul de blocare Android sau prin amprentă</string>
<string name="preferences_app_protection__screen_lock_inactivity_timeout">Expirare timp blocare ecran pentru inactivitate</string>
<string name="AppProtectionPreferenceFragment_none">Niciuna</string>
<string name="registration_activity__the_registration_lock_pin_is_not_the_same_as_the_sms_verification_code_you_just_received_please_enter_the_pin_you_previously_configured_in_the_application">Codul PIN de Blocare a Înregistrării nu este același cu codul de verificare pe care tocmai l-ai primit prin SMS. Te rog să introduci PIN-ul configurat anterior în aplicație.</string>
<string name="registration_activity__the_registration_lock_pin_is_not_the_same_as_the_sms_verification_code_you_just_received_please_enter_the_pin_you_previously_configured_in_the_application">Codul PIN de Blocare a Înregistrării nu este același cu codul de verificare pe care tocmai l-ați primit prin SMS. Vă rugăm să introduci PIN-ul configurat anterior în aplicație.</string>
<string name="registration_activity__registration_lock_pin">PIN de blocare a înregistrării</string>
<string name="registration_activity__forgot_pin">Ați uitat PIN-ul?</string>
<string name="registration_lock_dialog_view__the_pin_can_consist_of_four_or_more_digits_if_you_forget_your_pin_you_could_be_locked_out_of_your_account_for_up_to_seven_days">PIN-ul poate fi din patru sau mai multe cifre. Dacă ai uitat PIN-ul ai putea fi blocat sa-ți accesezi contul până la șapte zile.</string>
<string name="registration_lock_dialog_view__the_pin_can_consist_of_four_or_more_digits_if_you_forget_your_pin_you_could_be_locked_out_of_your_account_for_up_to_seven_days">PIN-ul poate conține patru sau mai multe cifre. Dacă ați uitat PIN-ul ați putea fi blocat să vă accesi contul până la șapte zile.</string>
<string name="registration_lock_dialog_view__enter_pin">Introduceți PIN-ul</string>
<string name="registration_lock_dialog_view__confirm_pin">Confirmați PIN-ul</string>
<string name="registration_lock_reminder_view__enter_your_registration_lock_pin">Introduceți PIN-ul dvs. de blocare a înregistrării</string>
@@ -1267,7 +1281,7 @@ Am primit mesajul conform căruia schimbul de chei a avut loc pentru o versiune
<string name="RegistrationActivity_registration_of_this_phone_number_will_be_possible_without_your_registration_lock_pin_after_seven_days_have_passed">Înregistrarea acestui număr de telefon va fi posibilă fără un Cod PIN de Blocare a Înregistrării după 7 zile de când acest număr de telefon a fost activ ultima oară în Signal. Mai ai %d zile rămase.</string>
<string name="RegistrationActivity_registration_lock_pin">PIN de blocare a înregistrării</string>
<string name="RegistrationActivity_this_phone_number_has_registration_lock_enabled_please_enter_the_registration_lock_pin">Acest număr de telefon are Blocarea Înregistrării activă. Vă rugăm să introduceți Codul PIN de Blocare a Înregistrării.</string>
<string name="RegistrationLockDialog_registration_lock_is_enabled_for_your_phone_number">Blocarea înregistrării e activă pentru numărul tău de telefon. Pentru a te ajuta să îți memorezi Codul PIN de Blocare a înregistrării, Signal îți va cere să îl confirmi periodic.</string>
<string name="RegistrationLockDialog_registration_lock_is_enabled_for_your_phone_number">Blocarea înregistrării este activă pentru numărul dvs. de telefon. Pentru a vă putea ajuta să memori Codul PIN de Blocare a înregistrării, Signal va cere să îl confirmi periodic.</string>
<string name="RegistrationLockDialog_i_forgot_my_pin">Mi-am uitat PIN-ul.</string>
<string name="RegistrationLockDialog_forgotten_pin">PIN uitat ?</string>
<string name="RegistrationLockDialog_registration_lock_helps_protect_your_phone_number_from_unauthorized_registration_attempts">Blocarea înregistrării ajută la protejarea numărului tău de telefon împotriva încercărilor neautorizate de înregistrare. Această facilitate poate fi dezactivată oricând în setările de confidențialitate ale Signal</string>

View File

@@ -160,6 +160,7 @@
<string name="ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video">Чтобы сделать фото или видео требуется разрешение на доступ к камере, но оно было вами отклонено. Чтобы предоставить разрешение вручную, перейдите Настройки, выберите Приложения, найдите Signal, затем выберите Разрешения и включите Камеру.</string>
<string name="ConversationActivity_signal_needs_camera_permissions_to_take_photos_or_video">Для съемки фото или видео предоставьте Signal доступ к камере</string>
<string name="ConversationActivity_quoted_contact_message">%1$s %2$s</string>
<string name="ConversationActivity_signal_cannot_sent_sms_mms_messages_because_it_is_not_your_default_sms_app">Signal не может отправлять SMS/MMS-сообщения, так как не является приложением SMS по умолчанию. Хотите изменить это в настройках Android?</string>
<string name="ConversationActivity_yes">Да</string>
<string name="ConversationActivity_no">Нет</string>
<!--ConversationAdapter-->
@@ -311,6 +312,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Включить индикаторы ввода</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Включить индикаторы ввода</string>
<string name="ExperienceUpgradeActivity_no_thanks">Нет, спасибо</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Введение в предварительный просмотр ссылок</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Для некоторых из самых популярных сайтов в интернете появилась опциональная возможность предварительного просмотра ссылок.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Вы можете отключить или включить эту функцию в любое время в настройках Signal (Конфиденциальность &gt; Отправлять предварительный просмотр ссылок).</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Получение сообщения...</string>
<!--GcmRefreshJob-->
@@ -410,8 +414,17 @@
<string name="NotificationMmsMessageRecord_downloading_mms_message">Скачиваем MMS-сообщение</string>
<string name="NotificationMmsMessageRecord_error_downloading_mms_message">Ошибка при скачивании MMS-сообщения; нажмите, чтобы повторить</string>
<!--MediaPickerActivity-->
<string name="MediaPickerActivity_send_to">Отправить %s</string>
<!--MediaPickerItemFragment-->
<string name="MediaPickerItemFragment_tap_to_select">Нажмите для выбора</string>
<plurals name="MediaPickerItemFragment_cant_share_more_than_n_items">
<item quantity="one">Вы не можете поделиться больше, чем %d элементом.</item>
<item quantity="few">Вы не можете поделиться больше, чем %dэлементами.</item>
<item quantity="many">Вы не можете поделиться больше, чем %d элементами.</item>
<item quantity="other">Вы не можете поделиться больше, чем %dэлементами.</item>
</plurals>
<!--MediaSendActivity-->
<string name="MediaSendActivity_add_a_caption">Добавить субтитры...</string>
<!--MediaRepository-->
<string name="MediaRepository_all_media">Все медиа-файлы</string>
<!--MessageRecord-->
@@ -1008,6 +1021,8 @@
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Использовать Signal для всех входящих мультимедиа-сообщений</string>
<string name="preferences__pref_enter_sends_title">Отправка клавишей «Ввод»</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Нажатие клавиши ввода будет отправлять текстовые сообщения</string>
<string name="preferences__send_link_previews">Отправлять предпросмотр ссылки</string>
<string name="preferences__previews_are_supported_for">Предварительный просмотр поддерживается для ссылок Imgur, Instagram, Reddit и YouTube</string>
<string name="preferences__choose_identity">Выберите личность</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Выберите себя из списка контактов.</string>
<string name="preferences__change_passphrase">Изменить парольную фразу</string>

View File

@@ -160,6 +160,7 @@
<string name="ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video">Signal potrebuje prístup k fotoaparátu aby mohol vytvárať fotografie a video, ale prístup bol natrvalo zakázaný. Prosím v nastaveniach aplikácií zvoľte \"Oprávnenia\", a povoľte \"Fotoaparát\".</string>
<string name="ConversationActivity_signal_needs_camera_permissions_to_take_photos_or_video">Signal potrebuje prístup k Fotoaparátu, aby mohol vytvárať fotografie a videá</string>
<string name="ConversationActivity_quoted_contact_message">%1$s %2$s</string>
<string name="ConversationActivity_signal_cannot_sent_sms_mms_messages_because_it_is_not_your_default_sms_app">Signal nemôže odosielať SMS/MMS, pretože nie je prednastavenou SMS aplikáciou. Chcete to zmeniť v nastaveniach Androidu?</string>
<string name="ConversationActivity_yes">Áno</string>
<string name="ConversationActivity_no">Nie</string>
<!--ConversationAdapter-->
@@ -305,9 +306,15 @@
<string name="ExperienceUpgradeActivity_now_you_can_share_a_profile_photo_and_name_with_friends_on_signal">Teraz môžete s vašimi priateľmi na Signalu zdieľať vašu profilovú fotku a meno</string>
<string name="ExperienceUpgradeActivity_signal_profiles_are_here">Signal profily sú tu</string>
<string name="ExperienceUpgradeActivity_introducing_typing_indicators">Predstavujeme indikátory písania.</string>
<string name="ExperienceUpgradeActivity_now_you_can_optionally_see_and_share_when_messages_are_being_typed">Teraz môžete voliteľne vidieť a zdieľať, keď sú správy písané.</string>
<string name="ExperienceUpgradeActivity_would_you_like_to_enable_them_now">Želáte si ich zapnúť?</string>
<string name="ExperienceUpgradeActivity_typing_ui_title">Indikátory písania sú tu</string>
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Povoliť indikátory písania</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Zapnúť indikátory písania</string>
<string name="ExperienceUpgradeActivity_no_thanks">Nie, ďakujem</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Uvádzame náhľady stránok.</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Náhľady sú teraz voliteľne podporované pre niektoré z najpopulárnejších webových stránok na internete.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Túto funkciu môžete kedykoľvek vypnúť alebo zapnúť v nastaveniach Signal-u (Súkromie &gt; Posielať náhľady stránok).</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Preberanie správy…</string>
<!--GcmRefreshJob-->
@@ -366,6 +373,7 @@
<string name="InviteActivity_no_app_to_share_to">Vyzerá to, že nemáte žiadne aplikácie kam by ste mohli zdieľať.</string>
<string name="InviteActivity_friends_dont_let_friends_text_unencrypted">Priatelia nenechávajú priateľov chatovať nešifrovane.</string>
<!--Job-->
<string name="Job_working_in_the_background">Práca na pozadí...</string>
<!--MessageDetailsRecipient-->
<string name="MessageDetailsRecipient_failed_to_send">Nepodarilo sa odoslať</string>
<string name="MessageDetailsRecipient_new_safety_number">Nové bezpečnostné číslo</string>
@@ -406,8 +414,17 @@
<string name="NotificationMmsMessageRecord_downloading_mms_message">Preberanie MMS správy</string>
<string name="NotificationMmsMessageRecord_error_downloading_mms_message">Chyba pri preberaní MMS správy, ťuknite pre opakovanie</string>
<!--MediaPickerActivity-->
<string name="MediaPickerActivity_send_to">Poslať používateľovi %s</string>
<!--MediaPickerItemFragment-->
<string name="MediaPickerItemFragment_tap_to_select">Označte ťuknutím</string>
<plurals name="MediaPickerItemFragment_cant_share_more_than_n_items">
<item quantity="one">Nemôžete zdieľať viac ako %d položku.</item>
<item quantity="few">Nemôžete zdieľať viac ako %d položky.</item>
<item quantity="many">Nemôžete zdieľať viac ako %d položiek.</item>
<item quantity="other">Nemôžete zdieľať viac ako %d položiek.</item>
</plurals>
<!--MediaSendActivity-->
<string name="MediaSendActivity_add_a_caption">Pridaj popis...</string>
<!--MediaRepository-->
<string name="MediaRepository_all_media">Všetky médiá</string>
<!--MessageRecord-->
@@ -480,6 +497,7 @@
<string name="RecipientPreferenceActivity_you_will_no_longer_receive_messages_and_calls_from_this_contact">Už nebudete od tohto kontaktu dostávať správy a hovory.</string>
<string name="RecipientPreferenceActivity_block_and_leave_group">Blokovať a opustiť túto skupinu?</string>
<string name="RecipientPreferenceActivity_block_group">Blokovať túto skupinu?</string>
<string name="RecipientPreferenceActivity_block_and_leave_group_description">Už nebudete dostávať správy a aktualizácie od tejto skupiny.</string>
<string name="RecipientPreferenceActivity_block">Blokovať</string>
<string name="RecipientPreferenceActivity_unblock_this_contact_question">Odblokovať tento kontakt?</string>
<string name="RecipientPreferenceActivity_you_will_once_again_be_able_to_receive_messages_and_calls_from_this_contact">Znovu budete dostávať správy a hovory od tohoto kontaktu.</string>
@@ -1008,6 +1026,8 @@ Bola prijatá správa výmeny kľúčov s neplatnou verziou protokolu.
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Použiť Signal pre všetky prichádzajúce multimediálne správy</string>
<string name="preferences__pref_enter_sends_title">Odoslať stlačením klávesy Enter</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Stlačením klávesy Enter sa správa odošle</string>
<string name="preferences__send_link_previews">Posielať náhľady stránok</string>
<string name="preferences__previews_are_supported_for">Podporované sú náhľady webových stránok Imgur, Instagram, Reddit a YouTube</string>
<string name="preferences__choose_identity">Vyberať identitu</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Vyberte Váš kontakt zo zoznamu kontaktov.</string>
<string name="preferences__change_passphrase">Zmeniť heslo</string>
@@ -1104,7 +1124,11 @@ Bola prijatá správa výmeny kľúčov s neplatnou verziou protokolu.
<string name="preferences_chats__message_text_size">Veľkosť písma správy</string>
<string name="preferences_events__contact_joined_signal">Váš kontakt začal používať Signal</string>
<string name="preferences_notifications__priority">Priorita</string>
<string name="preferences_communication__category_sealed_sender">Šifrovaný odosielateľ</string>
<string name="preferences_communication__category_sealed_sender">Zapečatený odosielateľ</string>
<string name="preferences_communication__sealed_sender_display_indicators">Zobraziť indikátory</string>
<string name="preferences_communication__sealed_sender_display_indicators_description">Zobraziť stavovú ikonu v detailoch správ, ktoré boli doručené s použitím zapečateného odosielateľa.</string>
<string name="preferences_communication__sealed_sender_allow_from_anyone">Povoliť od každého</string>
<string name="preferences_communication__sealed_sender_allow_from_anyone_description">Zapnúť zapečateného odosielateľa pre prichádzajúce správy od ľudí, ktorých nemáte v kontaktoch a s ktorými ste nezdieľali svoj profil.</string>
<string name="preferences_communication__sealed_sender_learn_more">Dozvedieť sa viac</string>
<!--****************************************-->
<!--menus-->

View File

@@ -312,6 +312,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Vklop kazalnikov tipkanja</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Vklopi kazalnike tipkanja</string>
<string name="ExperienceUpgradeActivity_no_thanks">Ne, hvala!</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Novo: predogled povezav.</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Nekatere najbolj priljubljene spletne strani si lahko odslej izbirno ogledate v predogledu.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Storitev lahko kadarkoli izklopite ali vklopite v nastavitvah aplikacije Signal (Zasebnost &gt; Pošiljanje povezav s predogledom).</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Pridobivanje sporočila ...</string>
<!--GcmRefreshJob-->
@@ -1015,6 +1018,8 @@ Prejeto sporočilo za izmenjavo ključev za napačno različico protokola.</stri
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Uporabljaj Signal za vsa dohodna večpredstavnostna sporočila</string>
<string name="preferences__pref_enter_sends_title">Tipka \'Naprej\' pošlje</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Pritisk na tipko \'Naprej\' pošlje sporočilo</string>
<string name="preferences__send_link_previews">Pošiljanje povezav s predogledom</string>
<string name="preferences__previews_are_supported_for">Predogled je na voljo za povezave na Imgur, Instagram, Reddit in YouTube</string>
<string name="preferences__choose_identity">Izberi identiteto</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Na sezmanu stikov izberite svojo lastno vizitko.</string>
<string name="preferences__change_passphrase">Zamenjaj geslo</string>

View File

@@ -284,6 +284,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Aktivizoni indikatorë shtypjeje</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Vërini në punë indikatorët e shtypjes</string>
<string name="ExperienceUpgradeActivity_no_thanks">Jo, faleminderit</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Paraqitje e paraparjeve të lidhjeve.</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Tanimë mbulohet paraparja opsionale e lidhjeve për disa nga sajtet më popullorë në Internet.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Këtë veçori mund ta aktivizoni ose çaktivizoni në çfarëdo kohe, te rregullimet tuaja të Signal-it (Privatësi &gt; Dërgo paraparje lidhjesh).</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Po merret një mesazh…</string>
<!--GcmRefreshJob-->
@@ -962,6 +965,8 @@
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Përdore Signal për krejt mesazhet multimedia ardhëse</string>
<string name="preferences__pref_enter_sends_title">Tasti Enter dërgon</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Shtypja e tastit Enter do të sjellë dërgim mesazhesh tekst</string>
<string name="preferences__send_link_previews">Dërgo paraparje lidhjesh</string>
<string name="preferences__previews_are_supported_for">Paraparjet mbulohen për lidhje Imgur, Instagram, Reddit, dhe YouTube</string>
<string name="preferences__choose_identity">Zgjidhni identitet</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Zgjidhni kontaktin tuaj nga lista e kontakteve.</string>
<string name="preferences__change_passphrase">Ndryshoje frazëkalimin</string>

View File

@@ -54,7 +54,7 @@
<string name="DraftDatabase_Draft_location_snippet">(plats)</string>
<string name="DraftDatabase_Draft_quote_snippet">(svar)</string>
<!--AttchmentManager-->
<string name="AttachmentManager_cant_open_media_selection">Kan ej hitta app för att välja media.</string>
<string name="AttachmentManager_cant_open_media_selection">Kan inte hitta app för att välja media.</string>
<string name="AttachmentManager_signal_requires_the_external_storage_permission_in_order_to_attach_photos_videos_or_audio">Signal behöver behörigheten Lagring för att kunna bifoga bilder, video och ljud men har nekats den permanent. Fortsätt till inställningsmenyn för Appar och aviseringar, välj \"Behörigheter\" och aktivera \"Lagring\".</string>
<string name="AttachmentManager_signal_requires_contacts_permission_in_order_to_attach_contact_information">Signal behöver behörigheten Kontakter för att kunna bifoga kontaktinformation men har nekats den permanent. Fortsätt till inställningsmenyn för Appar och aviseringar, välj \"Behörigheter\" och aktivera \"Kontakter\".</string>
<string name="AttachmentManager_signal_requires_location_information_in_order_to_attach_a_location">Signal behöver behörigheten Plats för att kunna bifoga platser men har nekats den permanent. Fortsätt till inställningsmenyn för Appar och aviseringar, välj \"Behörigheter\" och aktivera \"Plats\".</string>
@@ -109,7 +109,7 @@
<string name="ConversationItem_click_to_approve_unencrypted_sms_dialog_title">Använd okrypterat SMS istället?</string>
<string name="ConversationItem_click_to_approve_unencrypted_mms_dialog_title">Använd okrypterat MMS istället?</string>
<string name="ConversationItem_click_to_approve_unencrypted_dialog_message">Detta meddelande kommer <b>inte</b> krypteras eftersom mottagaren inte längre är en Signal-användare. \n\nSkicka osäkert meddelande?</string>
<string name="ConversationItem_unable_to_open_media">Kan ej hitta app som kan öppna denna fil.</string>
<string name="ConversationItem_unable_to_open_media">Kan inte hitta app som kan öppna denna fil.</string>
<string name="ConversationItem_copied_text">Kopierade %s</string>
<string name="ConversationItem_from_s">från %s</string>
<string name="ConversationItem_to_s">till %s</string>
@@ -126,7 +126,7 @@
<string name="ConversationActivity_group_members">Gruppmedlemmar</string>
<string name="ConversationActivity_invalid_recipient">Ogiltig mottagare!</string>
<string name="ConversationActivity_added_to_home_screen">Lagt till på hemskärmen</string>
<string name="ConversationActivity_calls_not_supported">Samtal stöds ej</string>
<string name="ConversationActivity_calls_not_supported">Samtal stöds inte</string>
<string name="ConversationActivity_this_device_does_not_appear_to_support_dial_actions">Denna enhet verkar inte stödja ringa upp-handlingar.</string>
<string name="ConversationActivity_leave_group">Lämna grupp?</string>
<string name="ConversationActivity_are_you_sure_you_want_to_leave_this_group">Är du säker på att du vill lämna den här gruppen?</string>
@@ -135,7 +135,7 @@
<string name="ConversationActivity_transport_signal">Signal</string>
<string name="ConversationActivity_lets_switch_to_signal">Byt till Signal %1$s</string>
<string name="ConversationActivity_lets_use_this_to_chat">Låt oss använda detta för att chatta: %1$s</string>
<string name="ConversationActivity_error_leaving_group">Fel vid lämna grupp</string>
<string name="ConversationActivity_error_leaving_group">Fel vid lämnande av grupp</string>
<string name="ConversationActivity_specify_recipient">Vänligen välj en kontakt</string>
<string name="ConversationActivity_unblock_this_contact_question">Avblockera denna kontakt?</string>
<string name="ConversationActivity_unblock_this_group_question">Avblockera denna grupp?</string>
@@ -190,7 +190,7 @@
<item quantity="other">Sparar %1$d bifogade filer till lagring...</item>
</plurals>
<string name="ConversationFragment_pending">Väntar...</string>
<string name="ConversationFragment_push">Internet (Signal)</string>
<string name="ConversationFragment_push">Data (Signal)</string>
<string name="ConversationFragment_mms">MMS</string>
<string name="ConversationFragment_sms">SMS</string>
<string name="ConversationFragment_deleting">Raderar</string>
@@ -254,7 +254,7 @@
<string name="DeviceListActivity_network_failed">Nätverket misslyckades</string>
<!--DeviceListItem-->
<string name="DeviceListItem_unnamed_device">Namnlös enhet</string>
<string name="DeviceListItem_linked_s">Länkade %s</string>
<string name="DeviceListItem_linked_s">Länkad %s</string>
<string name="DeviceListItem_last_active_s">Senast aktiv %s</string>
<string name="DeviceListItem_today">Idag</string>
<!--DocumentView-->
@@ -277,13 +277,16 @@
<string name="ExperienceUpgradeActivity_ready_for_your_closeup">Redo för din närbild?</string>
<string name="ExperienceUpgradeActivity_now_you_can_share_a_profile_photo_and_name_with_friends_on_signal">Du kan nu dela en profilbild och ett namn med dina vänner på Signal</string>
<string name="ExperienceUpgradeActivity_signal_profiles_are_here">Signal-profiler är här</string>
<string name="ExperienceUpgradeActivity_introducing_typing_indicators">Introducerar skriv-indikatorer.</string>
<string name="ExperienceUpgradeActivity_introducing_typing_indicators">Introducerar skrivindikatorer.</string>
<string name="ExperienceUpgradeActivity_now_you_can_optionally_see_and_share_when_messages_are_being_typed">Nu kan du valfritt visa och dela när meddelanden skrivs.</string>
<string name="ExperienceUpgradeActivity_would_you_like_to_enable_them_now">Vill du aktivera dem nu?</string>
<string name="ExperienceUpgradeActivity_typing_ui_title">Skriv-indikatorer är nu här</string>
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Aktivera skriv-indikatorer</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Sätt på skriv-indikatorer</string>
<string name="ExperienceUpgradeActivity_typing_ui_title">Skrivindikatorer är nu här</string>
<string name="ExperienceUpgradeActivity_enable_typing_indicators">Aktivera skrivindikatorer</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Sätt på skrivindikatorer</string>
<string name="ExperienceUpgradeActivity_no_thanks">Nej tack</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Introducerar länkförhandsvisning.</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Valfria länkförhandsvisningar stöds nu för några av de mest populära platserna på Internet.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Du kan inaktivera eller aktivera den här funktionen när som helst i dina Signal-inställningar (Sekretess &gt; Skicka länkförhandsvisningar).</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Hämtar ett meddelande...</string>
<!--GcmRefreshJob-->
@@ -308,7 +311,7 @@
<string name="GroupCreateActivity_creating_group">Skapar %1$s...</string>
<string name="GroupCreateActivity_updating_group">Uppdaterar %1$s...</string>
<string name="GroupCreateActivity_cannot_add_non_push_to_existing_group">Kunde inte lägga till %1$s för att han/hon inte är Signal-användare.</string>
<string name="GroupCreateActivity_loading_group_details">Laddar gruppdetaljer...</string>
<string name="GroupCreateActivity_loading_group_details">Läser in gruppdetaljer...</string>
<string name="GroupCreateActivity_youre_already_in_the_group">Du är redan i gruppen.</string>
<!--GroupShareProfileView-->
<string name="GroupShareProfileView_share_your_profile_name_and_photo_with_this_group">Dela ditt profilnamn och bild med denna grupp?</string>
@@ -372,7 +375,7 @@
<string name="NotificationBarManager__cancel_call">Avbryt samtal</string>
<!--NotificationMmsMessageRecord-->
<string name="NotificationMmsMessageRecord_multimedia_message">Multimediameddelande</string>
<string name="NotificationMmsMessageRecord_downloading_mms_message">Nedladdning av MMS-meddelanden</string>
<string name="NotificationMmsMessageRecord_downloading_mms_message">Hämtning av MMS-meddelanden</string>
<string name="NotificationMmsMessageRecord_error_downloading_mms_message">Fel vid hämtning av MMS-meddelanden, tryck för att försöka igen</string>
<!--MediaPickerActivity-->
<string name="MediaPickerActivity_send_to">Skicka till %s</string>
@@ -462,7 +465,7 @@
<string name="RecipientPreferenceActivity_you_will_once_again_be_able_to_receive_messages_and_calls_from_this_contact">Du kommer nu åter få meddelanden och samtal från denna kontakt.</string>
<string name="RecipientPreferenceActivity_unblock_this_group_question">Avblockera denna grupp?</string>
<string name="RecipientPreferenceActivity_unblock_this_group_description">Befintliga medlemmar kommer att kunna lägga dig till gruppen igen.</string>
<string name="RecipientPreferenceActivity_error_leaving_group">Fel vid lämna grupp</string>
<string name="RecipientPreferenceActivity_error_leaving_group">Fel vid lämnande av grupp</string>
<string name="RecipientPreferenceActivity_unblock">Avblockera</string>
<string name="RecipientPreferenceActivity_enabled">Aktiverad</string>
<string name="RecipientPreferenceActivity_disabled">Inaktiverad</string>
@@ -586,7 +589,7 @@ Tog emot meddelande för nyckelutbyte för ogiltig protokollversion.</string>
<string name="MmsMessageRecord_bad_encrypted_mms_message">Felkrypterat MMS</string>
<string name="MmsMessageRecord_mms_message_encrypted_for_non_existing_session">MMS som krypterats för obefintlig session</string>
<!--MuteDialog-->
<string name="MuteDialog_mute_notifications">Tysta ner aviseringar</string>
<string name="MuteDialog_mute_notifications">Tysta aviseringar</string>
<!--OutdatedBuildReminder-->
<string name="OutdatedBuildReminder_no_web_browser_installed">Ingen webbläsare installerad!</string>
<!--ApplicationMigrationService-->
@@ -692,7 +695,7 @@ Tog emot meddelande för nyckelutbyte för ogiltig protokollversion.</string>
<string name="contact_selection_activity__enter_name_or_number">Skriv in namn eller nummer</string>
<!--contact_selection_group_activity-->
<string name="contact_selection_group_activity__no_contacts">Inga kontakter.</string>
<string name="contact_selection_group_activity__finding_contacts">Laddar kontakter…</string>
<string name="contact_selection_group_activity__finding_contacts">Läser in kontakter…</string>
<!--single_contact_selection_activity-->
<string name="SingleContactSelectionActivity_contact_photo">Kontaktfoto</string>
<!--ContactSelectionListFragment-->
@@ -730,7 +733,7 @@ Tog emot meddelande för nyckelutbyte för ogiltig protokollversion.</string>
<!--audio_view-->
<string name="audio_view__play_accessibility_description">Spela</string>
<string name="audio_view__pause_accessibility_description">Pausa</string>
<string name="audio_view__download_accessibility_description">Ladda ner</string>
<string name="audio_view__download_accessibility_description">Hämta</string>
<!--QuoteView-->
<string name="QuoteView_audio">Ljud</string>
<string name="QuoteView_video">Filmer</string>
@@ -810,8 +813,8 @@ Tog emot meddelande för nyckelutbyte för ogiltig protokollversion.</string>
<string name="log_submit_activity__button_got_it">Uppfattat</string>
<string name="log_submit_activity__button_compose_email">Skriv e-post</string>
<string name="log_submit_activity__this_log_will_be_posted_online">Denna logg kommer att publiceras online och visas till bidragsgivare. Du kan granska och redigera den innan du skickar.</string>
<string name="log_submit_activity__loading_logs">Laddar loggar...</string>
<string name="log_submit_activity__uploading_logs">Laddar upp loggar...</string>
<string name="log_submit_activity__loading_logs">Läser in loggar...</string>
<string name="log_submit_activity__uploading_logs">Skickar loggar...</string>
<string name="log_submit_activity__success">Klart!</string>
<string name="log_submit_activity__copy_this_url_and_add_it_to_your_issue">Kopiera denna URL och skriv in den i ditt felrapport eller support e-post:\n\n<b>%1$s</b>\n</string>
<string name="log_submit_activity__copied_to_clipboard">Kopierade till urklipp</string>
@@ -833,7 +836,7 @@ Tog emot meddelande för nyckelutbyte för ogiltig protokollversion.</string>
<string name="import_fragment__import_a_plaintext_backup_file">Importera en okrypterad säkerhetskopia. Kompatibel med \'SMSBackup &amp; Restore.\'</string>
<!--load_more_header-->
<string name="load_more_header__see_full_conversation">Se hela konversationen</string>
<string name="load_more_header__loading">Laddar</string>
<string name="load_more_header__loading">Läser in</string>
<!--media_overview_activity-->
<string name="media_overview_activity__no_media">Inget media</string>
<!--message_recipients_list_item-->
@@ -870,7 +873,7 @@ Tog emot meddelande för nyckelutbyte för ogiltig protokollversion.</string>
<string name="recipient_preferences__color">Färg</string>
<string name="recipient_preferences__view_safety_number">Visa säkerhetsnummer</string>
<string name="recipient_preferences__chat_settings">Chattinställningar</string>
<string name="recipient_preferences__privacy">Integritet</string>
<string name="recipient_preferences__privacy">Integritetsskydd</string>
<string name="recipient_preferences__call_settings">Samtalsinställningar</string>
<string name="recipient_preferences__ringtone">Rington</string>
<!--- redphone_call_controls-->
@@ -893,7 +896,7 @@ Tog emot meddelande för nyckelutbyte för ogiltig protokollversion.</string>
<!--verify_display_fragment-->
<string name="verify_display_fragment__if_you_wish_to_verify_the_security_of_your_end_to_end_encryption_with_s"><![CDATA[Om du vill verifiera säkerheten i krypteringen med %s, jämför numret ovan med numret på hens enhet. Alternativt så kan du skanna koden på hens telefon eller be hen skanna din kod. <a href="https://signal.org/redirect/safety-numbers">Mer info.</a>]]></string>
<string name="verify_display_fragment__tap_to_scan">Tryck för att skanna</string>
<string name="verify_display_fragment__loading">Laddar...</string>
<string name="verify_display_fragment__loading">Läser in...</string>
<string name="verify_display_fragment__verified">Verifierad</string>
<!--verify_identity-->
<string name="verify_identity__share_safety_number">Dela säkerhetsnummer</string>
@@ -959,7 +962,9 @@ Tog emot meddelande för nyckelutbyte för ogiltig protokollversion.</string>
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_text_messages">Använd Signal för alla inkommande SMS-meddelanden</string>
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Använd Signal för alla inkommande multimedia-meddelanden</string>
<string name="preferences__pref_enter_sends_title">Entertangenten skickar</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Enter-tangenten skickar textmeddelanden</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Entertangenten skickar textmeddelanden</string>
<string name="preferences__send_link_previews">Sicka länkförhandsvisning</string>
<string name="preferences__previews_are_supported_for">Förhandsvisningar stöds för Imgur-, Instagram-, Reddit- och YouTube-länkar</string>
<string name="preferences__choose_identity">Välj identitet</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Välj din kontakt från kontaktlistan.</string>
<string name="preferences__change_passphrase">Ändra lösenord</string>
@@ -998,7 +1003,7 @@ Tog emot meddelande för nyckelutbyte för ogiltig protokollversion.</string>
<string name="preferences__normal">Normal</string>
<string name="preferences__slow">Långsam</string>
<string name="preferences__advanced">Avancerat</string>
<string name="preferences__privacy">Integritet</string>
<string name="preferences__privacy">Integritetsskydd</string>
<string name="preferences__mms_user_agent">MMS User Agent</string>
<string name="preferences__advanced_mms_access_point_names">Manuella MMS-inställningar</string>
<string name="preferences__mmsc_url">MMSC URL</string>
@@ -1015,8 +1020,8 @@ Tog emot meddelande för nyckelutbyte för ogiltig protokollversion.</string>
<string name="preferences__trim_all_conversations_now">Trimma alla konversationer nu</string>
<string name="preferences__scan_through_all_conversations_and_enforce_conversation_length_limits">Sök genom alla konversationer och påtvinga längdbegränsningar på konversationer</string>
<string name="preferences__linked_devices">Länkade enheter</string>
<string name="preferences__light_theme">Ljust</string>
<string name="preferences__dark_theme">Mörkt</string>
<string name="preferences__light_theme">Ljus</string>
<string name="preferences__dark_theme">Mörk</string>
<string name="preferences__appearance">Utseende</string>
<string name="preferences__theme">Tema</string>
<string name="preferences__default">Standard</string>
@@ -1025,20 +1030,20 @@ Tog emot meddelande för nyckelutbyte för ogiltig protokollversion.</string>
<string name="preferences__free_private_messages_and_calls">Gratis privata meddelanden och samtal med andra Signal-användare</string>
<string name="preferences__submit_debug_log">Skicka in felsökningslogg</string>
<string name="preferences__support_wifi_calling">\'WiFi Calling\' kompatibilitetsläge</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">Aktivera om din enhet använder SMS/MMS sändning över WiFi (aktivera endast när \'WiFi Calling\' är aktiverat på din enhet)</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">Aktivera om din enhet använder SMS/MMS sändning över Wi-Fi (aktivera endast när \'WiFi Calling\' är aktiverat på din enhet)</string>
<string name="preferences__incognito_keyboard">Inkognito-tangentbord</string>
<string name="preferences__read_receipts">Läskvittenser</string>
<string name="preferences__if_read_receipts_are_disabled_you_wont_be_able_to_see_read_receipts">Om läskvittenser är avstängda kan du inte se läskvittenser från andra.</string>
<string name="preferences__typing_indicators">Skriv-indikatorer</string>
<string name="preferences__if_typing_indicators_are_disabled_you_wont_be_able_to_see_typing_indicators">Om skriv-indikatorer är avstängda kan du inte se skriv-indikatorer från andra.</string>
<string name="preferences__typing_indicators">Skrivindikatorer</string>
<string name="preferences__if_typing_indicators_are_disabled_you_wont_be_able_to_see_typing_indicators">Om skrivindikatorer är avstängda kan du inte se skrivindikatorer från andra.</string>
<string name="preferences__request_keyboard_to_disable_personalized_learning">Begär att tangentbordet stänger av personlig inlärning</string>
<string name="preferences_app_protection__blocked_contacts">Blockerade kontakter</string>
<string name="preferences_chats__when_using_mobile_data">Vid användande av mobildata</string>
<string name="preferences_chats__when_using_wifi">Vid användande av Wi-Fi</string>
<string name="preferences_chats__when_roaming">Vid roaming</string>
<string name="preferences_chats__media_auto_download">Autonedladdning av media</string>
<string name="preferences_chats__media_auto_download">Automatisk hämtning av media</string>
<string name="preferences_chats__message_trimming">Trimma meddelanden</string>
<string name="preferences_advanced__use_system_emoji">Använd systemets emojis</string>
<string name="preferences_advanced__use_system_emoji">Använd systemets emojier</string>
<string name="preferences_advanced__disable_signal_built_in_emoji_support">Inaktivera Signals inbyggda emojier</string>
<string name="preferences_advanced__relay_all_calls_through_the_signal_server_to_avoid_revealing_your_ip_address">Slussa alla samtal via Signal-servern för att undvika att avslöja din IP-adress för din kontakt. Aktivering innebär försämrad samtalskvalité.</string>
<string name="preferences_advanced__always_relay_calls">Slussa alltid samtal</string>
@@ -1169,7 +1174,7 @@ Tog emot meddelande för nyckelutbyte för ogiltig protokollversion.</string>
<string name="trimmer__old_messages_successfully_deleted">Gamla meddelanden har raderats</string>
<!--transport_selection_list_item-->
<string name="transport_selection_list_item__transport_icon">Transportikon</string>
<string name="ConversationListFragment_loading">Laddar...</string>
<string name="ConversationListFragment_loading">Läser in...</string>
<string name="CallNotificationBuilder_connecting">Ansluter...</string>
<string name="Permissions_permission_required">Behörighet saknas</string>
<string name="ConversationActivity_signal_needs_sms_permission_in_order_to_send_an_sms">Signal behöver behörigheten SMS för att kunna skicka SMS men har nekats den permanent. Fortsätt till inställningsmenyn för Appar och aviseringar, välj \"Behörigheter\" och aktivera \"SMS\".</string>
@@ -1222,7 +1227,7 @@ Tog emot meddelande för nyckelutbyte för ogiltig protokollversion.</string>
<string name="BackupUtil_unknown">Okänd</string>
<string name="preferences_app_protection__screen_lock">Skärmlås</string>
<string name="preferences_app_protection__lock_signal_access_with_android_screen_lock_or_fingerprint">Lås åtkomst till Signal med Androids skärmlås eller fingeravtryck</string>
<string name="preferences_app_protection__screen_lock_inactivity_timeout">Timeout för inaktivitet för skärmlåset</string>
<string name="preferences_app_protection__screen_lock_inactivity_timeout">Skärmlåsets tidsgräns för inaktivitet </string>
<string name="AppProtectionPreferenceFragment_none">Inga</string>
<string name="registration_activity__the_registration_lock_pin_is_not_the_same_as_the_sms_verification_code_you_just_received_please_enter_the_pin_you_previously_configured_in_the_application">PIN-koden för registreringslåset är inte samma som den SMS-kod du precis fick. Skriv in PIN-koden du tidigare ställde in i appen.</string>
<string name="registration_activity__registration_lock_pin">PIN-kod för registreringslås</string>
@@ -1247,7 +1252,7 @@ Tog emot meddelande för nyckelutbyte för ogiltig protokollversion.</string>
<string name="RegistrationLockDialog_registration_lock_is_enabled_for_your_phone_number">Registreringslåset är påslaget för ditt mobilnummer. För att hjälpa dig att komma ihåg koden kommer Signal periodvis be dig bekräfta PIN-koden du valt.</string>
<string name="RegistrationLockDialog_i_forgot_my_pin">Jag har glömt min PIN-kod.</string>
<string name="RegistrationLockDialog_forgotten_pin">Glömt PIN-koden?</string>
<string name="RegistrationLockDialog_registration_lock_helps_protect_your_phone_number_from_unauthorized_registration_attempts">Registreringslås hjälper till att skydda ditt mobilnummer från obehöriga registreringsförsök. Denna funktion kan när som helst stängas av under Signals sekrettessinställningar.</string>
<string name="RegistrationLockDialog_registration_lock_helps_protect_your_phone_number_from_unauthorized_registration_attempts">Registreringslås hjälper till att skydda ditt mobilnummer från obehöriga registreringsförsök. Denna funktion kan när som helst stängas av under Signals integritetsskyddinställningar.</string>
<string name="RegistrationLockDialog_registration_lock">Registreringslås</string>
<string name="RegistrationLockDialog_enable">Aktivera</string>
<string name="RegistrationLockDialog_the_registration_lock_pin_must_be_at_least_four_digits">PIN-koden för registreringslåset måste vara minst 4-siffrigt.</string>
@@ -1256,7 +1261,7 @@ Tog emot meddelande för nyckelutbyte för ogiltig protokollversion.</string>
<string name="RegistrationLockDialog_disable_registration_lock_pin">Stäng av PIN-kod för registreringslås?</string>
<string name="RegistrationLockDialog_disable">Inaktivera</string>
<string name="RegistrationActivity_continue">Fortsätt</string>
<string name="preferences_chats__backups">Säkerhetskopia</string>
<string name="preferences_chats__backups">Säkerhetskopior</string>
<string name="prompt_passphrase_activity__signal_is_locked">Signal är låst</string>
<string name="prompt_passphrase_activity__tap_to_unlock">TRYCK FÖR ATT LÅSA UPP</string>
<string name="RegistrationLockDialog_reminder">Påminnelse:</string>

1007
res/values-sw/strings.xml Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -154,6 +154,7 @@
<string name="ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video">Signal, fotoğraf veya video çekmek için Kamera iznine ihtiyaç duyar, fakat bu izin kalıcı olarak reddedilmiş. Lütfen uygulama ayarları menüsüne girip \"İzinler\" kısmını seçin, ve \"Kamera\"yı etkinleştirin.</string>
<string name="ConversationActivity_signal_needs_camera_permissions_to_take_photos_or_video">Signal fotoğraf veya video çekebilmek için kamera erişimine ihtiyaç duyar</string>
<string name="ConversationActivity_quoted_contact_message">%1$s %2$s</string>
<string name="ConversationActivity_signal_cannot_sent_sms_mms_messages_because_it_is_not_your_default_sms_app">Signal varsayılan SMS uygulaması olmadığı için SMS/MMS mesajları gönderemiyor. Bunu Android ayarlarınızdan değiştirmek ister misiniz?</string>
<string name="ConversationActivity_yes">Evet</string>
<string name="ConversationActivity_no">Hayır</string>
<!--ConversationAdapter-->
@@ -283,6 +284,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">\'Yazıyor\' göstergelerini etkinleştrin.</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">\'Yazıyor\' göstergelerini aç</string>
<string name="ExperienceUpgradeActivity_no_thanks">Hayır teşekkürler</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Bağlantı ön izlemeleri ile tanışın.</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">İsteğe bağlı bağlantı ön izlemeleri artık İnternet\'teki bazı gözde siteler için desteklenmektedir.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">Bu özelliği istediğiniz zaman Signal ayarlarınızdan (Gizlilik &gt; Bağlantı ön izlemelerini gönder). etkinleştirebilir veya devre dışı bırakabilirsiniz.</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">Mesaj alınıyor...</string>
<!--GcmRefreshJob-->
@@ -374,8 +378,15 @@
<string name="NotificationMmsMessageRecord_downloading_mms_message">MMS mesajı indiriliyor</string>
<string name="NotificationMmsMessageRecord_error_downloading_mms_message">MMS mesajı indirilirken hata, yeniden denemek için dokunun</string>
<!--MediaPickerActivity-->
<string name="MediaPickerActivity_send_to">%s alıcısına gönder</string>
<!--MediaPickerItemFragment-->
<string name="MediaPickerItemFragment_tap_to_select">Seçmek için dokunun</string>
<plurals name="MediaPickerItemFragment_cant_share_more_than_n_items">
<item quantity="one">%d öğeden daha fazlasını paylaşamazsınız.</item>
<item quantity="other">%d öğeden daha fazlasını paylaşamazsınız.</item>
</plurals>
<!--MediaSendActivity-->
<string name="MediaSendActivity_add_a_caption">Bir başlık ekleyin...</string>
<!--MediaRepository-->
<string name="MediaRepository_all_media">Tüm medya</string>
<!--MessageRecord-->
@@ -957,6 +968,8 @@ Geçersiz protokol sürümünde anahtar değişim mesajı alındı.</string>
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Gelen tüm medya mesajları için Signal kullanın</string>
<string name="preferences__pref_enter_sends_title">Enter tuşu ile gönder</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Enter tuşuna basarak mesajı gönder</string>
<string name="preferences__send_link_previews">Bağlantı ön izlemelerini gönder</string>
<string name="preferences__previews_are_supported_for">Ön izlemeler Imgur, Instagram, Reddit, ve YouTube bağlantıları için desteklenmektedir</string>
<string name="preferences__choose_identity">Kimlik seçin</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Kişi girdinizi kişi listesinden seçin.</string>
<string name="preferences__change_passphrase">Parola değiştir</string>

View File

@@ -151,6 +151,7 @@
<string name="ConversationActivity_signal_needs_the_camera_permission_to_take_photos_or_video">Signal 需要相机权限来拍摄照片或录制视频。但是该权限已经被永久拒绝,请进入应用程序设置,点击权限,并启用“相机”。</string>
<string name="ConversationActivity_signal_needs_camera_permissions_to_take_photos_or_video">Signal 需要相机权限以拍摄照片或视频</string>
<string name="ConversationActivity_quoted_contact_message">%1$s%2$s</string>
<string name="ConversationActivity_signal_cannot_sent_sms_mms_messages_because_it_is_not_your_default_sms_app">Signal不能发送短信/彩信,因为它不是您默认的短信应用。您是否想在安卓设置里修改?</string>
<string name="ConversationActivity_yes"></string>
<string name="ConversationActivity_no"></string>
<!--ConversationAdapter-->
@@ -269,6 +270,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">启用“正在输入”提示</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">打开“正在输入”提示</string>
<string name="ExperienceUpgradeActivity_no_thanks">不,谢谢。</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">隆重推出“链接预览”功能。</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">可选的链接预览功能现支持互联网上一些最热门的站点。</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">您可以随时在Signal设置中启用或禁用此功能隐私 &gt; 发送链接预览)。</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">检索消息中…</string>
<!--GcmRefreshJob-->
@@ -356,7 +360,12 @@
<string name="NotificationMmsMessageRecord_downloading_mms_message">正在下载彩信</string>
<string name="NotificationMmsMessageRecord_error_downloading_mms_message">下载彩信时错误,点击重试</string>
<!--MediaPickerActivity-->
<string name="MediaPickerActivity_send_to">发送给%s</string>
<!--MediaPickerItemFragment-->
<string name="MediaPickerItemFragment_tap_to_select">点击以选择</string>
<plurals name="MediaPickerItemFragment_cant_share_more_than_n_items">
<item quantity="other">您最多分享%d项。</item>
</plurals>
<!--MediaSendActivity-->
<string name="MediaSendActivity_add_a_caption">添加注释...</string>
<!--MediaRepository-->
@@ -926,6 +935,8 @@
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">使用 Signal 来接收所有的彩信。</string>
<string name="preferences__pref_enter_sends_title">按下回车键发送</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">按下回车键将会发送短信息</string>
<string name="preferences__send_link_previews">发送链接预览</string>
<string name="preferences__previews_are_supported_for">预览现支持Imgur, Instagram, Reddit, 以及YouTube链接</string>
<string name="preferences__choose_identity">选择身份</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">从联系人列表选择您的联系人条目。</string>
<string name="preferences__change_passphrase"> 修改密码</string>

View File

@@ -270,6 +270,9 @@
<string name="ExperienceUpgradeActivity_enable_typing_indicators">啟動打字狀態</string>
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">開啟打字狀態</string>
<string name="ExperienceUpgradeActivity_no_thanks">不,謝謝。</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">連結預覽功能介紹。</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">連結預覽選項現在支援網路上一些最受歡迎的網站。</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">任何時候你可以在 Signal 設定中關閉或開啟這個功能 (隱私 &gt; 傳送連結預覽)。</string>
<!--GcmBroadcastReceiver-->
<string name="GcmBroadcastReceiver_retrieving_a_message">回收一個訊息...</string>
<!--GcmRefreshJob-->
@@ -934,6 +937,8 @@
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">使用 Signal 接收所有多媒體訊息</string>
<string name="preferences__pref_enter_sends_title">按下輸入鍵發送</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">按下輸入鍵將會發送訊息</string>
<string name="preferences__send_link_previews">傳送連結預覽</string>
<string name="preferences__previews_are_supported_for">預覽功能支援 Imgur、Instagram、Reddit 及 YouTube的連結。</string>
<string name="preferences__choose_identity">選擇身分</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">從您的聯絡人清單中選擇聯絡人項目。</string>
<string name="preferences__change_passphrase">變更自訂密碼</string>

View File

@@ -110,6 +110,11 @@
<attr name="invite_background" format="color"/>
<attr name="linkpreview_background_color" format="color" />
<attr name="linkpreview_primary_text_color" format="color" />
<attr name="linkpreview_secondary_text_color" format="color" />
<attr name="linkpreview_divider_color" format="color" />
<attr name="reminder_header_background" format="color"/>
<attr name="menu_new_conversation_icon" format="reference" />
@@ -281,6 +286,13 @@
<attr name="contact_footerAlpha" format="float" />
</declare-styleable>
<declare-styleable name="LinkPreviewView">
<attr name="linkpreview_type" format="enum">
<enum name="conversation" value="0" />
<enum name="compose" value="1" />
</attr>
</declare-styleable>
<declare-styleable name="DocumentView">
<attr name="doc_titleColor" format="color" />
<attr name="doc_captionColor" format="color" />

View File

@@ -51,6 +51,8 @@
<dimen name="mediasend_progress_dialog_size">120dp</dimen>
<dimen name="thumbnail_default_radius">4dp</dimen>
<dimen name="conversation_compose_height">40dp</dimen>
<dimen name="conversation_individual_right_gutter">16dp</dimen>
<dimen name="conversation_individual_left_gutter">16dp</dimen>

View File

@@ -328,6 +328,11 @@
<string name="ExperienceUpgradeActivity_turn_on_typing_indicators">Turn on typing indicators</string>
<string name="ExperienceUpgradeActivity_no_thanks">No thanks</string>
<string name="ExperienceUpgradeActivity_introducing_link_previews">Introducing link previews.</string>
<string name="ExperienceUpgradeActivity_optional_link_previews_are_now_supported">Optional link previews are now supported for some of the most popular sites on the Internet.</string>
<string name="ExperienceUpgradeActivity_you_can_disable_or_enable_this_feature_link_previews">You can disable or enable this feature anytime in your Signal settings (Privacy &gt; Send link previews).</string>
<string name="ExperienceUpgradeActivity_got_it">Got it</string>
<!-- GcmBroadcastReceiver -->
<string name="GcmBroadcastReceiver_retrieving_a_message">Retrieving a message...</string>
@@ -1149,6 +1154,8 @@
<string name="preferences__use_signal_for_viewing_and_storing_all_incoming_multimedia_messages">Use Signal for all incoming multimedia messages</string>
<string name="preferences__pref_enter_sends_title">Enter key sends</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Pressing the Enter key will send text messages</string>
<string name="preferences__send_link_previews">Send link previews</string>
<string name="preferences__previews_are_supported_for">Previews are supported for Imgur, Instagram, Reddit, and YouTube links</string>
<string name="preferences__choose_identity">Choose identity</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Choose your contact entry from the contacts list.</string>
<string name="preferences__change_passphrase">Change passphrase</string>

View File

@@ -188,7 +188,6 @@
<item name="emoji_category_emoticons">@drawable/emoji_category_emoticons_light</item>
<item name="emoji_variation_selector_background">@drawable/emoji_variation_selector_background_light</item>
<item name="conversation_item_bubble_background">@color/core_grey_05</item>
<item name="conversation_item_sent_text_primary_color">@color/core_grey_90</item>
<item name="conversation_item_sent_text_secondary_color">@color/core_grey_60</item>
@@ -223,6 +222,11 @@
<item name="import_export_item_background_shadow_color">@color/import_export_item_background_shadow_light</item>
<item name="import_export_item_card_background">@drawable/clickable_card_light</item>
<item name="linkpreview_background_color">@color/core_white</item>
<item name="linkpreview_primary_text_color">@color/core_black</item>
<item name="linkpreview_secondary_text_color">@color/core_grey_60</item>
<item name="linkpreview_divider_color">@color/core_grey_25</item>
<item name="menu_new_conversation_icon">@drawable/ic_add_white_24dp</item>
<item name="menu_group_icon">@drawable/ic_group_white_24dp</item>
<item name="menu_search_icon">@drawable/ic_search_white_24dp</item>
@@ -373,6 +377,11 @@
<item name="emoji_category_emoticons">@drawable/emoji_category_emoticons_dark</item>
<item name="emoji_variation_selector_background">@drawable/emoji_variation_selector_background_dark</item>
<item name="linkpreview_background_color">@color/core_grey_95</item>
<item name="linkpreview_primary_text_color">@color/core_white</item>
<item name="linkpreview_secondary_text_color">@color/core_grey_25</item>
<item name="linkpreview_divider_color">@color/core_grey_60</item>
<item name="quick_camera_icon">@drawable/quick_camera_dark</item>
<item name="quick_mic_icon">@drawable/ic_mic_white_24dp</item>

View File

@@ -69,6 +69,12 @@
android:title="@string/preferences__typing_indicators"
android:summary="@string/preferences__if_typing_indicators_are_disabled_you_wont_be_able_to_see_typing_indicators"/>
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:defaultValue="true"
android:key="pref_link_previews"
android:summary="@string/preferences__previews_are_supported_for"
android:title="@string/preferences__send_link_previews"/>
<Preference android:key="preference_category_blocked"
android:title="@string/preferences_app_protection__blocked_contacts" />
</PreferenceCategory>

View File

@@ -56,6 +56,7 @@
android:key="pref_enter_sends"
android:summary="@string/preferences__pressing_the_enter_key_will_send_text_messages"
android:title="@string/preferences__pref_enter_sends_title"/>
</PreferenceCategory>
<PreferenceCategory android:layout="@layout/preference_divider"/>

View File

@@ -31,13 +31,15 @@ import com.google.android.gms.security.ProviderInstaller;
import org.thoughtcrime.securesms.components.TypingStatusRepository;
import org.thoughtcrime.securesms.components.TypingStatusSender;
import org.thoughtcrime.securesms.crypto.PRNGFixes;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.helpers.SQLCipherOpenHelper;
import org.thoughtcrime.securesms.dependencies.AxolotlStorageModule;
import org.thoughtcrime.securesms.dependencies.InjectableType;
import org.thoughtcrime.securesms.dependencies.SignalCommunicationModule;
import org.thoughtcrime.securesms.jobmanager.JobManager;
import org.thoughtcrime.securesms.jobmanager.dependencies.DependencyInjector;
import org.thoughtcrime.securesms.jobs.CreateSignedPreKeyJob;
import org.thoughtcrime.securesms.jobs.GcmRefreshJob;
import org.thoughtcrime.securesms.jobs.FcmRefreshJob;
import org.thoughtcrime.securesms.jobs.MultiDeviceContactUpdateJob;
import org.thoughtcrime.securesms.jobs.PushNotificationReceiveJob;
import org.thoughtcrime.securesms.jobs.RefreshUnidentifiedDeliveryAbilityJob;
@@ -202,10 +204,10 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc
private void initializeGcmCheck() {
if (TextSecurePreferences.isPushRegistered(this)) {
long nextSetTime = TextSecurePreferences.getGcmRegistrationIdLastSetTime(this) + TimeUnit.HOURS.toMillis(6);
long nextSetTime = TextSecurePreferences.getFcmTokenLastSetTime(this) + TimeUnit.HOURS.toMillis(6);
if (TextSecurePreferences.getGcmRegistrationId(this) == null || nextSetTime <= System.currentTimeMillis()) {
this.jobManager.add(new GcmRefreshJob(this));
if (TextSecurePreferences.getFcmToken(this) == null || nextSetTime <= System.currentTimeMillis()) {
this.jobManager.add(new FcmRefreshJob(this));
}
}
}
@@ -265,9 +267,7 @@ public class ApplicationContext extends MultiDexApplication implements Dependenc
WebRtcAudioManager.setBlacklistDeviceForOpenSLESUsage(true);
}
PeerConnectionFactory.initialize(InitializationOptions.builder(this)
.setEnableVideoHwAcceleration(true)
.createInitializationOptions());
PeerConnectionFactory.initialize(InitializationOptions.builder(this).createInitializationOptions());
} catch (UnsatisfiedLinkError e) {
Log.w(TAG, e);
}

View File

@@ -7,6 +7,7 @@ import android.view.View;
import org.thoughtcrime.securesms.contactshare.Contact;
import org.thoughtcrime.securesms.database.model.MessageRecord;
import org.thoughtcrime.securesms.database.model.MmsMessageRecord;
import org.thoughtcrime.securesms.linkpreview.LinkPreview;
import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.whispersystems.libsignal.util.guava.Optional;
@@ -31,6 +32,7 @@ public interface BindableConversationItem extends Unbindable {
interface EventListener {
void onQuoteClicked(MmsMessageRecord messageRecord);
void onLinkPreviewClicked(@NonNull LinkPreview linkPreview);
void onSharedContactDetailsClicked(@NonNull Contact contact, @NonNull View avatarTransitionView);
void onAddToContactsClicked(@NonNull Contact contact);
void onMessageSharedContactClicked(@NonNull List<Recipient> choices);

View File

@@ -19,6 +19,7 @@ package org.thoughtcrime.securesms;
import android.Manifest;
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.arch.lifecycle.ViewModelProviders;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -125,6 +126,9 @@ import org.thoughtcrime.securesms.database.model.MessageRecord;
import org.thoughtcrime.securesms.database.model.MmsMessageRecord;
import org.thoughtcrime.securesms.events.ReminderUpdateEvent;
import org.thoughtcrime.securesms.giph.ui.GiphyActivity;
import org.thoughtcrime.securesms.linkpreview.LinkPreview;
import org.thoughtcrime.securesms.linkpreview.LinkPreviewRepository;
import org.thoughtcrime.securesms.linkpreview.LinkPreviewViewModel;
import org.thoughtcrime.securesms.mediasend.MediaSendActivity;
import org.thoughtcrime.securesms.mediasend.Media;
import org.thoughtcrime.securesms.jobs.MultiDeviceBlockedUpdateJob;
@@ -270,6 +274,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
protected HidingLinearLayout inlineAttachmentToggle;
private QuickAttachmentDrawer quickAttachmentDrawer;
private InputPanel inputPanel;
private LinkPreviewViewModel linkPreviewViewModel;
private Recipient recipient;
private long threadId;
@@ -309,6 +314,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
initializeActionBar();
initializeViews();
initializeResources();
initializeLinkPreviewObserver();
initializeSecurity(false, isDefaultSms).addListener(new AssertedSuccessListener<Boolean>() {
@Override
public void onSuccess(Boolean result) {
@@ -443,6 +449,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
if ((data == null && reqCode != TAKE_PHOTO && reqCode != SMS_DEFAULT) ||
(resultCode != RESULT_OK && reqCode != SMS_DEFAULT))
{
updateLinkPreviewState();
return;
}
@@ -516,7 +523,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
slideDeck.addSlide(new ImageSlide(this, data.getData(), imageSize, imageWidth, imageHeight));
sendMediaMessage(transport.isSms(), message, slideDeck, Collections.emptyList(), expiresIn, subscriptionId, initiating);
sendMediaMessage(transport.isSms(), message, slideDeck, Collections.emptyList(), Collections.emptyList(), expiresIn, subscriptionId, initiating);
break;
case MEDIA_SENDER:
@@ -547,7 +554,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
}
}
sendMediaMessage(transport.isSms(), message, slideDeck, Collections.emptyList(), expiresIn, subscriptionId, initiating);
sendMediaMessage(transport.isSms(), message, slideDeck, Collections.emptyList(), Collections.emptyList(), expiresIn, subscriptionId, initiating);
break;
}
@@ -1438,6 +1445,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
sendButton.setEnabled(true);
sendButton.addOnTransportChangedListener((newTransport, manuallySelected) -> {
calculateCharactersRemaining();
updateLinkPreviewState();
composeText.setTransport(newTransport);
buttonToggle.getBackground().setColorFilter(newTransport.getBackgroundColor(), Mode.MULTIPLY);
buttonToggle.getBackground().invalidateSelf();
@@ -1496,6 +1504,31 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
recipient.addListener(this);
}
private void initializeLinkPreviewObserver() {
linkPreviewViewModel = ViewModelProviders.of(this, new LinkPreviewViewModel.Factory(new LinkPreviewRepository())).get(LinkPreviewViewModel.class);
if (!TextSecurePreferences.isLinkPreviewsEnabled(this)) {
linkPreviewViewModel.onUserCancel();
return;
}
linkPreviewViewModel.getLinkPreviewState().observe(this, previewState -> {
if (previewState == null) return;
if (previewState.isLoading()) {
Log.d(TAG, "Loading link preview.");
inputPanel.setLinkPreviewLoading();
} else {
Log.d(TAG, "Setting link preview: " + previewState.getLinkPreview().isPresent());
inputPanel.setLinkPreview(glideRequests, previewState.getLinkPreview());
}
updateToggleButtonState();
});
}
private void initializeProfiles() {
if (!isSecureText) {
Log.i(TAG, "SMS contact, no profile fetch needed.");
@@ -1546,6 +1579,8 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
//////// Helper Methods
private void addAttachment(int type) {
linkPreviewViewModel.onUserCancel();
Log.i(TAG, "Selected: " + type);
switch (type) {
case AttachmentTypeSelector.ADD_GALLERY:
@@ -1604,7 +1639,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
long expiresIn = recipient.getExpireMessages() * 1000L;
boolean initiating = threadId == -1;
sendMediaMessage(isSmsForced(), "", attachmentManager.buildSlideDeck(), contacts, expiresIn, subscriptionId, initiating);
sendMediaMessage(isSmsForced(), "", attachmentManager.buildSlideDeck(), contacts, Collections.emptyList(), expiresIn, subscriptionId, initiating);
}
private void selectContactInfo(ContactData contactData) {
@@ -1843,6 +1878,8 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
fragment.scrollToBottom();
attachmentManager.cleanup();
updateLinkPreviewState();
}
private void sendMessage() {
@@ -1857,6 +1894,11 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
int subscriptionId = sendButton.getSelectedTransport().getSimSubscriptionId().or(-1);
long expiresIn = recipient.getExpireMessages() * 1000L;
boolean initiating = threadId == -1;
boolean isMediaMessage = attachmentManager.isAttachmentPresent() ||
recipient.isGroupRecipient() ||
recipient.getAddress().isEmail() ||
inputPanel.getQuote().isPresent() ||
linkPreviewViewModel.hasLinkPreview();
Log.i(TAG, "isManual Selection: " + sendButton.isManualSelection());
Log.i(TAG, "forceSms: " + forceSms);
@@ -1867,7 +1909,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
handleUnverifiedRecipients();
} else if (!forceSms && identityRecords.isUntrusted()) {
handleUntrustedRecipients();
} else if (attachmentManager.isAttachmentPresent() || recipient.isGroupRecipient() || recipient.getAddress().isEmail() || inputPanel.getQuote().isPresent()) {
} else if (isMediaMessage) {
sendMediaMessage(forceSms, expiresIn, subscriptionId, initiating);
} else {
sendTextMessage(forceSms, expiresIn, subscriptionId, initiating);
@@ -1888,16 +1930,24 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
throws InvalidMessageException
{
Log.i(TAG, "Sending media message...");
sendMediaMessage(forceSms, getMessage(), attachmentManager.buildSlideDeck(), Collections.emptyList(), expiresIn, subscriptionId, initiating);
sendMediaMessage(forceSms, getMessage(), attachmentManager.buildSlideDeck(), Collections.emptyList(), linkPreviewViewModel.getPersistedLinkPreviews(this), expiresIn, subscriptionId, initiating);
}
private ListenableFuture<Void> sendMediaMessage(final boolean forceSms, String body, SlideDeck slideDeck, List<Contact> contacts, final long expiresIn, final int subscriptionId, final boolean initiating) {
private ListenableFuture<Void> sendMediaMessage(final boolean forceSms,
String body,
SlideDeck slideDeck,
List<Contact> contacts,
List<LinkPreview> previews,
final long expiresIn,
final int subscriptionId,
final boolean initiating)
{
if (!isDefaultSms && (!isSecureText || forceSms)) {
showDefaultSmsPrompt();
return new SettableFuture<>(null);
}
OutgoingMediaMessage outgoingMessageCandidate = new OutgoingMediaMessage(recipient, slideDeck, body, System.currentTimeMillis(), subscriptionId, expiresIn, distributionType, inputPanel.getQuote().orNull(), contacts);
OutgoingMediaMessage outgoingMessageCandidate = new OutgoingMediaMessage(recipient, slideDeck, body, System.currentTimeMillis(), subscriptionId, expiresIn, distributionType, inputPanel.getQuote().orNull(), contacts, previews);
final SettableFuture<Void> future = new SettableFuture<>();
final Context context = getApplicationContext();
@@ -2009,7 +2059,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
buttonToggle.display(sendButton);
quickAttachmentToggle.hide();
if (!attachmentManager.isAttachmentPresent()) {
if (!attachmentManager.isAttachmentPresent() && !linkPreviewViewModel.hasLinkPreview()) {
inlineAttachmentToggle.show();
} else {
inlineAttachmentToggle.hide();
@@ -2017,6 +2067,15 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
}
}
private void updateLinkPreviewState() {
if (TextSecurePreferences.isLinkPreviewsEnabled(this) && !sendButton.getSelectedTransport().isSms() && !attachmentManager.isAttachmentPresent()) {
linkPreviewViewModel.onEnabled();
linkPreviewViewModel.onTextChanged(this, composeText.getTextTrimmed());
} else {
linkPreviewViewModel.onUserCancel();
}
}
private void recordSubscriptionIdPreference(final Optional<Integer> subscriptionId) {
new AsyncTask<Void, Void, Void>() {
@Override
@@ -2104,7 +2163,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
SlideDeck slideDeck = new SlideDeck();
slideDeck.addSlide(audioSlide);
sendMediaMessage(forceSms, "", slideDeck, Collections.emptyList(), expiresIn, subscriptionId, initiating).addListener(new AssertedSuccessListener<Void>() {
sendMediaMessage(forceSms, "", slideDeck, Collections.emptyList(), Collections.emptyList(), expiresIn, subscriptionId, initiating).addListener(new AssertedSuccessListener<Void>() {
@Override
public void onSuccess(Void nothing) {
new AsyncTask<Void, Void, Void>() {
@@ -2164,6 +2223,11 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
}
}
@Override
public void onLinkPreviewCanceled() {
linkPreviewViewModel.onUserCancel();
}
@Override
public void onMediaSelected(@NonNull Uri uri, String contentType) {
if (!TextUtils.isEmpty(contentType) && contentType.trim().equals("image/gif")) {
@@ -2193,6 +2257,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
@Override
public void onQuickAttachment(Uri uri, String mimeType, String bucketId, long dateTaken, int width, int height) {
linkPreviewViewModel.onUserCancel();
Media media = new Media(uri, mimeType, dateTaken, width, height, Optional.of(Media.ALL_MEDIA_BUCKET_ID), Optional.absent());
startActivityForResult(MediaSendActivity.getIntent(ConversationActivity.this, Collections.singletonList(media), recipient, composeText.getTextTrimmed(), sendButton.getSelectedTransport()), MEDIA_SENDER);
}
@@ -2278,7 +2343,11 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
public void afterTextChanged(Editable s) {
calculateCharactersRemaining();
if (composeText.getTextTrimmed().length() == 0 || beforeLength == 0) {
String trimmed = composeText.getTextTrimmed();
linkPreviewViewModel.onTextChanged(ConversationActivity.this, trimmed);
if (trimmed.length() == 0 || beforeLength == 0) {
composeText.postDelayed(ConversationActivity.this::updateToggleButtonState, 50);
}
}
@@ -2336,6 +2405,21 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
author,
body,
slideDeck);
} else if (messageRecord.isMms() && !((MmsMessageRecord) messageRecord).getLinkPreviews().isEmpty()) {
LinkPreview linkPreview = ((MmsMessageRecord) messageRecord).getLinkPreviews().get(0);
SlideDeck slideDeck = new SlideDeck();
if (linkPreview.getThumbnail().isPresent()) {
slideDeck.addSlide(MediaUtil.getSlideForAttachment(this, linkPreview.getThumbnail().get()));
}
inputPanel.setQuote(GlideApp.with(this),
messageRecord.getDateSent(),
author,
messageRecord.getBody(),
slideDeck);
} else {
inputPanel.setQuote(GlideApp.with(this),
messageRecord.getDateSent(),
@@ -2349,6 +2433,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
public void onAttachmentChanged() {
handleSecurityChange(isSecureText, isDefaultSms);
updateToggleButtonState();
updateLinkPreviewState();
}
private class UnverifiedDismissedListener implements UnverifiedBannerView.DismissListener {

View File

@@ -44,6 +44,7 @@ import android.text.TextUtils;
import org.thoughtcrime.securesms.attachments.Attachment;
import org.thoughtcrime.securesms.components.ConversationTypingView;
import org.thoughtcrime.securesms.components.recyclerview.SmoothScrollingLinearLayoutManager;
import org.thoughtcrime.securesms.linkpreview.LinkPreview;
import org.thoughtcrime.securesms.logging.Log;
import android.view.LayoutInflater;
@@ -292,7 +293,7 @@ public class ConversationFragment extends Fragment
}
if (recipients.size() > 0) {
if (adapter.getHeaderView() == null && getListLayoutManager().findFirstCompletelyVisibleItemPosition() == 0) {
if (adapter.getHeaderView() == null && isAtBottom()) {
list.setVerticalScrollBarEnabled(false);
list.post(() -> getListLayoutManager().smoothScrollToPosition(requireContext(), 0, 250));
list.postDelayed(() -> list.setVerticalScrollBarEnabled(true), 300);
@@ -405,7 +406,7 @@ public class ConversationFragment extends Fragment
}
public void scrollToBottom() {
if (((LinearLayoutManager) list.getLayoutManager()).findFirstVisibleItemPosition() < SCROLL_ANIMATION_THRESHOLD) {
if (getListLayoutManager().findFirstVisibleItemPosition() < SCROLL_ANIMATION_THRESHOLD) {
list.smoothScrollToPosition(0);
} else {
list.scrollToPosition(0);
@@ -644,13 +645,13 @@ public class ConversationFragment extends Fragment
}
firstLoad = false;
} else if (previousOffset > 0) {
int scrollPosition = previousOffset + ((LinearLayoutManager) list.getLayoutManager()).findFirstVisibleItemPosition();
int scrollPosition = previousOffset + getListLayoutManager().findFirstVisibleItemPosition();
scrollPosition = Math.min(scrollPosition, count - 1);
View firstView = list.getLayoutManager().getChildAt(scrollPosition);
int pixelOffset = (firstView == null) ? 0 : (firstView.getBottom() - list.getPaddingBottom());
((LinearLayoutManager) list.getLayoutManager()).scrollToPositionWithOffset(scrollPosition, pixelOffset);
getListLayoutManager().scrollToPositionWithOffset(scrollPosition, pixelOffset);
previousOffset = 0;
}
@@ -711,10 +712,23 @@ public class ConversationFragment extends Fragment
private void scrollToLastSeenPosition(final int lastSeenPosition) {
if (lastSeenPosition > 0) {
list.post(() -> ((LinearLayoutManager)list.getLayoutManager()).scrollToPositionWithOffset(lastSeenPosition, list.getHeight()));
list.post(() -> getListLayoutManager().scrollToPositionWithOffset(lastSeenPosition, list.getHeight()));
}
}
private boolean isAtBottom() {
if (list.getChildCount() == 0) return true;
int firstVisiblePosition = getListLayoutManager().findFirstVisibleItemPosition();
if (getListAdapter().getHeaderView() == typingView) {
RecyclerView.ViewHolder item1 = list.findViewHolderForAdapterPosition(1);
return firstVisiblePosition <= 1 && item1 != null && item1.itemView.getBottom() <= list.getHeight();
}
return firstVisiblePosition == 0 && list.getChildAt(0).getBottom() <= list.getHeight();
}
public interface ConversationFragmentListener {
void setThreadId(long threadId);
void handleReplyMessage(MessageRecord messageRecord);
@@ -774,23 +788,12 @@ public class ConversationFragment extends Fragment
}
}
private boolean isAtBottom() {
if (list.getChildCount() == 0) return true;
int firstCompletelyVisiblePosition = ((LinearLayoutManager) list.getLayoutManager()).findFirstCompletelyVisibleItemPosition();
if (getListAdapter().getHeaderView() == typingView) {
return firstCompletelyVisiblePosition <= 1;
}
return firstCompletelyVisiblePosition == 0;
}
private boolean isAtZoomScrollHeight() {
return ((LinearLayoutManager) list.getLayoutManager()).findFirstCompletelyVisibleItemPosition() > 4;
return getListLayoutManager().findFirstCompletelyVisibleItemPosition() > 4;
}
private int getHeaderPositionId() {
return ((LinearLayoutManager)list.getLayoutManager()).findLastVisibleItemPosition();
return getListLayoutManager().findLastVisibleItemPosition();
}
private void bindScrollHeader(HeaderViewHolder headerViewHolder, int positionId) {
@@ -877,6 +880,13 @@ public class ConversationFragment extends Fragment
}.execute();
}
@Override
public void onLinkPreviewClicked(@NonNull LinkPreview linkPreview) {
if (getContext() != null && getActivity() != null) {
CommunicationActions.openBrowserLink(getActivity(), linkPreview.getUrl());
}
}
@Override
public void onSharedContactDetailsClicked(@NonNull Contact contact, @NonNull View avatarTransitionView) {
if (getContext() != null && getActivity() != null) {

View File

@@ -34,6 +34,10 @@ import android.text.TextUtils;
import android.text.style.URLSpan;
import android.text.util.Linkify;
import android.util.AttributeSet;
import org.thoughtcrime.securesms.attachments.Attachment;
import org.thoughtcrime.securesms.components.LinkPreviewView;
import org.thoughtcrime.securesms.linkpreview.LinkPreview;
import org.thoughtcrime.securesms.logging.Log;
import android.util.TypedValue;
import android.view.View;
@@ -66,6 +70,7 @@ import org.thoughtcrime.securesms.jobs.MmsDownloadJob;
import org.thoughtcrime.securesms.jobs.MmsSendJob;
import org.thoughtcrime.securesms.jobs.SmsSendJob;
import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.mms.ImageSlide;
import org.thoughtcrime.securesms.mms.PartAuthority;
import org.thoughtcrime.securesms.mms.Slide;
import org.thoughtcrime.securesms.mms.SlideClickListener;
@@ -127,6 +132,7 @@ public class ConversationItem extends LinearLayout
private @NonNull Stub<AudioView> audioViewStub;
private @NonNull Stub<DocumentView> documentViewStub;
private @NonNull Stub<SharedContactView> sharedContactStub;
private @NonNull Stub<LinkPreviewView> linkPreviewStub;
private @Nullable EventListener eventListener;
private int defaultBubbleColor;
@@ -137,6 +143,7 @@ public class ConversationItem extends LinearLayout
private final SlideClickPassthroughListener singleDownloadClickListener = new SlideClickPassthroughListener(downloadClickListener);
private final SharedContactEventListener sharedContactEventListener = new SharedContactEventListener();
private final SharedContactClickListener sharedContactClickListener = new SharedContactClickListener();
private final LinkPreviewClickListener linkPreviewClickListener = new LinkPreviewClickListener();
private final Context context;
@@ -172,6 +179,7 @@ public class ConversationItem extends LinearLayout
this.audioViewStub = new Stub<>(findViewById(R.id.audio_view_stub));
this.documentViewStub = new Stub<>(findViewById(R.id.document_view_stub));
this.sharedContactStub = new Stub<>(findViewById(R.id.shared_contact_view_stub));
this.linkPreviewStub = new Stub<>(findViewById(R.id.link_preview_stub));
this.groupSenderHolder = findViewById(R.id.group_sender_holder);
this.quoteView = findViewById(R.id.quote_view);
this.container = findViewById(R.id.container);
@@ -383,6 +391,10 @@ public class ConversationItem extends LinearLayout
return messageRecord.isMms() && !((MmsMessageRecord)messageRecord).getSharedContacts().isEmpty();
}
private boolean hasLinkPreview(MessageRecord messageRecord) {
return messageRecord.isMms() && !((MmsMessageRecord)messageRecord).getLinkPreviews().isEmpty();
}
private void setBodyText(MessageRecord messageRecord) {
bodyText.setClickable(false);
bodyText.setFocusable(false);
@@ -409,6 +421,7 @@ public class ConversationItem extends LinearLayout
if (audioViewStub.resolved()) mediaThumbnailStub.get().setVisibility(View.GONE);
if (mediaThumbnailStub.resolved()) mediaThumbnailStub.get().setVisibility(View.GONE);
if (documentViewStub.resolved()) documentViewStub.get().setVisibility(View.GONE);
if (linkPreviewStub.resolved()) linkPreviewStub.get().setVisibility(GONE);
sharedContactStub.get().setContact(((MediaMmsMessageRecord) messageRecord).getSharedContacts().get(0), glideRequests, locale);
sharedContactStub.get().setEventListener(sharedContactEventListener);
@@ -418,13 +431,51 @@ public class ConversationItem extends LinearLayout
setSharedContactCorners(messageRecord, previousRecord, nextRecord, isGroupThread);
ViewUtil.updateLayoutParams(bodyText, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
ViewUtil.updateLayoutParams(groupSenderHolder, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
ViewUtil.updateLayoutParams(groupSenderHolder, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
footer.setVisibility(GONE);
} else if (hasLinkPreview(messageRecord)) {
linkPreviewStub.get().setVisibility(View.VISIBLE);
if (audioViewStub.resolved()) audioViewStub.get().setVisibility(View.GONE);
if (mediaThumbnailStub.resolved()) mediaThumbnailStub.get().setVisibility(View.GONE);
if (documentViewStub.resolved()) documentViewStub.get().setVisibility(View.GONE);
if (sharedContactStub.resolved()) sharedContactStub.get().setVisibility(GONE);
//noinspection ConstantConditions
LinkPreview linkPreview = ((MmsMessageRecord) messageRecord).getLinkPreviews().get(0);
if (linkPreview.getThumbnail().isPresent() && shouldPromotePreviewImage(linkPreview.getThumbnail().get())) {
mediaThumbnailStub.get().setVisibility(VISIBLE);
mediaThumbnailStub.get().setImageResource(glideRequests, Collections.singletonList(new ImageSlide(context, linkPreview.getThumbnail().get())), showControls, false);
mediaThumbnailStub.get().setThumbnailClickListener(new LinkPreviewThumbnailClickListener());
mediaThumbnailStub.get().setDownloadClickListener(downloadClickListener);
mediaThumbnailStub.get().setOnLongClickListener(passthroughClickListener);
linkPreviewStub.get().setLinkPreview(glideRequests, linkPreview, false);
setThumbnailCorners(messageRecord, previousRecord, nextRecord, isGroupThread);
setLinkPreviewCorners(messageRecord, previousRecord, nextRecord, isGroupThread, true);
ViewUtil.updateLayoutParams(bodyText, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
ViewUtil.updateLayoutParams(groupSenderHolder, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
} else {
linkPreviewStub.get().setLinkPreview(glideRequests, linkPreview, true);
linkPreviewStub.get().setDownloadClickedListener(downloadClickListener);
setLinkPreviewCorners(messageRecord, previousRecord, nextRecord, isGroupThread, false);
ViewUtil.updateLayoutParams(bodyText, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
ViewUtil.updateLayoutParams(groupSenderHolder, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
}
linkPreviewStub.get().setOnClickListener(linkPreviewClickListener);
linkPreviewStub.get().setOnLongClickListener(passthroughClickListener);
footer.setVisibility(VISIBLE);
} else if (hasAudio(messageRecord)) {
audioViewStub.get().setVisibility(View.VISIBLE);
if (mediaThumbnailStub.resolved()) mediaThumbnailStub.get().setVisibility(View.GONE);
if (documentViewStub.resolved()) documentViewStub.get().setVisibility(View.GONE);
if (sharedContactStub.resolved()) sharedContactStub.get().setVisibility(GONE);
if (linkPreviewStub.resolved()) linkPreviewStub.get().setVisibility(GONE);
//noinspection ConstantConditions
audioViewStub.get().setAudio(((MediaMmsMessageRecord) messageRecord).getSlideDeck().getAudioSlide(), showControls);
@@ -439,6 +490,7 @@ public class ConversationItem extends LinearLayout
if (mediaThumbnailStub.resolved()) mediaThumbnailStub.get().setVisibility(View.GONE);
if (audioViewStub.resolved()) audioViewStub.get().setVisibility(View.GONE);
if (sharedContactStub.resolved()) sharedContactStub.get().setVisibility(GONE);
if (linkPreviewStub.resolved()) linkPreviewStub.get().setVisibility(GONE);
//noinspection ConstantConditions
documentViewStub.get().setDocument(((MediaMmsMessageRecord)messageRecord).getSlideDeck().getDocumentSlide(), showControls);
@@ -451,9 +503,10 @@ public class ConversationItem extends LinearLayout
footer.setVisibility(VISIBLE);
} else if (hasThumbnail(messageRecord)) {
mediaThumbnailStub.get().setVisibility(View.VISIBLE);
if (audioViewStub.resolved()) audioViewStub.get().setVisibility(View.GONE);
if (documentViewStub.resolved()) documentViewStub.get().setVisibility(View.GONE);
if (sharedContactStub.resolved()) sharedContactStub.get().setVisibility(GONE);
if (audioViewStub.resolved()) audioViewStub.get().setVisibility(View.GONE);
if (documentViewStub.resolved()) documentViewStub.get().setVisibility(View.GONE);
if (sharedContactStub.resolved()) sharedContactStub.get().setVisibility(GONE);
if (linkPreviewStub.resolved()) linkPreviewStub.get().setVisibility(GONE);
//noinspection ConstantConditions
List<Slide> thumbnailSlides = ((MmsMessageRecord) messageRecord).getSlideDeck().getThumbnailSlides();
@@ -469,7 +522,7 @@ public class ConversationItem extends LinearLayout
mediaThumbnailStub.get().setConversationColor(messageRecord.isOutgoing() ? defaultBubbleColor
: messageRecord.getRecipient().getColor().toConversationColor(context));
setThumbnailOutlineCorners(messageRecord, previousRecord, nextRecord, isGroupThread);
setThumbnailCorners(messageRecord, previousRecord, nextRecord, isGroupThread);
ViewUtil.updateLayoutParams(bodyText, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
ViewUtil.updateLayoutParams(groupSenderHolder, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
@@ -479,6 +532,7 @@ public class ConversationItem extends LinearLayout
if (audioViewStub.resolved()) audioViewStub.get().setVisibility(View.GONE);
if (documentViewStub.resolved()) documentViewStub.get().setVisibility(View.GONE);
if (sharedContactStub.resolved()) sharedContactStub.get().setVisibility(GONE);
if (linkPreviewStub.resolved()) linkPreviewStub.get().setVisibility(GONE);
ViewUtil.updateLayoutParams(bodyText, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
ViewUtil.updateLayoutParams(groupSenderHolder, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
@@ -486,10 +540,10 @@ public class ConversationItem extends LinearLayout
}
}
private void setThumbnailOutlineCorners(@NonNull MessageRecord current,
@NonNull Optional<MessageRecord> previous,
@NonNull Optional<MessageRecord> next,
boolean isGroupThread)
private void setThumbnailCorners(@NonNull MessageRecord current,
@NonNull Optional<MessageRecord> previous,
@NonNull Optional<MessageRecord> next,
boolean isGroupThread)
{
int defaultRadius = readDimen(R.dimen.message_corner_radius);
int collapseRadius = readDimen(R.dimen.message_corner_collapse_radius);
@@ -541,18 +595,38 @@ public class ConversationItem extends LinearLayout
topRight = 0;
}
mediaThumbnailStub.get().setOutlineCorners(topLeft, topRight, bottomRight, bottomLeft);
if (hasLinkPreview(messageRecord)) {
bottomLeft = 0;
bottomRight = 0;
}
mediaThumbnailStub.get().setCorners(topLeft, topRight, bottomRight, bottomLeft);
}
private void setSharedContactCorners(@NonNull MessageRecord current, @NonNull Optional<MessageRecord> previous, @NonNull Optional<MessageRecord> next, boolean isGroupThread) {
if (isSingularMessage(current, previous, next, isGroupThread) || isEndOfMessageCluster(current, next, isGroupThread)) {
sharedContactStub.get().setSingularStyle();
} else if (current.isOutgoing()) {
sharedContactStub.get().setClusteredOutgoingStyle();
} else {
if (current.isOutgoing()) {
sharedContactStub.get().setClusteredOutgoingStyle();
} else {
sharedContactStub.get().setClusteredIncomingStyle();
}
sharedContactStub.get().setClusteredIncomingStyle();
}
}
private void setLinkPreviewCorners(@NonNull MessageRecord current, @NonNull Optional<MessageRecord> previous, @NonNull Optional<MessageRecord> next, boolean isGroupThread, boolean bigImage) {
int defaultRadius = readDimen(R.dimen.message_corner_radius);
int collapseRadius = readDimen(R.dimen.message_corner_collapse_radius);
if (bigImage) {
linkPreviewStub.get().setCorners(0, 0);
} else if (isStartOfMessageCluster(current, previous, isGroupThread) && !current.isOutgoing() && isGroupThread) {
linkPreviewStub.get().setCorners(0, 0);
} else if (isSingularMessage(current, previous, next, isGroupThread) || isStartOfMessageCluster(current, previous, isGroupThread)) {
linkPreviewStub.get().setCorners(defaultRadius, defaultRadius);
} else if (current.isOutgoing()) {
linkPreviewStub.get().setCorners(defaultRadius, collapseRadius);
} else {
linkPreviewStub.get().setCorners(collapseRadius, defaultRadius);
}
}
@@ -561,6 +635,11 @@ public class ConversationItem extends LinearLayout
contactPhoto.setAvatar(glideRequests, recipient, true);
}
private boolean shouldPromotePreviewImage(@NonNull Attachment attachment) {
int minWidth = getResources().getDimensionPixelSize(R.dimen.media_bubble_min_width);
return attachment.getWidth() >= minWidth;
}
private SpannableString linkifyMessageBody(SpannableString messageBody, boolean shouldLinkifyAllLinks) {
int linkPattern = Linkify.WEB_URLS | Linkify.EMAIL_ADDRESSES | Linkify.PHONE_NUMBERS;
boolean hasLinks = Linkify.addLinks(messageBody, shouldLinkifyAllLinks ? linkPattern : 0);
@@ -847,6 +926,27 @@ public class ConversationItem extends LinearLayout
}
}
private class LinkPreviewClickListener implements View.OnClickListener {
@Override
public void onClick(View view) {
if (eventListener != null && batchSelected.isEmpty() && messageRecord.isMms() && !((MmsMessageRecord) messageRecord).getLinkPreviews().isEmpty()) {
eventListener.onLinkPreviewClicked(((MmsMessageRecord) messageRecord).getLinkPreviews().get(0));
} else {
passthroughClickListener.onClick(view);
}
}
}
private class LinkPreviewThumbnailClickListener implements SlideClickListener {
public void onClick(final View v, final Slide slide) {
if (eventListener != null && batchSelected.isEmpty() && messageRecord.isMms() && !((MmsMessageRecord) messageRecord).getLinkPreviews().isEmpty()) {
eventListener.onLinkPreviewClicked(((MmsMessageRecord) messageRecord).getLinkPreviews().get(0));
} else {
performClick();
}
}
}
private class AttachmentDownloadClickListener implements SlidesClickedListener {
@Override
public void onClick(View v, final List<Slide> slides) {

View File

@@ -48,7 +48,6 @@ import org.thoughtcrime.securesms.database.Address;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.MessagingDatabase.MarkedMessageInfo;
import org.thoughtcrime.securesms.lock.RegistrationLockDialog;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.mms.GlideApp;
import org.thoughtcrime.securesms.notifications.MarkReadReceiver;
import org.thoughtcrime.securesms.notifications.MessageNotifier;
@@ -60,7 +59,7 @@ import org.thoughtcrime.securesms.util.DynamicLanguage;
import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme;
import org.thoughtcrime.securesms.util.DynamicTheme;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.thoughtcrime.securesms.util.concurrent.LifecycleBoundTask;
import org.thoughtcrime.securesms.util.concurrent.SimpleTask;
import org.whispersystems.libsignal.util.guava.Optional;
import java.util.List;
@@ -112,7 +111,7 @@ public class ConversationListActivity extends PassphraseRequiredActionBarActivit
dynamicTheme.onResume(this);
dynamicLanguage.onResume(this);
LifecycleBoundTask.run(getLifecycle(), () -> {
SimpleTask.run(getLifecycle(), () -> {
return Recipient.from(this, Address.fromSerialized(TextSecurePreferences.getLocalNumber(this)), false);
}, this::initializeProfileIcon);
}

View File

@@ -29,7 +29,7 @@ import org.whispersystems.libsignal.util.guava.Optional;
import java.util.Collections;
import java.util.List;
public class ExperienceUpgradeActivity extends BaseActionBarActivity implements TypingIndicatorIntroFragment.Controller {
public class ExperienceUpgradeActivity extends BaseActionBarActivity implements TypingIndicatorIntroFragment.Controller, LinkPreviewsIntroFragment.Controller {
private static final String TAG = ExperienceUpgradeActivity.class.getSimpleName();
private static final String DISMISS_ACTION = "org.thoughtcrime.securesms.ExperienceUpgradeActivity.DISMISS_ACTION";
private static final int NOTIFICATION_ID = 1339;
@@ -80,7 +80,14 @@ public class ExperienceUpgradeActivity extends BaseActionBarActivity implements
R.string.ExperienceUpgradeActivity_now_you_can_optionally_see_and_share_when_messages_are_being_typed,
R.string.ExperienceUpgradeActivity_now_you_can_optionally_see_and_share_when_messages_are_being_typed,
null,
true);
true),
LINK_PREVIEWS(449,
new IntroPage(0xFF2090EA, LinkPreviewsIntroFragment.newInstance()),
R.string.ExperienceUpgradeActivity_introducing_link_previews,
R.string.ExperienceUpgradeActivity_optional_link_previews_are_now_supported,
R.string.ExperienceUpgradeActivity_optional_link_previews_are_now_supported,
null,
true);
private int version;
private List<IntroPage> pages;
@@ -215,10 +222,15 @@ public class ExperienceUpgradeActivity extends BaseActionBarActivity implements
}
@Override
public void onFinished() {
public void onTypingIndicatorsFinished() {
onContinue(Optional.of(ExperienceUpgrade.TYPING_INDICATORS));
}
@Override
public void onLinkPreviewsFinished() {
onContinue(Optional.of(ExperienceUpgrade.LINK_PREVIEWS));
}
private final class OnPageChangeListener implements ViewPager.OnPageChangeListener {
private final ArgbEvaluator evaluator = new ArgbEvaluator();
private final ExperienceUpgrade upgrade;

View File

@@ -0,0 +1,65 @@
package org.thoughtcrime.securesms;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import org.thoughtcrime.securesms.components.TypingIndicatorView;
import org.thoughtcrime.securesms.jobs.MultiDeviceConfigurationUpdateJob;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
public class LinkPreviewsIntroFragment extends Fragment {
private Controller controller;
public static LinkPreviewsIntroFragment newInstance() {
LinkPreviewsIntroFragment fragment = new LinkPreviewsIntroFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
public LinkPreviewsIntroFragment() {}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
if (!(getActivity() instanceof Controller)) {
throw new IllegalStateException("Parent activity must implement the Controller interface.");
}
controller = (Controller) getActivity();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.experience_upgrade_link_previews_fragment, container, false);
view.findViewById(R.id.experience_ok_button).setOnClickListener(v -> {
ApplicationContext.getInstance(requireContext())
.getJobManager()
.add(new MultiDeviceConfigurationUpdateJob(getContext(),
TextSecurePreferences.isReadReceiptsEnabled(requireContext()),
TextSecurePreferences.isTypingIndicatorsEnabled(requireContext()),
TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(requireContext()),
TextSecurePreferences.isLinkPreviewsEnabled(requireContext())));
controller.onLinkPreviewsFinished();
});
return view;
}
public interface Controller {
void onLinkPreviewsFinished();
}
}

View File

@@ -25,14 +25,15 @@ import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AlertDialog;
import com.google.android.gms.common.GoogleApiAvailability;
import com.google.android.gms.common.GooglePlayServicesUtil;
public class PlayServicesProblemFragment extends DialogFragment {
@Override
public @NonNull Dialog onCreateDialog(@NonNull Bundle bundle) {
int code = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getActivity());
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(code, getActivity(), 9111);
int code = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(getActivity());
Dialog dialog = GoogleApiAvailability.getInstance().getErrorDialog(getActivity(), code, 9111);
if (dialog == null) {
return new AlertDialog.Builder(getActivity())

View File

@@ -41,7 +41,8 @@ public class ReadReceiptsIntroFragment extends Fragment {
.add(new MultiDeviceConfigurationUpdateJob(getContext(),
isChecked,
TextSecurePreferences.isTypingIndicatorsEnabled(requireContext()),
TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(getContext())));
TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(getContext()),
TextSecurePreferences.isLinkPreviewsEnabled(getContext())));
});
return v;

View File

@@ -282,6 +282,7 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi
RecipientDatabase db = DatabaseFactory.getRecipientDatabase(getContext());
db.setMessageRingtone(recipient, NotificationChannels.getMessageRingtone(context, recipient));
db.setMessageVibrate(recipient, NotificationChannels.getMessageVibrate(context, recipient) ? VibrateState.ENABLED : VibrateState.DISABLED);
NotificationChannels.ensureCustomChannelConsistency(context);
return null;
}
}.executeOnExecutor(AsyncTask.SERIAL_EXECUTOR);
@@ -362,6 +363,7 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi
ColorPickerPreference colorPreference = (ColorPickerPreference) this.findPreference(PREFERENCE_COLOR);
Preference blockPreference = this.findPreference(PREFERENCE_BLOCK);
Preference identityPreference = this.findPreference(PREFERENCE_IDENTITY);
PreferenceCategory callCategory = (PreferenceCategory)this.findPreference("call_settings");
PreferenceCategory aboutCategory = (PreferenceCategory)this.findPreference("about");
PreferenceCategory aboutDivider = (PreferenceCategory)this.findPreference("about_divider");
ContactPreference aboutPreference = (ContactPreference)this.findPreference(PREFERENCE_ABOUT);
@@ -385,8 +387,10 @@ public class RecipientPreferenceActivity extends PassphraseRequiredActionBarActi
if (recipient.isGroupRecipient()) {
if (colorPreference != null) colorPreference.setVisible(false);
if (identityPreference != null) identityPreference.setVisible(false);
if (aboutCategory != null) getPreferenceScreen().removePreference(aboutCategory);
if (aboutDivider != null) getPreferenceScreen().removePreference(aboutDivider);
if (callCategory != null) callCategory.setVisible(false);
if (aboutCategory != null) aboutCategory.setVisible(false);
if (aboutDivider != null) aboutDivider.setVisible(false);
if (divider != null) divider.setVisible(false);
} else {
colorPreference.setColors(MaterialColors.CONVERSATION_PALETTE.asConversationColorArray(getActivity()));
colorPreference.setColor(recipient.getColor().toActionBarColor(getActivity()));

View File

@@ -45,7 +45,6 @@ import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GoogleApiAvailability;
import com.google.android.gms.common.api.CommonStatusCodes;
import com.google.android.gms.common.api.Status;
import com.google.android.gms.gcm.GoogleCloudMessaging;
import com.google.android.gms.tasks.Task;
import com.google.i18n.phonenumbers.AsYouTypeFormatter;
import com.google.i18n.phonenumbers.PhoneNumberUtil;
@@ -71,8 +70,8 @@ import org.thoughtcrime.securesms.database.Address;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.IdentityDatabase;
import org.thoughtcrime.securesms.database.NoExternalStorageException;
import org.thoughtcrime.securesms.gcm.FcmUtil;
import org.thoughtcrime.securesms.jobs.DirectoryRefreshJob;
import org.thoughtcrime.securesms.jobs.GcmRefreshJob;
import org.thoughtcrime.securesms.jobs.RotateCertificateJob;
import org.thoughtcrime.securesms.lock.RegistrationLockReminders;
import org.thoughtcrime.securesms.logging.Log;
@@ -507,18 +506,18 @@ public class RegistrationActivity extends BaseActionBarActivity implements Verif
String password = Util.getSecret(18);
Optional<String> gcmToken;
Optional<String> fcmToken;
if (gcmSupported) {
gcmToken = Optional.of(GoogleCloudMessaging.getInstance(RegistrationActivity.this).register(GcmRefreshJob.REGISTRATION_ID));
fcmToken = FcmUtil.getToken();
} else {
gcmToken = Optional.absent();
fcmToken = Optional.absent();
}
accountManager = AccountManagerFactory.createManager(RegistrationActivity.this, e164number, password);
accountManager.requestSmsVerificationCode(smsRetrieverSupported);
return new Pair<>(password, gcmToken);
return new Pair<>(password, fcmToken);
} catch (IOException e) {
Log.w(TAG, "Error during account registration", e);
return null;
@@ -726,8 +725,8 @@ public class RegistrationActivity extends BaseActionBarActivity implements Verif
accountManager.setGcmId(registrationState.gcmToken);
}
TextSecurePreferences.setGcmRegistrationId(RegistrationActivity.this, registrationState.gcmToken.orNull());
TextSecurePreferences.setGcmDisabled(RegistrationActivity.this, !registrationState.gcmToken.isPresent());
TextSecurePreferences.setFcmToken(RegistrationActivity.this, registrationState.gcmToken.orNull());
TextSecurePreferences.setFcmDisabled(RegistrationActivity.this, !registrationState.gcmToken.isPresent());
TextSecurePreferences.setWebsocketRegistered(RegistrationActivity.this, true);
DatabaseFactory.getIdentityDatabase(RegistrationActivity.this)

View File

@@ -202,22 +202,6 @@ public class ShareActivity extends PassphraseRequiredActionBarActivity
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case R.id.menu_new_message: handleNewConversation(); return true;
case android.R.id.home: finish(); return true;
}
return false;
}
private void handleNewConversation() {
Intent intent = getBaseShareIntent(NewConversationActivity.class);
isPassingAlongMedia = true;
startActivity(intent);
}
private void handleResolvedMedia(Intent intent, boolean animate) {
long threadId = intent.getLongExtra(EXTRA_THREAD_ID, -1);
int distributionType = intent.getIntExtra(EXTRA_DISTRIBUTION_TYPE, -1);

View File

@@ -62,6 +62,10 @@ public class TransportOptions {
}
public void setDefaultSubscriptionId(Optional<Integer> subscriptionId) {
if (defaultSubscriptionId.equals(subscriptionId)) {
return;
}
this.defaultSubscriptionId = subscriptionId;
if (!selectedOption.isPresent()) {

View File

@@ -4,7 +4,6 @@ package org.thoughtcrime.securesms;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.widget.SwitchCompat;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -12,7 +11,6 @@ import android.view.ViewGroup;
import org.thoughtcrime.securesms.components.TypingIndicatorView;
import org.thoughtcrime.securesms.jobs.MultiDeviceConfigurationUpdateJob;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.thoughtcrime.securesms.util.ViewUtil;
public class TypingIndicatorIntroFragment extends Fragment {
@@ -64,12 +62,13 @@ public class TypingIndicatorIntroFragment extends Fragment {
.add(new MultiDeviceConfigurationUpdateJob(getContext(),
TextSecurePreferences.isReadReceiptsEnabled(requireContext()),
typingEnabled,
TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(getContext())));
TextSecurePreferences.isShowUnidentifiedDeliveryIndicatorsEnabled(getContext()),
TextSecurePreferences.isLinkPreviewsEnabled(getContext())));
controller.onFinished();
controller.onTypingIndicatorsFinished();
}
public interface Controller {
void onFinished();
void onTypingIndicatorsFinished();
}
}

View File

@@ -232,7 +232,7 @@ public class WebRtcCallActivity extends Activity {
private void handleCallConnected(@NonNull WebRtcViewModel event) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_IGNORE_CHEEK_PRESSES);
callScreen.setActiveCall(event.getRecipient(), getString(R.string.RedPhone_connected), "");
callScreen.setActiveCall(event.getRecipient(), getString(R.string.RedPhone_connected), "", event.getLocalRenderer(), event.getRemoteRenderer());
}
private void handleRecipientUnavailable(@NonNull WebRtcViewModel event) {

View File

@@ -26,24 +26,12 @@ import java.util.List;
public class ConversationItemThumbnail extends FrameLayout {
private static final String TAG = ConversationItemThumbnail.class.getSimpleName();
private final float[] radii = new float[8];
private final RectF bounds = new RectF();
private final Path corners = new Path();
private ThumbnailView thumbnail;
private AlbumThumbnailView album;
private ImageView shade;
private ConversationItemFooter footer;
private CornerMask cornerMask;
private final Paint outlinePaint = new Paint();
{
outlinePaint.setStyle(Paint.Style.STROKE);
outlinePaint.setStrokeWidth(1f);
outlinePaint.setAntiAlias(true);
}
private Outliner outliner;
public ConversationItemThumbnail(Context context) {
super(context);
@@ -63,13 +51,14 @@ public class ConversationItemThumbnail extends FrameLayout {
private void init(@Nullable AttributeSet attrs) {
inflate(getContext(), R.layout.conversation_item_thumbnail, this);
outlinePaint.setColor(ThemeUtil.getThemedColor(getContext(), R.attr.conversation_item_image_outline_color));
this.thumbnail = findViewById(R.id.conversation_thumbnail_image);
this.album = findViewById(R.id.conversation_thumbnail_album);
this.shade = findViewById(R.id.conversation_thumbnail_shade);
this.footer = findViewById(R.id.conversation_thumbnail_footer);
this.cornerMask = new CornerMask(this);
this.outliner = new Outliner();
outliner.setColor(ThemeUtil.getThemedColor(getContext(), R.attr.conversation_item_image_outline_color));
if (attrs != null) {
TypedArray typedArray = getContext().getTheme().obtainStyledAttributes(attrs, R.styleable.ConversationItemThumbnail, 0, 0);
@@ -95,17 +84,7 @@ public class ConversationItemThumbnail extends FrameLayout {
}
if (album.getVisibility() != VISIBLE) {
final float halfStrokeWidth = outlinePaint.getStrokeWidth() / 2;
bounds.left = halfStrokeWidth;
bounds.top = halfStrokeWidth;
bounds.right = canvas.getWidth() - halfStrokeWidth;
bounds.bottom = canvas.getHeight() - halfStrokeWidth;
corners.reset();
corners.addRoundRect(bounds, radii, Path.Direction.CW);
canvas.drawPath(corners, outlinePaint);
outliner.draw(canvas);
}
}
@@ -132,13 +111,9 @@ public class ConversationItemThumbnail extends FrameLayout {
forceLayout();
}
public void setOutlineCorners(int topLeft, int topRight, int bottomRight, int bottomLeft) {
radii[0] = radii[1] = topLeft;
radii[2] = radii[3] = topRight;
radii[4] = radii[5] = bottomRight;
radii[6] = radii[7] = bottomLeft;
public void setCorners(int topLeft, int topRight, int bottomRight, int bottomLeft) {
cornerMask.setRadii(topLeft, topRight, bottomRight, bottomLeft);
outliner.setRadii(topLeft, topRight, bottomRight, bottomLeft);
}
public ConversationItemFooter getFooter() {

View File

@@ -4,6 +4,7 @@ import android.annotation.TargetApi;
import android.content.Context;
import android.net.Uri;
import android.os.Build;
import android.support.annotation.DimenRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.view.ViewCompat;
@@ -22,6 +23,7 @@ import android.widget.Toast;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.components.emoji.EmojiDrawer;
import org.thoughtcrime.securesms.components.emoji.EmojiToggle;
import org.thoughtcrime.securesms.linkpreview.LinkPreview;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.mms.QuoteModel;
@@ -48,13 +50,14 @@ public class InputPanel extends LinearLayout
private static final int FADE_TIME = 150;
private QuoteView quoteView;
private EmojiToggle emojiToggle;
private ComposeText composeText;
private View quickCameraToggle;
private View quickAudioToggle;
private View buttonToggle;
private View recordingContainer;
private QuoteView quoteView;
private LinkPreviewView linkPreview;
private EmojiToggle emojiToggle;
private ComposeText composeText;
private View quickCameraToggle;
private View quickAudioToggle;
private View buttonToggle;
private View recordingContainer;
private MicrophoneRecorderView microphoneRecorderView;
private SlideToCancel slideToCancel;
@@ -83,6 +86,7 @@ public class InputPanel extends LinearLayout
View quoteDismiss = findViewById(R.id.quote_dismiss);
this.quoteView = findViewById(R.id.quote_view);
this.linkPreview = findViewById(R.id.link_preview);
this.emojiToggle = findViewById(R.id.emoji_toggle);
this.composeText = findViewById(R.id.embedded_text_editor);
this.quickCameraToggle = findViewById(R.id.quick_camera_toggle);
@@ -108,6 +112,12 @@ public class InputPanel extends LinearLayout
}
quoteDismiss.setOnClickListener(v -> clearQuote());
linkPreview.setCloseClickedListener(() -> {
if (listener != null) {
listener.onLinkPreviewCanceled();
}
});
}
public void setListener(final @NonNull Listener listener) {
@@ -123,10 +133,20 @@ public class InputPanel extends LinearLayout
public void setQuote(@NonNull GlideRequests glideRequests, long id, @NonNull Recipient author, @NonNull String body, @NonNull SlideDeck attachments) {
this.quoteView.setQuote(glideRequests, id, author, body, false, attachments);
this.quoteView.setVisibility(View.VISIBLE);
if (this.linkPreview.getVisibility() == View.VISIBLE) {
int cornerRadius = readDimen(R.dimen.message_corner_collapse_radius);
this.linkPreview.setCorners(cornerRadius, cornerRadius);
}
}
public void clearQuote() {
this.quoteView.dismiss();
if (this.linkPreview.getVisibility() == View.VISIBLE) {
int cornerRadius = readDimen(R.dimen.message_corner_radius);
this.linkPreview.setCorners(cornerRadius, cornerRadius);
}
}
public Optional<QuoteModel> getQuote() {
@@ -137,6 +157,25 @@ public class InputPanel extends LinearLayout
}
}
public void setLinkPreviewLoading() {
this.linkPreview.setVisibility(View.VISIBLE);
this.linkPreview.setLoading();
}
public void setLinkPreview(@NonNull GlideRequests glideRequests, @NonNull Optional<LinkPreview> preview) {
if (preview.isPresent()) {
this.linkPreview.setVisibility(View.VISIBLE);
this.linkPreview.setLinkPreview(glideRequests, preview.get(), true);
} else {
this.linkPreview.setVisibility(View.GONE);
}
int cornerRadius = quoteView.getVisibility() == VISIBLE ? readDimen(R.dimen.message_corner_collapse_radius)
: readDimen(R.dimen.message_corner_radius);
this.linkPreview.setCorners(cornerRadius, cornerRadius);
}
public void setEmojiDrawer(@NonNull EmojiDrawer emojiDrawer) {
emojiToggle.attach(emojiDrawer);
}
@@ -238,6 +277,10 @@ public class InputPanel extends LinearLayout
composeText.insertEmoji(emoji);
}
private int readDimen(@DimenRes int dimenRes) {
return getResources().getDimensionPixelSize(dimenRes);
}
public interface Listener {
void onRecorderStarted();
@@ -245,6 +288,7 @@ public class InputPanel extends LinearLayout
void onRecorderCanceled();
void onRecorderPermissionRequired();
void onEmojiToggle();
void onLinkPreviewCanceled();
}
private static class SlideToCancel {

View File

@@ -0,0 +1,160 @@
package org.thoughtcrime.securesms.components;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.linkpreview.LinkPreview;
import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.mms.ImageSlide;
import org.thoughtcrime.securesms.mms.SlidesClickedListener;
import org.thoughtcrime.securesms.util.ThemeUtil;
import okhttp3.HttpUrl;
public class LinkPreviewView extends FrameLayout {
private static final int TYPE_CONVERSATION = 0;
private static final int TYPE_COMPOSE = 1;
private ViewGroup container;
private OutlinedThumbnailView thumbnail;
private TextView title;
private TextView site;
private View divider;
private View closeButton;
private View spinner;
private int type;
private int defaultRadius;
private CornerMask cornerMask;
private Outliner outliner;
private CloseClickedListener closeClickedListener;
public LinkPreviewView(Context context) {
super(context);
init(null);
}
public LinkPreviewView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(attrs);
}
private void init(@Nullable AttributeSet attrs) {
inflate(getContext(), R.layout.link_preview, this);
container = findViewById(R.id.linkpreview_container);
thumbnail = findViewById(R.id.linkpreview_thumbnail);
title = findViewById(R.id.linkpreview_title);
site = findViewById(R.id.linkpreview_site);
divider = findViewById(R.id.linkpreview_divider);
spinner = findViewById(R.id.linkpreview_progress_wheel);
closeButton = findViewById(R.id.linkpreview_close);
defaultRadius = getResources().getDimensionPixelSize(R.dimen.thumbnail_default_radius);
cornerMask = new CornerMask(this);
outliner = new Outliner();
outliner.setColor(ThemeUtil.getThemedColor(getContext(), R.attr.conversation_item_image_outline_color));
if (attrs != null) {
TypedArray typedArray = getContext().getTheme().obtainStyledAttributes(attrs, R.styleable.LinkPreviewView, 0, 0);
type = typedArray.getInt(R.styleable.LinkPreviewView_linkpreview_type, 0);
typedArray.recycle();
}
if (type == TYPE_COMPOSE) {
container.setBackgroundColor(Color.TRANSPARENT);
container.setPadding(0, 0, 0, 0);
divider.setVisibility(VISIBLE);
closeButton.setVisibility(VISIBLE);
closeButton.setOnClickListener(v -> {
if (closeClickedListener != null) {
closeClickedListener.onCloseClicked();
}
});
}
setWillNotDraw(false);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (type == TYPE_COMPOSE) return;
if (cornerMask.isLegacy()) {
cornerMask.mask(canvas);
}
}
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
if (type == TYPE_COMPOSE) return;
if (!cornerMask.isLegacy()) {
cornerMask.mask(canvas);
}
outliner.draw(canvas);
}
public void setLoading() {
title.setVisibility(GONE);
site.setVisibility(GONE);
thumbnail.setVisibility(GONE);
spinner.setVisibility(VISIBLE);
}
public void setLinkPreview(@NonNull GlideRequests glideRequests, @NonNull LinkPreview linkPreview, boolean showThumbnail) {
title.setVisibility(VISIBLE);
site.setVisibility(VISIBLE);
thumbnail.setVisibility(VISIBLE);
spinner.setVisibility(GONE);
title.setText(linkPreview.getTitle());
HttpUrl url = HttpUrl.parse(linkPreview.getUrl());
if (url != null) {
site.setText(url.topPrivateDomain());
}
if (showThumbnail && linkPreview.getThumbnail().isPresent()) {
thumbnail.setVisibility(VISIBLE);
thumbnail.setImageResource(glideRequests, new ImageSlide(getContext(), linkPreview.getThumbnail().get()), type == TYPE_CONVERSATION, false);
thumbnail.showDownloadText(false);
} else {
thumbnail.setVisibility(GONE);
}
}
public void setCorners(int topLeft, int topRight) {
cornerMask.setRadii(topLeft, topRight, 0, 0);
outliner.setRadii(topLeft, topRight, 0, 0);
thumbnail.setCorners(topLeft, defaultRadius, defaultRadius, defaultRadius);
postInvalidate();
}
public void setCloseClickedListener(@Nullable CloseClickedListener closeClickedListener) {
this.closeClickedListener = closeClickedListener;
}
public void setDownloadClickedListener(SlidesClickedListener listener) {
thumbnail.setDownloadClickListener(listener);
}
public interface CloseClickedListener {
void onCloseClicked();
}
}

View File

@@ -0,0 +1,93 @@
package org.thoughtcrime.securesms.components;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.annotation.UiThread;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import com.bumptech.glide.RequestBuilder;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.load.resource.bitmap.BitmapTransformation;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.FitCenter;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.database.AttachmentDatabase;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader.DecryptableUri;
import org.thoughtcrime.securesms.mms.GlideRequest;
import org.thoughtcrime.securesms.mms.GlideRequests;
import org.thoughtcrime.securesms.mms.Slide;
import org.thoughtcrime.securesms.mms.SlideClickListener;
import org.thoughtcrime.securesms.mms.SlidesClickedListener;
import org.thoughtcrime.securesms.util.ThemeUtil;
import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.ViewUtil;
import org.thoughtcrime.securesms.util.concurrent.ListenableFuture;
import org.thoughtcrime.securesms.util.concurrent.SettableFuture;
import org.whispersystems.libsignal.util.guava.Optional;
import java.util.Collections;
import java.util.Locale;
import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade;
public class OutlinedThumbnailView extends ThumbnailView {
private CornerMask cornerMask;
private Outliner outliner;
public OutlinedThumbnailView(Context context) {
super(context);
init();
}
public OutlinedThumbnailView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
cornerMask = new CornerMask(this);
outliner = new Outliner();
outliner.setColor(ThemeUtil.getThemedColor(getContext(), R.attr.conversation_item_image_outline_color));
setRadius(0);
setWillNotDraw(false);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (cornerMask.isLegacy()) {
cornerMask.mask(canvas);
}
}
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
if (!cornerMask.isLegacy()) {
cornerMask.mask(canvas);
}
outliner.draw(canvas);
}
public void setCorners(int topLeft, int topRight, int bottomRight, int bottomLeft) {
cornerMask.setRadii(topLeft, topRight, bottomRight, bottomLeft);
outliner.setRadii(topLeft, topRight, bottomRight, bottomLeft);
postInvalidate();
}
}

View File

@@ -0,0 +1,55 @@
package org.thoughtcrime.securesms.components;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.RectF;
import android.os.Build;
import android.support.annotation.ColorInt;
import android.support.annotation.NonNull;
import android.view.View;
public class Outliner {
private final float[] radii = new float[8];
private final Path corners = new Path();
private final RectF bounds = new RectF();
private final Paint outlinePaint = new Paint();
{
outlinePaint.setStyle(Paint.Style.STROKE);
outlinePaint.setStrokeWidth(1f);
outlinePaint.setAntiAlias(true);
}
public void setColor(@ColorInt int color) {
outlinePaint.setColor(color);
}
public void draw(Canvas canvas) {
final float halfStrokeWidth = outlinePaint.getStrokeWidth() / 2;
bounds.left = halfStrokeWidth;
bounds.top = halfStrokeWidth;
bounds.right = canvas.getWidth() - halfStrokeWidth;
bounds.bottom = canvas.getHeight() - halfStrokeWidth;
corners.reset();
corners.addRoundRect(bounds, radii, Path.Direction.CW);
canvas.drawPath(corners, outlinePaint);
}
public void setRadius(int radius) {
setRadii(radius, radius, radius, radius);
}
public void setRadii(int topLeft, int topRight, int bottomRight, int bottomLeft) {
radii[0] = radii[1] = topLeft;
radii[2] = radii[3] = topRight;
radii[4] = radii[5] = bottomRight;
radii[6] = radii[7] = bottomLeft;
}
}

View File

@@ -89,12 +89,11 @@ public class ThumbnailView extends FrameLayout {
bounds[MAX_WIDTH] = typedArray.getDimensionPixelSize(R.styleable.ThumbnailView_maxWidth, 0);
bounds[MIN_HEIGHT] = typedArray.getDimensionPixelSize(R.styleable.ThumbnailView_minHeight, 0);
bounds[MAX_HEIGHT] = typedArray.getDimensionPixelSize(R.styleable.ThumbnailView_maxHeight, 0);
radius = typedArray.getDimensionPixelSize(R.styleable.ThumbnailView_thumbnail_radius, getResources().getDimensionPixelSize(R.dimen.message_corner_collapse_radius));
radius = typedArray.getDimensionPixelSize(R.styleable.ThumbnailView_thumbnail_radius, getResources().getDimensionPixelSize(R.dimen.thumbnail_default_radius));
typedArray.recycle();
} else {
radius = getResources().getDimensionPixelSize(R.dimen.message_corner_collapse_radius);
}
}
@Override
@@ -329,10 +328,18 @@ public class ThumbnailView extends FrameLayout {
slide = null;
}
public void showDownloadText(boolean showDownloadText) {
getTransferControls().setShowDownloadText(showDownloadText);
}
public void showProgressSpinner() {
getTransferControls().showProgressSpinner();
}
protected void setRadius(int radius) {
this.radius = radius;
}
private GlideRequest buildThumbnailGlideRequest(@NonNull GlideRequests glideRequests, @NonNull Slide slide) {
GlideRequest request = applySizing(glideRequests.load(new DecryptableUri(slide.getThumbnailUri()))
.diskCacheStrategy(DiskCacheStrategy.RESOURCE)

View File

@@ -170,6 +170,7 @@ public class TransferControlView extends FrameLayout {
public void setShowDownloadText(boolean showDownloadText) {
downloadDetailsText.setVisibility(showDownloadText ? VISIBLE : GONE);
forceLayout();
}
private boolean isUpdateToExistingSet(@NonNull List<Slide> slides) {

View File

@@ -39,7 +39,7 @@ public class DozeReminder extends Reminder {
}
public static boolean isEligible(Context context) {
return TextSecurePreferences.isGcmDisabled(context) &&
return TextSecurePreferences.isFcmDisabled(context) &&
!TextSecurePreferences.hasPromptedOptimizeDoze(context) &&
Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
!((PowerManager)context.getSystemService(Context.POWER_SERVICE)).isIgnoringBatteryOptimizations(context.getPackageName());

View File

@@ -101,9 +101,9 @@ public class WebRtcCallScreen extends FrameLayout implements RecipientModifiedLi
initialize();
}
public void setActiveCall(@NonNull Recipient personInfo, @NonNull String message, @Nullable String sas) {
public void setActiveCall(@NonNull Recipient personInfo, @NonNull String message, @Nullable String sas, SurfaceViewRenderer localRenderer, SurfaceViewRenderer remoteRenderer) {
setCard(personInfo, message);
setConnected(WebRtcCallService.localRenderer, WebRtcCallService.remoteRenderer);
setConnected(localRenderer, remoteRenderer);
incomingCallButton.stopRingingAnimation();
incomingCallButton.setVisibility(View.GONE);
endCallButton.show();

View File

@@ -144,6 +144,10 @@ public class DatabaseFactory {
getInstance(context).databaseHelper.markCurrent(database);
}
public void doThing(Context context) {
getInstance(context).databaseHelper.getReadableDatabase().execSQL("ALTER TABLE mms ADD COLUMN previews TEXT");
}
private DatabaseFactory(@NonNull Context context) {
SQLiteDatabase.loadLibs(context);

View File

@@ -46,7 +46,8 @@ public class MediaDatabase extends Database {
+ "WHERE " + AttachmentDatabase.MMS_ID + " IN (SELECT " + MmsSmsColumns.ID
+ " FROM " + MmsDatabase.TABLE_NAME
+ " WHERE " + MmsDatabase.THREAD_ID + " = ?) AND (%s) AND "
+ AttachmentDatabase.DATA + " IS NOT NULL "
+ AttachmentDatabase.DATA + " IS NOT NULL AND "
+ AttachmentDatabase.QUOTE + " = 0 "
+ "ORDER BY " + AttachmentDatabase.TABLE_NAME + "." + AttachmentDatabase.ROW_ID + " DESC";
private static final String GALLERY_MEDIA_QUERY = String.format(BASE_MEDIA_QUERY, AttachmentDatabase.CONTENT_TYPE + " LIKE 'image/%' OR " + AttachmentDatabase.CONTENT_TYPE + " LIKE 'video/%'");

View File

@@ -25,6 +25,7 @@ import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.util.Pair;
import com.annimon.stream.Collectors;
import com.annimon.stream.Stream;
import com.google.android.mms.pdu_alt.NotificationInd;
import com.google.android.mms.pdu_alt.PduHeaders;
@@ -51,6 +52,7 @@ import org.thoughtcrime.securesms.database.model.NotificationMmsMessageRecord;
import org.thoughtcrime.securesms.database.model.Quote;
import org.thoughtcrime.securesms.jobmanager.JobManager;
import org.thoughtcrime.securesms.jobs.TrimThreadJob;
import org.thoughtcrime.securesms.linkpreview.LinkPreview;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.mms.IncomingMediaMessage;
import org.thoughtcrime.securesms.mms.MmsException;
@@ -80,7 +82,6 @@ import java.util.Map;
import java.util.Set;
import static org.thoughtcrime.securesms.contactshare.Contact.Avatar;
import static org.thoughtcrime.securesms.contactshare.Contact.deserialize;
public class MmsDatabase extends MessagingDatabase {
@@ -105,7 +106,8 @@ public class MmsDatabase extends MessagingDatabase {
static final String QUOTE_ATTACHMENT = "quote_attachment";
static final String QUOTE_MISSING = "quote_missing";
static final String SHARED_CONTACTS = "shared_contacts";
static final String SHARED_CONTACTS = "shared_contacts";
static final String LINK_PREVIEWS = "previews";
public static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" + ID + " INTEGER PRIMARY KEY, " +
THREAD_ID + " INTEGER, " + DATE_SENT + " INTEGER, " + DATE_RECEIVED + " INTEGER, " + MESSAGE_BOX + " INTEGER, " +
@@ -125,7 +127,8 @@ public class MmsDatabase extends MessagingDatabase {
EXPIRE_STARTED + " INTEGER DEFAULT 0, " + NOTIFIED + " INTEGER DEFAULT 0, " +
READ_RECEIPT_COUNT + " INTEGER DEFAULT 0, " + QUOTE_ID + " INTEGER DEFAULT 0, " +
QUOTE_AUTHOR + " TEXT, " + QUOTE_BODY + " TEXT, " + QUOTE_ATTACHMENT + " INTEGER DEFAULT -1, " +
QUOTE_MISSING + " INTEGER DEFAULT 0, " + SHARED_CONTACTS + " TEXT, " + UNIDENTIFIED + " INTEGER DEFAULT 0);";
QUOTE_MISSING + " INTEGER DEFAULT 0, " + SHARED_CONTACTS + " TEXT, " + UNIDENTIFIED + " INTEGER DEFAULT 0, " +
LINK_PREVIEWS + " TEXT);";
public static final String[] CREATE_INDEXS = {
"CREATE INDEX IF NOT EXISTS mms_thread_id_index ON " + TABLE_NAME + " (" + THREAD_ID + ");",
@@ -145,7 +148,8 @@ public class MmsDatabase extends MessagingDatabase {
MESSAGE_SIZE, STATUS, TRANSACTION_ID,
BODY, PART_COUNT, ADDRESS, ADDRESS_DEVICE_ID,
DELIVERY_RECEIPT_COUNT, READ_RECEIPT_COUNT, MISMATCHED_IDENTITIES, NETWORK_FAILURE, SUBSCRIPTION_ID,
EXPIRES_IN, EXPIRE_STARTED, NOTIFIED, QUOTE_ID, QUOTE_AUTHOR, QUOTE_BODY, QUOTE_ATTACHMENT, QUOTE_MISSING, SHARED_CONTACTS, UNIDENTIFIED,
EXPIRES_IN, EXPIRE_STARTED, NOTIFIED, QUOTE_ID, QUOTE_AUTHOR, QUOTE_BODY, QUOTE_ATTACHMENT, QUOTE_MISSING,
SHARED_CONTACTS, LINK_PREVIEWS, UNIDENTIFIED,
"json_group_array(json_object(" +
"'" + AttachmentDatabase.ROW_ID + "', " + AttachmentDatabase.TABLE_NAME + "." + AttachmentDatabase.ROW_ID + ", " +
"'" + AttachmentDatabase.UNIQUE_ID + "', " + AttachmentDatabase.TABLE_NAME + "." + AttachmentDatabase.UNIQUE_ID + ", " +
@@ -588,14 +592,19 @@ public class MmsDatabase extends MessagingDatabase {
String mismatchDocument = cursor.getString(cursor.getColumnIndexOrThrow(MmsDatabase.MISMATCHED_IDENTITIES));
String networkDocument = cursor.getString(cursor.getColumnIndexOrThrow(MmsDatabase.NETWORK_FAILURE));
long quoteId = cursor.getLong(cursor.getColumnIndexOrThrow(QUOTE_ID));
String quoteAuthor = cursor.getString(cursor.getColumnIndexOrThrow(QUOTE_AUTHOR));
String quoteText = cursor.getString(cursor.getColumnIndexOrThrow(QUOTE_BODY));
boolean quoteMissing = cursor.getInt(cursor.getColumnIndexOrThrow(QUOTE_MISSING)) == 1;
List<Attachment> quoteAttachments = Stream.of(associatedAttachments).filter(Attachment::isQuote).map(a -> (Attachment)a).toList();
List<Contact> contacts = getSharedContacts(cursor, associatedAttachments);
Set<Attachment> contactAttachments = new HashSet<>(Stream.of(contacts).map(Contact::getAvatarAttachment).filter(a -> a != null).toList());
List<Attachment> attachments = Stream.of(associatedAttachments).filterNot(Attachment::isQuote).filterNot(contactAttachments::contains).map(a -> (Attachment)a).toList();
long quoteId = cursor.getLong(cursor.getColumnIndexOrThrow(QUOTE_ID));
String quoteAuthor = cursor.getString(cursor.getColumnIndexOrThrow(QUOTE_AUTHOR));
String quoteText = cursor.getString(cursor.getColumnIndexOrThrow(QUOTE_BODY));
boolean quoteMissing = cursor.getInt(cursor.getColumnIndexOrThrow(QUOTE_MISSING)) == 1;
List<Attachment> quoteAttachments = Stream.of(associatedAttachments).filter(Attachment::isQuote).map(a -> (Attachment)a).toList();
List<Contact> contacts = getSharedContacts(cursor, associatedAttachments);
Set<Attachment> contactAttachments = new HashSet<>(Stream.of(contacts).map(Contact::getAvatarAttachment).filter(a -> a != null).toList());
List<LinkPreview> previews = getLinkPreviews(cursor, associatedAttachments);
Set<Attachment> previewAttachments = Stream.of(previews).filter(lp -> lp.getThumbnail().isPresent()).map(lp -> lp.getThumbnail().get()).collect(Collectors.toSet());
List<Attachment> attachments = Stream.of(associatedAttachments).filterNot(Attachment::isQuote)
.filterNot(contactAttachments::contains)
.filterNot(previewAttachments::contains)
.map(a -> (Attachment)a).toList();
Recipient recipient = Recipient.from(context, Address.fromSerialized(address), false);
List<NetworkFailure> networkFailures = new LinkedList<>();
@@ -623,12 +632,12 @@ public class MmsDatabase extends MessagingDatabase {
}
if (body != null && (Types.isGroupQuit(outboxType) || Types.isGroupUpdate(outboxType))) {
return new OutgoingGroupMediaMessage(recipient, body, attachments, timestamp, 0, quote, contacts);
return new OutgoingGroupMediaMessage(recipient, body, attachments, timestamp, 0, quote, contacts, previews);
} else if (Types.isExpirationTimerUpdate(outboxType)) {
return new OutgoingExpirationUpdateMessage(recipient, timestamp, expiresIn);
}
OutgoingMediaMessage message = new OutgoingMediaMessage(recipient, body, attachments, timestamp, subscriptionId, expiresIn, distributionType, quote, contacts, networkFailures, mismatches);
OutgoingMediaMessage message = new OutgoingMediaMessage(recipient, body, attachments, timestamp, subscriptionId, expiresIn, distributionType, quote, contacts, previews, networkFailures, mismatches);
if (Types.isSecureType(outboxType)) {
return new OutgoingSecureMediaMessage(message);
@@ -663,7 +672,7 @@ public class MmsDatabase extends MessagingDatabase {
JSONArray jsonContacts = new JSONArray(serializedContacts);
for (int i = 0; i < jsonContacts.length(); i++) {
Contact contact = deserialize(jsonContacts.getJSONObject(i).toString());
Contact contact = Contact.deserialize(jsonContacts.getJSONObject(i).toString());
if (contact.getAvatar() != null && contact.getAvatar().getAttachmentId() != null) {
DatabaseAttachment attachment = attachmentIdMap.get(contact.getAvatar().getAttachmentId());
@@ -684,6 +693,43 @@ public class MmsDatabase extends MessagingDatabase {
return Collections.emptyList();
}
private List<LinkPreview> getLinkPreviews(@NonNull Cursor cursor, @NonNull List<DatabaseAttachment> attachments) {
String serializedPreviews = cursor.getString(cursor.getColumnIndexOrThrow(LINK_PREVIEWS));
if (TextUtils.isEmpty(serializedPreviews)) {
return Collections.emptyList();
}
Map<AttachmentId, DatabaseAttachment> attachmentIdMap = new HashMap<>();
for (DatabaseAttachment attachment : attachments) {
attachmentIdMap.put(attachment.getAttachmentId(), attachment);
}
try {
List<LinkPreview> previews = new LinkedList<>();
JSONArray jsonPreviews = new JSONArray(serializedPreviews);
for (int i = 0; i < jsonPreviews.length(); i++) {
LinkPreview preview = LinkPreview.deserialize(jsonPreviews.getJSONObject(i).toString());
if (preview.getAttachmentId() != null) {
DatabaseAttachment attachment = attachmentIdMap.get(preview.getAttachmentId());
if (attachment != null) {
previews.add(new LinkPreview(preview.getUrl(), preview.getTitle(), attachment));
}
} else {
previews.add(preview);
}
}
return previews;
} catch (JSONException | IOException e) {
Log.w(TAG, "Failed to parse shared contacts.", e);
}
return Collections.emptyList();
}
public long copyMessageInbox(long messageId) throws MmsException {
try {
OutgoingMediaMessage request = getOutgoingMessage(messageId);
@@ -724,6 +770,7 @@ public class MmsDatabase extends MessagingDatabase {
attachments,
new LinkedList<>(),
request.getSharedContacts(),
request.getLinkPreviews(),
contentValues,
null);
} catch (NoSuchMessageException e) {
@@ -783,7 +830,7 @@ public class MmsDatabase extends MessagingDatabase {
return Optional.absent();
}
long messageId = insertMediaMessage(retrieved.getBody(), retrieved.getAttachments(), quoteAttachments, retrieved.getSharedContacts(), contentValues, null);
long messageId = insertMediaMessage(retrieved.getBody(), retrieved.getAttachments(), quoteAttachments, retrieved.getSharedContacts(), retrieved.getLinkPreviews(), contentValues, null);
if (!Types.isExpirationTimerUpdate(mailbox)) {
DatabaseFactory.getThreadDatabase(context).incrementUnread(threadId, 1);
@@ -922,7 +969,7 @@ public class MmsDatabase extends MessagingDatabase {
quoteAttachments.addAll(message.getOutgoingQuote().getAttachments());
}
long messageId = insertMediaMessage(message.getBody(), message.getAttachments(), quoteAttachments, message.getSharedContacts(), contentValues, insertListener);
long messageId = insertMediaMessage(message.getBody(), message.getAttachments(), quoteAttachments, message.getSharedContacts(), message.getLinkPreviews(), contentValues, insertListener);
if (message.getRecipient().getAddress().isGroup()) {
List<Recipient> members = DatabaseFactory.getGroupDatabase(context).getGroupMembers(message.getRecipient().getAddress().toGroupString(), false);
@@ -946,6 +993,7 @@ public class MmsDatabase extends MessagingDatabase {
@NonNull List<Attachment> attachments,
@NonNull List<Attachment> quoteAttachments,
@NonNull List<Contact> sharedContacts,
@NonNull List<LinkPreview> linkPreviews,
@NonNull ContentValues contentValues,
@Nullable SmsDatabase.InsertListener insertListener)
throws MmsException
@@ -955,9 +1003,11 @@ public class MmsDatabase extends MessagingDatabase {
List<Attachment> allAttachments = new LinkedList<>();
List<Attachment> contactAttachments = Stream.of(sharedContacts).map(Contact::getAvatarAttachment).filter(a -> a != null).toList();
List<Attachment> previewAttachments = Stream.of(linkPreviews).filter(lp -> lp.getThumbnail().isPresent()).map(lp -> lp.getThumbnail().get()).toList();
allAttachments.addAll(attachments);
allAttachments.addAll(contactAttachments);
allAttachments.addAll(previewAttachments);
contentValues.put(BODY, body);
contentValues.put(PART_COUNT, allAttachments.size());
@@ -967,7 +1017,8 @@ public class MmsDatabase extends MessagingDatabase {
long messageId = db.insert(TABLE_NAME, null, contentValues);
Map<Attachment, AttachmentId> insertedAttachments = partsDatabase.insertAttachmentsForMessage(messageId, allAttachments, quoteAttachments);
String serializedContacts = getSerializedSharedContacts(messageId, insertedAttachments, sharedContacts);
String serializedContacts = getSerializedSharedContacts(insertedAttachments, sharedContacts);
String serializedPreviews = getSerializedLinkPreviews(insertedAttachments, linkPreviews);
if (!TextUtils.isEmpty(serializedContacts)) {
ContentValues contactValues = new ContentValues();
@@ -981,6 +1032,18 @@ public class MmsDatabase extends MessagingDatabase {
}
}
if (!TextUtils.isEmpty(serializedPreviews)) {
ContentValues contactValues = new ContentValues();
contactValues.put(LINK_PREVIEWS, serializedPreviews);
SQLiteDatabase database = databaseHelper.getReadableDatabase();
int rows = database.update(TABLE_NAME, contactValues, ID + " = ?", new String[]{ String.valueOf(messageId) });
if (rows <= 0) {
Log.w(TAG, "Failed to update message with link preview data.");
}
}
db.setTransactionSuccessful();
return messageId;
} finally {
@@ -1016,7 +1079,7 @@ public class MmsDatabase extends MessagingDatabase {
deleteThreads(singleThreadSet);
}
private @Nullable String getSerializedSharedContacts(long mmsId, @NonNull Map<Attachment, AttachmentId> insertedAttachmentIds, @NonNull List<Contact> contacts) {
private @Nullable String getSerializedSharedContacts(@NonNull Map<Attachment, AttachmentId> insertedAttachmentIds, @NonNull List<Contact> contacts) {
if (contacts.isEmpty()) return null;
JSONArray sharedContactJson = new JSONArray();
@@ -1042,6 +1105,28 @@ public class MmsDatabase extends MessagingDatabase {
return sharedContactJson.toString();
}
private @Nullable String getSerializedLinkPreviews(@NonNull Map<Attachment, AttachmentId> insertedAttachmentIds, @NonNull List<LinkPreview> previews) {
if (previews.isEmpty()) return null;
JSONArray linkPreviewJson = new JSONArray();
for (LinkPreview preview : previews) {
try {
AttachmentId attachmentId = null;
if (preview.getThumbnail().isPresent()) {
attachmentId = insertedAttachmentIds.get(preview.getThumbnail().get());
}
LinkPreview updatedPreview = new LinkPreview(preview.getUrl(), preview.getTitle(), attachmentId);
linkPreviewJson.put(new JSONObject(updatedPreview.serialize()));
} catch (JSONException | IOException e) {
Log.w(TAG, "Failed to serialize shared contact. Skipping it.", e);
}
}
return linkPreviewJson.toString();
}
private boolean isDuplicate(IncomingMediaMessage message, long threadId) {
SQLiteDatabase database = databaseHelper.getReadableDatabase();
Cursor cursor = database.query(TABLE_NAME, null, DATE_SENT + " = ? AND " + ADDRESS + " = ? AND " + THREAD_ID + " = ?",
@@ -1223,7 +1308,7 @@ public class MmsDatabase extends MessagingDatabase {
message.getOutgoingQuote().isOriginalMissing(),
new SlideDeck(context, message.getOutgoingQuote().getAttachments())) :
null,
message.getSharedContacts(), false);
message.getSharedContacts(), message.getLinkPreviews(), false);
}
}
@@ -1322,15 +1407,17 @@ public class MmsDatabase extends MessagingDatabase {
List<NetworkFailure> networkFailures = getFailures(networkDocument);
List<DatabaseAttachment> attachments = DatabaseFactory.getAttachmentDatabase(context).getAttachment(cursor);
List<Contact> contacts = getSharedContacts(cursor, attachments);
Set<Attachment> contactAttachments = new HashSet<>(Stream.of(contacts).map(Contact::getAvatarAttachment).filter(a -> a != null).toList());
SlideDeck slideDeck = getSlideDeck(Stream.of(attachments).filterNot(contactAttachments::contains).toList());
Set<Attachment> contactAttachments = Stream.of(contacts).map(Contact::getAvatarAttachment).filter(a -> a != null).collect(Collectors.toSet());
List<LinkPreview> previews = getLinkPreviews(cursor, attachments);
Set<Attachment> previewAttachments = Stream.of(previews).filter(lp -> lp.getThumbnail().isPresent()).map(lp -> lp.getThumbnail().get()).collect(Collectors.toSet());
SlideDeck slideDeck = getSlideDeck(Stream.of(attachments).filterNot(contactAttachments::contains).filterNot(previewAttachments::contains).toList());
Quote quote = getQuote(cursor);
return new MediaMmsMessageRecord(context, id, recipient, recipient,
addressDeviceId, dateSent, dateReceived, deliveryReceiptCount,
threadId, body, slideDeck, partCount, box, mismatches,
networkFailures, subscriptionId, expiresIn, expireStarted,
readReceiptCount, quote, contacts, unidentified);
readReceiptCount, quote, contacts, previews, unidentified);
}
private Recipient getRecipientFor(String serialized) {

View File

@@ -20,7 +20,6 @@ import android.content.Context;
import android.database.Cursor;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import org.thoughtcrime.securesms.logging.Log;
import net.sqlcipher.database.SQLiteDatabase;
import net.sqlcipher.database.SQLiteQueryBuilder;
@@ -70,7 +69,8 @@ public class MmsSmsDatabase extends Database {
MmsDatabase.QUOTE_BODY,
MmsDatabase.QUOTE_MISSING,
MmsDatabase.QUOTE_ATTACHMENT,
MmsDatabase.SHARED_CONTACTS};
MmsDatabase.SHARED_CONTACTS,
MmsDatabase.LINK_PREVIEWS};
public MmsSmsDatabase(Context context, SQLCipherOpenHelper databaseHelper) {
super(context, databaseHelper);
@@ -246,7 +246,8 @@ public class MmsSmsDatabase extends Database {
MmsDatabase.QUOTE_BODY,
MmsDatabase.QUOTE_MISSING,
MmsDatabase.QUOTE_ATTACHMENT,
MmsDatabase.SHARED_CONTACTS};
MmsDatabase.SHARED_CONTACTS,
MmsDatabase.LINK_PREVIEWS};
String[] smsProjection = {SmsDatabase.DATE_SENT + " AS " + MmsSmsColumns.NORMALIZED_DATE_SENT,
SmsDatabase.DATE_RECEIVED + " AS " + MmsSmsColumns.NORMALIZED_DATE_RECEIVED,
@@ -271,7 +272,8 @@ public class MmsSmsDatabase extends Database {
MmsDatabase.QUOTE_BODY,
MmsDatabase.QUOTE_MISSING,
MmsDatabase.QUOTE_ATTACHMENT,
MmsDatabase.SHARED_CONTACTS};
MmsDatabase.SHARED_CONTACTS,
MmsDatabase.LINK_PREVIEWS};
SQLiteQueryBuilder mmsQueryBuilder = new SQLiteQueryBuilder();
SQLiteQueryBuilder smsQueryBuilder = new SQLiteQueryBuilder();
@@ -338,6 +340,7 @@ public class MmsSmsDatabase extends Database {
mmsColumnsPresent.add(MmsDatabase.QUOTE_MISSING);
mmsColumnsPresent.add(MmsDatabase.QUOTE_ATTACHMENT);
mmsColumnsPresent.add(MmsDatabase.SHARED_CONTACTS);
mmsColumnsPresent.add(MmsDatabase.LINK_PREVIEWS);
Set<String> smsColumnsPresent = new HashSet<>();
smsColumnsPresent.add(MmsSmsColumns.ID);

View File

@@ -59,8 +59,9 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper {
private static final int SECRET_SENDER = 13;
private static final int ATTACHMENT_CAPTIONS = 14;
private static final int ATTACHMENT_CAPTIONS_FIX = 15;
private static final int PREVIEWS = 16;
private static final int DATABASE_VERSION = 15;
private static final int DATABASE_VERSION = 16;
private static final String DATABASE_NAME = "signal.db";
private final Context context;
@@ -308,6 +309,10 @@ public class SQLCipherOpenHelper extends SQLiteOpenHelper {
}
}
if (oldVersion < PREVIEWS) {
db.execSQL("ALTER TABLE mms ADD COLUMN previews TEXT");
}
db.setTransactionSuccessful();
} finally {
db.endTransaction();

View File

@@ -27,6 +27,7 @@ import org.thoughtcrime.securesms.database.MmsDatabase;
import org.thoughtcrime.securesms.database.SmsDatabase.Status;
import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatch;
import org.thoughtcrime.securesms.database.documents.NetworkFailure;
import org.thoughtcrime.securesms.linkpreview.LinkPreview;
import org.thoughtcrime.securesms.mms.SlideDeck;
import org.thoughtcrime.securesms.recipients.Recipient;
@@ -56,11 +57,12 @@ public class MediaMmsMessageRecord extends MmsMessageRecord {
List<NetworkFailure> failures, int subscriptionId,
long expiresIn, long expireStarted, int readReceiptCount,
@Nullable Quote quote, @Nullable List<Contact> contacts,
boolean unidentified)
@Nullable List<LinkPreview> linkPreviews, boolean unidentified)
{
super(context, id, body, conversationRecipient, individualRecipient, recipientDeviceId, dateSent,
dateReceived, threadId, Status.STATUS_NONE, deliveryReceiptCount, mailbox, mismatches, failures,
subscriptionId, expiresIn, expireStarted, slideDeck, readReceiptCount, quote, contacts, unidentified);
subscriptionId, expiresIn, expireStarted, slideDeck, readReceiptCount, quote, contacts,
linkPreviews, unidentified);
this.context = context.getApplicationContext();
this.partCount = partCount;

View File

@@ -8,6 +8,7 @@ import android.support.annotation.Nullable;
import org.thoughtcrime.securesms.contactshare.Contact;
import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatch;
import org.thoughtcrime.securesms.database.documents.NetworkFailure;
import org.thoughtcrime.securesms.linkpreview.LinkPreview;
import org.thoughtcrime.securesms.mms.Slide;
import org.thoughtcrime.securesms.mms.SlideDeck;
import org.thoughtcrime.securesms.recipients.Recipient;
@@ -17,9 +18,10 @@ import java.util.List;
public abstract class MmsMessageRecord extends MessageRecord {
private final @NonNull SlideDeck slideDeck;
private final @Nullable Quote quote;
private final @NonNull List<Contact> contacts = new LinkedList<>();
private final @NonNull SlideDeck slideDeck;
private final @Nullable Quote quote;
private final @NonNull List<Contact> contacts = new LinkedList<>();
private final @NonNull List<LinkPreview> linkPreviews = new LinkedList<>();
MmsMessageRecord(Context context, long id, String body, Recipient conversationRecipient,
Recipient individualRecipient, int recipientDeviceId, long dateSent,
@@ -27,7 +29,8 @@ public abstract class MmsMessageRecord extends MessageRecord {
long type, List<IdentityKeyMismatch> mismatches,
List<NetworkFailure> networkFailures, int subscriptionId, long expiresIn,
long expireStarted, @NonNull SlideDeck slideDeck, int readReceiptCount,
@Nullable Quote quote, @NonNull List<Contact> contacts, boolean unidentified)
@Nullable Quote quote, @NonNull List<Contact> contacts,
@NonNull List<LinkPreview> linkPreviews, boolean unidentified)
{
super(context, id, body, conversationRecipient, individualRecipient, recipientDeviceId, dateSent, dateReceived, threadId, deliveryStatus, deliveryReceiptCount, type, mismatches, networkFailures, subscriptionId, expiresIn, expireStarted, readReceiptCount, unidentified);
@@ -35,6 +38,7 @@ public abstract class MmsMessageRecord extends MessageRecord {
this.quote = quote;
this.contacts.addAll(contacts);
this.linkPreviews.addAll(linkPreviews);
}
@Override
@@ -69,4 +73,8 @@ public abstract class MmsMessageRecord extends MessageRecord {
public @NonNull List<Contact> getSharedContacts() {
return contacts;
}
public @NonNull List<LinkPreview> getLinkPreviews() {
return linkPreviews;
}
}

View File

@@ -56,7 +56,7 @@ public class NotificationMmsMessageRecord extends MmsMessageRecord {
super(context, id, "", conversationRecipient, individualRecipient, recipientDeviceId,
dateSent, dateReceived, threadId, Status.STATUS_NONE, deliveryReceiptCount, mailbox,
new LinkedList<IdentityKeyMismatch>(), new LinkedList<NetworkFailure>(), subscriptionId,
0, 0, slideDeck, readReceiptCount, null, Collections.emptyList(), false);
0, 0, slideDeck, readReceiptCount, null, Collections.emptyList(), Collections.emptyList(), false);
this.contentLocation = contentLocation;
this.messageSize = messageSize;

View File

@@ -2,7 +2,7 @@ package org.thoughtcrime.securesms.dependencies;
import android.content.Context;
import org.thoughtcrime.securesms.gcm.GcmBroadcastReceiver;
import org.thoughtcrime.securesms.gcm.FcmService;
import org.thoughtcrime.securesms.jobs.AttachmentUploadJob;
import org.thoughtcrime.securesms.jobs.MultiDeviceConfigurationUpdateJob;
import org.thoughtcrime.securesms.jobs.RefreshUnidentifiedDeliveryAbilityJob;
@@ -20,7 +20,7 @@ import org.thoughtcrime.securesms.jobs.AttachmentDownloadJob;
import org.thoughtcrime.securesms.jobs.AvatarDownloadJob;
import org.thoughtcrime.securesms.jobs.CleanPreKeysJob;
import org.thoughtcrime.securesms.jobs.CreateSignedPreKeyJob;
import org.thoughtcrime.securesms.jobs.GcmRefreshJob;
import org.thoughtcrime.securesms.jobs.FcmRefreshJob;
import org.thoughtcrime.securesms.jobs.MultiDeviceBlockedUpdateJob;
import org.thoughtcrime.securesms.jobs.MultiDeviceContactUpdateJob;
import org.thoughtcrime.securesms.jobs.MultiDeviceGroupUpdateJob;
@@ -76,7 +76,7 @@ import dagger.Provides;
MultiDeviceBlockedUpdateJob.class,
DeviceListFragment.class,
RefreshAttributesJob.class,
GcmRefreshJob.class,
FcmRefreshJob.class,
RequestGroupInfoJob.class,
PushGroupUpdateJob.class,
AvatarDownloadJob.class,
@@ -90,7 +90,7 @@ import dagger.Provides;
SendReadReceiptJob.class,
MultiDeviceReadReceiptUpdateJob.class,
AppProtectionPreferenceFragment.class,
GcmBroadcastReceiver.class,
FcmService.class,
RotateCertificateJob.class,
SendDeliveryReceiptJob.class,
RotateProfileKeyJob.class,
@@ -147,7 +147,7 @@ public class SignalCommunicationModule {
@Provides
synchronized SignalServiceMessageReceiver provideSignalMessageReceiver() {
if (this.messageReceiver == null) {
SleepTimer sleepTimer = TextSecurePreferences.isGcmDisabled(context) ? new RealtimeSleepTimer(context) : new UptimeSleepTimer();
SleepTimer sleepTimer = TextSecurePreferences.isFcmDisabled(context) ? new RealtimeSleepTimer(context) : new UptimeSleepTimer();
this.messageReceiver = new SignalServiceMessageReceiver(networkAccess.getConfiguration(context),
new DynamicCredentialsProvider(context),

View File

@@ -5,6 +5,7 @@ import android.support.annotation.Nullable;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.webrtc.CameraState;
import org.webrtc.SurfaceViewRenderer;
import org.whispersystems.libsignal.IdentityKey;
public class WebRtcViewModel {
@@ -35,35 +36,45 @@ public class WebRtcViewModel {
private final boolean isBluetoothAvailable;
private final boolean isMicrophoneEnabled;
private final CameraState localCameraState;
private final CameraState localCameraState;
private final SurfaceViewRenderer localRenderer;
private final SurfaceViewRenderer remoteRenderer;
public WebRtcViewModel(@NonNull State state,
@NonNull Recipient recipient,
@NonNull CameraState localCameraState,
boolean remoteVideoEnabled,
boolean isBluetoothAvailable,
boolean isMicrophoneEnabled)
public WebRtcViewModel(@NonNull State state,
@NonNull Recipient recipient,
@NonNull CameraState localCameraState,
@NonNull SurfaceViewRenderer localRenderer,
@NonNull SurfaceViewRenderer remoteRenderer,
boolean remoteVideoEnabled,
boolean isBluetoothAvailable,
boolean isMicrophoneEnabled)
{
this(state,
recipient,
null,
localCameraState,
localRenderer,
remoteRenderer,
remoteVideoEnabled,
isBluetoothAvailable,
isMicrophoneEnabled);
}
public WebRtcViewModel(@NonNull State state,
@NonNull Recipient recipient,
@Nullable IdentityKey identityKey,
@NonNull CameraState localCameraState,
boolean remoteVideoEnabled,
boolean isBluetoothAvailable,
boolean isMicrophoneEnabled)
public WebRtcViewModel(@NonNull State state,
@NonNull Recipient recipient,
@Nullable IdentityKey identityKey,
@NonNull CameraState localCameraState,
@NonNull SurfaceViewRenderer localRenderer,
@NonNull SurfaceViewRenderer remoteRenderer,
boolean remoteVideoEnabled,
boolean isBluetoothAvailable,
boolean isMicrophoneEnabled)
{
this.state = state;
this.recipient = recipient;
this.localCameraState = localCameraState;
this.localRenderer = localRenderer;
this.remoteRenderer = remoteRenderer;
this.identityKey = identityKey;
this.remoteVideoEnabled = remoteVideoEnabled;
this.isBluetoothAvailable = isBluetoothAvailable;
@@ -98,6 +109,13 @@ public class WebRtcViewModel {
return isMicrophoneEnabled;
}
public SurfaceViewRenderer getLocalRenderer() {
return localRenderer;
}
public SurfaceViewRenderer getRemoteRenderer() {
return remoteRenderer;
}
public String toString() {
return "[State: " + state + ", recipient: " + recipient.getAddress() + ", identity: " + identityKey + ", remoteVideo: " + remoteVideoEnabled + ", localVideo: " + localCameraState.isEnabled() + "]";

View File

@@ -1,92 +1,90 @@
package org.thoughtcrime.securesms.gcm;
import android.content.Context;
import android.content.Intent;
import android.os.PowerManager;
import android.support.annotation.NonNull;
import android.support.v4.content.WakefulBroadcastReceiver;
import android.text.TextUtils;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
import org.thoughtcrime.securesms.ApplicationContext;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.dependencies.InjectableType;
import org.thoughtcrime.securesms.jobmanager.requirements.NetworkRequirement;
import org.thoughtcrime.securesms.logging.Log;
import com.google.android.gms.gcm.GoogleCloudMessaging;
import org.thoughtcrime.securesms.ApplicationContext;
import org.thoughtcrime.securesms.jobs.PushContentReceiveJob;
import org.thoughtcrime.securesms.jobs.FcmRefreshJob;
import org.thoughtcrime.securesms.jobs.PushNotificationReceiveJob;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.notifications.NotificationChannels;
import org.thoughtcrime.securesms.service.GenericForegroundService;
import org.thoughtcrime.securesms.util.PowerManagerCompat;
import org.thoughtcrime.securesms.util.ServiceUtil;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.thoughtcrime.securesms.util.concurrent.SignalExecutors;
import org.whispersystems.signalservice.api.SignalServiceAccountManager;
import org.whispersystems.signalservice.api.SignalServiceMessageReceiver;
import org.whispersystems.signalservice.internal.util.Util;
import java.io.IOException;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.inject.Inject;
public class GcmBroadcastReceiver extends WakefulBroadcastReceiver implements InjectableType {
public class FcmService extends FirebaseMessagingService implements InjectableType {
private static final String TAG = GcmBroadcastReceiver.class.getSimpleName();
private static final String TAG = FcmService.class.getSimpleName();
private static final Executor MESSAGE_EXECUTOR = SignalExecutors.newCachedSingleThreadExecutor("GcmMessageProcessing");
private static int activeCount = 0;
private static final Executor MESSAGE_EXECUTOR = SignalExecutors.newCachedSingleThreadExecutor("FcmMessageProcessing");
@Inject SignalServiceMessageReceiver messageReceiver;
private static int activeCount;
@Override
public void onReceive(Context context, Intent intent) {
ApplicationContext.getInstance(context).injectDependencies(this);
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.i(TAG, "FCM message... Original Priority: " + remoteMessage.getOriginalPriority() + ", Actual Priority: " + remoteMessage.getPriority());
ApplicationContext.getInstance(getApplicationContext()).injectDependencies(this);
handleReceivedNotification(getApplicationContext());
}
GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context);
String messageType = gcm.getMessageType(intent);
@Override
public void onNewToken(String token) {
Log.i(TAG, "onNewToken()");
if (GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType)) {
Log.i(TAG, "GCM message...");
if (!TextSecurePreferences.isPushRegistered(context)) {
Log.w(TAG, "Not push registered!");
return;
}
if (intent.hasExtra("notification")) {
handleReceivedNotification(context);
} else {
Log.w(TAG, "Received an unexpected intent.");
}
if (!TextSecurePreferences.isPushRegistered(getApplicationContext())) {
Log.i(TAG, "Got a new FCM token, but the user isn't registered.");
return;
}
ApplicationContext.getInstance(getApplicationContext())
.getJobManager()
.add(new FcmRefreshJob(getApplicationContext()));
}
private void handleReceivedNotification(Context context) {
if (!incrementActiveGcmCount()) {
Log.i(TAG, "Skipping GCM processing -- there's already one enqueued.");
Log.i(TAG, "Skipping FCM processing -- there's already one enqueued.");
return;
}
TextSecurePreferences.setNeedsMessagePull(context, true);
long startTime = System.currentTimeMillis();
PendingResult callback = goAsync();
PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
boolean doze = PowerManagerCompat.isDeviceIdleMode(powerManager);
boolean network = new NetworkRequirement(context).isPresent();
long startTime = System.currentTimeMillis();
PowerManager powerManager = ServiceUtil.getPowerManager(getApplicationContext());
boolean doze = PowerManagerCompat.isDeviceIdleMode(powerManager);
boolean network = new NetworkRequirement(context).isPresent();
final Object foregroundLock = new Object();
final AtomicBoolean foregroundRunning = new AtomicBoolean(false);
final AtomicBoolean taskCompleted = new AtomicBoolean(false);
final CountDownLatch latch = new CountDownLatch(1);
if (doze || !network) {
Log.i(TAG, "Starting a foreground task because we may be operating in a constrained environment. Doze: " + doze + " Network: " + network);
showForegroundNotification(context);
foregroundRunning.set(true);
callback.finish();
latch.countDown();
}
MESSAGE_EXECUTOR.execute(() -> {
@@ -102,7 +100,7 @@ public class GcmBroadcastReceiver extends WakefulBroadcastReceiver implements In
if (foregroundRunning.getAndSet(false)) {
GenericForegroundService.stopForegroundTask(context);
} else {
callback.finish();
latch.countDown();
}
taskCompleted.set(true);
}
@@ -113,20 +111,26 @@ public class GcmBroadcastReceiver extends WakefulBroadcastReceiver implements In
});
if (!foregroundRunning.get()) {
new Thread("GcmForegroundServiceTimer") {
new Thread("FcmForegroundServiceTimer") {
@Override
public void run() {
Util.sleep(4500);
Util.sleep(7000);
synchronized (foregroundLock) {
if (!taskCompleted.get() && !foregroundRunning.getAndSet(true)) {
Log.i(TAG, "Starting a foreground task because the job is running long.");
showForegroundNotification(context);
callback.finish();
latch.countDown();
}
}
}
}.start();
}
try {
latch.await();
} catch (InterruptedException e) {
Log.w(TAG, "Latch was interrupted.", e);
}
}
private void showForegroundNotification(@NonNull Context context) {
@@ -147,4 +151,4 @@ public class GcmBroadcastReceiver extends WakefulBroadcastReceiver implements In
private static synchronized void decrementActiveGcmCount() {
activeCount--;
}
}
}

View File

@@ -0,0 +1,43 @@
package org.thoughtcrime.securesms.gcm;
import android.support.annotation.WorkerThread;
import com.google.firebase.iid.FirebaseInstanceId;
import org.thoughtcrime.securesms.logging.Log;
import org.whispersystems.libsignal.util.guava.Optional;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicReference;
public final class FcmUtil {
private static final String TAG = FcmUtil.class.getSimpleName();
/**
* Retrieves the current FCM token. If one isn't available, it'll be generated.
*/
@WorkerThread
public static Optional<String> getToken() {
CountDownLatch latch = new CountDownLatch(1);
AtomicReference<String> token = new AtomicReference<>(null);
FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener(task -> {
if (task.isSuccessful() && task.getResult() != null) {
token.set(task.getResult().getToken());
} else {
Log.w(TAG, "Failed to get the token.", task.getException());
}
latch.countDown();
});
try {
latch.await();
} catch (InterruptedException e) {
Log.w(TAG, "Was interrupted while waiting for the token.");
}
return Optional.fromNullable(token.get());
}
}

View File

@@ -0,0 +1,56 @@
package org.thoughtcrime.securesms.giph.model;
import android.support.annotation.NonNull;
import com.bumptech.glide.load.Key;
import org.thoughtcrime.securesms.util.Conversions;
import java.security.MessageDigest;
public class ChunkedImageUrl implements Key {
public static final long SIZE_UNKNOWN = -1;
private final String url;
private final long size;
public ChunkedImageUrl(@NonNull String url) {
this(url, SIZE_UNKNOWN);
}
public ChunkedImageUrl(@NonNull String url, long size) {
this.url = url;
this.size = size;
}
public String getUrl() {
return url;
}
public long getSize() {
return size;
}
@Override
public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(url.getBytes());
messageDigest.update(Conversions.longToByteArray(size));
}
@Override
public boolean equals(Object other) {
if (other == null || !(other instanceof ChunkedImageUrl)) return false;
ChunkedImageUrl that = (ChunkedImageUrl)other;
return this.url.equals(that.url) && this.size == that.size;
}
@Override
public int hashCode() {
return url.hashCode() ^ (int)size;
}
}

View File

@@ -1,50 +0,0 @@
package org.thoughtcrime.securesms.giph.model;
import android.support.annotation.NonNull;
import com.bumptech.glide.load.Key;
import org.thoughtcrime.securesms.util.Conversions;
import java.security.MessageDigest;
public class GiphyPaddedUrl implements Key {
private final String target;
private final long size;
public GiphyPaddedUrl(@NonNull String target, long size) {
this.target = target;
this.size = size;
}
public String getTarget() {
return target;
}
public long getSize() {
return size;
}
@Override
public void updateDiskCacheKey(MessageDigest messageDigest) {
messageDigest.update(target.getBytes());
messageDigest.update(Conversions.longToByteArray(size));
}
@Override
public boolean equals(Object other) {
if (other == null || !(other instanceof GiphyPaddedUrl)) return false;
GiphyPaddedUrl that = (GiphyPaddedUrl)other;
return this.target.equals(that.target) && this.size == that.size;
}
@Override
public int hashCode() {
return target.hashCode() ^ (int)size;
}
}

View File

@@ -11,6 +11,7 @@ import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.giph.model.GiphyImage;
import org.thoughtcrime.securesms.giph.model.GiphyResponse;
import org.thoughtcrime.securesms.net.ContentProxySelector;
import org.thoughtcrime.securesms.util.AsyncLoader;
import org.thoughtcrime.securesms.util.JsonUtils;
@@ -35,7 +36,7 @@ public abstract class GiphyLoader extends AsyncLoader<List<GiphyImage>> {
protected GiphyLoader(@NonNull Context context, @Nullable String searchString) {
super(context);
this.searchString = searchString;
this.client = new OkHttpClient.Builder().proxySelector(new GiphyProxySelector()).build();
this.client = new OkHttpClient.Builder().proxySelector(new ContentProxySelector()).build();
}
@Override

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