mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
Compare commits
19 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3441162de4 | |||
| b695015e8f | |||
| e50bf6ef95 | |||
| 3ca55ad986 | |||
| 40ff8268a8 | |||
| 2e7fac05ba | |||
| a42996892d | |||
| 3e926becba | |||
| a1eeb25dff | |||
| a1f4b64c4a | |||
| 5673b25e52 | |||
| f755add1d2 | |||
| 60dd8098c4 | |||
| 5823d04a20 | |||
| 3cdfa949e9 | |||
| b69eaddddf | |||
| 137b32303f | |||
| da87705fb8 | |||
| d808adeb39 |
@@ -1,5 +1,25 @@
|
||||
# Delta Chat Changelog
|
||||
|
||||
## v0.17.3
|
||||
2018-05-17
|
||||
|
||||
* Fix appearing system messages appearing twice
|
||||
* Fix: Use all gossipped verifications in verified groups
|
||||
* Update Basque, Polish, Russian and Ukrainian translations
|
||||
|
||||
## v0.17.2
|
||||
2018-05-15
|
||||
|
||||
* Fix problem with adding formerly uncontacted members to groups
|
||||
* Unblock manually blocked members when they are created manually as contact again
|
||||
|
||||
## v0.17.1
|
||||
2018-05-11
|
||||
|
||||
* Improve QR code scanning screens
|
||||
* Add a labs-option to disabled the new QR logo overlay
|
||||
* Update Russian translations
|
||||
|
||||
## v0.17.0
|
||||
2018-05-07
|
||||
|
||||
|
||||
@@ -124,7 +124,7 @@ android {
|
||||
targetSdkVersion 25 // 25: Nougat. CAVE: Do NOT target "Andoid O" without checking the background tasks carefully, see https://developer.android.com/preview/behavior-changes.html#back-all . As long as we target "Nougat", everything works as expected even for "Andoid O" or later
|
||||
// in general, we should not change the target without reason; eg. after the switch to Nougat, the camera stops working (see https://inthecheesefactory.com/blog/how-to-share-access-to-file-with-fileprovider-on-android-nougat/en )
|
||||
|
||||
versionName "0.17.0" // do NOT forget to increase defaultConfig.versionCode!
|
||||
versionCode 517
|
||||
versionName "0.17.3" // do NOT forget to increase defaultConfig.versionCode!
|
||||
versionCode 520
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1647,6 +1647,7 @@ LOCAL_SRC_FILES += \
|
||||
./messenger-backend/src/mrlot.c \
|
||||
./messenger-backend/src/mrmailbox.c \
|
||||
./messenger-backend/src/mrmailbox_configure.c \
|
||||
./messenger-backend/src/mrmailbox_connect.c \
|
||||
./messenger-backend/src/mrmailbox_e2ee.c \
|
||||
./messenger-backend/src/mrmailbox_imex.c \
|
||||
./messenger-backend/src/mrmailbox_keyhistory.c \
|
||||
@@ -1664,6 +1665,7 @@ LOCAL_SRC_FILES += \
|
||||
./messenger-backend/src/mrsmtp.c \
|
||||
./messenger-backend/src/mrsqlite3.c \
|
||||
./messenger-backend/src/mrstock.c \
|
||||
./messenger-backend/src/mrtoken.c \
|
||||
./messenger-backend/src/mrtools.c \
|
||||
./messenger-backend/src/mruudecode.c \
|
||||
./messenger-backend/cmdline/cmdline.c \
|
||||
|
||||
Submodule MessengerProj/jni/messenger-backend updated: 03a434fdef...178a6a2c01
@@ -113,11 +113,13 @@
|
||||
|
||||
<activity
|
||||
android:name=".QRshowActivity"
|
||||
android:theme="@style/Theme.MessengerProj.AppCompat"
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
|
||||
</activity>
|
||||
|
||||
<activity
|
||||
android:name=".QRscanActivity"
|
||||
android:theme="@style/Theme.MessengerProj.AppCompat"
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
|
||||
</activity>
|
||||
|
||||
|
||||
@@ -196,13 +196,6 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
|
||||
if( !showArchivedOnly ) {
|
||||
ActionBarMenu menu = actionBar.createMenu();
|
||||
if (!onlySelect) {
|
||||
if( qr_enabled ) {
|
||||
qrScanItem = menu.addItem(ID_SCAN_QR, R.drawable.ic_ab_qr);
|
||||
}
|
||||
passcodeItem = menu.addItem(ID_LOCK_APP, R.drawable.ic_ab_lock_screen);
|
||||
updateButtons();
|
||||
}
|
||||
final ActionBarMenuItem item = menu.addItem(0, R.drawable.ic_ab_search).setIsSearchField(true, true).setActionBarMenuItemSearchListener(new ActionBarMenuItem.ActionBarMenuItemSearchListener() {
|
||||
@Override
|
||||
public void onSearchExpand() {
|
||||
@@ -277,6 +270,13 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
}
|
||||
});
|
||||
item.getSearchField().setHint(ApplicationLoader.applicationContext.getString(R.string.Search));
|
||||
if (!onlySelect) {
|
||||
passcodeItem = menu.addItem(ID_LOCK_APP, R.drawable.ic_ab_lock_screen);
|
||||
if( qr_enabled ) {
|
||||
qrScanItem = menu.addItem(ID_SCAN_QR, R.drawable.ic_ab_qr);
|
||||
}
|
||||
updateButtons();
|
||||
}
|
||||
|
||||
headerItem = menu.addItem(0, R.drawable.ic_ab_other);
|
||||
headerItem.addSubItem(ID_NEW_CHAT, ApplicationLoader.applicationContext.getString(R.string.NewChat));
|
||||
@@ -284,7 +284,7 @@ public class ChatlistActivity extends BaseFragment implements NotificationCenter
|
||||
if(!onlySelect) {
|
||||
if( qr_enabled ) {
|
||||
//headerItem.addSubItem(ID_NEW_VERIFIED_GROUP, ApplicationLoader.applicationContext.getString(R.string.NewVerifiedGroup));
|
||||
headerItem.addSubItem(ID_SHOW_QR, ApplicationLoader.applicationContext.getString(R.string.QrShowInviteCode));
|
||||
headerItem.addSubItem(ID_SHOW_QR, ApplicationLoader.applicationContext.getString(R.string.QrShowVerifyCode));
|
||||
}
|
||||
headerItem.addSubItem(ID_DEADDROP, ApplicationLoader.applicationContext.getString(R.string.Deaddrop));
|
||||
headerItem.addSubItem(ID_SETTINGS, ApplicationLoader.applicationContext.getString(R.string.Settings));
|
||||
|
||||
@@ -838,7 +838,7 @@ public class ContactsActivity extends BaseFragment implements NotificationCenter
|
||||
textCell.setText(mContext.getString(R.string.NewContactTitle), false);
|
||||
}
|
||||
else if( i == rowInviteViaQr) {
|
||||
textCell.setText(mContext.getString(R.string.QrShowInviteCode), false);
|
||||
textCell.setText(mContext.getString(R.string.QrShowVerifyCode), false);
|
||||
}
|
||||
}
|
||||
else if( type == ROWTYPE_CONTACT ) {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.b44t.messenger;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.ActionBar;
|
||||
import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
@@ -8,7 +9,9 @@ import android.os.Bundle;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.v4.app.ActivityCompat;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.view.KeyEvent;
|
||||
import android.view.MenuItem;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.google.zxing.integration.android.IntentIntegrator;
|
||||
@@ -16,7 +19,7 @@ import com.google.zxing.integration.android.IntentResult;
|
||||
import com.journeyapps.barcodescanner.CaptureManager;
|
||||
import com.journeyapps.barcodescanner.CompoundBarcodeView;
|
||||
|
||||
public class QRscanActivity extends Activity {
|
||||
public class QRscanActivity extends AppCompatActivity {
|
||||
private CaptureManager capture;
|
||||
private CompoundBarcodeView barcodeScannerView;
|
||||
|
||||
@@ -28,8 +31,12 @@ public class QRscanActivity extends Activity {
|
||||
|
||||
setContentView(R.layout.activity_qrscan);
|
||||
|
||||
assert getSupportActionBar() != null;
|
||||
getSupportActionBar().setTitle(R.string.QrScan);
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
barcodeScannerView = (CompoundBarcodeView)findViewById(R.id.zxing_barcode_scanner);
|
||||
barcodeScannerView.setStatusText(getString(R.string.QrScan));
|
||||
barcodeScannerView.setStatusText(getString(R.string.QrScanHint)+"\n ");
|
||||
|
||||
if (savedInstanceState != null) {
|
||||
init(barcodeScannerView, getIntent(), savedInstanceState);
|
||||
@@ -46,6 +53,17 @@ public class QRscanActivity extends Activity {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
super.onOptionsItemSelected(item);
|
||||
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home: finish(); return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onRequestPermissionsResult(int requestCode, @NonNull String permissions[],
|
||||
@NonNull int[] grantResults) {
|
||||
|
||||
@@ -1,16 +1,25 @@
|
||||
package com.b44t.messenger;
|
||||
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.Paint;
|
||||
import android.graphics.Rect;
|
||||
import android.os.Bundle;
|
||||
import android.app.Activity;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
import android.view.MenuItem;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.google.zxing.BarcodeFormat;
|
||||
import com.google.zxing.EncodeHintType;
|
||||
import com.google.zxing.MultiFormatWriter;
|
||||
import com.google.zxing.WriterException;
|
||||
import com.google.zxing.common.BitMatrix;
|
||||
|
||||
public class QRshowActivity extends Activity implements NotificationCenter.NotificationCenterDelegate {
|
||||
import java.util.Hashtable;
|
||||
|
||||
public class QRshowActivity extends AppCompatActivity implements NotificationCenter.NotificationCenterDelegate {
|
||||
|
||||
public final static int WHITE = 0xFFFFFFFF;
|
||||
public final static int BLACK = 0xFF000000;
|
||||
@@ -24,15 +33,45 @@ public class QRshowActivity extends Activity implements NotificationCenter.Notif
|
||||
super.onCreate(savedInstanceState);
|
||||
setContentView(R.layout.activity_qrshow);
|
||||
|
||||
num_joiners = 0;
|
||||
|
||||
Bundle b = getIntent().getExtras();
|
||||
int chat_id = 0;
|
||||
if(b != null) {
|
||||
chat_id = b.getInt("chat_id");
|
||||
}
|
||||
|
||||
ImageView imageView = (ImageView) findViewById(R.id.myImage);
|
||||
assert getSupportActionBar() != null;
|
||||
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||
|
||||
String hint = "";
|
||||
if( chat_id != 0 ) {
|
||||
// verified-group
|
||||
String groupName = MrMailbox.getChat(chat_id).getName();
|
||||
hint = String.format(ApplicationLoader.applicationContext.getString(R.string.QrJoinVerifiedGroupHint), groupName);
|
||||
getSupportActionBar().setTitle(groupName);
|
||||
getSupportActionBar().setSubtitle(R.string.QrJoinVerifiedGroupTitle);
|
||||
}
|
||||
else {
|
||||
// verify-contact
|
||||
String selfName = MrMailbox.getConfig("displayname", ""); // we cannot use MrContact.getDisplayName() as this would result in "Me" instead of
|
||||
String nameNaddr = "";
|
||||
if( selfName.isEmpty() ) {
|
||||
selfName = MrMailbox.getConfig("addr", "unknown");
|
||||
nameNaddr = selfName;
|
||||
}
|
||||
else {
|
||||
nameNaddr = String.format("%s (%s)", selfName, MrMailbox.getConfig("addr", ""));
|
||||
}
|
||||
hint = String.format(ApplicationLoader.applicationContext.getString(R.string.QrVerifyContactHint), nameNaddr);
|
||||
getSupportActionBar().setTitle(selfName);
|
||||
getSupportActionBar().setSubtitle(R.string.QrVerifyContactTitle);
|
||||
}
|
||||
TextView hintBelowQr = (TextView) findViewById(R.id.qrShowHint);
|
||||
hintBelowQr.setText(AndroidUtilities.replaceTags(hint));
|
||||
|
||||
|
||||
num_joiners = 0;
|
||||
|
||||
ImageView imageView = (ImageView) findViewById(R.id.qrImage);
|
||||
try {
|
||||
Bitmap bitmap = encodeAsBitmap(MrMailbox.getSecurejoinQr(chat_id));
|
||||
imageView.setImageBitmap(bitmap);
|
||||
@@ -49,9 +88,22 @@ public class QRshowActivity extends Activity implements NotificationCenter.Notif
|
||||
NotificationCenter.getInstance().removeObserver(this, NotificationCenter.secureJoinInviterProgress);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean onOptionsItemSelected(MenuItem item) {
|
||||
super.onOptionsItemSelected(item);
|
||||
|
||||
switch (item.getItemId()) {
|
||||
case android.R.id.home: finish(); return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
Bitmap encodeAsBitmap(String str) throws WriterException {
|
||||
BitMatrix result;
|
||||
try {
|
||||
Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>();
|
||||
hints.put(EncodeHintType.ERROR_CORRECTION, "8");
|
||||
result = new MultiFormatWriter().encode(str,
|
||||
BarcodeFormat.QR_CODE, WIDTH, HEIGHT, null);
|
||||
} catch (IllegalArgumentException iae) {
|
||||
@@ -71,9 +123,26 @@ public class QRshowActivity extends Activity implements NotificationCenter.Notif
|
||||
|
||||
Bitmap bitmap = Bitmap.createBitmap(w, h, Bitmap.Config.ARGB_8888);
|
||||
bitmap.setPixels(pixels, 0, w, 0, 0, w, h);
|
||||
|
||||
if( MrMailbox.getConfigInt("qr_overlay_logo", 1)!=0 ) {
|
||||
Bitmap overlay = BitmapFactory.decodeResource(ApplicationLoader.applicationContext.getResources(), R.drawable.qr_overlay);
|
||||
putOverlay(bitmap, overlay);
|
||||
}
|
||||
|
||||
return bitmap;
|
||||
}
|
||||
|
||||
public void putOverlay(Bitmap bitmap, Bitmap overlay) {
|
||||
int bw = bitmap.getWidth();
|
||||
int bh = bitmap.getHeight();
|
||||
int ow = bw/6;
|
||||
int oh = bh/6;
|
||||
|
||||
Canvas canvas = new Canvas(bitmap);
|
||||
Paint paint = new Paint(Paint.FILTER_BITMAP_FLAG);
|
||||
canvas.drawBitmap(overlay, null, new Rect(bw/2-ow/2, bh/2-oh/2, bw/2+ow/2, bh/2+oh/2), paint);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void didReceivedNotification(int id, Object... args) {
|
||||
if( id==NotificationCenter.secureJoinInviterProgress) {
|
||||
|
||||
@@ -82,6 +82,7 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
private int passcodeRow;
|
||||
private int manageKeysRow;
|
||||
private int labsEnableQrRow;
|
||||
private int labsQrOverlayLogoRow;
|
||||
private int backupRow;
|
||||
private int backupShadowRow;
|
||||
private int rowCount;
|
||||
@@ -142,6 +143,14 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
cacheRow = -1;// for now, the - non-functional - page is reachable by the "storage settings" in the "android App Settings" only
|
||||
manageKeysRow = rowCount++;
|
||||
labsEnableQrRow = rowCount++;
|
||||
|
||||
if( MrMailbox.getConfigInt("qr_enabled", 0) != 0 ) {
|
||||
labsQrOverlayLogoRow = rowCount++;
|
||||
}
|
||||
else {
|
||||
labsQrOverlayLogoRow = -1;
|
||||
}
|
||||
|
||||
backupRow = rowCount++;
|
||||
backupShadowRow = rowCount++;
|
||||
|
||||
@@ -223,7 +232,7 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
else {
|
||||
AlertDialog.Builder builder1 = new AlertDialog.Builder(getParentActivity());
|
||||
builder1.setTitle("Labs: QR code options");
|
||||
builder1.setMessage("With the QR code options you can easily connect to other Delta Chat users by just scanning a QR code. Moverover, this securely transfers the encryption keys in both directions and allows the creation of verified groups.\n\nStay tuned for more information about this on the mailing ist :)\n\nDo you want to enable this experimental feature that may still contain issues?");
|
||||
builder1.setMessage("With the QR code options you can easily connect to other Delta Chat users by scanning a QR code. Moreover, this securely transfers the encryption keys in both directions and allows the creation of verified groups.\n\nStay tuned for more information about this on the mailing ist :)\n\nDo you want to enable this experimental feature that may still contain issues?");
|
||||
builder1.setNegativeButton(R.string.Cancel, null);
|
||||
builder1.setPositiveButton(R.string.OK, new DialogInterface.OnClickListener() {
|
||||
@Override
|
||||
@@ -238,6 +247,9 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
showDialog(builder1.create());
|
||||
}
|
||||
}
|
||||
else if( i == labsQrOverlayLogoRow ) {
|
||||
MrMailbox.setConfigInt("qr_overlay_logo", MrMailbox.getConfigInt("qr_overlay_logo", 1)!=0? 0 : 1);
|
||||
}
|
||||
else if (i == blockedRow) {
|
||||
presentFragment(new BlockedUsersActivity());
|
||||
}
|
||||
@@ -710,6 +722,9 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
} else if (i == labsEnableQrRow) {
|
||||
boolean qr_enabled = MrMailbox.getConfigInt("qr_enabled", 0)!=0;
|
||||
textCell.setTextAndCheck("Labs: QR code options", qr_enabled, true);
|
||||
} else if (i == labsQrOverlayLogoRow) {
|
||||
boolean qr_overlay_logo = MrMailbox.getConfigInt("qr_overlay_logo", 1)!=0;
|
||||
textCell.setTextAndCheck("Labs: QR logo overlay", qr_overlay_logo, true);
|
||||
}
|
||||
}
|
||||
else if (type == ROWTYPE_HEADER) {
|
||||
@@ -739,7 +754,7 @@ public class SettingsAdvFragment extends BaseFragment implements NotificationCen
|
||||
return ROWTYPE_HEADER;
|
||||
} else if ( i == sendByEnterRow || i == raiseToSpeakRow || i == autoplayGifsRow
|
||||
|| i==showUnknownSendersRow || i == directShareRow || i==e2eEncryptionRow
|
||||
|| i==labsEnableQrRow) {
|
||||
|| i==labsEnableQrRow || i==labsQrOverlayLogoRow ) {
|
||||
return ROWTYPE_CHECK;
|
||||
} else {
|
||||
return ROWTYPE_TEXT_SETTINGS;
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 4.9 KiB |
@@ -1,12 +1,25 @@
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" >
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" >
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/myImage"
|
||||
android:id="@+id/qrImage"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_centerVertical="true" />
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"/>
|
||||
|
||||
</RelativeLayout>
|
||||
<TextView
|
||||
android:id="@+id/qrShowHint"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="16sp"
|
||||
android:layout_marginEnd="8sp"
|
||||
android:layout_marginStart="8sp"
|
||||
android:text=""
|
||||
android:textAlignment="center"
|
||||
android:textAppearance="@style/TextAppearance.AppCompat"
|
||||
android:textSize="16sp"/>
|
||||
|
||||
</LinearLayout>
|
||||
@@ -137,6 +137,7 @@
|
||||
<string name="AllVideo">Bideo guztiak</string>
|
||||
<string name="NoPhotos">Argazkirik ez oraindik</string>
|
||||
<string name="NoVideo">Bideorik ez oraindik</string>
|
||||
<string name="CropImage">Moztu irudia</string>
|
||||
<string name="EditImage">Editatu irudia</string>
|
||||
<string name="Enhance">Hobetu</string>
|
||||
<string name="Highlights">Distirak</string>
|
||||
@@ -144,6 +145,7 @@
|
||||
<string name="Exposure">Esposizioa</string>
|
||||
<string name="Warmth">Berotasuna</string>
|
||||
<string name="Saturation">Saturazioa</string>
|
||||
<string name="Vignette">Bineta</string>
|
||||
<string name="Shadows">Gerizak</string>
|
||||
<string name="Grain">Garaua</string>
|
||||
<string name="Sharpen">Fokatu</string>
|
||||
@@ -182,6 +184,7 @@
|
||||
<string name="FromGalley">Galeriatik</string>
|
||||
<string name="Set">Ezarrita</string>
|
||||
<string name="OK">Ados</string>
|
||||
<string name="Crop">Moztu</string>
|
||||
<!--messages-->
|
||||
<string name="AttachPhoto">Argazkia</string>
|
||||
<string name="AttachVideo">Bideoa</string>
|
||||
@@ -198,6 +201,8 @@
|
||||
<string name="AreYouSureDeleteThisChat">Ezabatu txat hau? Ez da txaten zerrendan berriro erakutsiko, mezuak zerbitzarian mantenduko dira.</string>
|
||||
<string name="AreYouSureBlockContact">Ziur kontaktu hau blokeatu nahi duzula?</string>
|
||||
<string name="AreYouSureDeleteContact">Ziur kontaktu hau ezabatu nahi duzula?</string>
|
||||
<!--permissions-->
|
||||
<string name="PermissionContacts">Kontaktuak atzitzeko baimena behar da zure lagunekin gailu guztietan konektatu ahal izateko.</string>
|
||||
<string name="PermissionNoAudio">Mikrofonoa atzitzeko baimena behar da ahots mezuak bidali ahal izateko.</string>
|
||||
<string name="PermissionOpenSettings">Ezarpenak</string>
|
||||
<!--Intro view-->
|
||||
@@ -231,6 +236,10 @@
|
||||
<item quantity="one">Mezu %d</item>
|
||||
<item quantity="other">%d mezu</item>
|
||||
</plurals>
|
||||
<plurals name="AreYouSureDeleteMessages">
|
||||
<item quantity="one">Ezabatu mezu %d? Zerbitzaritik ere ezabatuko da.</item>
|
||||
<item quantity="other">Ezabatu %d mezu ? Zerbitzaritik ere ezabatuko dira.</item>
|
||||
</plurals>
|
||||
<!-- Translators: The first string placeholder gets replaced with the
|
||||
text "%d new messages", so the complete sentence would be e.g.
|
||||
"4 new messages in 2 chats". -->
|
||||
@@ -269,6 +278,15 @@
|
||||
<item quantity="one">Gehienez jakinarazpen %1$d %2$sko tartean</item>
|
||||
<item quantity="other">Gehienez %1$d jakinarazpen %2$sko tartean</item>
|
||||
</plurals>
|
||||
<!--date formatters-->
|
||||
<string name="formatterMonthYear">MMMM yyyy</string>
|
||||
<string name="formatterMonth">MMM dd</string>
|
||||
<string name="formatterYear">dd.MM.yyyy</string>
|
||||
<string name="chatDate">EEE, MMMM d</string>
|
||||
<string name="chatFullDate">EEE, MMMM d, yyyy</string>
|
||||
<string name="formatterWeek">EEE</string>
|
||||
<string name="formatterDay24H">HH:mm</string>
|
||||
<string name="formatterDay12H">h:mm a</string>
|
||||
<string name="formatDateAtTime">%1$s - %2$s</string>
|
||||
<string name="AccountSettings">Kontuaren ezarpenak</string>
|
||||
<string name="MyAccount">Nire kontua</string>
|
||||
@@ -376,5 +394,30 @@
|
||||
<string name="AutocryptKeyTransferSucceeded">Gakoa ongi transferitu da. Gailu hau orain Autocrypt erabili dezake beste gailuko gako berarekin.</string>
|
||||
<string name="Retry">Saiatu berriro</string>
|
||||
<string name="SelfTalkSubtitle">Nire buruari bidalitako mezuak</string>
|
||||
<string name="QrScan">Irakurri QR kodea</string>
|
||||
<string name="QrShow">Erakutsi QR kodea</string>
|
||||
<string name="OobFingerprint">Hatz-marka</string>
|
||||
<string name="OobSecureJoinRequested">%1$s elkartu da.</string>
|
||||
<string name="Autocrypt">Autocrypt</string>
|
||||
<string name="NewVerifiedGroup">Egiaztatutako talde berria</string>
|
||||
<string name="SharedChats">Partekatutako txat-ak</string>
|
||||
<string name="VerifiedContact">Egiaztatutako kontaktua</string>
|
||||
<string name="Contact">Kontaktua</string>
|
||||
</resources>
|
||||
<string name="VerifiedGroup">Egiaztatutako taldea</string>
|
||||
<string name="Group">Taldea</string>
|
||||
<string name="EditedNameWillBeShared">Taldeko kide guztiek izango dute izen aldaketaren berri.</string>
|
||||
<string name="QrShowInviteCode">Erakutsi QR gonbidapen-kodea</string>
|
||||
<string name="E2EEncryptionPreferred">Muturretik muturrerako zifratzea hobetsia.</string>
|
||||
<string name="OobAddrVerified">%1$s egiaztatuta.</string>
|
||||
<string name="OobAddrVerifiedIntroduceMyself">%1$s egiaztatuta, egin aurkezpena …</string>
|
||||
<string name="OobAskJoinVerifiedGroup"><![CDATA[<b>]]>%1$s<![CDATA[</b>]]> egiaztatutako taldera elkartu nahi duzu?</string>
|
||||
<!-- Translators: %1$s is replaced by an action, eg. MsgMemberAddedToGroup, MsgMemberRemovedFromToGroup, MsgGroupNameChanged or MsgGroupImageChanged. If the action ends with a full stop, this is removed.
|
||||
%2$s is replaced by a the name of the user that made this action.
|
||||
Resulting strings might be "Member Alice added by Bob." or 'Group name changed from "Foo" to "Bar" by Claire.
|
||||
If you do not find a correct grammar for your language you can just use "%1$s (by %2$s)" or "%2$s: %1$s" -->
|
||||
<string name="ActionByUser">%1$s %2$s(e)k.</string>
|
||||
<!-- Translators: %1$s is replaced by an action, eg. MsgMemberAddedToGroup, MsgMemberRemovedFromToGroup, MsgGroupNameChanged or MsgGroupImageChanged. If the action ends with a full stop, this is removed.
|
||||
Resulting strings might be "Member Alice added by me." or 'Group name changed from "Foo" to "Bar" by me.
|
||||
If you do not find a correct grammar for your language you can just use "%1$s (by me)" or "Me: %1$s" -->
|
||||
<string name="ActionBySelf">%1$s nik.</string>
|
||||
</resources>
|
||||
|
||||
@@ -405,6 +405,7 @@
|
||||
<string name="HelpUrl">https://jaworski-pawel.github.io/Delta/#help</string>
|
||||
<string name="EncryptedMessage">Szyfrowana wiadomość</string>
|
||||
<string name="Encryption">Szyfrowanie</string>
|
||||
<string name="EncrinfoE2EAvailable">Pełne szyfrowanie jest dostępne.</string>
|
||||
<string name="EncrinfoTransport">Szyfrowanie transportu przynajmniej na moim serwerze.</string>
|
||||
<string name="EncrinfoNone">Brak szyfrowania na moim serwerze.</string>
|
||||
<string name="EncrinfoFingerprints">Odciski palców</string>
|
||||
@@ -450,5 +451,38 @@
|
||||
<string name="AutocryptKeyTransferSucceeded">Udany transfer klucza. To urządzenie jest teraz gotowe do użycia automatycznego szyfrowania za pomocą tego samego klucza, co na drugim urządzeniu.</string>
|
||||
<string name="Retry">Powtórz</string>
|
||||
<string name="SelfTalkSubtitle">Wiadomości wysłane do siebie</string>
|
||||
<string name="QrScan">Skanuj kod QR</string>
|
||||
<string name="QrShow">Pokaż kod QR</string>
|
||||
<string name="QrScanContainsText">Zeskanowany kod QR zawiera następujący tekst:\n\n%1$s</string>
|
||||
<string name="QrScanContainsUrl">Zeskanowany kod QR zawiera następujący adres:\n\n%1$s</string>
|
||||
<string name="OobFingerprint">Odciski palca</string>
|
||||
<string name="OobFingerprintAskOob">Zweryfikować kontakt i rozpocząć rozmowę z <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="OobFingerprintOk">Kontakt <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> zweryfikowany. Rozpocząć rozmowę?</string>
|
||||
<string name="OobFingerprintMismatch">Zeskanowany odcisk palca <![CDATA[<b>]]>nie pasuje<![CDATA[</b>]]> do odcisku palca ostatnio widzianego u <![CDATA[<i>]]>%1$s<![CDATA[</i>]]>.</string>
|
||||
<string name="OobFingerprintWithoutAddr">Ten kod QR zawiera odcisk palca, ale nie zawiera adresu e-mail.\n\nW celu weryfikacji poza zasadniczym pasmem należy najpierw nawiązać szyfrowane połączenie z odbiorcą.</string>
|
||||
<string name="OobSecureJoinRequested">%1$s dołącza.</string>
|
||||
<string name="CannotDecryptBody">Tej wiadomości nie można odszyfrować.\n\n• Możesz teraz pomóc odpowiadając po prostu na tą wiadomość i poprosić nadawcę o ponowne wysłanie wiadomości.\n\n• W przypadku ponownego zainstalowania Delta Chat lub innego programu mailowego na tym lub innym urządzeniu, może być konieczne wysłanie stąd klucza automatycznego szyfrowania.</string>
|
||||
<string name="Autocrypt">Autocrypt</string>
|
||||
<string name="AutocryptExplain"><![CDATA[<i>]]>Autocrypt<![CDATA[</i>]]> to nowa i otwarta specyfikacja szyfrowania e-maili typu end-to-end.\n\nTwoja konfiguracja end-to-end w razie potrzeby jest tworzona automatycznie i można ją przesłać między urządzeniami za pomocą <![CDATA[<i>]]>Wiadomości konfiguracyjnej automatycznego szyfrowania.<![CDATA[</i>]]></string>
|
||||
<string name="NewVerifiedGroup">Nowa zweryfikowana grupa</string>
|
||||
<string name="SharedChats">Udostępnione czaty</string>
|
||||
<string name="VerifiedContact">Zweryfikowany czat</string>
|
||||
<string name="Contact">Kontakt</string>
|
||||
</resources>
|
||||
<string name="VerifiedGroup">Zweryfikowania grupa</string>
|
||||
<string name="Group">Grupa</string>
|
||||
<string name="EditedNameWillBeShared">Edytowana nazwa zostanie udostępniona wszystkim członkom grupy.</string>
|
||||
<string name="QrShowInviteCode">Pokaż kod QR zaproszenia</string>
|
||||
<string name="E2EEncryptionPreferred">Preferowane pełne szyfrowanie.</string>
|
||||
<string name="OobAddrVerified">Zweryfikowano %1$s</string>
|
||||
<string name="OobAddrVerifiedIntroduceMyself">Zweryfikowano %1$s, przedstaw się…</string>
|
||||
<string name="OobAskJoinVerifiedGroup">Czy chcesz dołączyć do zweryfikowanej grupy <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<!-- Translators: %1$s is replaced by an action, eg. MsgMemberAddedToGroup, MsgMemberRemovedFromToGroup, MsgGroupNameChanged or MsgGroupImageChanged. If the action ends with a full stop, this is removed.
|
||||
%2$s is replaced by a the name of the user that made this action.
|
||||
Resulting strings might be "Member Alice added by Bob." or 'Group name changed from "Foo" to "Bar" by Claire.
|
||||
If you do not find a correct grammar for your language you can just use "%1$s (by %2$s)" or "%2$s: %1$s" -->
|
||||
<string name="ActionByUser">%1$s przez %2$s.</string>
|
||||
<!-- Translators: %1$s is replaced by an action, eg. MsgMemberAddedToGroup, MsgMemberRemovedFromToGroup, MsgGroupNameChanged or MsgGroupImageChanged. If the action ends with a full stop, this is removed.
|
||||
Resulting strings might be "Member Alice added by me." or 'Group name changed from "Foo" to "Bar" by me.
|
||||
If you do not find a correct grammar for your language you can just use "%1$s (by me)" or "Me: %1$s" -->
|
||||
<string name="ActionBySelf">%1$s przez mnie.</string>
|
||||
</resources>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<string name="Notifications">Уведомления</string>
|
||||
<string name="RemoveMember">Удалить участника</string>
|
||||
<!--contact info view-->
|
||||
<string name="NewContactTitle">Новый контакт</string>
|
||||
<string name="NewContactTitle">Добавить контакт</string>
|
||||
<string name="BlockContact">Заблокировать контакт</string>
|
||||
<string name="DeleteContact">Удалить контакт</string>
|
||||
<string name="Info">Инфо</string>
|
||||
@@ -385,7 +385,7 @@
|
||||
<string name="AskRemoveMemberFromGroup">Удалить <![CDATA[<b>]]>%1$s<![CDATA[</b>]]> из группы?</string>
|
||||
<string name="ErrSelfNotInGroup">Чтобы выполнить это действие, вы должны быть участником группы.</string>
|
||||
<string name="MsgGroupLeft">Группа оставлена.</string>
|
||||
<string name="NoMessagesHint">Отправить сообщение <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>:\n\n• Общение будет возможным, даже если <![CDATA[<b>]]>%2$s<![CDATA[</b>]]> не используют Delta Chat.\n\n• Доставка первого сообщения может занять некоторое время.</string>
|
||||
<string name="NoMessagesHint">Отправка сообщения <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>:\n\n• Общение будет возможным, даже если <![CDATA[<b>]]>%2$s<![CDATA[</b>]]> не использует Delta Chat.\n\n• Доставка первого сообщения может занять некоторое время.</string>
|
||||
<string name="SendNRcvReadReceipts">Получать и отправлять уведомления о доставке</string>
|
||||
<string name="PreferE2EEncryption">Предпочитать сквозное шифрование</string>
|
||||
<string name="E2EManagePrivateKeys">Управление закрытыми ключами</string>
|
||||
@@ -454,6 +454,7 @@
|
||||
<string name="QrScan">Сканировать QR код</string>
|
||||
<string name="QrShow">Показать QR код</string>
|
||||
<string name="QrScanContainsText">Отсканированный QR код содержит текст:\n\n%1$s</string>
|
||||
<string name="QrScanContainsUrl">QR код для перехода по ссылке URL:\n\n%1$s</string>
|
||||
<string name="OobFingerprint">Ключ</string>
|
||||
<string name="OobFingerprintAskOob">Верифицировать контакт и начать общение с <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<string name="OobFingerprintOk">Контакт <![CDATA[<i>]]>%1$s<![CDATA[</i>]]> верифицирован. Начать общение?</string>
|
||||
@@ -474,4 +475,14 @@
|
||||
<string name="E2EEncryptionPreferred">Предпочтено сквозное шифрование.</string>
|
||||
<string name="OobAddrVerified">%1$s верифицирован.</string>
|
||||
<string name="OobAddrVerifiedIntroduceMyself">%1$s верифицирован, представьтесь …</string>
|
||||
</resources>
|
||||
<string name="OobAskJoinVerifiedGroup">Вы хотите присоединиться к верифицированной группе <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>?</string>
|
||||
<!-- Translators: %1$s is replaced by an action, eg. MsgMemberAddedToGroup, MsgMemberRemovedFromToGroup, MsgGroupNameChanged or MsgGroupImageChanged. If the action ends with a full stop, this is removed.
|
||||
%2$s is replaced by a the name of the user that made this action.
|
||||
Resulting strings might be "Member Alice added by Bob." or 'Group name changed from "Foo" to "Bar" by Claire.
|
||||
If you do not find a correct grammar for your language you can just use "%1$s (by %2$s)" or "%2$s: %1$s" -->
|
||||
<string name="ActionByUser">%1$s от %2$s.</string>
|
||||
<!-- Translators: %1$s is replaced by an action, eg. MsgMemberAddedToGroup, MsgMemberRemovedFromToGroup, MsgGroupNameChanged or MsgGroupImageChanged. If the action ends with a full stop, this is removed.
|
||||
Resulting strings might be "Member Alice added by me." or 'Group name changed from "Foo" to "Bar" by me.
|
||||
If you do not find a correct grammar for your language you can just use "%1$s (by me)" or "Me: %1$s" -->
|
||||
<string name="ActionBySelf">%1$s от меня.</string>
|
||||
</resources>
|
||||
|
||||
@@ -232,31 +232,37 @@
|
||||
<plurals name="Members">
|
||||
<item quantity="one">%dучасник</item>
|
||||
<item quantity="few">%dучасники</item>
|
||||
<item quantity="many">%dучасників</item>
|
||||
<item quantity="other">%dучасників</item>
|
||||
</plurals>
|
||||
<plurals name="Contacts">
|
||||
<item quantity="one">%dконтакт</item>
|
||||
<item quantity="few">%dконтакти</item>
|
||||
<item quantity="many">%dконтактів</item>
|
||||
<item quantity="other">%dконтактів</item>
|
||||
</plurals>
|
||||
<plurals name="MeAndMembers">
|
||||
<item quantity="one">Я та %dучасник</item>
|
||||
<item quantity="few">Я та %dучасники</item>
|
||||
<item quantity="many">Я та %dучасників</item>
|
||||
<item quantity="other">Я та %dучасників</item>
|
||||
</plurals>
|
||||
<plurals name="NewMessages">
|
||||
<item quantity="one">%dнове повідомлення</item>
|
||||
<item quantity="few">%dнових повідомення</item>
|
||||
<item quantity="many">%dнових повідомлень</item>
|
||||
<item quantity="other">%dнових повідомлень</item>
|
||||
</plurals>
|
||||
<plurals name="messages">
|
||||
<item quantity="one">%dповідомлення</item>
|
||||
<item quantity="few">%dповідомлення</item>
|
||||
<item quantity="many">%dповідомлень</item>
|
||||
<item quantity="other">%dповідомлень</item>
|
||||
</plurals>
|
||||
<plurals name="AreYouSureDeleteMessages">
|
||||
<item quantity="one">Видалити%dповідомлення? Повідомлення видалиться з серверу також.</item>
|
||||
<item quantity="few">Видалити%dповідомлення? Повідомлення видаляться з серверу також.</item>
|
||||
<item quantity="many">Видалити%dповідомлень? Повідомлення видаляться з серверу також.</item>
|
||||
<item quantity="other">Видалити%dповідомлень? Повідомлення видаляться з серверу також.</item>
|
||||
</plurals>
|
||||
<!-- Translators: The first string placeholder gets replaced with the
|
||||
@@ -265,36 +271,43 @@
|
||||
<plurals name="NewMessagesInChats">
|
||||
<item quantity="one">%1$sв%2$dрозмові</item>
|
||||
<item quantity="few">%1$sу %2$dрозмовах</item>
|
||||
<item quantity="many">%1$sу%2$dрозмовах</item>
|
||||
<item quantity="other">%1$sу%2$dрозмовах</item>
|
||||
</plurals>
|
||||
<plurals name="Chats">
|
||||
<item quantity="one">%dрозмова</item>
|
||||
<item quantity="few">%dрозмови</item>
|
||||
<item quantity="many">%dрозмов</item>
|
||||
<item quantity="other">%dрозмов</item>
|
||||
</plurals>
|
||||
<plurals name="Minutes">
|
||||
<item quantity="one">%dхвилина</item>
|
||||
<item quantity="few">%dхвилини</item>
|
||||
<item quantity="many">%dхвилин</item>
|
||||
<item quantity="other">%dхвилин</item>
|
||||
</plurals>
|
||||
<plurals name="Hours">
|
||||
<item quantity="one">%dгодина</item>
|
||||
<item quantity="few">%dгодини</item>
|
||||
<item quantity="many">%dгодин</item>
|
||||
<item quantity="other">%dгодин</item>
|
||||
</plurals>
|
||||
<plurals name="Days">
|
||||
<item quantity="one">%dдень</item>
|
||||
<item quantity="few">%dдні</item>
|
||||
<item quantity="many">%dднів</item>
|
||||
<item quantity="other">%dднів</item>
|
||||
</plurals>
|
||||
<plurals name="Weeks">
|
||||
<item quantity="one">%dтиждень</item>
|
||||
<item quantity="few">%dтижні</item>
|
||||
<item quantity="many">%dтижнів</item>
|
||||
<item quantity="other">%dтижнів</item>
|
||||
</plurals>
|
||||
<plurals name="Months">
|
||||
<item quantity="one">%dмісяць</item>
|
||||
<item quantity="few">%dмісяці</item>
|
||||
<item quantity="many">%dмісяців</item>
|
||||
<item quantity="other">%dмісяців</item>
|
||||
</plurals>
|
||||
<!-- Translators: The second string placeholder gets replaced with the
|
||||
@@ -303,6 +316,7 @@
|
||||
<plurals name="MaxNotifications">
|
||||
<item quantity="one">Щобільш%1$dсповіщення за%2$s</item>
|
||||
<item quantity="few">Щобільш%1$dсповіщення за%2$s</item>
|
||||
<item quantity="many">Щобільш%1$dсповіщень за%2$s</item>
|
||||
<item quantity="other">Щобільш%1$dсповіщень за%2$s</item>
|
||||
</plurals>
|
||||
<!--date formatters-->
|
||||
|
||||
@@ -443,7 +443,6 @@
|
||||
<string name="VerifiedGroup">Verified group</string>
|
||||
<string name="Group">Group</string>
|
||||
<string name="EditedNameWillBeShared">The edited name will be shared with all group members.</string>
|
||||
<string name="QrShowInviteCode">Show QR invite code</string>
|
||||
<string name="E2EEncryptionPreferred">End-to-end encryption preferred.</string>
|
||||
<string name="OobAddrVerified">%1$s verified.</string>
|
||||
<string name="OobAddrVerifiedIntroduceMyself">%1$s verified, introduce myself …</string>
|
||||
@@ -458,4 +457,13 @@
|
||||
If you do not find a correct grammar for your language you can just use "%1$s (by me)" or "Me: %1$s" -->
|
||||
<string name="ActionBySelf">%1$s by me.</string>
|
||||
<string name="ExampleEmailAddr">user@example.org</string>
|
||||
<string name="QrScanHint">Place your camera over the QR code</string>
|
||||
|
||||
<string name="QrShowVerifyCode">Show QR verify code</string>
|
||||
<string name="QrVerifyContactTitle">QR verify code</string>
|
||||
<string name="QrVerifyContactHint"><![CDATA[<b>]]>%1$s<![CDATA[</b>]]>\nScan this to setup a verified contact.</string>
|
||||
|
||||
<string name="QrShowInviteCode">Show QR invite code</string>
|
||||
<string name="QrJoinVerifiedGroupTitle">QR invite code</string>
|
||||
<string name="QrJoinVerifiedGroupHint">Scan this to join the verified group <![CDATA[<b>]]>%1$s<![CDATA[</b>]]>.</string>
|
||||
</resources>
|
||||
|
||||
@@ -10,6 +10,13 @@
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.MessengerProj.AppCompat" parent="@style/Theme.AppCompat.Light.DarkActionBar">
|
||||
<item name="colorPrimary">#415e6b</item>
|
||||
<item name="colorPrimaryDark">#364e59</item>
|
||||
<item name="android:colorBackground">@android:color/white</item>
|
||||
<item name="android:windowBackground">@android:color/white</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.MessengerProj" parent="@android:style/Theme.Holo.Light">
|
||||
<item name="android:windowActionBar">false</item>
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
|
||||
Reference in New Issue
Block a user