Compare commits

...

35 Commits

Author SHA1 Message Date
Moxie Marlinspike
3be011bdaf Bump version to 2.26.2
// FREEBIE
2015-09-07 15:15:20 -07:00
Jake McGinty
526f6e3058 don't try generating an in-progress part thumbnail
Closes #4042
// FREEBIE
2015-09-07 14:56:56 -07:00
Jake McGinty
21b7dccf1c fix persistent stale attachment jobs
Closes #4041
// FREEBIE
2015-09-07 14:37:53 -07:00
Jake McGinty
adc6fc8524 only allow thumbnail clicks when slide is present
fixes #4024
Closes #4040
// FREEBIE
2015-09-07 14:16:29 -07:00
Moxie Marlinspike
b5216ed7af Make recipient lookup asynchronous, add listener when appropriate.
Fixes #4032

// FREEBIE
2015-09-07 11:22:53 -07:00
Moxie Marlinspike
d4718c373a Fix for scanning provided identity
Fixes #4028
// FREEBIE
2015-09-06 21:26:43 -07:00
Moxie Marlinspike
797513b372 Bump version to 2.26.1
// FREEBIE
2015-09-04 14:24:37 -07:00
Moxie Marlinspike
0b7342ba67 Updated langauge translations
// FREEBIE
2015-09-04 14:15:47 -07:00
Jake McGinty
103686f89b damnit, glide.
fixes #2957
// FREEBIE
2015-09-04 12:47:48 -07:00
Jake McGinty
aaf3d6a7c7 media download controls i18n
fixes #4015
// FREEBIE
2015-09-04 12:11:06 -07:00
Jake McGinty
923d9fb07b fix crash on pending self-sent media
fixes #4016
Closes #4017
// FREEBIE
2015-09-04 11:42:58 -07:00
Jake McGinty
df164a58c9 remove BitmapUtilTest
fixes #4014
// FREEBIE
2015-09-04 11:19:50 -07:00
Moxie Marlinspike
5ef65f039d Run notification reminder broadcast in an AsyncTask
Fixes #4016
// FREEBIE
2015-09-04 09:40:59 -07:00
Moxie Marlinspike
fd61fcef0d Bump version to 2.26.0
// FREEBIE
2015-09-03 16:59:31 -07:00
Moxie Marlinspike
d67d985b81 Mark implicit features not required
// FREEBIE
2015-09-03 16:59:11 -07:00
Moxie Marlinspike
a74276d31b Updated language translations
// FREEBIE
2015-09-03 16:39:09 -07:00
Jake McGinty
6d0e783236 fix GB StringSet compat issue.
// FREEBIE
2015-09-03 14:04:47 -07:00
Jake McGinty
17cde0cbb7 fix minSdk 10 for pref library
// FREEBIE
2015-09-03 12:40:31 -07:00
Jake McGinty
80ce83ef9d Media download controls
Closes #3991
// FREEBIE
2015-09-03 11:40:55 -07:00
f41c0r
7e2c9f97e9 Adds dependency for display in notifications
Fixes #3982
Closes #3986

// FREEBIE
2015-09-02 12:56:54 -07:00
Sam Lanning
727c471234 Maintenance: Removed unused field in MediaPreviewActivity
Closes #3934
// FREEBIE
2015-09-02 12:51:30 -07:00
Sam Lanning
201da6f2a2 Maintenance: changed upcast to use method type parameter.
Closes #3933
// FREEBIE
2015-09-02 12:50:38 -07:00
Sam Lanning
99adbe5784 Made some inner classes static (For Efficiency)
(and made one explicitly private)

Closes #3932
// FREEBIE
2015-09-02 12:46:56 -07:00
Jake McGinty
d0fc5268a6 add vietnamese translations
Closes #3978
// FREEBIE
2015-09-02 12:37:17 -07:00
Jake McGinty
0c9d9e8dcf use glide for encoding and resizing outgoing media
Closes #3915
// FREEBIE
2015-09-02 12:34:28 -07:00
Jake McGinty
1641fd91cf let ThumbnailView handle remove button placement
Closes #3849
// FREEBIE
2015-09-02 12:23:24 -07:00
Moxie Marlinspike
835f1efc76 Bump version to 2.25.3
// FREEBIE
2015-08-12 13:20:16 -07:00
Moxie Marlinspike
d6179bc12b Update notifications on background thread.
// FREEBIE
2015-08-12 10:44:27 -07:00
Moxie Marlinspike
3edda51379 Bump version to 2.25.2
// FREEBIE
2015-08-10 10:52:58 -07:00
Moxie Marlinspike
82b74e8ce7 Fix NPE on media message with no media.
Fixes #3921
// FREEBIE
2015-08-10 09:33:57 -07:00
Moxie Marlinspike
65ac2b3e18 Revert "use new android unit test support"
This reverts commit 06e137aee9.
2015-08-10 09:30:59 -07:00
Jake McGinty
ae17b4b24a bright background for unread messages
Closes #3909
// FREEBIE
2015-08-07 17:15:50 -07:00
Jake McGinty
06e137aee9 use new android unit test support
Closes #3904
// FREEBIE
2015-08-07 17:11:54 -07:00
Moxie Marlinspike
e97255a17f Bump version to 2.25.1
// FREEBIE
2015-08-07 17:08:06 -07:00
Moxie Marlinspike
58fd6f9273 Actually play the default notification sound.
Fixes #3912
// FREEBIE
2015-08-07 12:52:32 -07:00
121 changed files with 2835 additions and 810 deletions

View File

@@ -2,16 +2,23 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="org.thoughtcrime.securesms"
android:versionCode="142"
android:versionName="2.25.0">
android:versionCode="148"
android:versionName="2.26.2">
<uses-sdk tools:overrideLibrary="com.amulyakhare.textdrawable,com.astuetz.pagerslidingtabstrip,pl.tajchert.waitingdots"/>
<uses-sdk tools:overrideLibrary="com.amulyakhare.textdrawable,com.astuetz.pagerslidingtabstrip,pl.tajchert.waitingdots,com.h6ah4i.android.multiselectlistpreferencecompat"/>
<permission android:name="org.thoughtcrime.securesms.ACCESS_SECRETS"
android:label="Access to TextSecure Secrets"
android:protectionLevel="signature" />
<uses-feature android:name="android.hardware.camera" android:required="false" />
<uses-feature android:name="android.hardware.bluetooth" android:required="false" />
<uses-feature android:name="android.hardware.location" android:required="false"/>
<uses-feature android:name="android.hardware.location.network" android:required="false"/>
<uses-feature android:name="android.hardware.location.gps" android:required="false"/>
<uses-feature android:name="android.hardware.microphone" android:required="false"/>
<uses-feature android:name="android.hardware.wifi" android:required="false"/>
<uses-permission android:name="org.thoughtcrime.securesms.ACCESS_SECRETS"/>
<uses-permission android:name="android.permission.READ_PROFILE"/>
<uses-permission android:name="android.permission.WRITE_PROFILE"/>

View File

@@ -79,6 +79,7 @@ dependencies {
compile 'org.whispersystems:libpastelog:1.0.6'
compile 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1'
compile 'org.whispersystems:textsecure-android:1.6.2'
compile 'com.h6ah4i.android.compat:mulsellistprefcompat:1.0.0'
androidTestCompile 'com.google.dexmaker:dexmaker:1.2'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2'

Binary file not shown.

After

Width:  |  Height:  |  Size: 656 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 512 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 583 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 687 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 479 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 422 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 517 B

View File

@@ -7,4 +7,4 @@
<item android:drawable="@color/textsecure_primary_alpha33" android:state_selected="true" />
</selector>
</item>
</ripple>
</ripple>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/textsecure_primary">
<item android:id="@android:id/mask" android:drawable="@android:color/black" />
<item>
<selector>
<item android:drawable="@color/textsecure_primary_alpha33" android:state_selected="true" />
<item android:drawable="@color/conversation_list_item_background_unread_light" />
</selector>
</item>
</ripple>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/textsecure_primary">
<item android:id="@android:id/mask" android:drawable="@android:color/black" />
<item>
<selector>
<item android:drawable="@color/textsecure_primary_alpha33" android:state_selected="true" />
<item android:drawable="@color/conversation_list_item_background_unread_dark" />
</selector>
</item>
</ripple>

Binary file not shown.

After

Width:  |  Height:  |  Size: 653 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 620 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 640 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 636 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 751 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 759 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 782 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 805 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 958 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 615 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 551 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 579 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 431 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 461 B

View File

@@ -9,7 +9,7 @@
<item>
<shape android:shape="oval">
<size android:height="21dp" android:width="21dp"/>
<solid android:color="@color/textsecure_primary_dark"/>
<solid android:color="@color/red_600"/>
<stroke android:color="@android:color/transparent"
android:width="3dp"/>
</shape>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/textsecure_primary_alpha33" android:state_selected="true" />
<item android:drawable="@color/textsecure_primary_alpha33" android:state_pressed="true" />
<item android:drawable="@color/conversation_list_item_background_unread_light" />
</selector>

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/textsecure_primary_alpha33" android:state_selected="true" />
<item android:drawable="@color/textsecure_primary_alpha33" android:state_pressed="true" />
<item android:drawable="@color/conversation_list_item_background_unread_dark" />
</selector>

View File

@@ -29,7 +29,6 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:paddingTop="10dp"
android:background="?android:windowBackground"
android:visibility="gone">
@@ -41,13 +40,6 @@
android:contentDescription="@string/conversation_activity__attachment_thumbnail"
app:backgroundColorHint="?conversation_background" />
<ImageView android:id="@+id/remove_image_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/conversation_attachment_close_circle"
android:layout_marginRight="115dp"
android:layout_gravity="top|center_horizontal"/>
</FrameLayout>
<LinearLayout android:id="@+id/bottom_panel"

View File

@@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<ImageView android:id="@+id/thumbnail_image"
android:layout_width="match_parent"
@@ -10,15 +9,23 @@
android:contentDescription="@string/conversation_item__mms_image_description"
android:layout_margin="@dimen/media_bubble_border_width" />
<com.pnikosis.materialishprogress.ProgressWheel
android:id="@+id/progress_wheel"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_gravity="center"
android:background="@drawable/progress_background"
android:visibility="gone"
app:matProg_barColor="@color/white"
app:matProg_linearProgress="true"
app:matProg_spinSpeed="0.333" />
<ViewStub android:id="@+id/progress_wheel_stub"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_gravity="center"
android:layout="@layout/thumbnail_view_progress_wheel" />
<ViewStub android:id="@+id/remove_button_stub"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|right"
android:layout="@layout/thumbnail_view_remove_button" />
<ImageButton android:id="@+id/download_button"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_gravity="center"
android:background="@drawable/progress_background"
android:src="@drawable/ic_file_download_white_36dp"
android:visibility="gone" />
</merge>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<com.pnikosis.materialishprogress.ProgressWheel
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/progress_wheel"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/progress_background"
android:visibility="gone"
app:matProg_barColor="@color/white"
app:matProg_linearProgress="true"
app:matProg_spinSpeed="0.333" />

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/remove_image_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/conversation_attachment_close_circle" />

View File

@@ -378,6 +378,7 @@
<string name="KeyCachingService_passphrase_cached">تيكست سيكيور غير مقفل</string>
<string name="KeyCachingService_lock">أقفل بالعبارة السرية</string>
<!--MessageNotifier-->
<string name="MessageNotifier_d_new_messages_in_d_conversations">%1$d رسائل جديدة في %2$d محادثات</string>
<string name="MessageNotifier_most_recent_from_s">الأحدث من: %1$s</string>
<string name="MessageNotifier_media_message_with_text">رسالة وسائط متعددة: %s</string>
<string name="MessageNotifier_no_subject">(بلا عنوان)</string>
@@ -392,6 +393,8 @@
<string name="QuickResponseService_quick_response_unavailable_when_TextSecure_is_locked">الردود السريعة غير متاحة عند قفل تيكست سيكيور</string>
<string name="QuickResponseService_problem_sending_message">مشكلة في الإرسال!</string>
<!--SingleRecipientNotificationBuilder-->
<string name="SingleRecipientNotificationBuilder_new_textsecure_message">رسالة تيكست سيكيور جديدة</string>
<string name="SingleRecipientNotificationBuilder_contents_hidden">المحتويات مخفية</string>
<!--change_passphrase_activity-->
<string name="change_passphrase_activity__old_passphrase">العبارة السرية القديمة:</string>
<string name="change_passphrase_activity__new_passphrase">العبارة السرية الجديدة:</string>
@@ -579,7 +582,7 @@
<string name="AndroidManifest__message_details">تفاصيل الرسالة</string>
<string name="AndroidManifest_manage_linked_devices">إدارة الأجهزة المتصلة</string>
<!--arrays.xml-->
<string name="arrays__import_export">استيراد \ تصدير</string>
<string name="arrays__import_export">استيراد / تصدير</string>
<string name="arrays__my_identity_key">مفتاح هويتي</string>
<string name="arrays__use_default">استخدم الافتراضي</string>
<string name="arrays__use_custom">تخصيص</string>
@@ -590,6 +593,8 @@
<string name="arrays__settings_default">الإعدادات الافتراضية</string>
<string name="arrays__enabled">مفعل</string>
<string name="arrays__disabled">معطل</string>
<string name="arrays__name_and_message">الاسم والرسالة</string>
<string name="arrays__name_only">الاسم فقط</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="zero">%d صفر</item>
@@ -627,7 +632,8 @@
<string name="preferences__pref_timeout_interval_dialogtitle">تحديد مهلة العبارة السرية</string>
<string name="preferences__pref_timeout_interval_title">مدة الصلاحية</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">الوقت اللازم ليتم مسح العبارة السرية من الذاكرة</string>
<string name="preferences__notifications">التنبيهات</string>
<string name="preferences__notifications">الإشعارات</string>
<string name="preferences__enable_message_notifications">تفعيل إشعارات الرسالة</string>
<string name="preferences__led_color">لون ضوء التنبيه LED</string>
<string name="preferences__led_color_unknown">مجهول</string>
<string name="preferences__pref_led_blink_title">نمط وميض LED</string>
@@ -637,7 +643,7 @@
<string name="preferences__pref_led_blink_custom_pattern_set">تم إعداد أسولب وميض LED!</string>
<string name="preferences__sound">صوت</string>
<string name="preferences__change_notification_sound">تغيير صوت التنبيه</string>
<string name="preferences__inthread_notifications">تنبيهات داخل المحادثة</string>
<string name="preferences__inthread_notifications">إشعارات داخل المحادثة</string>
<string name="preferences__play_inthread_notifications">تفعيل تنبيه صوتي أثناء مطالعة محادثة نشطة</string>
<string name="preferences__repeat_alerts">تكرار التنبيهات</string>
<string name="preferences__never">أبدا</string>
@@ -695,6 +701,7 @@
<string name="preferences__support_wifi_calling">وضع التوافق مع \'مكالمات الواي فاي\'</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">يمكنك تفعيل الخاصية إذا كان هاتفك يستخدم الواي فاي لتسليم الرسائل النصية والوسائط المتعددة ( قم بالتفعيل فقط في حال تفعيل الاتصال عبر الواي فاي بهاتفك)</string>
<string name="preferences_app_protection__blocked_contacts">جهات الاتصال المحظورة</string>
<string name="preferences_notifications__display_in_notifications">أظهر في الإشعارات </string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->

View File

@@ -132,7 +132,7 @@ kontakt</string>
<string name="ConversationFragment_deleting">Mažu</string>
<string name="ConversationFragment_deleting_messages">Mažu zprávy...</string>
<!--ConversationListActivity-->
<string name="ConversationListActivity_search">Vyhhledávám...</string>
<string name="ConversationListActivity_search">Vyhledávám...</string>
<!--ConversationListFragment-->
<string name="ConversationListFragment_delete_threads_question">Smazat konverzace?</string>
<string name="ConversationListFragment_are_you_sure_you_wish_to_delete_all_selected_conversation_threads">Opravdu chcete smazat VŠECHNY označené konverzace?</string>
@@ -385,6 +385,7 @@ Obdržena zpráva s neznámým identifikačním klíčem. Klepněte pro její zp
<string name="KeyCachingService_passphrase_cached">TextSecure je odemčený</string>
<string name="KeyCachingService_lock">Uzamknout heslem</string>
<!--MessageNotifier-->
<string name="MessageNotifier_d_new_messages_in_d_conversations">%1$d nových zpráv v %2$d konverzacích</string>
<string name="MessageNotifier_most_recent_from_s">Poslední od: %1$s</string>
<string name="MessageNotifier_locked_message">Zamčená zpráva</string>
<string name="MessageNotifier_media_message_with_text">Multimediální zpráva: %s</string>
@@ -400,6 +401,8 @@ Obdržena zpráva s neznámým identifikačním klíčem. Klepněte pro její zp
<string name="QuickResponseService_quick_response_unavailable_when_TextSecure_is_locked">Rychlá dopověď není dostupná pokud je TextSecure uzamčen!</string>
<string name="QuickResponseService_problem_sending_message">Problém při odesílání zprávy!</string>
<!--SingleRecipientNotificationBuilder-->
<string name="SingleRecipientNotificationBuilder_new_textsecure_message">Nová TextSecure zpráva</string>
<string name="SingleRecipientNotificationBuilder_contents_hidden">Obsah skrytý</string>
<!--change_passphrase_activity-->
<string name="change_passphrase_activity__old_passphrase">STARÉ HESLO</string>
<string name="change_passphrase_activity__new_passphrase">NOVÉ HESLO</string>
@@ -617,6 +620,12 @@ TextSecure nyní automaticky ověří vaše telefonní číslo pomocí potvrzova
<string name="arrays__settings_default">Výchozí nastavení</string>
<string name="arrays__enabled">Povoleno</string>
<string name="arrays__disabled">Zakázáno</string>
<string name="arrays__name_and_message">Jméno a zpráva</string>
<string name="arrays__name_only">Pouze jméno</string>
<string name="arrays__neither">Ani</string>
<string name="arrays__images">Obrázky</string>
<string name="arrays__audio">Audio</string>
<string name="arrays__video">Video</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="one">%d hodina</item>
@@ -652,6 +661,7 @@ TextSecure nyní automaticky ověří vaše telefonní číslo pomocí potvrzova
<string name="preferences__pref_timeout_interval_title">Limit čekání</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">Doba po kterou si pamatovat vyplněné heslo</string>
<string name="preferences__notifications">Upozornění</string>
<string name="preferences__enable_message_notifications">Povolit upozornění na zprávy</string>
<string name="preferences__led_color">Barva LED</string>
<string name="preferences__led_color_unknown">Neznámý</string>
<string name="preferences__pref_led_blink_title">Schéma blikání LED</string>
@@ -701,6 +711,7 @@ TextSecure nyní automaticky ověří vaše telefonní číslo pomocí potvrzova
<string name="preferences__request_a_delivery_report_for_each_sms_message_you_send">U každé odeslané zprávy požadovat potvrzení o doručení</string>
<string name="preferences__automatically_delete_older_messages_once_a_conversation_thread_exceeds_a_specified_length">Automaticky mazat starší zprávy jakmile konverzace přesáhne určitou délku</string>
<string name="preferences__delete_old_messages">Smazat staré zprávy</string>
<string name="preferences__chats">Konverzace a media</string>
<string name="preferences__conversation_length_limit">Limit délky konverzací</string>
<string name="preferences__trim_all_threads_now">Zkrátit konverzace</string>
<string name="preferences__scan_through_all_conversation_threads_and_enforce_conversation_length_limits">Pohledat všechny konverzace a uplatnit limit délky.</string>
@@ -719,6 +730,7 @@ Svobodná šifrovaná komunikace s uživateli TextSecure a Signal</string>
<string name="preferences__support_wifi_calling">\'Wifi volání\' kompatibilní mód</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">Povolit pokud vaše zařízení používá doručování SMS/MMS přes Wifi (povoleno pouze když je na zařízení povoleno \'Wifi volání\')</string>
<string name="preferences_app_protection__blocked_contacts">Blokované kontakty</string>
<string name="preferences_notifications__display_in_notifications">Zobrazit v upozornění</string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->

View File

@@ -144,7 +144,7 @@ Dies könnte bedeuten, dass jemand versucht, Ihr Gespräch abzuhören. Vielleich
<string name="DateUtils_now">Jetzt</string>
<string name="DateUtils_minutes_ago">%d min</string>
<!--DeviceListActivity-->
<string name="DeviceListActivity_unlink_s">\"%s\" entfernen?</string>
<string name="DeviceListActivity_unlink_s">„%s“ entfernen?</string>
<string name="DeviceListActivity_by_unlinking_this_device_it_will_no_longer_be_able_to_send_or_receive">Nach Entfernen dieses Geräts wird es keine weiteren Nachrichten senden oder empfangen können.</string>
<string name="DeviceListActivity_network_connection_failed">Keine Netzwerkverbindung …</string>
<string name="DeviceListActivity_try_again">Erneut versuchen</string>
@@ -169,7 +169,7 @@ Dies könnte bedeuten, dass jemand versucht, Ihr Gespräch abzuhören. Vielleich
<string name="ExportFragment_success">Erfolgreich!</string>
<!--GcmRefreshJob-->
<string name="GcmRefreshJob_Permanent_TextSecure_communication_failure">Dauerhaftes Problem mit TextSecure-Nachrichten!</string>
<string name="GcmRefreshJob_TextSecure_was_unable_to_register_with_Google_Play_Services">TextSecure konnte keine Verbindung zu den Google Play-Diensten herstellen. TextSecure-Nachrichten wurden daher deaktiviert. Bitte über das Menü \"Einstellungen\" erneut registrieren.</string>
<string name="GcmRefreshJob_TextSecure_was_unable_to_register_with_Google_Play_Services">TextSecure konnte keine Verbindung zu den Google Play-Diensten herstellen. TextSecure-Nachrichten wurden daher deaktiviert. Bitte über das Menü Einstellungen erneut registrieren.</string>
<!--GroupCreateActivity-->
<string name="GroupCreateActivity_actionbar_title">Neue Gruppe</string>
<string name="GroupCreateActivity_actionbar_update_title">Gruppe bearbeiten</string>
@@ -214,8 +214,8 @@ Sie werden jegliche Informationen Ihrer jetzigen TextSecure-Installation verlier
<string name="ImportFragment_restore_complete">Wiederherstellung abgeschlossen!</string>
<!--KeyScanningActivity-->
<string name="KeyScanningActivity_no_scanned_key_found_exclamation">Keinen scanbaren Schlüssel gefunden!</string>
<string name="KeyScanningActivity_install_barcode_Scanner">App \"Barcode Scanner\" installieren?</string>
<string name="KeyScanningActivity_this_application_requires_barcode_scanner_would_you_like_to_install_it">Für QR-Codes benötigt TextSecure die App \"Barcode Scanner\".</string>
<string name="KeyScanningActivity_install_barcode_Scanner">App Barcode Scanner installieren?</string>
<string name="KeyScanningActivity_this_application_requires_barcode_scanner_would_you_like_to_install_it">Für QR-Codes benötigt TextSecure die App Barcode Scanner.</string>
<!--MessageDetailsRecipient-->
<string name="MessageDetailsRecipient_failed_to_send">Versand fehlgeschlagen</string>
<string name="MessageDetailsRecipient_new_identity">Neuer Schlüssel</string>
@@ -235,7 +235,7 @@ Bitten Sie den Absender, TextSecure zu aktualisieren und die Nachricht erneut zu
<string name="PassphraseChangeActivity_incorrect_old_passphrase_exclamation">Das eingegebene alte Passwort ist falsch!</string>
<string name="PassphraseChangeActivity_enter_new_passphrase_exclamation">Neues Passwort eingeben!</string>
<!--DeviceProvisioningActivity-->
<string name="DeviceProvisioningActivity_link_this_device">Dieses Gerät verbinden?</string>
<string name="DeviceProvisioningActivity_link_this_device">Dieses Gerät verknüpfen?</string>
<string name="DeviceProvisioningActivity_cancel">ABBRECHEN</string>
<string name="DeviceProvisioningActivity_continue">WEITER</string>
<string name="DeviceProvisioningActivity_title">Gerät verbinden?</string>
@@ -466,7 +466,7 @@ Nachricht mit unbekanntem Schlüssel empfangen. Zum Anzeigen antippen.</string>
<string name="database_upgrade_activity__updating_database">Datenbank wird aktualisiert …</string>
<string name="export_fragment__export_plaintext_backup">Klartextsicherung exportieren</string>
<string name="export_fragment__export_a_plaintext_backup_compatible_with">
Eine mit "SMS Backup &amp; Restore" kompatible Klartextsicherung exportieren</string>
Eine mit SMS Backup &amp; Restore kompatible Klartextsicherung exportieren</string>
<string name="import_fragment__import_system_sms_database">System-SMS importieren</string>
<string name="import_fragment__import_the_database_from_the_default_system">Datenbank aus der Standard-SMS-App importieren</string>
<string name="import_fragment__import_encrypted_backup">Verschlüsselte Sicherung wiederherstellen</string>
@@ -474,7 +474,7 @@ Eine mit "SMS Backup &amp; Restore" kompatible Klartextsicherung exportieren</st
Eine zuvor exportierte, verschlüsselte TextSecure-Datensicherung wiederherstellen</string>
<string name="import_fragment__import_plaintext_backup">Klartextsicherung importieren</string>
<string name="import_fragment__import_a_plaintext_backup_file">
Eine mit "SMS Backup &amp; Restore" kompatible Klartextsicherung importieren</string>
Eine mit SMS Backup &amp; Restore kompatible Klartextsicherung importieren</string>
<!--media_overview_activity-->
<string name="media_overview_activity__no_images">Keine Bilder</string>
<!--message_recipients_list_item-->
@@ -490,12 +490,12 @@ Eine mit "SMS Backup &amp; Restore" kompatible Klartextsicherung importieren</st
<!--GroupUtil-->
<string name="GroupUtil_joined_the_group">%1$s ist der Gruppe beigetreten.</string>
<string name="GroupUtil_group_updated">Gruppe aktualisiert.</string>
<string name="GroupUtil_title_is_now">Der Gruppenname lautet jetzt \"%1$s\".</string>
<string name="GroupUtil_title_is_now">Der Gruppenname lautet jetzt %1$s.</string>
<!--prompt_passphrase_activity-->
<string name="prompt_passphrase_activity__unlock">Entsperren</string>
<!--prompt_mms_activity-->
<string name="prompt_mms_activity__textsecure_requires_mms_settings_to_deliver_media_and_group_messages">TextSecure benötigt MMS-Einstellungen, um Medien- und Gruppennachrichten zu versenden. Ihr Gerät stellt diese Informationen nicht zur Verfügung, was gelegentlich bei gesperrten oder anderweitig restriktiv konfigurierten Geräten der Fall ist.</string>
<string name="prompt_mms_activity__to_send_media_and_group_messages_click_ok">Zum Versenden von Medien- und Gruppennachrichten bitte \"OK\" antippen und die geforderten Einstellungen vervollständigen. Die MMS-Einstellungen Ihres Mobilfunkanbieters können normalerweise durch eine Internetsuche nach dem \"APN\" des Anbieters gefunden werden.</string>
<string name="prompt_mms_activity__to_send_media_and_group_messages_click_ok">Zum Versenden von Medien- und Gruppennachrichten bitte „OK“ antippen und die geforderten Einstellungen vervollständigen. Die MMS-Einstellungen Ihres Mobilfunkanbieters können normalerweise durch eine Internetsuche nach dem APN des Anbieters gefunden werden.</string>
<!--recipient_preferences_activity-->
<string name="recipient_preference_activity__blocked">BLOCKIERT</string>
<!--recipient_preferences-->
@@ -519,7 +519,8 @@ RUFNUMMER</string>
<!--registration_problems-->
<string name="registration_problems__some_possible_problems_include">Einige mögliche Probleme beinhalten:</string>
<string name="registration_problems__sms_interceptors">SMS-abfangende Apps.</string>
<string name="registration_problems__some_third_party_text_messaging_clients_such_as_handcent">Manche SMS-Apps von Drittanbietern, z.B. Handcent oder GoSMS, fangen fälschlicherweise alle eingehenden SMS ab. Überprüfen Sie, ob Sie eine Textnachricht empfangen haben, die mit \"Your TextSecure verification code:\" beginnt. In diesem Fall müssen Sie Ihre Drittanbieter-App so einstellen, dass sie SMS durchlässt.</string>
<string name="registration_problems__some_third_party_text_messaging_clients_such_as_handcent">
Manche SMS-Apps von Drittanbietern, z. B. Handcent oder GoSMS, fangen fälschlicherweise alle eingehenden SMS ab. Überprüfen Sie, ob Sie eine Textnachricht empfangen haben, die mit „Your TextSecure verification code:“ beginnt. In diesem Fall müssen Sie Ihre Drittanbieter-App so einstellen, dass sie SMS durchlässt.</string>
<string name="registration_problems__incorrect_number">Fehlerhafte Rufnummer.</string>
<string name="registration_problems__please_checkt_to_make_sure_you_entered_your_number_correctly">
Bitte überprüfen Sie die eingegebene Rufnummer auf Richtigkeit und eine Ihrer Region entsprechend korrekte Formatierung.</string>
@@ -529,7 +530,7 @@ TextSecure funktioniert nicht mit Google-Voice-Rufnummern.</string>
<!--registration_progress_activity-->
<string name="registration_progress_activity__voice_verification">Überprüfung durch Anruf</string>
<string name="registration_progress_activity__textsecure_can_also_call_you_to_verify_your_number">
TextSecure kann Sie zur Überprüfung Ihrer Rufnummer auch anrufen. Tippen Sie auf \"Anrufen\" und geben Sie die sechs gehörten Ziffern ein.</string>
TextSecure kann Sie zur Überprüfung Ihrer Rufnummer auch anrufen. Tippen Sie auf Anrufen und geben Sie die sechs gehörten Ziffern ein.</string>
<string name="registration_progress_activity__verify">Überprüfen</string>
<string name="registration_progress_activity__call_me">Mich anrufen</string>
<string name="registration_progress_activity__edit_number">Rufnummer bearbeiten</string>
@@ -596,8 +597,11 @@ Die Überprüfung der SMS-Bestätigung hat zu lange gedauert.</string>
<string name="arrays__enabled">Aktiviert</string>
<string name="arrays__disabled">Deaktiviert</string>
<string name="arrays__name_and_message">Name und Nachricht</string>
<string name="arrays__name_only">Name</string>
<string name="arrays__neither">Weder noch</string>
<string name="arrays__name_only">Nur Name</string>
<string name="arrays__neither">Weder Name noch Nachricht</string>
<string name="arrays__images">Bilder</string>
<string name="arrays__audio">Audio</string>
<string name="arrays__video">Video</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="one">%d Stunde</item>
@@ -632,14 +636,14 @@ Die Überprüfung der SMS-Bestätigung hat zu lange gedauert.</string>
<string name="preferences__pref_timeout_interval_title">Zeitüberschreitung</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">Wartezeit, nach deren Ablauf das Passwort vergessen wird</string>
<string name="preferences__notifications">Benachrichtigungen</string>
<string name="preferences__enable_message_notifications">Benachrichtigungen bei Nachrichtenempfang einschalten</string>
<string name="preferences__enable_message_notifications">Benachrichtigungen über Nachrichtenempfang aktivieren</string>
<string name="preferences__led_color">LED-Farbe</string>
<string name="preferences__led_color_unknown">Unbekannt</string>
<string name="preferences__pref_led_blink_title">LED-Blinkmuster</string>
<string name="preferences__pref_led_blink_custom_pattern_title">LED-Blinkmuster festlegen</string>
<string name="preferences__pref_led_blink_custom_pattern_title">LED-Blinkmuster einstellen</string>
<string name="preferences__pref_led_blink_custom_pattern_on_for">Aktiviert für:</string>
<string name="preferences__pref_led_blink_custom_pattern_off_for">Deaktiviert für:</string>
<string name="preferences__pref_led_blink_custom_pattern_set">LED-Blinkmuster festgelegt</string>
<string name="preferences__pref_led_blink_custom_pattern_set">LED-Blinkmuster eingestellt</string>
<string name="preferences__sound">Benachrichtigungston</string>
<string name="preferences__change_notification_sound">Benachrichtigungston ändern</string>
<string name="preferences__inthread_notifications">Immer benachrichtigen</string>
@@ -682,6 +686,7 @@ Die Überprüfung der SMS-Bestätigung hat zu lange gedauert.</string>
<string name="preferences__request_a_delivery_report_for_each_sms_message_you_send">Zustellbericht für jede gesendete SMS anfordern</string>
<string name="preferences__automatically_delete_older_messages_once_a_conversation_thread_exceeds_a_specified_length">Alte Nachrichten automatisch löschen, sobald die Unterhaltung eine bestimmte Länge überschreitet</string>
<string name="preferences__delete_old_messages">Alte Nachrichten löschen</string>
<string name="preferences__chats">Unterhaltungen und Medien</string>
<string name="preferences__conversation_length_limit">Höchstzahl an Nachrichten</string>
<string name="preferences__trim_all_threads_now">Alle Unterhaltungen jetzt kürzen</string>
<string name="preferences__scan_through_all_conversation_threads_and_enforce_conversation_length_limits">Alle Unterhaltungen prüfen und deren Längenbegrenzung sicherstellen</string>
@@ -701,6 +706,11 @@ Kostenlos verschlüsselte Nachrichten mit TextSecure- und Signal-Nutzern austaus
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">Aktivieren, falls das Gerät SMS/MMS über WLAN nutzt (nur bei aktivierter WLAN-Telefonie)</string>
<string name="preferences_app_protection__blocked_contacts">Blockierte Kontakte</string>
<string name="preferences_notifications__display_in_notifications">In Benachrichtigungen anzeigen</string>
<string name="preferences_chats__when_using_mobile_data">Bei mobiler Datenverbindung</string>
<string name="preferences_chats__when_using_wifi">Bei WLAN-Verbindung</string>
<string name="preferences_chats__when_roaming">Bei Roaming</string>
<string name="preferences_chats__media_auto_download">Automatisches Herunterladen von Medien</string>
<string name="preferences_chats__message_trimming">Kürzen von Unterhaltungen</string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->

View File

@@ -416,6 +416,7 @@ Se recibió un mensaje con una clave de identidad desconocida. Haga clic para pr
<string name="KeyCachingService_passphrase_cached">TextSecure está desbloqueado</string>
<string name="KeyCachingService_lock">Bloquear con clave de acceso</string>
<!--MessageNotifier-->
<string name="MessageNotifier_d_new_messages_in_d_conversations">%1$d mensajes nuevos en %2$d conversaciones</string>
<string name="MessageNotifier_most_recent_from_s">Más recientes desde: %1$s</string>
<string name="MessageNotifier_locked_message">Mensaje bloqueado...</string>
<string name="MessageNotifier_media_message_with_text">Mensaje multimedia: %s</string>
@@ -431,6 +432,8 @@ Se recibió un mensaje con una clave de identidad desconocida. Haga clic para pr
<string name="QuickResponseService_quick_response_unavailable_when_TextSecure_is_locked">¡Respuesta rápida no disponible cuando TextSecure está bloqueado!</string>
<string name="QuickResponseService_problem_sending_message">¡Hubo un problema al enviar el mensaje!</string>
<!--SingleRecipientNotificationBuilder-->
<string name="SingleRecipientNotificationBuilder_new_textsecure_message">Nuevo mensajes de TextSecure</string>
<string name="SingleRecipientNotificationBuilder_contents_hidden">Contenidos ocultos</string>
<!--change_passphrase_activity-->
<string name="change_passphrase_activity__old_passphrase">CLAVE DE ACCESO ANTERIOR:</string>
<string name="change_passphrase_activity__new_passphrase">CLAVE DE ACCESO NUEVA:</string>
@@ -668,6 +671,12 @@ por SMS.
<string name="arrays__settings_default">Configuración predeterminada</string>
<string name="arrays__enabled">Habilitado</string>
<string name="arrays__disabled">Deshabilitado</string>
<string name="arrays__name_and_message">Nombre y mensaje</string>
<string name="arrays__name_only">Sólo nombre</string>
<string name="arrays__neither">Ninguno de los dos</string>
<string name="arrays__images">Imágenes</string>
<string name="arrays__audio">Audio</string>
<string name="arrays__video">Vídeo</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="one">%d hora</item>
@@ -702,6 +711,7 @@ por SMS.
<string name="preferences__pref_timeout_interval_title">Intervalo de expiración</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">El intervalo de tiempo a esperar antes de eliminar la clave de acceso de la memoria</string>
<string name="preferences__notifications">Notificaciones</string>
<string name="preferences__enable_message_notifications">Habilitar notificaciones de mensaje</string>
<string name="preferences__led_color">Color del LED</string>
<string name="preferences__led_color_unknown">Desconocido</string>
<string name="preferences__pref_led_blink_title">Patrón de parpadeo del LED</string>
@@ -769,6 +779,7 @@ Mensajería privada gratuita con usuarios de TextSecure y Signal</string>
<string name="preferences__support_wifi_calling">Modo de compatibilidad \'Llamada por WiFi\'</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">Habilítelo si su dispositivo utiliza entrega de SMS/MMS vía WiFi (actívelo sólo cuando \'Llamada por WiFi\' esté activada en su dispositivo)</string>
<string name="preferences_app_protection__blocked_contacts">Contactos bloqueados</string>
<string name="preferences_notifications__display_in_notifications">Mostrar en notificaciones</string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->

View File

@@ -71,7 +71,7 @@ tämän yhteystiedon.</string>
<string name="ConversationItem_click_to_approve_unencrypted">Napsauta, jos haluat lähettää viestin salaamattomana</string>
<string name="ConversationItem_click_to_approve_unencrypted_sms_dialog_title">Käytä salaamattomia tekstiviestejä?</string>
<string name="ConversationItem_click_to_approve_unencrypted_mms_dialog_title">Käytä salaamattomia MMS-viestejä?</string>
<string name="ConversationItem_click_to_approve_unencrypted_dialog_message">Tätä viestiä <b>ei</b> tulla salaamaan, koska vastaanottaja ei enää käytä TextSecurea.\n\nLähetä salaamaton viesti?</string>
<string name="ConversationItem_click_to_approve_unencrypted_dialog_message">Tätä viestiä <b>ei</b> voida salata, koska vastaanottaja ei enää käytä TextSecurea.\n\nLähetetäänkö salaamattomana?</string>
<string name="ConversationItem_unable_to_open_media">Median avaamiseen ei löytynyt sovellusta.</string>
<!--ConversationActivity-->
<string name="ConversationActivity_initiate_secure_session_question">Aloita salattu istunto?</string>
@@ -400,6 +400,7 @@ Vastaanotettiin viesti tuntemattomalla identiteettiavaimella. Aloita käsittely
<string name="KeyCachingService_passphrase_cached">TextSecuren lukitus on auki</string>
<string name="KeyCachingService_lock">Lukitse salalauseella</string>
<!--MessageNotifier-->
<string name="MessageNotifier_d_new_messages_in_d_conversations">%1$d uutta viestiä %2$d keskustelussa</string>
<string name="MessageNotifier_most_recent_from_s">Uusin lähettäjältä: %1$s</string>
<string name="MessageNotifier_locked_message">Lukittu viesti...</string>
<string name="MessageNotifier_media_message_with_text">Mediaviesti: %s</string>
@@ -415,6 +416,8 @@ Vastaanotettiin viesti tuntemattomalla identiteettiavaimella. Aloita käsittely
<string name="QuickResponseService_quick_response_unavailable_when_TextSecure_is_locked">Pikavastaus ei toimi, kun TextSecure on lukittu!</string>
<string name="QuickResponseService_problem_sending_message">Ongelma viestin lähettämisessä!</string>
<!--SingleRecipientNotificationBuilder-->
<string name="SingleRecipientNotificationBuilder_new_textsecure_message">Uusi TextSecure-viesti</string>
<string name="SingleRecipientNotificationBuilder_contents_hidden">Sisältö piilotettu</string>
<!--change_passphrase_activity-->
<string name="change_passphrase_activity__old_passphrase">VANHA SALALAUSE:</string>
<string name="change_passphrase_activity__new_passphrase">UUSI SALALAUSE:</string>
@@ -615,13 +618,19 @@ epäonnistui.</string>
<string name="arrays__my_identity_key">Oma identiteettiavaimeni</string>
<string name="arrays__use_default">Käytä oletusta</string>
<string name="arrays__use_custom">Käytä mukautettua</string>
<string name="arrays__mute_for_one_hour">Mykistä 1 tunniksi</string>
<string name="arrays__mute_for_two_hours">Mykistä 2 tunniksi</string>
<string name="arrays__mute_for_one_day">Mykistä 1 päiväksi</string>
<string name="arrays__mute_for_seven_days">Mykistä 7 päiväksi</string>
<string name="arrays__mute_for_one_hour">1 tunniksi</string>
<string name="arrays__mute_for_two_hours">2 tunniksi</string>
<string name="arrays__mute_for_one_day">1 päiväksi</string>
<string name="arrays__mute_for_seven_days">7 päiväksi</string>
<string name="arrays__settings_default">Oletus</string>
<string name="arrays__enabled">Päällä</string>
<string name="arrays__disabled">Poissa</string>
<string name="arrays__name_and_message">Nimi ja viesti</string>
<string name="arrays__name_only">Vain nimi</string>
<string name="arrays__neither">Ei kumpaakaan</string>
<string name="arrays__images">Kuvat</string>
<string name="arrays__audio">Äänitallenteet</string>
<string name="arrays__video">Videot</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="one">%d tunti</item>
@@ -656,6 +665,7 @@ epäonnistui.</string>
<string name="preferences__pref_timeout_interval_title">Salalauseen ajastimen kesto</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">Odotusaika, ennen kuin salalause unohdetaan muistista</string>
<string name="preferences__notifications">Ilmoitukset</string>
<string name="preferences__enable_message_notifications">Näytä ilmoitukset viesteistä</string>
<string name="preferences__led_color">LED:in väri</string>
<string name="preferences__led_color_unknown">Tuntematon</string>
<string name="preferences__pref_led_blink_title">LED:in vilkkumistahti</string>
@@ -705,6 +715,7 @@ epäonnistui.</string>
<string name="preferences__request_a_delivery_report_for_each_sms_message_you_send">Pyydä vahvistus jokaisen lähetetyn tekstiviestin toimituksesta</string>
<string name="preferences__automatically_delete_older_messages_once_a_conversation_thread_exceeds_a_specified_length">Poista vanhimpia viestejä automaattisesti, kun keskustelu ylittää määritetyn pituusrajan</string>
<string name="preferences__delete_old_messages">Vanhojen viestien poisto</string>
<string name="preferences__chats">Keskustelut ja media</string>
<string name="preferences__conversation_length_limit">Keskustelun pituusraja</string>
<string name="preferences__trim_all_threads_now">Karsi kaikki keskustelut nyt</string>
<string name="preferences__scan_through_all_conversation_threads_and_enforce_conversation_length_limits">Käy läpi kaikki keskustelut ja pakota niihin pituusrajat</string>
@@ -723,6 +734,12 @@ Ilmaiset ja yksityiset viestit TextSecuren ja Signalin käyttäjille</string>
<string name="preferences__support_wifi_calling">\"WiFi Calling\" -yhteensopiva tila</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">Ota käyttöön, jos laitteesi lähettää SMS- ja MMS-viestit WiFi-yhteyden kautta. (Ota käyttöön vain, kun \"WiFi Calling\" on käytössä laitteessasi.)</string>
<string name="preferences_app_protection__blocked_contacts">Estetyt yhteystiedot</string>
<string name="preferences_notifications__display_in_notifications">Ilmoituksissa näytetään</string>
<string name="preferences_chats__when_using_mobile_data">Mobiilitiedonsiirtoverkossa</string>
<string name="preferences_chats__when_using_wifi">Wi-Fi-verkossa</string>
<string name="preferences_chats__when_roaming">Roaming-verkossa</string>
<string name="preferences_chats__media_auto_download">Liitetiedostojen automaattinen lataus</string>
<string name="preferences_chats__message_trimming">Viestien karsiminen</string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->

View File

@@ -12,10 +12,10 @@
<string name="ApplicationPreferencesActivity_delete_all_old_messages_now">Supprimer tous les anciens messages maintenant ?</string>
<string name="ApplicationPreferencesActivity_are_you_sure_you_would_like_to_immediately_trim_all_conversation_threads_to_the_s_most_recent_messages">Êtes-vous sûr de vouloir réduire toutes les conversations aux %s messages les plus récents ?</string>
<string name="ApplicationPreferencesActivity_delete">Supprimer</string>
<string name="ApplicationPreferencesActivity_disable_passphrase">Désactiver la phrase de passe ?</string>
<string name="ApplicationPreferencesActivity_disable_passphrase">Désactiver la phrase de passe ?</string>
<string name="ApplicationPreferencesActivity_disable_lock_screen">
Désactiver le blocage de l\'écran pour les messages ?
</string>
Désactiver l\'écran de protection des messages ?
</string>
<string name="ApplicationPreferencesActivity_disable">Désactiver</string>
<string name="ApplicationPreferencesActivity_unregistering">Annulation de l\'enregistrement</string>
<string name="ApplicationPreferencesActivity_unregistering_from_textsecure_messages">Annulation de l\'enregistrement aux messages TextSecure</string>
@@ -86,7 +86,7 @@ vérifier ce contact.</string>
<string name="ConversationActivity_select_contact_info">Sélectionner les informations du contact</string>
<string name="ConversationActivity_compose_message">Rédiger un message</string>
<string name="ConversationActivity_sorry_there_was_an_error_setting_your_attachment">Désolé, il y a eu une erreur lors de l\'ajout de votre pièce jointe.</string>
<string name="ConversationActivity_the_gif_you_selected_was_too_big">Le gif que vous avez sélectionné est trop gros!</string>
<string name="ConversationActivity_the_gif_you_selected_was_too_big">Le gif sélectionné est trop gros !</string>
<string name="ConversationActivity_sorry_the_selected_video_exceeds_message_size_restrictions">Désolé, la vidéo sélectionnée dépasse les restrictions de taille de message (%1$skB).</string>
<string name="ConversationActivity_sorry_the_selected_audio_exceeds_message_size_restrictions">Désolé, le fichier audio sélectionné dépasse les restrictions de taille de message (%1$skB).</string>
<string name="ConversationActivity_recipient_is_not_a_valid_sms_or_email_address_exclamation">Le destinataire nest pas une adresse SMS ou e-mail valide !</string>
@@ -150,16 +150,16 @@ vérifier ce contact.</string>
<string name="DateUtils_now">À l\'instant</string>
<string name="DateUtils_minutes_ago">%d min</string>
<!--DeviceListActivity-->
<string name="DeviceListActivity_unlink_s">Délier \'%s\'?</string>
<string name="DeviceListActivity_by_unlinking_this_device_it_will_no_longer_be_able_to_send_or_receive">Si vous dissociez cet appareil, il ne sera plus capable d\'envoyer ou recevoir des messages.</string>
<string name="DeviceListActivity_unlink_s">Dissocier \'%s\' ?</string>
<string name="DeviceListActivity_by_unlinking_this_device_it_will_no_longer_be_able_to_send_or_receive">Si vous dissociez cet appareil, il ne pourra plus envoyer ou recevoir des messages.</string>
<string name="DeviceListActivity_network_connection_failed">Erreur de connexion réseau...</string>
<string name="DeviceListActivity_try_again">Essayer à nouveau</string>
<string name="DeviceListActivity_try_again">Réessayer</string>
<string name="DeviceListActivity_unlinking_device">Dissociation de l\'appareil...</string>
<string name="DeviceListActivity_unlinking_device_no_ellipsis">Dissociation de l\'appareil</string>
<string name="DeviceListActivity_network_failed">Erreur réseau !</string>
<!--DeviceListItem-->
<string name="DeviceListItem_unnamed_device">Appareil sans nom</string>
<string name="DeviceListItem_linked_s">Associé %s</string>
<string name="DeviceListItem_linked_s">%s associé</string>
<string name="DeviceListItem_last_active_s">Vu pour la dernière fois %s</string>
<!--ShareActivity-->
<string name="ShareActivity_share_with">Partager avec</string>
@@ -256,12 +256,12 @@ Merci de demander à lexpéditeur de mettre à jour TextSecure dans sa versio
\n- Envoyer des messages en votre nom
</string>
<string name="DeviceProvisioningActivity_content_progress_title">Association de l\'appareil</string>
<string name="DeviceProvisioningActivity_content_progress_content">Association de l\'appareil...</string>
<string name="DeviceProvisioningActivity_content_progress_content">Association du nouvel appareil...</string>
<string name="DeviceProvisioningActivity_content_progress_success">Appareil associé!</string>
<string name="DeviceProvisioningActivity_content_progress_no_device">Pas d\'appareil trouvé.</string>
<string name="DeviceProvisioningActivity_content_progress_network_error">Erreur réseau.</string>
<string name="DeviceProvisioningActivity_content_progress_key_error">QR code invalide.</string>
<string name="DeviceProvisioningActivity_sorry_you_have_too_many_devices_linked_already">Désolé, vous avez trop d\'appareils déjà associés, essayez d\'en enlever quelques-uns...</string>
<string name="DeviceProvisioningActivity_sorry_you_have_too_many_devices_linked_already">Désolé, vous avez associé trop d\'appareils, essayez d\'en enlever quelques-uns...</string>
<!--PassphrasePromptActivity-->
<string name="PassphrasePromptActivity_enter_passphrase">Entrez la phrase de passe</string>
<string name="PassphrasePromptActivity_watermark_content_description">Icône TextSecure</string>
@@ -400,8 +400,9 @@ Un message avec une clé de chiffrement inconnue a été reçu. Cliquer pour l\'
<string name="KeyCachingService_passphrase_cached">TextSecure est déverrouillé</string>
<string name="KeyCachingService_lock">Verrouiller avec la phrase de passe</string>
<!--MessageNotifier-->
<string name="MessageNotifier_d_new_messages_in_d_conversations">%1$d nouveaux messages dans %2$d conversations</string>
<string name="MessageNotifier_most_recent_from_s">Plus récent de : %1$s</string>
<string name="MessageNotifier_locked_message">Message bloqué...</string>
<string name="MessageNotifier_locked_message">Message verrouillé...</string>
<string name="MessageNotifier_media_message_with_text">Message média : %s</string>
<string name="MessageNotifier_no_subject">(Aucun sujet)</string>
<string name="MessageNotifier_message_delivery_failed">La distribution du message a échoué.</string>
@@ -412,9 +413,11 @@ Un message avec une clé de chiffrement inconnue a été reçu. Cliquer pour l\'
<string name="MessageNotifier_media_message">Message média</string>
<string name="MessageNotifier_reply">Répondre</string>
<!--QuickResponseService-->
<string name="QuickResponseService_quick_response_unavailable_when_TextSecure_is_locked">Les réponses rapides ne sont pas disponibles quand TextSecure est verrouillé !</string>
<string name="QuickResponseService_problem_sending_message">Erreur lors de l\'envoi du message !</string>
<string name="QuickResponseService_quick_response_unavailable_when_TextSecure_is_locked">Réponse rapide indisponible lorsque TextSecure est verrouillé !</string>
<string name="QuickResponseService_problem_sending_message">Erreur lors de l\'envoi du message !</string>
<!--SingleRecipientNotificationBuilder-->
<string name="SingleRecipientNotificationBuilder_new_textsecure_message">Nouveau message TextSecure</string>
<string name="SingleRecipientNotificationBuilder_contents_hidden">Contenus cachés</string>
<!--change_passphrase_activity-->
<string name="change_passphrase_activity__old_passphrase">Ancienne phrase de passe :</string>
<string name="change_passphrase_activity__new_passphrase">Nouvelle phrase de passe :</string>
@@ -444,7 +447,7 @@ Un message avec une clé de chiffrement inconnue a été reçu. Cliquer pour l\'
<string name="conversation_activity__compose_description">Composition du message</string>
<string name="conversation_activity__emoji_toggle_description">Activer le clavier emoji</string>
<string name="conversation_activity__attachment_thumbnail">Vignette de pièce jointe</string>
<string name="conversation_activity__quick_attachment_drawer_toggle_description">Capture instantanée</string>
<string name="conversation_activity__quick_attachment_drawer_toggle_description">Afficher/cacher la grille des pièces jointes</string>
<!--conversation_item-->
<string name="conversation_item__mms_downloading_description">Téléchargement du message média</string>
<string name="conversation_item__mms_image_description">Message média</string>
@@ -626,6 +629,9 @@ par SMS.</string>
<string name="arrays__settings_default">Paramètres par défaut</string>
<string name="arrays__enabled">Activé</string>
<string name="arrays__disabled">Désactivé</string>
<string name="arrays__name_and_message">Nom et message</string>
<string name="arrays__name_only">Nom seulement</string>
<string name="arrays__neither">Aucun</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="one">%d heure</item>
@@ -650,7 +656,7 @@ par SMS.</string>
<string name="preferences__change_my_passphrase">Modifier ma phrase de passe</string>
<string name="preferences__enable_passphrase">Activer la phrase de passe</string>
<string name="preferences__passphrase_summary">Phrase de passe %s</string>
<string name="preferences__enable_lock_screen_for_messages">Activer l\'écran de blocage pour les messages</string>
<string name="preferences__enable_lock_screen_for_messages">Activer l\'écran de protection pour les messages</string>
<string name="preferences__screen_security">Sécurité décran</string>
<string name="preferences__screen_security_summary">Sécurité d\'écran %s</string>
<string name="preferences__disable_screen_security_to_allow_screen_shots">Désactiver les prises d\'écrans dans la liste des applications récentes et à l\'intérieur de l\'application</string>
@@ -660,6 +666,7 @@ par SMS.</string>
<string name="preferences__pref_timeout_interval_title">Délai d\'expiration</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">Délai avant l\'oubli de la phrase de passe en mémoire</string>
<string name="preferences__notifications">Notifications</string>
<string name="preferences__enable_message_notifications">Activer les notifications de messages</string>
<string name="preferences__led_color">Couleur de la LED</string>
<string name="preferences__led_color_unknown">Inconnu</string>
<string name="preferences__pref_led_blink_title">Rythme de clignotement de la LED</string>
@@ -726,8 +733,9 @@ Messages privés gratuits vers les utilisateurs TextSecure et Signal
</string>
<string name="preferences__submit_debug_log">Envoyer un rapport de débogage</string>
<string name="preferences__support_wifi_calling">Compatibilité \'WiFi Calling\'</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">Activer si votre appareil délivre les SMS/MMS à l\'aide du WiFi (n\'activer que lorsque \"WiFi Calling\" est activé sur votre appareil).</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">Activer si votre appareil délivre les SMS/MMS à l\'aide du WiFi (n\'activer que si \"WiFi Calling\" est activé sur votre appareil).</string>
<string name="preferences_app_protection__blocked_contacts">Contacts bloqués</string>
<string name="preferences_notifications__display_in_notifications">Afficher dans les notifications</string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->
@@ -782,7 +790,7 @@ Messages privés gratuits vers les utilisateurs TextSecure et Signal
<string name="conversation__menu_view_media">Toutes les images</string>
<string name="conversation__menu_conversation_settings">Préférences de conversation</string>
<!--conversation_popup-->
<string name="conversation_popup__menu_expand_popup">Étendre la popup</string>
<string name="conversation_popup__menu_expand_popup">Agrandir la popup</string>
<!--conversation_callable-->
<string name="conversation_add_to_contacts__menu_add_to_contacts">Ajouter aux contacts</string>
<!--conversation_group_options-->
@@ -824,6 +832,6 @@ Messages privés gratuits vers les utilisateurs TextSecure et Signal
<!--transport_selection_list_item-->
<string name="transport_selection_list_item__transport_icon">Icône de transport</string>
<!--quick_attachment_drawer-->
<string name="quick_camera_unavailable">Caméra indisponible</string>
<string name="quick_camera_unavailable">Appareil photo indisponible</string>
<!--EOF-->
</resources>

View File

@@ -393,6 +393,7 @@ Primljena poruka sa nepoznatim ključem identiteta. Pritisnite za obradu i prika
<string name="KeyCachingService_passphrase_cached">TextSecure je otključan</string>
<string name="KeyCachingService_lock">Zaključajte sa lozinkom</string>
<!--MessageNotifier-->
<string name="MessageNotifier_d_new_messages_in_d_conversations">%1$d novih poruka u %2$d razgovora</string>
<string name="MessageNotifier_most_recent_from_s">Najnovije od: %1$s</string>
<string name="MessageNotifier_locked_message">Zaključana poruka...</string>
<string name="MessageNotifier_media_message_with_text">Media poruka: %s</string>
@@ -408,6 +409,8 @@ Primljena poruka sa nepoznatim ključem identiteta. Pritisnite za obradu i prika
<string name="QuickResponseService_quick_response_unavailable_when_TextSecure_is_locked">Brzi odgovor nije dostupan kada je TextSecure zaključan!</string>
<string name="QuickResponseService_problem_sending_message">Greška prilikom slanja poruke!</string>
<!--SingleRecipientNotificationBuilder-->
<string name="SingleRecipientNotificationBuilder_new_textsecure_message">Nova TextSecure poruka</string>
<string name="SingleRecipientNotificationBuilder_contents_hidden">Sadržaj je skriven</string>
<!--change_passphrase_activity-->
<string name="change_passphrase_activity__old_passphrase">STARA LOZINKA:</string>
<string name="change_passphrase_activity__new_passphrase">NOVA LOZINKA:</string>
@@ -619,6 +622,9 @@ neuspješno.</string>
<string name="arrays__settings_default">Zadane postavke</string>
<string name="arrays__enabled">Omogućeno</string>
<string name="arrays__disabled">Onemogućeno</string>
<string name="arrays__name_and_message">Ime i poruka</string>
<string name="arrays__name_only">Samo ime</string>
<string name="arrays__neither">Niti jedno</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="one">%d sat</item>
@@ -654,6 +660,7 @@ neuspješno.</string>
<string name="preferences__pref_timeout_interval_title">Interval vremenskog ograničenja</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">Vrijeme nakon kojeg će se obrisati lozinka iz memorije</string>
<string name="preferences__notifications">Obavijesti</string>
<string name="preferences__enable_message_notifications">Omogući obavijesti o poruci</string>
<string name="preferences__led_color">LED boja</string>
<string name="preferences__led_color_unknown">Nepoznato</string>
<string name="preferences__pref_led_blink_title">LED uzorak treptanja</string>
@@ -721,6 +728,7 @@ Besplatno privatno dopisivanje sa TextSecure i Signal korisnicima</string>
<string name="preferences__support_wifi_calling">\'WiFi Calling\' način kompatibilnosti</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">Omogućite ukoliko vaš uređaj koristi SMS/MMS isporuku preko WiFi (omogućite jedino kada je \'WiFi pozivanje\' omogućeno na vašem uređaju)</string>
<string name="preferences_app_protection__blocked_contacts">Blokirani kontakti</string>
<string name="preferences_notifications__display_in_notifications">Prikaži u obavijestima</string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->

View File

@@ -86,11 +86,11 @@ Elküldöd a titkosítatlan üzenetet?</string>
<string name="ConversationActivity_add_attachment">Melléklet hozzáadása</string>
<string name="ConversationActivity_select_contact_info">Válassz névjegy infót!</string>
<string name="ConversationActivity_compose_message">Üzenetírás</string>
<string name="ConversationActivity_sorry_there_was_an_error_setting_your_attachment">Sajnos nem sikerült a melléklet beállítása.</string>
<string name="ConversationActivity_sorry_there_was_an_error_setting_your_attachment">Sajnáljuk, egy hiba történt a mellékleted beállításában.</string>
<string name="ConversationActivity_the_gif_you_selected_was_too_big">Az általad választott gif túl nagy volt!</string>
<string name="ConversationActivity_sorry_the_selected_video_exceeds_message_size_restrictions">Sajnos a kiválasztott mozgókép mérete meghaladja a maximális üzenetméret határt (%1$skB).</string>
<string name="ConversationActivity_sorry_the_selected_audio_exceeds_message_size_restrictions">Sajnos a kiválasztott hangállomány mérete meghaladja a maximális üzenetméret határt (%1$skB).</string>
<string name="ConversationActivity_recipient_is_not_a_valid_sms_or_email_address_exclamation">A fogadó címe nem érvényes SMS vagy email cím!</string>
<string name="ConversationActivity_recipient_is_not_a_valid_sms_or_email_address_exclamation">A fogadó nem egy érvényes SMS vagy email cím!</string>
<string name="ConversationActivity_message_is_empty_exclamation">Üres az üzenet!</string>
<string name="ConversationActivity_group_members">Csoport tagok</string>
<string name="ConversationActivity_group_conversation">Csoportos beszélgetés</string>
@@ -110,20 +110,20 @@ Elküldöd a titkosítatlan üzenetet?</string>
<string name="ConversationActivity_lets_use_this_to_chat">Használd ezt a csevegéshez: %s</string>
<string name="ConversationActivity_error_leaving_group">Hiba a csoport elhagyásakor...</string>
<string name="ConversationActivity_mms_not_supported_title">MMS nem támogatott</string>
<string name="ConversationActivity_mms_not_supported_message">Ezt az üzenetet nem lehet elküldeni, mivel a szolgáltató nem támogatja az MMS-t.</string>
<string name="ConversationActivity_mms_not_supported_message">Ezt az üzenetet nem lehet elküldeni, mivel a szolgáltatód nem támogatja az MMS-t.</string>
<string name="ConversationActivity_specify_recipient">Válassz egy névjegyet!</string>
<string name="ConversationActivity_unblock_question">Tiltás feloldása?</string>
<string name="ConversationActivity_are_you_sure_you_want_to_unblock_this_contact">Biztosan feloldod ennek a névjegynek a tiltását?</string>
<string name="ConversationActivity_unblock">Tiltás feloldása</string>
<!--ConversationFragment-->
<string name="ConversationFragment_message_details">Üzenet részletei</string>
<string name="ConversationFragment_message_details">Üzenet részletek</string>
<string name="ConversationFragment_transport_s_sent_received_s">Átviteli mód: %1$s\nKüldött/Fogadott: %2$s</string>
<string name="ConversationFragment_sender_s_transport_s_sent_s_received_s">Küldő: %1$s\nÁtvitel: %2$s\nKüldött: %3$s\nFogadott: %4$s</string>
<string name="ConversationFragment_confirm_message_delete">Üzenettörlés megerősítése</string>
<string name="ConversationFragment_are_you_sure_you_want_to_permanently_delete_all_selected_messages">Biztosan véglegesen törölni szeretnéd a kiválasztott üzeneteket?</string>
<string name="ConversationFragment_save_to_sd_card">Mentsük a tárolóra?</string>
<string name="ConversationFragment_this_media_has_been_stored_in_an_encrypted_database_warning">Ennek a médiának az elmentése más alkalmazások számára lehetővé teszi azok hozzáférését.\n\n Folytassuk?</string>
<string name="ConversationFragment_error_while_saving_attachment_to_sd_card">Hiba történt a csatolmány mentése közben!</string>
<string name="ConversationFragment_error_while_saving_attachment_to_sd_card">Hiba történt a melléklet mentése közben!</string>
<string name="ConversationFragment_success_exclamation">Sikerült!</string>
<string name="ConversationFragment_unable_to_write_to_sd_card_exclamation">Nem lehet a tárolóra írni!</string>
<string name="ConversationFragment_saving_attachment">Melléklet mentése</string>
@@ -145,7 +145,7 @@ Elküldöd a titkosítatlan üzenetet?</string>
<string name="ConversationListItem_key_exchange_message">Kulcs-csere üzenet...</string>
<!--CustomDefaultPreference-->
<string name="CustomDefaultPreference_using_custom">Egyéni: %s</string>
<string name="CustomDefaultPreference_using_default">Alapértelemezett: %s</string>
<string name="CustomDefaultPreference_using_default">Alapértelmezett: %s</string>
<string name="CustomDefaultPreference_none">Egyik sem</string>
<!--DateUtils-->
<string name="DateUtils_now">Most</string>
@@ -283,9 +283,9 @@ Kérlek telepíts újra a Google Play Szolgáltatásokat és próbálkozz újra!
<string name="RecipientPreferenceActivity_block_this_contact_question">Letiltod ezt a névjegyet?</string>
<string name="RecipientPreferenceActivity_you_will_no_longer_see_messages_from_this_user">Többé nem látod az ettől a felhasználótól érkező üzeneteket.</string>
<string name="RecipientPreferenceActivity_block">Letiltás</string>
<string name="RecipientPreferenceActivity_unblock_this_contact_question">Feloldod ennek a névjegynek a tiltát?</string>
<string name="RecipientPreferenceActivity_are_you_sure_you_want_to_unblock_this_contact">Biztosan feloldod ennek a névjegynek a tiltását?</string>
<string name="RecipientPreferenceActivity_unblock">Tiltás feloldása</string>
<string name="RecipientPreferenceActivity_unblock_this_contact_question">Feloldod ezt a névjegyet?</string>
<string name="RecipientPreferenceActivity_are_you_sure_you_want_to_unblock_this_contact">Biztosan fel akarod oldani ezt a névjegyet?</string>
<string name="RecipientPreferenceActivity_unblock">Feloldás</string>
<string name="RecipientPreferenceActivity_enabled">Engedélyezett</string>
<string name="RecipientPreferenceActivity_disabled">Letiltott</string>
<!--RegistrationActivity-->
@@ -410,6 +410,7 @@ Ismeretlen azonosító kulcsú üzenet érkezett. Kattints rá a feldolgozáshoz
<string name="KeyCachingService_passphrase_cached">A TextSecure feloldásra került.</string>
<string name="KeyCachingService_lock">Lezárás jelszóval</string>
<!--MessageNotifier-->
<string name="MessageNotifier_d_new_messages_in_d_conversations">%1$d új üzenet %2$d beszélgetésben</string>
<string name="MessageNotifier_most_recent_from_s">Legutóbbi tőle: %1$s</string>
<string name="MessageNotifier_locked_message">Zárolt üzenet...</string>
<string name="MessageNotifier_media_message_with_text">Média üzenet: %s</string>
@@ -425,12 +426,14 @@ Ismeretlen azonosító kulcsú üzenet érkezett. Kattints rá a feldolgozáshoz
<string name="QuickResponseService_quick_response_unavailable_when_TextSecure_is_locked">Gyors válasz nem elérhető, amikor a TextSecure zárolva van!</string>
<string name="QuickResponseService_problem_sending_message">Probléma az üzenetküldésben!</string>
<!--SingleRecipientNotificationBuilder-->
<string name="SingleRecipientNotificationBuilder_new_textsecure_message">Új TextSecure üzenet</string>
<string name="SingleRecipientNotificationBuilder_contents_hidden">Tartalmak rejtve</string>
<!--change_passphrase_activity-->
<string name="change_passphrase_activity__old_passphrase">RÉGI JELSZÓ:</string>
<string name="change_passphrase_activity__new_passphrase">ÚJ JELSZÓ:</string>
<string name="change_passphrase_activity__repeat_new_passphrase">ISMÉTELD MEG AZ ÚJ JELSZÓT:</string>
<!--contact_selection_activity-->
<string name="contact_selection_activity__enter_name_or_number">Írj be egy nevet vagy egy számot!</string>
<string name="contact_selection_activity__enter_name_or_number">Írj be egy nevet vagy egy számot</string>
<!--contact_selection_group_activity-->
<string name="contact_selection_group_activity__no_contacts">Nincsenek névjegyek.</string>
<string name="contact_selection_group_activity__finding_contacts">Névjegyek betöltése...</string>
@@ -454,7 +457,7 @@ Ismeretlen azonosító kulcsú üzenet érkezett. Kattints rá a feldolgozáshoz
<string name="conversation_activity__compose_description">Üzenet létrehozása</string>
<string name="conversation_activity__emoji_toggle_description">Váltás a hangulatjelek beviteléhez</string>
<string name="conversation_activity__attachment_thumbnail">Melléklet előnézet</string>
<string name="conversation_activity__quick_attachment_drawer_toggle_description">Közvetlen csatolmányfelvétel</string>
<string name="conversation_activity__quick_attachment_drawer_toggle_description">Közvetlen mellékletfelvétel</string>
<!--conversation_item-->
<string name="conversation_item__mms_downloading_description">Média üzenet letöltése</string>
<string name="conversation_item__mms_image_description">Média üzenet</string>
@@ -640,8 +643,8 @@ sikertelen.
<string name="AndroidManifest__verify_identity">Azonosító ellenőrzése</string>
<string name="AndroidManifest__log_submit">Hibakeresési napló küldése</string>
<string name="AndroidManifest__media_preview">Média előnézet</string>
<string name="AndroidManifest__media_overview">Minden fénykép</string>
<string name="AndroidManifest__media_overview_named">Minden fénykép vele: %1$s</string>
<string name="AndroidManifest__media_overview">Összes fénykép</string>
<string name="AndroidManifest__media_overview_named">Összes fénykép vele: %1$s</string>
<string name="AndroidManifest__message_details">Üzenet részletei</string>
<string name="AndroidManifest_manage_linked_devices">Társított eszközök kezelése</string>
<!--arrays.xml-->
@@ -656,6 +659,9 @@ sikertelen.
<string name="arrays__settings_default">Alapértelmezett beállítások</string>
<string name="arrays__enabled">Engedélyezett</string>
<string name="arrays__disabled">Letiltott</string>
<string name="arrays__name_and_message">Név és üzenet</string>
<string name="arrays__name_only">Csak név</string>
<string name="arrays__neither">Egyik sem</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="one">%d óra</item>
@@ -664,8 +670,8 @@ sikertelen.
<!--preferences.xml-->
<string name="preferences__general">Általános</string>
<string name="preferences__sms_mms">SMS és MMS</string>
<string name="preferences__pref_all_sms_title">Minden SMS fogadása</string>
<string name="preferences__pref_all_mms_title">Minden MMS fogadása</string>
<string name="preferences__pref_all_sms_title">Összes SMS fogadása</string>
<string name="preferences__pref_all_mms_title">Összes MMS fogadása</string>
<string name="preferences__use_textsecure_for_viewing_and_storing_all_incoming_text_messages">TextSecure használata minden bejövő SMS üzenet kezelésére</string>
<string name="preferences__use_textsecure_for_viewing_and_storing_all_incoming_multimedia_messages">TextSecure használata minden bejövő MMS üzenet kezelésére</string>
<string name="preferences__input_settings">Beviteli beállítások</string>
@@ -690,6 +696,7 @@ sikertelen.
<string name="preferences__pref_timeout_interval_title">Érvényességi idő tartama</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">A jelszó memóriából való törlése előtti várakozási idő tartama</string>
<string name="preferences__notifications">Értesítések</string>
<string name="preferences__enable_message_notifications">Üzenet értesítések engedélyezése</string>
<string name="preferences__led_color">LED színe</string>
<string name="preferences__led_color_unknown">Ismeretlen</string>
<string name="preferences__pref_led_blink_title">LED villogás mintázata</string>
@@ -699,7 +706,7 @@ sikertelen.
<string name="preferences__pref_led_blink_custom_pattern_set">LED villogási mintázat beállításra került!</string>
<string name="preferences__sound">Hang</string>
<string name="preferences__change_notification_sound">Értesítési hang megváltoztatása</string>
<string name="preferences__inthread_notifications">Értesítések a beszélgetések során.</string>
<string name="preferences__inthread_notifications">Értesítések a beszélgetések során</string>
<string name="preferences__play_inthread_notifications">Értesítési hang lejátszása, amikor aktív beszélgetést nézel</string>
<string name="preferences__repeat_alerts">Figyelmeztetések megismétlése</string>
<string name="preferences__never">Soha</string>
@@ -757,14 +764,15 @@ Ingyenes biztonságos üzenet küldés TextSecure és Signal felhasználóknak</
<string name="preferences__support_wifi_calling">\'WiFi hívás\' kompatibilitási mód</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">Engedélyezd, ha az eszközöd az SMS/MMS-t WiFi-n keresztül kézbesíti (csak akkor engedélyezd, ha a \'WiFi hívás\' engedélyezve van az eszközödön)</string>
<string name="preferences_app_protection__blocked_contacts">Letiltott névjegyek</string>
<string name="preferences_notifications__display_in_notifications">Megjelenítés értesítésekben</string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->
<!--contact_selection_list-->
<string name="contact_selection_list__menu_select_all">Minden kijelölése</string>
<string name="contact_selection_list__menu_select_all">Összes kijelölése</string>
<string name="contact_selection_list__menu_unselect_all">Az összes elem kijelölésének megszüntetése</string>
<string name="contact_selection_list__header_textsecure_users">TEXTSECURE FELHASZNÁLÓK</string>
<string name="contact_selection_list__header_other">MINDEN NÉVJEGY</string>
<string name="contact_selection_list__header_other">ÖSSZES NÉVJEGY</string>
<string name="contact_selection_list__unknown_contact">Új üzenet...</string>
<!--contact_selection-->
<string name="contact_selection__menu_finished">Befejezve</string>
@@ -787,7 +795,7 @@ Ingyenes biztonságos üzenet küldés TextSecure és Signal felhasználóknak</
<string name="conversation_insecure__security">Biztonság</string>
<!--conversation_list_batch-->
<string name="conversation_list_batch__menu_delete_selected">A kijelölt elemek törlése</string>
<string name="conversation_list_batch__menu_select_all">Minden kijelölése</string>
<string name="conversation_list_batch__menu_select_all">Összes kijelölése</string>
<!--conversation_list-->
<string name="conversation_list__menu_search">Keresés</string>
<!--conversation_list_item_view-->
@@ -808,7 +816,7 @@ Ingyenes biztonságos üzenet küldés TextSecure és Signal felhasználóknak</
<string name="conversation__menu_update_group">Csoport frissítése</string>
<string name="conversation__menu_leave_group">Csoport elhagyása</string>
<string name="conversation__menu_delete_thread">Beszélgetésfolyam törlése</string>
<string name="conversation__menu_view_media">Minden fénykép</string>
<string name="conversation__menu_view_media">Összes fénykép</string>
<string name="conversation__menu_conversation_settings">Beszélgetés beállítások</string>
<!--conversation_popup-->
<string name="conversation_popup__menu_expand_popup">Felugró kiterjesztése</string>
@@ -828,7 +836,7 @@ Ingyenes biztonságos üzenet küldés TextSecure és Signal felhasználóknak</
<string name="text_secure_normal__menu_new_group">Új csoport</string>
<string name="text_secure_normal__menu_settings">Beállítások</string>
<string name="text_secure_normal__menu_clear_passphrase">Lezárás</string>
<string name="text_secure_normal__mark_all_as_read">Mindegyik megjelölése olvasottként</string>
<string name="text_secure_normal__mark_all_as_read">Összes megjelölése olvasottként</string>
<!--reminder_header-->
<string name="reminder_header_expired_build">A TextSecure fordításod érvényességi ideje lejárt!</string>
<string name="reminder_header_expired_build_details">Az üzenetek küldése nem lesz sikeres, kérlek frissíts a legújabb verzióra!</string>

View File

@@ -396,6 +396,7 @@ Ricevuto un messaggio con una chiave identificativa sconosciuta. Clicca per elab
<string name="KeyCachingService_passphrase_cached">TextSecure è sbloccato</string>
<string name="KeyCachingService_lock">Chiudi con password</string>
<!--MessageNotifier-->
<string name="MessageNotifier_d_new_messages_in_d_conversations">%1$d nuovi messaggi in %2$d conversazioni</string>
<string name="MessageNotifier_most_recent_from_s">Il più recente da: %1$s</string>
<string name="MessageNotifier_locked_message">Messaggio bloccato...</string>
<string name="MessageNotifier_media_message_with_text">Messaggio multimediale: %s</string>
@@ -411,6 +412,8 @@ Ricevuto un messaggio con una chiave identificativa sconosciuta. Clicca per elab
<string name="QuickResponseService_quick_response_unavailable_when_TextSecure_is_locked">Risposta veloce non disponibile quando TextSecure è bloccato!</string>
<string name="QuickResponseService_problem_sending_message">Problema nell\'invio del messaggio!</string>
<!--SingleRecipientNotificationBuilder-->
<string name="SingleRecipientNotificationBuilder_new_textsecure_message">Nuovo messaggio di TextSecure</string>
<string name="SingleRecipientNotificationBuilder_contents_hidden">Contenuto nascosto</string>
<!--change_passphrase_activity-->
<string name="change_passphrase_activity__old_passphrase">Vecchia password:</string>
<string name="change_passphrase_activity__new_passphrase">Nuova password:</string>
@@ -635,6 +638,12 @@ non riuscita.
<string name="arrays__settings_default">Impostazioni di default</string>
<string name="arrays__enabled">Attivato</string>
<string name="arrays__disabled">Disattivato</string>
<string name="arrays__name_and_message">Nome e messaggio</string>
<string name="arrays__name_only">Solo nome</string>
<string name="arrays__neither">Nessuno dei due</string>
<string name="arrays__images">Immagini</string>
<string name="arrays__audio">Audio</string>
<string name="arrays__video">Video</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="one">%d ora</item>
@@ -669,6 +678,7 @@ non riuscita.
<string name="preferences__pref_timeout_interval_title">Intervallo di tempo</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">La quantità di tempo prima di dimenticare la password</string>
<string name="preferences__notifications">Notifiche</string>
<string name="preferences__enable_message_notifications">Attiva notifiche messaggi</string>
<string name="preferences__led_color">Colore del LED</string>
<string name="preferences__led_color_unknown">Sconosciuto</string>
<string name="preferences__pref_led_blink_title">Impostazioni LED</string>
@@ -718,6 +728,7 @@ non riuscita.
<string name="preferences__request_a_delivery_report_for_each_sms_message_you_send">Richiedi un rapporto di consegna per ogni SMS inviato</string>
<string name="preferences__automatically_delete_older_messages_once_a_conversation_thread_exceeds_a_specified_length">Elimina automaticamente i messaggi più vecchi quando un thread di conversazione supera una certa lunghezza</string>
<string name="preferences__delete_old_messages">Elimina i messaggi vecchi</string>
<string name="preferences__chats">Chat e download</string>
<string name="preferences__conversation_length_limit">Limite di lunghezza conversazione</string>
<string name="preferences__trim_all_threads_now">Riduci immediatamente tutti i thread</string>
<string name="preferences__scan_through_all_conversation_threads_and_enforce_conversation_length_limits">Analizza tutti i thread e applica il limite di lunghezza delle conversazioni.</string>
@@ -736,6 +747,7 @@ Chatta gratis con gli utenti TextSecure e Signal</string>
<string name="preferences__support_wifi_calling">Modalità di compatibilità \'WiFi Calling\'</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">Abilitare se il tuo device spedisce gli SMM/MMS via WiFi ( abilita solo quando \"WiFi Calling\" è abilitato per il tuo dispositivo )</string>
<string name="preferences_app_protection__blocked_contacts">Contatti bloccati</string>
<string name="preferences_notifications__display_in_notifications">Visualizza nelle notifiche</string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->

View File

@@ -385,6 +385,7 @@
<string name="KeyCachingService_passphrase_cached">TextSecureは、アンロックされています</string>
<string name="KeyCachingService_lock">パスワードでロックする</string>
<!--MessageNotifier-->
<string name="MessageNotifier_d_new_messages_in_d_conversations">%2$d 会話内の %1$d の新規メッセージ</string>
<string name="MessageNotifier_most_recent_from_s">最新の受信は次から: %1$s</string>
<string name="MessageNotifier_locked_message">メッセージをロック...</string>
<string name="MessageNotifier_media_message_with_text">メディアメッセージ: %s</string>
@@ -400,6 +401,8 @@
<string name="QuickResponseService_quick_response_unavailable_when_TextSecure_is_locked">TextSecureがロックされていますので、クイック返信は利用できません!</string>
<string name="QuickResponseService_problem_sending_message">送信メッセージでの問題!</string>
<!--SingleRecipientNotificationBuilder-->
<string name="SingleRecipientNotificationBuilder_new_textsecure_message">新しいTextSecureメッセージ</string>
<string name="SingleRecipientNotificationBuilder_contents_hidden">非表示コンテンツ</string>
<!--change_passphrase_activity-->
<string name="change_passphrase_activity__old_passphrase">既存のパスワード:</string>
<string name="change_passphrase_activity__new_passphrase">新規のパスワード:</string>
@@ -602,6 +605,9 @@ Wi-Fiに接続している場合、ファイアウォールがTextSecureサー
<string name="arrays__settings_default">デフォルト設定</string>
<string name="arrays__enabled">有効</string>
<string name="arrays__disabled">無効</string>
<string name="arrays__name_and_message">名前とメッセージ</string>
<string name="arrays__name_only">名前のみ</string>
<string name="arrays__neither">もしくは</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="other">%d 時間</item>
@@ -636,6 +642,7 @@ Wi-Fiに接続している場合、ファイアウォールがTextSecureサー
<string name="preferences__pref_timeout_interval_title">タイムアウトの間隔</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">メモリからパスワードを消去するまでの待ち時間です</string>
<string name="preferences__notifications">通知</string>
<string name="preferences__enable_message_notifications">メッセージ通知を有効に</string>
<string name="preferences__led_color">LED色</string>
<string name="preferences__led_color_unknown">不明</string>
<string name="preferences__pref_led_blink_title">LED点滅パターン</string>
@@ -704,6 +711,7 @@ Wi-Fiに接続している場合、ファイアウォールがTextSecureサー
<string name="preferences__support_wifi_calling">\'WiFi Calling\' 互換モード</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">あなたのデバイスでSMS/MMSの配送をWi-Fi(Wi-Fi Callingが有効にできるデバイスで有効にしある時のみ)上で行うのを有効にする</string>
<string name="preferences_app_protection__blocked_contacts">ブロックした連絡先</string>
<string name="preferences_notifications__display_in_notifications">画面に通知を表示</string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->

View File

@@ -12,7 +12,10 @@
<string name="ApplicationPreferencesActivity_delete_all_old_messages_now">ಈಗ ಎಲ್ಲಾ ಹಳೆಯ ಸಂದೇಶಗಳನ್ನು ಅಳಿಸಿ?</string>
<string name="ApplicationPreferencesActivity_are_you_sure_you_would_like_to_immediately_trim_all_conversation_threads_to_the_s_most_recent_messages">ನೀವು ಈ ಕ್ಷಣ ಎಲ್ಲಾ ಸಂಭಾಷಣೆಯ ಇತ್ತೀಚಿನ %s ಸಂದೇಶಗಳಿಗೆ ಮಿತಗೊಳಿಸಲು ಖಚಿತವಾಗಿ ಬಯಸುವಿರಾ?</string>
<string name="ApplicationPreferencesActivity_delete">ಅಳಿಸಿಹಾಕು</string>
<string name="ApplicationPreferencesActivity_disable_passphrase">ಗುಪ್ತಪದವನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ</string>
<string name="ApplicationPreferencesActivity_disable">ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ</string>
<string name="ApplicationPreferencesActivity_unregistering">ನೋಂದಣಿಯನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗುತ್ತಿದೆ...</string>
<string name="ApplicationPreferencesActivity_disable_textsecure_messages">ಟೆಕ್ಸ್ಟ್ ಸೆಕ್ಯೂರ್ ಸಂದೇಶಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ?</string>
<string name="ApplicationPreferencesActivity_error_connecting_to_server">ಸರ್ವರ್ಗೆ ಸಂಪರ್ಕಿಸುವಾಗ ದೋಷ!</string>
<string name="ApplicationPreferencesActivity_sms_enabled">ಎಸ್.ಎಮ್.ಎಸನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ</string>
<string name="ApplicationPreferencesActivity_touch_to_change_your_default_sms_app">ನಿಮ್ಮ ಪೂರ್ವನಿಯೋಜಿತ ಎಸ್.ಎಮ್.ಎಸ್ ಅಪ್ಲಿಕೇಶನ್ನು ಬದಲಾಯಿಸಲು ಸ್ಪರ್ಶಿಸಿ</string>
@@ -32,6 +35,7 @@
<!--AttchmentManager-->
<string name="AttachmentManager_cant_open_media_selection">ಈ ಮೀಡಿಯಾ ತೆರೆಯಲು ಸಾಮರ್ಥ್ಯವಿರುವ ಅಪ್ಲಿಕೇಶನ್ ಹುಡುಕಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ.</string>
<!--AttachmentTypeSelectorAdapter-->
<string name="AttachmentTypeSelectorAdapter_camera">ಕ್ಯಾಮೆರಾ</string>
<string name="AttachmentTypeSelectorAdapter_picture">ಚಿತ್ರ</string>
<string name="AttachmentTypeSelectorAdapter_video">ದೃಶ್ಯ</string>
<string name="AttachmentTypeSelectorAdapter_audio">ಶ್ರಾವ್ಯ</string>
@@ -41,7 +45,9 @@
<string name="ConfirmIdentityDialog_the_signature_on_this_key_exchange_is_different"> %1$sನ ಗುರುತಿಸುವ ಕೀಲಿಗಳು ಬದಲಾಗಿವೆ. ಇದರ ಆರ್ಥ ನಿಮ್ಮ ಸಂಭಾಷಣೆಯನ್ನು ಯಾರೊ ಕದ್ದು ಕೇಳಲು ಪ್ರಯತ್ನಿಸುತ್ತಿದ್ದಾರೆ ಅಥವ %2$s ಟೆಕ್ಸ್ಟ್ ಸೆಕ್ಯೂರನ್ನು ಮರು ಸ್ಥಾಪಿಸಿದ ಕಾರಣ ಹೋಗುರುತಿಸುವ ಕೀಲಿಗಳನ್ನು ಹೊಂದಿದ್ದಾರೆ.</string>
<string name="ConfirmIdentityDialog_you_may_wish_to_verify_this_contact">ನೀವು ಪರಿಶೀಲಿಸಲು ಇಚ್ಛಿಸಬಹುದಾದ ⏎
ಸಂಪರ್ಕ. ⏎</string>
<string name="ConfirmIdentityDialog_accept">ಒಪ್ಪಿಕೊಌ</string>
<!--ContactsDatabase-->
<string name="ContactsDatabase_message_s">ಸಂದೇಶ %s</string>
<!--ConversationItem-->
<string name="ConversationItem_message_size_d_kb">ಸಂದೇಶದ ಗಾತ್ರ: %d ಕೆ.ಬಿ</string>
<string name="ConversationItem_expires_s">ಮುಕ್ತಾಯದ ಅವಧಿ: %s</string>
@@ -126,6 +132,7 @@
<string name="CustomDefaultPreference_none">ಯಾವುದೂ ಇಲ್ಲ</string>
<!--DateUtils-->
<string name="DateUtils_now">ಈಗ</string>
<string name="DateUtils_minutes_ago">%d ನಿಮಿಷ</string>
<!--DeviceListActivity-->
<string name="DeviceListActivity_try_again">ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ</string>
<!--DeviceListItem-->
@@ -235,6 +242,8 @@
<string name="RatingManager_no_thanks">ಧನ್ಯವಾದಗಳು. ಸಧ್ಯಕ್ಕೆ ಇಲ್ಲ.</string>
<string name="RatingManager_later">ನಂತರ</string>
<!--RecipientPreferencesActivity-->
<string name="RecipientPreferenceActivity_enabled">ಸಕ್ರಿಯಗೊಳಿಸು</string>
<string name="RecipientPreferenceActivity_disabled">ನಿಷ್ಕ್ರಿಯಗೊಳಿಸು</string>
<!--RegistrationActivity-->
<string name="RegistrationActivity_connect_with_textsecure">ಟೆಕ್ಸ್ಟ್ ಸೆಕ್ಯೂರ್ ಜೋತೆಗೆ ಸಂಪರ್ಕ</string>
<string name="RegistrationActivity_select_your_country">ನಿಮ್ಮ ರಾಷ್ಟ್ರವನ್ನು ಆಯ್ಕೆಮಾಡಿ</string>
@@ -355,6 +364,7 @@
<string name="MessageNotifier_failed_to_deliver_message">ಸಂದೇಶ ತಲುಪಿಸಲು ವಿಫಲವಾಗಿದೆ.</string>
<string name="MessageNotifier_error_delivering_message">ಸಂದೇಶವನ್ನು ತಲುಪಿಸುವುದರಲ್ಲಿದೋಷ ಸಂಭವಿಸಿದೆ</string>
<string name="MessageNotifier_mark_all_as_read">ಎಲ್ಲವನ್ನು ಓದಿದೆ ಎಂದು ಗುರುತು ಮಾಡಿ</string>
<string name="MessageNotifier_mark_read">ಓದಿದೆ ಎಂದು ಗುರುತು ಮಾಡಿ</string>
<string name="MessageNotifier_media_message">ಬಹುಮಾಧ್ಯಮ ಸಂದೇಶ</string>
<!--QuickResponseService-->
<!--SingleRecipientNotificationBuilder-->
@@ -541,6 +551,8 @@
<!--arrays.xml-->
<string name="arrays__import_export">ಆಮದು / ರಫ್ತು</string>
<string name="arrays__my_identity_key">ನನ್ನ ಗುರುತಿನ ಕೀಲಿ</string>
<string name="arrays__enabled">ಸಕ್ರಿಯಗೊಳಿಸು</string>
<string name="arrays__disabled">ನಿಷ್ಕ್ರಿಯಗೊಳಿಸು</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="other">%d ಗಂಟೆಗಳು</item>

View File

@@ -370,6 +370,7 @@
<string name="KeyCachingService_passphrase_cached">TextSecure 잠금 해제 됨</string>
<string name="KeyCachingService_lock">암호로 잠금</string>
<!--MessageNotifier-->
<string name="MessageNotifier_d_new_messages_in_d_conversations">대화 %2$d개에 새 메시지 %1$d개</string>
<string name="MessageNotifier_most_recent_from_s">%1$s님에게서 최근 메시지</string>
<string name="MessageNotifier_locked_message">잠겨 있는 메시지</string>
<string name="MessageNotifier_media_message_with_text">미디어 메시지: %s</string>
@@ -385,6 +386,8 @@
<string name="QuickResponseService_quick_response_unavailable_when_TextSecure_is_locked">TextSecure 잠겨 있는 경우 빠른 응답 사용할 수 없음</string>
<string name="QuickResponseService_problem_sending_message">메시지 보내지 못함</string>
<!--SingleRecipientNotificationBuilder-->
<string name="SingleRecipientNotificationBuilder_new_textsecure_message">새 TextSecure 메시지</string>
<string name="SingleRecipientNotificationBuilder_contents_hidden">콘텐츠 숨겨짐</string>
<!--change_passphrase_activity-->
<string name="change_passphrase_activity__old_passphrase">기존 암호:</string>
<string name="change_passphrase_activity__new_passphrase">새 암호:</string>
@@ -570,6 +573,12 @@
<string name="arrays__settings_default">기본설정</string>
<string name="arrays__enabled">사용</string>
<string name="arrays__disabled">사용 안함</string>
<string name="arrays__name_and_message">이름과 메시지</string>
<string name="arrays__name_only">이름</string>
<string name="arrays__neither">이름이나 메시지 표시하지 않음</string>
<string name="arrays__images">이미지</string>
<string name="arrays__audio">오디오</string>
<string name="arrays__video">동영상</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="other">%d시간 전</item>
@@ -603,6 +612,7 @@
<string name="preferences__pref_timeout_interval_title">시간 초과 간격</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">메모리에서 암호 삭제되지 않는 기간</string>
<string name="preferences__notifications">알림</string>
<string name="preferences__enable_message_notifications">메시지 알림 사용</string>
<string name="preferences__led_color">알림등 색상</string>
<string name="preferences__led_color_unknown">알 수 없음</string>
<string name="preferences__pref_led_blink_title">알림등 반복 패턴</string>
@@ -652,6 +662,7 @@
<string name="preferences__request_a_delivery_report_for_each_sms_message_you_send">SMS 메시지 보낼 때마다 전송 확인 요청</string>
<string name="preferences__automatically_delete_older_messages_once_a_conversation_thread_exceeds_a_specified_length">대화 메시지 저장한도가 초과되면 이전 메시지 자동 삭제</string>
<string name="preferences__delete_old_messages">이전 메시지 삭제</string>
<string name="preferences__chats">대화 및 미디어</string>
<string name="preferences__conversation_length_limit">대화 메시지 저장한도</string>
<string name="preferences__trim_all_threads_now">모든 대화 줄이기</string>
<string name="preferences__scan_through_all_conversation_threads_and_enforce_conversation_length_limits">모든 대화에 메시지 저장한도 적용</string>
@@ -669,6 +680,7 @@
<string name="preferences__support_wifi_calling">\'Wi-Fi 통화\' 호환 모드</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">\'Wi-Fi 통화\' 사용 과 SMS/MMS Wi-Fi로 전송 설정되면 사용</string>
<string name="preferences_app_protection__blocked_contacts">차단된 사용자</string>
<string name="preferences_notifications__display_in_notifications">알림에 표시</string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->

View File

@@ -385,6 +385,7 @@ Bericht ontvangen met een onbekende identiteitssleutel. Klik om te verwerken en
<string name="KeyCachingService_passphrase_cached">TextSecure is ontgrendeld</string>
<string name="KeyCachingService_lock">Vergrendelen met wachtwoord</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>
<string name="MessageNotifier_locked_message">Vergrendeld bericht...</string>
<string name="MessageNotifier_media_message_with_text">Mediabericht: %s</string>
@@ -400,6 +401,8 @@ Bericht ontvangen met een onbekende identiteitssleutel. Klik om te verwerken en
<string name="QuickResponseService_quick_response_unavailable_when_TextSecure_is_locked">Snel reageren niet beschikbaar als TextSecure vergrendeld is!</string>
<string name="QuickResponseService_problem_sending_message">Fout bij het bericht versturen!</string>
<!--SingleRecipientNotificationBuilder-->
<string name="SingleRecipientNotificationBuilder_new_textsecure_message">Nieuw TextSecuer bericht</string>
<string name="SingleRecipientNotificationBuilder_contents_hidden">Inhoud verborgen</string>
<!--change_passphrase_activity-->
<string name="change_passphrase_activity__old_passphrase">Oud wachtwoord:</string>
<string name="change_passphrase_activity__new_passphrase">Nieuw wachtwoord:</string>
@@ -608,6 +611,12 @@ TextSecure heeft te lang moeten wachten op het binnenkomen van de verificatie-SM
<string name="arrays__settings_default">Standaardinstellingen</string>
<string name="arrays__enabled">Ingeschakeld</string>
<string name="arrays__disabled">Uitgeschakeld</string>
<string name="arrays__name_and_message">Naam en bericht</string>
<string name="arrays__name_only">Alleen naam</string>
<string name="arrays__neither">Geen van alle</string>
<string name="arrays__images">Afbeeldingen</string>
<string name="arrays__audio">Geluid</string>
<string name="arrays__video">Video</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="one">%d uur</item>
@@ -642,6 +651,7 @@ TextSecure heeft te lang moeten wachten op het binnenkomen van de verificatie-SM
<string name="preferences__pref_timeout_interval_title">Time-out interval</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">Hoe lang te wachten voor het vergeten van het wachtwoord uit het geheugen</string>
<string name="preferences__notifications">Notificaties</string>
<string name="preferences__enable_message_notifications">Toon bericht notificaties</string>
<string name="preferences__led_color">LED-kleur</string>
<string name="preferences__led_color_unknown">Onbekend</string>
<string name="preferences__pref_led_blink_title">LED-knipperpatroon</string>
@@ -691,6 +701,7 @@ TextSecure heeft te lang moeten wachten op het binnenkomen van de verificatie-SM
<string name="preferences__request_a_delivery_report_for_each_sms_message_you_send">Verzoeken om een ontvangstbevestiging voor ieder verzonden SMS bericht</string>
<string name="preferences__automatically_delete_older_messages_once_a_conversation_thread_exceeds_a_specified_length">Automatisch oudere berichten verwijderen wanneer een gesprek meer dan een bepaald aantal berichten bevat</string>
<string name="preferences__delete_old_messages">Verwijder oude berichten</string>
<string name="preferences__chats">Gesprekken en media</string>
<string name="preferences__conversation_length_limit">Gesprekslengte limiet</string>
<string name="preferences__trim_all_threads_now">Oude berichten nu verwijderen</string>
<string name="preferences__scan_through_all_conversation_threads_and_enforce_conversation_length_limits">Alle gesprekken scannen en de maximale gesprekslengte toepassen</string>
@@ -710,6 +721,7 @@ TextSecure heeft te lang moeten wachten op het binnenkomen van de verificatie-SM
<string name="preferences__support_wifi_calling">\'Bellen via WiFi\' compatibiliteitsmodus</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">Inschakelen als je toestel SMS/MMS over WiFi gebruikt (alleen inschakelen als \'WiFi Bellen\' is ingeschakeld op je toestel)</string>
<string name="preferences_app_protection__blocked_contacts">Geblokkeerde contacten</string>
<string name="preferences_notifications__display_in_notifications">Toon in notificaties</string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->

View File

@@ -384,6 +384,7 @@ Mottatt melding med ukjent ID nøkkel. Klikk for å prosessere og vise.</string>
<string name="KeyCachingService_passphrase_cached">TextSecure er ulåst</string>
<string name="KeyCachingService_lock">Lås med passord</string>
<!--MessageNotifier-->
<string name="MessageNotifier_d_new_messages_in_d_conversations">%1$d nye meldinger i %2$d samtaler</string>
<string name="MessageNotifier_most_recent_from_s">Nyeste fra: %1$s</string>
<string name="MessageNotifier_locked_message">Låst melding...</string>
<string name="MessageNotifier_media_message_with_text">Media melding: %s</string>
@@ -399,6 +400,8 @@ Mottatt melding med ukjent ID nøkkel. Klikk for å prosessere og vise.</string>
<string name="QuickResponseService_quick_response_unavailable_when_TextSecure_is_locked">Rask tilbakemelding ikke tilgjengelig når TextSecure er låst!</string>
<string name="QuickResponseService_problem_sending_message">Kunne ikke sende melding!</string>
<!--SingleRecipientNotificationBuilder-->
<string name="SingleRecipientNotificationBuilder_new_textsecure_message">Ny TextSecure melding</string>
<string name="SingleRecipientNotificationBuilder_contents_hidden">Innhold skjult</string>
<!--change_passphrase_activity-->
<string name="change_passphrase_activity__old_passphrase">Gammelt passord:</string>
<string name="change_passphrase_activity__new_passphrase">Nytt passord:</string>
@@ -602,6 +605,12 @@ feilet.</string>
<string name="arrays__settings_default">Standardinstillinger</string>
<string name="arrays__enabled">Aktivert</string>
<string name="arrays__disabled">Deaktivert</string>
<string name="arrays__name_and_message">Navn og melding</string>
<string name="arrays__name_only">Kun navn</string>
<string name="arrays__neither">Ingen</string>
<string name="arrays__images">Bilder</string>
<string name="arrays__audio">Lyd</string>
<string name="arrays__video">Video</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="one">%d time</item>
@@ -636,6 +645,7 @@ feilet.</string>
<string name="preferences__pref_timeout_interval_title">Timeoutintervall</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">Tiden det skal gå før passordet slettes fra minnet på enheten</string>
<string name="preferences__notifications">Varsling</string>
<string name="preferences__enable_message_notifications">Aktiver meldingsvarling</string>
<string name="preferences__led_color">LED farge</string>
<string name="preferences__led_color_unknown">Ukjent</string>
<string name="preferences__pref_led_blink_title">LED blinkemønster</string>
@@ -685,6 +695,7 @@ feilet.</string>
<string name="preferences__request_a_delivery_report_for_each_sms_message_you_send">Be om en leveringsrapport for hver SMS-melding du sender</string>
<string name="preferences__automatically_delete_older_messages_once_a_conversation_thread_exceeds_a_specified_length">Slett eldre meldinger automatisk når en samtaletråd overskrider en spesifisert lengde</string>
<string name="preferences__delete_old_messages">Slett gamle meldinger</string>
<string name="preferences__chats">Samtaler og media</string>
<string name="preferences__conversation_length_limit">Grense på samtalelengde</string>
<string name="preferences__trim_all_threads_now">Trimme alle samtaletråder nå</string>
<string name="preferences__scan_through_all_conversation_threads_and_enforce_conversation_length_limits">Gjennomgå alle samtaletrådene og håndhev grensen på samtalelengde </string>
@@ -704,6 +715,7 @@ Gratis og private meldinger til TextSecure- og Signal-brukere
<string name="preferences__support_wifi_calling">\'WiFi anrop\' kompatibilititetsmodus</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">Aktiver dersom enheten din bruker WiFi for å sende SMS/MMS (brukes bare hvis \'WiFi anrop\' er aktivert på enheten din)</string>
<string name="preferences_app_protection__blocked_contacts">Blokkerte kontakter</string>
<string name="preferences_notifications__display_in_notifications">Vis i varslingslisten</string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->

View File

@@ -387,6 +387,7 @@ Otrzymano wiadomość z nieznanym kluczem tożsamości. Kliknij aby przetworzyć
<string name="KeyCachingService_passphrase_cached">TextSecure jest odblokowany</string>
<string name="KeyCachingService_lock">Zablokuj hasłem</string>
<!--MessageNotifier-->
<string name="MessageNotifier_d_new_messages_in_d_conversations">%1$d nowych wiadomości w %2$d rozmowach</string>
<string name="MessageNotifier_most_recent_from_s">Najnowsza z: %1$s</string>
<string name="MessageNotifier_locked_message">Wiadomość zablokowana...</string>
<string name="MessageNotifier_media_message_with_text">Wiadomość multimedialna: %s</string>
@@ -402,6 +403,8 @@ Otrzymano wiadomość z nieznanym kluczem tożsamości. Kliknij aby przetworzyć
<string name="QuickResponseService_quick_response_unavailable_when_TextSecure_is_locked">Szybka odpowiedź jest niedostępna kiedy TextSecure jest zablokowany!</string>
<string name="QuickResponseService_problem_sending_message">Wystąpił błąd przy wysyłaniu wiadomości!</string>
<!--SingleRecipientNotificationBuilder-->
<string name="SingleRecipientNotificationBuilder_new_textsecure_message">Nowa wiadomość TextSecure</string>
<string name="SingleRecipientNotificationBuilder_contents_hidden">Zawartość ukryta</string>
<!--change_passphrase_activity-->
<string name="change_passphrase_activity__old_passphrase">STARE HASŁO:</string>
<string name="change_passphrase_activity__new_passphrase">NOWE HASŁO:</string>
@@ -601,6 +604,12 @@ Upłynął czas oczekiwania na wiadomość weryfikacyjną SMS.</string>
<string name="arrays__settings_default">Ustawienia domyślne</string>
<string name="arrays__enabled">Włączone</string>
<string name="arrays__disabled">Wyłączone</string>
<string name="arrays__name_and_message">Imię i wiadomość</string>
<string name="arrays__name_only">Tylko imie</string>
<string name="arrays__neither">Żadne</string>
<string name="arrays__images">Obrazy</string>
<string name="arrays__audio">Audio</string>
<string name="arrays__video">Wideo</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="one">%d godzina</item>
@@ -636,6 +645,7 @@ Upłynął czas oczekiwania na wiadomość weryfikacyjną SMS.</string>
<string name="preferences__pref_timeout_interval_title">Wybierz czas wygaśnięcia hasła</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">Ilość czasu zanim hasło zostanie wymazane z pamięci urządzenia</string>
<string name="preferences__notifications">Powiadomienia</string>
<string name="preferences__enable_message_notifications">Włącz powiadomienia wiadomości</string>
<string name="preferences__led_color">Kolor LED</string>
<string name="preferences__led_color_unknown">Nieznane</string>
<string name="preferences__pref_led_blink_title">Wzór powiadomień LED</string>
@@ -685,6 +695,7 @@ Upłynął czas oczekiwania na wiadomość weryfikacyjną SMS.</string>
<string name="preferences__request_a_delivery_report_for_each_sms_message_you_send">Żądaj raportu dostarczenia każdej wysłanej wiadomości SMS</string>
<string name="preferences__automatically_delete_older_messages_once_a_conversation_thread_exceeds_a_specified_length">Automatycznie usuń starsze wiadomości po przekroczeniu określonej długości wątku</string>
<string name="preferences__delete_old_messages">Usuń stare wiadomości</string>
<string name="preferences__chats">Czaty i media</string>
<string name="preferences__conversation_length_limit">Limit długości konwersacji</string>
<string name="preferences__trim_all_threads_now">Przytnij wszystkie wątki</string>
<string name="preferences__scan_through_all_conversation_threads_and_enforce_conversation_length_limits">Skanuj wszystkie rozmowy i przytnij do zdefiniowanej długości</string>
@@ -703,6 +714,7 @@ Darmowe i prywatne wiadomości do użytkowników TextSecure i Signal</string>
<string name="preferences__support_wifi_calling">Tryb zgodności \'WiFi Calling\'</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">Włącz jeśli Twoje urządzenie używa dostarczania SMS/MMS przez WiFi (włącz tylko wtedy gdy \'Połączenia WiFi\' jest włączone na Twoim urządzeniu)</string>
<string name="preferences_app_protection__blocked_contacts">Zablokowane kontakty</string>
<string name="preferences_notifications__display_in_notifications">Pokaż w powiadomieniach</string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->

View File

@@ -414,6 +414,7 @@ Tem certeza que deseja fazer isto?</string>
<string name="KeyCachingService_passphrase_cached">TextSecure está destrancado</string>
<string name="KeyCachingService_lock">Trancar com frase-chave</string>
<!--MessageNotifier-->
<string name="MessageNotifier_d_new_messages_in_d_conversations">%1$d mensagens novas em %2$d conversas</string>
<string name="MessageNotifier_most_recent_from_s">Mais recente de: %1$s</string>
<string name="MessageNotifier_locked_message">Mensagem trancada...</string>
<string name="MessageNotifier_media_message_with_text">Mensagem multimídia: %s</string>
@@ -429,6 +430,8 @@ Tem certeza que deseja fazer isto?</string>
<string name="QuickResponseService_quick_response_unavailable_when_TextSecure_is_locked">Responder rápido não está disponível quando o TextSecure está travado!</string>
<string name="QuickResponseService_problem_sending_message">Problema ao enviar mensagem!</string>
<!--SingleRecipientNotificationBuilder-->
<string name="SingleRecipientNotificationBuilder_new_textsecure_message">Nova mensagem TextSecure</string>
<string name="SingleRecipientNotificationBuilder_contents_hidden">Conteúdo escondido</string>
<!--change_passphrase_activity-->
<string name="change_passphrase_activity__old_passphrase">Frase-chave anterior:</string>
<string name="change_passphrase_activity__new_passphrase">Frase-chave nova:</string>
@@ -655,6 +658,9 @@ falhou.</string>
<string name="arrays__settings_default">Padrão de configurações</string>
<string name="arrays__enabled">Habilitado</string>
<string name="arrays__disabled">Desabilitado</string>
<string name="arrays__name_and_message">Nome e mensagem</string>
<string name="arrays__name_only">Apenas nome</string>
<string name="arrays__neither">Nenhum</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="one">%d hora</item>
@@ -689,6 +695,7 @@ falhou.</string>
<string name="preferences__pref_timeout_interval_title">Intervalo de expiração</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">Tempo a esperar antes de remover a frase-chave da memória</string>
<string name="preferences__notifications">Notificações</string>
<string name="preferences__enable_message_notifications">Habilitar notificações de mensagem</string>
<string name="preferences__led_color">Cor do LED</string>
<string name="preferences__led_color_unknown">Desconhecida</string>
<string name="preferences__pref_led_blink_title">Padrão de piscagem do LED</string>
@@ -757,6 +764,7 @@ falhou.</string>
<string name="preferences__support_wifi_calling">Modo de compatibilidade \'WiFi Calling\'</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">Habilite se o seu dispositivo usa entrega de SMS/MMS via WiFi (somente habilite quando \'WiFi Calling\' estiver habilitado no seu dispositivo)</string>
<string name="preferences_app_protection__blocked_contacts">Contatos bloqueados</string>
<string name="preferences_notifications__display_in_notifications">Exibir em notificações</string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->

View File

@@ -150,11 +150,16 @@ que %2$s reinstalou TextSecure e tem agora uma nova chave de identidade.
<string name="DateUtils_now">Agora</string>
<string name="DateUtils_minutes_ago">%d min</string>
<!--DeviceListActivity-->
<string name="DeviceListActivity_unlink_s">Desinterligar \'%s\'?</string>
<string name="DeviceListActivity_by_unlinking_this_device_it_will_no_longer_be_able_to_send_or_receive">Ao desinterligar este dispositivo, vai deixar de enviar ou receber mensagens.</string>
<string name="DeviceListActivity_network_connection_failed">A ligação à rede falhou!</string>
<string name="DeviceListActivity_try_again">Tente novamente</string>
<string name="DeviceListActivity_unlinking_device">A desinterligar dispositivo...</string>
<string name="DeviceListActivity_unlinking_device_no_ellipsis">A desinterligar dispositivo</string>
<string name="DeviceListActivity_network_failed">A rede falhou!</string>
<!--DeviceListItem-->
<string name="DeviceListItem_unnamed_device">Dispositivo sem nome</string>
<string name="DeviceListItem_linked_s">Interligado %s</string>
<string name="DeviceListItem_last_active_s">Activo pela última vez %s</string>
<!--ShareActivity-->
<string name="ShareActivity_share_with">Partilhar com</string>
@@ -252,9 +257,13 @@ importá-lo novamente resultará em mensagens duplicadas.</string>
- Ler todas as suas mensagens
\n- Enviar mensagens em seu nome
</string>
<string name="DeviceProvisioningActivity_content_progress_title">A interligar dispositivo</string>
<string name="DeviceProvisioningActivity_content_progress_content">A interligar um novo dispositivo...</string>
<string name="DeviceProvisioningActivity_content_progress_success">Dispositivo interligado!</string>
<string name="DeviceProvisioningActivity_content_progress_no_device">Nenhum dispositivo encontrado.</string>
<string name="DeviceProvisioningActivity_content_progress_network_error">Erro de rede.</string>
<string name="DeviceProvisioningActivity_content_progress_key_error">Código QR inválido.</string>
<string name="DeviceProvisioningActivity_sorry_you_have_too_many_devices_linked_already">Lamentamos mas tem demasiados dispositivos interligados, tente remover alguns...</string>
<!--PassphrasePromptActivity-->
<string name="PassphrasePromptActivity_enter_passphrase">Introduza palavra-chave</string>
<string name="PassphrasePromptActivity_watermark_content_description">Icon TextSecure</string>
@@ -394,6 +403,7 @@ Recebida mensagem com chave de identidade desconhecida. Clique para processar e
<string name="KeyCachingService_passphrase_cached">O TextSecure está desbloqueado</string>
<string name="KeyCachingService_lock">Bloquear com frase-chave</string>
<!--MessageNotifier-->
<string name="MessageNotifier_d_new_messages_in_d_conversations">%1$d novas mensagens em %2$d conversas</string>
<string name="MessageNotifier_most_recent_from_s">Mais recente de: %1$s</string>
<string name="MessageNotifier_locked_message">Mensagem bloqueada...</string>
<string name="MessageNotifier_media_message_with_text">Mensagem media: %s</string>
@@ -409,6 +419,8 @@ Recebida mensagem com chave de identidade desconhecida. Clique para processar e
<string name="QuickResponseService_quick_response_unavailable_when_TextSecure_is_locked">A resposta rápida encontra-se indisponível quando o TextSecure está bloqueado!</string>
<string name="QuickResponseService_problem_sending_message">Problema no envio da mensagem!</string>
<!--SingleRecipientNotificationBuilder-->
<string name="SingleRecipientNotificationBuilder_new_textsecure_message">Nova mensagem TextSecure</string>
<string name="SingleRecipientNotificationBuilder_contents_hidden">Conteúdos escondidos</string>
<!--change_passphrase_activity-->
<string name="change_passphrase_activity__old_passphrase">Frase-chave anterior:</string>
<string name="change_passphrase_activity__new_passphrase">Frase-chave nova:</string>
@@ -460,6 +472,7 @@ Recebida mensagem com chave de identidade desconhecida. Clique para processar e
<string name="country_selection_fragment__loading_countries">A carregar lista de países...</string>
<string name="country_selection_fragment__search">Procurar</string>
<!--device_list_fragment-->
<string name="device_list_fragment__no_devices_linked">Nenhum dispositivo interligado...</string>
<!--log_submit_activity-->
<string name="log_submit_activity__log_fetch_failed">Não foi possível obter os registos do seu dispositivo. Alternativamente, pode utilizar o ADB para os obter.</string>
<string name="log_submit_activity__thanks">Obrigado pela sua ajuda!</string>
@@ -612,6 +625,7 @@ falhou.
<string name="AndroidManifest__media_overview">Todas as imagens</string>
<string name="AndroidManifest__media_overview_named">Todas as imagens com %1$s</string>
<string name="AndroidManifest__message_details">Detalhes da mensagem</string>
<string name="AndroidManifest_manage_linked_devices">Gerir dispositivos interligados</string>
<!--arrays.xml-->
<string name="arrays__import_export">Importar / Exportar</string>
<string name="arrays__my_identity_key">A minha chave de identidade</string>
@@ -624,6 +638,9 @@ falhou.
<string name="arrays__settings_default">Configurações por omissão</string>
<string name="arrays__enabled">Activo</string>
<string name="arrays__disabled">Desactivado</string>
<string name="arrays__name_and_message">Nome e mensagem</string>
<string name="arrays__name_only">Apenas o nome</string>
<string name="arrays__neither">Nenhum</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="one">%d hora</item>
@@ -658,6 +675,7 @@ falhou.
<string name="preferences__pref_timeout_interval_title">Intervalo de expiração</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">Tempo a esperar antes de remover a frase-chave da memória</string>
<string name="preferences__notifications">Notificações</string>
<string name="preferences__enable_message_notifications">Activar notificações de mensagens</string>
<string name="preferences__led_color">Cor do LED</string>
<string name="preferences__led_color_unknown">Desconhecido</string>
<string name="preferences__pref_led_blink_title">Padrão de piscar do LED</string>
@@ -726,6 +744,7 @@ Mensagens privadas gratuítas para utilizadores TextSecure e Signal
<string name="preferences__support_wifi_calling">Modo de compatibilidade \"Chamada WiFi\"</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">Active se o seu dispositivo utiliza entrega de SMS/MMS sobre WiFi (apenas active se \'WiFi Calling\' está activo neste dispositivo)</string>
<string name="preferences_app_protection__blocked_contacts">Contactos bloqueados</string>
<string name="preferences_notifications__display_in_notifications">Apresentar nas notificações</string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->

View File

@@ -605,6 +605,9 @@ bila uspešna.</string>
<string name="arrays__name_and_message">Pošiljatelj in sporočilo</string>
<string name="arrays__name_only">Samo pošiljatelj</string>
<string name="arrays__neither">Brez</string>
<string name="arrays__images">Slike</string>
<string name="arrays__audio">Zvok</string>
<string name="arrays__video">Video</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="one">%d ura</item>
@@ -691,6 +694,7 @@ bila uspešna.</string>
<string name="preferences__request_a_delivery_report_for_each_sms_message_you_send">Zahtevaj potrdilo o dostavi za vsako poslano sporočilo SMS</string>
<string name="preferences__automatically_delete_older_messages_once_a_conversation_thread_exceeds_a_specified_length">Samodejen izbris starih sporočil, ko pogovor preseže določeno dolžino</string>
<string name="preferences__delete_old_messages">Izbris starih sporočil</string>
<string name="preferences__chats">Pogovori in multimedija</string>
<string name="preferences__conversation_length_limit">Omejitev dolžine pogovorov</string>
<string name="preferences__trim_all_threads_now">Obreži vse pogovore zdaj</string>
<string name="preferences__scan_through_all_conversation_threads_and_enforce_conversation_length_limits">Preišči vse pogovore in uveljavi omejitve njihove dolžine</string>

835
res/values-sn/strings.xml Normal file
View File

@@ -0,0 +1,835 @@
<?xml version='1.0' encoding='UTF-8'?>
<resources>
<string name="app_name">TextSecure</string>
<string name="yes">Hongu</string>
<string name="no">Kwete</string>
<string name="delete">Dzimura</string>
<string name="please_wait">Tinokumbira umire kanguva....</string>
<!--ApplicationPreferencesActivity-->
<string name="ApplicationPreferencesActivity_currently_s">Parizvino: %s</string>
<string name="ApplicationPreferenceActivity_you_havent_set_a_passphrase_yet">Hausati wagadzira izwi rekudarika!</string>
<string name="ApplicationPreferencesActivity_messages_per_conversation">%s tsamba pahutaurwa</string>
<string name="ApplicationPreferencesActivity_delete_all_old_messages_now">Dzimura tsamba dzekare izvozvi?</string>
<string name="ApplicationPreferencesActivity_are_you_sure_you_would_like_to_immediately_trim_all_conversation_threads_to_the_s_most_recent_messages">Unechokwadi kuti unoda kudimbura shinda dzehutaurwa dzese kusvika pa %s dzetsamba dzamanje here?</string>
<string name="ApplicationPreferencesActivity_delete">Dzimura </string>
<string name="ApplicationPreferencesActivity_disable_passphrase">Tadzisa izwi rekudarika?</string>
<string name="ApplicationPreferencesActivity_disable_lock_screen">
Tadzisa kuvhara chivhitivhiti chetsamba?
</string>
<string name="ApplicationPreferencesActivity_disable">Tadzisa</string>
<string name="ApplicationPreferencesActivity_unregistering">Kubvisa kunyoresa</string>
<string name="ApplicationPreferencesActivity_unregistering_from_textsecure_messages">Kubvisa kunyoresa kubva patsamba dzeTextSecure....</string>
<string name="ApplicationPreferencesActivity_disable_textsecure_messages">Tadzisa tsamba dzeTextSecure here?</string>
<string name="ApplicationPreferencesActivity_this_will_disable_textsecure_messages">
Izvi zvichatadzisa tsamba dzeTextSecure nekubvisa kunyoreswa kwako kubva pasevha.
Uchada kuti unyorese zvakare svumbunuro dzembozha runhare rwako kuti ushandise tsamba TextSecure zvakare muneramangwana.</string>
<string name="ApplicationPreferencesActivity_error_connecting_to_server">Kanganiso pakukochekera kusevha!</string>
<string name="ApplicationPreferencesActivity_sms_enabled">Tsamba pfupi dzagoneswa</string>
<string name="ApplicationPreferencesActivity_touch_to_change_your_default_sms_app">Bata kuti ushandure hurongwa hwe apu dzetsamba pfupi</string>
<string name="ApplicationPreferencesActivity_sms_disabled">Tsamba pfupi dzatadziswa</string>
<string name="ApplicationPreferencesActivity_touch_to_make_textsecure_your_default_sms_app">Bata kuti TextSecure ive iri apu yako yehurongwa hwetsamba pfupi</string>
<string name="ApplicationPreferencesActivity_on">batidza</string>
<string name="ApplicationPreferencesActivity_On">Kubatira</string>
<string name="ApplicationPreferencesActivity_off">dzimwa</string>
<string name="ApplicationPreferencesActivity_Off">Dzimwa</string>
<string name="ApplicationPreferencesActivity_sms_mms_summary">Tsamba pfupi %1$s, Tsamba ine midhiya %2$s</string>
<!--AppProtectionPreferenceFragment-->
<string name="AppProtectionPreferenceFragment_minutes">maminiti %d</string>
<!--DraftDatabase-->
<string name="DraftDatabase_Draft_image_snippet">(mufananidzo)</string>
<string name="DraftDatabase_Draft_audio_snippet">(izwi)</string>
<string name="DraftDatabase_Draft_video_snippet">(vhidhiyo)</string>
<!--AttchmentManager-->
<string name="AttachmentManager_cant_open_media_selection">Hatisi kukwanisa kuwana apu yekusarudza midhiya.</string>
<!--AttachmentTypeSelectorAdapter-->
<string name="AttachmentTypeSelectorAdapter_camera">Kamera</string>
<string name="AttachmentTypeSelectorAdapter_picture">Mufananidzo</string>
<string name="AttachmentTypeSelectorAdapter_video">Vhidhiyo</string>
<string name="AttachmentTypeSelectorAdapter_audio">Izwi</string>
<string name="AttachmentTypeSelectorAdapter_contact">Mashoko ezita</string>
<!--BlockedContactsActivity-->
<string name="BlockedContactsActivity_blocked_contacts">Mazita akadzivirirwa</string>
<!--ConfirmIdentityDialog-->
<string name="ConfirmIdentityDialog_the_signature_on_this_key_exchange_is_different">Chitupa
chesvumbunuro yekutsvagisa mashoko %1$s yashanduka. Izvi zvinogona kureva kuti pane umwe munhu arikuedza
kumisa hutaurwa hwako, kana kuti %2$s yavakirira TextSecure zvakare uye ikezvino yava
nesvumbunuro dzechitupa itsva.</string>
<string name="ConfirmIdentityDialog_you_may_wish_to_verify_this_contact">Unogona kuda kuongorora kururama
kwezita iri.</string>
<string name="ConfirmIdentityDialog_accept">Bvuma</string>
<!--ContactsDatabase-->
<string name="ContactsDatabase_message_s">Tsamba %s</string>
<!--ConversationItem-->
<string name="ConversationItem_message_size_d_kb">Hukuru hwetsamba: %d KB</string>
<string name="ConversationItem_expires_s">Inopfurikidza: %s</string>
<string name="ConversationItem_error_not_delivered">Haina kusvitswa</string>
<string name="ConversationItem_view_secure_media_question">Wowona midhiya yakakwedekerwa?</string>
<string name="ConversationItem_this_media_has_been_stored_in_an_encrypted_database_external_viewer_warning">Midhiya iyi yakachengetedzwa mupfimbi yedhata yakakwedekerwa. Zvisinei, kuti uione nechioneso chemashoko chekunze parizvino zvinoda kuti dhata rimbobviswa kukwedekerwa kwenguva pfupi uye rinyorerwe padhisiki. Unechokwadi chekuti unoda kuita izvi here?</string>
<string name="ConversationItem_error_received_stale_key_exchange_message">Kanganiso, tsamba yekutsinhana kwesvumbunuro iyi yave yekare.</string>
<string name="ConversationItem_received_key_exchange_message_click_to_process">Tatambira tsamba yekutsinhana svumbunuro, baya kuti ipinde mushishi.</string>
<string name="ConversationItem_group_action_left">%1$s abuda muboka.</string>
<string name="ConversationItem_click_for_details">Bata kuti uwone zvizere</string>
<string name="ConversationItem_click_to_approve_unencrypted">Bata kuti zvisina kuchengetedzwa zvidzoke </string>
<string name="ConversationItem_click_to_approve_unencrypted_sms_dialog_title">Dzokera kutsamba isina kukwedekerwa? </string>
<string name="ConversationItem_click_to_approve_unencrypted_mms_dialog_title">Dzokera kutsamba dzemidhiya isina kukwedekerwa? </string>
<string name="ConversationItem_click_to_approve_unencrypted_dialog_message">Tsamba iyi<b>haikwanise</b> kukwedekerwa nekuda kwekuti anotambira haasisiri mushandisi weTextSecure.\n\nTotumira tsamba isina kukwedekerwa?</string>
<string name="ConversationItem_unable_to_open_media">Hatisi kukwanisa kuwana apu inokwanisa kuvhura midhiya iyi.</string>
<!--ConversationActivity-->
<string name="ConversationActivity_initiate_secure_session_question">Totangisa chikamu chakakwedekerwa?</string>
<string name="ConversationActivity_initiate_secure_session_with_s_question">Totangisa chikamu chakakwedekerwa na %s?</string>
<string name="ConversationActivity_abort_secure_session_confirmation">Kutsinhira kuti chikamu chakakwedekerwa chivharwe</string>
<string name="ConversationActivity_are_you_sure_that_you_want_to_abort_this_secure_session_question">Unechokwadi here kuti unoda kuvhara chikamu chakakwedekerwa?</string>
<string name="ConversationActivity_delete_thread_confirmation">Kutsinhira kuti shinda idzimurwe</string>
<string name="ConversationActivity_are_you_sure_that_you_want_to_permanently_delete_this_conversation_question">Unechokwadi here kuti unoda kudzimura hutaurwa uwu zvamuchose?</string>
<string name="ConversationActivity_add_attachment">Kuwedzera batanidzwa</string>
<string name="ConversationActivity_select_contact_info">Sarudza mashoko ezita</string>
<string name="ConversationActivity_compose_message">Nyora shoko</string>
<string name="ConversationActivity_sorry_there_was_an_error_setting_your_attachment">Ruregerero, paita kanganiso pakugadzira batanidzwa yako.</string>
<string name="ConversationActivity_the_gif_you_selected_was_too_big">Butiro re\"gif\" rasarudzwa iri rakakurisa!</string>
<string name="ConversationActivity_sorry_the_selected_video_exceeds_message_size_restrictions">Ruregerero, vhidhiyo yasarudzwa inodarika hukuru hwetsamba inobvumirwa (%1$skB).</string>
<string name="ConversationActivity_sorry_the_selected_audio_exceeds_message_size_restrictions">Ruregerero, izwi rasarudzwa rinodarika hukuru hwetsamba inobvumirwa (%1$skB).</string>
<string name="ConversationActivity_recipient_is_not_a_valid_sms_or_email_address_exclamation">Anotambira haana kero yetsamba pfupi kana tsambambozha inoshanda!</string>
<string name="ConversationActivity_message_is_empty_exclamation">Tsamba haina zvirimo!</string>
<string name="ConversationActivity_group_members">Nhengo dzemuboka</string>
<string name="ConversationActivity_group_conversation">Hutaurwa hwemuboka</string>
<string name="ConversationActivity_unnamed_group">Boka risina zita</string>
<string name="ConversationActivity_d_recipients_in_group">Nhengo %d</string>
<string name="ConversationActivity_d_recipients_in_group_singular">Nhengo imwe chete</string>
<string name="ConversationActivity_saved_draft">Chirongwa chakachengetedzwa</string>
<string name="ConversationActivity_invalid_recipient">Mugamuchiri asinei! </string>
<string name="ConversationActivity_calls_not_supported">Kuchaya runhare hakutsigirwe</string>
<string name="ConversationActivity_this_device_does_not_appear_to_support_dial_actions">Muchina uyu hauwoneke uchitsigira sarudzo yekuchaya.</string>
<string name="ConversationActivity_leave_group">Buda muboka?</string>
<string name="ConversationActivity_are_you_sure_you_want_to_leave_this_group">Unechokwadi kuti unoda kubuda muboka iri?</string>
<string name="ConversationActivity_transport_insecure_sms">Tsampa pfupi isina kukwedekerwa</string>
<string name="ConversationActivity_transport_insecure_mms">Tsamba ine midhiya isina kukwedekerwa</string>
<string name="ConversationActivity_transport_textsecure">TextSecure</string>
<string name="ConversationActivity_get_with_it">Tora nayo: %s</string>
<string name="ConversationActivity_lets_use_this_to_chat">Ngatishandisei nzira iyi kuti titaure: %s</string>
<string name="ConversationActivity_error_leaving_group">Kanganiso pakubuda muboka...</string>
<string name="ConversationActivity_mms_not_supported_title">Tsamba dzine midhiya hadzitsigirwe</string>
<string name="ConversationActivity_mms_not_supported_message">Tsamba iyi haikwanise kutumirwa nemhaka yekuti mutakuri wako haatsigire tsamba dzine midhiya.</string>
<string name="ConversationActivity_specify_recipient">Tinokumbira kuti usarudze zita</string>
<string name="ConversationActivity_unblock_question">Bvisa dziviriro?</string>
<string name="ConversationActivity_are_you_sure_you_want_to_unblock_this_contact">Unechokwadi kuti unoda kubvisa dziviriro pane zita iri?</string>
<string name="ConversationActivity_unblock">Bvisa dziviriro</string>
<!--ConversationFragment-->
<string name="ConversationFragment_message_details">Shoko zvizere</string>
<string name="ConversationFragment_transport_s_sent_received_s">Fambisa: %1$s\nYatumirwa/Yagamuchirwa: %2$s</string>
<string name="ConversationFragment_sender_s_transport_s_sent_s_received_s">Mutumiri: %1$s\nFambisa: %2$s\nYatumirwa: %3$s\nYagamuchirwa: %4$s</string>
<string name="ConversationFragment_confirm_message_delete">Tsinhira shoko zvizere </string>
<string name="ConversationFragment_are_you_sure_you_want_to_permanently_delete_all_selected_messages">Unechokwadi here kuti unoda kudzimura tsamba dzese dzasarudzwa zvamuchose?</string>
<string name="ConversationFragment_save_to_sd_card">Chengetedza ku pfimbi </string>
<string name="ConversationFragment_this_media_has_been_stored_in_an_encrypted_database_warning">Kuchengetedza midhiya iyi kupfimbi kuchabvumira mamwe maapu aripa runhare rwako kuti ave nehupindwa pairi.\n\nEnderera?</string>
<string name="ConversationFragment_error_while_saving_attachment_to_sd_card">Paita kanganiso pakuchengetedza batanidzwa kupfimbi!</string>
<string name="ConversationFragment_success_exclamation">Budiriro</string>
<string name="ConversationFragment_unable_to_write_to_sd_card_exclamation">Hatikwanise kunyorera kupfimbi!</string>
<string name="ConversationFragment_saving_attachment">Kuchengetedza</string>
<string name="ConversationFragment_saving_attachment_to_sd_card">Kuchengetedza batanidzwa kupfimbi...</string>
<string name="ConversationFragment_pending">Kumirira...</string>
<string name="ConversationFragment_push">Dhata (TextSecure)</string>
<string name="ConversationFragment_mms">Tsamba ye midhiya</string>
<string name="ConversationFragment_sms">Tsamba pfupi</string>
<string name="ConversationFragment_deleting">Kudzimura</string>
<string name="ConversationFragment_deleting_messages">Kudzimura tsamba...</string>
<!--ConversationListActivity-->
<string name="ConversationListActivity_search">Tsvaga....</string>
<!--ConversationListFragment-->
<string name="ConversationListFragment_delete_threads_question">Todzimura shinda?</string>
<string name="ConversationListFragment_are_you_sure_you_wish_to_delete_all_selected_conversation_threads">Unechokwadi here kuti unoda kudzimura hutaurwa HWOSE hwasarudzwa?</string>
<string name="ConversationListFragment_deleting">Kudzimura</string>
<string name="ConversationListFragment_deleting_selected_threads">Kudzimura shinda dzasarudzwa...</string>
<!--ConversationListItem-->
<string name="ConversationListItem_key_exchange_message">Svumbunuro tsinha shoko</string>
<!--CustomDefaultPreference-->
<string name="CustomDefaultPreference_using_custom">Kushandisa gadziro yako: %s</string>
<string name="CustomDefaultPreference_using_default">Kushandisa hurongwa: %s</string>
<string name="CustomDefaultPreference_none">Hapana</string>
<!--DateUtils-->
<string name="DateUtils_now">Izvozvi</string>
<string name="DateUtils_minutes_ago">maminiti %d</string>
<!--DeviceListActivity-->
<string name="DeviceListActivity_unlink_s">Bvisa kuchochekerwa \"%s\"?</string>
<string name="DeviceListActivity_by_unlinking_this_device_it_will_no_longer_be_able_to_send_or_receive">Nekubvisa kukochekerwa kwemuchina uyu, hauchazokwanisa zvakare kutumira kana kugamuchira tsamba. </string>
<string name="DeviceListActivity_network_connection_failed">Kukochekera kwemasaisai kwaramba....</string>
<string name="DeviceListActivity_try_again">Yedza zvekare</string>
<string name="DeviceListActivity_unlinking_device">Kubvisa kukochekerwa kwemuchina… </string>
<string name="DeviceListActivity_unlinking_device_no_ellipsis">Kubvisa kukochekerwa kwemuchina… </string>
<string name="DeviceListActivity_network_failed">Masaisai aramba!</string>
<!--DeviceListItem-->
<string name="DeviceListItem_unnamed_device">Muchina usina zita</string>
<string name="DeviceListItem_linked_s">Kochekerwa %s</string>
<string name="DeviceListItem_last_active_s">Bishi raguma %s</string>
<!--ShareActivity-->
<string name="ShareActivity_share_with">Gova na..</string>
<!--ExportFragment-->
<string name="ExportFragment_export">Tumira</string>
<string name="ExportFragment_export_plaintext_to_sd_card">Tumira bomhoremavara ku SD kadhi?</string>
<string name="ExportFragment_warning_this_will_export_the_plaintext_contents">Yambiro, izvi zvichaita
kuti zvirimukati mebomhoremavara retsamba dzako dzeTextSecure zvitumirwe ku SD kadhi.</string>
<string name="ExportFragment_cancel">Kanzura</string>
<string name="ExportFragment_exporting">Kutumira</string>
<string name="ExportFragment_exporting_plaintext_to_sd_card">Kutumira bomhoremavara ku SD kadhi...</string>
<string name="ExportFragment_error_unable_to_write_to_sd_card">Kanganiso pakunyorera ku SD kadhi!</string>
<string name="ExportFragment_error_while_writing_to_sd_card">Paita kanganiso pakati pekunyorera ku SD kadhi!</string>
<string name="ExportFragment_success">Budiriro</string>
<!--GcmRefreshJob-->
<string name="GcmRefreshJob_Permanent_TextSecure_communication_failure">Kutaurirana kwaramba zvachose paTextSecure!</string>
<string name="GcmRefreshJob_TextSecure_was_unable_to_register_with_Google_Play_Services">TextSecure yatadza kunyoresa ne “Google Play Services.” Kutaurirana pamusoro pemuronga wedhata zvatadziswa, rukumbiro edza kunyoresa zvakare kubva kumenyu yegadziro yeTextSecure. </string>
<!--GroupCreateActivity-->
<string name="GroupCreateActivity_actionbar_title">Boka nyowani</string>
<string name="GroupCreateActivity_actionbar_update_title">Zivisa boka</string>
<string name="GroupCreateActivity_group_name_hint">Zita reboka</string>
<string name="GroupCreateActivity_actionbar_mms_title">Boka nyowani retsamba dze midhiya</string>
<string name="GroupCreateActivity_contacts_dont_support_push">Wasarudza zita risinga tsigire mapoka eTextSecure, naizvozvo boka iri richange riri retsamba dzine midhiya.</string>
<string name="GroupCreateActivity_you_dont_support_push">Hauna kunyoreswa kuti ushandise muronga wedhata, saka mapoka emuTextSecure akatadziswa.</string>
<string name="GroupCreateActivity_contacts_mms_exception">Paita kanganiso isina kutarisirwa yatadzisa kugadzirwa kweboka.</string>
<string name="GroupCreateActivity_contacts_no_members">Panodiwa munhu mumwe chete muboka rako!</string>
<string name="GroupCreateActivity_contacts_invalid_number">Mumwe wenhengo dzemuboka rako anenhamba isiri kukwanisa kuverengwa zvakanaka. Tinokumbira kuti zita iri rigadziriswe kana kubviswa woedza zvekare.</string>
<string name="GroupCreateActivity_avatar_content_description">Chimiriro cheboka</string>
<string name="GroupCreateActivity_menu_create_title">Gadzira boka</string>
<string name="GroupCreateActivity_creating_group">Kugadzira %1$s...</string>
<string name="GroupCreateActivity_updating_group">Kuzivisa %1$s...</string>
<string name="GroupCreateActivity_cannot_add_non_push_to_existing_group">Hatikwanise kuwedzera mazita evasiri kushandisa TextSecure muboka riripo reTextSecure</string>
<string name="GroupCreateActivity_loading_group_details">Kugadza zvizere zveboka....</string>
<!--GroupMembersDialog-->
<string name="GroupMembersDialog_me">Ini</string>
<!--ImportExportActivity-->
<string name="ImportExportActivity_import">Imupota</string>
<string name="ImportExportActivity_export">Tumira </string>
<!--ImportFragment-->
<string name="ImportFragment_import_system_sms_database">Imupota gumbapamwe repfimbi yedhata retsamba pfupi?</string>
<string name="ImportFragment_this_will_import_messages_from_the_system">Izvi zvicha imupota tsamba kubva muhurongwa hwemugumbapamwe retsamba pfupi ku pfimbi yedhata kuTextSecure. Kana uchinge
wagamuchira
tsamba pfupi ye pfimbi yedhata kubva mugumbapamwe, kuimupota zvakare kunozokonzeresa kudzokorodzwa kwetsamba.</string>
<string name="ImportFragment_import">Imupota</string>
<string name="ImportFragment_cancel">Kanzura</string>
<string name="ImportFragment_restore_encrypted_backup">Todzoreredza bhekiapu yakakwedekerwa here?</string>
<string name="ImportFragment_restoring_an_encrypted_backup_will_completely_replace_your_existing_keys">
Kudzorera bhekiapu yakakwedekerwa zvichadzorera svumbunuro dzako zvakazadziswa, zvido, uye
tsamba. Ucharasikirwa nemashoko arimu TextSecure yekuvakira yako yarizvino asi kwete
irimubhekiapu.</string>
<string name="ImportFragment_restore">Dzoreredza</string>
<string name="ImportFragment_import_plaintext_backup">Imupota bhekiapu yebomhoremavara?</string>
<string name="ImportFragment_this_will_import_messages_from_a_plaintext_backup">Izvi zvichaimupota
tsamba kubva kubhekiapu yebomhoremavara. Kana wakambotora bhekiapu iyi,
kuiimupota zvakare zvichakonzeresa kudzokororwa kwetsamba.</string>
<string name="ImportFragment_importing">Kuimupota</string>
<string name="ImportFragment_import_plaintext_backup_elipse">Kuimupota bhekiapu yebomhoremavara...</string>
<string name="ImportFragment_no_plaintext_backup_found">Hapana bhekiapu yebomhoremavara rawanikwa!</string>
<string name="ImportFragment_error_importing_backup">Kanganiso pakuimupota bhekiapu!</string>
<string name="ImportFragment_import_complete">Kuimupota kwazadziswa!</string>
<string name="ImportFragment_restoring">Kudzoreredza</string>
<string name="ImportFragment_restoring_encrypted_backup">Kudzoreredza bhekiapu yakakwedekerwa...</string>
<string name="ImportFragment_no_encrypted_backup_found">Hapana bhekiapu yakakwedekerwa yawanikwa!</string>
<string name="ImportFragment_restore_complete">Dzoreredza zadzisa!</string>
<!--KeyScanningActivity-->
<string name="KeyScanningActivity_no_scanned_key_found_exclamation">Hapana svumbunuro yakaongororwa yawanikwa!</string>
<string name="KeyScanningActivity_install_barcode_Scanner">Vakirira \"Barcode scanner\"?</string>
<string name="KeyScanningActivity_this_application_requires_barcode_scanner_would_you_like_to_install_it">TextSecure inoda \'\'Barcode Scanner\'\' kuitira mirau yeQR. </string>
<!--MessageDetailsRecipient-->
<string name="MessageDetailsRecipient_failed_to_send">Yatadza kutumidzira</string>
<string name="MessageDetailsRecipient_new_identity">Chitupa chitsva</string>
<!--MmsDownloader-->
<string name="MmsDownloader_error_storing_mms">Kanganiso pakuchengetedza tsamba ine midhiya!</string>
<string name="MmsDownloader_error_connecting_to_mms_provider">Kanganiso pakuhakira kumuyananisi wetsamba dzemidhiya....</string>
<string name="MmsDownloader_error_reading_mms_settings">Kanganiso pakuverenga muyananisi wegadziro dzetsamba dzine midhiya pasina waya...</string>
<!--NotificationMmsMessageRecord-->
<string name="NotificationMmsMessageRecord_multimedia_message">Tsamba ine midhiya</string>
<!--MessageRecord-->
<string name="MessageRecord_message_encrypted_with_a_legacy_protocol_version_that_is_no_longer_supported">Wagamuchira tsamba yakakwedekerwa neTextSecure yakare isingachatsigirwe. Rukumbiro, kumbira mutumiri kuti akwidze kusvika pavhezheni yamanje otumira tsamba zvakare.</string>
<string name="MessageRecord_left_group">Wabuda muboka.</string>
<string name="MessageRecord_updated_group">Wazivisa boka.</string>
<!--PassphraseChangeActivity-->
<string name="PassphraseChangeActivity_passphrases_dont_match_exclamation">Izwi rekudarika harisi kutevedzera riripo!</string>
<string name="PassphraseChangeActivity_incorrect_old_passphrase_exclamation">Izwi rekudarika rekare harisiriro!</string>
<string name="PassphraseChangeActivity_enter_new_passphrase_exclamation">Pinza izwi rekudarika ritsva!</string>
<!--DeviceProvisioningActivity-->
<string name="DeviceProvisioningActivity_link_this_device">Kochekera muchina uyu?</string>
<string name="DeviceProvisioningActivity_cancel">KANZURA</string>
<string name="DeviceProvisioningActivity_continue">ENDERERA</string>
<string name="DeviceProvisioningActivity_title">Kochekera muchina uyu? </string>
<string name="DeviceProvisioningActivity_content_intro">Inokwanisa ku</string>
<string name="DeviceProvisioningActivity_content_bullets">
-Verenga tsamba dzako dzese
\n- Tumira tsamba muzita rako</string>
<string name="DeviceProvisioningActivity_content_progress_title">Kukochekera muchina</string>
<string name="DeviceProvisioningActivity_content_progress_content">Kukochekera muchina mutsva…</string>
<string name="DeviceProvisioningActivity_content_progress_success">Muchina wakochekerwa!</string>
<string name="DeviceProvisioningActivity_content_progress_no_device">Hapana muchina wawanikwa.</string>
<string name="DeviceProvisioningActivity_content_progress_network_error">Masaisai akanganiswa.</string>
<string name="DeviceProvisioningActivity_content_progress_key_error">Murau usiwo weQR.</string>
<string name="DeviceProvisioningActivity_sorry_you_have_too_many_devices_linked_already">Urombo, wagara unemichina yakakochekerwa yakawanda, edza kubvisa imwe…</string>
<!--PassphrasePromptActivity-->
<string name="PassphrasePromptActivity_enter_passphrase">Pinza izwi rekudarika</string>
<string name="PassphrasePromptActivity_watermark_content_description">Mufananidzo unomiririra apu yeTextSecure</string>
<string name="PassphrasePromptActivity_ok_button_content_description">Tera izwi rekudarika</string>
<string name="PassphrasePromptActivity_invalid_passphrase_exclamation">izwi rekudarika harina basa!</string>
<!--PlayServicesProblemFragment-->
<string name="PlayServicesProblemFragment_the_version_of_google_play_services_you_have_installed_is_not_functioning">Vhezheni ye “Google Play Services yawavakirira haisi kushanda zvakanaka. Rukumbiro vakiridza “Google Play Services” uedze zvakare.</string>
<!--RatingManager-->
<string name="RatingManager_rate_this_app">Yera apu iyi</string>
<string name="RatingManager_if_you_enjoy_using_this_app_please_take_a_moment">Kana uchifarira kushandisa apu iyi, tinokumbira mutore kanguva kekutibatsira muyere.</string>
<string name="RatingManager_rate_now">Yera ikozvino!</string>
<string name="RatingManager_no_thanks">Kwete tinotenda</string>
<string name="RatingManager_later">Mbaimbai</string>
<!--RecipientPreferencesActivity-->
<string name="RecipientPreferenceActivity_block_this_contact_question">Dzivirira zita iri?</string>
<string name="RecipientPreferenceActivity_you_will_no_longer_see_messages_from_this_user">Hauchakwanisi kuwona tsamba kubva kune mushandisi uyu.</string>
<string name="RecipientPreferenceActivity_block">Dzivirira</string>
<string name="RecipientPreferenceActivity_unblock_this_contact_question">Bvisa dziviriro pane zita iri?</string>
<string name="RecipientPreferenceActivity_are_you_sure_you_want_to_unblock_this_contact">Unechokwadi kuti unoda kubvisa dziviriro pane zita iri?</string>
<string name="RecipientPreferenceActivity_unblock">Bvisa dziviriro</string>
<string name="RecipientPreferenceActivity_enabled">Kugoneswa</string>
<string name="RecipientPreferenceActivity_disabled">Kutadziswa</string>
<!--RegistrationActivity-->
<string name="RegistrationActivity_connect_with_textsecure">Hakira neTextSecure</string>
<string name="RegistrationActivity_select_your_country">Sarudza nyika yako</string>
<string name="RegistrationActivity_you_must_specify_your_country_code">Unofanirwa kutaura
kodhi yenyika yako</string>
<string name="RegistrationActivity_you_must_specify_your_phone_number">Unofanirwa kutaura
svumbunuro dzembozha runhare rwako</string>
<string name="RegistrationActivity_invalid_number">Nhamba isina basa</string>
<string name="RegistrationActivity_the_number_you_specified_s_is_invalid">Nhamba dzawataura
idzi (%s) hadziite.</string>
<string name="RegistrationActivity_unsupported">Haina kutsigirwa</string>
<string name="RegistrationActivity_sorry_this_device_is_not_supported_for_data_messaging">Ruregerero,
muchina uyu hauna kutsigirwa kuti uite tsamba dzedhata. Michina irikumhanya nevhezheni dzeAndroid dzakakura
kudarika 4.0 dzinofanirwa dziine chitupa cheGoogle chakanyoreswa. Michina irikumhanya ne “Android” 4.0 kana kuti itsva hadzifanirwi
kuva nechitupa cheGoogle, asi dzinofanira kuva ne apu ye “Play Store” yakavakirwa. </string>
<string name="RegistrationActivity_we_will_now_verify_that_the_following_number_is_associated_with_your_device_s">
Ongorora zvakare kuti iyi inhamba dzako! Tava pedyo nekuiongorora netsamba pfupi.</string>
<string name="RegistrationActivity_continue">Enderera</string>
<string name="RegistrationActivity_edit">Pepeta </string>
<!--RegistrationProblemsActivity-->
<string name="RegistrationProblemsActivity_possible_problems">Bvira matambudziko</string>
<!--RegistrationProgressActivity-->
<string name="RegistrationProgressActivity_verifying_number">Kururamisa nhamba</string>
<string name="RegistrationProgressActivity_edit_s">Pepeta %s</string>
<string name="RegistrationProgressActivity_registration_complete">Zadzisa!</string>
<string name="RegistrationProgressActivity_you_must_enter_the_code_you_received_first">Unofanirwa kupinza murau wawatanga kugamuchira… </string>
<string name="RegistrationProgressActivity_connecting">Kukochekera</string>
<string name="RegistrationProgressActivity_connecting_for_verification">Kukochekera kuti uongorore kururama…</string>
<string name="RegistrationProgressActivity_network_error">Masaisai akanganiswa.</string>
<string name="RegistrationProgressActivity_unable_to_connect">Kutadza kuhaka. Rukumbiro tarisa masaisai ako ekuhaka uedze zvakare.</string>
<string name="RegistrationProgressActivity_verification_failed">Kururamisa kwaramba!</string>
<string name="RegistrationProgressActivity_the_verification_code_you_submitted_is_incorrect">Murau wekuongorora kururama wawatumidzira hausiriwo. Rukumbiro edza zvakare.</string>
<string name="RegistrationProgressActivity_too_many_attempts">Waedza zvakanyanyisa </string>
<string name="RegistrationProgressActivity_youve_submitted_an_incorrect_verification_code_too_many_times">Watumidzira murau wekuongorora kururama usiri iwo kwemikana yakanyanya. Rukumbiro, imbomira kweminiti imwe chete usati waedza zvakare.</string>
<string name="RegistrationProgressActivity_requesting_call">Kukumbira kuchayirwa runhare</string>
<string name="RegistrationProgressActivity_requesting_incoming_call">Kukumbira kuwuya kwerunhare rwekuongorora...</string>
<string name="RegistrationProgressActivity_server_error">Kanganiso pasevha</string>
<string name="RegistrationProgressActivity_the_server_encountered_an_error">Sevha raita kanganiso. Rukumbiro edza zvakare.</string>
<string name="RegistrationProgressActivity_too_many_requests">Zvikumbiro zvakawandisa!</string>
<string name="RegistrationProgressActivity_youve_already_requested_a_voice_call">Wanga wakumbira kuchairwa runhare nechekare. Unokwanisa kukumbira imwe mushure menguva inokwana maniniti 20. </string>
<string name="RegistrationProgressActivity_registration_conflict">Paita kupikanisa pakunyoresa</string>
<string name="RegistrationProgressActivity_this_number_is_already_registered_on_a_different">Nhamba iyi yakanyoreswa panerimwe sevha reTextSecure nechekare (CyanogenMod?). Unofanirwa kubvisa kunyoreswa kwakare usati wanyoresa pano.. </string>
<!--RegistrationService-->
<string name="RegistrationService_registration_complete">Kuregisita kwazadziswa</string>
<string name="RegistrationService_textsecure_registration_has_successfully_completed">Kunyoresa paTextSecure kwabudirira kuzadziswa.</string>
<string name="RegistrationService_registration_error">Kanganiso pakunyoresa</string>
<string name="RegistrationService_textsecure_registration_has_encountered_a_problem">Kuregisita paTextSecure kwasangana nedambudziko.</string>
<!--SmsMessageRecord-->
<string name="SmsMessageRecord_received_corrupted_key_exchange_message">Tatambira svumbunuro yakaworera
tsinha tsamba!</string>
<string name="SmsMessageRecord_received_key_exchange_message_for_invalid_protocol_version">
Tagamuchira tsamba yekutsinhana svumbunuro, baya kuti zvishishwe nekutaridzwa.</string>
<string name="SmsMessageRecord_received_message_with_unknown_identity_key_click_to_process">
Tatambira tsamba ine chitupa chine svumbunuro isingazivikanwe. Baya kuti zvishishwe nekutaridzwa.</string>
<string name="SmsMessageRecord_received_updated_but_unknown_identity_information">Zvagamuchirwa kuwedzerwa asi pane chitupa chemashoko chisingazivikanwi. Bata kuti utsinhidzire chitupa. </string>
<string name="SmsMessageRecord_secure_session_ended">Chikamu chakakwedekerwa chaguma.</string>
<string name="SmsMessageRecord_duplicate_message">Tsamba yakafanana</string>
<!--ThreadRecord-->
<string name="ThreadRecord_left_the_group">Kubuda muboka...</string>
<string name="TheadRecord_secure_session_ended">Chikamu chakakwedekerwa chaguma.</string>
<string name="ThreadRecord_draft">Chirongwa:</string>
<!--VerifyIdentityActivity-->
<string name="VerifyIdentityActivity_you_do_not_have_an_identity_key">Hauna chitupa chesvumbunuro</string>
<string name="VerifyIdentityActivity_recipient_has_no_identity_key">Anotambira haana chitupa chesvumbunuro.</string>
<string name="VerifyIdentityActivity_recipient_has_no_identity_key_exclamation">Anotambira haana chitupa chesvumbunuro!</string>
<string name="VerifyIdentityActivity_scan_their_key_to_compare">Wongorora svumbunuro yavo kuti uyenzanise</string>
<string name="VerifyIdentityActivity_get_my_key_scanned">Ita kuti svumbunuro yangu iwongororwe</string>
<string name="VerifyIdentityActivity_warning_the_scanned_key_does_not_match_please_check_the_fingerprint_text_carefully">YAMBIRO, svumbunururo dzavhenekwa HADZIENDERANI! Rukumbiro tarisa chidhindo chemavara zvakanaka.</string>
<string name="VerifyIdentityActivity_not_verified_exclamation">HAINA Kururama!</string>
<string name="VerifyIdentityActivity_their_key_is_correct_it_is_also_necessary_to_verify_your_key_with_them_as_well">Svumbunuro yavo ndiyo. Zvekare zvakafanirawo kuti uongororese kururama kwesvumbunuro yako navo .</string>
<string name="VerifyIdentityActivity_verified_exclamation">Yakarurama!</string>
<string name="VerifyIdentityActivity_you_don_t_have_an_identity_key_exclamation">Hauna chitupa chesvumbunuro!</string>
<!--ViewIdentityActivity-->
<string name="ViewIdentityActivity_you_do_not_have_an_identity_key">Hauna chitupa chesvumbunuro</string>
<string name="ViewIdentityActivity_scan_to_compare">Wongorora kuti uyenzanise</string>
<string name="ViewIdentityActivity_get_scanned_to_compare">Ita kuti iwongororwe kuti uyenzanise</string>
<string name="ViewIdentityActivity_warning_the_scanned_key_does_not_match_exclamation">YAMBIRO, svumbunuro yawongororwa iyi HAISI kutevedzera iripo!</string>
<string name="ViewIdentityActivity_not_verified_exclamation">HAINA kururama!</string>
<string name="ViewIdentityActivity_the_scanned_key_matches_exclamation">Svumbunuro yawongororwa iyi inotevedzera iripo!</string>
<string name="ViewIdentityActivity_verified_exclamation">Yakarurama! </string>
<string name="ViewIdentityActivity_my_identity_fingerprint">Chidhindo changu </string>
<!--KeyExchangeInitiator-->
<string name="KeyExchangeInitiator_initiate_despite_existing_request_question">Totanga kunyangwe paine chikumbiro chiripo?</string>
<string name="KeyExchangeInitiator_youve_already_sent_a_session_initiation_request_to_this_recipient_are_you_sure">Watumira rukumbiro rwekutangidzwa kwechikamu kumugamuchiri uyu nechekare, unechokwadi here kuti unoda kutumira imwe? Izvi zvinoita kuti rutumiro rwekutanga rwushaye basa.</string>
<string name="KeyExchangeInitiator_send">Tumira </string>
<!--MessageDisplayHelper-->
<string name="MessageDisplayHelper_bad_encrypted_message">Tsamba yakakwedekerwa iyi yakaipa...</string>
<string name="MessageDisplayHelper_decrypting_please_wait">Kubvisa kukwedekerwa, mira kwekanguva....</string>
<string name="MessageDisplayHelper_message_encrypted_for_non_existing_session">Tsamba yakwedekererwa chikamu chisipo...</string>
<!--EncryptingSmsDatabase-->
<string name="EncryptingSmsDatabase_error_decrypting_message">Kanganiso pakubvisa kukwedekerwa kwetsamba.</string>
<!--ThreadDatabase-->
<string name="ThreadDatabase_error_decrypting_message">Kanganiso pakubvisa kukwedekerwa kwetsamba. </string>
<!--MmsDatabase-->
<string name="MmsDatabase_connecting_to_mms_server">Kuhakira kupfimbi yetsamba dzine midhiya...</string>
<string name="MmsDatabase_downloading_mms">Kututunura tsamba dzemidhiya....</string>
<string name="MmsDatabase_mms_download_failed">Kututunura tsamba dzemidhiya kwaramba!</string>
<string name="MmsDatabase_downloading">Kututunura....</string>
<string name="MmsDatabase_mms_pending_download">Bata nekuisa gadziro dzetsamba dzemidhiya kuti uenderere nekututunura.</string>
<string name="MmsDatabase_error_decrypting_message">Kanganiso pakubvisa kukwedekerwa kwetsamba. </string>
<!--MmsMessageRecord-->
<string name="MmsMessageRecord_decrypting_mms_please_wait">Kubvisa kukwedekerwa kwetsamba ine midhiya, chikumbiro mirai...</string>
<string name="MmsMessageRecord_bad_encrypted_mms_message">Tsamba ine midhiya yakakwedekerwa iyi yakaipa...</string>
<string name="MmsMessageRecord_mms_message_encrypted_for_non_existing_session">Tsamba ine midhiya yakakwedekererwa chikamu chisipo....</string>
<!--MuteDialog-->
<string name="MuteDialog_mute_notifications">Misa zviziviso</string>
<!--ApplicationMigrationService-->
<string name="ApplicationMigrationService_import_in_progress">Kuimupota kuri mushishi</string>
<string name="ApplicationMigrationService_importing_text_messages">Kuimupota tsamba dzine mavara</string>
<!--KeyCachingService-->
<string name="KeyCachingService_textsecure_passphrase_cached">Gunzva ku vhura</string>
<string name="KeyCachingService_textsecure_passphrase_cached_with_lock">Bata kuti uvhure, kana kuti bata chihuri kuti uvhare.</string>
<string name="KeyCachingService_passphrase_cached">TextSecure yavhurwa </string>
<string name="KeyCachingService_lock">Vhara neizwi rekudarika</string>
<!--MessageNotifier-->
<string name="MessageNotifier_d_new_messages_in_d_conversations">%1$d tsamba nyowani muhutaurwa %2$d</string>
<string name="MessageNotifier_most_recent_from_s">Zvamanje kubva ku: %1$s</string>
<string name="MessageNotifier_locked_message">Tsamba yakavharwa...</string>
<string name="MessageNotifier_media_message_with_text">Tsamba ine midhiya: %s</string>
<string name="MessageNotifier_no_subject">(Hapana nhaurwa)</string>
<string name="MessageNotifier_message_delivery_failed">Kusvitswa kwetsamba kwaramba.</string>
<string name="MessageNotifier_failed_to_deliver_message">Tatadza kusvitsa tsamba.</string>
<string name="MessageNotifier_error_delivering_message">Kanganiso pakusvitsa tsamba.</string>
<string name="MessageNotifier_mark_all_as_read">Mara ose se averengwa</string>
<string name="MessageNotifier_mark_read">Mara se averengwa</string>
<string name="MessageNotifier_media_message">Tsamba ine midhiya</string>
<string name="MessageNotifier_reply">Pindura</string>
<!--QuickResponseService-->
<string name="QuickResponseService_quick_response_unavailable_when_TextSecure_is_locked">Mhindiro yakachimbidzika haiwanikwe kana TextSecure yakavharwa!</string>
<string name="QuickResponseService_problem_sending_message">Dambudziko pakutumira tsamba!</string>
<!--SingleRecipientNotificationBuilder-->
<string name="SingleRecipientNotificationBuilder_new_textsecure_message">Tsamba yeTextSecure itsva</string>
<string name="SingleRecipientNotificationBuilder_contents_hidden">Zvirimo zvakavigwa</string>
<!--change_passphrase_activity-->
<string name="change_passphrase_activity__old_passphrase">IZWI REKUDARIKA REKARE:</string>
<string name="change_passphrase_activity__new_passphrase">IZWI REKUDARIKA RITSVA:</string>
<string name="change_passphrase_activity__repeat_new_passphrase">DZOKORORA IZWI REKUDARIKA RITSVA:</string>
<!--contact_selection_activity-->
<string name="contact_selection_activity__enter_name_or_number">Pinza zita kana nhamba</string>
<!--contact_selection_group_activity-->
<string name="contact_selection_group_activity__no_contacts">Hapana mazita</string>
<string name="contact_selection_group_activity__finding_contacts">kugadza mazita...</string>
<!--single_contact_selection_activity-->
<string name="SingleContactSelectionActivity_contact_photo">Mufananidzo wezita</string>
<!--ContactSelectionListFragment-->
<string name="ContactSelectionlistFragment_select_for">Sarudza kuitira</string>
<!--blocked_contacts_fragment-->
<string name="blocked_contacts_fragment__no_blocked_contacts">Hapana mazita akadzivirirwa...</string>
<!--contact_selection_recent_activity-->
<string name="contact_selection_recent_activity__no_recent_calls">Hapana kuchaya runhare kwaitika iyezvino.</string>
<!--conversation_title_view-->
<string name="conversation_title_view__conversation_muted">Hutaurwa hwamiswa</string>
<!--conversation_activity-->
<string name="conversation_activity__type_message_push">Tumira tsamba yeTextSecure</string>
<string name="conversation_activity__type_message_sms_insecure">Tumira tsamba pfupi isina kukwedekerwa</string>
<string name="conversation_activity__type_message_mms_insecure">Tumira tsamba ine midhiya isina kukwedekerwa</string>
<string name="conversation_activity__send">Tumira</string>
<string name="conversation_activity__remove">Bvisa</string>
<string name="conversation_activity__window_description">Hutaurwa na %1$s</string>
<string name="conversation_activity__compose_description">Rondedzero yetsamba</string>
<string name="conversation_activity__emoji_toggle_description">Saidzira kiibhodhi ye \"emoji\"</string>
<string name="conversation_activity__attachment_thumbnail">Mufananidzo webatanidzira</string>
<string name="conversation_activity__quick_attachment_drawer_toggle_description">Saidzira dhirowa yebatanidzira</string>
<!--conversation_item-->
<string name="conversation_item__mms_downloading_description">Tsamba ine midhiya iri kututunura</string>
<string name="conversation_item__mms_image_description">Tsamba ine midhiya </string>
<string name="conversation_item__secure_message_description">Tsamba yakakwedekerwa</string>
<!--conversation_item_sent-->
<string name="conversation_item_sent__download">Tutunura</string>
<string name="conversation_item_sent__downloading">Kututunura</string>
<string name="conversation_item_sent__send_failed_indicator_description">Kutumira kwaramba</string>
<string name="conversation_item_sent__pending_approval_description">Kumirira mubvumo</string>
<string name="conversation_item_sent__delivered_description">Yasvitswa</string>
<!--conversation_item_received-->
<string name="conversation_item_received__download">Tutunura </string>
<string name="conversation_item_received__contact_photo_description">Mufananidzo wezita</string>
<string name="conversation_item_received__downloading">Kututunura </string>
<!--conversation_fragment_cab-->
<string name="conversation_fragment_cab__batch_selection_mode">Mashandiro esarudzo dzezvikwata </string>
<string name="conversation_fragment_cab__batch_selection_amount">%s asarudzwa</string>
<!--country_selection_fragment-->
<string name="country_selection_fragment__loading_countries">Kugadza mazita nyika....</string>
<string name="country_selection_fragment__search">Tsvaga</string>
<!--device_list_fragment-->
<string name="device_list_fragment__no_devices_linked">Hapana muchina yakahakirwa....</string>
<!--log_submit_activity-->
<string name="log_submit_activity__log_fetch_failed">Tatadza kutora bhuku remapindiro amboitwa kubva pamuchina wako. Asi unogona kushandisa ADB kuti ukwanise kuwana bhuku rekubvisa zvipfukuto. </string>
<string name="log_submit_activity__thanks">Tinotenda nerubatsirwo rwako!</string>
<string name="log_submit_activity__submitting">Kutumidzira</string>
<string name="log_submit_activity__posting_logs">Kutumira bhuku remapindiro amboitwa kuruzororo....</string>
<!--database_migration_activity-->
<string name="database_migration_activity__would_you_like_to_import_your_existing_text_messages">Unoda kuimupota tsamba dzine mavara dziripo kuenda kupfimbi yedhata yakakwedekerwa yeTextSecure here?</string>
<string name="database_migration_activity__the_default_system_database_will_not_be_modified">Hurongwa hwegumbapamwe yepfimbi yedhata haizochinjirudzwe kana kushandurwa neimwe nzira.</string>
<string name="database_migration_activity__skip">Darika</string>
<string name="database_migration_activity__import">Imupota</string>
<string name="database_migration_activity__this_could_take_a_moment_please_be_patient">Izvi zvinogona kutora kanguva. Tinokumbira umire zvishoma, tichakuzivisai kana kuimupota kwazadziswa.</string>
<string name="database_migration_activity__importing">KUIMUPOTA</string>
<!--database_upgrade_activity-->
<string name="database_upgrade_activity__updating_database">Zivisa pfimbi redhata....</string>
<string name="export_fragment__export_plaintext_backup">Tumira bhekiapu yebomhoremavara</string>
<string name="export_fragment__export_a_plaintext_backup_compatible_with">
Tumira bhekiapu rebomhoremavara rinopindirana ne\"Bhekiapu yetsamba pfupi nekudzoreredza\" kuenda kuSD kadhi.</string>
<string name="import_fragment__import_system_sms_database">Imupota gumbapamwe yepfimbi redhata retsamba pfupi</string>
<string name="import_fragment__import_the_database_from_the_default_system">Imupota pfimbi yedhata
kubva kuhurongwa hwegumbapambwe reapu retsamba.</string>
<string name="import_fragment__import_encrypted_backup">Imupota bhekiapu yakakwedekerwa</string>
<string name="import_fragment__restore_a_previously_exported_encrypted_textsecure_backup">
Dzorera bhekiapu yakakwedekerwa yeTextSecure yanga yambo tumirwa.</string>
<string name="import_fragment__import_plaintext_backup">Imupota bhekiapu yebomhoremavara</string>
<string name="import_fragment__import_a_plaintext_backup_file">
Imupota bhekiapu rebomhoremavara. Rinopindirana ne\"Bhekiapu yetsamba pfupi nekudzoreredza\".</string>
<!--media_overview_activity-->
<string name="media_overview_activity__no_images">Hapana mifananidzo</string>
<!--message_recipients_list_item-->
<string name="message_recipients_list_item__verify">Ruramisa</string>
<string name="message_recipients_list_item__resend">Tumira zvekare</string>
<!--MmsPreferencesFragment-->
<string name="MmsPreferencesFragment__manual_mms_settings_are_required">Mukondo wegadziro yetsamba dzemidhiya dzinodiwa parunharembozha rwako.</string>
<string name="MmsPreferencesFragment__enabled">Kugoneswa</string>
<string name="MmsPreferencesFragment__disabled">Kutadziswa</string>
<string name="MmsPreferencesFragment__not_set">Haina kugadzirwa </string>
<string name="MmsPreferencesFragment__invalid_uri">Mavara apinzwa anga asiri eURI inosevenza</string>
<string name="MmsPreferencesFragment__invalid_host">Mavara apinzwa anga asiri emuchinguri anosevenza</string>
<!--GroupUtil-->
<string name="GroupUtil_joined_the_group">%1$s abatana neboka.</string>
<string name="GroupUtil_group_updated">Boka raziviswa.</string>
<string name="GroupUtil_title_is_now">Musoro ikezvino wave \'%1$s\'.</string>
<!--prompt_passphrase_activity-->
<string name="prompt_passphrase_activity__unlock">Zarura</string>
<!--prompt_mms_activity-->
<string name="prompt_mms_activity__textsecure_requires_mms_settings_to_deliver_media_and_group_messages">TextSecure inoda gadziro yetsamba dzinemidhiya kuti isvitse midhiya netsamba dzemapoka kupfurikidza nemutakuri wepasina waya. Muchina wako haukwanise kuti mashoko aya avepo, zvinova izvo zvechokwadi panguva zvinji pamichina yakavharwa uye nedzimwe gadziridzo dzakamiswa.</string>
<string name="prompt_mms_activity__to_send_media_and_group_messages_click_ok">Kuti utumire midhiya netsamba dzemapoka, bata hongu uye uzadzikise gadziro dzakumbirwa. Gadziro dzetsamba dzemidhiya kubva kumutakuri wako dzinogona kuwanikwa nekutsvaga mutakuri weAPN. Unongoda kuti uite izvi kamwe chete.</string>
<!--recipient_preferences_activity-->
<string name="recipient_preference_activity__blocked">Yakadzivirirwa</string>
<!--recipient_preferences-->
<string name="recipient_preferences__mute_conversation">Misa hutaurwa</string>
<string name="recipient_preferences__disable_notifications_for_this_conversation">Tadzisa zviziviso zvehutaurwa uwu.</string>
<string name="recipient_preferences__ringtone">Mhanzi yekuridza </string>
<string name="recipient_preferences__vibrate">Vhaibhureta</string>
<string name="recipient_preferences__block">Dzivirira</string>
<string name="recipient_preferences__color">Ruvara</string>
<string name="recipient_preferences__color_for_this_contact">Ruvara rwezita iri</string>
<!--registration_activity-->
<string name="registration_activity__textsecure_can_use_instant_messages_to_avoid_sms_charges_when_communicating_with_other_textsecure_users">
Ruramisa nhamba dzako dzenhare kuti ukochekere kuTextSecure.</string>
<string name="registration_activity__your_country">NYIKA YAKO</string>
<string name="registration_activity__your_country_code_and_phone_number">KODHI YENYIKA YAKO NE
NHAMBA DZEMBOZHA RUNHARE RWAKO</string>
<string name="registration_activity__phone_number">NHAMBA DZENHARE</string>
<string name="registration_activity__register">Nyoresa</string>
<string name="registration_activity__registration_will_transmit_some_contact_information_to_the_server_temporariliy">Kunyoresa kunotumira mamwe mashoko ezita kuenda kusevha. Haipfimbikwe.</string>
<string name="registration_activity__powered_by_twilio">Zvaitiswa natwilio </string>
<!--registration_problems-->
<string name="registration_problems__some_possible_problems_include">Zvimwe zvimhingamipini
zvinosanganisira:</string>
<string name="registration_problems__sms_interceptors">Zvibvukiro zvetsamba pfupi.</string>
<string name="registration_problems__some_third_party_text_messaging_clients_such_as_handcent">
Umwe mugamuchiri wetsamba wetatu, akaita se Handcent kana kuti GoSMS, dzinoshanda zvisingafadze uye
dzinobvukira tsamba pfupi dzese dzirikupinda. Tarisa kuti uone kana wagamuchira tsamba inotangidza
ichiti “kodhi yako yekuongorora kururama kwako muTextSecure:\', zvisinei unozoda kuti ugadzirise
apu yetsamba dzako dzemunhu wako wetatu kuti tsamba dzako dzipfuure.</string>
<string name="registration_problems__incorrect_number">Nhamba hadzisidzo.</string>
<string name="registration_problems__please_checkt_to_make_sure_you_entered_your_number_correctly">
Rukumbiro tarisa kuti uve nechokwadi kuti wapinzwa nhamba dzako zvakanaka, uye kuti ndiwo muitiro wakanaka
wekudunhu rako.</string>
<string name="registration_problems__google_voice">Izwi reGoogle.</string>
<string name="registration_problems__textsecure_will_not_work_with_google_voice_numbers">
TextSecure haizosevenzi nenhamba dze izwi re\'Google\'.</string>
<!--registration_progress_activity-->
<string name="registration_progress_activity__voice_verification">Kururamisa nenzira yezwi</string>
<string name="registration_progress_activity__textsecure_can_also_call_you_to_verify_your_number">
TextSecure inokwanisa kukuchaira runhare kuti iongorore kururama kwenhamba dzako. Bata Ndichaire nekupinza murau wenhamba tanhatu
dzaunonzwa pasi.</string>
<string name="registration_progress_activity__verify">Ruramisa</string>
<string name="registration_progress_activity__call_me">Ndichayire nhare</string>
<string name="registration_progress_activity__edit_number">Pepeta nhamba</string>
<string name="registration_progress_activity__connectivity_error">Kukanganiswa kwekuhaka masaisai.</string>
<string name="registration_progress_activity__textsecure_was_unable_to_connect_to_the_push_service">
TextSecure yatadza kuhaka chirango chekusunda.</string>
<string name="registration_progress_activity__some_possible_problems_include">Zvimwe zvimhingamipini
zvinosanganisira:</string>
<string name="registration_progress_activity__no_network_connectivity">Hapana masaisai
ekuhaka.</string>
<string name="registration_progress_activity__your_device_needs_network_connectivity">Muchina wako
unoda masaisai ekuhaka kuti ukwanise kusevenzesa cherechedzo yeTextSecure iyi. Tarisa kuti uvenechokwadi
chekuti yakahaka 3G kana kuti nepfenyuro yepasina waya. </string>
<string name="registration_progress_activity__restrictive_firewall">Chidziviriri chemudhuri wemoto.</string>
<string name="registration_progress_activity__if_you_are_connected_via_wifi_its_possible_that_there_is_a_firewall">
Kana wakahaka kupfurikidza nenepfenyuro yepasina waya, zvinogona kuti pane mudhuri wemoto urikudzivirira kubatwa
kwesevha reTextSecure. Edza imwe nepfeyuro kana dhata rinofamba.</string>
<string name="registration_progress_activity__textsecure_will_now_automatically_verify_your_number_with_a_confirmation_sms_message">
TextSecure ichazviita yega kuti iongorore kururama kwenhamba dzako netsamba pfupi yekutsinhira.</string>
<string name="registration_progress_activity__connecting">Kukochekera.....</string>
<string name="registration_progress_activity__waiting_for_sms_verification">Kumirira tsamba pfupi
yekururamisa...</string>
<string name="registration_progress_activity__registering_with_server">Kunyoresa nesevha....</string>
<string name="registration_progress_activity__this_couild_take_a_moment_please_be_patient">Izvi
zvinokwanisa kutora chinguva. Rukumbiro iva nemoyo murefu, tichakuudza kana kutsinhira kuchinge kwazadziswa.</string>
<string name="registration_progress_activity__textsecure_timed_out_while_waiting_for_a_verification_sms_message">
TextSecure yapera nguva yakamirira tsamba pfupi yekutsinhira.</string>
<string name="registration_progress_activity__sms_verification_failed">Kururama kuburikidza netsamba pfupi
kwaramba.</string>
<string name="registration_progress_activity__generating_keys">Kugadzira svumbunuro....</string>
<string name="registration_progress_activity__alert">Chenjedza</string>
<string name="registration_progress_activity__telephone">Runhare</string>
<string name="registration_progress_activity__check">Tarisa</string>
<!--recipients_panel-->
<string name="recipients_panel__to"><small>Pinza zita kana nhamba</small></string>
<string name="recipients_panel__add_member">Wedzera nhengo</string>
<!--verify_identity_activity-->
<string name="verify_identity_activity__their_identity_they_read">Chitupa chavo (vaverenga):</string>
<string name="verify_identity_activity__your_identity_you_read">Chitupa chako (waverenga):</string>
<!--message_details_header-->
<string name="message_details_header__issues_need_your_attention">Zvimwe zvinhu zvinoda teerero yako. </string>
<string name="message_details_header__sent">Kutumira</string>
<string name="message_details_header__received">Kutambira</string>
<string name="message_details_header__via">Kuburikidza</string>
<string name="message_details_header__to">Kuna:</string>
<string name="message_details_header__from">Kubva:</string>
<string name="message_details_header__with">Na:</string>
<!--AndroidManifest.xml-->
<string name="AndroidManifest__create_passphrase">Gadzira izwi rekudarika</string>
<string name="AndroidManifest__enter_passphrase">Pinza izwi rekudarika</string>
<string name="AndroidManifest__select_contacts">Sarudza mazita</string>
<string name="AndroidManifest__textsecure_detected">Tafeya TextSecure</string>
<string name="AndroidManifest__public_identity_key">Chitupa chesvumbunuro chepovho</string>
<string name="AndroidManifest__change_passphrase">Sandura izwi rekudarika</string>
<string name="AndroidManifest__verify_identity">Ruramisa chitupa</string>
<string name="AndroidManifest__log_submit">Tumidzira bhuku rekubviswa kwezvipfukuto </string>
<string name="AndroidManifest__media_preview">Kuwona midhiya muchidimbu</string>
<string name="AndroidManifest__media_overview">Mifananidzo yese</string>
<string name="AndroidManifest__media_overview_named">Mifananidzo yese ine %1$s</string>
<string name="AndroidManifest__message_details">Zvizere zvetsamba</string>
<string name="AndroidManifest_manage_linked_devices">Maneja michina yakakochekerwa </string>
<!--arrays.xml-->
<string name="arrays__import_export">Imupota/ Tumira</string>
<string name="arrays__my_identity_key">Chitupa chesvumbunuro yangu</string>
<string name="arrays__use_default">Shandisa hurongwa</string>
<string name="arrays__use_custom">Shandisa gadziro yako</string>
<string name="arrays__mute_for_one_hour">Misa zve awa 1</string>
<string name="arrays__mute_for_two_hours">Misa zve maawa 2</string>
<string name="arrays__mute_for_one_day">Misa zve zuva 1</string>
<string name="arrays__mute_for_seven_days">Misa zve mazuva 7</string>
<string name="arrays__settings_default">Gadziro yehurongwa</string>
<string name="arrays__enabled">Kugoneswa</string>
<string name="arrays__disabled">Kutadziswa</string>
<string name="arrays__name_and_message">Zita netsamba</string>
<string name="arrays__name_only">Zita chete</string>
<string name="arrays__neither">Isiri </string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="one">awa %d</item>
<item quantity="other">maawa %d</item>
</plurals>
<!--preferences.xml-->
<string name="preferences__general">Zvenguva dzose </string>
<string name="preferences__sms_mms">Tsamba pfupi netsamba ine midhiya</string>
<string name="preferences__pref_all_sms_title">Tambira tsamba pfupi dzese</string>
<string name="preferences__pref_all_mms_title">Tambira tsamba dzine midhiya dzose</string>
<string name="preferences__use_textsecure_for_viewing_and_storing_all_incoming_text_messages">Shandisa TextSecure panopinda tsamba dzine mavara dzose</string>
<string name="preferences__use_textsecure_for_viewing_and_storing_all_incoming_multimedia_messages">Shandisa TextSecure panopinda tsamba dzine midhiya dzose</string>
<string name="preferences__input_settings">Gadziro dzekuisa</string>
<string name="preferences__enable_enter_key_title">Gonesa svumbunuro yekupinza</string>
<string name="preferences__replace_smiley_with_enter_key">Dzorera svumbunuro yemufananidzo nesvumbunuro yekupinda</string>
<string name="preferences__pref_enter_sends_title">Svumbunuro yekupinza inotumira</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Kubaya svumbunuro yekupinza kunoita kuti tsamba dzine mavara dzitumirwe</string>
<string name="preferences__display_settings">Gadziro dzekuratidza </string>
<string name="preferences__choose_identity">Sarudza chitupa</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Sarudza zita rako pane mutsara wemazita.</string>
<string name="preferences__change_passphrase">Sandura izwi rekudarika</string>
<string name="preferences__change_my_passphrase">Sandura izwi rekudarika rangu</string>
<string name="preferences__enable_passphrase">Gonesa izwi rekudarika</string>
<string name="preferences__passphrase_summary">Izwi rekudarika %s</string>
<string name="preferences__enable_lock_screen_for_messages">Gonesa kuvhara chivhitivhiti chetsamba</string>
<string name="preferences__screen_security">Tsivatsaona yepachivhitivhiti</string>
<string name="preferences__screen_security_summary">Tsivatsaona yepachivhitivhiti %s</string>
<string name="preferences__disable_screen_security_to_allow_screen_shots">Dzivirira kutorwa kwemifananidzo yepachivhitivhiti pane rutarwa rwamanje uye mukati meapu.</string>
<string name="preferences__forget_passphrase_from_memory_after_some_interval">Kanganwa izwi rekudarika mupfungwa kana kwapera chimirwa</string>
<string name="preferences__timeout_passphrase">Kupera kwenguva inoshanda izwi rekudarika </string>
<string name="preferences__pref_timeout_interval_dialogtitle">Sarudza panoperera nguva yekushanda kwe izwi rekudarika </string>
<string name="preferences__pref_timeout_interval_title">Chimirwa chekupera kwenguva</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">Nguva yekumira isati yakanganwa izwi rekudarika mupfungwa </string>
<string name="preferences__notifications">Zviziviso</string>
<string name="preferences__enable_message_notifications">Gonesa tsamba dzezviziviso</string>
<string name="preferences__led_color">Ruvara rweLED</string>
<string name="preferences__led_color_unknown">Haizivikanwe</string>
<string name="preferences__pref_led_blink_title">Peteni yekubwaira kweLED</string>
<string name="preferences__pref_led_blink_custom_pattern_title">Isa gadziro yako yepeteni yekubwaira kweLED</string>
<string name="preferences__pref_led_blink_custom_pattern_on_for">Kubatidza kuitira:</string>
<string name="preferences__pref_led_blink_custom_pattern_off_for">Kudzima kuitira:</string>
<string name="preferences__pref_led_blink_custom_pattern_set">Gadziro yekubwaira kwepeteni yeLED yaiswa! </string>
<string name="preferences__sound">Ruzha</string>
<string name="preferences__change_notification_sound">Sandura ruzha rwezviziviso</string>
<string name="preferences__inthread_notifications">Zviziviso zviri mushinda</string>
<string name="preferences__play_inthread_notifications">Ridza ruzha rwezviziviso kana ndichiwona hutaurwa huri mubishi</string>
<string name="preferences__repeat_alerts">Dzokorodza chenjedzo</string>
<string name="preferences__never">Kwete zvamuchose</string>
<string name="preferences__one_time">Nguva imwe chete</string>
<string name="preferences__two_times">Nguva yepiri</string>
<string name="preferences__three_times">Nguva yetatu</string>
<string name="preferences__five_times">Nguva yechina</string>
<string name="preferences__ten_times">Nguva yegumi</string>
<string name="preferences__vibrate">Vhaibhureta</string>
<string name="preferences__also_vibrate_when_notified">Itawo ruzha kana waziviswa </string>
<string name="preferences__minutes">maminiti</string>
<string name="preferences__hours">maawa</string>
<string name="preferences__green">Girini</string>
<string name="preferences__red">Tsvuku</string>
<string name="preferences__blue">Bhuluu</string>
<string name="preferences__orange">Ranjisi</string>
<string name="preferences__cyan">Cyan</string>
<string name="preferences__magenta">Magenta</string>
<string name="preferences__white">Chena</string>
<string name="preferences__none">Hapana</string>
<string name="preferences__fast">Kukurumidza</string>
<string name="preferences__normal">Kwesere</string>
<string name="preferences__slow">Nono</string>
<string name="preferences__custom">Gadziro yako</string>
<string name="preferences__advanced">Zviri pamusoro</string>
<string name="preferences__privacy">Zvakachengeteka</string>
<string name="preferences__mms_user_agent">Mumiriri anoshandisa tsamba dzemidhiya </string>
<string name="preferences__advanced_mms_access_point_names">Mukondo wegadziro dzetsamba dzemidhiya </string>
<string name="preferences__enable_manual_mms">Shandisa mukondo wegadziro dzetsamba dzemidhiya </string>
<string name="preferences__override_system_mms_settings">Darikidza gadziro yegumbapamwe yetsamba dzemidhiya nemashoko aripasi.</string>
<string name="preferences__mmsc_url">MMSC URL</string>
<string name="preferences__mms_proxy_host">MMS Proxy Host</string>
<string name="preferences__mms_proxy_port">MMS Proxy Port</string>
<string name="preferences__mmsc_username">Zita rekushandisa re MMSC</string>
<string name="preferences__mmsc_password">Izwi rekudarika re MMSC</string>
<string name="preferences__sms_delivery_reports">Kumhan\'ara kwekusvika kwetsamba pfupi </string>
<string name="preferences__request_a_delivery_report_for_each_sms_message_you_send">Kumbira kuman\'arwa kwekusvitswa kwetsamba pfupi imwe ne imwe yaunenge watumira </string>
<string name="preferences__automatically_delete_older_messages_once_a_conversation_thread_exceeds_a_specified_length">Ita kuti tsamba dzakare dzizvidzime pachadzo kana shinda yeutaurwa yapfurikidza hurebu hwakatarwa.</string>
<string name="preferences__delete_old_messages">Dzimura tsamba dzekare</string>
<string name="preferences__conversation_length_limit">Magumo ehurefu hweutaurwa</string>
<string name="preferences__trim_all_threads_now">Nyerenyesa shinda dzese izvozvi</string>
<string name="preferences__scan_through_all_conversation_threads_and_enforce_conversation_length_limits">Tsvagiridza mukati meshinda dzehutaurwa uye manikidzira magumo ehurefu hwehutaurwa.</string>
<string name="preferences__light_theme">Chiedza</string>
<string name="preferences__dark_theme">Rima</string>
<string name="preferences__appearance">Mamiriro </string>
<string name="preferences__theme">Dingindira </string>
<string name="preferences__theme_summary">Dingindira %s</string>
<string name="preferences__default">Hurongwa</string>
<string name="preferences__language">Mutauro</string>
<string name="preferences__language_summary">Mutauro %s</string>
<string name="preferences__textsecure_messages">Tsamba dze TextSecure</string>
<string name="preferences__use_the_data_channel_for_communication_with_other_textsecure_users">
Sunungura kutumirwa ketsamba dziri puraivheti kuvashandisi veTextSecure neSignal</string>
<string name="preferences__submit_debug_log">Kuendesa bhuku yekubviswa kwaitwa zvipfukuto </string>
<string name="preferences__support_wifi_calling">Yanano yemashandiro \"ekuchaya pasina waya\"</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">Gonesa kana muchina wako uchishandisa nepfenyuro yepasina waya kusvitsa tsamba pfupi/ tsamba dzine midhiya (gonesa chete kana \"kuchaya pasina waya\" kwakagoneswa pamuchina wako). </string>
<string name="preferences_app_protection__blocked_contacts">Mazita akadzivirirwa</string>
<string name="preferences_notifications__display_in_notifications">Ratidza zviziviso </string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->
<!--contact_selection_list-->
<string name="contact_selection_list__menu_select_all">Sarudza zvese</string>
<string name="contact_selection_list__menu_unselect_all">Bvisa sarudzo pese</string>
<string name="contact_selection_list__header_textsecure_users">VASHANDISI VETEXTSECURE</string>
<string name="contact_selection_list__header_other">MAZITA OSE</string>
<string name="contact_selection_list__unknown_contact">Tsamba itsva kuna...</string>
<!--contact_selection-->
<string name="contact_selection__menu_finished">Kupedza</string>
<!--refreshing push directory from menu-->
<string name="push_directory__menu_refresh">Gwangunudza mutsara wemazita</string>
<!--conversation_callable-->
<string name="conversation_callable__menu_call">Chaya runhare</string>
<!--conversation_context-->
<string name="conversation_context__menu_message_details">Shoko zvizere</string>
<string name="conversation_context__menu_copy_text">Kopa mavara</string>
<string name="conversation_context__menu_delete_message">Dzimura tsamba</string>
<string name="conversation_context__menu_forward_message">Endesa tsamba mberi</string>
<string name="conversation_context__menu_resend_message">Tumira tsamba zvekare</string>
<!--conversation_context_image-->
<string name="conversation_context_image__save_attachment">Chengetedza batanidzwa</string>
<!--conversation_insecure-->
<string name="conversation_insecure__invite">Koka</string>
<!--conversation_insecure_no_push-->
<string name="conversation_insecure__menu_start_secure_session">Tanga chikamu chakakwedekera</string>
<string name="conversation_insecure__security">Tsivatsaona</string>
<!--conversation_list_batch-->
<string name="conversation_list_batch__menu_delete_selected">Dzimura zvasarudzwa</string>
<string name="conversation_list_batch__menu_select_all">Sarudza zvese </string>
<!--conversation_list-->
<string name="conversation_list__menu_search">Tsvaga</string>
<!--conversation_list_item_view-->
<string name="conversation_list_item_view__contact_photo_image">Mufananidzo wezita</string>
<string name="conversation_list_item_view__error_alert">Chenjedzo yekanganiso</string>
<!--conversation_list_fragment-->
<string name="conversation_list_fragment__fab_content_description">Hutaurwa hutsva</string>
<!--conversation_secure_verified-->
<string name="conversation_secure_verified__menu_security">Tsivatsaona </string>
<string name="conversation_secure_verified__menu_verify_identity">Ruramisa chitupa</string>
<string name="conversation_secure_verified__menu_abort_secure_session">Vhara chikamu chakakwedekerwa </string>
<!--conversation_muted-->
<string name="conversation_muted__unmute">Kubvisa chimiso </string>
<!--conversation_unmuted-->
<string name="conversation_unmuted__mute_notifications">Misa zviziviso</string>
<!--conversation-->
<string name="conversation__menu_add_attachment">Kuwedzera batanidzwa</string>
<string name="conversation__menu_update_group">Zivisa boka</string>
<string name="conversation__menu_leave_group">Buda muboka</string>
<string name="conversation__menu_delete_thread">Dzimura shinda</string>
<string name="conversation__menu_view_media">Mifananidzo yese</string>
<string name="conversation__menu_conversation_settings">Gadziro yehutaurwa</string>
<!--conversation_popup-->
<string name="conversation_popup__menu_expand_popup">Wedzera zvinongobuda</string>
<!--conversation_callable-->
<string name="conversation_add_to_contacts__menu_add_to_contacts">Wedzera kumazita</string>
<!--conversation_group_options-->
<string name="convesation_group_options__recipients_list">Mutsara we vanotambira</string>
<string name="conversation_group_options__delivery">Kusvitswa</string>
<string name="conversation_group_options__conversation">Hutaurwa</string>
<string name="conversation_group_options__broadcast">Tepfenyura</string>
<!--key_scanning-->
<string name="key_scanning__menu_compare">Kuyenzanisa</string>
<string name="key_scanning__menu_get_scanned_to_compare">Ita kuti iwongororwe kuti uyenzanise</string>
<string name="key_scanning__menu_scan_to_compare">Wongorora kuti uyenzanise</string>
<!--text_secure_normal-->
<string name="text_secure_normal__menu_new_message">Tsamba itsva </string>
<string name="text_secure_normal__menu_new_group">Boka nyowani</string>
<string name="text_secure_normal__menu_settings">Gadziro</string>
<string name="text_secure_normal__menu_clear_passphrase">Vhara</string>
<string name="text_secure_normal__mark_all_as_read">Mara ose se averengwa</string>
<!--reminder_header-->
<string name="reminder_header_expired_build">Chivakirira chako cheTextSecure chapera kushanda!</string>
<string name="reminder_header_expired_build_details">Tsamba hadzichazogona kutumirwa zvekare, rukumbiro kwidziridza kuenda kevhezheni remanje. </string>
<string name="reminder_header_sms_default_title">Shandisa sehurongwa hwe apu yetsamba pfupi?</string>
<string name="reminder_header_sms_default_text">Bata kuti TextSecure ive iri apu yako yehurongwa hwetsamba pfupi</string>
<string name="reminder_header_sms_import_title">Kuimupota gumbapamwe retsamba pfupi?</string>
<string name="reminder_header_sms_import_text">Bata kuti ikopere tsamba pfupi dzembozha runhare yako kupfimbi redhate rakakwedekerwa.</string>
<string name="reminder_header_push_title">Gonesa tsamba dze TextSecure?</string>
<string name="reminder_header_push_text">Bata kuitira kutumiridzira kunechichimbi, puraivheti yakanyanya uye pasina kubhadharwa kwetsamba pfupi.</string>
<!--MediaPreviewActivity-->
<string name="MediaPreviewActivity_you">Iwewe</string>
<string name="MediaPreviewActivity_cant_display">Kutadza kuona mufananidzo uyu muchidimbu </string>
<string name="MediaPreviewActivity_unssuported_media_type">Rudzi rwemidhiya rwusina kutsigirwa </string>
<!--media_preview-->
<string name="media_preview__save_title">Chengetedza</string>
<!--media_preview_activity-->
<string name="media_preview_activity__image_content_description">Kuona mufananidzo muchidimbu</string>
<!--Trimmer-->
<string name="trimmer__deleting">Kudzimura</string>
<string name="trimmer__deleting_old_messages">Kudzimura tsamba dzekare....</string>
<string name="trimmer__old_messages_successfully_deleted">Tsamba dzekare dzabudirira pakudzimurwa</string>
<!--transport_selection_list_item-->
<string name="transport_selection_list_item__transport_icon">Tumidzira chimiriro chemufanidzo </string>
<!--quick_attachment_drawer-->
<string name="quick_camera_unavailable">Kamera haipo</string>
<!--EOF-->
</resources>

View File

@@ -397,6 +397,7 @@
<string name="KeyCachingService_passphrase_cached">Сигурне поруке су откључане</string>
<string name="KeyCachingService_lock">Закључај лозинком</string>
<!--MessageNotifier-->
<string name="MessageNotifier_d_new_messages_in_d_conversations">%1$d нових порука у %2$d преписки</string>
<string name="MessageNotifier_most_recent_from_s">Најскорија од: %1$s</string>
<string name="MessageNotifier_locked_message">Закључана порука...</string>
<string name="MessageNotifier_media_message_with_text">Мултимедијална порука: %s</string>
@@ -412,6 +413,8 @@
<string name="QuickResponseService_quick_response_unavailable_when_TextSecure_is_locked">Брзи одговор није доступан ако су Сигурне поруке закључане!</string>
<string name="QuickResponseService_problem_sending_message">Проблем са слањем поруке!</string>
<!--SingleRecipientNotificationBuilder-->
<string name="SingleRecipientNotificationBuilder_new_textsecure_message">Нова сигурна порука</string>
<string name="SingleRecipientNotificationBuilder_contents_hidden">Садржај сакривен</string>
<!--change_passphrase_activity-->
<string name="change_passphrase_activity__old_passphrase">СТАРА ЛОЗИНКА:</string>
<string name="change_passphrase_activity__new_passphrase">НОВА ЛОЗИНКА:</string>
@@ -624,6 +627,9 @@
<string name="arrays__settings_default">Подразумевана поставка</string>
<string name="arrays__enabled">Омогућена</string>
<string name="arrays__disabled">Онемогућена</string>
<string name="arrays__name_and_message">Име и порука</string>
<string name="arrays__name_only">Само име</string>
<string name="arrays__neither">Ниједно</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="one">%d сат</item>
@@ -659,6 +665,7 @@
<string name="preferences__pref_timeout_interval_title">Интервал истека</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">Време чекања пре уклањања лозинке из меморије</string>
<string name="preferences__notifications">Обавештења</string>
<string name="preferences__enable_message_notifications">Обавештења о порукама</string>
<string name="preferences__led_color">Боја ЛЕД светла</string>
<string name="preferences__led_color_unknown">Непозната</string>
<string name="preferences__pref_led_blink_title">Трептање ЛЕД светла</string>
@@ -726,6 +733,7 @@
<string name="preferences__support_wifi_calling">Компатибилност са „бежичним позивањем“</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">Омогућите ако ваш уређај доставља СМС/ММС преко бежичне мреже (омогућите само ако је „WiFi Calling“ омогућено на вашем уређају)</string>
<string name="preferences_app_protection__blocked_contacts">Блокирани контакти</string>
<string name="preferences_notifications__display_in_notifications">Прикажи у обавештењу</string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->

View File

@@ -611,6 +611,9 @@ TextSecure uppnådde tidsgränsen för SMS-verifiering.</string>
<string name="arrays__name_and_message">Namn och meddelande</string>
<string name="arrays__name_only">Endast namn</string>
<string name="arrays__neither">Varken eller</string>
<string name="arrays__images">Bilder</string>
<string name="arrays__audio">Ljud</string>
<string name="arrays__video">Video</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="one">%d timme</item>
@@ -695,6 +698,7 @@ TextSecure uppnådde tidsgränsen för SMS-verifiering.</string>
<string name="preferences__request_a_delivery_report_for_each_sms_message_you_send">Begär en leveransrapport för varje SMS-meddelande du skickar</string>
<string name="preferences__automatically_delete_older_messages_once_a_conversation_thread_exceeds_a_specified_length">Radera automatiskt gamla meddelanden när en konversationstråd överstiger en specificerad längd</string>
<string name="preferences__delete_old_messages">Radera gamla meddelanden</string>
<string name="preferences__chats">Konversationer och media</string>
<string name="preferences__conversation_length_limit">Konversationstrådslängd</string>
<string name="preferences__trim_all_threads_now">Trimma alla trådar nu</string>
<string name="preferences__scan_through_all_conversation_threads_and_enforce_conversation_length_limits">Skanna igenom alla konversationstrådar och framtvinga konversationstrådslängder.</string>

View File

@@ -4,97 +4,187 @@
<string name="yes"></string>
<string name="no">Không</string>
<string name="delete">Xóa</string>
<string name="please_wait">Xin chờ</string>
<!--ApplicationPreferencesActivity-->
<string name="ApplicationPreferencesActivity_currently_s">Hiện thời: %s</string>
<string name="ApplicationPreferenceActivity_you_havent_set_a_passphrase_yet">Bạn chưa thiết lập mật khẩu!</string>
<string name="ApplicationPreferenceActivity_you_havent_set_a_passphrase_yet">Bạn chưa thiết lập cụm từ mật khẩu!</string>
<string name="ApplicationPreferencesActivity_messages_per_conversation">%s tin nhắn cho mỗi cuộc chuyện trò</string>
<string name="ApplicationPreferencesActivity_delete_all_old_messages_now">Xóa tất cả tin nhắn cũ bây giờ?</string>
<string name="ApplicationPreferencesActivity_are_you_sure_you_would_like_to_immediately_trim_all_conversation_threads_to_the_s_most_recent_messages">Bạn có chắc là muốn thu ngắn tức thì các mạch chuyện trò xuống còn %s tin nhắn mới nhất?</string>
<string name="ApplicationPreferencesActivity_are_you_sure_you_would_like_to_immediately_trim_all_conversation_threads_to_the_s_most_recent_messages">Bạn có chắc là muốn thu ngắn tức thì các chuỗi chuyện trò xuống còn %s tin nhắn mới nhất?</string>
<string name="ApplicationPreferencesActivity_delete">Xóa</string>
<string name="ApplicationPreferencesActivity_disable_passphrase">Tắt cụm từ mật khẩu?</string>
<string name="ApplicationPreferencesActivity_disable_lock_screen">
Tắt khóa màn hình cho tin nhắn?
</string>
<string name="ApplicationPreferencesActivity_disable">Tắt</string>
<string name="ApplicationPreferencesActivity_unregistering">Tháo gỡ đăng ký</string>
<string name="ApplicationPreferencesActivity_unregistering_from_textsecure_messages">Tháo gỡ đăng ký với tin nhắn TextSecure</string>
<string name="ApplicationPreferencesActivity_disable_textsecure_messages">Tắt tin nhắn TextSecure?</string>
<string name="ApplicationPreferencesActivity_this_will_disable_textsecure_messages">
Thao tác này sẽ tắt tin nhắn TextSecure qua việc tháo gỡ đăng ký bạn với máy chủ.
Bạn sẽ phải đăng ký lại số điện thoại của bạn để dùng tin nhắn TextSecure trong tương lai.
</string>
<string name="ApplicationPreferencesActivity_error_connecting_to_server">Có lỗi kết nối vào máy chủ!</string>
<string name="ApplicationPreferencesActivity_sms_enabled">Đã mở SMS</string>
<string name="ApplicationPreferencesActivity_touch_to_change_your_default_sms_app">Chạm vào để đổi ứng dụng SMS mặc định</string>
<string name="ApplicationPreferencesActivity_sms_disabled">Đã tắt SMS</string>
<string name="ApplicationPreferencesActivity_touch_to_make_textsecure_your_default_sms_app">Chạm vào để chọn TextSecure làm ứng dụng SMS mặc định</string>
<string name="ApplicationPreferencesActivity_on">mở</string>
<string name="ApplicationPreferencesActivity_On">Mở</string>
<string name="ApplicationPreferencesActivity_off">tắt</string>
<string name="ApplicationPreferencesActivity_Off">Tắt</string>
<string name="ApplicationPreferencesActivity_sms_mms_summary">SMS %1$s, MMS %2$s</string>
<!--AppProtectionPreferenceFragment-->
<string name="AppProtectionPreferenceFragment_minutes">%d phút</string>
<!--DraftDatabase-->
<string name="DraftDatabase_Draft_image_snippet">(hình)</string>
<string name="DraftDatabase_Draft_audio_snippet">(âm thanh)</string>
<string name="DraftDatabase_Draft_video_snippet">(video)</string>
<!--AttchmentManager-->
<string name="AttachmentManager_cant_open_media_selection">Không tìm thấy ứng dụng để chọn dữ liệu truyền thông.</string>
<!--AttachmentTypeSelectorAdapter-->
<string name="AttachmentTypeSelectorAdapter_camera">Máy ảnh</string>
<string name="AttachmentTypeSelectorAdapter_picture">Hình ảnh</string>
<string name="AttachmentTypeSelectorAdapter_video">Video</string>
<string name="AttachmentTypeSelectorAdapter_audio">Âm thanh</string>
<string name="AttachmentTypeSelectorAdapter_contact">Chi tiết liên lạc</string>
<!--BlockedContactsActivity-->
<string name="BlockedContactsActivity_blocked_contacts">Chặn các liên lạc</string>
<!--ConfirmIdentityDialog-->
<string name="ConfirmIdentityDialog_the_signature_on_this_key_exchange_is_different">Dữ liệu
của chìa khóa danh tính cho %1$s đã thay đổi. Điều này có thể là ai đó đang tìm cách
chặn bắt thông tin của bạn, hoặc %2$s chỉ cài đặt lại TextSecure và có chìa khóa danh tính
mới.
</string>
<string name="ConfirmIdentityDialog_you_may_wish_to_verify_this_contact">Bạn có thể muốn kiểm chứng
địa chỉ liên lạc này.
</string>
<string name="ConfirmIdentityDialog_accept">Chấp nhận</string>
<!--ContactsDatabase-->
<string name="ContactsDatabase_message_s">Tin nhắn %s</string>
<!--ConversationItem-->
<string name="ConversationItem_message_size_d_kb">Kích thước tin nhắn: %d KB</string>
<string name="ConversationItem_expires_s">Hết hạn: %s</string>
<string name="ConversationItem_view_secure_media_question">Xem nội dung an toàn</string>
<string name="ConversationItem_this_media_has_been_stored_in_an_encrypted_database_external_viewer_warning">Phương tiện dữ liệu này được lưu trữ trong cơ sở dữ liệu có mã hóa. Tuy nhiên để xem nó bằng một ứng dụng khác đòi hỏi dữ liệu được giải mã tạm thời và chép vào ổ đĩa. Bạn có chắc là muốn làm điều này?</string>
<string name="ConversationItem_error_not_delivered">Không đưa tin được</string>
<string name="ConversationItem_view_secure_media_question">Xem dữ liệu truyền thông bảo mật?</string>
<string name="ConversationItem_this_media_has_been_stored_in_an_encrypted_database_external_viewer_warning">Dữ liệu truyền thông này được lưu trữ trong cơ sở dữ liệu có mã hóa. Tuy nhiên để xem nó bằng một ứng dụng khác đòi hỏi dữ liệu được giải mã tạm thời và chép vào ổ đĩa. Bạn có chắc là muốn làm điều này?</string>
<string name="ConversationItem_error_received_stale_key_exchange_message">Có lỗi, nhận thông tin cũ về trao đổi chìa khóa</string>
<string name="ConversationItem_received_key_exchange_message_click_to_process">Nhận thông tin trao đổi chìa khóa, bấm để tiếp tục.</string>
<string name="ConversationItem_group_action_left">%1$s đã rời nhóm.</string>
<string name="ConversationItem_group_action_left">%1$s đã rời khỏi nhóm.</string>
<string name="ConversationItem_click_for_details">Nhấn để biết chi tiết</string>
<string name="ConversationItem_click_to_approve_unencrypted">Nhấn để trở lại dạng không bảo mật</string>
<string name="ConversationItem_click_to_approve_unencrypted_sms_dialog_title">Trở lại SMS không mã hóa?</string>
<string name="ConversationItem_click_to_approve_unencrypted_mms_dialog_title">Hủy bỏ MMS chưa được mã hóa?</string>
<string name="ConversationItem_click_to_approve_unencrypted_mms_dialog_title">Trở lại MMS không mã hóa?</string>
<string name="ConversationItem_click_to_approve_unencrypted_dialog_message">Tin nhắn này sẽ <b>không</b> được mã hóa vì người nhận không còn sử dụng TextSecure.\n\nGửi tin nhắn không mã hóa?</string>
<string name="ConversationItem_unable_to_open_media">Không tìm thấy ứng dụng để mở dữ liệu truyền thông này.</string>
<!--ConversationActivity-->
<string name="ConversationActivity_initiate_secure_session_question">Khởi động tiến trình mã hóa?</string>
<string name="ConversationActivity_initiate_secure_session_with_s_question">Khởi tạo phiên trao đổi an toàn với %s?</string>
<string name="ConversationActivity_abort_secure_session_confirmation">Xác nhận kết thúc tiến trình mã hóa</string>
<string name="ConversationActivity_initiate_secure_session_question">Khởi động phiên mã hóa?</string>
<string name="ConversationActivity_initiate_secure_session_with_s_question">Khởi động phiên mã hóa với %s?</string>
<string name="ConversationActivity_abort_secure_session_confirmation">Xác nhận kết thúc phiên mã hóa</string>
<string name="ConversationActivity_are_you_sure_that_you_want_to_abort_this_secure_session_question">Bạn có chắc là muốn chấm dứt phiên trao đổi an toàn này?</string>
<string name="ConversationActivity_delete_thread_confirmation">Xóa tiến trình xác nhận</string>
<string name="ConversationActivity_delete_thread_confirmation">Xác nhận xóa chuỗi</string>
<string name="ConversationActivity_are_you_sure_that_you_want_to_permanently_delete_this_conversation_question">Bạn có chắc là muốn xóa vĩnh viễn cuộc chuyện trò này?</string>
<string name="ConversationActivity_add_attachment">Thêm tập tin đính kèm</string>
<string name="ConversationActivity_select_contact_info">Chọn thông tin liên hệ</string>
<string name="ConversationActivity_select_contact_info">Chọn thông tin liên lạc</string>
<string name="ConversationActivity_compose_message">Soạn nội dung</string>
<string name="ConversationActivity_sorry_there_was_an_error_setting_your_attachment">Xin lỗi, có lỗi thiết đặt tập tin đính kèm của bạn.</string>
<string name="ConversationActivity_the_gif_you_selected_was_too_big">Hình gif bạn chọn to quá!</string>
<string name="ConversationActivity_sorry_the_selected_video_exceeds_message_size_restrictions">Xin lỗi, video được chọn to hơn kích thước cho phép (%1$skB).</string>
<string name="ConversationActivity_sorry_the_selected_audio_exceeds_message_size_restrictions">Xin lỗi, âm thanh được chọn to hơn kích thước cho phép (%1$skB).</string>
<string name="ConversationActivity_recipient_is_not_a_valid_sms_or_email_address_exclamation">Nơi nhận không phải là SMS hay địa chỉ email có hiệu lực!</string>
<string name="ConversationActivity_message_is_empty_exclamation">Tin nhắn trống không!</string>
<string name="ConversationActivity_group_conversation">Gom nhóm chat</string>
<string name="ConversationActivity_group_members">Thành viên trong nhóm</string>
<string name="ConversationActivity_group_conversation">Chuyện trò nhóm</string>
<string name="ConversationActivity_unnamed_group">Nhóm chưa đặt tên</string>
<string name="ConversationActivity_d_recipients_in_group">%d thành viên</string>
<string name="ConversationActivity_d_recipients_in_group_singular">1 thành viên</string>
<string name="ConversationActivity_saved_draft">Lưu bản nháp</string>
<string name="ConversationActivity_invalid_recipient">Người nhận không đúng!</string>
<string name="ConversationActivity_calls_not_supported">Không hỗ trợ tính năng gọi điệ</string>
<string name="ConversationActivity_calls_not_supported">Không hỗ trợ tính năng gọi điện</string>
<string name="ConversationActivity_this_device_does_not_appear_to_support_dial_actions">Thiết bị này không hỗ trợ thao tác gọi.</string>
<string name="ConversationActivity_leave_group">Rời nhóm?</string>
<string name="ConversationActivity_are_you_sure_you_want_to_leave_this_group">Bạn có chắc là muốn rời nhóm?</string>
<string name="ConversationActivity_transport_insecure_sms">SMS không bảo mật</string>
<string name="ConversationActivity_transport_insecure_mms">MMS không bảo mật</string>
<string name="ConversationActivity_transport_textsecure">TextSecure</string>
<string name="ConversationActivity_get_with_it">Làm đi: %s</string>
<string name="ConversationActivity_lets_use_this_to_chat">Dùng cái này để chat: %s</string>
<string name="ConversationActivity_error_leaving_group">Có lỗi khi rời nhóm</string>
<string name="ConversationActivity_mms_not_supported_title">Không hỗ trợ MMS</string>
<string name="ConversationActivity_mms_not_supported_message">Tin nhắn không gửi được vì hãng điện thoại không hỗ trợ MMS.</string>
<string name="ConversationActivity_specify_recipient">Xin chọn một liên lạc</string>
<string name="ConversationActivity_unblock_question">Không chặn?</string>
<string name="ConversationActivity_are_you_sure_you_want_to_unblock_this_contact">Bạn có chắc là không chặn liên lạc này nữa?</string>
<string name="ConversationActivity_unblock">Không chặn</string>
<!--ConversationFragment-->
<string name="ConversationFragment_message_details">Chi tiết tin nhắn</string>
<string name="ConversationFragment_confirm_message_delete">Xác nhận xóa tin</string>
<string name="ConversationFragment_transport_s_sent_received_s">Chuyển tải: %1$s\nGửi/Nhận: %2$s</string>
<string name="ConversationFragment_sender_s_transport_s_sent_s_received_s">Người gửi: %1$s\nChuyển tải: %2$s\nGửi: %3$s\nNhận: %4$s</string>
<string name="ConversationFragment_confirm_message_delete">Xác nhận xóa tin nhắn</string>
<string name="ConversationFragment_are_you_sure_you_want_to_permanently_delete_all_selected_messages">Bạn có chắc là muốn xóa vĩnh viễn các tin nhắn được chọn?</string>
<string name="ConversationFragment_save_to_sd_card">Lưu vào thẻ nhớ?</string>
<string name="ConversationFragment_this_media_has_been_stored_in_an_encrypted_database_warning">Lưu tập tin này vào thẻ nhớ sẽ cho phép các ứng dụng khác trong điện thoại truy cập nó.\n\nTiếp tục?</string>
<string name="ConversationFragment_error_while_saving_attachment_to_sd_card">Có lỗi khi lưu tập tin đính kèm vào thẻ nhớ!</string>
<string name="ConversationFragment_success_exclamation">Thành công!</string>
<string name="ConversationFragment_unable_to_write_to_sd_card_exclamation">Không thể viết vào thẻ nhớ!</string>
<string name="ConversationFragment_saving_attachment">Đang lưu lại phần đính kèm</string>
<string name="ConversationFragment_saving_attachment_to_sd_card">Đang lưu phần đính kèm vào thẻ nhớ...</string>
<string name="ConversationFragment_pending">Chờ giải quyết...</string>
<string name="ConversationFragment_push">Dữ liệu (TextSecure)</string>
<string name="ConversationFragment_mms">MMS</string>
<string name="ConversationFragment_sms">SMS</string>
<string name="ConversationFragment_deleting">Đang xóa</string>
<string name="ConversationFragment_deleting_messages">Đang xóa tin nhắn...</string>
<!--ConversationListActivity-->
<string name="ConversationListActivity_search">Tìm...</string>
<!--ConversationListFragment-->
<string name="ConversationListFragment_delete_threads_question">Xóa các luồng trao đổi?</string>
<string name="ConversationListFragment_are_you_sure_you_wish_to_delete_all_selected_conversation_threads">Bạn có chắc là muốn xóa TẤT CẢ các luồng trao đổi đã chọn?</string>
<string name="ConversationListFragment_delete_threads_question">Xóa các chuỗi chuyện trò?</string>
<string name="ConversationListFragment_are_you_sure_you_wish_to_delete_all_selected_conversation_threads">Bạn có chắc là muốn xóa TẤT CẢ các chuỗi chuyện trò đã chọn?</string>
<string name="ConversationListFragment_deleting">Đang xóa</string>
<string name="ConversationListFragment_deleting_selected_threads">Xóa các mạch đã chọn...</string>
<string name="ConversationListFragment_deleting_selected_threads">Xóa các chuỗi đã chọn...</string>
<!--ConversationListItem-->
<string name="ConversationListItem_key_exchange_message">Thông tin trao đổi chìa khóa...</string>
<!--CustomDefaultPreference-->
<string name="CustomDefaultPreference_using_custom">Dùng tùy chỉnh: %s</string>
<string name="CustomDefaultPreference_using_default">Dùng mặc định: %s</string>
<string name="CustomDefaultPreference_none">Không</string>
<!--DateUtils-->
<string name="DateUtils_now">Bây giờ</string>
<string name="DateUtils_minutes_ago">%d phút</string>
<!--DeviceListActivity-->
<string name="DeviceListActivity_unlink_s">Gỡ liên kết \'%s\'?</string>
<string name="DeviceListActivity_by_unlinking_this_device_it_will_no_longer_be_able_to_send_or_receive">Khi gỡ liên kết thiết bị này, nó sẽ không thể gửi hoặc nhận tin nhắn được nữa.</string>
<string name="DeviceListActivity_network_connection_failed">Kết nối vào mạng không được...</string>
<string name="DeviceListActivity_try_again">Thử lại</string>
<string name="DeviceListActivity_unlinking_device">Gỡ iên kết thiết bị...</string>
<string name="DeviceListActivity_unlinking_device_no_ellipsis">Gỡ liên kết thiết bị</string>
<string name="DeviceListActivity_network_failed">Mạng hỏng!</string>
<!--DeviceListItem-->
<string name="DeviceListItem_unnamed_device">Thiết bị chưa có tên</string>
<string name="DeviceListItem_linked_s">Liênt kết %s</string>
<string name="DeviceListItem_last_active_s">Lần chót hoạt động %s</string>
<!--ShareActivity-->
<string name="ShareActivity_share_with">Chia sẻ với</string>
<!--ExportFragment-->
<string name="ExportFragment_export">Xuất</string>
<string name="ExportFragment_export_plaintext_to_sd_card">Xuất dữ liệu dạng thuần văn bản ra thẻ nhớ?</string>
<string name="ExportFragment_warning_this_will_export_the_plaintext_contents">Cảnh báo, thao tác này sẽ xuất nội dung văn bản thường (không mã hóa) của các tin nhắn TextSecure ra thẻ nhớ SD.</string>
<string name="ExportFragment_cancel">Hủy bỏ</string>
<string name="ExportFragment_export_plaintext_to_sd_card">Xuất văn bản thường ra thẻ nhớ?</string>
<string name="ExportFragment_warning_this_will_export_the_plaintext_contents">Cảnh báo, thao tác
này sẽ xuất nội dung văn bản thường (không mã hóa) của các tin nhắn TextSecure ra thẻ nhớ SD.</string>
<string name="ExportFragment_cancel">Hủy</string>
<string name="ExportFragment_exporting">Đang xuất</string>
<string name="ExportFragment_exporting_plaintext_to_sd_card">Đang xuất văn bản thường ra thẻ nhớ...</string>
<string name="ExportFragment_error_unable_to_write_to_sd_card">Có lỗi, không thể viết ra thẻ nhớ!</string>
<string name="ExportFragment_error_while_writing_to_sd_card">Có lỗi trong lúc viết ra thẻ nhớ.</string>
<string name="ExportFragment_success">Thành công!</string>
<!--GcmRefreshJob-->
<string name="GcmRefreshJob_Permanent_TextSecure_communication_failure">Thông tin liên lạc TextSecure thất bại thường xuyên!</string>
<string name="GcmRefreshJob_TextSecure_was_unable_to_register_with_Google_Play_Services">TextSecure không thể đăng ký với Dịch vụ của Google Play. Thông tin liên lạc qua kênh dữ liệu đã bị tắt, xin thử tái đăng ký trong phần thiết đặt TextSecure.</string>
<!--GroupCreateActivity-->
<string name="GroupCreateActivity_actionbar_title">Tạo nhóm mới</string>
<string name="GroupCreateActivity_actionbar_update_title">Cập nhật nhóm</string>
<string name="GroupCreateActivity_group_name_hint">Tên nhóm</string>
<string name="GroupCreateActivity_actionbar_mms_title">Tạo nhóm MMS mới</string>
<string name="GroupCreateActivity_contacts_dont_support_push">Bạn chọn một người liên hệ mà họ không hỗ trợ nhóm TextSecure, do đó nhóm này sẽ là MMS.</string>
<string name="GroupCreateActivity_contacts_dont_support_push">Bạn chọn một liên lạc mà họ không hỗ trợ nhóm TextSecure, do đó nhóm này sẽ là MMS.</string>
<string name="GroupCreateActivity_you_dont_support_push">Bạn không đăng ký dùng đường truyền internet, do đó nhóm TextSecure bị tắt.</string>
<string name="GroupCreateActivity_contacts_mms_exception">Có lỗi bất ngờ xảy ra do đó không lập nhóm được.</string>
<string name="GroupCreateActivity_contacts_no_members">Cần có ít nhất một người trong nhóm!</string>
@@ -102,24 +192,34 @@
<string name="GroupCreateActivity_avatar_content_description">Biểu tượng nhóm</string>
<string name="GroupCreateActivity_menu_create_title">Tạo nhóm</string>
<string name="GroupCreateActivity_creating_group">Tạo %1$s...</string>
<string name="GroupCreateActivity_cannot_add_non_push_to_existing_group">Không thể thêm địa chỉ liên hệ bên ngoài TextSecure vào trong nhóm TextSecure hiện thời</string>
<string name="GroupCreateActivity_updating_group">Cập nhật %1$s...</string>
<string name="GroupCreateActivity_cannot_add_non_push_to_existing_group">Không thể thêm địa chỉ liên lạc bên ngoài TextSecure vào trong nhóm TextSecure hiện thời</string>
<string name="GroupCreateActivity_loading_group_details">Nạp chi tiết nhóm...</string>
<!--GroupMembersDialog-->
<string name="GroupMembersDialog_me">Tôi</string>
<!--ImportExportActivity-->
<string name="ImportExportActivity_import">Nhập</string>
<string name="ImportExportActivity_export">Xuất</string>
<!--ImportFragment-->
<string name="ImportFragment_import_system_sms_database">Nhập dữ liệu từ SMS?</string>
<string name="ImportFragment_this_will_import_messages_from_the_system">Thao tác này sẽ nhập các tin nhắn từ cơ sở dữ liệu SMS mặc định của hệ thống vào TextSecure. Nếu bạn đã từng làm việc này trước đó, nhập vào lần nữa sẽ dẫn đến việc có các tin nhắn trùng lập.</string>
<string name="ImportFragment_import_system_sms_database">Nhập cơ sở dữ liệu SMS của hệ thống?</string>
<string name="ImportFragment_this_will_import_messages_from_the_system">Thao tác này sẽ nhập
các tin nhắn từ cơ sở dữ liệu SMS mặc định của hệ thống vào TextSecure. Nếu bạn đã
từng làm việc này trước đó, nhập vào lần nữa sẽ dẫn đến việc có các tin nhắn trùng lập.</string>
<string name="ImportFragment_import">Nhập</string>
<string name="ImportFragment_cancel">Hủy bỏ</string>
<string name="ImportFragment_restore_encrypted_backup">Khôi phục phần sao lưu đã mã hóa?</string>
<string name="ImportFragment_cancel">Hủy</string>
<string name="ImportFragment_restore_encrypted_backup">Phục hồi phần sao lưu mã hóa?</string>
<string name="ImportFragment_restoring_an_encrypted_backup_will_completely_replace_your_existing_keys">
Phục hồi bản sao lưu có mã hóa sẽ thay thế hoàn toàn các chìa khóa hiện thời, chọn lựa và tin nhắn. Bạn sẽ mất những thông tin nào có trong phiên bản TextSecure cài đặt hiện thời nhưng không có trong bản sao lưu.</string>
Phục hồi bản sao lưu có mã hóa sẽ thay thế hoàn toàn các chìa khóa hiện thời, chọn lựa
và tin nhắn. Bạn sẽ mất những thông tin nào có trong phiên bản TextSecure cài đặt
hiện thời nhưng không có trong bản sao lưu.</string>
<string name="ImportFragment_restore">Phục hồi</string>
<string name="ImportFragment_import_plaintext_backup">Xuất dữ liệu sao lưu dạng thuần văn bản?</string>
<string name="ImportFragment_this_will_import_messages_from_a_plaintext_backup">Thao tác này sẽ nhập các tin nhắn từ bản sao lưu thường (không mã hóa). Nếu bạn đã nhập sao lưu này trước đó, nhập lần nữa sẽ dẫn đến việc có tin nhắn trùng lập.</string>
<string name="ImportFragment_import_plaintext_backup">Nhập sao lưu văn bản thường?</string>
<string name="ImportFragment_this_will_import_messages_from_a_plaintext_backup">Thao tác này
sẽ nhập các tin nhắn từ bản sao lưu thường (không mã hóa). Nếu bạn đã nhập
sao lưu này trước đó, nhập lần nữa sẽ dẫn đến việc có tin nhắn trùng lập.</string>
<string name="ImportFragment_importing">Đang nhập</string>
<string name="ImportFragment_no_plaintext_backup_found">Không tìm thấy sao lưu thường-không mã hóa</string>
<string name="ImportFragment_import_plaintext_backup_elipse">Nhập sao lưu văn bản thường...</string>
<string name="ImportFragment_no_plaintext_backup_found">Không tìm thấy sao lưu văn bản thường!</string>
<string name="ImportFragment_error_importing_backup">Có lỗi khi nhập sao lưu!</string>
<string name="ImportFragment_import_complete">Nhập hoàn tất!</string>
<string name="ImportFragment_restoring">Đang phục hồi</string>
@@ -128,7 +228,11 @@ Phục hồi bản sao lưu có mã hóa sẽ thay thế hoàn toàn các chìa
<string name="ImportFragment_restore_complete">Phục hồi hoàn tất!</string>
<!--KeyScanningActivity-->
<string name="KeyScanningActivity_no_scanned_key_found_exclamation">Không dò tìm thấy chìa khóa nào!</string>
<string name="KeyScanningActivity_install_barcode_Scanner">Cài đặt Ứng Dụng Quét Mã Vạch?</string>
<string name="KeyScanningActivity_this_application_requires_barcode_scanner_would_you_like_to_install_it">TextSecure cần ứng dụng Quét Mã Vạch cho mã QR.</string>
<!--MessageDetailsRecipient-->
<string name="MessageDetailsRecipient_failed_to_send">Gửi đi không được</string>
<string name="MessageDetailsRecipient_new_identity">Danh tính mới</string>
<!--MmsDownloader-->
<string name="MmsDownloader_error_storing_mms">Có lỗi lưu trữ MMS!</string>
<string name="MmsDownloader_error_connecting_to_mms_provider">Có lỗi kết nối vào nhà dịch vụ MMS</string>
@@ -136,47 +240,99 @@ Phục hồi bản sao lưu có mã hóa sẽ thay thế hoàn toàn các chìa
<!--NotificationMmsMessageRecord-->
<string name="NotificationMmsMessageRecord_multimedia_message">Tin nhắn đa phương tiện</string>
<!--MessageRecord-->
<string name="MessageRecord_message_encrypted_with_a_legacy_protocol_version_that_is_no_longer_supported">Đã tiếp nhận một tin nhắn được mã hóa bởi một phiên bản cũ hơn và không còn được hỗ trợ. Xin hãy hỏi người gửi nâng cấp lên phiên bản mới và gửi lại tin nhắn.</string>
<string name="MessageRecord_message_encrypted_with_a_legacy_protocol_version_that_is_no_longer_supported">Đã tiếp nhận một tin nhắn được mã hóa bởi một phiên bản cũ hơn và không còn được hỗ trợ. Xin yêu cầu người gửi nâng cấp lên phiên bản mới và gửi lại tin nhắn.</string>
<string name="MessageRecord_left_group">Bạn đã rời nhóm.</string>
<string name="MessageRecord_updated_group">Cập nhật nhóm.</string>
<!--PassphraseChangeActivity-->
<string name="PassphraseChangeActivity_passphrases_dont_match_exclamation">Cụm từ mã hóa không khớp nhau!</string>
<string name="PassphraseChangeActivity_incorrect_old_passphrase_exclamation">Mật khẩu cũ không đúng!</string>
<string name="PassphraseChangeActivity_passphrases_dont_match_exclamation">Cụm từ mật khẩu không khớp nhau!</string>
<string name="PassphraseChangeActivity_incorrect_old_passphrase_exclamation">Cụm từ mật khẩu cũ không đúng!</string>
<string name="PassphraseChangeActivity_enter_new_passphrase_exclamation">Điền vào cụm từ mật khẩu mới!</string>
<!--DeviceProvisioningActivity-->
<string name="DeviceProvisioningActivity_link_this_device">Liên kết thiết bị này?</string>
<string name="DeviceProvisioningActivity_cancel">HỦY</string>
<string name="DeviceProvisioningActivity_continue">TIẾP TỤC</string>
<string name="DeviceProvisioningActivity_title">Liên kết thiết bị này?</string>
<string name="DeviceProvisioningActivity_content_intro">Nó sẽ có thể </string>
<string name="DeviceProvisioningActivity_content_bullets">
- Đọc tất cả tin nhắn
\n- Gửi tin nhắn dưới tên bạn
</string>
<string name="DeviceProvisioningActivity_content_progress_title">Liên kết thiết bị</string>
<string name="DeviceProvisioningActivity_content_progress_content">Liên kết thiết bị mới...</string>
<string name="DeviceProvisioningActivity_content_progress_success">Thiết bị được liên kết!</string>
<string name="DeviceProvisioningActivity_content_progress_no_device">Không tìm thấy thiết bị nào.</string>
<string name="DeviceProvisioningActivity_content_progress_network_error">Lỗi mạng.</string>
<string name="DeviceProvisioningActivity_content_progress_key_error">Mã QR không đúng.</string>
<string name="DeviceProvisioningActivity_sorry_you_have_too_many_devices_linked_already">Xin lỗi, bạn có quá nhiều thiết bị đã được liên kết, thử tháo bỏ vài cái...</string>
<!--PassphrasePromptActivity-->
<string name="PassphrasePromptActivity_enter_passphrase">Điền vào cụm từ mã hóa</string>
<string name="PassphrasePromptActivity_enter_passphrase">Điền vào cụm từ mật khẩu</string>
<string name="PassphrasePromptActivity_watermark_content_description">Biểu tượng TextSecure</string>
<string name="PassphrasePromptActivity_ok_button_content_description">Gửi phần cụm từ mã hóa</string>
<string name="PassphrasePromptActivity_invalid_passphrase_exclamation">Cụm từ mã hóa không hợp lệ!</string>
<string name="PassphrasePromptActivity_ok_button_content_description">Nộp cụm từ mật khẩu</string>
<string name="PassphrasePromptActivity_invalid_passphrase_exclamation">Cụm từ mật khẩu không đúng!</string>
<!--PlayServicesProblemFragment-->
<string name="PlayServicesProblemFragment_the_version_of_google_play_services_you_have_installed_is_not_functioning">Phiên bản của Dịch vụ Google Play bạn sử dụng không hoạt động đúng. Xin vui lòng cài đặt lại Google Play và thử lại.</string>
<!--RatingManager-->
<string name="RatingManager_rate_this_app">Cho điểm ứng dụng này</string>
<string name="RatingManager_if_you_enjoy_using_this_app_please_take_a_moment">Nếu bạn thích dùng ứng dụng này, xin vui lòng nhín chút thì giờ để cho điểm nó.</string>
<string name="RatingManager_rate_now">Cho điểm bây giờ!</string>
<string name="RatingManager_no_thanks">Xin miễn</string>
<string name="RatingManager_later">Sau này</string>
<!--RecipientPreferencesActivity-->
<string name="RecipientPreferenceActivity_block_this_contact_question">Chặn liên lạc này?</string>
<string name="RecipientPreferenceActivity_you_will_no_longer_see_messages_from_this_user">Bạn sẽ không thấy tin nhắn của người dùng này gửi.</string>
<string name="RecipientPreferenceActivity_block">Chặn</string>
<string name="RecipientPreferenceActivity_unblock_this_contact_question">Không chặn liên lạc này?</string>
<string name="RecipientPreferenceActivity_are_you_sure_you_want_to_unblock_this_contact">Bạn có chắc là không chặn liên lạc này?</string>
<string name="RecipientPreferenceActivity_unblock">Không chặn</string>
<string name="RecipientPreferenceActivity_enabled">Mở</string>
<string name="RecipientPreferenceActivity_disabled">Tắt</string>
<!--RegistrationActivity-->
<string name="RegistrationActivity_connect_with_textsecure">Kết Nối Dùng TextSecure</string>
<string name="RegistrationActivity_select_your_country">Chọn lựa quốc gia</string>
<string name="RegistrationActivity_you_must_specify_your_country_code">Bạn phải cho biết mã số quốc gia bạn</string>
<string name="RegistrationActivity_you_must_specify_your_phone_number">Bạn phải cho biết số điện thoại của bạn</string>
<string name="RegistrationActivity_select_your_country">Chọn quốc gia bạn</string>
<string name="RegistrationActivity_you_must_specify_your_country_code">Bạn phải cho biết
mã số quốc gia bạn</string>
<string name="RegistrationActivity_you_must_specify_your_phone_number">Bạn phải cho biết số
điện thoại của bạn</string>
<string name="RegistrationActivity_invalid_number">Số không đúng</string>
<string name="RegistrationActivity_the_number_you_specified_s_is_invalid">Số bạn cung cấp (%s) không đúng.</string>
<string name="RegistrationActivity_unsupported">Không hỗ trợ</string>
<string name="RegistrationActivity_sorry_this_device_is_not_supported_for_data_messaging">Xin lỗi,
thiết bị này không được hỗ trợ cho thông tin qua đường truyền dữ liệu. Thiết bị chạy phiên bản Android cũ
hơn 4.0 phải có Tài khoản Google đăng ký. Thiết bị chạy Android 4.0 hay mới hơn không cần
có tài khoản Google, nhưng phải cài đặt ứng dụng Cửa Hàng.
</string>
<string name="RegistrationActivity_we_will_now_verify_that_the_following_number_is_associated_with_your_device_s">
Xem lại lần nữa để bảo đảm đây là số của bạn! Chúng tôi sắp sửa phối kiểm nó với một SMS.
</string>
<string name="RegistrationActivity_continue">Tiếp tục</string>
<string name="RegistrationActivity_edit">Sửa</string>
<!--RegistrationProblemsActivity-->
<string name="RegistrationProblemsActivity_possible_problems">Có thể có vấn đề</string>
<!--RegistrationProgressActivity-->
<string name="RegistrationProgressActivity_verifying_number">Kiểm Chứng Số</string>
<string name="RegistrationProgressActivity_verifying_number">Kiểm Chứng Số Điện Thoại</string>
<string name="RegistrationProgressActivity_edit_s">Sửa %s</string>
<string name="RegistrationProgressActivity_registration_complete">Đăng ký hoàn tất!</string>
<string name="RegistrationProgressActivity_you_must_enter_the_code_you_received_first">Trước hết, bạn phải điền vào mã số đã nhận...</string>
<string name="RegistrationProgressActivity_connecting">Đang kết nối</string>
<string name="RegistrationProgressActivity_connecting_for_verification">Kết nối để kiểm chứng</string>
<string name="RegistrationProgressActivity_network_error">Lỗi mạng!</string>
<string name="RegistrationProgressActivity_unable_to_connect">Không thể kết nối. Xin xem lại đường truyền mạng và thử lại.</string>
<string name="RegistrationProgressActivity_verification_failed">Kiểm chứng thất bại!</string>
<string name="RegistrationProgressActivity_the_verification_code_you_submitted_is_incorrect">Mã số kiểm chứng bạn nạp vào không đúng. Xin thử lại.</string>
<string name="RegistrationProgressActivity_too_many_attempts">Thử quá nhiều lần</string>
<string name="RegistrationProgressActivity_youve_submitted_an_incorrect_verification_code_too_many_times">Bạn nạp vào mã số kiểm chứng sai quá nhiều lần. Xin chờ vài phút rồi thử lại.</string>
<string name="RegistrationProgressActivity_requesting_call">Yêu cầu cú gọi</string>
<string name="RegistrationProgressActivity_requesting_incoming_call">Yêu cầu cú gọi vào kiểm chứng...</string>
<string name="RegistrationProgressActivity_server_error">Lỗi máy chủ</string>
<string name="RegistrationProgressActivity_the_server_encountered_an_error">Máy chủ gặp lỗi. Xin thử lại.</string>
<string name="RegistrationProgressActivity_too_many_requests">Quá nhiều yêu cầu!</string>
<string name="RegistrationProgressActivity_youve_already_requested_a_voice_call">Bạn đã yêu cầu cú gọi gần đây. Bạn có thể yêu cầu lần nữa trong vòng 20 phút.</string>
<string name="RegistrationProgressActivity_registration_conflict">Đăng ký gặp va chạm</string>
<string name="RegistrationProgressActivity_this_number_is_already_registered_on_a_different">Số điện thoại này đã đăng ký rồi trên một máy chủ TextSecure khác (CyanogenMod?). Bạn phải tháo bỏ đăng ký bên đó trước khi đăng ký bên này.</string>
<!--RegistrationService-->
<string name="RegistrationService_registration_complete">Đăng ký hoàn tất</string>
<string name="RegistrationService_textsecure_registration_has_successfully_completed">Đăng ký TextSecure đã hoàn tất tốt đẹp.</string>
<string name="RegistrationService_registration_error">Có lỗi đăng ký</string>
<string name="RegistrationService_textsecure_registration_has_encountered_a_problem">Đăng ký TextSecure gặp phải vấn đề.</string>
<!--SmsMessageRecord-->
<string name="SmsMessageRecord_received_corrupted_key_exchange_message">Nhận được thông tin
@@ -184,100 +340,143 @@ trao đổi chìa khóa bị hỏng!</string>
<string name="SmsMessageRecord_received_key_exchange_message_for_invalid_protocol_version">
Nhận thông tin trao đổi chìa khóa về phiên bản giao thức không hợp lệ.</string>
<string name="SmsMessageRecord_received_message_with_unknown_identity_key_click_to_process">
Nhận thông tin về chìa khóa nhận diện không rõ. Bấm để xử lý và hiển thị.</string>
<string name="SmsMessageRecord_received_updated_but_unknown_identity_information">Nhận được cập nhật nhưng không rõ thông tin nhận diện. Nhấn vào để kiểm nhận tên nhận diện.</string>
<string name="SmsMessageRecord_secure_session_ended">Phiên an toàn chấm dứt.</string>
Nhận thông tin về chìa khóa danh tính không rõ. Bấm để xử lý và hiển thị.</string>
<string name="SmsMessageRecord_received_updated_but_unknown_identity_information">Nhận được cập nhật nhưng không rõ thông tin danh tính. Nhấn vào để kiểm nhận danh tính.</string>
<string name="SmsMessageRecord_secure_session_ended">Phiên bảo mật chấm dứt.</string>
<string name="SmsMessageRecord_duplicate_message">Tin nhắn trùng lập.</string>
<!--ThreadRecord-->
<string name="ThreadRecord_left_the_group">Rời nhóm...</string>
<string name="TheadRecord_secure_session_ended">Phiên an toàn chấm dứt.</string>
<string name="TheadRecord_secure_session_ended">Phiên bảo mật chấm dứt.</string>
<string name="ThreadRecord_draft">Nháp:</string>
<!--VerifyIdentityActivity-->
<string name="VerifyIdentityActivity_you_do_not_have_an_identity_key">Bạn không có chìa khóa nhận diện.</string>
<string name="VerifyIdentityActivity_recipient_has_no_identity_key">Người nhận không có chìa khóa nhận diện.</string>
<string name="VerifyIdentityActivity_recipient_has_no_identity_key_exclamation">Người nhận không có chìa khóa nhận diện!</string>
<string name="VerifyIdentityActivity_you_do_not_have_an_identity_key">Bạn không có chìa khóa danh tính.</string>
<string name="VerifyIdentityActivity_recipient_has_no_identity_key">Người nhận không có chìa khóa danh tính.</string>
<string name="VerifyIdentityActivity_recipient_has_no_identity_key_exclamation">Người nhận không có chìa khóa danh tính!</string>
<string name="VerifyIdentityActivity_scan_their_key_to_compare">Quét chìa khóa của họ để so sánh</string>
<string name="VerifyIdentityActivity_get_my_key_scanned">Quét chìa khóa của tôi</string>
<string name="VerifyIdentityActivity_warning_the_scanned_key_does_not_match_please_check_the_fingerprint_text_carefully">CẢNH BÁO, chìa khóa được quét KHÔNG trùng hợp! Xin xem lại cho kỹ càng văn bản dấu tay.</string>
<string name="VerifyIdentityActivity_not_verified_exclamation">CHƯA Kiểm Chứng!</string>
<string name="VerifyIdentityActivity_their_key_is_correct_it_is_also_necessary_to_verify_your_key_with_them_as_well">Chìa khóa của họ đúng. Cũng cần phải kiểm chứng chìa khóa của bạn với họ luôn.</string>
<string name="VerifyIdentityActivity_verified_exclamation">Đã kiểm chứng!</string>
<string name="VerifyIdentityActivity_you_don_t_have_an_identity_key_exclamation">Bạn không có chìa khóa nhận diện!</string>
<string name="VerifyIdentityActivity_you_don_t_have_an_identity_key_exclamation">Bạn không có chìa khóa danh tính!</string>
<!--ViewIdentityActivity-->
<string name="ViewIdentityActivity_you_do_not_have_an_identity_key">Bạn không có chìa khóa nhận diện!</string>
<string name="ViewIdentityActivity_you_do_not_have_an_identity_key">Bạn không có chìa khóa danh tính!</string>
<string name="ViewIdentityActivity_scan_to_compare">Quét để so sánh</string>
<string name="ViewIdentityActivity_get_scanned_to_compare">Quét để so sánh</string>
<string name="ViewIdentityActivity_warning_the_scanned_key_does_not_match_exclamation">CẢNH BÁO, chìa khóa được quét KHÔNG trùng hợp!</string>
<string name="ViewIdentityActivity_not_verified_exclamation">CHƯA kiểm chứng!</string>
<string name="ViewIdentityActivity_the_scanned_key_matches_exclamation">Chìa khóa được quét trùng hợp!</string>
<string name="ViewIdentityActivity_verified_exclamation">Đã kiểm chứng!</string>
<string name="ViewIdentityActivity_my_identity_fingerprint">Dấu vân tay danh tính của tôi</string>
<!--KeyExchangeInitiator-->
<string name="KeyExchangeInitiator_initiate_despite_existing_request_question">Khởi tạo mặc dầu đã có yêu cầu rồi?</string>
<string name="KeyExchangeInitiator_youve_already_sent_a_session_initiation_request_to_this_recipient_are_you_sure">Bạn đã gửi yêu cầu khởi tạo phiên trao đổi với người nhận này, bạn có chắc là muốn gửi lần nữa? Điều này sẽ làm yêu cầu đầu tiên mất hiệu lực.</string>
<string name="KeyExchangeInitiator_send">Gửi</string>
<!--MessageDisplayHelper-->
<string name="MessageDisplayHelper_bad_encrypted_message">Tin nhắn mã hóa bị hỏng...</string>
<string name="MessageDisplayHelper_decrypting_please_wait">Đang giải mã, xin chờ...</string>
<string name="MessageDisplayHelper_message_encrypted_for_non_existing_session">Tin nhắn được mã hóa cho phiên trao đổi không tồn tại...</string>
<string name="MessageDisplayHelper_message_encrypted_for_non_existing_session">Tin nhắn được mã hóa cho phiên trao đổi đã dứt...</string>
<!--EncryptingSmsDatabase-->
<string name="EncryptingSmsDatabase_error_decrypting_message">Có lỗi giải mã tin nhắn.</string>
<!--ThreadDatabase-->
<string name="ThreadDatabase_error_decrypting_message">Có lỗi giải mã tin nhắn.</string>
<!--MmsDatabase-->
<string name="MmsDatabase_connecting_to_mms_server">Đang kết nối vào máy chủ MMS...</string>
<string name="MmsDatabase_downloading_mms">Đang tải xuống MMS...</string>
<string name="MmsDatabase_mms_download_failed">Tải MMS xuống thất bại!</string>
<string name="MmsDatabase_downloading">Đang tải xuống...</string>
<string name="MmsDatabase_mms_pending_download">Nhấn vào để cấu hình thiết đặt MMS và tiếp tục tải xuống.</string>
<string name="MmsDatabase_error_decrypting_message">Có lỗi giải mã tin nhắn.</string>
<!--MmsMessageRecord-->
<string name="MmsMessageRecord_decrypting_mms_please_wait">Giải mã MMS, xin chờ...</string>
<string name="MmsMessageRecord_bad_encrypted_mms_message">Tin nhắn MMS mã hóa bị hỏng...</string>
<string name="MmsMessageRecord_mms_message_encrypted_for_non_existing_session">Tin nhắn MMS được mã hóa cho phiên trao đổi không tồn tại...</string>
<string name="MmsMessageRecord_mms_message_encrypted_for_non_existing_session">Tin nhắn MMS được mã hóa cho phiên trao đổi đã dứt...</string>
<!--MuteDialog-->
<string name="MuteDialog_mute_notifications">Tạm im thông báo</string>
<!--ApplicationMigrationService-->
<string name="ApplicationMigrationService_import_in_progress">Đang tiến hành việc nhập vào</string>
<string name="ApplicationMigrationService_importing_text_messages">Đang nhập vào tin nhắn</string>
<!--KeyCachingService-->
<string name="KeyCachingService_textsecure_passphrase_cached">Chạm vào để mở.</string>
<string name="KeyCachingService_textsecure_passphrase_cached_with_lock">Chạm vào để mở, hoặc chạm vào ổ khóa để đóng lại.</string>
<string name="KeyCachingService_passphrase_cached">TextSecure được mở khóa</string>
<string name="KeyCachingService_lock">Khóa bằng mật khẩu</string>
<string name="KeyCachingService_lock">Khóa bằng cụm từ mật khẩu</string>
<!--MessageNotifier-->
<string name="MessageNotifier_d_new_messages_in_d_conversations">%1$d tin nhắn mới trong %2$d cuộc chuyện trò</string>
<string name="MessageNotifier_most_recent_from_s">Gần đây nhất từ: %1$s</string>
<string name="MessageNotifier_locked_message">Tin nhắn bị khóa...</string>
<string name="MessageNotifier_media_message_with_text">Tin nhắn đa phương tiện: %s</string>
<string name="MessageNotifier_no_subject">(Không tựa đề)</string>
<string name="MessageNotifier_message_delivery_failed">Phân phối tin nhắn bị thất bại.</string>
<string name="MessageNotifier_failed_to_deliver_message">Thất bại trong việc phân phối tin.</string>
<string name="MessageNotifier_error_delivering_message">Có lỗi khi phân phối tin.</string>
<string name="MessageNotifier_mark_all_as_read">Đánh dấu tất cả đã đọc</string>
<string name="MessageNotifier_mark_read">Đánh dấu đã đọc</string>
<string name="MessageNotifier_media_message">Tin nhắn đa phương tiện</string>
<string name="MessageNotifier_reply">Hồi âm</string>
<!--QuickResponseService-->
<string name="QuickResponseService_quick_response_unavailable_when_TextSecure_is_locked">Không có tính năng trả lời nhanh trong lúc TextSecure bị khóa!</string>
<string name="QuickResponseService_problem_sending_message">Có vấn đề khi gửi tin nhắn!</string>
<!--SingleRecipientNotificationBuilder-->
<string name="SingleRecipientNotificationBuilder_new_textsecure_message">Tin nhắn TextSecure mới</string>
<string name="SingleRecipientNotificationBuilder_contents_hidden">Nội dung được ẩn</string>
<!--change_passphrase_activity-->
<string name="change_passphrase_activity__old_passphrase">MẬT KHẨU CŨ:</string>
<string name="change_passphrase_activity__new_passphrase">MẬT KHẨU MỚI:</string>
<string name="change_passphrase_activity__repeat_new_passphrase">LẬP LẠI MẬT KHẨU MỚI:</string>
<string name="change_passphrase_activity__old_passphrase">CỤM TỪ MẬT KHẨU CŨ:</string>
<string name="change_passphrase_activity__new_passphrase">CỤM TỪ MẬT KHẨU MỚI:</string>
<string name="change_passphrase_activity__repeat_new_passphrase">LẬP LẠI CỤM TỪ MẬT KHẨU MỚI:</string>
<!--contact_selection_activity-->
<string name="contact_selection_activity__enter_name_or_number">Điền vào tên hoặc số</string>
<!--contact_selection_group_activity-->
<string name="contact_selection_group_activity__no_contacts">Không có địa chỉ liên lạc.</string>
<string name="contact_selection_group_activity__finding_contacts">Nạp danh sách liên hệ...</string>
<string name="contact_selection_group_activity__finding_contacts">Nạp danh sách liên lạc..</string>
<!--single_contact_selection_activity-->
<string name="SingleContactSelectionActivity_contact_photo">Hình Liên Hệ</string>
<string name="SingleContactSelectionActivity_contact_photo">Hình của Liên Lạc</string>
<!--ContactSelectionListFragment-->
<string name="ContactSelectionlistFragment_select_for">Chọn cho</string>
<!--blocked_contacts_fragment-->
<string name="blocked_contacts_fragment__no_blocked_contacts">Không có liên lạc bị chặn...</string>
<!--contact_selection_recent_activity-->
<string name="contact_selection_recent_activity__no_recent_calls">Không cú gọi gần đây</string>
<!--conversation_title_view-->
<string name="conversation_title_view__conversation_muted">Chuyện trò tạm im</string>
<!--conversation_activity-->
<string name="conversation_activity__type_message_push">Gửi tin nhắn TextSecure</string>
<string name="conversation_activity__type_message_sms_insecure">Gửi SMS không mã hóa</string>
<string name="conversation_activity__type_message_mms_insecure">Gửi MMS không mã hóa</string>
<string name="conversation_activity__send">Gửi</string>
<string name="conversation_activity__remove">Bỏ</string>
<string name="conversation_activity__window_description">Chuyện trò với %1$s</string>
<string name="conversation_activity__compose_description">Soạn tin nhắn</string>
<string name="conversation_activity__emoji_toggle_description">Chuyển bàn phím biểu tượng cảm xúc</string>
<string name="conversation_activity__attachment_thumbnail">Ảnh nhỏ tập tin đính kèm</string>
<string name="conversation_activity__quick_attachment_drawer_toggle_description">Chuyển ngăn kéo tập tin đính kèm</string>
<!--conversation_item-->
<string name="conversation_item__mms_downloading_description">Tải xuống tin nhắn đa phương tiện</string>
<string name="conversation_item__mms_image_description">Tin nhắn đa phương tiện</string>
<string name="conversation_item__secure_message_description">Tin nhắn có mã hóa</string>
<!--conversation_item_sent-->
<string name="conversation_item_sent__download">Tải xuống</string>
<string name="conversation_item_sent__downloading">Đang tải xuống</string>
<string name="conversation_item_sent__send_failed_indicator_description">Gửi thất bại</string>
<string name="conversation_item_sent__pending_approval_description">Chờ Chấp Thuận</string>
<string name="conversation_item_sent__delivered_description">Đã giao</string>
<!--conversation_item_received-->
<string name="conversation_item_received__download">Tải xuống</string>
<string name="conversation_item_received__contact_photo_description">Hình liên lạc</string>
<string name="conversation_item_received__downloading">Đang tải xuống</string>
<!--conversation_fragment_cab-->
<string name="conversation_fragment_cab__batch_selection_mode">Dạng chọn hàng loạt</string>
<string name="conversation_fragment_cab__batch_selection_amount">%s được chọn</string>
<!--country_selection_fragment-->
<string name="country_selection_fragment__loading_countries">Nạp tên quốc gia...</string>
<string name="country_selection_fragment__search">Tìm kiếm</string>
<!--device_list_fragment-->
<string name="device_list_fragment__no_devices_linked">Không có thiết bị liên kết...</string>
<!--log_submit_activity-->
<string name="log_submit_activity__log_fetch_failed">Không lấy được ký sự từ thiết bị của bạn. Thay vào đó, bạn có thể dùng ADB để lấy ký sự gỡ lỗi (debug).</string>
<string name="log_submit_activity__log_fetch_failed">Không lấy được ký sự từ thiết bị của bạn. Thay vào đó, bạn có thể dùng ADB để lấy ký sự lỗi (debug).</string>
<string name="log_submit_activity__thanks">Cám ơn sự trợ giúp của bạn!</string>
<string name="log_submit_activity__submitting">Đang nộp</string>
<string name="log_submit_activity__posting_logs">Gửi ký sự lên gist...</string>
<!--database_migration_activity-->
<string name="database_migration_activity__would_you_like_to_import_your_existing_text_messages">Bạn có muốn nhập các tin nhắn hiện có vào trong cơ sở dữ liệu có mã hóa của TextSecure?</string>
<string name="database_migration_activity__the_default_system_database_will_not_be_modified">Cơ sở dữ liệu mặc định của hệ thống sẽ không bị sửa hay bị thay đổi gì cả.</string>
@@ -286,46 +485,85 @@ Nhận thông tin về chìa khóa nhận diện không rõ. Bấm để xử l
<string name="database_migration_activity__this_could_take_a_moment_please_be_patient">Việc này có thể mất chút ít thời gian. Xin kiên nhẫn chờ, chúng tôi sẽ thông báo khi việc nhập hoàn tất.</string>
<string name="database_migration_activity__importing">ĐANG NHẬP VÀO</string>
<!--database_upgrade_activity-->
<string name="database_upgrade_activity__updating_database">Cập nhật cơ sở dữ liệu...</string>
<string name="export_fragment__export_plaintext_backup">Xuất sao lưu văn bản thường</string>
<string name="export_fragment__export_a_plaintext_backup_compatible_with">
Xuất sao lưu thường tương thích với \'Sao Lưu và Phục Hồi SMS\' ra thẻ nhớ SD.</string>
<string name="import_fragment__import_the_database_from_the_default_system">Nhập cơ sở dữ liệu của ứng dụng tin nhắn mặc định của hệ thống.</string>
Xuất sao lưu văn bản thường tương thích với ứng dụng \'SMSBackup And Restore\' ra thẻ nhớ SD.</string>
<string name="import_fragment__import_system_sms_database">Nhập cơ sở dữ liệu SMS của hệ thống</string>
<string name="import_fragment__import_the_database_from_the_default_system">Nhập cơ sở dữ liệu
của ứng dụng tin nhắn mặc định của hệ thống.</string>
<string name="import_fragment__import_encrypted_backup">Nhập sao lưu có mã hóa</string>
<string name="import_fragment__restore_a_previously_exported_encrypted_textsecure_backup">
Phục hồi sao lưu TextSecure có mã hóa từng xuất ra trước đó.</string>
<string name="import_fragment__import_plaintext_backup">Nhập sao lưu văn bản thường</string>
<string name="import_fragment__import_a_plaintext_backup_file">
Nhập tập tin sao lưu thường-không mã hóa. Tương thích với \'Sao Lưu và Phục Hồi SMS\'.</string>
Nhập tập tin sao lưu thường-không mã hóa. Tương thích với ứng dụng \'SMSBackup And Restore\'.</string>
<!--media_overview_activity-->
<string name="media_overview_activity__no_images">Không hình ảnh</string>
<!--message_recipients_list_item-->
<string name="message_recipients_list_item__verify">KIỂM CHỨNG</string>
<string name="message_recipients_list_item__resend">GỬI LẠI</string>
<!--MmsPreferencesFragment-->
<string name="MmsPreferencesFragment__manual_mms_settings_are_required">Phải làm thiết đặt MMS bằng tay cho điện thoại của bạn.</string>
<string name="MmsPreferencesFragment__enabled">Mở</string>
<string name="MmsPreferencesFragment__disabled">Tắt</string>
<string name="MmsPreferencesFragment__not_set">Chưa thiết lập</string>
<string name="MmsPreferencesFragment__invalid_uri">Văn bản điền vào không phải là đường dẫn hợp lệ</string>
<string name="MmsPreferencesFragment__invalid_host">Văn bản điền vào không phải là máy chủ hợp lệ</string>
<!--GroupUtil-->
<string name="GroupUtil_joined_the_group">%1$s tham gia vào nhóm.</string>
<string name="GroupUtil_group_updated">Nhóm được cập nhật.</string>
<string name="GroupUtil_title_is_now">Tựa đề bây giờ là \'%1$s\'.</string>
<!--prompt_passphrase_activity-->
<string name="prompt_passphrase_activity__unlock">Mở khóa</string>
<!--prompt_mms_activity-->
<string name="prompt_mms_activity__textsecure_requires_mms_settings_to_deliver_media_and_group_messages">TextSecure </string>
<string name="prompt_mms_activity__textsecure_requires_mms_settings_to_deliver_media_and_group_messages">TextSecure đòi hỏi thiết đặt MMS chuyển giao tin nhắn nhóm và phương tiện truyền thông qua hãng điện thoại. Thiết bị của bạn không thấy có sẵn các thông tin này, đôi khi xảy ra vì thiết bị bị khóa lại và những cấu hình giới hạn khác.</string>
<string name="prompt_mms_activity__to_send_media_and_group_messages_click_ok">Để gửi tin nhắn đa phương tiện hoặc tin nhắn nhóm, bấm \'OK\' và hoàn tất các thiết đặt cần thiết. Thiết đặt MMS cho nhà mạng di động có thể tìm thấy bằng cách tìm \'your carrier APN\'. Bạn chỉ cần làm bước này một lần.</string>
<!--recipient_preferences_activity-->
<string name="recipient_preference_activity__blocked">BỊ CHẶN</string>
<!--recipient_preferences-->
<string name="recipient_preferences__mute_conversation">Tạm im chuyện trò</string>
<string name="recipient_preferences__disable_notifications_for_this_conversation">Tắt thông báo cho cuộc chuyện trò này</string>
<string name="recipient_preferences__ringtone">Nhạc chuông</string>
<string name="recipient_preferences__vibrate">Rung</string>
<string name="recipient_preferences__block">Chặn</string>
<string name="recipient_preferences__color">Màu</string>
<string name="recipient_preferences__color_for_this_contact">Màu cho liên lạc này</string>
<!--registration_activity-->
<string name="registration_activity__textsecure_can_use_instant_messages_to_avoid_sms_charges_when_communicating_with_other_textsecure_users">
Kiểm chứng số điện thoại của bạn để kết nối với TextSecure.
</string>
<string name="registration_activity__your_country">QUỐC GIA BẠN</string>
<string name="registration_activity__your_country_code_and_phone_number">MÃ SỐ QUỐC GIA VÀ
SỐ ĐIỆN THOẠI BẠN</string>
<string name="registration_activity__phone_number">SỐ ĐIỆN THOẠI</string>
<string name="registration_activity__register">Đăng ký</string>
<string name="registration_activity__registration_will_transmit_some_contact_information_to_the_server_temporariliy">Thủ tục đăng ký sẽ gửi một số chi tiết liên lạc đến máy chủ. Chúng không được lưu trữ lại.</string>
<string name="registration_activity__powered_by_twilio">Cung cấp nguồn lực bởi twilio</string>
<!--registration_problems-->
<string name="registration_problems__some_possible_problems_include">Một số vấn đề có thể gặp
bao gồm:</string>
<string name="registration_problems__sms_interceptors">Chặn bắt SMS.</string>
<string name="registration_problems__some_third_party_text_messaging_clients_such_as_handcent">
Một số ứng dụng tin nhắn bên thứ ba, như Handcent hay GoSMS hành xử không hay và chận bắt tất cả tin nhắn SMS đi vào. Kiểm lại trong các ứng dụng đó xem coi có tin nhắn nào có hàng chữ \'Mã số kiểm chứng TextSecure của bạn:\', trong trường hợp đó bạn cần cấu hình ứng dụng đó cho phép tin nhắn đi xuyên qua.</string>
Một số ứng dụng tin nhắn bên thứ ba, như Handcent hay GoSMS hành xử không hay
và chận bắt tất cả tin nhắn SMS đi vào. Kiểm lại trong các ứng dụng đó xem coi có tin
nhắn nào có hàng chữ \'Mã số kiểm chứng TextSecure của bạn:\', trong trường hợp đó
bạn cần cấu hình ứng dụng đó cho phép tin nhắn đi xuyên qua.</string>
<string name="registration_problems__incorrect_number">Số không đúng.</string>
<string name="registration_problems__please_checkt_to_make_sure_you_entered_your_number_correctly">
Xin xem lại số điền vào có đúng không, và dạng số phù hợp với vùng bạn cư ngụ. </string>
Xin xem lại số điền vào có đúng không,
và dạng số phù hợp với vùng bạn cư ngụ. </string>
<string name="registration_problems__google_voice">Google Voice.</string>
<string name="registration_problems__textsecure_will_not_work_with_google_voice_numbers">
TextSecure không chạy với số của Google Voice.</string>
<!--registration_progress_activity-->
<string name="registration_progress_activity__voice_verification">Kiểm chứng giọng nói</string>
<string name="registration_progress_activity__textsecure_can_also_call_you_to_verify_your_number">
TextSecure cũng có thể gọi bạn để kiểm chứng số điện thoại. Nhấn vào \'Gọi Tôi\' và điền vào dưới đây mã 6 số mà bạn nghe được qua cú gọi.</string>
TextSecure cũng có thể gọi bạn để kiểm chứng số điện thoại. Nhấn vào \'Gọi Tôi\' và
điền vào dưới đây mã 6 số
mà bạn nghe được qua cú gọi.</string>
<string name="registration_progress_activity__verify">Kiểm chứng</string>
<string name="registration_progress_activity__call_me">Gọi tôi</string>
<string name="registration_progress_activity__edit_number">Sửa số</string>
<string name="registration_progress_activity__connectivity_error">Có lỗi kết nối.</string>
<string name="registration_progress_activity__textsecure_was_unable_to_connect_to_the_push_service">
@@ -334,51 +572,129 @@ TextSecure không thể kết nối vào dịch vụ đẩy.</string>
thể gặp bao gồm:</string>
<string name="registration_progress_activity__no_network_connectivity">Không có đường
truyền mạng.</string>
<string name="registration_progress_activity__your_device_needs_network_connectivity">Thiết
bị của bạn cần kết nối mạng để dùng chức năng này của TextSecure. Xem lại để bảo đảm
là nó có kết nối 3G hoặc Wi-Fi.
</string>
<string name="registration_progress_activity__restrictive_firewall">Tường lửa ngăn chận.</string>
<string name="registration_progress_activity__if_you_are_connected_via_wifi_its_possible_that_there_is_a_firewall">
Nếu bạn kết nối qua Wi-Fi, có thể có tường lửa chặn không cho truy cập vào
máy chủ TextSecure. Thử một Wi-Fi hoặc mạng di động khác.
</string>
<string name="registration_progress_activity__textsecure_will_now_automatically_verify_your_number_with_a_confirmation_sms_message">
TextSecure bây giờ sẽ tự động kiểm chứng số điện thoại bạn với một tin nhắn SMS xác nhận.</string>
<string name="registration_progress_activity__connecting">Đang kết nối...</string>
<string name="registration_progress_activity__waiting_for_sms_verification">Chờ kiểm
chứng SMS...</string>
<string name="registration_progress_activity__registering_with_server">Đăng ký với máy chủ...</string>
<string name="registration_progress_activity__this_couild_take_a_moment_please_be_patient">Việc này có thể mất chút thời gian. Xin kiên nhãn chờ, chúng tôi sẽ báo cho bạn biết khi kiểm chứng xong.</string>
<string name="registration_progress_activity__this_couild_take_a_moment_please_be_patient">Việc này
có thể mất chút thời gian. Xin kiên nhãn chờ, chúng tôi sẽ báo cho bạn biết khi kiểm chứng xong.
</string>
<string name="registration_progress_activity__textsecure_timed_out_while_waiting_for_a_verification_sms_message">
TextSecure hết hạn chờ trong lúc đợi tin nhắn SMS xác nhận.</string>
<string name="registration_progress_activity__sms_verification_failed">Kiểm chứng SMS thất bại.</string>
TextSecure hết hạn chờ trong lúc đợi tin nhắn SMS xác nhận.
</string>
<string name="registration_progress_activity__sms_verification_failed">Kiểm chứng
SMS thất bại.
</string>
<string name="registration_progress_activity__generating_keys">Tạo chìa khóa...</string>
<string name="registration_progress_activity__alert">Cảnh báo</string>
<string name="registration_progress_activity__telephone">Điện thoại</string>
<string name="registration_progress_activity__check">Đánh dấu</string>
<!--recipients_panel-->
<string name="recipients_panel__to"><small>Điền vào tên hoặc số</small></string>
<string name="recipients_panel__add_member">Thêm thành viên</string>
<!--verify_identity_activity-->
<string name="verify_identity_activity__their_identity_they_read">Tên nhận diện của họ (họ đọc):</string>
<string name="verify_identity_activity__your_identity_you_read">Tên nhận diện của bạn (bạn đọc):</string>
<string name="verify_identity_activity__their_identity_they_read">Danh tính của họ (họ đọc lên):</string>
<string name="verify_identity_activity__your_identity_you_read">Danh tính của bạn (bạn đọc lên):</string>
<!--message_details_header-->
<string name="message_details_header__issues_need_your_attention">Một số việc cần bạn lưu ý.</string>
<string name="message_details_header__sent">Đã gửi</string>
<string name="message_details_header__received">Đã nhận</string>
<string name="message_details_header__via">Qua</string>
<string name="message_details_header__to">Đến:</string>
<string name="message_details_header__from">Từ:</string>
<string name="message_details_header__with">Với:</string>
<!--AndroidManifest.xml-->
<string name="AndroidManifest__enter_passphrase">Điền vào cụm từ mã hóa</string>
<string name="AndroidManifest__change_passphrase">Đi mật khẩu</string>
<string name="AndroidManifest__create_passphrase">Tạo cụm từ mật khẩu</string>
<string name="AndroidManifest__enter_passphrase">Điền vào cụm từ mật khẩu</string>
<string name="AndroidManifest__select_contacts">Chọn liên lạc</string>
<string name="AndroidManifest__textsecure_detected">Tìm thấy TextSecure</string>
<string name="AndroidManifest__public_identity_key">Chìa khóa danh tính công cộng</string>
<string name="AndroidManifest__change_passphrase">Đổi cụm từ mật khẩu</string>
<string name="AndroidManifest__verify_identity">Kiểm chứng danh tính</string>
<string name="AndroidManifest__log_submit">Nộp ký sự dò lỗi</string>
<string name="AndroidManifest__media_preview">Xem Trước Truyền Thông</string>
<string name="AndroidManifest__media_overview">Tất cả hình ảnh</string>
<string name="AndroidManifest__media_overview_named">Tất cả hình ảnh với %1$s</string>
<string name="AndroidManifest__message_details">Chi tiết Tin Nhắn</string>
<string name="AndroidManifest_manage_linked_devices">Quản trị các thiết bị liên kết</string>
<!--arrays.xml-->
<string name="arrays__import_export">Xuất / nhập</string>
<string name="arrays__my_identity_key">Chìa khóa danh tính của tôi</string>
<string name="arrays__use_default">Dùng mặc định</string>
<string name="arrays__use_custom">Dùng tùy chỉnh</string>
<string name="arrays__mute_for_one_hour">Tạm im 1 tiếng</string>
<string name="arrays__mute_for_two_hours">Tạm im 2 tiếng</string>
<string name="arrays__mute_for_one_day">Tạm im 1 ngày</string>
<string name="arrays__mute_for_seven_days">Tạm im 7 ngày</string>
<string name="arrays__settings_default">Thiết đặt mặc định</string>
<string name="arrays__enabled">Mở</string>
<string name="arrays__disabled">Tắt</string>
<string name="arrays__name_and_message">Tên và tin nhắn</string>
<string name="arrays__name_only">Tên thôi</string>
<string name="arrays__neither">Không cái nào cả</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="other">%d tiếng</item>
</plurals>
<!--preferences.xml-->
<string name="preferences__general">Tổng quát</string>
<string name="preferences__sms_mms">SMS và MMS</string>
<string name="preferences__pref_all_sms_title">Nhận tất cả SMS</string>
<string name="preferences__pref_all_mms_title">Nhận tất cả MMS</string>
<string name="preferences__use_textsecure_for_viewing_and_storing_all_incoming_text_messages">Dùng TextSecure cho tất cả tin nhắn gửi vào</string>
<string name="preferences__use_textsecure_for_viewing_and_storing_all_incoming_multimedia_messages">Dùng TextSecure cho tất cả tin nhắn đa phương tiện gửi vào</string>
<string name="preferences__input_settings">Thiết Đặt Cách Nhập</string>
<string name="preferences__enable_enter_key_title">Mở phím Enter</string>
<string name="preferences__replace_smiley_with_enter_key">Thay phím mặt cười với phím Enter</string>
<string name="preferences__pref_enter_sends_title">Phím Enter gửi đi</string>
<string name="preferences__pressing_the_enter_key_will_send_text_messages">Nhấn phím Enter sẽ gửi tin nhắn đi</string>
<string name="preferences__display_settings">Hiển thị thiết đặt</string>
<string name="preferences__choose_identity">Chọn danh tính</string>
<string name="preferences__choose_your_contact_entry_from_the_contacts_list">Chọn khoản mục liên lạc của bạn trong danh sách liên lạc.</string>
<string name="preferences__change_passphrase">Đổi mật khẩu</string>
<string name="preferences__change_my_passphrase">Đổi mật khẩu của tôi</string>
<string name="preferences__change_passphrase">Đổi cụm từ mật khẩu</string>
<string name="preferences__change_my_passphrase">Đổi cụm từ mật khẩu của tôi</string>
<string name="preferences__enable_passphrase">Mở cụm từ mật khẩu</string>
<string name="preferences__passphrase_summary">Cụm từ mật khẩu %s</string>
<string name="preferences__enable_lock_screen_for_messages">Mở khóa màn hình cho tin nhắn</string>
<string name="preferences__screen_security">An ninh màn hình</string>
<string name="preferences__forget_passphrase_from_memory_after_some_interval">Quên mật khẩu trong bộ nhớ sau một khoảng thời gian</string>
<string name="preferences__timeout_passphrase">Hết hạn nhớ mật khẩu</string>
<string name="preferences__screen_security_summary">An ninh màn hình %s</string>
<string name="preferences__disable_screen_security_to_allow_screen_shots">Chặn không cho chụp màn hình trong danh sách mới nhất và bên trong ứng dụng</string>
<string name="preferences__forget_passphrase_from_memory_after_some_interval">Quên cụm từ mật khẩu đi trong bộ nhớ sau một khoảng thời gian</string>
<string name="preferences__timeout_passphrase">Hết hạn nhớ cụm từ mật khẩu</string>
<string name="preferences__pref_timeout_interval_dialogtitle">Chọn thời gian hết hạn nhớ cụm từ mật khẩu</string>
<string name="preferences__pref_timeout_interval_title">Thời gian hết hạn</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">Khoảng thời gian chờ trước khi quên đi mật khẩu trong bộ nhớ</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">Khoảng thời gian chờ trước khi quên đi cụm từ mật khẩu trong bộ nhớ</string>
<string name="preferences__notifications">Thông báo</string>
<string name="preferences__enable_message_notifications">Mở thông báo tin nhắn</string>
<string name="preferences__led_color">Màu LED</string>
<string name="preferences__led_color_unknown">Không rõ</string>
<string name="preferences__pref_led_blink_title">Mô hình chớp nháy LED</string>
<string name="preferences__pref_led_blink_custom_pattern_set">Mô hình chớp nháy LED tùy biến thiết lập xong!</string>
<string name="preferences__pref_led_blink_custom_pattern_title">Tùy chỉnh mô hình chớp nháy LED</string>
<string name="preferences__pref_led_blink_custom_pattern_on_for">Mở trong vòng:</string>
<string name="preferences__pref_led_blink_custom_pattern_off_for">Tắt trong vòng:</string>
<string name="preferences__pref_led_blink_custom_pattern_set">Mô hình chớp nháy LED tùy chỉnh thiết lập xong!</string>
<string name="preferences__sound">Âm thanh</string>
<string name="preferences__change_notification_sound">Đổi âm thanh thông báo</string>
<string name="preferences__inthread_notifications">Thông báo trong-luồng</string>
<string name="preferences__inthread_notifications">Thông báo bên trong chuỗi</string>
<string name="preferences__play_inthread_notifications">Phát âm thanh thông báo khi xem một chuyện trò đang diễn ra</string>
<string name="preferences__repeat_alerts">Lập lại cảnh báo</string>
<string name="preferences__never">Không bao giờ</string>
<string name="preferences__one_time">Một lần</string>
<string name="preferences__two_times">Hai lần</string>
<string name="preferences__three_times">Ba lần</string>
<string name="preferences__five_times">Năm lần</string>
<string name="preferences__ten_times">Mười lần</string>
<string name="preferences__vibrate">Rung</string>
<string name="preferences__also_vibrate_when_notified">Cũng rung khi thông báo</string>
<string name="preferences__minutes">phút</string>
@@ -394,31 +710,55 @@ TextSecure hết hạn chờ trong lúc đợi tin nhắn SMS xác nhận.</stri
<string name="preferences__fast">Nhanh</string>
<string name="preferences__normal">Bình thường</string>
<string name="preferences__slow">Chậm</string>
<string name="preferences__custom">Tùy biến</string>
<string name="preferences__custom">Tùy chỉnh</string>
<string name="preferences__advanced">Cao cấp</string>
<string name="preferences__privacy">Riêng tư</string>
<string name="preferences__mms_user_agent">MMS User Agent</string>
<string name="preferences__advanced_mms_access_point_names">Thiết đặt MMS bằng tay</string>
<string name="preferences__enable_manual_mms">Dùng thiết đặt MMS bằng tay</string>
<string name="preferences__override_system_mms_settings">Thay các thiết đặt MMS của hệ thống bằng dữ liệu dưới đây.</string>
<string name="preferences__mmsc_url">Đường dẫn MMSC</string>
<string name="preferences__mms_proxy_host">Máy chủ Proxy MMS</string>
<string name="preferences__mms_proxy_port">Cổng Proxy MMS</string>
<string name="preferences__mmsc_username">Tên người dùng MMSC</string>
<string name="preferences__mmsc_password">Mật khẩu MMSC</string>
<string name="preferences__sms_delivery_reports">Báo cáo phân phối SMS</string>
<string name="preferences__request_a_delivery_report_for_each_sms_message_you_send">Yêu cầu có báo cáo phân phối cho từng tin nhắn SMS gửi đi</string>
<string name="preferences__automatically_delete_older_messages_once_a_conversation_thread_exceeds_a_specified_length">Tự động xóa các tin nhắn cũ một khi mạch chuyện trò vượt quá độ dài đã ấn định</string>
<string name="preferences__automatically_delete_older_messages_once_a_conversation_thread_exceeds_a_specified_length">Tự động xóa các tin nhắn cũ một khi chuỗi chuyện trò vượt quá độ dài đã ấn định</string>
<string name="preferences__delete_old_messages">Xóa tin nhắn cũ</string>
<string name="preferences__conversation_length_limit">Giới hạn độ dài cuộc chuyện trò</string>
<string name="preferences__trim_all_threads_now">Rút ngắn tất cả các mạch chuyện trò ngay bây giờ</string>
<string name="preferences__scan_through_all_conversation_threads_and_enforce_conversation_length_limits">Xem xét các mạch chuyện trò và buộc tuân theo giới hạn độ dài</string>
<string name="preferences__trim_all_threads_now">Rút ngắn mọi chuỗi ngay bây giờ</string>
<string name="preferences__scan_through_all_conversation_threads_and_enforce_conversation_length_limits">Xem xét các chuỗi chuyện trò và buộc tuân theo giới hạn độ dài</string>
<string name="preferences__light_theme">Lợt</string>
<string name="preferences__dark_theme">Đậm</string>
<string name="preferences__appearance">Diện mạo</string>
<string name="preferences__theme">Hình nền</string>
<string name="preferences__theme_summary">Hình nền %s</string>
<string name="preferences__default">Mặc định</string>
<string name="preferences__language">Ngôn ngữ</string>
<string name="preferences__submit_debug_log">Nạp ký sự gỡ lỗi</string>
<string name="preferences__language_summary">Ngôn ngữ %s</string>
<string name="preferences__textsecure_messages">Tin nhắn TextSecure</string>
<string name="preferences__use_the_data_channel_for_communication_with_other_textsecure_users">
Nhắn tin bảo mật miễn phí đến giới sử dụng TextSecure và Signal
</string>
<string name="preferences__submit_debug_log">Nộp ký sự dò lỗi</string>
<string name="preferences__support_wifi_calling">Dạng tương thích \"Gọi qua WiFi\"</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">Mở nếu thiết bị bạn dùng SMS/MMS qua WiFi (chỉ mở lên khi \'Gọi qua WiFi\' được mở lên trong thiết bị) </string>
<string name="preferences_app_protection__blocked_contacts">Chặn các liên lạc</string>
<string name="preferences_notifications__display_in_notifications">Hiển thị trong phần thông báo</string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->
<!--contact_selection_list-->
<string name="contact_selection_list__menu_select_all">Chọn tất cả</string>
<string name="contact_selection_list__menu_unselect_all">Không chọn tất cả</string>
<string name="contact_selection_list__header_textsecure_users">NGƯỜI DÙNG TEXTSECURE</string>
<string name="contact_selection_list__header_other">TẤT CẢ LIÊN HỆ</string>
<string name="contact_selection_list__unknown_contact">Tin nhắn mới cho...</string>
<!--contact_selection-->
<string name="contact_selection__menu_finished">Xong</string>
<!--refreshing push directory from menu-->
<string name="push_directory__menu_refresh">Làm tươi danh sách liên lạc</string>
<!--conversation_callable-->
<string name="conversation_callable__menu_call">Gọi</string>
<!--conversation_context-->
@@ -428,24 +768,41 @@ TextSecure hết hạn chờ trong lúc đợi tin nhắn SMS xác nhận.</stri
<string name="conversation_context__menu_forward_message">Chuyển tiếp tin nhắn</string>
<string name="conversation_context__menu_resend_message">Gửi lại tin nhắn</string>
<!--conversation_context_image-->
<string name="conversation_context_image__save_attachment">Lưu đính kèm</string>
<!--conversation_insecure-->
<string name="conversation_insecure__invite">Mời</string>
<!--conversation_insecure_no_push-->
<string name="conversation_insecure__menu_start_secure_session">Bắt đầu phiên bảo mật</string>
<string name="conversation_insecure__security">An Ninh</string>
<!--conversation_list_batch-->
<string name="conversation_list_batch__menu_delete_selected">Xóa cái chọn</string>
<string name="conversation_list_batch__menu_select_all">Chọn tất cả</string>
<!--conversation_list-->
<string name="conversation_list__menu_search">Tìm kiếm</string>
<!--conversation_list_item_view-->
<string name="conversation_list_item_view__contact_photo_image">Hình Chân Dung Liên Lạc</string>
<string name="conversation_list_item_view__error_alert">Cảnh báo lỗi</string>
<!--conversation_list_fragment-->
<string name="conversation_list_fragment__fab_content_description">Chuyện trò mới</string>
<!--conversation_secure_verified-->
<string name="conversation_secure_verified__menu_security">An Ninh</string>
<string name="conversation_secure_verified__menu_verify_identity">Kiểm chứng danh tính</string>
<string name="conversation_secure_verified__menu_abort_secure_session">Chấm dứt phiên bảo mật</string>
<!--conversation_muted-->
<string name="conversation_muted__unmute">Tắt tạm im</string>
<!--conversation_unmuted-->
<string name="conversation_unmuted__mute_notifications">Tạm im thông báo</string>
<!--conversation-->
<string name="conversation__menu_add_attachment">Thêm tập tin đính kèm</string>
<string name="conversation__menu_update_group">Cập nhật nhóm</string>
<string name="conversation__menu_delete_thread">Xóa luồng</string>
<string name="conversation__menu_leave_group">Rời nhóm</string>
<string name="conversation__menu_delete_thread">Xóa chuỗi</string>
<string name="conversation__menu_view_media">Tất cả hình ảnh</string>
<string name="conversation__menu_conversation_settings">Thiết đặt chuyện trò</string>
<!--conversation_popup-->
<string name="conversation_popup__menu_expand_popup">Nới rộng khung popup</string>
<!--conversation_callable-->
<string name="conversation_add_to_contacts__menu_add_to_contacts">Thêm vào danh sách liên lạc</string>
<!--conversation_group_options-->
<string name="convesation_group_options__recipients_list">Danh sách người nhận</string>
<string name="conversation_group_options__delivery">Phân phối</string>
@@ -456,15 +813,35 @@ TextSecure hết hạn chờ trong lúc đợi tin nhắn SMS xác nhận.</stri
<string name="key_scanning__menu_get_scanned_to_compare">Quét để so sánh</string>
<string name="key_scanning__menu_scan_to_compare">Quét để so sánh</string>
<!--text_secure_normal-->
<string name="text_secure_normal__menu_new_message">Tin nhắn mới</string>
<string name="text_secure_normal__menu_new_group">Tạo nhóm mới</string>
<string name="text_secure_normal__menu_settings">Thiết Đặt</string>
<string name="text_secure_normal__menu_clear_passphrase">Khóa</string>
<string name="text_secure_normal__mark_all_as_read">Đánh dấu tất cả đã đọc</string>
<!--reminder_header-->
<string name="reminder_header_expired_build">Phiên bản TextSecure này đã hết hạn!</string>
<string name="reminder_header_expired_build_details">Tin nhắn không còn gửi đi được nữa, xin vui lòng cập nhật lên phiên bản mới nhất.</string>
<string name="reminder_header_sms_default_title">Dùng làm ứng dụng SMS mặc định?</string>
<string name="reminder_header_sms_default_text">Nhấn để biến TextSecure thành ứng dụng SMS mặc định.</string>
<string name="reminder_header_sms_import_title">Nhập SMS của hệ thống?</string>
<string name="reminder_header_sms_import_text">Nhấn để sao chép tin nhắn SMS trong điện thoại vào cơ sở dữ liệu mã hóa.</string>
<string name="reminder_header_push_title">Mở tin nhắn TextSecure?</string>
<string name="reminder_header_push_text">Nhấn để có nhắn tin nhanh, bảo mật chắc và không tốn phí SMS.</string>
<!--MediaPreviewActivity-->
<string name="MediaPreviewActivity_you">Bạn</string>
<string name="MediaPreviewActivity_cant_display">Không xem trước hình được</string>
<string name="MediaPreviewActivity_unssuported_media_type">Không hỗ trợ dạng truyền thông này</string>
<!--media_preview-->
<string name="media_preview__save_title">Lưu</string>
<!--media_preview_activity-->
<string name="media_preview_activity__image_content_description">Xem trước Hình</string>
<!--Trimmer-->
<string name="trimmer__deleting">Đang xóa</string>
<string name="trimmer__deleting_old_messages">Đang xóa tin nhắn cũ...</string>
<string name="trimmer__old_messages_successfully_deleted">Xóa thành công các tin nhắn cũ</string>
<!--transport_selection_list_item-->
<string name="transport_selection_list_item__transport_icon">Biểu tượng chuyển tải</string>
<!--quick_attachment_drawer-->
<string name="quick_camera_unavailable">Máy ảnh không có sẵn</string>
<!--EOF-->
</resources>

View File

@@ -41,6 +41,7 @@
<!--AttchmentManager-->
<string name="AttachmentManager_cant_open_media_selection">无法找到用于选择媒体的应用。</string>
<!--AttachmentTypeSelectorAdapter-->
<string name="AttachmentTypeSelectorAdapter_camera">相机</string>
<string name="AttachmentTypeSelectorAdapter_picture">图片</string>
<string name="AttachmentTypeSelectorAdapter_video">视频</string>
<string name="AttachmentTypeSelectorAdapter_audio">音频</string>
@@ -80,6 +81,7 @@
<string name="ConversationActivity_select_contact_info">选择联系信息</string>
<string name="ConversationActivity_compose_message">编写信息</string>
<string name="ConversationActivity_sorry_there_was_an_error_setting_your_attachment">抱歉,设置附件时出现错误。</string>
<string name="ConversationActivity_the_gif_you_selected_was_too_big">您选择的GIF太大了</string>
<string name="ConversationActivity_sorry_the_selected_video_exceeds_message_size_restrictions">抱歉,选择的视频超过了消息限制(%1$skB</string>
<string name="ConversationActivity_sorry_the_selected_audio_exceeds_message_size_restrictions">抱歉,选择的音频超过了信息大小限制(%1$skB</string>
<string name="ConversationActivity_recipient_is_not_a_valid_sms_or_email_address_exclamation">收件人不是有效的短信或电子邮件地址!</string>
@@ -143,11 +145,16 @@
<string name="DateUtils_now">现在</string>
<string name="DateUtils_minutes_ago">%d 分钟</string>
<!--DeviceListActivity-->
<string name="DeviceListActivity_unlink_s">断开 \'%s\' </string>
<string name="DeviceListActivity_by_unlinking_this_device_it_will_no_longer_be_able_to_send_or_receive">如果断开此设备的连接,它将不能再接受或发送信息。</string>
<string name="DeviceListActivity_network_connection_failed">网络连接失败...</string>
<string name="DeviceListActivity_try_again">再试一次</string>
<string name="DeviceListActivity_unlinking_device">正在断开设备…</string>
<string name="DeviceListActivity_unlinking_device_no_ellipsis">正在断开设备</string>
<string name="DeviceListActivity_network_failed">网络失败!</string>
<!--DeviceListItem-->
<string name="DeviceListItem_unnamed_device">未命名的设备</string>
<string name="DeviceListItem_linked_s">已连接 %s</string>
<string name="DeviceListItem_last_active_s">最后活动 %s</string>
<!--ShareActivity-->
<string name="ShareActivity_share_with">共享给</string>
@@ -236,9 +243,13 @@
<string name="DeviceProvisioningActivity_content_bullets">
- 读取你所有的信息
\n - 以你的名义发送信息</string>
<string name="DeviceProvisioningActivity_content_progress_title">正在连接设备</string>
<string name="DeviceProvisioningActivity_content_progress_content">正在连接新设备</string>
<string name="DeviceProvisioningActivity_content_progress_success">设备已连接!</string>
<string name="DeviceProvisioningActivity_content_progress_no_device">没有找到设备。</string>
<string name="DeviceProvisioningActivity_content_progress_network_error">网络错误。</string>
<string name="DeviceProvisioningActivity_content_progress_key_error">无效的二维码。</string>
<string name="DeviceProvisioningActivity_sorry_you_have_too_many_devices_linked_already">抱歉,您已经连接了太多的设备,请先移除一些…</string>
<!--PassphrasePromptActivity-->
<string name="PassphrasePromptActivity_enter_passphrase">输入密钥</string>
<string name="PassphrasePromptActivity_watermark_content_description">TextSecure 图标</string>
@@ -375,6 +386,7 @@
<string name="KeyCachingService_passphrase_cached">TextSecure 已解锁</string>
<string name="KeyCachingService_lock">使用密码锁定</string>
<!--MessageNotifier-->
<string name="MessageNotifier_d_new_messages_in_d_conversations">%1$d 新信息是在 %2$d 中的会话</string>
<string name="MessageNotifier_most_recent_from_s">最新的邮件来自:%1$s</string>
<string name="MessageNotifier_locked_message">锁定的信息…</string>
<string name="MessageNotifier_media_message_with_text">媒体信息:%s</string>
@@ -390,6 +402,8 @@
<string name="QuickResponseService_quick_response_unavailable_when_TextSecure_is_locked">当 TextSecure 处于锁定状态时,快速回复不可用!</string>
<string name="QuickResponseService_problem_sending_message">发送信息时遇到问题!</string>
<!--SingleRecipientNotificationBuilder-->
<string name="SingleRecipientNotificationBuilder_new_textsecure_message">新 TextSecure 信息</string>
<string name="SingleRecipientNotificationBuilder_contents_hidden">内容隐藏</string>
<!--change_passphrase_activity-->
<string name="change_passphrase_activity__old_passphrase">旧密码:</string>
<string name="change_passphrase_activity__new_passphrase">新密码:</string>
@@ -441,6 +455,7 @@
<string name="country_selection_fragment__loading_countries">正在读取国家列表...</string>
<string name="country_selection_fragment__search">搜索</string>
<!--device_list_fragment-->
<string name="device_list_fragment__no_devices_linked">没有连接的设备...</string>
<!--log_submit_activity-->
<string name="log_submit_activity__log_fetch_failed">无法获取您设备上的日志不过您仍然可以以ADB方式来获得您的调试日志。</string>
<string name="log_submit_activity__thanks">感谢!</string>
@@ -588,6 +603,7 @@ TextSecure 在等待短信验证时超时。</string>
<string name="AndroidManifest__media_overview">所有图片</string>
<string name="AndroidManifest__media_overview_named">所有图片和%1$s</string>
<string name="AndroidManifest__message_details">消息详情</string>
<string name="AndroidManifest_manage_linked_devices">管理已连接的设备</string>
<!--arrays.xml-->
<string name="arrays__import_export">导入/导出</string>
<string name="arrays__my_identity_key">我的身份密钥</string>
@@ -600,6 +616,12 @@ TextSecure 在等待短信验证时超时。</string>
<string name="arrays__settings_default">设为默认</string>
<string name="arrays__enabled">启用</string>
<string name="arrays__disabled">禁用</string>
<string name="arrays__name_and_message">名字和信息</string>
<string name="arrays__name_only">仅名字</string>
<string name="arrays__neither">都不</string>
<string name="arrays__images">图片</string>
<string name="arrays__audio">音频</string>
<string name="arrays__video">视频</string>
<!--plurals.xml-->
<plurals name="hours_ago">
<item quantity="other">%d 小时</item>
@@ -633,6 +655,7 @@ TextSecure 在等待短信验证时超时。</string>
<string name="preferences__pref_timeout_interval_title">超时间隔</string>
<string name="preferences__the_amount_of_time_to_wait_before_forgetting_passphrase">忘记缓存密码的等待时间</string>
<string name="preferences__notifications">通知</string>
<string name="preferences__enable_message_notifications">启用消息通知</string>
<string name="preferences__led_color">LED颜色</string>
<string name="preferences__led_color_unknown">未知</string>
<string name="preferences__pref_led_blink_title">LED闪烁规律</string>
@@ -682,6 +705,7 @@ TextSecure 在等待短信验证时超时。</string>
<string name="preferences__request_a_delivery_report_for_each_sms_message_you_send">请求发送报告</string>
<string name="preferences__automatically_delete_older_messages_once_a_conversation_thread_exceeds_a_specified_length">对话超过指定数量时自动删除旧的信息</string>
<string name="preferences__delete_old_messages">删除旧信息</string>
<string name="preferences__chats">聊天与媒体</string>
<string name="preferences__conversation_length_limit">对话数量限制</string>
<string name="preferences__trim_all_threads_now">现在处理所有对话</string>
<string name="preferences__scan_through_all_conversation_threads_and_enforce_conversation_length_limits">查找并处理所有超过限制的对话</string>
@@ -700,6 +724,7 @@ TextSecure 在等待短信验证时超时。</string>
<string name="preferences__support_wifi_calling">“Wifi呼叫”兼容模式</string>
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">如果您的设备使用WiFi发送彩信或短信请启用此选项(仅当\"WiFi 语音呼叫\"在您的设备上启用时才可用)</string>
<string name="preferences_app_protection__blocked_contacts">已屏蔽的联系人</string>
<string name="preferences_notifications__display_in_notifications">在通知中显示</string>
<!--****************************************-->
<!--menus-->
<!--****************************************-->

View File

@@ -39,6 +39,7 @@
<item>Tibetan བོད་སྐད།</item>
<item>Türkçe</item>
<item>Ukrainian Український</item>
<item>Vietnamese Tiếng Việt</item>
</string-array>
<string-array name="language_values">
@@ -79,6 +80,7 @@
<item>bo</item>
<item>tr</item>
<item>uk</item>
<item>vi</item>
</string-array>
<string-array name="minutes_hours">
@@ -191,4 +193,29 @@
<item>contact</item>
<item>none</item>
</string-array>
<!-- discrete MIME type (the part before the "/") -->
<string-array name="pref_media_download_entries">
<item>image</item>
<item>audio</item>
<item>video</item>
</string-array>
<string-array name="pref_media_download_values">
<item>@string/arrays__images</item>
<item>@string/arrays__audio</item>
<item>@string/arrays__video</item>
</string-array>
<string-array name="pref_media_download_mobile_data_default">
<item>image</item>
</string-array>
<string-array name="pref_media_download_wifi_default">
<item>image</item>
<item>audio</item>
<item>video</item>
</string-array>
<string-array name="pref_media_download_roaming_default" />
</resources>

View File

@@ -106,6 +106,7 @@
<attr name="pref_ic_app_protection" format="reference" />
<attr name="pref_ic_appearance" format="reference" />
<attr name="pref_ic_storage" format="reference" />
<attr name="pref_ic_chats" format="reference" />
<attr name="pref_ic_devices" format="reference" />
<attr name="pref_ic_advanced" format="reference" />

View File

@@ -762,6 +762,10 @@
<string name="arrays__name_only">Name only</string>
<string name="arrays__neither">Neither</string>
<string name="arrays__images">Images</string>
<string name="arrays__audio">Audio</string>
<string name="arrays__video">Video</string>
<!-- plurals.xml -->
<plurals name="hours_ago">
<item quantity="one">%d hour</item>
@@ -847,6 +851,7 @@
<string name="preferences__request_a_delivery_report_for_each_sms_message_you_send">Request a delivery report for each SMS message you send</string>
<string name="preferences__automatically_delete_older_messages_once_a_conversation_thread_exceeds_a_specified_length">Automatically delete older messages once a conversation thread exceeds a specified length</string>
<string name="preferences__delete_old_messages">Delete old messages</string>
<string name="preferences__chats">Chats and media</string>
<string name="preferences__conversation_length_limit">Conversation length limit</string>
<string name="preferences__trim_all_threads_now">Trim all threads now</string>
<string name="preferences__scan_through_all_conversation_threads_and_enforce_conversation_length_limits">Scan through all conversation threads and enforce conversation length limits</string>
@@ -867,6 +872,11 @@
<string name="preferences__enable_if_your_device_supports_sms_mms_delivery_over_wifi">Enable if your device uses SMS/MMS delivery over WiFi (only enable when \'WiFi Calling\' is enabled on your device)</string>
<string name="preferences_app_protection__blocked_contacts">Blocked contacts</string>
<string name="preferences_notifications__display_in_notifications">Display in notifications</string>
<string name="preferences_chats__when_using_mobile_data">When using mobile data</string>
<string name="preferences_chats__when_using_wifi">When using Wi-Fi</string>
<string name="preferences_chats__when_roaming">When roaming</string>
<string name="preferences_chats__media_auto_download">Media auto-download</string>
<string name="preferences_chats__message_trimming">Message trimming</string>
<!-- **************************************** -->
<!-- menus -->

View File

@@ -79,6 +79,8 @@
<item name="android:windowBackground">@color/gray5</item>
<!--<item name="android:windowContentOverlay">@drawable/compat_actionbar_shadow_background</item>-->
<item name="conversation_list_item_background_selected">@drawable/list_selected_holo_light</item>
<item name="conversation_list_item_background_unread">@drawable/conversation_list_item_unread_background</item>
<item name="conversation_list_item_background_read">@drawable/conversation_list_item_background</item>
<item name="conversation_list_item_count_color">#66333333</item>
<item name="conversation_list_item_contact_color">#FF333333</item>
<item name="conversation_list_item_subject_color">#FF444444</item>
@@ -167,11 +169,11 @@
<item name="reminder_header_background">#ff1d85d7</item>
<item name="pref_ic_sms_mms">@drawable/ic_message_black</item>
<item name="pref_ic_sms_mms">@drawable/ic_textsms_black_32dp</item>
<item name="pref_ic_notifications">@drawable/ic_notifications_black</item>
<item name="pref_ic_app_protection">@drawable/ic_app_protection_black</item>
<item name="pref_ic_appearance">@drawable/ic_brightness_6_black</item>
<item name="pref_ic_storage">@drawable/ic_delete_black</item>
<item name="pref_ic_chats">@drawable/ic_forum_black_32dp</item>
<item name="pref_ic_devices">@drawable/ic_devices_black_48dp</item>
<item name="pref_ic_advanced">@drawable/ic_advanced_black</item>
@@ -190,6 +192,8 @@
<item name="android:windowBackground">@color/black</item>
<item name="md_dark_theme">true</item>
<item name="conversation_list_item_background_selected">@drawable/list_selected_holo_dark</item>
<item name="conversation_list_item_background_unread">@drawable/conversation_list_item_unread_background_dark</item>
<item name="conversation_list_item_background_read">@drawable/conversation_list_item_background</item>
<item name="conversation_list_item_count_color">#66dddddd</item>
<item name="conversation_list_item_contact_color">#ffdddddd</item>
<item name="conversation_list_item_subject_color">#ffdddddd</item>
@@ -277,11 +281,11 @@
<item name="reminder_header_background">@color/textsecure_primary_dark</item>
<item name="pref_ic_sms_mms">@drawable/ic_message_gray</item>
<item name="pref_ic_sms_mms">@drawable/ic_textsms_grey_32dp</item>
<item name="pref_ic_notifications">@drawable/ic_notifications_gray</item>
<item name="pref_ic_app_protection">@drawable/ic_app_protection_gray</item>
<item name="pref_ic_appearance">@drawable/ic_brightness_6_gray</item>
<item name="pref_ic_storage">@drawable/ic_delete_gray</item>
<item name="pref_ic_chats">@drawable/ic_forum_grey_32dp</item>
<item name="pref_ic_devices">@drawable/ic_devices_grey600_48dp</item>
<item name="pref_ic_advanced">@drawable/ic_advanced_gray</item>

View File

@@ -17,9 +17,9 @@
android:title="@string/preferences__appearance"
android:icon="?pref_ic_appearance"/>
<Preference android:key="preference_category_storage"
android:title="@string/preferences__delete_old_messages"
android:icon="?pref_ic_storage"/>
<Preference android:key="preference_category_chats"
android:title="@string/preferences__chats"
android:icon="?pref_ic_chats"/>
<!--<Preference android:key="preference_category_devices"-->
<!--android:title="Devices"-->

View File

@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:key="media_download" android:title="@string/preferences_chats__media_auto_download">
<com.h6ah4i.android.compat.preference.MultiSelectListPreferenceCompat
android:title="@string/preferences_chats__when_using_mobile_data"
android:key="pref_media_download_mobile"
android:defaultValue="@array/pref_media_download_mobile_data_default"
android:persistent="true"
android:entries="@array/pref_media_download_values"
android:entryValues="@array/pref_media_download_entries" />
<com.h6ah4i.android.compat.preference.MultiSelectListPreferenceCompat
android:title="@string/preferences_chats__when_using_wifi"
android:key="pref_media_download_wifi"
android:defaultValue="@array/pref_media_download_wifi_default"
android:persistent="true"
android:entries="@array/pref_media_download_values"
android:entryValues="@array/pref_media_download_entries" />
<com.h6ah4i.android.compat.preference.MultiSelectListPreferenceCompat
android:title="@string/preferences_chats__when_roaming"
android:key="pref_media_download_roaming"
android:defaultValue="@array/pref_media_download_roaming_default"
android:persistent="true"
android:entries="@array/pref_media_download_values"
android:entryValues="@array/pref_media_download_entries" />
</PreferenceCategory>
<PreferenceCategory android:key="message_trimming" android:title="@string/preferences_chats__message_trimming">
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:defaultValue="false"
android:key="pref_trim_threads"
android:summary="@string/preferences__automatically_delete_older_messages_once_a_conversation_thread_exceeds_a_specified_length"
android:title="@string/preferences__delete_old_messages" />
<EditTextPreference android:defaultValue="500"
android:key="pref_trim_length"
android:title="@string/preferences__conversation_length_limit"
android:inputType="number"
android:dependency="pref_trim_threads" />
<Preference android:key="pref_trim_now"
android:title="@string/preferences__trim_all_threads_now"
android:summary="@string/preferences__scan_through_all_conversation_threads_and_enforce_conversation_length_limits"
android:dependency="pref_trim_threads" />
</PreferenceCategory>
</PreferenceScreen>

View File

@@ -52,6 +52,7 @@
<ListPreference android:key="pref_notification_privacy"
android:title="@string/preferences_notifications__display_in_notifications"
android:dependency="pref_key_enable_notifications"
android:defaultValue="all"
android:entries="@array/pref_notification_privacy_entries"
android:entryValues="@array/pref_notification_privacy_values"/>

View File

@@ -1,21 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<org.thoughtcrime.securesms.components.SwitchPreferenceCompat
android:defaultValue="false"
android:key="pref_trim_threads"
android:summary="@string/preferences__automatically_delete_older_messages_once_a_conversation_thread_exceeds_a_specified_length"
android:title="@string/preferences__delete_old_messages" />
<EditTextPreference android:defaultValue="500"
android:key="pref_trim_length"
android:title="@string/preferences__conversation_length_limit"
android:inputType="number"
android:dependency="pref_trim_threads" />
<Preference android:key="pref_trim_now"
android:title="@string/preferences__trim_all_threads_now"
android:summary="@string/preferences__scan_through_all_conversation_threads_and_enforce_conversation_length_limits"
android:dependency="pref_trim_threads" />
</PreferenceScreen>

View File

@@ -29,6 +29,7 @@ import org.thoughtcrime.securesms.dependencies.TextSecureCommunicationModule;
import org.thoughtcrime.securesms.jobs.GcmRefreshJob;
import org.thoughtcrime.securesms.jobs.persistence.EncryptingJobSerializer;
import org.thoughtcrime.securesms.jobs.requirements.MasterSecretRequirementProvider;
import org.thoughtcrime.securesms.jobs.requirements.MediaNetworkRequirementProvider;
import org.thoughtcrime.securesms.jobs.requirements.ServiceRequirementProvider;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.whispersystems.jobqueue.JobManager;
@@ -49,9 +50,11 @@ import dagger.ObjectGraph;
*/
public class ApplicationContext extends Application implements DependencyInjector {
private JobManager jobManager;
private JobManager jobManager;
private ObjectGraph objectGraph;
private MediaNetworkRequirementProvider mediaNetworkRequirementProvider = new MediaNetworkRequirementProvider();
public static ApplicationContext getInstance(Context context) {
return (ApplicationContext)context.getApplicationContext();
}
@@ -103,11 +106,16 @@ public class ApplicationContext extends Application implements DependencyInjecto
.withJobSerializer(new EncryptingJobSerializer())
.withRequirementProviders(new MasterSecretRequirementProvider(this),
new ServiceRequirementProvider(this),
new NetworkRequirementProvider(this))
new NetworkRequirementProvider(this),
mediaNetworkRequirementProvider)
.withConsumerThreads(5)
.build();
}
public void notifyMediaControlEvent() {
mediaNetworkRequirementProvider.notifyMediaControlEvent();
}
private void initializeDependencyInjection() {
this.objectGraph = ObjectGraph.create(new TextSecureCommunicationModule(this),
new AxolotlStorageModule(this));

View File

@@ -32,7 +32,7 @@ import org.thoughtcrime.securesms.preferences.AppProtectionPreferenceFragment;
import org.thoughtcrime.securesms.preferences.AppearancePreferenceFragment;
import org.thoughtcrime.securesms.preferences.NotificationsPreferenceFragment;
import org.thoughtcrime.securesms.preferences.SmsMmsPreferenceFragment;
import org.thoughtcrime.securesms.preferences.StoragePreferenceFragment;
import org.thoughtcrime.securesms.preferences.ChatsPreferenceFragment;
import org.thoughtcrime.securesms.service.KeyCachingService;
import org.thoughtcrime.securesms.util.DynamicLanguage;
import org.thoughtcrime.securesms.util.DynamicTheme;
@@ -54,7 +54,7 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA
private static final String PREFERENCE_CATEGORY_NOTIFICATIONS = "preference_category_notifications";
private static final String PREFERENCE_CATEGORY_APP_PROTECTION = "preference_category_app_protection";
private static final String PREFERENCE_CATEGORY_APPEARANCE = "preference_category_appearance";
private static final String PREFERENCE_CATEGORY_STORAGE = "preference_category_storage";
private static final String PREFERENCE_CATEGORY_CHATS = "preference_category_chats";
private static final String PREFERENCE_CATEGORY_DEVICES = "preference_category_devices";
private static final String PREFERENCE_CATEGORY_ADVANCED = "preference_category_advanced";
@@ -130,8 +130,8 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA
.setOnPreferenceClickListener(new CategoryClickListener(masterSecret, PREFERENCE_CATEGORY_APP_PROTECTION));
this.findPreference(PREFERENCE_CATEGORY_APPEARANCE)
.setOnPreferenceClickListener(new CategoryClickListener(masterSecret, PREFERENCE_CATEGORY_APPEARANCE));
this.findPreference(PREFERENCE_CATEGORY_STORAGE)
.setOnPreferenceClickListener(new CategoryClickListener(masterSecret, PREFERENCE_CATEGORY_STORAGE));
this.findPreference(PREFERENCE_CATEGORY_CHATS)
.setOnPreferenceClickListener(new CategoryClickListener(masterSecret, PREFERENCE_CATEGORY_CHATS));
// this.findPreference(PREFERENCE_CATEGORY_DEVICES)
// .setOnPreferenceClickListener(new CategoryClickListener(masterSecret, PREFERENCE_CATEGORY_DEVICES));
this.findPreference(PREFERENCE_CATEGORY_ADVANCED)
@@ -154,8 +154,8 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA
.setSummary(AppProtectionPreferenceFragment.getSummary(getActivity()));
this.findPreference(PREFERENCE_CATEGORY_APPEARANCE)
.setSummary(AppearancePreferenceFragment.getSummary(getActivity()));
this.findPreference(PREFERENCE_CATEGORY_STORAGE)
.setSummary(StoragePreferenceFragment.getSummary(getActivity()));
this.findPreference(PREFERENCE_CATEGORY_CHATS)
.setSummary(ChatsPreferenceFragment.getSummary(getActivity()));
}
private class CategoryClickListener implements Preference.OnPreferenceClickListener {
@@ -184,8 +184,8 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredActionBarA
case PREFERENCE_CATEGORY_APPEARANCE:
fragment = new AppearancePreferenceFragment();
break;
case PREFERENCE_CATEGORY_STORAGE:
fragment = new StoragePreferenceFragment();
case PREFERENCE_CATEGORY_CHATS:
fragment = new ChatsPreferenceFragment();
break;
case PREFERENCE_CATEGORY_DEVICES:
Intent intent = new Intent(getActivity(), DeviceListActivity.class);

View File

@@ -300,7 +300,8 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
addAttachmentContactInfo(data.getData());
break;
case GROUP_EDIT:
this.recipients = RecipientFactory.getRecipientsForIds(this, data.getLongArrayExtra(GroupCreateActivity.GROUP_RECIPIENT_EXTRA), true);
recipients = RecipientFactory.getRecipientsForIds(this, data.getLongArrayExtra(GroupCreateActivity.GROUP_RECIPIENT_EXTRA), true);
recipients.addListener(this);
titleView.setTitle(recipients);
setBlockedUserState(recipients);
supportInvalidateOptionsMenu();
@@ -883,7 +884,8 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
if (recipients != null) {
long[] ids = recipients.getIds();
Log.w("ConversationActivity", "Looking up new recipients...");
recipients = RecipientFactory.getRecipientsForIds(context, ids, false);
recipients = RecipientFactory.getRecipientsForIds(context, ids, true);
recipients.addListener(ConversationActivity.this);
titleView.setTitle(recipients);
}
}

View File

@@ -47,6 +47,7 @@ import org.thoughtcrime.securesms.crypto.MasterSecret;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.MmsDatabase;
import org.thoughtcrime.securesms.database.MmsSmsDatabase;
import org.thoughtcrime.securesms.database.PartDatabase;
import org.thoughtcrime.securesms.database.SmsDatabase;
import org.thoughtcrime.securesms.database.documents.IdentityKeyMismatch;
import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord;
@@ -156,6 +157,7 @@ public class ConversationItem extends LinearLayout implements Recipient.Recipien
if (mediaThumbnail != null) {
mediaThumbnail.setThumbnailClickListener(new ThumbnailClickListener());
mediaThumbnail.setOnLongClickListener(new MultiSelectLongClickListener());
mediaThumbnail.setDownloadClickListener(new ThumbnailDownloadClickListener());
}
}
@@ -275,7 +277,7 @@ public class ConversationItem extends LinearLayout implements Recipient.Recipien
mediaThumbnail.setImageResource(masterSecret, messageRecord.getId(),
messageRecord.getDateReceived(),
((MediaMmsMessageRecord)messageRecord).getSlideDeckFuture());
mediaThumbnail.setShowProgress(!messageRecord.isFailed() && (!messageRecord.isOutgoing() || messageRecord.isPending()));
mediaThumbnail.hideControls(messageRecord.isFailed() || (messageRecord.isOutgoing() && !messageRecord.isPending()));
bodyText.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
} else {
mediaThumbnail.setVisibility(View.GONE);
@@ -409,6 +411,11 @@ public class ConversationItem extends LinearLayout implements Recipient.Recipien
}
}
private class ThumbnailDownloadClickListener implements ThumbnailView.ThumbnailClickListener {
@Override public void onClick(View v, Slide slide) {
DatabaseFactory.getPartDatabase(context).setTransferState(messageRecord.getId(), slide.getPart().getPartId(), PartDatabase.TRANSFER_PROGRESS_STARTED);
}
}
private class ThumbnailClickListener implements ThumbnailView.ThumbnailClickListener {
private void fireIntent(Slide slide) {
Log.w(TAG, "Clicked: " + slide.getUri() + " , " + slide.getContentType());

View File

@@ -24,8 +24,8 @@ import android.graphics.drawable.RippleDrawable;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.os.Handler;
import android.support.annotation.DrawableRes;
import android.util.AttributeSet;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
@@ -34,6 +34,7 @@ import org.thoughtcrime.securesms.components.FromTextView;
import org.thoughtcrime.securesms.database.model.ThreadRecord;
import org.thoughtcrime.securesms.recipients.Recipients;
import org.thoughtcrime.securesms.util.DateUtils;
import org.thoughtcrime.securesms.util.ResUtil;
import java.util.Locale;
import java.util.Set;
@@ -55,7 +56,6 @@ public class ConversationListItem extends RelativeLayout
private final static Typeface BOLD_TYPEFACE = Typeface.create("sans-serif", Typeface.BOLD);
private final static Typeface LIGHT_TYPEFACE = Typeface.create("sans-serif-light", Typeface.NORMAL);
private Context context;
private Set<Long> selectedThreads;
private Recipients recipients;
private long threadId;
@@ -65,25 +65,28 @@ public class ConversationListItem extends RelativeLayout
private boolean read;
private AvatarImageView contactPhotoImage;
private final @DrawableRes int readBackground;
private final @DrawableRes int unreadBackround;
private final Handler handler = new Handler();
private int distributionType;
public ConversationListItem(Context context) {
super(context);
this.context = context;
this(context, null);
}
public ConversationListItem(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
readBackground = ResUtil.getDrawableRes(context, R.attr.conversation_list_item_background_read);
unreadBackround = ResUtil.getDrawableRes(context, R.attr.conversation_list_item_background_unread);
}
@Override
protected void onFinishInflate() {
super.onFinishInflate();
this.subjectView = (TextView) findViewById(R.id.subject);
this.fromView = (FromTextView) findViewById(R.id.from);
this.dateView = (TextView) findViewById(R.id.date);
this.subjectView = (TextView) findViewById(R.id.subject);
this.fromView = (FromTextView) findViewById(R.id.from);
this.dateView = (TextView) findViewById(R.id.date);
this.contactPhotoImage = (AvatarImageView) findViewById(R.id.contact_photo_image);
}
@@ -101,12 +104,13 @@ public class ConversationListItem extends RelativeLayout
this.subjectView.setTypeface(read ? LIGHT_TYPEFACE : BOLD_TYPEFACE);
if (thread.getDate() > 0) {
CharSequence date = DateUtils.getBriefRelativeTimeSpanString(context, locale, thread.getDate());
CharSequence date = DateUtils.getBriefRelativeTimeSpanString(getContext(), locale, thread.getDate());
dateView.setText(read ? date : color(getResources().getColor(R.color.textsecure_primary), date));
dateView.setTypeface(read ? LIGHT_TYPEFACE : BOLD_TYPEFACE);
}
setBatchState(batchMode);
setBackground(thread);
setRippleColor(recipients);
this.contactPhotoImage.setAvatar(recipients, true);
}
@@ -132,11 +136,16 @@ public class ConversationListItem extends RelativeLayout
return distributionType;
}
private void setBackground(ThreadRecord thread) {
if (thread.isRead()) setBackgroundResource(readBackground);
else setBackgroundResource(unreadBackround);
}
@TargetApi(VERSION_CODES.LOLLIPOP)
public void setRippleColor(Recipients recipients) {
private void setRippleColor(Recipients recipients) {
if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
((RippleDrawable)(getBackground()).mutate())
.setColor(ColorStateList.valueOf(recipients.getColor().toConversationColor(context)));
.setColor(ColorStateList.valueOf(recipients.getColor().toConversationColor(getContext())));
}
}

View File

@@ -184,7 +184,7 @@ public class DatabaseMigrationActivity extends PassphraseRequiredActionBarActivi
}
}
private class NullReceiver extends BroadcastReceiver {
private static class NullReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
abortBroadcast();

View File

@@ -32,7 +32,12 @@ import org.thoughtcrime.securesms.crypto.MasterSecret;
import org.thoughtcrime.securesms.crypto.storage.TextSecurePreKeyStore;
import org.thoughtcrime.securesms.crypto.storage.TextSecureSessionStore;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.MmsDatabase;
import org.thoughtcrime.securesms.database.MmsDatabase.Reader;
import org.thoughtcrime.securesms.database.PartDatabase;
import org.thoughtcrime.securesms.database.PushDatabase;
import org.thoughtcrime.securesms.database.model.MessageRecord;
import org.thoughtcrime.securesms.jobs.AttachmentDownloadJob;
import org.thoughtcrime.securesms.jobs.CreateSignedPreKeyJob;
import org.thoughtcrime.securesms.jobs.DirectoryRefreshJob;
import org.thoughtcrime.securesms.jobs.PushDecryptJob;
@@ -41,10 +46,14 @@ import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.VersionTracker;
import java.io.File;
import java.util.List;
import java.util.SortedSet;
import java.util.TreeSet;
import ws.com.google.android.mms.pdu.PduPart;
public class DatabaseUpgradeActivity extends BaseActivity {
private static final String TAG = DatabaseUpgradeActivity.class.getSimpleName();
public static final int NO_MORE_KEY_EXCHANGE_PREFIX_VERSION = 46;
public static final int MMS_BODY_VERSION = 46;
@@ -57,6 +66,7 @@ public class DatabaseUpgradeActivity extends BaseActivity {
public static final int PUSH_DECRYPT_SERIAL_ID_VERSION = 131;
public static final int MIGRATE_SESSION_PLAINTEXT = 136;
public static final int CONTACTS_ACCOUNT_VERSION = 136;
public static final int MEDIA_DOWNLOAD_CONTROLS_VERSION = 146;
private static final SortedSet<Integer> UPGRADE_VERSIONS = new TreeSet<Integer>() {{
add(NO_MORE_KEY_EXCHANGE_PREFIX_VERSION);
@@ -68,6 +78,7 @@ public class DatabaseUpgradeActivity extends BaseActivity {
add(NO_DECRYPT_QUEUE_VERSION);
add(PUSH_DECRYPT_SERIAL_ID_VERSION);
add(MIGRATE_SESSION_PLAINTEXT);
add(MEDIA_DOWNLOAD_CONTROLS_VERSION);
}};
private MasterSecret masterSecret;
@@ -88,7 +99,7 @@ public class DatabaseUpgradeActivity extends BaseActivity {
.execute(VersionTracker.getLastSeenVersion(this));
} else {
VersionTracker.updateLastSeenVersion(this);
MessageNotifier.updateNotification(DatabaseUpgradeActivity.this, masterSecret);
updateNotifications(this, masterSecret);
startActivity((Intent)getIntent().getParcelableExtra("next_intent"));
finish();
}
@@ -123,6 +134,16 @@ public class DatabaseUpgradeActivity extends BaseActivity {
}
}
private void updateNotifications(final Context context, final MasterSecret masterSecret) {
new AsyncTask<Void, Void, Void>() {
@Override
protected Void doInBackground(Void... params) {
MessageNotifier.updateNotification(context, masterSecret);
return null;
}
}.execute();
}
public interface DatabaseUpgradeListener {
public void setProgress(int progress, int total);
}
@@ -195,9 +216,36 @@ public class DatabaseUpgradeActivity extends BaseActivity {
.add(new DirectoryRefreshJob(getApplicationContext()));
}
if (params[0] < MEDIA_DOWNLOAD_CONTROLS_VERSION) {
schedulePendingIncomingParts(context);
}
return null;
}
private void schedulePendingIncomingParts(Context context) {
final PartDatabase partDb = DatabaseFactory.getPartDatabase(context);
final MmsDatabase mmsDb = DatabaseFactory.getMmsDatabase(context);
final List<PduPart> pendingParts = DatabaseFactory.getPartDatabase(context).getPendingParts();
Log.w(TAG, pendingParts.size() + " pending parts.");
for (PduPart part : pendingParts) {
final Reader reader = mmsDb.readerFor(masterSecret, mmsDb.getMessage(part.getMmsId()));
final MessageRecord record = reader.getNext();
if (part.getContentLocation() == null) {
Log.w(TAG, "corrected a pending self-sent media part " + part.getPartId() + ".");
partDb.setTransferState(part.getMmsId(), part.getPartId(), PartDatabase.TRANSFER_PROGRESS_DONE);
} else if (record != null && !record.isOutgoing() && record.isPush()) {
Log.w(TAG, "queuing new attachment download job for incoming push part " + part.getPartId() + ".");
ApplicationContext.getInstance(context)
.getJobManager()
.add(new AttachmentDownloadJob(context, part.getMmsId(), part.getPartId()));
}
reader.close();
}
}
private void scheduleMessagesInPushDatabase(Context context) {
PushDatabase pushDatabase = DatabaseFactory.getPushDatabase(context);
Cursor pushReader = null;
@@ -230,7 +278,7 @@ public class DatabaseUpgradeActivity extends BaseActivity {
@Override
protected void onPostExecute(Void result) {
VersionTracker.updateLastSeenVersion(DatabaseUpgradeActivity.this);
MessageNotifier.updateNotification(DatabaseUpgradeActivity.this, masterSecret);
updateNotifications(DatabaseUpgradeActivity.this, masterSecret);
startActivity((Intent)getIntent().getParcelableExtra("next_intent"));
finish();

View File

@@ -40,6 +40,9 @@ import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.animation.GlideAnimation;
import com.bumptech.glide.request.target.SimpleTarget;
import com.google.protobuf.ByteString;
import com.soundcloud.android.crop.Crop;
@@ -52,12 +55,11 @@ import org.thoughtcrime.securesms.database.NotInDirectoryException;
import org.thoughtcrime.securesms.database.TextSecureDirectory;
import org.thoughtcrime.securesms.database.ThreadDatabase;
import org.thoughtcrime.securesms.mms.OutgoingGroupMediaMessage;
import org.thoughtcrime.securesms.mms.RoundedCorners;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientFactory;
import org.thoughtcrime.securesms.recipients.Recipients;
import org.thoughtcrime.securesms.sms.MessageSender;
import org.thoughtcrime.securesms.util.BitmapDecodingException;
import org.thoughtcrime.securesms.util.BitmapUtil;
import org.thoughtcrime.securesms.util.DynamicLanguage;
import org.thoughtcrime.securesms.util.DynamicTheme;
import org.thoughtcrime.securesms.util.GroupUtil;
@@ -369,7 +371,7 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity {
}
@Override
public void onActivityResult(int reqCode, int resultCode, Intent data) {
public void onActivityResult(int reqCode, int resultCode, final Intent data) {
super.onActivityResult(reqCode, resultCode, data);
Uri outputFile = Uri.fromFile(new File(getCacheDir(), "cropped"));
@@ -395,7 +397,18 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity {
new Crop(data.getData()).output(outputFile).asSquare().start(this);
break;
case Crop.REQUEST_CROP:
new DecodeCropAndSetAsyncTask(Crop.getOutput(data)).execute();
Glide.with(this).load(Crop.getOutput(data)).asBitmap().skipMemoryCache(true)
.centerCrop().override(AVATAR_SIZE, AVATAR_SIZE)
.into(new SimpleTarget<Bitmap>() {
@Override public void onResourceReady(Bitmap resource,
GlideAnimation<? super Bitmap> glideAnimation)
{
avatarBmp = resource;
Glide.with(GroupCreateActivity.this).load(Crop.getOutput(data)).skipMemoryCache(true)
.transform(new RoundedCorners(GroupCreateActivity.this, avatar.getWidth() / 2))
.into(avatar);
}
});
}
}
@@ -489,32 +502,6 @@ public class GroupCreateActivity extends PassphraseRequiredActionBarActivity {
return results;
}
private class DecodeCropAndSetAsyncTask extends AsyncTask<Void,Void,Bitmap> {
private final Uri avatarUri;
DecodeCropAndSetAsyncTask(Uri uri) {
avatarUri = uri;
}
@Override
protected Bitmap doInBackground(Void... voids) {
if (avatarUri != null) {
try {
avatarBmp = BitmapUtil.createScaledBitmap(GroupCreateActivity.this, masterSecret, avatarUri, AVATAR_SIZE, AVATAR_SIZE);
} catch (IOException | BitmapDecodingException e) {
Log.w(TAG, e);
return null;
}
}
return avatarBmp;
}
@Override
protected void onPostExecute(Bitmap result) {
if (avatarBmp != null) avatar.setImageBitmap(avatarBmp);
}
}
private class CreateMmsGroupAsyncTask extends AsyncTask<Void,Void,Long> {
@Override

View File

@@ -67,7 +67,7 @@ public class GroupMembersDialog extends AsyncTask<Void, Void, Recipients> {
else onPostExecute(recipients);
}
private class GroupMembersOnClickListener implements DialogInterface.OnClickListener {
private static class GroupMembersOnClickListener implements DialogInterface.OnClickListener {
private final GroupMembers groupMembers;
private final Context context;

View File

@@ -19,7 +19,6 @@ package org.thoughtcrime.securesms;
import android.annotation.TargetApi;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
@@ -56,7 +55,6 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity im
private MasterSecret masterSecret;
private Bitmap bitmap;
private ZoomingImageView image;
private Uri mediaUri;
private String mediaType;
@@ -166,10 +164,6 @@ public class MediaPreviewActivity extends PassphraseRequiredActionBarActivity im
private void cleanupMedia() {
image.setImageDrawable(null);
if (bitmap != null) {
bitmap.recycle();
bitmap = null;
}
}
private void saveToDisk() {

View File

@@ -434,7 +434,7 @@ public class RegistrationProgressActivity extends BaseActionBarActivity {
}
}
private class RegistrationReceiver extends BroadcastReceiver {
private static class RegistrationReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
abortBroadcast();

View File

@@ -19,6 +19,7 @@ package org.thoughtcrime.securesms;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.widget.TextView;
import android.widget.Toast;
@@ -51,39 +52,32 @@ public class VerifyIdentityActivity extends KeyScanningActivity {
protected void onCreate(Bundle state, @NonNull MasterSecret masterSecret) {
this.masterSecret = masterSecret;
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setTitle(R.string.AndroidManifest__verify_identity);
setContentView(R.layout.verify_identity_activity);
initializeResources();
initializeFingerprints();
this.localIdentityFingerprint = (TextView)findViewById(R.id.you_read);
this.remoteIdentityFingerprint = (TextView)findViewById(R.id.friend_reads);
}
@Override
public void onResume() {
super.onResume();
getSupportActionBar().setTitle(R.string.AndroidManifest__verify_identity);
this.recipient = RecipientFactory.getRecipientForId(this, this.getIntent().getLongExtra("recipient", -1), true);
initializeFingerprints();
}
private void initializeLocalIdentityKey() {
private void initializeFingerprints() {
if (!IdentityKeyUtil.hasIdentityKey(this)) {
localIdentityFingerprint.setText(R.string.VerifyIdentityActivity_you_do_not_have_an_identity_key);
return;
}
localIdentityFingerprint.setText(IdentityKeyUtil.getIdentityKey(this).getFingerprint());
}
private void initializeRemoteIdentityKey() {
IdentityKeyParcelable identityKeyParcelable = getIntent().getParcelableExtra("remote_identity");
IdentityKey identityKey = null;
if (identityKeyParcelable != null) {
identityKey = identityKeyParcelable.get();
}
if (identityKey == null) {
identityKey = getRemoteIdentityKey(masterSecret, recipient);
}
IdentityKey identityKey = getRemoteIdentityKey(masterSecret, recipient);
if (identityKey == null) {
remoteIdentityFingerprint.setText(R.string.VerifyIdentityActivity_recipient_has_no_identity_key);
@@ -92,17 +86,6 @@ public class VerifyIdentityActivity extends KeyScanningActivity {
}
}
private void initializeFingerprints() {
initializeLocalIdentityKey();
initializeRemoteIdentityKey();
}
private void initializeResources() {
this.localIdentityFingerprint = (TextView)findViewById(R.id.you_read);
this.remoteIdentityFingerprint = (TextView)findViewById(R.id.friend_reads);
this.recipient = RecipientFactory.getRecipientForId(this, this.getIntent().getLongExtra("recipient", -1), true);
}
@Override
protected void initiateDisplay() {
if (!IdentityKeyUtil.hasIdentityKey(this)) {
@@ -167,7 +150,13 @@ public class VerifyIdentityActivity extends KeyScanningActivity {
return getString(R.string.VerifyIdentityActivity_verified_exclamation);
}
private IdentityKey getRemoteIdentityKey(MasterSecret masterSecret, Recipient recipient) {
private @Nullable IdentityKey getRemoteIdentityKey(MasterSecret masterSecret, Recipient recipient) {
IdentityKeyParcelable identityKeyParcelable = getIntent().getParcelableExtra("remote_identity");
if (identityKeyParcelable != null) {
return identityKeyParcelable.get();
}
SessionStore sessionStore = new TextSecureSessionStore(this, masterSecret);
AxolotlAddress axolotlAddress = new AxolotlAddress(recipient.getNumber(), TextSecureAddress.DEFAULT_DEVICE_ID);
SessionRecord record = sessionStore.loadSession(axolotlAddress);

View File

@@ -5,6 +5,7 @@ import android.app.Activity;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.os.Build;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.support.annotation.NonNull;
@@ -16,12 +17,12 @@ import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import com.bumptech.glide.DrawableTypeRequest;
import com.bumptech.glide.GenericRequestBuilder;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.bumptech.glide.load.resource.bitmap.GlideBitmapDrawable;
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.request.RequestListener;
@@ -30,14 +31,16 @@ import com.pnikosis.materialishprogress.ProgressWheel;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.crypto.MasterSecret;
import org.thoughtcrime.securesms.database.PartDatabase;
import org.thoughtcrime.securesms.jobs.PartProgressEvent;
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader.DecryptableUri;
import org.thoughtcrime.securesms.mms.RoundedCorners;
import org.thoughtcrime.securesms.mms.Slide;
import org.thoughtcrime.securesms.mms.SlideDeck;
import org.thoughtcrime.securesms.util.FutureTaskListener;
import org.thoughtcrime.securesms.util.ListenableFutureTask;
import org.thoughtcrime.securesms.mms.RoundedCorners;
import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.ViewUtil;
import de.greenrobot.event.EventBus;
import ws.com.google.android.mms.pdu.PduPart;
@@ -45,15 +48,18 @@ import ws.com.google.android.mms.pdu.PduPart;
public class ThumbnailView extends FrameLayout {
private static final String TAG = ThumbnailView.class.getSimpleName();
private boolean showProgress = true;
private boolean hideControls;
private ImageView image;
private ProgressWheel progress;
private ImageView removeButton;
private ImageButton downloadButton;
private int backgroundColorHint;
private int radius;
private ListenableFutureTask<SlideDeck> slideDeckFuture = null;
private SlideDeckListener slideDeckListener = null;
private ThumbnailClickListener thumbnailClickListener = null;
private ThumbnailClickListener downloadClickListener = null;
private String slideId = null;
private Slide slide = null;
@@ -65,12 +71,13 @@ public class ThumbnailView extends FrameLayout {
this(context, attrs, 0);
}
public ThumbnailView(Context context, AttributeSet attrs, int defStyle) {
public ThumbnailView(final Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
inflate(context, R.layout.thumbnail_view, this);
radius = getResources().getDimensionPixelSize(R.dimen.message_bubble_corner_radius);
image = (ImageView) findViewById(R.id.thumbnail_image);
progress = (ProgressWheel) findViewById(R.id.progress_wheel);
radius = getResources().getDimensionPixelSize(R.dimen.message_bubble_corner_radius);
image = (ImageView) findViewById(R.id.thumbnail_image);
progress = (ProgressWheel) findViewById(R.id.progress_wheel);
downloadButton = (ImageButton) findViewById(R.id.download_button);
if (attrs != null) {
TypedArray typedArray = context.getTheme().obtainStyledAttributes(attrs, R.styleable.ThumbnailView, 0, 0);
@@ -79,6 +86,15 @@ public class ThumbnailView extends FrameLayout {
}
}
@Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
if (removeButton != null) {
final int paddingHorizontal = removeButton.getWidth() / 2;
final int paddingVertical = removeButton.getHeight() / 2;
image.setPadding(paddingHorizontal, paddingVertical, paddingHorizontal, 0);
}
}
@Override protected void onAttachedToWindow() {
super.onAttachedToWindow();
if (!EventBus.getDefault().isRegistered(this)) EventBus.getDefault().registerSticky(this);
@@ -89,12 +105,26 @@ public class ThumbnailView extends FrameLayout {
EventBus.getDefault().unregister(this);
}
private ProgressWheel getProgressWheel() {
if (progress == null) progress = ViewUtil.inflateStub(this, R.id.progress_wheel_stub);
return progress;
}
private void hideProgressWheel() {
if (progress != null) progress.setVisibility(GONE);
}
private ImageView getRemoveButton() {
if (removeButton == null) removeButton = ViewUtil.inflateStub(this, R.id.remove_button_stub);
return removeButton;
}
@SuppressWarnings("unused")
public void onEventAsync(final PartProgressEvent event) {
if (this.slide != null && event.partId.equals(this.slide.getPart().getPartId())) {
Util.runOnMain(new Runnable() {
@Override public void run() {
progress.setInstantProgress(((float)event.progress) / event.total);
getProgressWheel().setInstantProgress(((float)event.progress) / event.total);
if (event.progress >= event.total) animateOutProgress();
}
});
@@ -116,7 +146,7 @@ public class ThumbnailView extends FrameLayout {
String slideId = id + "::" + timestamp;
if (!slideId.equals(this.slideId)) {
progress.setVisibility(GONE);
hideProgressWheel();
image.setImageDrawable(null);
this.slide = null;
this.slideId = slideId;
@@ -129,38 +159,58 @@ public class ThumbnailView extends FrameLayout {
public void setImageResource(@NonNull Slide slide, @Nullable MasterSecret masterSecret) {
if (Util.equals(slide, this.slide)) {
Log.w(TAG, "Not loading resource, slide was identical");
Log.w(TAG, "Not re-loading slide " + slide.getPart().getPartId());
return;
}
if (!isContextValid()) {
Log.w(TAG, "Not loading resource, context is invalid");
Log.w(TAG, "Not loading slide, context is invalid");
return;
}
this.slide = slide;
if (slide.isInProgress() && showProgress) {
progress.spin();
progress.setVisibility(VISIBLE);
Log.w(TAG, "loading part with id " + slide.getPart().getPartId() + ", progress " + slide.getTransferProgress());
if (!hideControls && slide.getTransferProgress() == PartDatabase.TRANSFER_PROGRESS_STARTED) {
getProgressWheel().spin();
getProgressWheel().setVisibility(VISIBLE);
downloadButton.setVisibility(GONE);
} else if (!hideControls && slide.getTransferProgress() == PartDatabase.TRANSFER_PROGRESS_AUTO_PENDING ||
slide.getTransferProgress() == PartDatabase.TRANSFER_PROGRESS_FAILED)
{
hideProgressWheel();
downloadButton.setVisibility(VISIBLE);
} else {
progress.setVisibility(GONE);
hideProgressWheel();
downloadButton.setVisibility(GONE);
}
this.slide = slide;
buildGlideRequest(slide, masterSecret).into(image);
setOnClickListener(new ThumbnailClickDispatcher(thumbnailClickListener, slide));
if (this.slide.getTransferProgress() == PartDatabase.TRANSFER_PROGRESS_DONE) {
setOnClickListener(new ThumbnailClickDispatcher(thumbnailClickListener, slide));
} else {
setOnClickListener(null);
}
downloadButton.setOnClickListener(new ThumbnailClickDispatcher(downloadClickListener, slide));
}
public void setThumbnailClickListener(ThumbnailClickListener listener) {
this.thumbnailClickListener = listener;
}
public void setRemoveClickListener(OnClickListener listener) {
getRemoveButton().setOnClickListener(listener);
}
public void setDownloadClickListener(ThumbnailClickListener listener) {
this.downloadClickListener = listener;
}
public void clear() {
if (isContextValid()) Glide.clear(this);
}
public void setShowProgress(boolean showProgress) {
this.showProgress = showProgress;
if (progress.getVisibility() == View.VISIBLE && !showProgress) {
animateOutProgress();
}
public void hideControls(boolean hideControls) {
this.hideControls = hideControls;
if (hideControls) hideProgressWheel();
}
@TargetApi(VERSION_CODES.JELLY_BEAN_MR1)
@@ -173,7 +223,6 @@ public class ThumbnailView extends FrameLayout {
private GenericRequestBuilder buildGlideRequest(@NonNull Slide slide,
@Nullable MasterSecret masterSecret)
{
Log.w(TAG, "slide type " + slide.getContentType());
final GenericRequestBuilder builder;
if (slide.getThumbnailUri() != null) {
builder = buildThumbnailGlideRequest(slide, masterSecret);
@@ -181,7 +230,7 @@ public class ThumbnailView extends FrameLayout {
builder = buildPlaceholderGlideRequest(slide);
}
if (slide.isInProgress() && showProgress) {
if (slide.isInProgress() && !hideControls) {
return builder;
} else {
return builder.error(R.drawable.ic_missing_thumbnail_picture);
@@ -222,16 +271,17 @@ public class ThumbnailView extends FrameLayout {
}
private void animateOutProgress() {
if (progress == null) return;
AlphaAnimation animation = new AlphaAnimation(1f, 0f);
animation.setDuration(200);
animation.setAnimationListener(new AnimationListener() {
@Override public void onAnimationStart(Animation animation) { }
@Override public void onAnimationRepeat(Animation animation) { }
@Override public void onAnimationEnd(Animation animation) {
progress.setVisibility(View.GONE);
getProgressWheel().setVisibility(View.GONE);
}
});
progress.startAnimation(animation);
getProgressWheel().startAnimation(animation);
}
private class SlideDeckListener implements FutureTaskListener<SlideDeck> {
@@ -245,7 +295,8 @@ public class ThumbnailView extends FrameLayout {
public void onSuccess(final SlideDeck slideDeck) {
if (slideDeck == null) return;
final Slide slide = slideDeck.getThumbnailSlide(getContext());
final Slide slide = slideDeck.getThumbnailSlide();
if (slide != null) {
Util.runOnMain(new Runnable() {
@Override
@@ -281,7 +332,7 @@ public class ThumbnailView extends FrameLayout {
void onClick(View v, Slide slide);
}
private class ThumbnailClickDispatcher implements View.OnClickListener {
private static class ThumbnailClickDispatcher implements View.OnClickListener {
private ThumbnailClickListener listener;
private Slide slide;
@@ -292,15 +343,14 @@ public class ThumbnailView extends FrameLayout {
@Override
public void onClick(View view) {
if (listener != null) {
if (listener != null)
{
listener.onClick(view, slide);
} else {
Log.w(TAG, "onClick, but no thumbnail click listener attached.");
}
}
}
private static class PduThumbnailSetListener implements RequestListener<Object, GlideDrawable> {
private class PduThumbnailSetListener implements RequestListener<Object, GlideDrawable> {
private PduPart part;
public PduThumbnailSetListener(@NonNull PduPart part) {
@@ -318,6 +368,11 @@ public class ThumbnailView extends FrameLayout {
Log.w(TAG, "onResourceReady() for a Bitmap. Saving.");
part.setThumbnail(((GlideBitmapDrawable)resource).getBitmap());
}
if (resource.getIntrinsicWidth() < resource.getIntrinsicHeight()) {
getRemoveButton().setPadding(0, 0, (getWidth() - resource.getIntrinsicWidth()) / 2, 0);
} else {
getRemoveButton().setPadding(0, (getHeight() - resource.getIntrinsicHeight()) / 2, 0, 0);
}
return false;
}
}

View File

@@ -441,7 +441,7 @@ public class CameraView extends FrameLayout {
ApplicationContext.getInstance(getContext()).getJobManager().add(job);
}
private abstract class SerializedAsyncTask<Result> extends Job {
private static abstract class SerializedAsyncTask<Result> extends Job {
public SerializedAsyncTask() {
super(JobParameters.newBuilder().withGroupId(CameraView.class.getSimpleName()).create());

View File

@@ -21,16 +21,15 @@ import android.util.SparseArray;
import android.widget.TextView;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.util.BitmapDecodingException;
import org.thoughtcrime.securesms.util.BitmapUtil;
import org.thoughtcrime.securesms.util.FutureTaskListener;
import org.thoughtcrime.securesms.util.ListenableFutureTask;
import org.thoughtcrime.securesms.util.Util;
import java.io.IOException;
import java.io.InputStream;
import java.lang.ref.SoftReference;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -182,7 +181,7 @@ public class EmojiProvider {
public void setColorFilter(ColorFilter cf) { }
}
class DrawInfo {
private static class DrawInfo {
EmojiPageBitmap page;
int index;
@@ -222,7 +221,7 @@ public class EmojiProvider {
try {
Log.w(TAG, "loading page " + model.getSprite());
return loadPage();
} catch (IOException ioe) {
} catch (IOException | ExecutionException ioe) {
Log.w(TAG, ioe);
}
return null;
@@ -243,23 +242,19 @@ public class EmojiProvider {
return task;
}
private Bitmap loadPage() throws IOException {
private Bitmap loadPage() throws IOException, ExecutionException {
if (bitmapReference != null && bitmapReference.get() != null) return bitmapReference.get();
try {
final InputStream measureStream = context.getAssets().open(model.getSprite());
final InputStream bitmapStream = context.getAssets().open(model.getSprite());
final Bitmap bitmap = BitmapUtil.createScaledBitmap(measureStream, bitmapStream, decodeScale);
final Bitmap bitmap = BitmapUtil.createScaledBitmap(context,
"file:///android_asset/" + model.getSprite(),
decodeScale);
bitmapReference = new SoftReference<>(bitmap);
Log.w(TAG, "onPageLoaded(" + model.getSprite() + ")");
return bitmap;
} catch (IOException ioe) {
Log.w(TAG, ioe);
throw ioe;
} catch (BitmapDecodingException bde) {
Log.w(TAG, "page " + model + " failed.");
Log.w(TAG, bde);
throw new AssertionError("emoji sprite asset is corrupted or android decoding is broken");
} catch (ExecutionException e) {
Log.w(TAG, e);
throw e;
}
}

View File

@@ -1,22 +1,19 @@
package org.thoughtcrime.securesms.contacts.avatars;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.provider.ContactsContract;
import android.support.annotation.DrawableRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.util.Log;
import com.bumptech.glide.Glide;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.util.BitmapDecodingException;
import org.thoughtcrime.securesms.util.BitmapUtil;
import org.thoughtcrime.securesms.mms.ContactPhotoUriLoader.ContactPhotoUri;
import java.io.InputStream;
import java.util.concurrent.ExecutionException;
public class ContactPhotoFactory {
@@ -41,17 +38,16 @@ public class ContactPhotoFactory {
public static ContactPhoto getContactPhoto(Context context, Uri uri, String name) {
try {
InputStream inputStream = getContactPhotoStream(context, uri);
int targetSize = context.getResources().getDimensionPixelSize(R.dimen.contact_photo_target_size);
if (inputStream != null) {
return new BitmapContactPhoto(BitmapUtil.createScaledBitmap(inputStream, getContactPhotoStream(context, uri), targetSize, targetSize));
}
} catch (BitmapDecodingException e) {
Log.w(TAG, e);
int targetSize = context.getResources().getDimensionPixelSize(R.dimen.contact_photo_target_size);
Bitmap bitmap = Glide.with(context)
.load(new ContactPhotoUri(uri)).asBitmap()
.centerCrop().into(targetSize, targetSize).get();
return new BitmapContactPhoto(bitmap);
} catch (ExecutionException e) {
return getDefaultContactPhoto(name);
} catch (InterruptedException e) {
throw new AssertionError(e);
}
return getDefaultContactPhoto(name);
}
public static ContactPhoto getGroupContactPhoto(@Nullable byte[] avatar) {
@@ -59,12 +55,4 @@ public class ContactPhotoFactory {
return new BitmapContactPhoto(BitmapFactory.decodeByteArray(avatar, 0, avatar.length));
}
private static InputStream getContactPhotoStream(Context context, Uri uri) {
if (VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH) {
return ContactsContract.Contacts.openContactPhotoInputStream(context.getContentResolver(), uri, true);
} else {
return ContactsContract.Contacts.openContactPhotoInputStream(context.getContentResolver(), uri);
}
}
}

View File

@@ -142,7 +142,7 @@ public class IdentityDatabase extends Database {
}
}
public class Identity {
public static class Identity {
private final Recipients recipients;
private final IdentityKey identityKey;

View File

@@ -577,6 +577,10 @@ public class MmsDatabase extends MessagingDatabase {
contentValues.put(READ, 1);
contentValues.put(DATE_RECEIVED, contentValues.getAsLong(DATE_SENT));
for (int i = 0; i < request.getBody().getPartsNum(); i++) {
request.getBody().getPart(i).setTransferProgress(PartDatabase.TRANSFER_PROGRESS_DONE);
}
return insertMediaMessage(new MasterSecretUnion(masterSecret), request.getPduHeaders(),
request.getBody(), contentValues);
} catch (NoSuchMessageException e) {
@@ -752,7 +756,7 @@ public class MmsDatabase extends MessagingDatabase {
if (sendRequest.getBody() != null) {
for (int i = 0; i < sendRequest.getBody().getPartsNum(); i++) {
sendRequest.getBody().getPart(i).setInProgress(true);
sendRequest.getBody().getPart(i).setTransferProgress(PartDatabase.TRANSFER_PROGRESS_STARTED);
}
}

View File

@@ -23,16 +23,20 @@ import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.graphics.Bitmap;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.util.Log;
import android.util.Pair;
import org.thoughtcrime.securesms.ApplicationContext;
import org.thoughtcrime.securesms.crypto.DecryptingPartInputStream;
import org.thoughtcrime.securesms.crypto.EncryptingPartOutputStream;
import org.thoughtcrime.securesms.crypto.MasterSecret;
import org.thoughtcrime.securesms.crypto.MasterSecretUnion;
import org.thoughtcrime.securesms.jobs.requirements.MediaNetworkRequirement;
import org.thoughtcrime.securesms.jobs.requirements.MediaNetworkRequirementProvider;
import org.thoughtcrime.securesms.mms.PartAuthority;
import org.thoughtcrime.securesms.util.BitmapDecodingException;
import org.thoughtcrime.securesms.util.MediaUtil;
import org.thoughtcrime.securesms.util.MediaUtil.ThumbnailData;
import org.thoughtcrime.securesms.util.Util;
@@ -44,12 +48,14 @@ import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import de.greenrobot.event.EventBus;
import ws.com.google.android.mms.ContentType;
import ws.com.google.android.mms.MmsException;
import ws.com.google.android.mms.pdu.PduBody;
@@ -73,12 +79,17 @@ public class PartDatabase extends Database {
private static final String CONTENT_TYPE_TYPE = "ctt_t";
private static final String ENCRYPTED = "encrypted";
private static final String DATA = "_data";
private static final String IN_PROGRESS = "pending_push";
private static final String TRANSFER_STATE = "pending_push";
private static final String SIZE = "data_size";
private static final String THUMBNAIL = "thumbnail";
private static final String ASPECT_RATIO = "aspect_ratio";
private static final String UNIQUE_ID = "unique_id";
public static final int TRANSFER_PROGRESS_DONE = 0;
public static final int TRANSFER_PROGRESS_STARTED = 1;
public static final int TRANSFER_PROGRESS_AUTO_PENDING = 2;
public static final int TRANSFER_PROGRESS_FAILED = 3;
private static final String PART_ID_WHERE = ROW_ID + " = ? AND " + UNIQUE_ID + " = ?";
public static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" + ROW_ID + " INTEGER PRIMARY KEY, " +
@@ -87,12 +98,12 @@ public class PartDatabase extends Database {
CONTENT_DISPOSITION + " TEXT, " + FILENAME + " TEXT, " + CONTENT_ID + " TEXT, " +
CONTENT_LOCATION + " TEXT, " + CONTENT_TYPE_START + " INTEGER, " +
CONTENT_TYPE_TYPE + " TEXT, " + ENCRYPTED + " INTEGER, " +
IN_PROGRESS + " INTEGER, "+ DATA + " TEXT, " + SIZE + " INTEGER, " +
TRANSFER_STATE + " INTEGER, "+ DATA + " TEXT, " + SIZE + " INTEGER, " +
THUMBNAIL + " TEXT, " + ASPECT_RATIO + " REAL, " + UNIQUE_ID + " INTEGER NOT NULL);";
public static final String[] CREATE_INDEXS = {
"CREATE INDEX IF NOT EXISTS part_mms_id_index ON " + TABLE_NAME + " (" + MMS_ID + ");",
"CREATE INDEX IF NOT EXISTS pending_push_index ON " + TABLE_NAME + " (" + IN_PROGRESS + ");",
"CREATE INDEX IF NOT EXISTS pending_push_index ON " + TABLE_NAME + " (" + TRANSFER_STATE + ");",
};
private final static String IMAGES_QUERY = "SELECT " + TABLE_NAME + "." + ROW_ID + ", "
@@ -128,7 +139,7 @@ public class PartDatabase extends Database {
SQLiteDatabase database = databaseHelper.getWritableDatabase();
part.setContentDisposition(new byte[0]);
part.setInProgress(false);
part.setTransferProgress(TRANSFER_PROGRESS_FAILED);
ContentValues values = getContentValuesForPart(part);
@@ -224,6 +235,7 @@ public class PartDatabase extends Database {
}
void insertParts(MasterSecretUnion masterSecret, long mmsId, PduBody body) throws MmsException {
Log.w(TAG, "insertParts(" + body.getPartsNum() + ")");
for (int i=0;i<body.getPartsNum();i++) {
PduPart part = body.getPart(i);
PartId partId = insertPart(masterSecret, part, mmsId, part.getThumbnail());
@@ -235,6 +247,7 @@ public class PartDatabase extends Database {
part.setRowId(cursor.getLong(cursor.getColumnIndexOrThrow(ROW_ID)));
part.setUniqueId(cursor.getLong(cursor.getColumnIndexOrThrow(UNIQUE_ID)));
part.setMmsId(cursor.getLong(cursor.getColumnIndexOrThrow(MMS_ID)));
int charsetColumn = cursor.getColumnIndexOrThrow(CHARSET);
@@ -276,16 +289,15 @@ public class PartDatabase extends Database {
if (!cursor.isNull(encryptedColumn))
part.setEncrypted(cursor.getInt(encryptedColumn) == 1);
int inProgressColumn = cursor.getColumnIndexOrThrow(IN_PROGRESS);
int transferStateColumn = cursor.getColumnIndexOrThrow(TRANSFER_STATE);
if (!cursor.isNull(inProgressColumn))
part.setInProgress(cursor.getInt(inProgressColumn) == 1);
if (!cursor.isNull(transferStateColumn))
part.setTransferProgress(cursor.getInt(transferStateColumn));
int sizeColumn = cursor.getColumnIndexOrThrow(SIZE);
if (!cursor.isNull(sizeColumn))
part.setDataSize(cursor.getLong(cursor.getColumnIndexOrThrow(SIZE)));
}
private ContentValues getContentValuesForPart(PduPart part) throws MmsException {
@@ -326,7 +338,7 @@ public class PartDatabase extends Database {
}
contentValues.put(ENCRYPTED, part.getEncrypted() ? 1 : 0);
contentValues.put(IN_PROGRESS, part.isInProgress() ? 1 : 0);
contentValues.put(TRANSFER_STATE, part.getTransferProgress());
contentValues.put(UNIQUE_ID, part.getUniqueId());
return contentValues;
@@ -424,7 +436,7 @@ public class PartDatabase extends Database {
}
private PduPart getPart(Cursor cursor) {
PduPart part = new PduPart();
PduPart part = new PduPart();
getPartValues(part, cursor);
@@ -433,6 +445,23 @@ public class PartDatabase extends Database {
return part;
}
public @NonNull List<PduPart> getPendingParts() {
final SQLiteDatabase database = databaseHelper.getReadableDatabase();
final List<PduPart> parts = new LinkedList<>();
Cursor cursor = null;
try {
cursor = database.query(TABLE_NAME, null, TRANSFER_STATE + " = ?", new String[] {String.valueOf(TRANSFER_PROGRESS_STARTED)}, null, null, null);
while (cursor != null && cursor.moveToNext()) {
parts.add(getPart(cursor));
}
} finally {
if (cursor != null) cursor.close();
}
return parts;
}
private PartId insertPart(MasterSecretUnion masterSecret, PduPart part, long mmsId, Bitmap thumbnail) throws MmsException {
Log.w(TAG, "inserting part to mms " + mmsId);
SQLiteDatabase database = databaseHelper.getWritableDatabase();
@@ -473,7 +502,7 @@ public class PartDatabase extends Database {
Pair<File, Long> partData = writePartData(masterSecret, part, data);
part.setContentDisposition(new byte[0]);
part.setInProgress(false);
part.setTransferProgress(TRANSFER_PROGRESS_DONE);
ContentValues values = getContentValuesForPart(part);
@@ -493,13 +522,23 @@ public class PartDatabase extends Database {
ContentValues values = new ContentValues(1);
SQLiteDatabase database = databaseHelper.getWritableDatabase();
part.setInProgress(false);
values.put(IN_PROGRESS, false);
part.setTransferProgress(TRANSFER_PROGRESS_DONE);
values.put(TRANSFER_STATE, TRANSFER_PROGRESS_DONE);
database.update(TABLE_NAME, values, PART_ID_WHERE, part.getPartId().toStrings());
notifyConversationListeners(DatabaseFactory.getMmsDatabase(context).getThreadIdForMessage(messageId));
}
public void setTransferState(long messageId, @NonNull PartId partId, int transferState) {
final ContentValues values = new ContentValues(1);
final SQLiteDatabase database = databaseHelper.getWritableDatabase();
values.put(TRANSFER_STATE, transferState);
database.update(TABLE_NAME, values, PART_ID_WHERE, partId.toStrings());
notifyConversationListeners(DatabaseFactory.getMmsDatabase(context).getThreadIdForMessage(messageId));
ApplicationContext.getInstance(context).notifyMediaControlEvent();
}
public void updatePartData(MasterSecret masterSecret, PduPart part, InputStream data)
throws MmsException
{
@@ -602,23 +641,24 @@ public class PartDatabase extends Database {
}
@Override
public InputStream call() throws Exception {
public @Nullable InputStream call() throws Exception {
final InputStream stream = getDataStream(masterSecret, partId, THUMBNAIL);
if (stream != null) {
return stream;
}
try {
PduPart part = getPart(partId);
ThumbnailData data = MediaUtil.generateThumbnail(context, masterSecret, part.getDataUri(), Util.toIsoString(part.getContentType()));
if (data == null) {
return null;
}
updatePartThumbnail(masterSecret, partId, part, data.toDataStream(), data.getAspectRatio());
} catch (BitmapDecodingException bde) {
throw new IOException(bde);
PduPart part = getPart(partId);
if (part.isInProgress()) {
return null;
}
ThumbnailData data = MediaUtil.generateThumbnail(context, masterSecret, part.getDataUri(), Util.toIsoString(part.getContentType()));
if (data == null) {
return null;
}
updatePartThumbnail(masterSecret, partId, part, data.toDataStream(), data.getAspectRatio());
return getDataStream(masterSecret, partId, THUMBNAIL);
}
}
@@ -661,7 +701,6 @@ public class PartDatabase extends Database {
if (rowId != partId.rowId) return false;
return uniqueId == partId.uniqueId;
}
@Override public int hashCode() {

View File

@@ -201,7 +201,7 @@ public class TextSecureDirectory {
}
}
private class DatabaseHelper extends SQLiteOpenHelper {
private static class DatabaseHelper extends SQLiteOpenHelper {
public DatabaseHelper(Context context, String name,
SQLiteDatabase.CursorFactory factory,

View File

@@ -38,7 +38,7 @@ public class CountryListLoader extends AsyncTaskLoader<ArrayList<Map<String, Str
return results;
}
private class RegionComparator implements Comparator<Map<String, String>> {
private static class RegionComparator implements Comparator<Map<String, String>> {
@Override
public int compare(Map<String, String> lhs, Map<String, String> rhs) {
return lhs.get("country_name").compareTo(rhs.get("country_name"));

View File

@@ -66,8 +66,7 @@ public class TextSecureCommunicationModule {
TextSecurePreferences.getLocalNumber(context),
TextSecurePreferences.getPushServerPassword(context),
new TextSecureAxolotlStore(context),
Optional.of((TextSecureMessageSender.EventListener)
new SecurityEventListener(context)));
Optional.<TextSecureMessageSender.EventListener>of(new SecurityEventListener(context)));
}
};
}

View File

@@ -12,6 +12,7 @@ import org.thoughtcrime.securesms.database.PartDatabase;
import org.thoughtcrime.securesms.database.PartDatabase.PartId;
import org.thoughtcrime.securesms.dependencies.InjectableType;
import org.thoughtcrime.securesms.jobs.requirements.MasterSecretRequirement;
import org.thoughtcrime.securesms.jobs.requirements.MediaNetworkRequirement;
import org.thoughtcrime.securesms.notifications.MessageNotifier;
import org.thoughtcrime.securesms.util.Util;
import org.whispersystems.jobqueue.JobParameters;
@@ -26,7 +27,6 @@ import org.whispersystems.textsecure.api.push.exceptions.PushNetworkException;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
import javax.inject.Inject;
@@ -35,50 +35,54 @@ import ws.com.google.android.mms.MmsException;
import ws.com.google.android.mms.pdu.PduPart;
public class AttachmentDownloadJob extends MasterSecretJob implements InjectableType {
private static final String TAG = AttachmentDownloadJob.class.getSimpleName();
private static final long serialVersionUID = 1L;
private static final String TAG = AttachmentDownloadJob.class.getSimpleName();
@Inject transient TextSecureMessageReceiver messageReceiver;
private final long messageId;
private final long partRowId;
private final long partUniqueId;
public AttachmentDownloadJob(Context context, long messageId) {
public AttachmentDownloadJob(Context context, long messageId, PartId partId) {
super(context, JobParameters.newBuilder()
.withGroupId(AttachmentDownloadJob.class.getCanonicalName())
.withRequirement(new MasterSecretRequirement(context))
.withRequirement(new NetworkRequirement(context))
.withRequirement(new MediaNetworkRequirement(context, messageId, partId))
.withPersistence()
.create());
this.messageId = messageId;
this.messageId = messageId;
this.partRowId = partId.getRowId();
this.partUniqueId = partId.getUniqueId();
}
@Override
public void onAdded() {}
public void onAdded() {
}
@Override
public void onRun(MasterSecret masterSecret) throws IOException {
PartDatabase database = DatabaseFactory.getPartDatabase(context);
final PartId partId = new PartId(partRowId, partUniqueId);
final PduPart part = DatabaseFactory.getPartDatabase(context).getPart(partId);
Log.w(TAG, "Downloading push parts for: " + messageId);
List<PduPart> parts = database.getParts(messageId);
for (PduPart part : parts) {
retrievePart(masterSecret, part, messageId);
Log.w(TAG, "Got part: " + part.getPartId());
if (part == null) {
Log.w(TAG, "part no longer exists.");
return;
}
Log.w(TAG, "Downloading push part " + partId);
retrievePart(masterSecret, part, messageId);
MessageNotifier.updateNotification(context, masterSecret);
}
@Override
public void onCanceled() {
PartDatabase database = DatabaseFactory.getPartDatabase(context);
List<PduPart> parts = database.getParts(messageId);
for (PduPart part : parts) {
markFailed(messageId, part, part.getPartId());
}
final PartId partId = new PartId(partRowId, partUniqueId);
final PduPart part = DatabaseFactory.getPartDatabase(context).getPart(partId);
markFailed(messageId, part, part.getPartId());
}
@Override
@@ -89,6 +93,7 @@ public class AttachmentDownloadJob extends MasterSecretJob implements Injectable
private void retrievePart(MasterSecret masterSecret, PduPart part, long messageId)
throws IOException
{
PartDatabase database = DatabaseFactory.getPartDatabase(context);
File attachmentFile = null;
@@ -116,6 +121,8 @@ public class AttachmentDownloadJob extends MasterSecretJob implements Injectable
private TextSecureAttachmentPointer createAttachmentPointer(MasterSecret masterSecret, PduPart part)
throws InvalidPartException
{
if (part.getContentLocation() == null) throw new InvalidPartException("null content location");
try {
AsymmetricMasterSecret asymmetricMasterSecret = MasterSecretUtil.getAsymmetricMasterSecret(context, masterSecret);
long id = Long.parseLong(Util.toIsoString(part.getContentLocation()));
@@ -153,7 +160,8 @@ public class AttachmentDownloadJob extends MasterSecretJob implements Injectable
}
}
private class InvalidPartException extends Exception {
private static class InvalidPartException extends Exception {
public InvalidPartException(String s) {super(s);}
public InvalidPartException(Exception e) {super(e);}
}

View File

@@ -9,6 +9,7 @@ import org.thoughtcrime.securesms.crypto.MasterSecret;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.GroupDatabase;
import org.thoughtcrime.securesms.jobs.requirements.MasterSecretRequirement;
import org.thoughtcrime.securesms.mms.AttachmentStreamUriLoader.AttachmentModel;
import org.thoughtcrime.securesms.push.TextSecurePushTrustStore;
import org.thoughtcrime.securesms.util.BitmapDecodingException;
import org.thoughtcrime.securesms.util.BitmapUtil;
@@ -24,6 +25,7 @@ import org.whispersystems.textsecure.internal.util.StaticCredentialsProvider;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.concurrent.ExecutionException;
public class AvatarDownloadJob extends MasterSecretJob {
@@ -61,14 +63,11 @@ public class AvatarDownloadJob extends MasterSecretJob {
}
attachment = downloadAttachment(relay, avatarId);
InputStream scaleInputStream = new AttachmentCipherInputStream(attachment, key);
InputStream measureInputStream = new AttachmentCipherInputStream(attachment, key);
Bitmap avatar = BitmapUtil.createScaledBitmap(measureInputStream, scaleInputStream, 500, 500);
Bitmap avatar = BitmapUtil.createScaledBitmap(context, new AttachmentModel(attachment, key), 500, 500);
database.updateAvatar(groupId, avatar);
}
} catch (InvalidMessageException | BitmapDecodingException | NonSuccessfulResponseCodeException e) {
} catch (ExecutionException | NonSuccessfulResponseCodeException e) {
Log.w(TAG, e);
} finally {
if (attachment != null)

View File

@@ -58,9 +58,11 @@ import org.whispersystems.textsecure.api.messages.multidevice.SentTranscriptMess
import org.whispersystems.textsecure.api.messages.multidevice.TextSecureSyncMessage;
import org.whispersystems.textsecure.api.push.TextSecureAddress;
import java.util.List;
import java.util.concurrent.TimeUnit;
import ws.com.google.android.mms.MmsException;
import ws.com.google.android.mms.pdu.PduPart;
public class PushDecryptJob extends ContextJob {
@@ -252,11 +254,14 @@ public class PushDecryptJob extends ContextJob {
message.getGroupInfo(),
message.getAttachments());
Pair<Long, Long> messageAndThreadId = database.insertSecureDecryptedMessageInbox(masterSecret, mediaMessage, -1);
Pair<Long, Long> messageAndThreadId = database.insertSecureDecryptedMessageInbox(masterSecret, mediaMessage, -1);
ApplicationContext.getInstance(context)
.getJobManager()
.add(new AttachmentDownloadJob(context, messageAndThreadId.first));
List<PduPart> parts = DatabaseFactory.getPartDatabase(context).getParts(messageAndThreadId.first);
for (PduPart part : parts) {
ApplicationContext.getInstance(context)
.getJobManager()
.add(new AttachmentDownloadJob(context, messageAndThreadId.first, part.getPartId()));
}
if (smsMessageId.isPresent()) {
DatabaseFactory.getSmsDatabase(context).deleteMessage(smsMessageId.get());
@@ -284,9 +289,11 @@ public class PushDecryptJob extends ContextJob {
database.markAsSent(messageId, "push".getBytes(), 0);
database.markAsPush(messageId);
ApplicationContext.getInstance(context)
.getJobManager()
.add(new AttachmentDownloadJob(context, messageId));
for (PduPart part : DatabaseFactory.getPartDatabase(context).getParts(messageId)) {
ApplicationContext.getInstance(context)
.getJobManager()
.add(new AttachmentDownloadJob(context, messageId, part.getPartId()));
}
if (smsMessageId.isPresent()) {
DatabaseFactory.getSmsDatabase(context).deleteMessage(smsMessageId.get());

View File

@@ -0,0 +1,99 @@
package org.thoughtcrime.securesms.jobs.requirements;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.annotation.NonNull;
import android.util.Log;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.PartDatabase;
import org.thoughtcrime.securesms.database.PartDatabase.PartId;
import org.thoughtcrime.securesms.util.MediaUtil;
import org.thoughtcrime.securesms.util.ServiceUtil;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.whispersystems.jobqueue.dependencies.ContextDependent;
import org.whispersystems.jobqueue.requirements.Requirement;
import java.util.Collections;
import java.util.Set;
import ws.com.google.android.mms.pdu.PduPart;
public class MediaNetworkRequirement implements Requirement, ContextDependent {
private static final long serialVersionUID = 0L;
private static final String TAG = MediaNetworkRequirement.class.getSimpleName();
private transient Context context;
private final long messageId;
private final long partRowId;
private final long partUniqueId;
public MediaNetworkRequirement(Context context, long messageId, PartId partId) {
this.context = context;
this.messageId = messageId;
this.partRowId = partId.getRowId();
this.partUniqueId = partId.getUniqueId();
}
@Override public void setContext(Context context) {
this.context = context;
}
private NetworkInfo getNetworkInfo() {
return ServiceUtil.getConnectivityManager(context).getActiveNetworkInfo();
}
public boolean isConnectedWifi() {
final NetworkInfo info = getNetworkInfo();
return info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_WIFI;
}
public boolean isConnectedMobile() {
final NetworkInfo info = getNetworkInfo();
return info != null && info.isConnected() && info.getType() == ConnectivityManager.TYPE_MOBILE;
}
public boolean isConnectedRoaming() {
final NetworkInfo info = getNetworkInfo();
return info != null && info.isConnected() && info.isRoaming() && info.getType() == ConnectivityManager.TYPE_MOBILE;
}
private @NonNull Set<String> getAllowedAutoDownloadTypes() {
if (isConnectedWifi()) {
return TextSecurePreferences.getWifiMediaDownloadAllowed(context);
} else if (isConnectedRoaming()) {
return TextSecurePreferences.getRoamingMediaDownloadAllowed(context);
} else if (isConnectedMobile()) {
return TextSecurePreferences.getMobileMediaDownloadAllowed(context);
} else {
return Collections.emptySet();
}
}
@Override
public boolean isPresent() {
final PartId partId = new PartId(partRowId, partUniqueId);
final PartDatabase db = DatabaseFactory.getPartDatabase(context);
final PduPart part = db.getPart(partId);
if (part == null) {
Log.w(TAG, "part was null, returning vacuous true");
return true;
}
Log.w(TAG, "part transfer progress is " + part.getTransferProgress());
switch (part.getTransferProgress()) {
case PartDatabase.TRANSFER_PROGRESS_STARTED:
return true;
case PartDatabase.TRANSFER_PROGRESS_AUTO_PENDING:
final Set<String> allowedTypes = getAllowedAutoDownloadTypes();
final boolean isAllowed = allowedTypes.contains(MediaUtil.getDiscreteMimeType(part));
if (isAllowed) db.setTransferState(messageId, partId, PartDatabase.TRANSFER_PROGRESS_STARTED);
return isAllowed;
default:
return false;
}
}
}

View File

@@ -0,0 +1,18 @@
package org.thoughtcrime.securesms.jobs.requirements;
import org.whispersystems.jobqueue.requirements.RequirementListener;
import org.whispersystems.jobqueue.requirements.RequirementProvider;
public class MediaNetworkRequirementProvider implements RequirementProvider {
private RequirementListener listener;
public void notifyMediaControlEvent() {
if (listener != null) listener.onRequirementStatusChanged();
}
@Override
public void setListener(RequirementListener listener) {
this.listener = listener;
}
}

View File

@@ -29,7 +29,6 @@ import android.util.Log;
import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.widget.ImageView;
import android.widget.Toast;
import org.thoughtcrime.securesms.R;
@@ -48,7 +47,6 @@ public class AttachmentManager {
private final Context context;
private final View attachmentView;
private final ThumbnailView thumbnail;
private final ImageView removeButton;
private final SlideDeck slideDeck;
private final AttachmentListener attachmentListener;
@@ -57,12 +55,11 @@ public class AttachmentManager {
public AttachmentManager(Activity view, AttachmentListener listener) {
this.attachmentView = view.findViewById(R.id.attachment_editor);
this.thumbnail = (ThumbnailView)view.findViewById(R.id.attachment_thumbnail);
this.removeButton = (ImageView)view.findViewById(R.id.remove_image_button);
this.slideDeck = new SlideDeck();
this.context = view;
this.attachmentListener = listener;
this.removeButton.setOnClickListener(new RemoveButtonListener());
thumbnail.setRemoveClickListener(new RemoveButtonListener());
}
public void clear() {
@@ -76,7 +73,6 @@ public class AttachmentManager {
attachmentView.setVisibility(View.GONE);
attachmentListener.onAttachmentChanged();
}
});
attachmentView.startAnimation(animation);

View File

@@ -0,0 +1,52 @@
package org.thoughtcrime.securesms.mms;
import android.content.ContentResolver;
import android.content.Context;
import android.net.Uri;
import android.util.Log;
import com.bumptech.glide.Priority;
import com.bumptech.glide.load.data.DataFetcher;
import com.bumptech.glide.load.data.StreamLocalUriFetcher;
import org.thoughtcrime.securesms.crypto.MasterSecret;
import org.whispersystems.textsecure.api.crypto.AttachmentCipherInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
public class AttachmentStreamLocalUriFetcher implements DataFetcher<InputStream> {
private static final String TAG = AttachmentStreamLocalUriFetcher.class.getSimpleName();
private File attachment;
private byte[] key;
private InputStream is;
public AttachmentStreamLocalUriFetcher(File attachment, byte[] key) {
this.attachment = attachment;
this.key = key;
}
@Override public InputStream loadData(Priority priority) throws Exception {
is = new AttachmentCipherInputStream(attachment, key);
return is;
}
@Override public void cleanup() {
try {
if (is != null) is.close();
is = null;
} catch (IOException ioe) {
Log.w(TAG, "ioe");
}
}
@Override public String getId() {
return AttachmentStreamLocalUriFetcher.class.getCanonicalName() + "::" + attachment.getAbsolutePath();
}
@Override public void cancel() {
}
}

View File

@@ -0,0 +1,63 @@
package org.thoughtcrime.securesms.mms;
import android.content.Context;
import android.net.Uri;
import com.bumptech.glide.load.data.DataFetcher;
import com.bumptech.glide.load.model.GenericLoaderFactory;
import com.bumptech.glide.load.model.ModelLoader;
import com.bumptech.glide.load.model.ModelLoaderFactory;
import com.bumptech.glide.load.model.stream.StreamModelLoader;
import org.thoughtcrime.securesms.crypto.MasterSecret;
import org.thoughtcrime.securesms.mms.AttachmentStreamUriLoader.AttachmentModel;
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader.DecryptableUri;
import org.thoughtcrime.securesms.util.SaveAttachmentTask.Attachment;
import java.io.File;
import java.io.InputStream;
/**
* A {@link ModelLoader} for translating uri models into {@link InputStream} data. Capable of handling 'http',
* 'https', 'android.resource', 'content', and 'file' schemes. Unsupported schemes will throw an exception in
* {@link #getResourceFetcher(Uri, int, int)}.
*/
public class AttachmentStreamUriLoader implements StreamModelLoader<AttachmentModel> {
private final Context context;
/**
* THe default factory for {@link com.bumptech.glide.load.model.stream.StreamUriLoader}s.
*/
public static class Factory implements ModelLoaderFactory<AttachmentModel, InputStream> {
@Override
public StreamModelLoader<AttachmentModel> build(Context context, GenericLoaderFactory factories) {
return new AttachmentStreamUriLoader(context);
}
@Override
public void teardown() {
// Do nothing.
}
}
public AttachmentStreamUriLoader(Context context) {
this.context = context;
}
@Override
public DataFetcher<InputStream> getResourceFetcher(AttachmentModel model, int width, int height) {
return new AttachmentStreamLocalUriFetcher(model.attachment, model.key);
}
public static class AttachmentModel {
public File attachment;
public byte[] key;
public AttachmentModel(File attachment, byte[] key) {
this.attachment = attachment;
this.key = key;
}
}
}

View File

@@ -0,0 +1,32 @@
package org.thoughtcrime.securesms.mms;
import android.content.ContentResolver;
import android.content.Context;
import android.net.Uri;
import android.os.Build.VERSION;
import android.os.Build.VERSION_CODES;
import android.provider.ContactsContract;
import com.bumptech.glide.load.data.StreamLocalUriFetcher;
import java.io.FileNotFoundException;
import java.io.InputStream;
public class ContactPhotoLocalUriFetcher extends StreamLocalUriFetcher {
private static final String TAG = ContactPhotoLocalUriFetcher.class.getSimpleName();
public ContactPhotoLocalUriFetcher(Context context, Uri uri) {
super(context, uri);
}
@Override
protected InputStream loadResource(Uri uri, ContentResolver contentResolver)
throws FileNotFoundException
{
if (VERSION.SDK_INT >= VERSION_CODES.ICE_CREAM_SANDWICH) {
return ContactsContract.Contacts.openContactPhotoInputStream(contentResolver, uri, true);
} else {
return ContactsContract.Contacts.openContactPhotoInputStream(contentResolver, uri);
}
}
}

View File

@@ -0,0 +1,51 @@
package org.thoughtcrime.securesms.mms;
import android.content.Context;
import android.net.Uri;
import com.bumptech.glide.load.data.DataFetcher;
import com.bumptech.glide.load.model.GenericLoaderFactory;
import com.bumptech.glide.load.model.ModelLoaderFactory;
import com.bumptech.glide.load.model.stream.StreamModelLoader;
import org.thoughtcrime.securesms.mms.ContactPhotoUriLoader.ContactPhotoUri;
import java.io.InputStream;
public class ContactPhotoUriLoader implements StreamModelLoader<ContactPhotoUri> {
private final Context context;
/**
* THe default factory for {@link com.bumptech.glide.load.model.stream.StreamUriLoader}s.
*/
public static class Factory implements ModelLoaderFactory<ContactPhotoUri, InputStream> {
@Override
public StreamModelLoader<ContactPhotoUri> build(Context context, GenericLoaderFactory factories) {
return new ContactPhotoUriLoader(context);
}
@Override
public void teardown() {
// Do nothing.
}
}
public ContactPhotoUriLoader(Context context) {
this.context = context;
}
@Override
public DataFetcher<InputStream> getResourceFetcher(ContactPhotoUri model, int width, int height) {
return new ContactPhotoLocalUriFetcher(context, model.uri);
}
public static class ContactPhotoUri {
public Uri uri;
public ContactPhotoUri(Uri uri) {
this.uri = uri;
}
}
}

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