diff --git a/build.gradle b/build.gradle
index 9b276e604dee21bab54d492e367e94f47414efc8..a31d9c723a155af75440568365231f5819991014 100644
--- a/build.gradle
+++ b/build.gradle
@@ -6,7 +6,7 @@ buildscript {
mavenCentral()
}
dependencies {
- classpath 'com.android.tools.build:gradle:8.3.2'
+ classpath 'com.android.tools.build:gradle:8.5.2'
}
}
diff --git a/fastlane/metadata/android/de-DE/changelogs/4211704.txt b/fastlane/metadata/android/de-DE/changelogs/4211704.txt
new file mode 100644
index 0000000000000000000000000000000000000000..28ee9b44f2b29bc52ccc10c986195d9a4657f636
--- /dev/null
+++ b/fastlane/metadata/android/de-DE/changelogs/4211704.txt
@@ -0,0 +1,3 @@
+* Bereitstellen höherer Werte für den Dateiempfang
+* Bereitstellen von mehr Informationen in „Server-Info“
+* Diverse Fehlerbehebungen
diff --git a/fastlane/metadata/android/gl-ES/changelogs/4211704.txt b/fastlane/metadata/android/gl-ES/changelogs/4211704.txt
new file mode 100644
index 0000000000000000000000000000000000000000..ee6caa85e0d509981619a8eca3c20049ae91a273
--- /dev/null
+++ b/fastlane/metadata/android/gl-ES/changelogs/4211704.txt
@@ -0,0 +1,3 @@
+* ofrecer valores máis altos para descargas automáticas
+* proporcionar mais «Información sobre o servidor»
+* arranxo de outros problemas
diff --git a/fastlane/metadata/android/it-IT/changelogs/4211704.txt b/fastlane/metadata/android/it-IT/changelogs/4211704.txt
new file mode 100644
index 0000000000000000000000000000000000000000..237c4742d76be8877d2873d12251252cfe75a517
--- /dev/null
+++ b/fastlane/metadata/android/it-IT/changelogs/4211704.txt
@@ -0,0 +1,3 @@
+* Offerti valori massimi di accettazione file più alti
+* Mostrate maggiori informazioni in 'Info server'
+* Varie correzioni di errori
diff --git a/fastlane/metadata/android/pl-PL/changelogs/4211704.txt b/fastlane/metadata/android/pl-PL/changelogs/4211704.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b42bb58865c608d1baf121c87c0bac8c7bf99964
--- /dev/null
+++ b/fastlane/metadata/android/pl-PL/changelogs/4211704.txt
@@ -0,0 +1,3 @@
+* Zwiększenie rozmiarów automatycznie pobieranych plików
+* Pokazywanie więcej informacji o serwerze
+* Różne poprawki błędów
diff --git a/fastlane/metadata/android/uk/changelogs/4211704.txt b/fastlane/metadata/android/uk/changelogs/4211704.txt
new file mode 100644
index 0000000000000000000000000000000000000000..5b150178da7810f9c481e20194b637add1c9e8b7
--- /dev/null
+++ b/fastlane/metadata/android/uk/changelogs/4211704.txt
@@ -0,0 +1,3 @@
+* Вищі значення для автоматичного приймання файлів
+* У розділі «Інформація про сервер» надається більше інформації
+* Виправлення різних помилок
diff --git a/src/conversations/res/values-eo/strings.xml b/src/conversations/res/values-eo/strings.xml
index d5fc7d80eb682cb660b14fbfcc0e041d660652d4..70f6d572e7fcd1ce3ca2d30533330e21f86991a9 100644
--- a/src/conversations/res/values-eo/strings.xml
+++ b/src/conversations/res/values-eo/strings.xml
@@ -9,8 +9,8 @@
Se via kontakto estas proksime, ili ankaŭ povas skani la suban kodon por akcepti vian inviton.
Elekti vian XMPP-provizanton
Kunhavigi inviton kun…
- XMPP estas provizanta sendependa tujmesaĝa reto. Vi povas uzi ĉi tiun klienton per kia ajn XMPP-servilo, kiun vi elektas.
-\nTamen por via komforto ni faciligis krei konton ĉe conversations.im; provizanto speciale taŭga por la uzo kun Conversations.
+ XMPP tujmesaĝa reto malcentra de serviloj. Oni povas uzi ĉi tiun programon per ajna XMPP-servilo, kiun oni elektas.
+\nTamen por via placô ni faciligis krei konton ĉe conversations.im; servilo krome taŭga por la uzo kun Conversations.
Vi estis invitita al %1$s. Uzantnomo jam estas elektita por vi. Ni gvidos vin tra la procezo de kreado de konto.
\nVi povos komuniki kun uzantoj de aliaj provizantoj donante al ili vian plenan XMPP-adreson.
Nedece formatita provizokodo
diff --git a/src/conversations/res/values-gl/strings.xml b/src/conversations/res/values-gl/strings.xml
index c36e20c552fd27ddb87d09ed09f0f1b79daf2dc6..8be613a3d3deb057a269be80aeb0b1ed441b0876 100644
--- a/src/conversations/res/values-gl/strings.xml
+++ b/src/conversations/res/values-gl/strings.xml
@@ -12,6 +12,6 @@
Código de aprovisionamento con formato non válido
Toca no botón compartir para convidar ao teu contacto a %1$s.
Se o contacto está preto de ti, pode escanear o código inferior para aceptar o teu convite.
- Únete a %1$s e conversa conmigo: %2$s
+ Únete a %1$s e conversa comigo: %2$s
Enviar convite a…
\ No newline at end of file
diff --git a/src/conversations/res/values-pt-rBR/strings.xml b/src/conversations/res/values-pt-rBR/strings.xml
index 7e2b18910d5029cca757f6654326a7a60d2c5849..d46e87ae98db008f70ab66c2c5ca26d969caa8da 100644
--- a/src/conversations/res/values-pt-rBR/strings.xml
+++ b/src/conversations/res/values-pt-rBR/strings.xml
@@ -3,7 +3,8 @@
Selecione o seu provedor XMPP
Usar o conversations.im
Criar uma nova conta
- Você já possui uma conta XMPP? Esse pode ser o seu caso caso já esteja usando um outro cliente XMPP ou tenha usado o Conversations antes. Caso contrário, você pode criar uma nova conta XMPP agora.\nDica: alguns provedores de e-mail também fornecem contas XMPP.
+ Você já possui uma conta XMPP? Esse pode ser o seu caso se já estava usando um outro cliente XMPP ou tenha usado o Conversations antes. Caso contrário, você pode criar uma nova conta XMPP agora.
+\nDica: alguns provedores de e-mail também fornecem contas XMPP.
XMPP é uma rede de mensagens instantâneas independente de provedor. Você pode usar este aplicativo com qualquer servidor XMPP de sua escolha.
\nNo entanto, para sua comodidade, facilitamos criar uma conta em conversas.im; um provedor especificamente adequado para uso com Conversations.
Você foi convidado para %1$s. Nós iremos guiá-lo ao longo do processo de criação de uma conta.\nAo escolher %1$s como um provedor você conseguirá se comunicar com usuários de outros provedores dando a eles seu endereço XMPP completo.
@@ -13,5 +14,5 @@
Toque no botão compartilhar para enviar, para seu contato, um convite para %1$s.
Se seu contato estiver por perto, ele também pode escanear o código abaixo para aceitar seu convite.
Junte-se a %1$s e converse comigo: %2$s
- Compartilhe o convite com...
+ Compartilhe o convite com…
\ No newline at end of file
diff --git a/src/main/java/eu/siacs/conversations/Config.java b/src/main/java/eu/siacs/conversations/Config.java
index 03e7fd399f40867342685fdaaadeb01bd5176245..0650a3387a18ea3409aa8e1d6e675bce6fe8e8a7 100644
--- a/src/main/java/eu/siacs/conversations/Config.java
+++ b/src/main/java/eu/siacs/conversations/Config.java
@@ -122,7 +122,6 @@ public final class Config {
public static final boolean USE_DIRECT_JINGLE_CANDIDATES = true;
public static final boolean USE_JINGLE_MESSAGE_INIT = true;
- public static final boolean JINGLE_MESSAGE_INIT_STRICT_OFFLINE_CHECK = false;
public static final boolean DISABLE_HTTP_UPLOAD = false;
public static final boolean EXTENDED_SM_LOGGING = true; // log stanza counts
public static final boolean BACKGROUND_STANZA_LOGGING =
@@ -136,6 +135,9 @@ public final class Config {
false; // use x509 certificates to verify OMEMO keys
public static final boolean REQUIRE_RTP_VERIFICATION =
false; // require a/v calls to be verified with OMEMO
+ public static final boolean JINGLE_MESSAGE_INIT_STRICT_OFFLINE_CHECK = false;
+ public static final boolean JINGLE_MESSAGE_INIT_STRICT_DEVICE_TIMEOUT = false;
+ public static final long DEVICE_DISCOVERY_TIMEOUT = 6000; // in milliseconds
public static final boolean ONLY_INTERNAL_STORAGE =
false; // use internal storage instead of sdcard to save attachments
diff --git a/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java b/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java
index 7a0e9457c92bd19d398625a57612ee3318d9d20a..2c05fbfdc9e278a7d6d1c481179fe4c4930aac4a 100644
--- a/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java
+++ b/src/main/java/eu/siacs/conversations/crypto/axolotl/AxolotlService.java
@@ -12,6 +12,7 @@ import androidx.annotation.Nullable;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.MoreExecutors;
@@ -314,7 +315,7 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded {
if (me) {
deviceIds.remove(getOwnDeviceId());
}
- Set expiredDevices = new HashSet<>(axolotlStore.getSubDeviceSessions(jid.asBareJid().toString()));
+ final Set expiredDevices = new HashSet<>(axolotlStore.getSubDeviceSessions(jid.asBareJid().toString()));
expiredDevices.removeAll(deviceIds);
for (Integer deviceId : expiredDevices) {
SignalProtocolAddress address = new SignalProtocolAddress(jid.asBareJid().toString(), deviceId);
@@ -325,8 +326,8 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded {
}
}
}
- Set newDevices = new HashSet<>(deviceIds);
- for (Integer deviceId : newDevices) {
+ final Set newDevices = ImmutableSet.copyOf(deviceIds);
+ for (final Integer deviceId : newDevices) {
SignalProtocolAddress address = new SignalProtocolAddress(jid.asBareJid().toString(), deviceId);
XmppAxolotlSession session = sessions.get(address);
if (session != null && session.getFingerprint() != null) {
@@ -341,7 +342,7 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded {
needsPublishing |= deviceIds.removeAll(getExpiredDevices());
}
needsPublishing |= this.changeAccessMode.get();
- for (Integer deviceId : deviceIds) {
+ for (final Integer deviceId : deviceIds) {
SignalProtocolAddress ownDeviceAddress = new SignalProtocolAddress(jid.asBareJid().toString(), deviceId);
if (sessions.get(ownDeviceAddress) == null) {
FetchStatus status = fetchStatusMap.get(ownDeviceAddress);
@@ -352,6 +353,9 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded {
}
}
if (needsPublishing) {
+ // do not run next device list update notification through de-duplication (might get
+ // skipped by CSI)
+ this.lastDeviceListNotificationHash = 0;
publishOwnDeviceId(deviceIds);
}
}
@@ -426,8 +430,8 @@ public class AxolotlService implements OnAdvancedStreamFeaturesLoaded {
return devices;
}
- private void publishOwnDeviceId(Set deviceIds) {
- Set deviceIdsCopy = new HashSet<>(deviceIds);
+ private void publishOwnDeviceId(final Set deviceIds) {
+ final Set deviceIdsCopy = new HashSet<>(deviceIds);
Log.d(Config.LOGTAG, AxolotlService.getLogprefix(account) + "publishing own device ids");
if (deviceIdsCopy.isEmpty()) {
if (numPublishTriesOnEmptyPep >= publishTriesThreshold) {
diff --git a/src/main/java/eu/siacs/conversations/parser/MessageParser.java b/src/main/java/eu/siacs/conversations/parser/MessageParser.java
index c28b2ba735dd98d335a62e55d8d164377eb8f68a..89016ba636b43cda6e5b8a3fe5dc8acd65a2cf9d 100644
--- a/src/main/java/eu/siacs/conversations/parser/MessageParser.java
+++ b/src/main/java/eu/siacs/conversations/parser/MessageParser.java
@@ -1096,10 +1096,14 @@ public class MessageParser extends AbstractParser implements Consumer {
+ final var currentProposalState = rtpSessionProposals.get(proposal);
+ Log.d(
+ Config.LOGTAG,
+ "proposal state after timeout " + currentProposalState);
+ if (triggerTimeout
+ && Arrays.asList(
+ DeviceDiscoveryState.SEARCHING,
+ DeviceDiscoveryState.SEARCHING_ACKNOWLEDGED)
+ .contains(currentProposalState)) {
+ deviceDiscoveryTimeout(account, proposal);
+ }
+ },
+ Config.DEVICE_DISCOVERY_TIMEOUT,
+ TimeUnit.MILLISECONDS);
mXmppConnectionService.sendMessagePacket(account, messagePacket);
return proposal;
}
}
+ private void deviceDiscoveryTimeout(final Account account, final RtpSessionProposal proposal) {
+ // 'endUserState' is what we display in the UI. There is an argument to use 'BUSY' here
+ // instead
+ // we may or may not want to match this with the tone we are playing (see
+ // callIntegration.error() or callIntegration.busy())
+ final var endUserState = RtpEndUserState.CONNECTIVITY_ERROR;
+ Log.d(Config.LOGTAG, "call proposal still in device discovery state after timeout");
+ setTerminalSessionState(proposal, endUserState);
+
+ rtpSessionProposals.remove(proposal);
+ // error and busy would probably be both appropriate tones to play
+ // playing the error tone is probably more in line with what happens on a technical level
+ // and would be a similar UX to what happens when you call a user that doesn't exist
+ // playing the busy tone might be more in line with what some telephony networks play
+ proposal.callIntegration.error();
+ writeLogMissedOutgoing(
+ account, proposal.with, proposal.sessionId, null, System.currentTimeMillis());
+ mXmppConnectionService.notifyJingleRtpConnectionUpdate(
+ account, proposal.with, proposal.sessionId, endUserState);
+
+ final var retraction =
+ mXmppConnectionService.getMessageGenerator().sessionRetract(proposal);
+ mXmppConnectionService.sendMessagePacket(account, retraction);
+ }
+
public void sendJingleMessageFinish(
final Contact contact, final String sessionId, final Reason reason) {
final var account = contact.getAccount();
@@ -870,8 +923,7 @@ public class JingleConnectionManager extends AbstractConnectionManager {
Log.d(
Config.LOGTAG,
account.getJid().asBareJid() + ": unable to deliver ibb packet. missing sid");
- account.getXmppConnection()
- .sendIqPacket(packet.generateResponse(Iq.Type.ERROR), null);
+ account.getXmppConnection().sendIqPacket(packet.generateResponse(Iq.Type.ERROR), null);
return;
}
for (final AbstractJingleConnection connection : this.connections.values()) {
@@ -881,12 +933,10 @@ public class JingleConnectionManager extends AbstractConnectionManager {
if (sid.equals(inBandTransport.getStreamId())) {
if (inBandTransport.deliverPacket(packetType, packet.getFrom(), payload)) {
account.getXmppConnection()
- .sendIqPacket(
- packet.generateResponse(Iq.Type.RESULT), null);
+ .sendIqPacket(packet.generateResponse(Iq.Type.RESULT), null);
} else {
account.getXmppConnection()
- .sendIqPacket(
- packet.generateResponse(Iq.Type.ERROR), null);
+ .sendIqPacket(packet.generateResponse(Iq.Type.ERROR), null);
}
return;
}
@@ -896,8 +946,7 @@ public class JingleConnectionManager extends AbstractConnectionManager {
Log.d(
Config.LOGTAG,
account.getJid().asBareJid() + ": unable to deliver ibb packet with sid=" + sid);
- account.getXmppConnection()
- .sendIqPacket(packet.generateResponse(Iq.Type.ERROR), null);
+ account.getXmppConnection().sendIqPacket(packet.generateResponse(Iq.Type.ERROR), null);
}
public void notifyRebound(final Account account) {
diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java
index 0de9c6258b2e0f80dff743067d12e79c8279b008..138590e72943e9450b519afe2d1958ffee15ff81 100644
--- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java
+++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleRtpConnection.java
@@ -266,8 +266,7 @@ public class JingleRtpConnection extends AbstractJingleConnection
}
}
- private void receiveTransportInfo(
- final Iq jinglePacket, final RtpContentMap contentMap) {
+ private void receiveTransportInfo(final Iq jinglePacket, final RtpContentMap contentMap) {
final Set>>
candidates = contentMap.contents.entrySet();
final RtpContentMap remote = getRemoteContentMap();
@@ -355,8 +354,7 @@ public class JingleRtpConnection extends AbstractJingleConnection
}
}
- private void receiveContentAdd(
- final Iq jinglePacket, final RtpContentMap modification) {
+ private void receiveContentAdd(final Iq jinglePacket, final RtpContentMap modification) {
final RtpContentMap remote = getRemoteContentMap();
if (!Collections.disjoint(modification.getNames(), remote.getNames())) {
respondOk(jinglePacket);
@@ -900,8 +898,7 @@ public class JingleRtpConnection extends AbstractJingleConnection
}
private void sendContentAccept(final RtpContentMap contentAcceptMap) {
- final Iq iq =
- contentAcceptMap.toJinglePacket(Jingle.Action.CONTENT_ACCEPT, id.sessionId);
+ final Iq iq = contentAcceptMap.toJinglePacket(Jingle.Action.CONTENT_ACCEPT, id.sessionId);
send(iq);
}
@@ -917,9 +914,7 @@ public class JingleRtpConnection extends AbstractJingleConnection
private void rejectContentAdd(final RtpContentMap contentMap) {
final Iq iq =
- contentMap
- .toStub()
- .toJinglePacket(Jingle.Action.CONTENT_REJECT, id.sessionId);
+ contentMap.toStub().toJinglePacket(Jingle.Action.CONTENT_REJECT, id.sessionId);
Log.d(
Config.LOGTAG,
id.getAccount().getJid().asBareJid()
@@ -928,8 +923,7 @@ public class JingleRtpConnection extends AbstractJingleConnection
send(iq);
}
- private boolean checkForIceRestart(
- final Iq jinglePacket, final RtpContentMap rtpContentMap) {
+ private boolean checkForIceRestart(final Iq jinglePacket, final RtpContentMap rtpContentMap) {
final RtpContentMap existing = getRemoteContentMap();
final Set existingCredentials;
final IceUdpTransportInfo.Credentials newCredentials;
@@ -1008,9 +1002,7 @@ public class JingleRtpConnection extends AbstractJingleConnection
}
private boolean applyIceRestart(
- final Iq jinglePacket,
- final RtpContentMap restartContentMap,
- final boolean isOffer)
+ final Iq jinglePacket, final RtpContentMap restartContentMap, final boolean isOffer)
throws ExecutionException, InterruptedException {
final SessionDescription sessionDescription =
SessionDescription.of(restartContentMap, isResponder());
@@ -1175,8 +1167,7 @@ public class JingleRtpConnection extends AbstractJingleConnection
MoreExecutors.directExecutor());
}
- private void receiveSessionInitiate(
- final Iq jinglePacket, final RtpContentMap contentMap) {
+ private void receiveSessionInitiate(final Iq jinglePacket, final RtpContentMap contentMap) {
try {
contentMap.requireContentDescriptions();
contentMap.requireDTLSFingerprint(true);
@@ -1266,8 +1257,7 @@ public class JingleRtpConnection extends AbstractJingleConnection
MoreExecutors.directExecutor());
}
- private void receiveSessionAccept(
- final Iq jinglePacket, final RtpContentMap contentMap) {
+ private void receiveSessionAccept(final Iq jinglePacket, final RtpContentMap contentMap) {
try {
contentMap.requireContentDescriptions();
contentMap.requireDTLSFingerprint();
@@ -1411,8 +1401,7 @@ public class JingleRtpConnection extends AbstractJingleConnection
sendSessionTerminate(Reason.ofThrowable(rootCause), rootCause.getMessage());
}
- private void failureToPerformAction(
- final Jingle.Action action, final Throwable throwable) {
+ private void failureToPerformAction(final Jingle.Action action, final Throwable throwable) {
if (isTerminated()) {
return;
}
@@ -1686,7 +1675,11 @@ public class JingleRtpConnection extends AbstractJingleConnection
}
this.message.setTime(timestamp);
startRinging();
- if (xmppConnectionService.confirmMessages() && id.getContact().showInContactList()) {
+ // in environments where we always use discovery timeouts we always want to respond with
+ // 'ringing'
+ if (Config.JINGLE_MESSAGE_INIT_STRICT_DEVICE_TIMEOUT
+ || (xmppConnectionService.confirmMessages()
+ && id.getContact().showInContactList())) {
sendJingleMessage("ringing");
}
} else {
@@ -2023,8 +2016,7 @@ public class JingleRtpConnection extends AbstractJingleConnection
+ contentName);
return;
}
- final Iq iq =
- transportInfo.toJinglePacket(Jingle.Action.TRANSPORT_INFO, id.sessionId);
+ final Iq iq = transportInfo.toJinglePacket(Jingle.Action.TRANSPORT_INFO, id.sessionId);
send(iq);
}
@@ -2380,7 +2372,9 @@ public class JingleRtpConnection extends AbstractJingleConnection
private void sendJingleMessage(final String action, final Jid to) {
final var messagePacket = new im.conversations.android.xmpp.model.stanza.Message();
- messagePacket.setType(im.conversations.android.xmpp.model.stanza.Message.Type.CHAT); // we want to carbon copy those
+ messagePacket.setType(
+ im.conversations.android.xmpp.model.stanza.Message.Type
+ .CHAT); // we want to carbon copy those
messagePacket.setTo(to);
final Element intent =
messagePacket
@@ -2560,8 +2554,7 @@ public class JingleRtpConnection extends AbstractJingleConnection
private void initiateIceRestart(final RtpContentMap rtpContentMap) {
final RtpContentMap transportInfo = rtpContentMap.transportInfo();
- final Iq iq =
- transportInfo.toJinglePacket(Jingle.Action.TRANSPORT_INFO, id.sessionId);
+ final Iq iq = transportInfo.toJinglePacket(Jingle.Action.TRANSPORT_INFO, id.sessionId);
Log.d(Config.LOGTAG, "initiating ice restart: " + iq);
iq.setTo(id.with);
xmppConnectionService.sendIqPacket(
@@ -2616,8 +2609,7 @@ public class JingleRtpConnection extends AbstractJingleConnection
private void sendContentAdd(final RtpContentMap contentAdd) {
- final Iq iq =
- contentAdd.toJinglePacket(Jingle.Action.CONTENT_ADD, id.sessionId);
+ final Iq iq = contentAdd.toJinglePacket(Jingle.Action.CONTENT_ADD, id.sessionId);
iq.setTo(id.with);
xmppConnectionService.sendIqPacket(
id.account,
diff --git a/src/main/res/values-eo/strings.xml b/src/main/res/values-eo/strings.xml
index a6b3daec9354f9ae75cdf8d94a67446c6227dd96..87e83f534c0f434057d56173219b9e767a4fbc88 100644
--- a/src/main/res/values-eo/strings.xml
+++ b/src/main/res/values-eo/strings.xml
@@ -1,2 +1,16 @@
-
\ No newline at end of file
+
+ Agordi konton
+ Detaloj de konato
+ Detaloj de anaro
+ Detaloj de komunikilo
+ Aldoni konton
+ Alinomi
+ Bari konaton
+ Malbari konaton
+ Agordoj
+ Agordi kontojn
+ kestigi parolujon
+ Bari kunsidanton
+ Malbari kunsidanton
+
\ No newline at end of file
diff --git a/src/main/res/values-gl/strings.xml b/src/main/res/values-gl/strings.xml
index 8a38babf075c8ad837ee0be7b70b4d76adf8d353..831cbf3a860347cbee6191de0f6510fe478f61d9 100644
--- a/src/main/res/values-gl/strings.xml
+++ b/src/main/res/values-gl/strings.xml
@@ -4,7 +4,7 @@
Xestionar contas
Xestionar conta
Detalles do contacto
- Detalles do chat en grupo
+ Detalles da parola en grupo
Detalles da canle
Engadir conta
Editar contacto
@@ -26,8 +26,8 @@
Hai 1 min
hai %d minutos
- - %d chat sen ler
- - %d chats sen ler
+ - %d conversa sen ler
+ - %d conversas sen ler
enviando…
Descifrando a mensaxe. Agarda por favor…
@@ -39,7 +39,7 @@
Moderador
Participante
Visitante
- Desexas eliminar a %s da túa lista de contactos? O chat con este contacto non se eliminará.
+ Desexas eliminar a %s da túa lista de contactos? A conversa con este contacto non se eliminará.
Queres evitar que %s che envíe mensaxes?
Queres desbloquear a %s e permitirlle que che envíe mensaxes?
Bloquear todos os contactos desde 1%s?
@@ -77,9 +77,9 @@
Preparándose para enviar imaxes
Compartindo ficheiros. Agarda…
Baleirar historial
- Limpar historial do chat
- ¿Queres eliminar tódalas mensaxes deste chat?
-\n
+ Limpar historial da charla
+ ¿Queres eliminar tódalas mensaxes desta conversa?
+\n
\nAviso: Esto non lle afecta ás mensaxes gardadas noutros dispositivos ou servidores.
Eliminar ficheiro
Tes a certeza de querer eliminar este ficheiro\?
@@ -178,7 +178,7 @@
Tes a certeza de que queres eliminar a túa chave pública OpenPGP do anuncio de presenza? \nOs teus contactos non poderán enviarche mensaxes cifradas con OpenPGP.
Publicada a chave pública OpenPGP.
Activar conta
- Tes a certeza de querer eliminar a túa conta? Ao eliminar a conta eliminas todo o historial de chat
+ Tes a certeza de querer eliminar a túa conta? Ao eliminar a conta eliminas todo o historial de conversas
Gravar audio
Enderezo XMPP
Bloquear enderezo XMPP
@@ -234,17 +234,17 @@
canle@sala.exemplo.com
Gardar como marcador
Eliminar marcador
- Destruír o chat en grupo
+ Destruír a parola do grupo
Eliminar canle
- Tes a certeza de querer destruír esta conversa en grupo?
-\n
-\nAviso: O chat en grupo será totalmente eliminado do servidor.
+ Tes a certeza de querer destruír esta conversa en grupo?
+\n
+\nAviso: O parola en grupo será totalmente eliminado do servidor.
Tes a certeza de querer eliminar a canle?\n\nAviso: A canle será eliminada completamente do servidor.
- Non se puido eliminar o chat en grupo
+ Non se puido eliminar a parola
Non se puido eliminar a canle
- Editar o tema do chat en grupo
+ Editar o tema do conversa
Tema
- Entrando no chat en grupo…
+ Entrando na conversa do grupo…
Saír
Contacto engadido a túa lista de contactos
Volver a engadir
@@ -270,9 +270,11 @@
Omitir
Desactivar notificacións
Activar
- O chat en grupo require contrasinal
+ Precisas un contrasinal para entrar
Introducir contrasinal
- Primeiro solicita actualizacións de presenza aos contactos.\n\nEsto utilizarase para determinar que aplicación de chat está a utilizar o contacto.
+ Primeiro solicita actualizacións de presenza aos contactos.
+\n
+\nEsto utilizarase para determinar que aplicación de charla está a utilizar o contacto.
Solicitar agora
Ignorar
Aviso: Ao enviar esto sen mutuas actualizacións de presenza podería dar problemas.\n\nVaite a \"Detalles do contacto\" para verificar as subscricións de presenza.
@@ -292,12 +294,12 @@
Poñer marca de \"autojoin\" ao entrar ou deixar unha MUC e reaccionar ás modificacións feitas desde outros clientes.
Copiouse a impresión dixital OMEMO ao portapapeis
Non podes acceder a esta conversa en grupo
- Este chat en grupo é so para membros
+ Este parola en grupo é so para membros
Restrición do recurso
Expulsáronte de esta conversa en grupo
- Pechouse o chat en grupo
- Xa non estás neste chat en grupo
- Saíches de este chat en grupo por razóns técnicas
+ Pechouse a parola do grupo
+ Xa non estás nesta parola en grupo
+ Saíches desta parola en grupo por razóns técnicas
utilizando a conta %s
hospedado en %s
Comprobando %s no servidor HTTP
@@ -349,8 +351,8 @@
Etiquetas dinámicas
Mostra o estado debaixo do nome do contacto
Activar notificacións
- Non se atopou ningún servidor de chat en grupo
- Non se puido crear o chat en grupo
+ Non se atopou servidor para a parola en grupo
+ Non se puido crear a parola en grupo
Avatar da conta
Copiar impresión OMEMO ao portapapeis
Rexenerar a chave OMEMO
@@ -382,22 +384,22 @@
Revocar privilexios de administración
Conceder privilexios de propiedade
Retirar privilexios de propiedade
- Eliminar o chat en grupo
+ Eliminar a parola en grupo
Retirar da canle
Non se puido mudar a afiliación de %s
- Vetar no chat en grupo
+ Vetar na parola en grupo
Vetar na canle
Estás a intentar eliminar a %s dunha canle pública. O único xeito de facelo é prohibíndolle o acceso para sempre.
Rexeitar agora
Non se puido mudar o rol de %s
- Configuración do chat privado en grupo
+ Configuración do grupo privado de conversa
Configuración da canle pública
Privada, só para membros
Facer os enderezos XMPP visibles para calquera
Establecer canle como moderada
Non estás a participar
- Opcións do chat en grupo modificadas!
- Non se puideron modificar as opcións do chat en grupo
+ Cambiáronse as opcións da parola en grupo!
+ Non se puideron modificar as opcións da parola en grupo
Nunca
Ate novo aviso
Pospor
@@ -430,7 +432,7 @@
Mostrar localización
Non se atopou unha app para mostrar a localización
Localización
- Saír do chat en grupo privado
+ Saír da parola en grupo privada
Deixar a canle pública
Non confiar nas CAs do sistema
Todos os certificados deberán ser aprobados manualmente
@@ -450,7 +452,7 @@
Elixe a acción rápida
Buscar contactos
Enviar mensaxe privada
- %1$s saíu do chat en grupo
+ %1$s saíu da conversa
Identificador
Identificador
Este non é un identificador válido
@@ -528,7 +530,7 @@
Este campo é requerido
Correxir mensaxe
Enviar mensaxe correxida
- Xa confiaches na impresión dixital destas persoas. Ao escoller \"Feito\" estás simplemente confirmando que %s é parte deste chat en grupo.
+ Xa confiaches na impresión dixital destas persoas. Ao escoller \"Feito\" estás simplemente confirmando que %s é parte da parola en grupo.
Desactivou esta conta
Fallo de seguridade: Acceso non válido ao ficheiro!
Non se atopou unha app para compartir URI
@@ -553,7 +555,7 @@
Fallo no rexistro: inténteo de novo
Fallo no rexistro: contrasinal moi feble
Escoller participantes
- Creando chat en grupo…
+ Creando parola en grupo…
Convidar de novo
Desactivar
Breve
@@ -693,14 +695,14 @@
Non se obtivo a lista de dispositivos
Non se obtiveron as chaves da cifraxe
Suxestión: Nalgúns casos, isto pode solucionarse engadíndovos mutuamente as vosas listas de contactos.
- Tes a certeza de querer desactivar a cifraxe OMEMO para este chat?
+ Tes a certeza de querer desactivar a cifraxe OMEMO para esta conversa?
\nIsto permitirá á administración do teu servidor ler as túas mensaxes, pero pode ser a única forma de comunicarse con persoas que usan clientes obsoletos.
Desactivar agora
Borrador:
Cifraxe OMEMO
- Vaise usar sempre OMEMO para chats de grupo privados e conversas personais.
- OMEMO utilizarase por defecto para os novos chats.
- OMEMO deberá ser activado explícitamente para os novos chats.
+ Vaise usar sempre OMEMO para parolas de grupo privadas e conversas personais.
+ OMEMO actívase de xeito predeterminado para as novas conversas.
+ OMEMO deberá activarse explícitamente para as novas conversas.
Crear acceso directo
Activado por defecto
Desactivado por defecto
@@ -721,23 +723,23 @@
Permitir que %1$s acceda ao micrófono
Buscar mensaxes
GIF
- Ver chat
+ Ver conversa
Complemento para Compartir Localización
Utiliza o Complemento para Compartir Localización no lugar do mapa incluído
Copiar a dirección web
Copiar enderezo XMPP
Compartición de ficheiro HTTP para S3
Busca directa
- Na pantalla \'Novo chat\' abrir teclado e pór o cursor no campo de busca
- Avatar do chat en grupo
- O servidor non ten soporte para avatar do chat en grupo
- Só a propietaria pode cambiar o avatar do chat
+ Na pantalla \'Nova conversa\' abrir teclado e pór o cursor no campo de busca
+ Avatar da parola en grupo
+ O servidor non ten soporte para avatar da parola en grupo
+ Só a propietaria pode cambiar o avatar da parola
Nome do contacto
Alcume
Nome
Proporcionar un nome é optativo
- Nome do chat en grupo
- Este chat en grupo foi destruído
+ Nome da parola en grupo
+ A parola en grupo foi eliminada
Non se gardou a gravación
Servizo en segundo plano
Esta categoría de notificacións utilízase para mostrar unha notificación permanente indicando que %1$s está a funcionar.
@@ -831,9 +833,9 @@
Non se puido descifrar a copia. É correcto o contrasinal?
Respaldar & Restaurar
Introducir enderezo XMPP
- Crear chat en grupo
+ Crear parola en grupo
Unirse a canle pública
- Crear chat privado en grupo
+ Crear parola en grupo privada
Crear canle pública
Nome da canle
Enderezo XMPP
@@ -878,7 +880,7 @@
Non se puido completar a acción
Unirse a canle pública…
A aplicación que comparte non proporciona permiso para acceder ao ficheiro.
- Chats en grupo e Canles
+ Parolas en grupo e Canles
jabber.network
Servidor local
A maioría das usuarias debería escoller \'jabber.network\' para obter mellores suxestións desde o ecosistema público XMPP.
@@ -939,8 +941,8 @@
Non fixar enriba
Ruta GPX
No se pode correxir a mensaxe
- Todos os chats
- Este chat
+ Todos as conversas
+ Esta conversa
O teu avatar
Avatar para %s
Cifrada con OMEMO
@@ -950,7 +952,7 @@
Gravar correo de voz
Reproducir audio
Pausar audio
- Engade un contacto, crea o únete a un chat en grupo ou descubre canles
+ Engade un contacto, crea o únete a unha parola en grupo ou descubre canles
- Ver %1$d Participante
- Ver %1$d Participantes
@@ -987,8 +989,8 @@
Chamada saínte · %s
Eliminar a conta no servidor
Non se puido eliminar a conta no servidor
- Buscar chats en grupo
- Chats en grupo
+ Buscar parolas en grupo
+ Parolas en grupo
Non intentes restablecer unha copia de apoio que non tiveses creado ti!
Estás intentando importar un ficheiro de apoio co formato antigo
Audiolibro
@@ -1009,25 +1011,25 @@
Sen permiso para chamar por teléfono
Non está dispoñible o servizo de chamadas!
O contacto non está dispoñible
- Queres eliminar o marcador para %s e arquivar o chat?
+ Queres eliminar o marcador para %s e arquivar a conversa?
Queres eliminar o marcador para %s?
- Eliminar e Arquivar o chat
+ Eliminar e Arquivar a conversa
Cor de fondo diferente para as mensaxes enviadas e as recibidas
- Burbullas coloridas nos chats
+ Burbullas coloridas nas conversas
Cores dinámicas
Cores do sistema (Material You)
Compartir con…
Arquivar conversa
- Novo chat
- Inciar chat
- Eliminar o chat
+ Nova conversa
+ Conversar
+ E despois eliminar a charla
Únete á Conversa
- Cambiar ao chat
+ Cambiar á conversa
Sen certificado cliente seleccionado!
O descubrimento de canles usa un servizo alleo chamado <a href=https://search.jabber.network>search.jabber.network</a>.<br><br>Ao usar esta ferramenta vas enviar o teu enderezo IP e termos de busca a ese servizo. Le a súa <a href=https://search.jabber.network/privacy>Política de Privacidade</a> para saber máis.
- O código de barras non contén impresións dixitais para este chat.
- Arquiváronse os chats correspondentes.
- Chat arquivado
+ O código de barras non contén impresións dixitais para esta conversa.
+ Arquiváronse as conversas correspondentes.
+ Arquivouse a conversa
Decorado, Cores, Capturas, Escritura
Seguridade
Notificacións
diff --git a/src/main/res/values-it/strings.xml b/src/main/res/values-it/strings.xml
index 64853f2f4f4f5367e3d93814a759c11f1fb251b0..b46988b86802b67559e92d3a4cddb6d1db92f833 100644
--- a/src/main/res/values-it/strings.xml
+++ b/src/main/res/values-it/strings.xml
@@ -1100,4 +1100,7 @@
Il video è attivo. Tocca per disattivarlo.
Il video è disattivato. Tocca per attivarlo.
Cambia fotocamera
+ Meccanismo di accesso
+ XEP-0386: Bind 2
+ XEP-0388: Profilo SASL estensibile
diff --git a/src/main/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml
index 9ce7c0cdf2c04220d9dc29b8202aa00d2b9c67b5..c6e5ac2ca496190d149ed72c54108613846dfd96 100644
--- a/src/main/res/values-pl/strings.xml
+++ b/src/main/res/values-pl/strings.xml
@@ -1118,4 +1118,5 @@
Twój awatar. Dotknij aby wybrać nowy awatar z galerii.
XEP-0388: rozszerzalny profil SASL
XEP-0386: uproszczone nawiązywanie połączenia
+ Mechanizm logowania
diff --git a/src/main/res/values-pt-rBR/strings.xml b/src/main/res/values-pt-rBR/strings.xml
index c904970df75b46043503e760d31033b6fd445055..695ea6053a7d9c349b4968d85ea78367522ab684 100644
--- a/src/main/res/values-pt-rBR/strings.xml
+++ b/src/main/res/values-pt-rBR/strings.xml
@@ -30,8 +30,8 @@
- %d conversas não lidas
- %d conversas não lidas
- enviando...
- Descriptografando a mensagem. Por favor, aguarde...
+ enviando…
+ Descriptografando a mensagem. Por favor, aguarde…
Mensagem criptografada via OpenPGP
Este apelido já está em uso
Apelido inválido
@@ -49,7 +49,7 @@
Bloqueado
Registrar uma nova conta no servidor
Alterar a senha no servidor
- Compartilhar com...
+ Compartilhar com…
Convidar contato
Convidar
Contatos
@@ -76,14 +76,16 @@
não foi entregue
Preparando para enviar a imagem
Preparando para enviar as imagens
- Compartilhando arquivos. Por favor, aguarde...
+ Compartilhando arquivos. Por favor, aguarde…
Limpar o histórico
Limpar histórico do chat
Deseja excluir todas as mensagens dessa conversa?
\n
\nAtenção: Isso não afetará mensagens armazenadas em outros dispositivos ou servidores.
Excluir arquivo
- Deseja realmente excluir este arquivo?\n\nAtenção: Isso não excluirá cópias deste arquivo armazenadas em outros dispositivos ou servidores.
+ Deseja realmente excluir este arquivo?
+\n
+\nAtenção: Isso não excluirá cópias deste arquivo armazenadas em outros dispositivos ou servidores.
Selecione o dispositivo
Enviar mensagem de texto não criptografada
Enviar mensagem
@@ -97,21 +99,21 @@
Reiniciar
Instalar
Por favor, instale o OpenKeychain
- oferecendo...
- aguardando...
+ oferecendo…
+ aguardando…
Não foi encontrada nenhuma chave OpenPGP
Não foi possível criptografar suas mensagens porque o seu contatos não estão anunciando a chave pública dele.\n\nPor favor, solicite ao seu contatos que configure o OpenPGP.
Não foi encontrada nenhuma chave OpenPGP
Não foi possível criptografar sua mensagem porque os seus contatos não estão anunciando a chave pública deles.\n\nPor favor, solicite aos seus contatos que configurem o OpenPGP.
Geral
Aceitar arquivos
- Aceita automaticamente arquivos menores que...
+ Aceita automaticamente arquivos menores que…
Anexos
Notificação
Vibração
- Vibra ao receber uma nova mensagem.
+ Vibrar ao receber uma nova mensagem
Notificação via LED
- Pisca a luz de notificação ao receber uma nova mensagem.
+ Piscar a luz de notificação ao receber uma nova mensagem
Toque
Som de notificação
Som de notificação para novas mensagens
@@ -121,12 +123,12 @@
Avançado
Ao enviar os stack traces você está colaborando com o desenvolvimento
Confirmação de mensagens
- Permite que seus contatos saibam quando você recebeu e leu as mensagens deles.
+ Permita que seus contatos saibam quando você recebeu e leu as mensagens deles
Impedir capturas de tela
Esconde o conteúdo do app no alternador de apps e bloqueia capturas de tela
IU
O OpenKeychain produziu um erro.
- Chave ruim para a criptografia
+ Chave ruim para criptografia.
Aceitar
Ocorreu um erro
Erro
@@ -141,7 +143,9 @@
Não foi possível converter o arquivo de imagem
Arquivo não encontrado
Ocorreu um erro genérico de E/S. Você tem espaço de armazenamento suficiente no seu aparelho?
- O aplicativo que você usou para selecionar esta imagem não nos forneceu permissões suficientes para ler o arquivo.\n\nUtilize um gerenciador de arquivos diferente para selecionar a imagem.
+ O app que você usou para selecionar esta imagem não nos forneceu permissões suficientes para ler o arquivo.
+\n
+\nUtilize um gerenciador de arquivos diferente para selecionar a imagem.
O app que você usou para compartilhar esse arquivo não forneceu permissões suficientes.
Desconhecido
Temporariamente desabilitado
@@ -182,7 +186,7 @@
nomedeusuario@exemplo.com
Senha
Esse não é um endereço XMPP válido
- Memória insuficiente. A imagem é muito grande.
+ Memória insuficiente. A imagem é muito grande
Deseja adicionar %s ao seu livro de endereços?
Informações do servidor
XEP-0313: MAM
@@ -214,7 +218,7 @@
v\\Impressão digital OMEMO (origem da mensagem)
Outros dispositivos
Confiar nas impressões digitais OMEMO
- Buscando as chaves...
+ Buscando as chaves…
Concluído
Descriptografar
Pesquisar
@@ -239,7 +243,7 @@
Não foi possível destruir o canal
Editar o assunto da conversa em grupo
Tópico
- Entrando na conversa em grupo...
+ Entrando na conversa em grupo…
Sair
O contato foi adicionado à sua lista de contatos
Adicionar novamente
@@ -249,7 +253,7 @@
Todos leram até esse ponto
Publicar
Toque o avatar para selecionar uma imagem da galeria
- Publicando...
+ Publicando…
O servidor rejeitou sua publicação
Não foi possível converter a sua imagem
Não foi possível salvar o avatar no disco
@@ -267,21 +271,23 @@
Habilitar
Essa conversa em grupo exige uma senha
Digite a senha
- Por favor, primeiro solicite atualizações de presença do seu contato.\n\nIsso determinará qual cliente de conversas o seu contato está usando.
+ Por favor, primeiro solicite atualizações de presença do seu contato.
+\n
+\nIsso determinará qual cliente de chat o seu contato está usando.
Solicitar agora
Ignorar
Aviso: Enviar isso sem atualizações mútuas de presença pode provocar problemas inesperados.\n\nVerifique nos detalhes do contato suas inscrições de presença.
Segurança
- Permitir a correção da mensagem
- Permite que seus contatos editem suas mensagens retroativamente.
+ Correção de mensagem
+ Permita que seus contatos editem suas mensagens retroativamente.
Configurações avançadas
- Por favor, use com cuidado.
+ Por favor, tenha cuidado com isso
Sobre o %s
Horário de sossego
Início
Fim
Habilitar horário de sossego
- As notificações serão silenciadas no horário de sossego.
+ As notificações serão silenciadas no horário de sossego
Outras
Sincronizar favoritos
Define a flag \"autojoin\" ao entrar ou sair de uma sala e reage a modificações feitas por outros clientes.
@@ -296,7 +302,7 @@
usando a conta %s
hospedado em %s
Verificando %s no host HTTP
- Você não está conectado. Tente novamente mais tarde.
+ Você não está conectado. Tente novamente mais tarde
Verificar o tamanho de %s
Verifique o tamanho de %1$s em %2$s
Opções da mensagem
@@ -309,14 +315,14 @@
O endereço XMPP foi copiado para a área de transferência
A mensagem de erro foi copiada para a área de transferência
endereço web
- Capturar código de barras 2D
- Exibir código de barras 2D
+ Escanear código QR
+ Exibir código QR
Exibir a lista de bloqueios
Detalhes da conta
Confirmar
Tentar novamente
Serviço ativo
- Impede que o sistema operacional encerre sua conexão.
+ Impede que o sistema operacional encerre sua conexão
Criar backup
Os arquivos de backup serão armazenados em %s
Criando arquivos de backup
@@ -341,8 +347,8 @@
Não foi encontrado nenhum aplicativo para abrir o arquivo
Não foi encontrado nenhum aplicativo para abrir o link
Não foi encontrado nenhum aplicativo para visualizar contatos
- Etiquetas dinâmicas
- Exibe etiquetas de somente-leitura abaixo dos contatos.
+ Rótulos dinâmicos
+ Exibe rótulos de somente-leitura abaixo dos contatos
Habilitar notificações
Não foi encontrado nenhum servidor de conversas em grupo
Não foi possível criar a conversa em grupo
@@ -356,7 +362,7 @@
Alguma coisa deu errado
Obtendo histórico do servidor
Nenhum outro histórico do servidor
- Atualizando...
+ Atualizando…
A senha foi alterada!
Não foi possível alterar a senha
Alterar a senha
@@ -402,7 +408,7 @@
Enter envia
Use a tecla Enter para enviar mensagens. Você sempre pode usar Ctrl+Enter para enviar mensagens, mesmo se essa opção estiver desabilitada.
Exibir o botão Enter
- Altera o botão de emoticons para um botão Enter.
+ Alterar o botão de emoticons para um botão Enter
áudio
vídeo
imagem
@@ -411,16 +417,16 @@
Documento PDF
Aplicativo Android
Contato
- O avatar foi publicado.
+ O avatar foi publicado!
Enviando %s
Oferecendo %s
Ocultar desconectados
- %s está digitando...
+ %s está digitando…
%s parou de digitar
- %s estão digitando...
+ %s estão digitando…
%s pararam de digitar
Notificações de digitação
- Permite que os seus usuários saibam quando você está escrevendo mensagens para eles.
+ Permita que os seus contatos saibam quando você está escrevendo mensagens para eles
Enviar localização
Exibir localização
Não foi encontrado nenhum aplicativo para exibir a localização
@@ -428,9 +434,9 @@
Deixar a conversa em grupo privada
Deixar o canal público
Não confiar nas CAs do sistema
- Todos os certificados devem ser aprovados manualmente.
+ Todos os certificados devem ser aprovados manualmente
Remover certificados
- Exclui os certificados aprovados manualmente.
+ Excluir certificados aprovados manualmente
Nenhum certificado aprovado manualmente
Remover certificados
Excluir a seleção
@@ -459,21 +465,21 @@
Falha na associação
O servidor não responde por esse domínio
Quebrado
- Disponibilidade
+ Dispôr
\"Afastado\" quando o dispositivo estiver travado
Exibe como Afastado quando o dispositivo estiver travado
\"Ocupado\" no modo silencioso
Exibe como Ocupado quando o dispositivo estiver em modo silencioso
Considerar o modo de vibração como silencioso
Exibe como Ocupado quando o dispositivo estiver em vibratório
- Configurações detalhadas da conexão
- Exibe o nome de host e configurações da porta ao configurar uma conta.
+ Host & Porta
+ Exibir configurações de conexão entendidas ao configurar uma conta
xmpp.example.com
Autenticar com certificado
Não foi possível analisar o certificado
Preferências de arquivamento
Preferências de arquivamento no servidor
- Obtendo as preferências de arquivamento. Por favor aguarde...
+ Obtendo as preferências de arquivamento. Por favor aguarde…
Não foi possível obter as preferências de arquivamento
CAPTCHA obrigatório
Digite o texto da imagem acima
@@ -481,11 +487,11 @@
O endereço XMPP não corresponde ao certificado
Renovar o certificado
Ocorreu um erro na obtenção da chave OMEMO!
- A chave OMEMO foi verificada com o certificado.
- O seu dispositivo não suporta a seleção de certificados de clientes.
+ A chave OMEMO foi verificada com o certificado!
+ O seu dispositivo não suporta a seleção de certificados de clientes!
Conexão
Conectar via Tor
- Faz o tunelamento de todas as conexões através de redes Tor. Necessita do Orbot.
+ Fazer o tunelamento de todas as conexões através de redes Tor. Necessita do Orbot
Nome do host
Porta
Server- ou .onion-Address
@@ -504,10 +510,10 @@
Texto compartilhado com %s
Permita o acesso do %1$s ao armazenamento externo
Permita o acesso do %1$s à câmera
- Sincronizar com os contatos
- %1$s gostaria de obter a permissão para acessar seu livro de endereços e fazer a correspondência entre ele e a sua lista de contatos do XMPP. Isso permitirá exibir os nomes completos e avatares dos seus contatos.
+ Integração com a lista de contatos
+ O %1$s processa sua lista de contatos localmente, no seu dispositivo, para te mostrar nomes e fotos de perfil para contatos correspondentes no XMPP.
\n
-\n%1$s fará a leitura e a correspondência do seu livro de endereços localmente, sem enviar os seus contatos para o servidor em uso.
+\nNenhum dado da sua lista de contato sai do seu dispositivo!
Notificar em todas as mensagens
Notificar somente quando for mencionado
Notificações desabilitadas
@@ -518,26 +524,29 @@
Apenas imagens grandes
Otimizações de bateria habilitadas
O seu dispositivo está empregando uma otimização intensa de bateria para o %1$s, o que pode levar a atrasos nas notificações ou mesmo perda de mensagens.\nÉ recomendável desabilitar essa otimização.
- O seu dispositivo está empregando uma otimização intensa de bateria para o %1$s, o que pode levar a atrasos nas notificações ou mesmo perda de mensagens.\nVocê será consultado agora para desabilitar essa otimização.
+ O seu dispositivo está empregando uma otimização intensa de bateria para o %1$s, o que pode levar a atrasos nas notificações ou mesmo perda de mensagens.
+\n
+\nVocê será pedido agora para desabilitar essa otimização.
Desabilitar
A área selecionada é muito grande
(Nenhuma conta ativa)
Este campo é necessário
- Corrigir a mensagem
+ Corrigir
Enviar a mensagem corrigida
- Você já validou as impressões digitais desse contato e confirma sua confiabilidade. Ao selecionar \"Concluído\" você está apenas confirmando que %s é parte desta conversa em grupo.
+ Você já confiou na impressão digital desse contato. Ao selecionar \"Concluído\" você está apenas confirmando que %s é parte deste chat em grupo.
Você desabilitou essa conta
Erro de segurança: Acesso inválido ao arquivo!
Não foi encontrado nenhum aplicativo para compartilhar a URI
- Compartilhar a URI com...
+ Compartilhar a URI com…
Concordar e continuar
- Você será guiado ao longo do processo de criação de conta no conversations.im.¹\nAo usar o conversations.im você também poderá se comunicar com usuários de outros provedores. Basta fornecer a eles o sua endereço XMPP completo.
+ Você será guiado ao longo do processo de criação de conta no conversations.im.
+\nAo usar o conversations.im você também poderá se comunicar com usuários de outros provedores. Basta fornecer a eles o sua endereço XMPP completo.
Seu endereço XMPP completo será: %s
Criar conta
Usar meu próprio provedor
Selecione seu nome de usuário
- Gerenciar a disponibilidade manualmente
- Defina sua disponibilidade ao editar a sua mensagem de status
+ Gerenciar o dispôr a dedo
+ Defina seu dispôr ao editar a sua mensagem de estado.
Mensagem de status
Livre para conversar
Conectado
@@ -549,14 +558,14 @@
Não foi possível efetuar o registro. Por favor, tente novamente mais tarde
Falha no registro: Senha muito fraca
Selecione os participantes
- Criando a conversa em grupo...
+ Criando a conversa em grupo…
Convidar novamente
Desabilitar
Curto
Médio
Longo
- Uso do anúncio
- Permite que os seus contatos saibam quando você usa o Conversations
+ Visto por último
+ Permita que os seus contatos vejam quando você usou o app
Privacidade
Tema
Selecione a paleta de cores
@@ -603,7 +612,7 @@
Confiar em novos dispositivos de contatos não verificados, mas solicitar confirmação manual de novos dispositivos para contatos verificados.
Chaves OMEMO confiadas cegamente, o que significa que poderiam ser outras pessoas ou alguém poderia tê-las aproveitado.
Não confiável
- Código de barras 2D inválido
+ Código QR inválido
Limpar a pasta de cache (usada pela aplicativo da câmera)
Limpar o cache
Limpar o armazenamento privado
@@ -674,7 +683,7 @@
O certificado não contém um endereço XMPP
parcial
Gravar vídeo
- Copiar para a área de transferência
+ Copiar
A mensagem foi copiada para a área de transferência
Mensagem
As mensagens privadas estão desabilitadas
@@ -695,14 +704,14 @@
Não foi possível obter a lista de dispositivos
Não foi possível obter as chaves de criptografia
Dica: Em alguns casos isso pode ser resolvido adicionando-se um ao outro na lista de contatos.
- Tem certeza que deseja desabilitar a criptografia OMEMO nesta conversa?
+ Tem certeza que deseja desabilitar a criptografia OMEMO neste chat?
\nIsso permitirá que o administrador do seu servidor seja capaz de ler suas mensagens. Por outro lado, pode ser a única forma de se comunicar com pessoas usando clientes desatualizados.
Desabilitar agora
Rascunho:
Criptografia OMEMO
OMEMO será sempre utilizado em conversas um-para-um e de grupos privados.
- OMEMO será utilizado por padrão em novas conversas.
- OMEMO deverá ser explicitamente ativado para novas conversas.
+ OMEMO será utilizado por padrão em novos chats.
+ OMEMO deverá ser explicitamente ativado para novos chats.
Criar atalho
Ligado por padrão
Desligado por padrão
@@ -719,18 +728,18 @@
Exibir localização
Compartilhar
Não foi possível iniciar a gravação
- Por favor, aguarde...
+ Por favor, aguarde…
Permita o acesso do %1$s ao microfone
Pesquisar mensagens
GIF
- Ver conversa
+ Visualizar chat
Plugin de Compartilhamento de Localização
- Use o Plugin de Compartilhamento de Localização ao invés do mapa nativo.
+ Usar o Plugin de Compartilhamento de Localização ao invés do mapa integrado
Copiar endereço web
Copiar endereço XMPP
Compartilhamento de arquivos via HTTP para S3
Pesquisa direta
- Na tela \"Conversar\", abra o teclado e coloque o cursor no campo de pesquisa
+ Na tela \"Novo chat\", abra o teclado e coloque o cursor no campo de pesquisa
Avatar de conversa em grupo
O host não suporta avatares de conversa em grupo
Somente o proprietário pode alterar o avatar da conversa em grupo
@@ -757,14 +766,14 @@
Entregas não efetuadas
Configurações das notificações de mensagens
configurações das notificações de chamadas recebidas
- Importância, som, vibração.
+ Importância, Som, Vibrar
Compressão de vídeo
Ver mídia
Participantes
Navegador de mídia
- Arquivo omitido devido a violação de segurança
+ Arquivo omitido devido à uma violação de segurança.
Qualidade do vídeo
- Qualidade baixa significa arquivos menores.
+ Qualidade baixa significa arquivos menores
Média (360p)
Alta (720p)
cancelado
@@ -782,20 +791,20 @@
Verificar %s
%s.]]>
Nós enviamos outro SMS com um código de 6 dígitos.
- Por favor, digite o código de 6 dígitos abaixo.
+ Por favor, digite o PIN de 6 dígitos abaixo.
Reenviar o SMS
Reenviar o SMS (%s)
Por favor, espere (%s)
- voltar
- Copiar automaticamente o código da área de transferência.
- Por favor, digite o seu código de 6 dígitos.
+ Voltar
+ A área de transferência foi automaticamente lida para um possível PIN.
+ Por favor, digite o seu PIN de 6 dígitos.
Deseja realmente cancelar o procedimento de registro?
Sim
Não
- Verificando...
- Solicitando o SMS...
- O código que você digitou está incorreto.
- O código que enviamos para você expirou.
+ Verificando…
+ Solicitando o SMS…
+ O PIN que você digitou está incorreto.
+ O PIN que enviamos para você expirou.
Erro desconhecido na rede.
Resposta desconhecida do servidor.
Não foi possível conectar ao servidor.
@@ -822,7 +831,7 @@
Este canal tornará público o seu endereço XMPP
e-book
Original (não comprimido)
- Abrir com...
+ Abrir com…
Imagem de perfil do Conversations
Selecione a conta
Restaurar o backup
@@ -842,13 +851,13 @@
Por favor, forneça um nome para o canal
Por favor, forneça um endereço XMPP
Esse é um endereço XMPP. Por favor, forneça um nome.
- Criando o canal público...
+ Criando o canal público…
Este canal já existe
Você entrou em um canal existente
Não foi possível salvar a configuração do canal
Permitir que qualquer um edite o tópico
Permitir que qualquer um convide outras pessoas
- Qualquer um pode editar o tópico
+ Qualquer um pode editar o tópico.
Proprietários podem editar o tópico.
Administradores podem editar o tópico.
Proprietários podem convidar outras pessoas.
@@ -864,7 +873,7 @@
Descobrir canais
Pesquisar canais
Provável violação de privacidade!
- Eu já tenho uma conta.
+ Eu já tenho uma conta
Adicionar uma conta já existente
Registrar uma nova conta
Isso se parece com um endereço de domínio
@@ -878,7 +887,7 @@
Esta conta já foi configurada
Por favor, digite a senha para esta conta
Não foi possível executar essa ação
- Entrar no canal público...
+ Entrar no canal público…
O aplicativo de compartilhamento não permitiu o acesso a esse arquivo.
jabber.network
@@ -937,15 +946,15 @@
Chamada de vídeo
Ajuda
Seu microfone não está disponível
- Você só pode fazer uma chamada por vez
+ Você só pode fazer uma chamada por vez.
Retornar para a chamada em andamento
Não foi possível trocar a câmera
Fixar no topo
Desafixar do topo
Trilha GPX
Não foi possível corrigir a mensagem
- Todas as conversas
- Essa conversa
+ Todos os chats
+ Este chat
Seu avatar
Avatar para %s
Criptografada com OMEMO
@@ -984,16 +993,16 @@
Mudar para vídeo
Recusar requisição de mudança para vídeo
Enviar relatórios de erro
- Gostaria de remover o favorito de %s e arquivar chat?
+ Gostaria de remover o favorito de %s e arquivar a conversa?
Exclua o chat depois
Compartilhar com…
- Arquivar chat
+ Arquivar conversa
Novo chat
Enviar mensagem criptografada
Desconectado
Gostaria de remover o favorito de %s?
Operação não suportada
- Deletar e arquivar chat
+ Excluir e arquivar a conversa
Seu contato tem dispositivos não verificados. Escaneie o Código QR dele para fazer uma verificação e impedir ataques MITM.
Sair
Você está usando dispositivos não verificados. Escaneie o Código QR em outro dispositivo para fazer a verificação, e impedir ataques MITM.
@@ -1022,4 +1031,80 @@
Aparência
Conexão com o servidor
Sistema Operacional
+ Entre na Conversa
+ Bem-vindo ao Quicksy!
+ Rejeitar
+ Remover conta do servidor
+ Não pôde excluir conta do servidor
+ Transmissor de notificações para apps de terceiros compatíveis com o UnifiedPush
+ Criptografia de ponta-a-ponta
+ Autoridades de certificação
+ Esconder notificação
+ Ao atuar como um distribuidor UnifiedPush, a conexão persistente, estável, e amigável à bateria do XMPP será usada para alertar outros apps compatíveis com o UnifiedPush, como o Tusky, Ltt.RS, FluffyChat, e mais.
+ Chats correspondentes arquivados.
+ Não tente restaurar backups que você não criou!
+ O contato não está disponível
+ O vídeo está ativado. Toque para desativar.
+ A descoberta de canais usa um serviço de terceiros chamado <a href=https://search.jabber.network>search.jabber.network</a>.<br><br>Usar esta funcionalidade transmitirá seu endereço de IP e termos de pesquisa ao serviço. Leia sua <a href=https://search.jabber.network/privacy>Política de Privacidade</a> para mais informações.
+ A chamada está usando o falante de ouvido. Toque para alterar para o alto-falante.
+ Chamada está usando alto-falante. Toque para alterar para o falante de ouvido.
+ Criar um único, agendamento
+ Criar um único backup
+ Audiobook
+ Você desconectou desta conta
+ Bolhas de chat coloridas
+ Cores de fundo distintas para mensagens enviadas e recebidas
+ Convites de estranhos
+ Aceitar convites de estranhos para chat em grupo
+ Chat arquivado
+ Texto grande
+ Aumentar o tamanho do texto em bolhas de mensagem
+ Seu avatar. Toque para selecionar um novo avatar da galeria.
+ Não pôde desativar vídeo.
+ Distribuidor UnifiedPush
+ Chamada está usando fone de ouvido com fio
+ O vídeo está desativado. Toque para ativar.
+ XEP-0386: Vinculação 2
+ XEP-0388: Perfil SASL extensível
+ Chats em grupo
+ Pesquisar chats em grupo
+ O Quicksy pede seu consentimento ao usar seus dados
+ Reconectar em outro host
+ Sem permissão para fazer uma ligação
+ Este código de barras não contém impressões digitais para este chat.
+ Cores dinâmicas
+ Cores do sistema (Material You)
+ Você está tentando importar um backup com um formato desatualizado
+ Chamada recebida (%s) · %s
+ Chamada enviada (%s) · %s
+ Chamada enviada · %s
+ Conta XMPP
+ A conta pela qual mensagens push serão recebidas.
+ Servidor Push
+ Nenhuma (desativado)
+ Interação
+ No dispositivo
+ Backup recorrente
+ Notificações em tela cheia
+ Permitir que este app mostre notificações para chamadas recebidas que utilizam a tela inteira quando o dispositivo está bloqueado.
+ Editar nome de usuário
+ Excluir chave OpenPGP
+ Editar nome e tópico
+ Alterar configuração
+ Alterar configurações de notificação
+ A chamada está usando o falante de ouvido.
+ A chamada está usando o alto-falante.
+ A chamada está usando o Bluetooth.
+ Virar câmera
+ Mecanismo de login
+ Período de espera, Toque, Vibração, Estranhos
+ Mostrar o conteúdo do app no alternador de apps e permitir que a tela seja capturada
+ Exigir vínculo do canal
+ A vinculação de canal pode detectar alguns ataques de máquina-no-meio
+ Notificações de digitação, Visto por último, Dispôr
+ Nome do host e porta, Tor
+ Nome do host e porta, Tor, Descoberta de Canais
+ Teclado
+ Notificações de engajamento
+ Aplicação
diff --git a/src/main/res/values-ro-rRO/strings.xml b/src/main/res/values-ro-rRO/strings.xml
index 8ff8f764a373126f8670d755140b4e1c8b92ed7f..11c3f9556800da3edfa5218dd40a8500b080d492 100644
--- a/src/main/res/values-ro-rRO/strings.xml
+++ b/src/main/res/values-ro-rRO/strings.xml
@@ -1103,4 +1103,7 @@
Apelul folosește receptorul.
Apelul folosește difuzorul. Atingeți pentru a trece la receptor.
Apelul folosește receptorul. Atingeți pentru a trece la difuzor.
+ XEP-0386: Bind 2
+ XEP-0388: Profil SASL extensibil
+ Mecanism autentificare
diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml
index 694c2bb2cec38d44cb6793509e1166ad3663f06b..31ad2a3af996cab00f41fcc4d1498a56a47ffad2 100644
--- a/src/main/res/values-ru/strings.xml
+++ b/src/main/res/values-ru/strings.xml
@@ -88,7 +88,7 @@
\n
\nПредупреждение: Данная операция не удалит копии этого файла, хранящиеся на других устройствах или серверах.
Выберите устройство
- Отправить сообщение чистым текстом
+ Отправить сообщение без шифрования
Сообщение
Сообщение для %s
v\\OMEMO-зашифр. сообщение
@@ -464,7 +464,7 @@
Устанавливает статус \"Не беспокоить\", когда устройство в беззвучном режиме
Не доступен в режиме вибрации
Устанавливает статус \"Не беспокоить\", когда устройство в режиме вибрации
- Имя хоста и Порт
+ Имя хоста и порт
Показывать расширенные настройки соединения при настройке аккаунта
xmpp.example.com
Авторизироваться с помощью сертификата
@@ -557,7 +557,7 @@
Короткий
Средний
Длинный
- Оповещать других об использовании
+ Последняя активность
Позволяет вашим контактам видеть, когда вы в последний раз использовали приложение
Приватность
Тема
@@ -1096,4 +1096,14 @@
Соединение с сервером
Приглашения от незнакомцев
Уведомления о взаимодействии
+ Способ входа
+ Звонок через наушники. Нажмите для переключения на динамик.
+ Звонок через динамик. Нажмите для переключения на наушники.
+ Видео не активно. Нажмите для включения.
+ Звонок через наушники.
+ Звонок через проводные наушники
+ Звонок через динамик.
+ Звонок через Bluetooth.
+ Сменить камеру
+ Видео активно. Нажмите для выключения.
diff --git a/src/quicksy/res/values-pt-rBR/strings.xml b/src/quicksy/res/values-pt-rBR/strings.xml
index 3d6b1549803405a728933f999db580b4fa4eb637..f2d1f192b638b1df6b10aed21e6d62b02f73145c 100644
--- a/src/quicksy/res/values-pt-rBR/strings.xml
+++ b/src/quicksy/res/values-pt-rBR/strings.xml
@@ -1,12 +1,12 @@
- Espaço de tempo em que o Quicksy ficará sem notificações, após alguma atividade em outro dispositivo.
- Ao enviar os stack traces você está colaborando com o desenvolvimento do Quicksy.
- Permite que todos os seus contatos saibam quando você usa o Quicksy.
+ Espaço de tempo em que o Quicksy ficará sem notificações, após notar alguma atividade em outro dispositivo
+ Ao enviar stack traces você ajuda com o desenvolvimento do Quicksy
+ Faça com que todos os seus contatos saibam quando você usa o Quicksy
Para continuar recebendo notificações, mesmo com a tela apagada, você precisa adicionar o Quicksy à lista de apps protegidos.
Imagem de perfil do Quicksy
Quicksy agora está disponível no seu país.
Não foi possível verificar a identidade do servidor.
Erro de segurança desconhecido.
Tempo esgotado ao tentar conectar ao servidor.
-
+
\ No newline at end of file