diff --git a/CHANGELOG.md b/CHANGELOG.md index 6f484990f..56d2bf476 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +### Version 2.5.7 +* fixed crash when scanning QR codes on Android 6 and lower +* when sharing a message from and to Conversations insert it as quote + ### Version 2.5.6 * fixes for Jingle file transfer * fixed some rare crashes diff --git a/build.gradle b/build.gradle index e2f592ee4..dbc1a9495 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.4.1' + classpath 'com.android.tools.build:gradle:3.4.2' } } @@ -51,7 +51,9 @@ dependencies { conversationsFreeCompatImplementation "com.android.support:support-emoji-bundled:$supportLibVersion" quicksyFreeCompatImplementation "com.android.support:support-emoji-bundled:$supportLibVersion" implementation 'org.bouncycastle:bcmail-jdk15on:1.58' - implementation 'com.google.zxing:core:3.4.0' + //zxing stopped supporting Java 7 so we have to stick with 3.3.3 + //https://github.com/zxing/zxing/issues/1170 + implementation 'com.google.zxing:core:3.3.3' implementation 'de.measite.minidns:minidns-hla:0.2.4' implementation 'me.leolin:ShortcutBadger:1.1.22@aar' implementation 'org.whispersystems:signal-protocol-java:2.6.2' @@ -81,8 +83,8 @@ android { defaultConfig { minSdkVersion 16 targetSdkVersion 25 - versionCode 336 - versionName "2.5.6" + versionCode 337 + versionName "2.5.7" archivesBaseName += "-$versionName" applicationId "eu.sum7.conversations" resValue "string", "applicationId", applicationId diff --git a/src/conversations/res/values-el/strings.xml b/src/conversations/res/values-el/strings.xml new file mode 100644 index 000000000..8250d30ab --- /dev/null +++ b/src/conversations/res/values-el/strings.xml @@ -0,0 +1,9 @@ + + + Επιλέξτε τον πάροχο XMPP σας + Χρήση του conversations.im + Δημιουργία νέου λογαριασμού + Έχετε ήδη λογαριασμό XMPP; Αυτό μπορεί να συμβαίνει αν ήδη χρησιμοποιείτε ένα άλλο πρόγραμμα XMPP ή έχετε χρησιμοποιήσει το Conversations παλιότερα. Αν όχι, μπορείτε να δημιουργήσετε ένα νέο λογαριασμό XMPP τώρα.\nΧρήσιμη πληροφορία: Κάποιοι πάροχοι e-mail παρέχουν επίσης και λογαριασμούς XMPP. + Το XMPP είναι ένα δίκτυο άμεσης ανταλλαγής μηνυμάτων ανεξάρτητο παρόχου. Μπορείτε να χρησιμοποιήσετε αυτό το πρόγραμμα με όποιον διακομιστή XMPP επιθυμείτε.\nΓια διευκόλυνση πάντως μπορείτε να δημιουργήσετε έναν λογαριασμό στο conversations.im¹, έναν πάροχο ειδικά σχεδιασμένο για χρήση με το Conversations. + + \ No newline at end of file diff --git a/src/main/java/eu/siacs/conversations/ui/AboutActivity.java b/src/main/java/eu/siacs/conversations/ui/AboutActivity.java index e8435efdc..2d281a9e2 100644 --- a/src/main/java/eu/siacs/conversations/ui/AboutActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/AboutActivity.java @@ -20,7 +20,6 @@ public class AboutActivity extends AppCompatActivity { setContentView(R.layout.activity_about); setSupportActionBar(findViewById(R.id.toolbar)); configureActionBar(getSupportActionBar()); - setTitle(getString(R.string.title_activity_about_x, getString(R.string.app_name - ))); + setTitle(getString(R.string.title_activity_about_x, getString(R.string.app_name))); } } diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java index 815278420..72d6b3006 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationsActivity.java @@ -93,7 +93,7 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio public static final String ACTION_VIEW_CONVERSATION = "eu.siacs.conversations.action.VIEW"; public static final String EXTRA_CONVERSATION = "conversationUuid"; public static final String EXTRA_DOWNLOAD_UUID = "eu.siacs.conversations.download_uuid"; - public static final String EXTRA_AS_QUOTE = "as_quote"; + public static final String EXTRA_AS_QUOTE = "eu.siacs.conversations.as_quote"; public static final String EXTRA_NICK = "nick"; public static final String EXTRA_IS_PRIVATE_MESSAGE = "pm"; public static final String EXTRA_DO_NOT_APPEND = "do_not_append"; diff --git a/src/main/java/eu/siacs/conversations/ui/ShareWithActivity.java b/src/main/java/eu/siacs/conversations/ui/ShareWithActivity.java index 83b0bebcc..0ec7abd9a 100644 --- a/src/main/java/eu/siacs/conversations/ui/ShareWithActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ShareWithActivity.java @@ -40,6 +40,7 @@ public class ShareWithActivity extends XmppActivity implements XmppConnectionSer public String account; public String contact; public String text; + public boolean asQuote = false; } private Share share; @@ -132,6 +133,7 @@ public class ShareWithActivity extends XmppActivity implements XmppConnectionSer if (Intent.ACTION_SEND.equals(action)) { final String text = intent.getStringExtra(Intent.EXTRA_TEXT); final Uri uri = intent.getParcelableExtra(Intent.EXTRA_STREAM); + final boolean asQuote = intent.getBooleanExtra(ConversationsActivity.EXTRA_AS_QUOTE, false); if (data != null && "geo".equals(data.getScheme())) { this.share.uris.clear(); @@ -141,6 +143,7 @@ public class ShareWithActivity extends XmppActivity implements XmppConnectionSer this.share.uris.add(uri); } else { this.share.text = text; + this.share.asQuote = asQuote; } } else if (Intent.ACTION_SEND_MULTIPLE.equals(action)) { final ArrayList uris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM); @@ -195,6 +198,7 @@ public class ShareWithActivity extends XmppActivity implements XmppConnectionSer } else if (share.text != null) { intent.setAction(ConversationsActivity.ACTION_VIEW_CONVERSATION); intent.putExtra(Intent.EXTRA_TEXT, share.text); + intent.putExtra(ConversationsActivity.EXTRA_AS_QUOTE, share.asQuote); } startActivity(intent); finish(); diff --git a/src/main/java/eu/siacs/conversations/ui/util/ShareUtil.java b/src/main/java/eu/siacs/conversations/ui/util/ShareUtil.java index a48e8d6a2..89dbd0a25 100644 --- a/src/main/java/eu/siacs/conversations/ui/util/ShareUtil.java +++ b/src/main/java/eu/siacs/conversations/ui/util/ShareUtil.java @@ -30,16 +30,11 @@ package eu.siacs.conversations.ui.util; import android.content.ActivityNotFoundException; -import android.content.Context; import android.content.Intent; -import android.support.v4.content.ContextCompat; -import android.util.Log; import android.widget.Toast; -import java.net.URL; import java.util.regex.Matcher; -import eu.siacs.conversations.Config; import eu.siacs.conversations.R; import eu.siacs.conversations.entities.DownloadableFile; import eu.siacs.conversations.entities.Message; @@ -58,9 +53,11 @@ public class ShareUtil { if (message.isGeoUri()) { shareIntent.putExtra(Intent.EXTRA_TEXT, message.getBody()); shareIntent.setType("text/plain"); + shareIntent.putExtra(ConversationsActivity.EXTRA_AS_QUOTE, true); } else if (!message.isFileOrImage()) { shareIntent.putExtra(Intent.EXTRA_TEXT, message.getMergedBody().toString()); shareIntent.setType("text/plain"); + shareIntent.putExtra(ConversationsActivity.EXTRA_AS_QUOTE, true); } else { final DownloadableFile file = activity.xmppConnectionService.getFileBackend().getFile(message); try { diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index add83d0b7..6b1f95998 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -1233,9 +1233,6 @@ public class XmppConnection implements Runnable { } private void enableAdvancedStreamFeatures() { - if (getFeatures().carbons() && !features.carbonsEnabled) { - sendEnableCarbons(); - } if (getFeatures().blocking() && !features.blockListRequested) { Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": Requesting block list"); this.sendIqPacket(getIqGenerator().generateGetBlockList(), mXmppConnectionService.getIqParser()); @@ -1243,6 +1240,9 @@ public class XmppConnection implements Runnable { for (final OnAdvancedStreamFeaturesLoaded listener : advancedStreamFeaturesLoadedListeners) { listener.onAdvancedStreamFeaturesAvailable(account); } + if (getFeatures().carbons() && !features.carbonsEnabled) { + sendEnableCarbons(); + } } private void sendServiceDiscoveryItems(final Jid server) { diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java index e44d85056..d06c2469f 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java @@ -13,13 +13,11 @@ import java.util.Arrays; import java.util.Collections; import java.util.Iterator; import java.util.List; -import java.util.Locale; import java.util.Map.Entry; import java.util.concurrent.ConcurrentHashMap; import eu.siacs.conversations.Config; import eu.siacs.conversations.crypto.axolotl.AxolotlService; -import eu.siacs.conversations.crypto.axolotl.OnMessageCreatedCallback; import eu.siacs.conversations.crypto.axolotl.XmppAxolotlMessage; import eu.siacs.conversations.entities.Account; import eu.siacs.conversations.entities.Conversation; @@ -650,9 +648,13 @@ public class JingleConnection implements Transferable { } else if (content.hasIbbTransport()) { String receivedBlockSize = packet.getJingleContent().ibbTransport().getAttribute("block-size"); if (receivedBlockSize != null) { - int bs = Integer.parseInt(receivedBlockSize); - if (bs > this.ibbBlockSize) { - this.ibbBlockSize = bs; + try { + int bs = Integer.parseInt(receivedBlockSize); + if (bs > this.ibbBlockSize) { + this.ibbBlockSize = bs; + } + } catch (Exception e) { + Log.d(Config.LOGTAG,account.getJid().asBareJid()+": unable to parse block size in session-accept"); } } this.transport = new JingleInbandTransport(this, this.transportId, this.ibbBlockSize); @@ -839,12 +841,16 @@ public class JingleConnection implements Transferable { private boolean receiveFallbackToIbb(JinglePacket packet) { - Log.d(Config.LOGTAG, "receiving fallack to ibb"); + Log.d(Config.LOGTAG, "receiving fallback to ibb"); final String receivedBlockSize = packet.getJingleContent().ibbTransport().getAttribute("block-size"); if (receivedBlockSize != null) { - final int bs = Integer.parseInt(receivedBlockSize); - if (bs < this.ibbBlockSize) { - this.ibbBlockSize = bs; + try { + final int bs = Integer.parseInt(receivedBlockSize); + if (bs < this.ibbBlockSize) { + this.ibbBlockSize = bs; + } + } catch (NumberFormatException e) { + Log.d(Config.LOGTAG,account.getJid().asBareJid()+": unable to parse block size in transport-replace"); } } this.transportId = packet.getJingleContent().getTransportId(); @@ -853,8 +859,8 @@ public class JingleConnection implements Transferable { final JinglePacket answer = bootstrapPacket("transport-accept"); final Content content = new Content(contentCreator, contentName); - content.setFileOffer(fileOffer, ftVersion); content.ibbTransport().setAttribute("block-size", this.ibbBlockSize); + content.ibbTransport().setAttribute("sid", this.transportId); answer.setContent(content); @@ -877,9 +883,13 @@ public class JingleConnection implements Transferable { String receivedBlockSize = packet.getJingleContent().ibbTransport() .getAttribute("block-size"); if (receivedBlockSize != null) { - int bs = Integer.parseInt(receivedBlockSize); - if (bs > this.ibbBlockSize) { - this.ibbBlockSize = bs; + try { + int bs = Integer.parseInt(receivedBlockSize); + if (bs < this.ibbBlockSize) { + this.ibbBlockSize = bs; + } + } catch (NumberFormatException e) { + Log.d(Config.LOGTAG, account.getJid().asBareJid()+": unable to parse block size in transport-accept"); } } this.transport = new JingleInbandTransport(this, this.transportId, this.ibbBlockSize); diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java index 34bf5412e..276040979 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java @@ -177,12 +177,10 @@ public class JingleInbandTransport extends JingleTransport { this.account.getXmppConnection().sendIqPacket(iq, this.onAckReceived); this.account.getXmppConnection().r(); //don't fill up stanza queue too much this.seq++; - if (this.remainingSize > 0) { - connection.updateProgress((int) ((((double) (this.fileSize - this.remainingSize)) / this.fileSize) * 100)); - } else { + connection.updateProgress((int) ((((double) (this.fileSize - this.remainingSize)) / this.fileSize) * 100)); + if (this.remainingSize <= 0) { sendClose(); file.setSha1Sum(digest.digest()); - Log.d(Config.LOGTAG,account.getJid().asBareJid()+": sendNextBlock() remaining size"); this.onFileTransmissionStatusChanged.onFileTransmitted(file); fileInputStream.close(); } diff --git a/src/main/res/values-el/strings.xml b/src/main/res/values-el/strings.xml index 1beea1c3c..126c7f901 100644 --- a/src/main/res/values-el/strings.xml +++ b/src/main/res/values-el/strings.xml @@ -7,6 +7,7 @@ Κλείσιμο συζήτησης Λεπτομέρειες επαφής Λεπτομέρειες ομαδικής συζήτησης + Λεπτομέρειες καναλιού Ασφαλής συζήτηση Προσθήκη λογαριασμού Επεξεργασία ονόματος @@ -16,6 +17,8 @@ Άρση αποκλεισμού επαφής Αποκλεισμός τομέα Άρση αποκλεισμού τομέα + Αποκλεισμός συμμετέχοντα + Αναίρεση αποκλεισμού συμμετέχοντα Διαχείριση Λογαριασμών Ρυθμίσεις Διαμοιρασμός με Συζήτηση @@ -51,6 +54,7 @@ Διαμοιρασμός με... Έναρξη συζήτησης Προσκάλεσε επαφή + Πρόσκληση Επαφές Επαφή Ακύρωση @@ -172,8 +176,11 @@ Είστε βέβαιοι; Αν διαγράψετε το λογαριαγμό σας, ολόκληρο το ιστορικό συζήτησης θα χαθεί Εγγραφή φωνής + Διεύθυνση XMPP + Αποκλεισμός διεύθυνσης XMPP username@example.com Συνθηματικό + Μη έγκυρη διεύθυνση XMPP Πλήρης μνήμη. Η εικόνα είναι πολύ μεγάλη Θέλετε να προσθέσετε %s στην ατζέντα σας? Πληροφορίες διακομιστή @@ -208,6 +215,7 @@ Ανάσυρση κλειδιών... Έγινε Αποκρυπτογράφηση + Σελιδοδείκτες Αναζήτηση Πρόσθεσε επαφή Διαγραφή επαφής @@ -218,11 +226,16 @@ Επιλογή Η επαφή υπάρχει ήδη Συμμετοχή + channel@conference.example.com/nick + channel@conference.example.com Αποθήκευση σαν σελιδοδείκτη Διαγραφή σελιδοδείκτη Καταστροφή ομαδικής συζήτησης + Καταστροφή καναλιού Είστε βέβαιοι ότι θέλετε να καταστρέψετε αυτή την ομαδική συζήτηση;\n\nΠροσοχή:Η ομαδική συζήτηση θα διαγραφεί οριστικά από τον διακομιστή. + Είστε βέβαιοι ότι θέλετε να καταστρέψετε αυτό το δημόσιο κανάλι;\n\nΠροσοχή:Το κανάλι θα διαγραφεί πλήρως από τον διακομιστή. Δεν ήταν δυνατή η καταστροφή της ομαδικής συζήτησης + Δεν ήταν δυνατή η καταστροφή του καναλιού Αυτός ο σελιδοδείκτης υπάρχει ήδη Επεξεργασία θέματος ομαδικής συζήτησης Θέμα @@ -295,6 +308,7 @@ Αποστολή ξανά Διεύθυνση URL αρχείου Η διεύθυνση URL αντιγράφηκε στο πρόχειρο + Αντιγραφή διεύθυνσης XMPP στο πρόχειρο Το μήνυμα λάθους αντιγράφηκε στο πρόχειρο διεύθυνση ιστού Σάρωση 2D γραμμοκώδικα @@ -305,6 +319,14 @@ Επανάληψη Διατήρηση της υπηρεσίας στο προσκήνιο Αποτρέπει τον τερματισμό της σύνδεσης από το λειτουργικό σύστημα + Δημιουργία αντιγράφου ασφαλείας + Τα αντίγραφα ασφαλείας θα αποθηκεύονται στο %s + Δημιουργία αντιγράφων ασφαλείας + Το αντίγραφο ασφαλείας σας έχει δημιουργηθεί + Τα αντίγραφα ασφαλείας έχουν αποθηκευτεί στο %s + Επαναφορά αντιγράφου ασφαλείας + Έχει γίνει επαναφορά του αντιγράφου ασφαλείας + Μην παραλείψετε να ενεργοποιήσετε τον λογαριασμό. Επιλογή αρχείου Λήψη %1$s (ολοκληρώθηκε %2$d%%) Μεταφόρτωση του %s @@ -350,14 +372,25 @@ Απόκληρος Μέλος Κατάσταση για προχωρημένους + Απόδοση δικαιωμάτων μέλους + Ανάκληση δικαιωμάτων μέλους Απόδοση δικαιωμάτων διαχειριστή Ανάκληση δικαιωμάτων διαχειριστή + Απόδοση δικαιωμάτων ιδιοκτήτη + Ανάκληση δικαιωμάτων ιδιοκτήτη Αφαίρεση από την ομάδική συζήτηση + Αφαίρεση από το κανάλι Δεν ήταν δυνατή η αλλαγή του δεσμού της επαφής %s Αποκλεισμός από την ομαδική συζήτηση + Απαγόρευση από το κανάλι + Προσπαθείτε να αφαιρέσετε τον χρήστη %s από ένα δημόσιο κανάλι. Ο μόνος τρόπος να γίνει αυτό είναι να απαγορέψετε την πρόσβαση στον χρήστη για πάντα. Αποκλεισμός τώρα Δεν ήταν δυνατή η αλλαγή ρόλου της επαφής %s + Ρύθμιση συζήτησης ιδιωτικής ομάδας + Ρύθμιση δημοσίου καναλιού Ιδιωτική, μόνο για μέλη + Ορατότητα διευθύνσεων XMPP από όλους + Ορισμός καναλιού ως συντονιζόμενο Δεν συμμετέχετε Μεταβολή των επιλογών ομαδικής συζήτησης! Δεν ήταν δυνατή η μεταβολή των επιλογών ομαδικής συζήτησης @@ -392,6 +425,8 @@ Δεν βρέθηκε εφαρμογή για την απεικόνιση τοποθεσίας Τοποθεσία Η συζήτηση έκλεισε + Αποχώρησε από την συζήτηση ιδιωτικής ομάδας + Αποχώρησε από το δημόσιο κανάλι Μη έμπιστες αρχές πιστοποίησης συστήματος Όλα τα πιστοποιητικά πρέπει να εγκριθούν χειροκίνητα Αφαίρεση πιστοποιητικών @@ -410,6 +445,7 @@ Πιο πρόσφατα χρησιμοποιημένη Επιλογή γρήγορης ενέργειας Αναζήτηση επαφών + Αναζήτηση σελιδοδεικτών Αποστολή ιδιωτικού μηνύματος Η επαφή %1$s έφυγε από την ομαδική συζήτηση! Όνομα χρήστη @@ -443,6 +479,7 @@ Απαραίτηση η χρήση Captcha Εισάγετε το κείμενο από την παραπάνω εικόνα Η αλυσίδα του πιστοποιητικού δεν είναι έμπιστη + Η διεύθυνση XMPP δεν ταιριάζει με το πιστοποιητικό Ανανέωση πιστοποιητικού Σφάλμα μεταφόρτωσης κλειδιού OMEMO! Επαληθεύτηκε το κλειδί OMEMO με πιστοποιητικό! @@ -492,7 +529,10 @@ Σφάλμα ασφάλειας: Μη έγκυρη πρόσβαση σε αρχείο Δεν βρέθηκε εφαρμογή για να μοιραστείτε την διεύθυνση URI Διαμοιρασμός της διεύθυνσης URI με... +
Εγγράφεστε με τον τηλεφωνικό σας αριθμό και το Quicksy αυτόματα — με βάση τους τηλεφωνικούς αριθμούς στο βιβλίο διευθύνσεών σας — προτείνει πιθανές επαφές για εσάς.

Με την εγγραφή σας συμφωνείτε με την πολιτική απορρήτου μας.]]>
Συμφωνώ & προχωρήστε + Θα σας καθοδηγήσουμε στη διαδικασία δημιουργίας ενός λογαριασμού στο Conversations.im.¹\nΕπιλέγοντας το conversations.im ως πάροχο θα μπορείτε να επικοινωνείτε με χρήστες άλλων παρόχων δίνοντάς τους την πλήρη ταυτότητα XMPP σας. + Η πλήρης ταυτότητα XMPP σας θα είναι: %s Δημιουργία λογαριασμού Χρήση του δικού μου παρόχου Επιλογή ονόματος χρήστη @@ -624,6 +664,7 @@ Χτες Επαλήθευση ονόματος μηχανήματος με χρήση DNSSEC Τα πιστοποιητικά διακομιστή που περιέχουν το επικυρωμένο όνομα μηχανήματος θεωρούνται επαληθευμένα + Το πιστοποιητικό δεν περιέχει ταυτότητα XMPP μερικώς Εγγραφή βίντεο Αντιγραφή στο πρόχειρο @@ -685,6 +726,7 @@ Πρόσθετο διαμοιρασμού τοποθεσίας Χρήση του πρόσθετου διαμοιρασμού τοποθεσίας αντί για τον ενσωματωμένο χάρτη Αντιγραφή διεύθυνσης ιστού + Αντιγραφή ταυτότητας XMPP Διαμοιρασμός αρχείων μέσω HTTP για S3 Άμεση αναζήτηση Άνοιγμα πληκτρολογίου και τοποθέτηση του δείκτη στο πεδίο αναζήτησης στην οθόνη \'Έναρξη συζήτησης\' @@ -711,6 +753,8 @@ Σημασία, Ήχος, Δόνηση Συμπίεση βίντεο Εμφάνιση μέσου + Εμφάνιση συμμετεχόντων + Συμμετέχοντες Περιηγητης μέσων Το αρχείο παραλείπεται λόγω παραβίασης ασφάλειας. Ποιότητα βίντεο @@ -769,7 +813,64 @@ Εγκατάσταση Orbot Εκκίνηση Orbot Δεν υπάρχει εγκατεστημένη εφαργμογή διαχείρισης εφαρμογών. + Αυτή η ομαδική συζήτηση θα κάνει την ταυτότητά XMPP σας δημόσια ηλεκτρονικό βιβλίο Αρχικό (μη συμπιεσμένο) Άνοιγμα με... + Φωτογραφία προφίλ του Conversations + Επιλογή λογαριασμού + Επαναφορά αντιγράφου ασφαλείας + Επαναφορά + Εισάγετε τον κωδικό σας για τον λογαριασμό %s για να επαναφέρετε το αντίγραφο ασφαλείας. + Μην χρησιμοποιείτε τη λειτουργία επαναφοράς αντιγράφων ασφαλείας για να κλωνοποιήσετε (ταυτόχρονη εκτέλεση) μια εγκατάσταση. Η επαναφορά αντιγράφου ασφαλείας προσφέρεται μόνο για μεταφορές ή σε περίπτωση που έχετε χάσει την αρχική συσκευή. + Αδυναμία επαναφοράς αντιγράφου ασφαλείας. + Αδυναμία αποκρυπτογράφησης του αντιγράφου ασφαλείας. Είναι ο κωδικός σωστός; + Δημιουργία & Επαναφορά αντιγράφων ασφαλείας + Εισάγετε τη διεύθυνση XMPP + Δημιουργία ομαδικής συζήτησης + Είσοδος σε δημόσιο κανάλι + Δημιουργία συζήτησης ιδιωτικής ομάδας + Δημιουργία δημόσιου καναλιού + Όνομα καναλιού + Διεύθυνση XMPP + Παρακαλώ εισάγετε ένα όνομα για το κανάλι + Παρακαλώ εισάγετε μια διεύθυνση XMPP + Αυτή είναι μια διεύθυνση XMPP. Παρακαλώ εισάγετε ένα όνομα. + Δημιουργία δημόσιου καναλιού... + Αυτό το κανάλι υπάρχει ήδη + Έχετε εισέρθει σε ένα προϋπάρχον κανάλι + Αδυναμία ορισμού ρυθμίσεων καναλιού + Αλλαγή θέματος από οποιονδήποτε + Πρόσκληση άλλων χρηστών από οποιονδήποτε + Οποιοσδήποτε μπορεί να αλλάξει το θέμα. + Οι ιδιοκτήτες μπορούν να διορθώσουν το θέμα. + Οι διαχειριστές μπορούν να διορθώσουν το θέμα. + Οι ιδιοκτήτες μπορούν να προσκαλούν άλλους χρήστες. + Οποιοσδήποτε μπορεί να προσκαλεί άλλους χρήστες. + Οι διευθύνσεις XMPP είναι ορατές στους διαχειριστές. + Οι διευθύνσεις XMPP είναι ορατές σε όλους. + Αυτό το δημόσιο κανάλι δεν έχει συμμετέχοντες. Προσκαλέστε τις επαφές σας ή χρησιμοποιήστε το κουμπί διαμοιρασμού για να διαδώσετε τη διεύθυνση XMPP του. + Αυτή η συζήτησης ιδιωτικής ομάδας δεν έχει συμμετέχοντες. + Διαχείριση δικαιωμάτων + Αναζήτηση συμμετεχόντων + Το αρχείο είναι πολύ μεγάλο + Επισύναψη + Ανακάλυψη καναλιών + Αναζήτηση καναλιών + Πιθανή παραβίαση ιδιωτικότητας! + search.jabbercat.org.

Χρησιμοποιώντας αυτή τη λειτουργία θα μεταβιβαστεί η διεύθυνση IP σας και οι όροι αναζήτησης σε αυτή την υπηρεσία. Δείτε την Πολιτική Ιδιωτικότητας της για περισσότερες πληροφορίες.]]>
+ Έχω ήδη λογαριασμό + Προσθήκη υπάρχοντος λογαριασμού + Εγγραφή νέου λογαριασμού + Αυτό μοιάζει με διεύθυνση τομέα + Προσθήκη έτσι κι αλλιώς + Αυτό μοιάζει με διεύθυνση καναλιού + Διαμοιρασμός αντιγράφων ασφαλείας + Αντίγραφο Conversations + Γεγονός + Άνοιγμα αντιγράφου ασφαλείας + Το αρχείο που επιλέξατε δεν είναι αντίγραφο ασφαλείας του Conversations + Αυτός ο λογαριασμός έχει προστεθεί ήδη + Παρακαλώ εισάγετε τον κωδικό για αυτό το λογαριασμό + Αδυναμία εκτέλεσης αυτής της λειτουργίας diff --git a/src/main/res/values-it/strings.xml b/src/main/res/values-it/strings.xml index 460751b5b..aaf7a75e6 100644 --- a/src/main/res/values-it/strings.xml +++ b/src/main/res/values-it/strings.xml @@ -864,4 +864,12 @@ Questo sembra un indirizzo di dominio Aggiungere comunque Questo sembra un indirizzo di canale + Condividi file di backup + Backup di Conversations + Evento + Apri backup + Il file selezionato non è un file di backup di Conversations + Questo account è già stato configurato + Inserisci la password per questo account + Impossibile eseguire questa azione diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml index 28a174106..18c6c61e5 100644 --- a/src/main/res/values-ru/strings.xml +++ b/src/main/res/values-ru/strings.xml @@ -697,4 +697,6 @@ Создать закрытую конференцию Создать публичный канал Найти каналы + У меня уже есть аккаунт + Добавить существующий аккаунт diff --git a/src/quicksy/res/values-el/strings.xml b/src/quicksy/res/values-el/strings.xml index eff238f07..4297e2448 100644 --- a/src/quicksy/res/values-el/strings.xml +++ b/src/quicksy/res/values-el/strings.xml @@ -18,4 +18,9 @@ Το Quicksy αδυνατεί να στείλει κρυπτογραφημένα μηνύματα στην επαφή %1$s. Αυτό μπορεί να συμβαίνει γιατί η επαφή σας χρησιμοποιεί παλιότερο διακομιστή ή πρόγραμμα που δε μπορεί να χειριστεί κρυπτογράφηση OMEMO. Το Quicksy χρειάζεται πρόσβαση στο μικρόφωνο Αυτή η κατηγορία ειδοποιήσεων χρησιμοποιείται για την εμφάνιση μιας μόνιμης ειδοποίησης που δείχνει πως εκτελείται το Quicksy. - + Φωτογραφία προφίλ του quicksy + Το quicksy δεν είναι διαθέσιμο στην χώρα σας. + Αδυναμία επαλήθευσης της ταυτότητας του διακομιστή. + Άγνωστο σφάλμα ασφάλειας. + Λήξη χρονικού ορίου κατά τη σύνδεση στον διακομιστή. + diff --git a/src/quicksy/res/values-it/strings.xml b/src/quicksy/res/values-it/strings.xml index ff5985ec0..963885d78 100644 --- a/src/quicksy/res/values-it/strings.xml +++ b/src/quicksy/res/values-it/strings.xml @@ -20,4 +20,7 @@ Questa categoria di notifiche è usata per mostrare una notifica permanente per indicare che Quicksy è in esecuzione. Immagine profilo di Quicksy Quicksy non è disponibile nella tua nazione. - + Impossibile verificare l\'identità del server. + Errore di sicurezza sconosciuto. + Tentativo di connessione al server scaduto. +