aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md4
-rw-r--r--build.gradle6
-rw-r--r--src/main/java/eu/siacs/conversations/parser/IqParser.java3
-rw-r--r--src/main/java/eu/siacs/conversations/ui/ConversationActivity.java2
-rw-r--r--src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java2
-rw-r--r--src/main/java/eu/siacs/conversations/utils/UIHelper.java17
-rw-r--r--src/main/java/eu/siacs/conversations/xml/TagWriter.java7
-rw-r--r--src/main/java/eu/siacs/conversations/xml/XmlReader.java2
-rw-r--r--src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java4
-rw-r--r--src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java47
-rw-r--r--src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java3
-rw-r--r--src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java20
-rw-r--r--src/main/res/values-fr/strings.xml14
-rw-r--r--src/main/res/values-hu/strings.xml45
-rw-r--r--src/main/res/values-nb-rNO/strings.xml19
-rw-r--r--src/main/res/values-zh-rCN/strings.xml16
16 files changed, 172 insertions, 39 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0727d3cb..d4b6d001 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
###Changelog
+####Version 1.15.5
+* show nick as bold text when mentioned in conference
+* bug fixes
+
####Version 1.15.4
* bug fixes
diff --git a/build.gradle b/build.gradle
index 7ece3db1..befefcff 100644
--- a/build.gradle
+++ b/build.gradle
@@ -35,7 +35,7 @@ dependencies {
compile 'com.google.zxing:android-integration:3.2.1'
compile 'de.measite.minidns:minidns:0.1.7'
compile 'de.timroes.android:EnhancedListView:0.3.4'
- compile 'me.leolin:ShortcutBadger:1.1.10@aar'
+ compile 'me.leolin:ShortcutBadger:1.1.11@aar'
compile 'com.kyleduo.switchbutton:library:1.2.8'
compile 'org.whispersystems:axolotl-android:1.3.4'
compile 'com.makeramen:roundedimageview:2.2.0'
@@ -55,8 +55,8 @@ android {
defaultConfig {
minSdkVersion 14
targetSdkVersion 25
- versionCode 192
- versionName "1.15.4"
+ versionCode 193
+ versionName "1.15.5"
archivesBaseName += "-$versionName"
applicationId "eu.siacs.conversations"
}
diff --git a/src/main/java/eu/siacs/conversations/parser/IqParser.java b/src/main/java/eu/siacs/conversations/parser/IqParser.java
index 40eec0d2..f7a58cb7 100644
--- a/src/main/java/eu/siacs/conversations/parser/IqParser.java
+++ b/src/main/java/eu/siacs/conversations/parser/IqParser.java
@@ -358,7 +358,8 @@ public class IqParser extends AbstractParser implements OnIqPacketReceived {
final IqPacket response = packet.generateResponse(IqPacket.TYPE.RESULT);
mXmppConnectionService.sendIqPacket(account, response, null);
} else if (packet.hasChild("open", "http://jabber.org/protocol/ibb")
- || packet.hasChild("data", "http://jabber.org/protocol/ibb")) {
+ || packet.hasChild("data", "http://jabber.org/protocol/ibb")
+ || packet.hasChild("close","http://jabber.org/protocol/ibb")) {
mXmppConnectionService.getJingleConnectionManager()
.deliverIbbPacket(account, packet);
} else if (packet.hasChild("query", "http://jabber.org/protocol/disco#info")) {
diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
index 189879a6..c908c5cb 100644
--- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java
@@ -1271,6 +1271,8 @@ public class ConversationActivity extends XmppActivity
}
if (isConversationsOverviewVisable() && isConversationsOverviewHideable()) {
xmppConnectionService.getNotificationService().setOpenConversation(null);
+ } else {
+ xmppConnectionService.getNotificationService().setOpenConversation(getSelectedConversation());
}
}
diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java
index a01689ec..e8b3459a 100644
--- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java
+++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java
@@ -351,7 +351,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
char current = body.length() > i ? body.charAt(i) : '\n';
if (lineStart == -1) {
if (previous == '\n') {
- if (current == '>' || current == '\u00bb') {
+ if ((current == '>' && !UIHelper.isPositionFollowedByNumber(body,i)) || current == '\u00bb') {
// Line start with quote
lineStart = i;
if (quoteStart == -1) quoteStart = i;
diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java
index cc8f68ee..c9f50bed 100644
--- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java
+++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java
@@ -202,7 +202,7 @@ public class UIHelper {
for(String l : lines) {
if (l.length() > 0) {
char first = l.charAt(0);
- if (first != '>' && first != '\u00bb') {
+ if ((first != '>' || isPositionFollowedByNumber(l,0)) && first != '\u00bb') {
String line = l.trim();
if (line.isEmpty()) {
continue;
@@ -226,6 +226,21 @@ public class UIHelper {
}
}
+ public static boolean isPositionFollowedByNumber(CharSequence body, int pos) {
+ boolean previousWasNumber = false;
+ for (int i = pos +1; i < body.length(); i++) {
+ char c = body.charAt(i);
+ if (Character.isDigit(body.charAt(i))) {
+ previousWasNumber = true;
+ } else if (previousWasNumber && (c == '.' || c == ',')) {
+ previousWasNumber = false;
+ } else {
+ return Character.isWhitespace(c) && previousWasNumber;
+ }
+ }
+ return previousWasNumber;
+ }
+
public static String getFileDescriptionString(final Context context, final Message message) {
if (message.getType() == Message.TYPE_IMAGE) {
return context.getString(R.string.image);
diff --git a/src/main/java/eu/siacs/conversations/xml/TagWriter.java b/src/main/java/eu/siacs/conversations/xml/TagWriter.java
index 9d16c338..c0fc1a13 100644
--- a/src/main/java/eu/siacs/conversations/xml/TagWriter.java
+++ b/src/main/java/eu/siacs/conversations/xml/TagWriter.java
@@ -99,6 +99,13 @@ public class TagWriter {
public void forceClose() {
finish();
+ if (outputStream != null) {
+ try {
+ outputStream.close();
+ } catch (IOException e) {
+ //ignoring
+ }
+ }
outputStream = null;
}
}
diff --git a/src/main/java/eu/siacs/conversations/xml/XmlReader.java b/src/main/java/eu/siacs/conversations/xml/XmlReader.java
index 1e6b89d3..58ef07f9 100644
--- a/src/main/java/eu/siacs/conversations/xml/XmlReader.java
+++ b/src/main/java/eu/siacs/conversations/xml/XmlReader.java
@@ -82,7 +82,7 @@ public class XmlReader {
}
} catch (Throwable throwable) {
- throw new IOException("xml parser mishandled "+throwable.getClass().getName(), throwable);
+ throw new IOException("xml parser mishandled "+throwable.getClass().getSimpleName()+"("+throwable.getMessage()+")", throwable);
} finally {
if (wakeLock.isHeld()) {
try {
diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java
index 08dbdc18..ef5ff854 100644
--- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java
+++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java
@@ -1356,6 +1356,9 @@ public class XmppConnection implements Runnable {
}
private void forceCloseSocket() {
+ if (tagWriter != null) {
+ tagWriter.forceClose();
+ }
if (socket != null) {
try {
socket.close();
@@ -1375,7 +1378,6 @@ public class XmppConnection implements Runnable {
interrupt();
Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": disconnecting force="+Boolean.valueOf(force));
if (force) {
- tagWriter.forceClose();
forceCloseSocket();
} else {
if (tagWriter.isActive()) {
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 0c0c054d..38098bbe 100644
--- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java
+++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java
@@ -756,7 +756,7 @@ public class JingleConnection implements Transferable {
}
private void sendFallbackToIbb() {
- Log.d(Config.LOGTAG, "sending fallback to ibb");
+ Log.d(Config.LOGTAG, account.getJid().toBareJid()+": sending fallback to ibb");
JinglePacket packet = this.bootstrapPacket("transport-replace");
Content content = new Content(this.contentCreator, this.contentName);
this.transportId = this.mJingleConnectionManager.nextRandomId();
@@ -767,6 +767,18 @@ public class JingleConnection implements Transferable {
this.sendJinglePacket(packet);
}
+ OnTransportConnected onIbbTransportConnected = new OnTransportConnected() {
+ @Override
+ public void failed() {
+ Log.d(Config.LOGTAG, "ibb open failed");
+ }
+
+ @Override
+ public void established() {
+ JingleConnection.this.transport.send(file, onFileTransmissionSatusChanged);
+ }
+ };
+
private boolean receiveFallbackToIbb(JinglePacket packet) {
Log.d(Config.LOGTAG, "receiving fallack to ibb");
String receivedBlockSize = packet.getJingleContent().ibbTransport()
@@ -779,13 +791,28 @@ public class JingleConnection implements Transferable {
}
this.transportId = packet.getJingleContent().getTransportId();
this.transport = new JingleInbandTransport(this, this.transportId, this.ibbBlockSize);
- this.transport.receive(file, onFileTransmissionSatusChanged);
+
JinglePacket answer = bootstrapPacket("transport-accept");
Content content = new Content("initiator", "a-file-offer");
content.setTransportId(this.transportId);
content.ibbTransport().setAttribute("block-size",this.ibbBlockSize);
answer.setContent(content);
+
+
+ if (initiator.equals(account.getJid())) {
+ this.sendJinglePacket(answer, new OnIqPacketReceived() {
+ @Override
+ public void onIqPacketReceived(Account account, IqPacket packet) {
+ if (packet.getType() == IqPacket.TYPE.RESULT) {
+ Log.d(Config.LOGTAG, account.getJid().toBareJid() + " recipient ACKed our transport-accept. creating ibb");
+ transport.connect(onIbbTransportConnected);
+ }
+ }
+ });
+ } else {
+ this.transport.receive(file, onFileTransmissionSatusChanged);
this.sendJinglePacket(answer);
+ }
return true;
}
@@ -800,19 +827,13 @@ public class JingleConnection implements Transferable {
}
}
this.transport = new JingleInbandTransport(this, this.transportId, this.ibbBlockSize);
- this.transport.connect(new OnTransportConnected() {
- @Override
- public void failed() {
- Log.d(Config.LOGTAG, "ibb open failed");
- }
-
- @Override
- public void established() {
- JingleConnection.this.transport.send(file,
- onFileTransmissionSatusChanged);
+ //might be receive instead if we are not initiating
+ if (initiator.equals(account.getJid())) {
+ this.transport.connect(onIbbTransportConnected);
+ } else {
+ this.transport.receive(file,onFileTransmissionSatusChanged);
}
- });
return true;
} else {
return false;
diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java
index 0f0361cd..1d30bdb4 100644
--- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java
+++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java
@@ -142,6 +142,9 @@ public class JingleConnectionManager extends AbstractConnectionManager {
} else if (packet.hasChild("data", "http://jabber.org/protocol/ibb")) {
payload = packet.findChild("data", "http://jabber.org/protocol/ibb");
sid = payload.getAttribute("sid");
+ } else if (packet.hasChild("close","http://jabber.org/protocol/ibb")) {
+ payload = packet.findChild("close", "http://jabber.org/protocol/ibb");
+ sid = payload.getAttribute("sid");
}
if (sid != null) {
for (JingleConnection connection : connections) {
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 38a201bd..a87465b2 100644
--- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java
+++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java
@@ -47,9 +47,11 @@ public class JingleInbandTransport extends JingleTransport {
@Override
public void onIqPacketReceived(Account account, IqPacket packet) {
if (connected && packet.getType() == IqPacket.TYPE.RESULT) {
+ if (remainingSize > 0) {
sendNextBlock();
}
}
+ }
};
public JingleInbandTransport(final JingleConnection connection, final String sid, final int blocksize) {
@@ -60,6 +62,14 @@ public class JingleInbandTransport extends JingleTransport {
this.sessionId = sid;
}
+ private void sendClose() {
+ IqPacket iq = new IqPacket(IqPacket.TYPE.SET);
+ iq.setTo(this.counterpart);
+ Element close = iq.addChild("close", "http://jabber.org/protocol/ibb");
+ close.setAttribute("sid", this.sessionId);
+ this.account.getXmppConnection().sendIqPacket(iq, null);
+ }
+
public void connect(final OnTransportConnected callback) {
IqPacket iq = new IqPacket(IqPacket.TYPE.SET);
iq.setTo(this.counterpart);
@@ -155,6 +165,7 @@ public class JingleInbandTransport extends JingleTransport {
try {
int count = fileInputStream.read(buffer);
if (count == -1) {
+ sendClose();
file.setSha1Sum(CryptoHelper.bytesToHex(digest.digest()));
this.onFileTransmissionStatusChanged.onFileTransmitted(file);
fileInputStream.close();
@@ -181,12 +192,13 @@ public class JingleInbandTransport extends JingleTransport {
if (this.remainingSize > 0) {
connection.updateProgress((int) ((((double) (this.fileSize - this.remainingSize)) / this.fileSize) * 100));
} else {
+ sendClose();
file.setSha1Sum(CryptoHelper.bytesToHex(digest.digest()));
this.onFileTransmissionStatusChanged.onFileTransmitted(file);
fileInputStream.close();
}
} catch (IOException e) {
- Log.d(Config.LOGTAG,account.getJid().toBareJid()+": "+e.getMessage());
+ Log.d(Config.LOGTAG,account.getJid().toBareJid()+": io exception during sendNextBlock() "+e.getMessage());
FileBackend.close(fileInputStream);
this.onFileTransmissionStatusChanged.onFileTransferAborted();
}
@@ -232,7 +244,13 @@ public class JingleInbandTransport extends JingleTransport {
this.receiveNextBlock(payload.getContent());
this.account.getXmppConnection().sendIqPacket(
packet.generateResponse(IqPacket.TYPE.RESULT), null);
+ } else if (connected && payload.getName().equals("close")) {
+ this.connected = false;
+ this.account.getXmppConnection().sendIqPacket(
+ packet.generateResponse(IqPacket.TYPE.RESULT), null);
+ Log.d(Config.LOGTAG,account.getJid().toBareJid()+": received ibb close");
} else {
+ Log.d(Config.LOGTAG,payload.toString());
// TODO some sort of exception
}
}
diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml
index 860b0808..d32e6f85 100644
--- a/src/main/res/values-fr/strings.xml
+++ b/src/main/res/values-fr/strings.xml
@@ -332,6 +332,7 @@
<string name="message_options">Options du message</string>
<string name="copy_text">Copier le texte</string>
<string name="select_text">Sélectionnez le texte</string>
+ <string name="quote">Citation</string>
<string name="copy_original_url">Copier l\'URL</string>
<string name="send_again">Envoyer de nouveau</string>
<string name="file_url">URL du fichier</string>
@@ -655,7 +656,7 @@
<string name="this_conference_has_no_members">Aucun membre dans cette conférence.</string>
<string name="report_jid_as_spammer">Signaler ce JID comme envoyant des messages non sollicités.</string>
<string name="pref_delete_omemo_identities">Effacer les identités OMEMO</string>
- <string name="pref_delete_omemo_identities_summary">Régénérer vos clef OMEMO. Tous vos contacts devront vous vérifier à nouveau. À n\'utiliser qu\'en dernier recours.</string>
+ <string name="pref_delete_omemo_identities_summary">Régénérer vos clefs OMEMO. Tous vos contacts devront vous vérifier à nouveau. À n\'utiliser qu\'en dernier recours.</string>
<string name="delete_selected_keys">Supprimer les clefs sélectionnées</string>
<string name="error_publish_avatar_offline">Vous devez être connecté pour publier votre avatar.</string>
<string name="show_error_message">Afficher le message d\'erreur</string>
@@ -679,4 +680,15 @@
<string name="blindly_trusted_omemo_keys">Faire aveuglément confiance aux clefs OMEMO</string>
<string name="not_trusted">Non approuvée</string>
<string name="invalid_barcode">Code-barres 2D invalide</string>
+ <string name="pref_clean_cache_summary">Vide le dossier de cache (utilisé par l\'app Camera)</string>
+ <string name="pref_clean_cache">Vider le cache</string>
+ <string name="pref_clean_private_storage">Vider le stockage privé</string>
+ <string name="pref_clean_private_storage_summary">Vide le stockage privé, où les fichiers sont conservés (ils peuvent être re-téléchargés depuis le serveur)</string>
+ <string name="i_followed_this_link_from_a_trusted_source">J\'ai obtenu ce lien d\'une source de confiance</string>
+ <string name="verifying_omemo_keys_trusted_source">Vous êtes sur le point de vérifier les clefs OMEMO de %1$s en cliquant sur un lien. Cette procédure n\'est sécurisée que si le lien en question n\'a pu être publié que par %2$s et que vous l\'avez obtenu d\'une source digne de confiance.</string>
+ <string name="verify_omemo_keys">Vérifier les clefs OMEMO</string>
+ <string name="show_inactive_devices">Montrer les appareils inactifs</string>
+ <string name="hide_inactive_devices">Masquer les appareils inactifs</string>
+ <string name="distrust_omemo_key">Ne plus faire confiance à cet appareil</string>
+ <string name="distrust_omemo_key_text">Êtes-vous sûr de vouloir supprimer la vérification pour cet appareil ?\nCet appareil et les messages qui en proviennent seront marqués comme n\'étant pas dignes de confiance.</string>
</resources>
diff --git a/src/main/res/values-hu/strings.xml b/src/main/res/values-hu/strings.xml
index 7a4ca496..7b73f79e 100644
--- a/src/main/res/values-hu/strings.xml
+++ b/src/main/res/values-hu/strings.xml
@@ -96,15 +96,16 @@
<string name="no_pgp_keys">Nem talált OpenPGP kulcsokat</string>
<string name="pref_general">Általános</string>
<string name="pref_xmpp_resource">XMPP erőforrás</string>
- <string name="pref_xmpp_resource_summary">A név amivel ez a kliens azonosítja magát</string>
+ <string name="pref_xmpp_resource_summary">A név amivel a kliens azonosítja magát</string>
<string name="pref_accept_files">Fájlok fogadása</string>
<string name="pref_accept_files_summary">Automatikusan fogadjon ennél kisebb fájlokat...</string>
<string name="pref_attachments">Csatolmányok</string>
<string name="pref_return_to_previous">Gyors megosztás</string>
+ <string name="pref_return_to_previous_summary">Megosztás után, a beszélgetés megnyitása helyett azonnal térjen vissza a korábbi tevékenységhez</string>
<string name="pref_notification_settings">Értesítés</string>
<string name="pref_notifications">Értesítések</string>
<string name="pref_notifications_summary">Értesítsen új üzenet érkezésekor</string>
- <string name="pref_vibrate">Rezegjen</string>
+ <string name="pref_vibrate">Rezgés</string>
<string name="pref_vibrate_summary">Rezegjen új üzenet érkezésekor</string>
<string name="pref_led">LED értesítés</string>
<string name="pref_led_summary">Villogjon a LED új üzenet érkezésekor</string>
@@ -116,7 +117,7 @@
<string name="pref_never_send_crash">Ne küldjön programhiba jelentéseket</string>
<string name="pref_never_send_crash_summary">A hibák jelentésével segíted a Conversations program fejlesztését</string>
<string name="pref_confirm_messages">Üzenetek megerősítése</string>
- <string name="pref_confirm_messages_summary">Tudatod az ismerőseiddel, hogy megkaptad és elolvastad az üzeneteiket</string>
+ <string name="pref_confirm_messages_summary">Jelzed az ismerőseidnek, hogy megkaptad és elolvastad az üzeneteiket</string>
<string name="pref_ui_options">Kezelőfelület</string>
<string name="openpgp_error">Az OpenKeychain hibát jelzett</string>
<string name="error_decrypting_file">I/O hiba a fájl dekódolása közben</string>
@@ -301,12 +302,13 @@
<string name="pref_use_larger_font">Betűméret növelése</string>
<string name="pref_use_larger_font_summary">Az egész programban használjon nagyobb betűméretet</string>
<string name="pref_use_send_button_to_indicate_status">A küldés gomb jelzi az állapotot</string>
+ <string name="pref_use_indicate_received">Üzenet nyugták kérése</string>
<string name="pref_use_indicate_received_summary">A megkapott üzenetek egy zöld pipával lesznek jelölve ha támogatott ez a funkció</string>
<string name="pref_use_send_button_to_indicate_status_summary">Kiszínezi a küldés gombot, hogy jelezze a partner állapotát</string>
<string name="pref_expert_options_other">Egyéb</string>
<string name="pref_conference_name">Konferencia neve</string>
<string name="pref_conference_name_summary">A chat szoba tárgyát használja a JID helyett azonosításra </string>
- <string name="pref_autojoin">Automatikusan csatlakozzon konferenciákhoz </string>
+ <string name="pref_autojoin">Automatikus csatlakozás konferenciákhoz </string>
<string name="using_account">használt fiók: %s</string>
<string name="message_options">Műveletek üzenetekkel</string>
<string name="copy_text">Szöveg másolása</string>
@@ -318,7 +320,11 @@
<string name="verify_otr">OTR ellenőrzése</string>
<string name="remote_fingerprint">Távoli Ujlenyomat</string>
<string name="scan">beolvas</string>
- <string name="pref_export_logs">Előzmények lementése</string>
+ <string name="smp_requested">Az ismerős SMP ellenőrzést kért</string>
+ <string name="pref_keep_foreground_service">Előtérben futtassa a programot</string>
+ <string name="pref_keep_foreground_service_summary">Megakadályozza az operációs rendszert abban, hogy megszakítsa a kapcsolatot a szerverrel a háttérben</string>
+ <string name="pref_export_logs">Előzmények mentése</string>
+ <string name="pref_export_logs_summary">A beszélgetések tartalmának naplóját lementi az SD kártyára</string>
<string name="choose_file">Fájl kiválasztása</string>
<string name="pref_show_dynamic_tags">Dinamikus címkék mutatása</string>
<string name="pref_show_dynamic_tags_summary">Információs címkék megjelenítése a partnerek alatt</string>
@@ -335,31 +341,49 @@
<string name="disable_all_accounts">Minden fiók letiltása</string>
<string name="no_role">Nem elérhető</string>
<string name="member">Tag</string>
+ <string name="pref_input_options">Bevitel</string>
<string name="pref_enter_is_send">Enter gomb küldjön</string>
+ <string name="pref_enter_is_send_summary">Használja az Enter-t üzenet küldésre</string>
<string name="pref_display_enter_key">Enter gombot mutassa</string>
+ <string name="pref_display_enter_key_summary">Hangulatjel helyett enter-t használjon</string>
<string name="hide_offline">Kilépettek rejtve</string>
<string name="contact_is_typing">%s éppen ír...</string>
<string name="contact_has_stopped_typing">%s abbahagyta az írást</string>
<string name="pref_chat_states">Gépeléssel kapcsolatos üzenetek</string>
+ <string name="pref_chat_states_summary">Jelzed az ismerőseidnek, hogy mikor írsz nekik</string>
+ <string name="pref_remove_trusted_certificates_title">Tanúsítványok eltávolítása</string>
+ <string name="dialog_manage_certs_title">Tanúsítványok eltávolítása</string>
<string name="pref_quick_action_summary">Küldés gomb helyett választott funkciógomb</string>
<string name="pref_quick_action">Gyors gomb</string>
<string name="choose_quick_action">Gyors gomb funkciója</string>
- <string name="search_for_contacts_or_groups">Keresés a címjegyzékben</string>
+ <string name="search_for_contacts_or_groups">Keresés a címek között</string>
<string name="conference_name">Konferencia neve</string>
<string name="invalid_conference_name">Nem létezik ez a nevű konferencia</string>
- <string name="pref_away_when_screen_off">Távoli állapot képernyő kikapcsolásakor</string>
+ <string name="pref_presence_settings">Jelenlét</string>
+ <string name="pref_away_when_screen_off">\"Távol\" állapot lezárt telefonnál</string>
<string name="pref_away_when_screen_off_summary">Kikapcsolt képernyőnél a neved alatt egy \"távol\" címke látható</string>
+ <string name="pref_xa_on_silent_mode">Csöndes módban ne legyen elérhető</string>
+ <string name="pref_xa_on_silent_mode_summary">Csöndes módban a neved alatt egy \"nem elérhető\" címke legyen látható</string>
+ <string name="pref_treat_vibrate_as_silent_summary">Rezgő módban a neved alatt egy \"nem elérhető\" címke legyen látható</string>
<string name="action_add_account_with_certificate">Fiók hozzáadása tanúsítvánnyal</string>
<string name="mam_prefs">Archívum beállításai</string>
<string name="server_side_mam_prefs">Szerveroldali mentés beállításai</string>
<string name="fetching_mam_prefs">Archiválási beállítások betöltése. Kérem várjon...</string>
<string name="unable_to_fetch_mam_prefs">Nem lehet az archiválási beállításokat betölteni</string>
+ <string name="certicate_info_not_available">(Nem elérhető)</string>
<string name="pref_picture_compression">Képek tömörítése</string>
<string name="pref_picture_compression_summary">Átméretezi és tömöríti a képeket</string>
+ <string name="automatically">Automata</string>
<string name="no_application_to_share_uri">Nem találtunk URI-t használó alkalmazást</string>
<string name="share_uri_with">Megosztás URI-ként</string>
+ <string name="pref_manually_change_presence">Manuális jelenlét beállítás</string>
+ <string name="pref_manually_change_presence_summary">Érintsd meg a képed a jelenlét megváltoztatásához</string>
+ <string name="change_presence">Jelenlét megváltoztatása</string>
<string name="presence_online">Elérhető</string>
<string name="presence_away">Távol</string>
+ <string name="presence_xa">Nem elérhető</string>
+ <string name="pref_broadcast_last_activity">Legutolsó használat megadása</string>
+ <string name="pref_broadcast_last_activity_summary">Minden ismerősöd tudja meg, hogy mikor használod a Conversations-t</string>
<string name="pref_privacy">Személyes</string>
<string name="pref_theme_options">Kinézet</string>
<string name="pref_theme_options_summary">Színséma kiválasztása</string>
@@ -367,7 +391,14 @@
<string name="pref_theme_dark">Sötét téma</string>
<string name="pref_use_green_background">Zöld háttér</string>
<string name="pref_use_green_background_summary">Használjon zöld hátteret a kapott üzenetek kiemelésére</string>
+ <string name="contact_asks_for_presence_subscription">Ismerősöd állapot frissítéseket kér</string>
+ <string name="missing_presence_subscription_with_x">Hiányzik %s állapotára való feliratkozásod</string>
<string name="share_as_barcode">Megosztás vonalkóddal</string>
<string name="share_as_uri">Megosztás XMPP URI-ként</string>
<string name="share_as_http">Megosztás HTTP linkkel</string>
+ <string name="pref_blind_trust_before_verification">Megerősítés előtti \"vak bizalom\"</string>
+ <string name="pref_blind_trust_before_verification_summary">Automatikusan megbízik ismerőseid új, ellenőrizetlen eszközeiben. Ilyen esetekben manuális megerősítésre buzdítja a felhasználót.</string>
+ <string name="blindly_trusted_omemo_keys">Megerősítetlen OMEMO kulcsok</string>
+ <string name="show_inactive_devices">Inaktív eszközök listája</string>
+ <string name="hide_inactive_devices">Inaktívak listájának elrejtése</string>
</resources>
diff --git a/src/main/res/values-nb-rNO/strings.xml b/src/main/res/values-nb-rNO/strings.xml
index b21ff0df..7c27f88f 100644
--- a/src/main/res/values-nb-rNO/strings.xml
+++ b/src/main/res/values-nb-rNO/strings.xml
@@ -119,7 +119,7 @@
<string name="pref_notification_grace_period">Fristperiode</string>
<string name="pref_notification_grace_period_summary">Mengden tid Conversations forholder seg rolig i, etter å ha sett aktivitet på en annen enhet</string>
<string name="pref_advanced_options">Avansert</string>
- <string name="pref_never_send_crash">Aldri send feilrettingsrapporter</string>
+ <string name="pref_never_send_crash">Aldri send kræsjrapporter</string>
<string name="pref_never_send_crash_summary">Ved å sende inn stabelsporinger hjelper du den pågående utviklingen av Conversations</string>
<string name="pref_confirm_messages">Bekreft meldinger</string>
<string name="pref_confirm_messages_summary">Lar dine kontakter vite når du har mottatt og lest deres meldinger</string>
@@ -128,7 +128,7 @@
<string name="error_decrypting_file">I/O-feil ved dekryptering av fil</string>
<string name="accept">Godta</string>
<string name="error">En feil har inntruffet</string>
- <string name="pref_grant_presence_updates">Tillat oppdateringer for tilstedeværelse</string>
+ <string name="pref_grant_presence_updates">Tilstedeværelsesoppdateringer</string>
<string name="pref_grant_presence_updates_summary">Gi oppdatering for tilstedeværelse på forhånd til kontakter du har lagt til</string>
<string name="subscriptions">Abonnement</string>
<string name="your_account">Din konto</string>
@@ -138,7 +138,7 @@
<string name="ask_for_presence_updates">Etterspør oppdateringer for tilstedeværelse</string>
<string name="attach_choose_picture">Velg bilde</string>
<string name="attach_take_picture">Ta bilde</string>
- <string name="preemptively_grant">Tillat abbonnementsforespørsel på forhånd</string>
+ <string name="preemptively_grant">Tillat abonnementsforespørsel på forhånd</string>
<string name="error_not_an_image_file">Filen du valgte er ikke et bilde</string>
<string name="error_compressing_image">Feil ved konvertering av bildefila</string>
<string name="error_file_not_found">Finner ikke filen</string>
@@ -308,8 +308,8 @@
<string name="pref_quiet_hours_summary">Varslinger blir ikke spilt under stilletid</string>
<string name="pref_use_larger_font">Øk tekststørrelse</string>
<string name="pref_use_larger_font_summary">Bruk større tekststørrelser i hele programmet</string>
- <string name="pref_use_send_button_to_indicate_status">Forsendelsesknappen indikerer status</string>
- <string name="pref_use_indicate_received">Forespørr meldingskvitteringer</string>
+ <string name="pref_use_send_button_to_indicate_status">Forsendelsesknappstatus</string>
+ <string name="pref_use_indicate_received">Forespør meldingskvitteringer</string>
<string name="pref_use_indicate_received_summary">Mottatte meldinger vil bli avmerket i grønt hvis støttet</string>
<string name="pref_use_send_button_to_indicate_status_summary">Fargelegg send-knapp for å indikere kontakt-status</string>
<string name="pref_expert_options_other">Annet</string>
@@ -360,7 +360,7 @@
<string name="smp_requested">Kontakt forespurte SMP-verifisering</string>
<string name="no_otr_session_found">Ingen gyldig OTR-økt funnet!</string>
<string name="conversations_foreground_service">Conversations</string>
- <string name="pref_keep_foreground_service">Behold tjenesten i forgrunnen</string>
+ <string name="pref_keep_foreground_service">Forgrunnstjeneste</string>
<string name="pref_keep_foreground_service_summary">Forhindrer operativsystemet fra å drepe tilkoblingen din</string>
<string name="pref_export_logs">Eksporter historikk</string>
<string name="pref_export_logs_summary">Skriv loggføring av samtalehistorikk til SD-kort</string>
@@ -624,7 +624,7 @@
<string name="gp_short">Kort</string>
<string name="gp_medium">Middels</string>
<string name="gp_long">Lang</string>
- <string name="pref_broadcast_last_activity">Kringkast siste brukerhandling</string>
+ <string name="pref_broadcast_last_activity">Kringkast bruk</string>
<string name="pref_broadcast_last_activity_summary">La alle dine kontakter vite når du bruker Conversations</string>
<string name="pref_privacy">Personvern</string>
<string name="pref_theme_options">Drakt</string>
@@ -679,4 +679,9 @@
<string name="blindly_trusted_omemo_keys">OMEMO-nøkler du stoler blindt på</string>
<string name="not_trusted">Ikke betrodd</string>
<string name="invalid_barcode">Ugyldig 2D-strekkode</string>
+ <string name="verify_omemo_keys">Bekreft OMEMO-nøkler</string>
+ <string name="show_inactive_devices">Vis inaktive enheter</string>
+ <string name="hide_inactive_devices">Skjul inaktive enheter</string>
+ <string name="distrust_omemo_key">Fjern tiltro til enhet</string>
+ <string name="distrust_omemo_key_text">Er du sikker på at du vil fjerne bekreftelsen av denne enheten?\nDenne eneheten og meldinger fra den vil bli vises som \'Ikke betrodd\'.</string>
</resources>
diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml
index 0bdc5858..447651ec 100644
--- a/src/main/res/values-zh-rCN/strings.xml
+++ b/src/main/res/values-zh-rCN/strings.xml
@@ -77,7 +77,7 @@
<string name="clear_conversation_history">清除会话记录</string>
<string name="clear_histor_msg">删除该会话中所有信息?\n\n<b>注:</b> 该操作不会影响其他设备或服务器保存的信息。</string>
<string name="delete_messages">删除消息</string>
- <string name="also_end_conversation">结束此会话以后</string>
+ <string name="also_end_conversation">之后结束此会话</string>
<string name="choose_presence">选择设备</string>
<string name="send_unencrypted_message">发送未加密的信息</string>
<string name="send_message_to_x">发信息给 %s</string>
@@ -332,6 +332,7 @@
<string name="message_options">消息选项</string>
<string name="copy_text">拷贝文本</string>
<string name="select_text">选择文本</string>
+ <string name="quote">引用</string>
<string name="copy_original_url">拷贝原始URL</string>
<string name="send_again">再次发送</string>
<string name="file_url">文件 </string>
@@ -447,7 +448,7 @@
<string name="one_hour">1 个小时</string>
<string name="two_hours">2 个小时</string>
<string name="eight_hours">8 个小时</string>
- <string name="until_further_notice">直到新的通知</string>
+ <string name="until_further_notice">直到重新开启通知</string>
<string name="pref_input_options">输入</string>
<string name="pref_enter_is_send">回车是发送</string>
<string name="pref_enter_is_send_summary">用回车键来发送消息</string>
@@ -678,4 +679,15 @@
<string name="blindly_trusted_omemo_keys">盲目信任的 OMEMO 密钥</string>
<string name="not_trusted">不可信的</string>
<string name="invalid_barcode">非法的二维码</string>
+ <string name="pref_clean_cache_summary">清楚缓存文件夹 (由照相机应用使用的)</string>
+ <string name="pref_clean_cache">清除缓存</string>
+ <string name="pref_clean_private_storage">清除私密存储</string>
+ <string name="pref_clean_private_storage_summary">清除保存私密文件的存储 (它们可以之后从服务器上重新下载)</string>
+ <string name="i_followed_this_link_from_a_trusted_source">我从一个可信的源追踪的此链接</string>
+ <string name="verifying_omemo_keys_trusted_source">点击一个链接后将会开始校验 %1$s 的 OMEMO 密钥。此种情形只在你获得了一个从可信的源上只有 %2$s 能发布的该链接才是安全的。</string>
+ <string name="verify_omemo_keys">校验 OMEMO 密钥</string>
+ <string name="show_inactive_devices">显示非活跃设备</string>
+ <string name="hide_inactive_devices">隐藏非活跃设备</string>
+ <string name="distrust_omemo_key">不信任的设备</string>
+ <string name="distrust_omemo_key_text">你确认要移除此设备的验证吗?\n此设备及从其发送的信息将会被标识为不可信。</string>
</resources>