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