Merge tag '2.6.0' into develop
This commit is contained in:
commit
ec92294e41
|
@ -1,5 +1,11 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
### Version 2.6.0
|
||||||
|
* Introduce expert setting to perform channel discovery on local server instead of [search.jabber.network](https://search.jabber.network)
|
||||||
|
* Enable delivery check marks by default and remove setting
|
||||||
|
* Enable ‘Send button indicates status’ by default and remove setting
|
||||||
|
* Move Backup and Foreground Service settings to main screen
|
||||||
|
|
||||||
### Version 2.5.12
|
### Version 2.5.12
|
||||||
* Jingle file transfer fixes
|
* Jingle file transfer fixes
|
||||||
* Fixed OMEMO self healing (after backup restore) on servers w/o MAM
|
* Fixed OMEMO self healing (after backup restore) on servers w/o MAM
|
||||||
|
|
|
@ -93,11 +93,13 @@ build your apk file.
|
||||||
XMPP, like email, is a federated protocol, which means that there is not one company you can create an *official XMPP account* with. Instead there are hundreds, or even thousands, of providers out there. One of those providers is our very own [chat.sum7.eu](https://chat.sum7.eu). If you don’t like to use *chat.sum7.eu* use a web search engine of your choice to find another provider. Or maybe your university has one. Or you can run your own. Or ask a friend to run one. Once you've found one, you can use Conversations to create an account. Just select *register new account* on server within the create account dialog.
|
XMPP, like email, is a federated protocol, which means that there is not one company you can create an *official XMPP account* with. Instead there are hundreds, or even thousands, of providers out there. One of those providers is our very own [chat.sum7.eu](https://chat.sum7.eu). If you don’t like to use *chat.sum7.eu* use a web search engine of your choice to find another provider. Or maybe your university has one. Or you can run your own. Or ask a friend to run one. Once you've found one, you can use Conversations to create an account. Just select *register new account* on server within the create account dialog.
|
||||||
|
|
||||||
##### Running your own
|
##### Running your own
|
||||||
If you already have a server somewhere and are willing and able to put the necessary work in, one alternative-in the spirit of federation-is to run your own. We recommend either [Prosody](https://prosody.im/) or [ejabberd](https://www.ejabberd.im/). Both of which have their own strengths. Ejabberd is slightly more mature nowadays but Prosody is arguably easier to set up.
|
If you already have a server somewhere and are willing and able to put the necessary work in you can run your own XMPP server.
|
||||||
|
|
||||||
For Prosody you need a couple of so called [community modules](https://modules.prosody.im/) most of which are maintained by the same people that develop Prosody.
|
As of 2019 we recommend you use [ejabberd](https://ejabberd.im). The default configuration file already enables everything you need to pass the [Conversations Compliance Suite](https://compliance.conversations.im). Make sure your Linux distribution ships a fairly recent version.
|
||||||
|
|
||||||
If you pick ejabberd make sure you use the latest version. Linux Distributions might bundle some very old versions of it.
|
With a little bit of effort [Prosody](https://prosody.im) can be configured to support all necessary extensions as well. However you will have to rely on so called [Community Modules](https://modules.prosody.im/) of varying quality. Prosody can be interesting to people who like to modify their server and create / prototype own modules.
|
||||||
|
|
||||||
|
Performance wise - for small deployments - both ejabberd and Prosody should be fine.
|
||||||
|
|
||||||
#### Where can I set up a custom hostname / port
|
#### Where can I set up a custom hostname / port
|
||||||
Conversations will automatically look up the SRV records for your domain name
|
Conversations will automatically look up the SRV records for your domain name
|
||||||
|
|
|
@ -68,7 +68,7 @@ dependencies {
|
||||||
implementation "com.leinardi.android:speed-dial:2.0.1"
|
implementation "com.leinardi.android:speed-dial:2.0.1"
|
||||||
implementation 'com.squareup.retrofit2:retrofit:2.6.1'
|
implementation 'com.squareup.retrofit2:retrofit:2.6.1'
|
||||||
implementation 'com.squareup.retrofit2:converter-gson:2.6.1'
|
implementation 'com.squareup.retrofit2:converter-gson:2.6.1'
|
||||||
implementation 'com.squareup.okhttp3:okhttp:3.12.5'
|
implementation 'com.squareup.okhttp3:okhttp:3.12.6'
|
||||||
implementation 'com.google.guava:guava:27.1-android'
|
implementation 'com.google.guava:guava:27.1-android'
|
||||||
quicksyImplementation 'io.michaelrocks:libphonenumber-android:8.10.16'
|
quicksyImplementation 'io.michaelrocks:libphonenumber-android:8.10.16'
|
||||||
}
|
}
|
||||||
|
@ -84,8 +84,8 @@ android {
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
minSdkVersion 16
|
minSdkVersion 16
|
||||||
targetSdkVersion 25
|
targetSdkVersion 25
|
||||||
versionCode 346
|
versionCode 349
|
||||||
versionName "2.5.12"
|
versionName "2.6.0"
|
||||||
archivesBaseName += "-$versionName"
|
archivesBaseName += "-$versionName"
|
||||||
applicationId "eu.sum7.conversations"
|
applicationId "eu.sum7.conversations"
|
||||||
resValue "string", "applicationId", applicationId
|
resValue "string", "applicationId", applicationId
|
||||||
|
|
|
@ -90,7 +90,7 @@ public final class Config {
|
||||||
public static final int REFRESH_UI_INTERVAL = 500;
|
public static final int REFRESH_UI_INTERVAL = 500;
|
||||||
|
|
||||||
public static final int MAX_DISPLAY_MESSAGE_CHARS = 4096;
|
public static final int MAX_DISPLAY_MESSAGE_CHARS = 4096;
|
||||||
public static final int MAX_STORAGE_MESSAGE_CHARS = 1024 * 1024 * 1024;
|
public static final int MAX_STORAGE_MESSAGE_CHARS = 1024 * 1024; //1MB
|
||||||
|
|
||||||
public static final long MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000;
|
public static final long MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000;
|
||||||
|
|
||||||
|
|
|
@ -201,6 +201,9 @@ public class PgpDecryptionService {
|
||||||
if (fixedFile.getParentFile().mkdirs()) {
|
if (fixedFile.getParentFile().mkdirs()) {
|
||||||
Log.d(Config.LOGTAG,"created parent directories for "+fixedFile.getAbsolutePath());
|
Log.d(Config.LOGTAG,"created parent directories for "+fixedFile.getAbsolutePath());
|
||||||
}
|
}
|
||||||
|
synchronized (mXmppConnectionService.FILENAMES_TO_IGNORE_DELETION) {
|
||||||
|
mXmppConnectionService.FILENAMES_TO_IGNORE_DELETION.add(outputFile.getAbsolutePath());
|
||||||
|
}
|
||||||
if (outputFile.renameTo(fixedFile)) {
|
if (outputFile.renameTo(fixedFile)) {
|
||||||
Log.d(Config.LOGTAG, "renamed " + outputFile.getAbsolutePath() + " to " + fixedFile.getAbsolutePath());
|
Log.d(Config.LOGTAG, "renamed " + outputFile.getAbsolutePath() + " to " + fixedFile.getAbsolutePath());
|
||||||
message.setRelativeFilePath(path);
|
message.setRelativeFilePath(path);
|
||||||
|
|
|
@ -307,9 +307,13 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
|
||||||
synchronized (this.messages) {
|
synchronized (this.messages) {
|
||||||
for (int i = this.messages.size() - 1; i >= 0; --i) {
|
for (int i = this.messages.size() - 1; i >= 0; --i) {
|
||||||
final Message message = messages.get(i);
|
final Message message = messages.get(i);
|
||||||
|
final Jid mcp = message.getCounterpart();
|
||||||
|
if (mcp == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
final boolean counterpartMatch = mode == MODE_SINGLE ?
|
final boolean counterpartMatch = mode == MODE_SINGLE ?
|
||||||
counterpart.asBareJid().equals(message.getCounterpart().asBareJid()) :
|
counterpart.asBareJid().equals(mcp.asBareJid()) :
|
||||||
counterpart.equals(message.getCounterpart());
|
counterpart.equals(mcp);
|
||||||
if (counterpartMatch && ((message.getStatus() == Message.STATUS_RECEIVED) == received)
|
if (counterpartMatch && ((message.getStatus() == Message.STATUS_RECEIVED) == received)
|
||||||
&& (carbon == message.isCarbon() || received)) {
|
&& (carbon == message.isCarbon() || received)) {
|
||||||
final boolean idMatch = id.equals(message.getRemoteMsgId()) || message.remoteMsgIdMatchInEdit(id);
|
final boolean idMatch = id.equals(message.getRemoteMsgId()) || message.remoteMsgIdMatchInEdit(id);
|
||||||
|
|
|
@ -335,7 +335,7 @@ public class MucOptions {
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isContactInRoom(Contact contact) {
|
public boolean isContactInRoom(Contact contact) {
|
||||||
return findUserByRealJid(contact.getJid().asBareJid()) != null;
|
return contact != null && findUserByRealJid(contact.getJid().asBareJid()) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isUserInRoom(Jid jid) {
|
public boolean isUserInRoom(Jid jid) {
|
||||||
|
|
|
@ -0,0 +1,90 @@
|
||||||
|
package eu.siacs.conversations.entities;
|
||||||
|
|
||||||
|
import com.google.common.base.Objects;
|
||||||
|
import com.google.common.base.Strings;
|
||||||
|
import com.google.common.collect.ComparisonChain;
|
||||||
|
|
||||||
|
import java.util.Comparator;
|
||||||
|
|
||||||
|
import eu.siacs.conversations.services.AvatarService;
|
||||||
|
import eu.siacs.conversations.utils.LanguageUtils;
|
||||||
|
import eu.siacs.conversations.utils.UIHelper;
|
||||||
|
import rocks.xmpp.addr.Jid;
|
||||||
|
|
||||||
|
public class Room implements AvatarService.Avatarable, Comparable<Room> {
|
||||||
|
|
||||||
|
public String address;
|
||||||
|
public String name;
|
||||||
|
public String description;
|
||||||
|
public String language;
|
||||||
|
public int nusers;
|
||||||
|
|
||||||
|
public Room(String address, String name, String description, String language, int nusers) {
|
||||||
|
this.address = address;
|
||||||
|
this.name = name;
|
||||||
|
this.description = description;
|
||||||
|
this.language = language;
|
||||||
|
this.nusers = nusers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Room() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Jid getRoom() {
|
||||||
|
try {
|
||||||
|
return Jid.of(address);
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLanguage() {
|
||||||
|
return LanguageUtils.convert(language);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getAvatarBackgroundColor() {
|
||||||
|
Jid room = getRoom();
|
||||||
|
return UIHelper.getColorForName(room != null ? room.asBareJid().toEscapedString() : name);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o) return true;
|
||||||
|
if (o == null || getClass() != o.getClass()) return false;
|
||||||
|
Room room = (Room) o;
|
||||||
|
return Objects.equal(address, room.address) &&
|
||||||
|
Objects.equal(name, room.name) &&
|
||||||
|
Objects.equal(description, room.description);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hashCode(address, name, description);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public boolean contains(String needle) {
|
||||||
|
return Strings.nullToEmpty(name).contains(needle)
|
||||||
|
|| Strings.nullToEmpty(description).contains(needle)
|
||||||
|
|| Strings.nullToEmpty(address).contains(needle);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int compareTo(Room o) {
|
||||||
|
return ComparisonChain.start()
|
||||||
|
.compare(o.nusers, nusers)
|
||||||
|
.compare(Strings.nullToEmpty(name), Strings.nullToEmpty(o.name))
|
||||||
|
.compare(Strings.nullToEmpty(address), Strings.nullToEmpty(o.address))
|
||||||
|
.result();
|
||||||
|
}
|
||||||
|
}
|
|
@ -565,4 +565,18 @@ public class IqGenerator extends AbstractGenerator {
|
||||||
}
|
}
|
||||||
return packet;
|
return packet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IqPacket queryDiscoItems(Jid jid) {
|
||||||
|
IqPacket packet = new IqPacket(IqPacket.TYPE.GET);
|
||||||
|
packet.setTo(jid);
|
||||||
|
packet.addChild("query",Namespace.DISCO_ITEMS);
|
||||||
|
return packet;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IqPacket queryDiscoInfo(Jid jid) {
|
||||||
|
IqPacket packet = new IqPacket(IqPacket.TYPE.GET);
|
||||||
|
packet.setTo(jid);
|
||||||
|
packet.addChild("query",Namespace.DISCO_INFO);
|
||||||
|
return packet;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,16 +37,14 @@ public class MessageGenerator extends AbstractGenerator {
|
||||||
if (conversation.getMode() == Conversation.MODE_SINGLE) {
|
if (conversation.getMode() == Conversation.MODE_SINGLE) {
|
||||||
packet.setTo(message.getCounterpart());
|
packet.setTo(message.getCounterpart());
|
||||||
packet.setType(MessagePacket.TYPE_CHAT);
|
packet.setType(MessagePacket.TYPE_CHAT);
|
||||||
if (this.mXmppConnectionService.indicateReceived() && !isWithSelf) {
|
if (!isWithSelf) {
|
||||||
packet.addChild("request", "urn:xmpp:receipts");
|
packet.addChild("request", "urn:xmpp:receipts");
|
||||||
}
|
}
|
||||||
} else if (message.isPrivateMessage()) {
|
} else if (message.isPrivateMessage()) {
|
||||||
packet.setTo(message.getCounterpart());
|
packet.setTo(message.getCounterpart());
|
||||||
packet.setType(MessagePacket.TYPE_CHAT);
|
packet.setType(MessagePacket.TYPE_CHAT);
|
||||||
packet.addChild("x", "http://jabber.org/protocol/muc#user");
|
packet.addChild("x", "http://jabber.org/protocol/muc#user");
|
||||||
if (this.mXmppConnectionService.indicateReceived()) {
|
packet.addChild("request", "urn:xmpp:receipts");
|
||||||
packet.addChild("request", "urn:xmpp:receipts");
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
packet.setTo(message.getCounterpart().asBareJid());
|
packet.setTo(message.getCounterpart().asBareJid());
|
||||||
packet.setType(MessagePacket.TYPE_GROUPCHAT);
|
packet.setType(MessagePacket.TYPE_GROUPCHAT);
|
||||||
|
|
|
@ -1,20 +1,15 @@
|
||||||
package eu.siacs.conversations.http.services;
|
package eu.siacs.conversations.http.services;
|
||||||
|
|
||||||
import com.google.common.base.Objects;
|
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import eu.siacs.conversations.services.AvatarService;
|
import eu.siacs.conversations.entities.Room;
|
||||||
import eu.siacs.conversations.utils.LanguageUtils;
|
|
||||||
import eu.siacs.conversations.utils.UIHelper;
|
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
import retrofit2.http.Body;
|
import retrofit2.http.Body;
|
||||||
import retrofit2.http.GET;
|
import retrofit2.http.GET;
|
||||||
import retrofit2.http.POST;
|
import retrofit2.http.POST;
|
||||||
import retrofit2.http.Query;
|
import retrofit2.http.Query;
|
||||||
import rocks.xmpp.addr.Jid;
|
|
||||||
|
|
||||||
public interface MuclumbusService {
|
public interface MuclumbusService {
|
||||||
|
|
||||||
|
@ -31,55 +26,6 @@ public interface MuclumbusService {
|
||||||
public List<Room> items;
|
public List<Room> items;
|
||||||
}
|
}
|
||||||
|
|
||||||
class Room implements AvatarService.Avatarable {
|
|
||||||
|
|
||||||
public String address;
|
|
||||||
public String name;
|
|
||||||
public String description;
|
|
||||||
public String language;
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDescription() {
|
|
||||||
return description;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Jid getRoom() {
|
|
||||||
try {
|
|
||||||
return Jid.of(address);
|
|
||||||
} catch (IllegalArgumentException e) {
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLanguage() {
|
|
||||||
return LanguageUtils.convert(language);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getAvatarBackgroundColor() {
|
|
||||||
Jid room = getRoom();
|
|
||||||
return UIHelper.getColorForName(room != null ? room.asBareJid().toEscapedString() : name);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (this == o) return true;
|
|
||||||
if (o == null || getClass() != o.getClass()) return false;
|
|
||||||
Room room = (Room) o;
|
|
||||||
return Objects.equal(address, room.address) &&
|
|
||||||
Objects.equal(name, room.name) &&
|
|
||||||
Objects.equal(description, room.description);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
return Objects.hashCode(address, name, description);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class SearchRequest {
|
class SearchRequest {
|
||||||
|
|
||||||
public final Set<String> keywords;
|
public final Set<String> keywords;
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package eu.siacs.conversations.parser;
|
package eu.siacs.conversations.parser;
|
||||||
|
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
|
import android.text.TextUtils;
|
||||||
import android.util.Base64;
|
import android.util.Base64;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
|
@ -27,12 +28,15 @@ import eu.siacs.conversations.crypto.axolotl.AxolotlService;
|
||||||
import eu.siacs.conversations.entities.Account;
|
import eu.siacs.conversations.entities.Account;
|
||||||
import eu.siacs.conversations.entities.Contact;
|
import eu.siacs.conversations.entities.Contact;
|
||||||
import eu.siacs.conversations.entities.Conversation;
|
import eu.siacs.conversations.entities.Conversation;
|
||||||
|
import eu.siacs.conversations.entities.Room;
|
||||||
|
import eu.siacs.conversations.services.ChannelDiscoveryService;
|
||||||
import eu.siacs.conversations.services.XmppConnectionService;
|
import eu.siacs.conversations.services.XmppConnectionService;
|
||||||
import eu.siacs.conversations.xml.Namespace;
|
import eu.siacs.conversations.xml.Namespace;
|
||||||
import eu.siacs.conversations.xml.Element;
|
import eu.siacs.conversations.xml.Element;
|
||||||
import eu.siacs.conversations.xmpp.InvalidJid;
|
import eu.siacs.conversations.xmpp.InvalidJid;
|
||||||
import eu.siacs.conversations.xmpp.OnIqPacketReceived;
|
import eu.siacs.conversations.xmpp.OnIqPacketReceived;
|
||||||
import eu.siacs.conversations.xmpp.OnUpdateBlocklist;
|
import eu.siacs.conversations.xmpp.OnUpdateBlocklist;
|
||||||
|
import eu.siacs.conversations.xmpp.forms.Data;
|
||||||
import eu.siacs.conversations.xmpp.stanzas.IqPacket;
|
import eu.siacs.conversations.xmpp.stanzas.IqPacket;
|
||||||
import rocks.xmpp.addr.Jid;
|
import rocks.xmpp.addr.Jid;
|
||||||
|
|
||||||
|
@ -417,4 +421,55 @@ public class IqParser extends AbstractParser implements OnIqPacketReceived {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static List<Jid> items(IqPacket packet) {
|
||||||
|
ArrayList<Jid> items = new ArrayList<>();
|
||||||
|
final Element query = packet.findChild("query", Namespace.DISCO_ITEMS);
|
||||||
|
if (query == null) {
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
for(Element child : query.getChildren()) {
|
||||||
|
if ("item".equals(child.getName())) {
|
||||||
|
Jid jid = child.getAttributeAsJid("jid");
|
||||||
|
if (jid != null) {
|
||||||
|
items.add(jid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return items;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Room parseRoom(IqPacket packet) {
|
||||||
|
final Element query = packet.findChild("query", Namespace.DISCO_INFO);
|
||||||
|
if(query == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
final Element x = query.findChild("x");
|
||||||
|
if (x == null) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
final Element identity = query.findChild("identity");
|
||||||
|
Data data = Data.parse(x);
|
||||||
|
String address = packet.getFrom().toEscapedString();
|
||||||
|
String name = identity == null ? null : identity.getAttribute("name");
|
||||||
|
String roomName = data.getValue("muc#roomconfig_roomname");;
|
||||||
|
String description = data.getValue("muc#roominfo_description");
|
||||||
|
String language = data.getValue("muc#roominfo_lang");
|
||||||
|
String occupants = data.getValue("muc#roominfo_occupants");
|
||||||
|
int nusers;
|
||||||
|
try {
|
||||||
|
nusers = occupants == null ? 0 : Integer.parseInt(occupants);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
nusers = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return new Room(
|
||||||
|
address,
|
||||||
|
TextUtils.isEmpty(roomName) ? name : roomName,
|
||||||
|
description,
|
||||||
|
language,
|
||||||
|
nusers
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -827,6 +827,9 @@ public class MessageParser extends AbstractParser implements OnMessagePacketRece
|
||||||
final Jid sender = InvalidJid.getNullForInvalid(displayed.getAttributeAsJid("sender"));
|
final Jid sender = InvalidJid.getNullForInvalid(displayed.getAttributeAsJid("sender"));
|
||||||
if (packet.fromAccount(account) && !selfAddressed) {
|
if (packet.fromAccount(account) && !selfAddressed) {
|
||||||
dismissNotification(account, counterpart, query);
|
dismissNotification(account, counterpart, query);
|
||||||
|
if (query == null) {
|
||||||
|
activateGracePeriod(account);
|
||||||
|
}
|
||||||
} else if (isTypeGroupChat) {
|
} else if (isTypeGroupChat) {
|
||||||
Conversation conversation = mXmppConnectionService.find(account, counterpart.asBareJid());
|
Conversation conversation = mXmppConnectionService.find(account, counterpart.asBareJid());
|
||||||
if (conversation != null && id != null && sender != null) {
|
if (conversation != null && id != null && sender != null) {
|
||||||
|
|
|
@ -356,7 +356,8 @@ public class FileBackend {
|
||||||
if (stream != null) {
|
if (stream != null) {
|
||||||
try {
|
try {
|
||||||
stream.close();
|
stream.close();
|
||||||
} catch (IOException e) {
|
} catch (Exception e) {
|
||||||
|
Log.d(Config.LOGTAG, "unable to close stream", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -366,6 +367,7 @@ public class FileBackend {
|
||||||
try {
|
try {
|
||||||
socket.close();
|
socket.close();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
Log.d(Config.LOGTAG, "unable to close socket", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -375,6 +377,7 @@ public class FileBackend {
|
||||||
try {
|
try {
|
||||||
socket.close();
|
socket.close();
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
|
Log.d(Config.LOGTAG, "unable to close server socket", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,6 +38,7 @@ import eu.siacs.conversations.entities.ListItem;
|
||||||
import eu.siacs.conversations.entities.Message;
|
import eu.siacs.conversations.entities.Message;
|
||||||
import eu.siacs.conversations.entities.MucOptions;
|
import eu.siacs.conversations.entities.MucOptions;
|
||||||
import eu.siacs.conversations.entities.RawBlockable;
|
import eu.siacs.conversations.entities.RawBlockable;
|
||||||
|
import eu.siacs.conversations.entities.Room;
|
||||||
import eu.siacs.conversations.http.services.MuclumbusService;
|
import eu.siacs.conversations.http.services.MuclumbusService;
|
||||||
import eu.siacs.conversations.utils.UIHelper;
|
import eu.siacs.conversations.utils.UIHelper;
|
||||||
import eu.siacs.conversations.xmpp.OnAdvancedStreamFeaturesLoaded;
|
import eu.siacs.conversations.xmpp.OnAdvancedStreamFeaturesLoaded;
|
||||||
|
@ -81,14 +82,14 @@ public class AvatarService implements OnAdvancedStreamFeaturesLoaded {
|
||||||
return get((ListItem) avatarable, size, cachedOnly);
|
return get((ListItem) avatarable, size, cachedOnly);
|
||||||
} else if (avatarable instanceof MucOptions.User) {
|
} else if (avatarable instanceof MucOptions.User) {
|
||||||
return get((MucOptions.User) avatarable, size, cachedOnly);
|
return get((MucOptions.User) avatarable, size, cachedOnly);
|
||||||
} else if (avatarable instanceof MuclumbusService.Room) {
|
} else if (avatarable instanceof Room) {
|
||||||
return get((MuclumbusService.Room) avatarable, size, cachedOnly);
|
return get((Room) avatarable, size, cachedOnly);
|
||||||
}
|
}
|
||||||
throw new AssertionError("AvatarService does not know how to generate avatar from "+avatarable.getClass().getName());
|
throw new AssertionError("AvatarService does not know how to generate avatar from "+avatarable.getClass().getName());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Bitmap get(final MuclumbusService.Room result, final int size, boolean cacheOnly) {
|
private Bitmap get(final Room result, final int size, boolean cacheOnly) {
|
||||||
final Jid room = result.getRoom();
|
final Jid room = result.getRoom();
|
||||||
Conversation conversation = room != null ? mXmppConnectionService.findFirstMuc(room) : null;
|
Conversation conversation = room != null ? mXmppConnectionService.findFirstMuc(room) : null;
|
||||||
if (conversation != null) {
|
if (conversation != null) {
|
||||||
|
|
|
@ -7,14 +7,27 @@ import com.google.common.cache.Cache;
|
||||||
import com.google.common.cache.CacheBuilder;
|
import com.google.common.cache.CacheBuilder;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
import eu.siacs.conversations.Config;
|
import eu.siacs.conversations.Config;
|
||||||
|
import eu.siacs.conversations.entities.Account;
|
||||||
|
import eu.siacs.conversations.entities.Room;
|
||||||
import eu.siacs.conversations.http.HttpConnectionManager;
|
import eu.siacs.conversations.http.HttpConnectionManager;
|
||||||
import eu.siacs.conversations.http.services.MuclumbusService;
|
import eu.siacs.conversations.http.services.MuclumbusService;
|
||||||
|
import eu.siacs.conversations.parser.IqParser;
|
||||||
|
import eu.siacs.conversations.utils.LanguageUtils;
|
||||||
|
import eu.siacs.conversations.utils.UIHelper;
|
||||||
|
import eu.siacs.conversations.xmpp.OnIqPacketReceived;
|
||||||
|
import eu.siacs.conversations.xmpp.XmppConnection;
|
||||||
|
import eu.siacs.conversations.xmpp.stanzas.IqPacket;
|
||||||
import okhttp3.OkHttpClient;
|
import okhttp3.OkHttpClient;
|
||||||
import okhttp3.ResponseBody;
|
import okhttp3.ResponseBody;
|
||||||
import retrofit2.Call;
|
import retrofit2.Call;
|
||||||
|
@ -22,6 +35,7 @@ import retrofit2.Callback;
|
||||||
import retrofit2.Response;
|
import retrofit2.Response;
|
||||||
import retrofit2.Retrofit;
|
import retrofit2.Retrofit;
|
||||||
import retrofit2.converter.gson.GsonConverterFactory;
|
import retrofit2.converter.gson.GsonConverterFactory;
|
||||||
|
import rocks.xmpp.addr.Jid;
|
||||||
|
|
||||||
public class ChannelDiscoveryService {
|
public class ChannelDiscoveryService {
|
||||||
|
|
||||||
|
@ -30,7 +44,7 @@ public class ChannelDiscoveryService {
|
||||||
|
|
||||||
private MuclumbusService muclumbusService;
|
private MuclumbusService muclumbusService;
|
||||||
|
|
||||||
private final Cache<String, List<MuclumbusService.Room>> cache;
|
private final Cache<String, List<Room>> cache;
|
||||||
|
|
||||||
ChannelDiscoveryService(XmppConnectionService service) {
|
ChannelDiscoveryService(XmppConnectionService service) {
|
||||||
this.service = service;
|
this.service = service;
|
||||||
|
@ -56,21 +70,28 @@ public class ChannelDiscoveryService {
|
||||||
this.muclumbusService = retrofit.create(MuclumbusService.class);
|
this.muclumbusService = retrofit.create(MuclumbusService.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
void discover(String query, OnChannelSearchResultsFound onChannelSearchResultsFound) {
|
void cleanCache() {
|
||||||
final boolean all = query == null || query.trim().isEmpty();
|
cache.invalidateAll();
|
||||||
List<MuclumbusService.Room> result = cache.getIfPresent(all ? "" : query);
|
}
|
||||||
|
|
||||||
|
void discover(@NonNull final String query, Method method, OnChannelSearchResultsFound onChannelSearchResultsFound) {
|
||||||
|
List<Room> result = cache.getIfPresent(key(method, query));
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
onChannelSearchResultsFound.onChannelSearchResultsFound(result);
|
onChannelSearchResultsFound.onChannelSearchResultsFound(result);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (all) {
|
if (method == Method.LOCAL_SERVER) {
|
||||||
discoverChannels(onChannelSearchResultsFound);
|
discoverChannelsLocalServers(query, onChannelSearchResultsFound);
|
||||||
} else {
|
} else {
|
||||||
discoverChannels(query, onChannelSearchResultsFound);
|
if (query.isEmpty()) {
|
||||||
|
discoverChannelsJabberNetwork(onChannelSearchResultsFound);
|
||||||
|
} else {
|
||||||
|
discoverChannelsJabberNetwork(query, onChannelSearchResultsFound);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void discoverChannels(OnChannelSearchResultsFound listener) {
|
private void discoverChannelsJabberNetwork(OnChannelSearchResultsFound listener) {
|
||||||
Call<MuclumbusService.Rooms> call = muclumbusService.getRooms(1);
|
Call<MuclumbusService.Rooms> call = muclumbusService.getRooms(1);
|
||||||
try {
|
try {
|
||||||
call.enqueue(new Callback<MuclumbusService.Rooms>() {
|
call.enqueue(new Callback<MuclumbusService.Rooms>() {
|
||||||
|
@ -82,7 +103,7 @@ public class ChannelDiscoveryService {
|
||||||
logError(response);
|
logError(response);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
cache.put("", body.items);
|
cache.put(key(Method.JABBER_NETWORK, ""), body.items);
|
||||||
listener.onChannelSearchResultsFound(body.items);
|
listener.onChannelSearchResultsFound(body.items);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,7 +118,7 @@ public class ChannelDiscoveryService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void discoverChannels(final String query, OnChannelSearchResultsFound listener) {
|
private void discoverChannelsJabberNetwork(final String query, OnChannelSearchResultsFound listener) {
|
||||||
MuclumbusService.SearchRequest searchRequest = new MuclumbusService.SearchRequest(query);
|
MuclumbusService.SearchRequest searchRequest = new MuclumbusService.SearchRequest(query);
|
||||||
Call<MuclumbusService.SearchResult> searchResultCall = muclumbusService.search(searchRequest);
|
Call<MuclumbusService.SearchResult> searchResultCall = muclumbusService.search(searchRequest);
|
||||||
|
|
||||||
|
@ -110,7 +131,7 @@ public class ChannelDiscoveryService {
|
||||||
logError(response);
|
logError(response);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
cache.put(query, body.result.items);
|
cache.put(key(Method.JABBER_NETWORK, query), body.result.items);
|
||||||
listener.onChannelSearchResultsFound(body.result.items);
|
listener.onChannelSearchResultsFound(body.result.items);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -122,6 +143,102 @@ public class ChannelDiscoveryService {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void discoverChannelsLocalServers(final String query, final OnChannelSearchResultsFound listener) {
|
||||||
|
final Map<Jid, Account> localMucService = getLocalMucServices();
|
||||||
|
Log.d(Config.LOGTAG, "checking with " + localMucService.size() + " muc services");
|
||||||
|
if (localMucService.size() == 0) {
|
||||||
|
listener.onChannelSearchResultsFound(Collections.emptyList());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!query.isEmpty()) {
|
||||||
|
final List<Room> cached = cache.getIfPresent(key(Method.LOCAL_SERVER, ""));
|
||||||
|
if (cached != null) {
|
||||||
|
final List<Room> results = copyMatching(cached, query);
|
||||||
|
cache.put(key(Method.LOCAL_SERVER, query), results);
|
||||||
|
listener.onChannelSearchResultsFound(results);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
final AtomicInteger queriesInFlight = new AtomicInteger();
|
||||||
|
final List<Room> rooms = new ArrayList<>();
|
||||||
|
for (Map.Entry<Jid, Account> entry : localMucService.entrySet()) {
|
||||||
|
IqPacket itemsRequest = service.getIqGenerator().queryDiscoItems(entry.getKey());
|
||||||
|
queriesInFlight.incrementAndGet();
|
||||||
|
service.sendIqPacket(entry.getValue(), itemsRequest, (account, itemsResponse) -> {
|
||||||
|
if (itemsResponse.getType() == IqPacket.TYPE.RESULT) {
|
||||||
|
final List<Jid> items = IqParser.items(itemsResponse);
|
||||||
|
for (Jid item : items) {
|
||||||
|
IqPacket infoRequest = service.getIqGenerator().queryDiscoInfo(item);
|
||||||
|
queriesInFlight.incrementAndGet();
|
||||||
|
service.sendIqPacket(account, infoRequest, new OnIqPacketReceived() {
|
||||||
|
@Override
|
||||||
|
public void onIqPacketReceived(Account account, IqPacket infoResponse) {
|
||||||
|
if (infoResponse.getType() == IqPacket.TYPE.RESULT) {
|
||||||
|
final Room room = IqParser.parseRoom(infoResponse);
|
||||||
|
if (room != null) {
|
||||||
|
rooms.add(room);
|
||||||
|
}
|
||||||
|
if (queriesInFlight.decrementAndGet() <= 0) {
|
||||||
|
finishDiscoSearch(rooms, query, listener);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
queriesInFlight.decrementAndGet();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (queriesInFlight.decrementAndGet() <= 0) {
|
||||||
|
finishDiscoSearch(rooms, query, listener);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void finishDiscoSearch(List<Room> rooms, String query, OnChannelSearchResultsFound listener) {
|
||||||
|
Collections.sort(rooms);
|
||||||
|
cache.put(key(Method.LOCAL_SERVER, ""), rooms);
|
||||||
|
if (query.isEmpty()) {
|
||||||
|
listener.onChannelSearchResultsFound(rooms);
|
||||||
|
} else {
|
||||||
|
List<Room> results = copyMatching(rooms, query);
|
||||||
|
cache.put(key(Method.LOCAL_SERVER, query), results);
|
||||||
|
listener.onChannelSearchResultsFound(rooms);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<Room> copyMatching(List<Room> haystack, String needle) {
|
||||||
|
ArrayList<Room> result = new ArrayList<>();
|
||||||
|
for (Room room : haystack) {
|
||||||
|
if (room.contains(needle)) {
|
||||||
|
result.add(room);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Map<Jid, Account> getLocalMucServices() {
|
||||||
|
final HashMap<Jid, Account> localMucServices = new HashMap<>();
|
||||||
|
for (Account account : service.getAccounts()) {
|
||||||
|
if (account.isEnabled()) {
|
||||||
|
final XmppConnection xmppConnection = account.getXmppConnection();
|
||||||
|
if (xmppConnection == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
for (final String mucService : xmppConnection.getMucServers()) {
|
||||||
|
Jid jid = Jid.of(mucService);
|
||||||
|
if (!localMucServices.containsKey(jid)) {
|
||||||
|
localMucServices.put(jid, account);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return localMucServices;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String key(Method method, String query) {
|
||||||
|
return String.format("%s\00%s", method, query);
|
||||||
|
}
|
||||||
|
|
||||||
private static void logError(final Response response) {
|
private static void logError(final Response response) {
|
||||||
final ResponseBody errorBody = response.errorBody();
|
final ResponseBody errorBody = response.errorBody();
|
||||||
Log.d(Config.LOGTAG, "code from muclumbus=" + response.code());
|
Log.d(Config.LOGTAG, "code from muclumbus=" + response.code());
|
||||||
|
@ -129,13 +246,18 @@ public class ChannelDiscoveryService {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
Log.d(Config.LOGTAG,"error body="+errorBody.string());
|
Log.d(Config.LOGTAG, "error body=" + errorBody.string());
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
//ignored
|
//ignored
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface OnChannelSearchResultsFound {
|
public interface OnChannelSearchResultsFound {
|
||||||
void onChannelSearchResultsFound(List<MuclumbusService.Room> results);
|
void onChannelSearchResultsFound(List<Room> results);
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum Method {
|
||||||
|
JABBER_NETWORK,
|
||||||
|
LOCAL_SERVER
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -442,6 +442,8 @@ public class NotificationService {
|
||||||
} catch (SecurityException e) {
|
} catch (SecurityException e) {
|
||||||
Log.d(Config.LOGTAG, "unable to use custom notification sound " + uri.toString());
|
Log.d(Config.LOGTAG, "unable to use custom notification sound " + uri.toString());
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
mBuilder.setLocalOnly(true);
|
||||||
}
|
}
|
||||||
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
|
||||||
mBuilder.setCategory(Notification.CATEGORY_MESSAGE);
|
mBuilder.setCategory(Notification.CATEGORY_MESSAGE);
|
||||||
|
@ -563,14 +565,16 @@ public class NotificationService {
|
||||||
if (addedActionsCount < 3) {
|
if (addedActionsCount < 3) {
|
||||||
final Message firstLocationMessage = getFirstLocationMessage(messages);
|
final Message firstLocationMessage = getFirstLocationMessage(messages);
|
||||||
if (firstLocationMessage != null) {
|
if (firstLocationMessage != null) {
|
||||||
String label = mXmppConnectionService.getResources().getString(R.string.show_location);
|
final PendingIntent pendingShowLocationIntent = createShowLocationIntent(firstLocationMessage);
|
||||||
PendingIntent pendingShowLocationIntent = createShowLocationIntent(firstLocationMessage);
|
if (pendingShowLocationIntent != null) {
|
||||||
NotificationCompat.Action locationAction = new NotificationCompat.Action.Builder(
|
final String label = mXmppConnectionService.getResources().getString(R.string.show_location);
|
||||||
R.drawable.ic_room_white_24dp,
|
NotificationCompat.Action locationAction = new NotificationCompat.Action.Builder(
|
||||||
label,
|
R.drawable.ic_room_white_24dp,
|
||||||
pendingShowLocationIntent).build();
|
label,
|
||||||
mBuilder.addAction(locationAction);
|
pendingShowLocationIntent).build();
|
||||||
++addedActionsCount;
|
mBuilder.addAction(locationAction);
|
||||||
|
++addedActionsCount;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (addedActionsCount < 3) {
|
if (addedActionsCount < 3) {
|
||||||
|
@ -766,7 +770,7 @@ public class NotificationService {
|
||||||
return PendingIntent.getActivity(mXmppConnectionService, generateRequestCode(message.getConversation(), 18), intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
return PendingIntent.getActivity(mXmppConnectionService, generateRequestCode(message.getConversation(), 18), intent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return createOpenConversationsIntent();
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private PendingIntent createContentIntent(final String conversationUuid, final String downloadMessageUuid) {
|
private PendingIntent createContentIntent(final String conversationUuid, final String downloadMessageUuid) {
|
||||||
|
@ -906,7 +910,10 @@ public class NotificationService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mBuilder.setContentText(mXmppConnectionService.getString(R.string.connected_accounts, connected, enabled));
|
mBuilder.setContentText(mXmppConnectionService.getString(R.string.connected_accounts, connected, enabled));
|
||||||
mBuilder.setContentIntent(createOpenConversationsIntent());
|
final PendingIntent openIntent = createOpenConversationsIntent();
|
||||||
|
if (openIntent != null) {
|
||||||
|
mBuilder.setContentIntent(openIntent);
|
||||||
|
}
|
||||||
mBuilder.setWhen(0);
|
mBuilder.setWhen(0);
|
||||||
mBuilder.setPriority(Notification.PRIORITY_MIN);
|
mBuilder.setPriority(Notification.PRIORITY_MIN);
|
||||||
mBuilder.setSmallIcon(connected > 0 ? R.drawable.ic_link_white_24dp : R.drawable.ic_link_off_white_24dp);
|
mBuilder.setSmallIcon(connected > 0 ? R.drawable.ic_link_white_24dp : R.drawable.ic_link_off_white_24dp);
|
||||||
|
@ -920,7 +927,11 @@ public class NotificationService {
|
||||||
}
|
}
|
||||||
|
|
||||||
private PendingIntent createOpenConversationsIntent() {
|
private PendingIntent createOpenConversationsIntent() {
|
||||||
return PendingIntent.getActivity(mXmppConnectionService, 0, new Intent(mXmppConnectionService, ConversationsActivity.class), 0);
|
try {
|
||||||
|
return PendingIntent.getActivity(mXmppConnectionService, 0, new Intent(mXmppConnectionService, ConversationsActivity.class), 0);
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void updateErrorNotification() {
|
void updateErrorNotification() {
|
||||||
|
|
|
@ -34,6 +34,7 @@ import android.provider.ContactsContract;
|
||||||
import android.security.KeyChain;
|
import android.security.KeyChain;
|
||||||
import android.support.annotation.BoolRes;
|
import android.support.annotation.BoolRes;
|
||||||
import android.support.annotation.IntegerRes;
|
import android.support.annotation.IntegerRes;
|
||||||
|
import android.support.annotation.NonNull;
|
||||||
import android.support.v4.app.RemoteInput;
|
import android.support.v4.app.RemoteInput;
|
||||||
import android.support.v4.content.ContextCompat;
|
import android.support.v4.content.ContextCompat;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
@ -42,6 +43,8 @@ import android.util.Log;
|
||||||
import android.util.LruCache;
|
import android.util.LruCache;
|
||||||
import android.util.Pair;
|
import android.util.Pair;
|
||||||
|
|
||||||
|
import com.google.common.base.Strings;
|
||||||
|
|
||||||
import org.conscrypt.Conscrypt;
|
import org.conscrypt.Conscrypt;
|
||||||
import org.openintents.openpgp.IOpenPgpService2;
|
import org.openintents.openpgp.IOpenPgpService2;
|
||||||
import org.openintents.openpgp.util.OpenPgpApi;
|
import org.openintents.openpgp.util.OpenPgpApi;
|
||||||
|
@ -277,6 +280,9 @@ public class XmppConnectionService extends Service {
|
||||||
private final Object LISTENER_LOCK = new Object();
|
private final Object LISTENER_LOCK = new Object();
|
||||||
|
|
||||||
|
|
||||||
|
public final Set<String> FILENAMES_TO_IGNORE_DELETION = new HashSet<>();
|
||||||
|
|
||||||
|
|
||||||
private final OnBindListener mOnBindListener = new OnBindListener() {
|
private final OnBindListener mOnBindListener = new OnBindListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -854,8 +860,8 @@ public class XmppConnectionService extends Service {
|
||||||
mChannelDiscoveryService.initializeMuclumbusService();
|
mChannelDiscoveryService.initializeMuclumbusService();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void discoverChannels(String query, ChannelDiscoveryService.OnChannelSearchResultsFound onChannelSearchResultsFound) {
|
public void discoverChannels(String query, ChannelDiscoveryService.Method method, ChannelDiscoveryService.OnChannelSearchResultsFound onChannelSearchResultsFound) {
|
||||||
mChannelDiscoveryService.discover(query, onChannelSearchResultsFound);
|
mChannelDiscoveryService.discover(Strings.nullToEmpty(query).trim(), method, onChannelSearchResultsFound);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isDataSaverDisabled() {
|
public boolean isDataSaverDisabled() {
|
||||||
|
@ -1831,6 +1837,12 @@ public class XmppConnectionService extends Service {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void markFileDeleted(final String path) {
|
private void markFileDeleted(final String path) {
|
||||||
|
synchronized (FILENAMES_TO_IGNORE_DELETION) {
|
||||||
|
if (FILENAMES_TO_IGNORE_DELETION.remove(path)) {
|
||||||
|
Log.d(Config.LOGTAG,"ignored deletion of "+path);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
final File file = new File(path);
|
final File file = new File(path);
|
||||||
final boolean isInternalFile = fileBackend.isInternalFile(file);
|
final boolean isInternalFile = fileBackend.isInternalFile(file);
|
||||||
final List<String> uuids = databaseBackend.markFileAsDeleted(file, isInternalFile);
|
final List<String> uuids = databaseBackend.markFileAsDeleted(file, isInternalFile);
|
||||||
|
@ -1951,9 +1963,13 @@ public class XmppConnectionService extends Service {
|
||||||
* This will find all conferences with the contact as member and also the conference that is the contact (that 'fake' contact is used to store the avatar)
|
* This will find all conferences with the contact as member and also the conference that is the contact (that 'fake' contact is used to store the avatar)
|
||||||
*/
|
*/
|
||||||
public List<Conversation> findAllConferencesWith(Contact contact) {
|
public List<Conversation> findAllConferencesWith(Contact contact) {
|
||||||
ArrayList<Conversation> results = new ArrayList<>();
|
final ArrayList<Conversation> results = new ArrayList<>();
|
||||||
for (final Conversation c : conversations) {
|
for (final Conversation c : conversations) {
|
||||||
if (c.getMode() == Conversation.MODE_MULTI && (c.getJid().asBareJid().equals(contact.getJid().asBareJid()) || c.getMucOptions().isContactInRoom(contact))) {
|
if (c.getMode() != Conversation.MODE_MULTI) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
final MucOptions mucOptions = c.getMucOptions();
|
||||||
|
if (c.getJid().asBareJid().equals(contact.getJid().asBareJid()) || (mucOptions != null && mucOptions.isContactInRoom(contact))) {
|
||||||
results.add(c);
|
results.add(c);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2231,6 +2247,7 @@ public class XmppConnectionService extends Service {
|
||||||
getNotificationService().updateErrorNotification();
|
getNotificationService().updateErrorNotification();
|
||||||
toggleForegroundService();
|
toggleForegroundService();
|
||||||
syncEnabledAccountSetting();
|
syncEnabledAccountSetting();
|
||||||
|
mChannelDiscoveryService.cleanCache();
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
|
@ -3073,9 +3090,7 @@ public class XmppConnectionService extends Service {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void fetchConferenceConfiguration(final Conversation conversation, final OnConferenceConfigurationFetched callback) {
|
public void fetchConferenceConfiguration(final Conversation conversation, final OnConferenceConfigurationFetched callback) {
|
||||||
IqPacket request = new IqPacket(IqPacket.TYPE.GET);
|
IqPacket request = mIqGenerator.queryDiscoInfo(conversation.getJid().asBareJid());
|
||||||
request.setTo(conversation.getJid().asBareJid());
|
|
||||||
request.query("http://jabber.org/protocol/disco#info");
|
|
||||||
sendIqPacket(conversation.getAccount(), request, new OnIqPacketReceived() {
|
sendIqPacket(conversation.getAccount(), request, new OnIqPacketReceived() {
|
||||||
@Override
|
@Override
|
||||||
public void onIqPacketReceived(Account account, IqPacket packet) {
|
public void onIqPacketReceived(Account account, IqPacket packet) {
|
||||||
|
@ -3891,10 +3906,6 @@ public class XmppConnectionService extends Service {
|
||||||
return getBooleanPreference("autojoin", R.bool.autojoin);
|
return getBooleanPreference("autojoin", R.bool.autojoin);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean indicateReceived() {
|
|
||||||
return getBooleanPreference("indicate_received", R.bool.indicate_received);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean useTorToConnect() {
|
public boolean useTorToConnect() {
|
||||||
return QuickConversationsService.isConversations() && getBooleanPreference("use_tor", R.bool.use_tor);
|
return QuickConversationsService.isConversations() && getBooleanPreference("use_tor", R.bool.use_tor);
|
||||||
}
|
}
|
||||||
|
@ -4424,7 +4435,7 @@ public class XmppConnectionService extends Service {
|
||||||
request.setTo(jid);
|
request.setTo(jid);
|
||||||
final String node = presence.getNode();
|
final String node = presence.getNode();
|
||||||
final String ver = presence.getVer();
|
final String ver = presence.getVer();
|
||||||
final Element query = request.query("http://jabber.org/protocol/disco#info");
|
final Element query = request.query(Namespace.DISCO_INFO);
|
||||||
if (node != null && ver != null) {
|
if (node != null && ver != null) {
|
||||||
query.setAttribute("node", node + "#" + ver);
|
query.setAttribute("node", node + "#" + ver);
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,8 +7,10 @@ import android.content.SharedPreferences;
|
||||||
import android.databinding.DataBindingUtil;
|
import android.databinding.DataBindingUtil;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
import android.preference.PreferenceManager;
|
||||||
import android.support.v7.widget.Toolbar;
|
import android.support.v7.widget.Toolbar;
|
||||||
import android.text.Html;
|
import android.text.Html;
|
||||||
|
import android.text.method.LinkMovementMethod;
|
||||||
import android.view.KeyEvent;
|
import android.view.KeyEvent;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
|
@ -27,11 +29,13 @@ import eu.siacs.conversations.databinding.ActivityChannelDiscoveryBinding;
|
||||||
import eu.siacs.conversations.entities.Account;
|
import eu.siacs.conversations.entities.Account;
|
||||||
import eu.siacs.conversations.entities.Bookmark;
|
import eu.siacs.conversations.entities.Bookmark;
|
||||||
import eu.siacs.conversations.entities.Conversation;
|
import eu.siacs.conversations.entities.Conversation;
|
||||||
import eu.siacs.conversations.http.services.MuclumbusService;
|
import eu.siacs.conversations.entities.Room;
|
||||||
import eu.siacs.conversations.services.ChannelDiscoveryService;
|
import eu.siacs.conversations.services.ChannelDiscoveryService;
|
||||||
|
import eu.siacs.conversations.services.QuickConversationsService;
|
||||||
import eu.siacs.conversations.ui.adapter.ChannelSearchResultAdapter;
|
import eu.siacs.conversations.ui.adapter.ChannelSearchResultAdapter;
|
||||||
import eu.siacs.conversations.ui.util.PendingItem;
|
import eu.siacs.conversations.ui.util.PendingItem;
|
||||||
import eu.siacs.conversations.ui.util.SoftKeyboardUtils;
|
import eu.siacs.conversations.ui.util.SoftKeyboardUtils;
|
||||||
|
import eu.siacs.conversations.ui.util.StyledAttributes;
|
||||||
import eu.siacs.conversations.utils.AccountUtils;
|
import eu.siacs.conversations.utils.AccountUtils;
|
||||||
import rocks.xmpp.addr.Jid;
|
import rocks.xmpp.addr.Jid;
|
||||||
|
|
||||||
|
@ -45,6 +49,8 @@ public class ChannelDiscoveryActivity extends XmppActivity implements MenuItem.O
|
||||||
private MenuItem mMenuSearchView;
|
private MenuItem mMenuSearchView;
|
||||||
private EditText mSearchEditText;
|
private EditText mSearchEditText;
|
||||||
|
|
||||||
|
private ChannelDiscoveryService.Method method = ChannelDiscoveryService.Method.LOCAL_SERVER;
|
||||||
|
|
||||||
private boolean optedIn = false;
|
private boolean optedIn = false;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -54,14 +60,15 @@ public class ChannelDiscoveryActivity extends XmppActivity implements MenuItem.O
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
void onBackendConnected() {
|
void onBackendConnected() {
|
||||||
if (optedIn) {
|
if (optedIn || method == ChannelDiscoveryService.Method.LOCAL_SERVER) {
|
||||||
String query;
|
final String query;
|
||||||
if (mMenuSearchView != null && mMenuSearchView.isActionViewExpanded()) {
|
if (mMenuSearchView != null && mMenuSearchView.isActionViewExpanded()) {
|
||||||
query = mSearchEditText.getText().toString();
|
query = mSearchEditText.getText().toString();
|
||||||
} else {
|
} else {
|
||||||
query = mInitialSearchValue.peek();
|
query = mInitialSearchValue.peek();
|
||||||
}
|
}
|
||||||
xmppConnectionService.discoverChannels(query, this);
|
toggleLoadingScreen();
|
||||||
|
xmppConnectionService.discoverChannels(query, this.method, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,29 +80,42 @@ public class ChannelDiscoveryActivity extends XmppActivity implements MenuItem.O
|
||||||
configureActionBar(getSupportActionBar(), true);
|
configureActionBar(getSupportActionBar(), true);
|
||||||
binding.list.setAdapter(this.adapter);
|
binding.list.setAdapter(this.adapter);
|
||||||
this.adapter.setOnChannelSearchResultSelectedListener(this);
|
this.adapter.setOnChannelSearchResultSelectedListener(this);
|
||||||
optedIn = getPreferences().getBoolean(CHANNEL_DISCOVERY_OPT_IN, false);
|
this.optedIn = getPreferences().getBoolean(CHANNEL_DISCOVERY_OPT_IN, false);
|
||||||
|
|
||||||
final String search = savedInstanceState == null ? null : savedInstanceState.getString("search");
|
final String search = savedInstanceState == null ? null : savedInstanceState.getString("search");
|
||||||
if (search != null) {
|
if (search != null) {
|
||||||
mInitialSearchValue.push(search);
|
mInitialSearchValue.push(search);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ChannelDiscoveryService.Method getMethod(final Context c) {
|
||||||
|
if (QuickConversationsService.isQuicksy()) {
|
||||||
|
return ChannelDiscoveryService.Method.JABBER_NETWORK;
|
||||||
|
}
|
||||||
|
final SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(c);
|
||||||
|
final String m = p.getString("channel_discovery_method", c.getString(R.string.default_channel_discovery));
|
||||||
|
try {
|
||||||
|
return ChannelDiscoveryService.Method.valueOf(m);
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
return ChannelDiscoveryService.Method.JABBER_NETWORK;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCreateOptionsMenu(final Menu menu) {
|
public boolean onCreateOptionsMenu(final Menu menu) {
|
||||||
getMenuInflater().inflate(R.menu.muc_users_activity, menu);
|
getMenuInflater().inflate(R.menu.channel_discovery_activity, menu);
|
||||||
|
AccountUtils.showHideMenuItems(menu);
|
||||||
mMenuSearchView = menu.findItem(R.id.action_search);
|
mMenuSearchView = menu.findItem(R.id.action_search);
|
||||||
final View mSearchView = mMenuSearchView.getActionView();
|
final View mSearchView = mMenuSearchView.getActionView();
|
||||||
mSearchEditText = mSearchView.findViewById(R.id.search_field);
|
mSearchEditText = mSearchView.findViewById(R.id.search_field);
|
||||||
mSearchEditText.setHint(R.string.search_channels);
|
mSearchEditText.setHint(R.string.search_channels);
|
||||||
String initialSearchValue = mInitialSearchValue.pop();
|
final String initialSearchValue = mInitialSearchValue.pop();
|
||||||
if (initialSearchValue != null) {
|
if (initialSearchValue != null) {
|
||||||
mMenuSearchView.expandActionView();
|
mMenuSearchView.expandActionView();
|
||||||
mSearchEditText.append(initialSearchValue);
|
mSearchEditText.append(initialSearchValue);
|
||||||
mSearchEditText.requestFocus();
|
mSearchEditText.requestFocus();
|
||||||
if (optedIn && xmppConnectionService != null) {
|
if ((optedIn || method == ChannelDiscoveryService.Method.LOCAL_SERVER) && xmppConnectionService != null) {
|
||||||
xmppConnectionService.discoverChannels(initialSearchValue, this);
|
xmppConnectionService.discoverChannels(initialSearchValue, this.method, this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mSearchEditText.setOnEditorActionListener(this);
|
mSearchEditText.setOnEditorActionListener(this);
|
||||||
|
@ -119,8 +139,8 @@ public class ChannelDiscoveryActivity extends XmppActivity implements MenuItem.O
|
||||||
imm.hideSoftInputFromWindow(mSearchEditText.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
|
imm.hideSoftInputFromWindow(mSearchEditText.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);
|
||||||
mSearchEditText.setText("");
|
mSearchEditText.setText("");
|
||||||
toggleLoadingScreen();
|
toggleLoadingScreen();
|
||||||
if (optedIn) {
|
if (optedIn || method == ChannelDiscoveryService.Method.LOCAL_SERVER) {
|
||||||
xmppConnectionService.discoverChannels(null, this);
|
xmppConnectionService.discoverChannels(null, this.method, this);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -128,12 +148,14 @@ public class ChannelDiscoveryActivity extends XmppActivity implements MenuItem.O
|
||||||
private void toggleLoadingScreen() {
|
private void toggleLoadingScreen() {
|
||||||
adapter.submitList(Collections.emptyList());
|
adapter.submitList(Collections.emptyList());
|
||||||
binding.progressBar.setVisibility(View.VISIBLE);
|
binding.progressBar.setVisibility(View.VISIBLE);
|
||||||
|
binding.list.setBackgroundColor(StyledAttributes.getColor(this, R.attr.color_background_primary));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStart() {
|
public void onStart() {
|
||||||
super.onStart();
|
super.onStart();
|
||||||
if (!optedIn) {
|
this.method = getMethod(this);
|
||||||
|
if (!optedIn && method == ChannelDiscoveryService.Method.JABBER_NETWORK) {
|
||||||
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
||||||
builder.setTitle(R.string.channel_discovery_opt_in_title);
|
builder.setTitle(R.string.channel_discovery_opt_in_title);
|
||||||
builder.setMessage(Html.fromHtml(getString(R.string.channel_discover_opt_in_message)));
|
builder.setMessage(Html.fromHtml(getString(R.string.channel_discover_opt_in_message)));
|
||||||
|
@ -141,11 +163,25 @@ public class ChannelDiscoveryActivity extends XmppActivity implements MenuItem.O
|
||||||
builder.setPositiveButton(R.string.confirm, (dialog, which) -> optIn());
|
builder.setPositiveButton(R.string.confirm, (dialog, which) -> optIn());
|
||||||
builder.setOnCancelListener(dialog -> finish());
|
builder.setOnCancelListener(dialog -> finish());
|
||||||
final AlertDialog dialog = builder.create();
|
final AlertDialog dialog = builder.create();
|
||||||
|
dialog.setOnShowListener(d -> {
|
||||||
|
final TextView textView = dialog.findViewById(android.R.id.message);
|
||||||
|
if (textView == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
textView.setMovementMethod(LinkMovementMethod.getInstance());
|
||||||
|
});
|
||||||
dialog.setCanceledOnTouchOutside(false);
|
dialog.setCanceledOnTouchOutside(false);
|
||||||
dialog.show();
|
dialog.show();
|
||||||
|
holdLoading();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void holdLoading() {
|
||||||
|
adapter.submitList(Collections.emptyList());
|
||||||
|
binding.progressBar.setVisibility(View.GONE);
|
||||||
|
binding.list.setBackgroundColor(StyledAttributes.getColor(this, R.attr.color_background_primary));
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSaveInstanceState(Bundle savedInstanceState) {
|
public void onSaveInstanceState(Bundle savedInstanceState) {
|
||||||
if (mMenuSearchView != null && mMenuSearchView.isActionViewExpanded()) {
|
if (mMenuSearchView != null && mMenuSearchView.isActionViewExpanded()) {
|
||||||
|
@ -158,31 +194,36 @@ public class ChannelDiscoveryActivity extends XmppActivity implements MenuItem.O
|
||||||
SharedPreferences preferences = getPreferences();
|
SharedPreferences preferences = getPreferences();
|
||||||
preferences.edit().putBoolean(CHANNEL_DISCOVERY_OPT_IN, true).apply();
|
preferences.edit().putBoolean(CHANNEL_DISCOVERY_OPT_IN, true).apply();
|
||||||
optedIn = true;
|
optedIn = true;
|
||||||
xmppConnectionService.discoverChannels(null, this);
|
toggleLoadingScreen();
|
||||||
|
xmppConnectionService.discoverChannels(null, this.method, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
|
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
|
||||||
if (optedIn) {
|
if (optedIn || method == ChannelDiscoveryService.Method.LOCAL_SERVER) {
|
||||||
xmppConnectionService.discoverChannels(v.getText().toString(), this);
|
toggleLoadingScreen();
|
||||||
|
SoftKeyboardUtils.hideSoftKeyboard(this);
|
||||||
|
xmppConnectionService.discoverChannels(v.getText().toString(), this.method, this);
|
||||||
}
|
}
|
||||||
toggleLoadingScreen();
|
|
||||||
SoftKeyboardUtils.hideSoftKeyboard(this);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onChannelSearchResultsFound(List<MuclumbusService.Room> results) {
|
public void onChannelSearchResultsFound(final List<Room> results) {
|
||||||
runOnUiThread(() -> {
|
runOnUiThread(() -> {
|
||||||
adapter.submitList(results);
|
adapter.submitList(results);
|
||||||
binding.list.setVisibility(View.VISIBLE);
|
|
||||||
binding.progressBar.setVisibility(View.GONE);
|
binding.progressBar.setVisibility(View.GONE);
|
||||||
|
if (results.size() == 0) {
|
||||||
|
binding.list.setBackground(StyledAttributes.getDrawable(this, R.attr.activity_primary_background_no_results));
|
||||||
|
} else {
|
||||||
|
binding.list.setBackgroundColor(StyledAttributes.getColor(this, R.attr.color_background_primary));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onChannelSearchResult(final MuclumbusService.Room result) {
|
public void onChannelSearchResult(final Room result) {
|
||||||
List<String> accounts = AccountUtils.getEnabledAccounts(xmppConnectionService);
|
List<String> accounts = AccountUtils.getEnabledAccounts(xmppConnectionService);
|
||||||
if (accounts.size() == 1) {
|
if (accounts.size() == 1) {
|
||||||
joinChannelSearchResult(accounts.get(0), result);
|
joinChannelSearchResult(accounts.get(0), result);
|
||||||
|
@ -200,7 +241,7 @@ public class ChannelDiscoveryActivity extends XmppActivity implements MenuItem.O
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onContextItemSelected(MenuItem item) {
|
public boolean onContextItemSelected(MenuItem item) {
|
||||||
final MuclumbusService.Room room = adapter.getCurrent();
|
final Room room = adapter.getCurrent();
|
||||||
if (room != null) {
|
if (room != null) {
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
case R.id.share_with:
|
case R.id.share_with:
|
||||||
|
@ -218,7 +259,7 @@ public class ChannelDiscoveryActivity extends XmppActivity implements MenuItem.O
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void joinChannelSearchResult(String selectedAccount, MuclumbusService.Room result) {
|
public void joinChannelSearchResult(String selectedAccount, Room result) {
|
||||||
final Jid jid = Config.DOMAIN_LOCK == null ? Jid.of(selectedAccount) : Jid.of(selectedAccount, Config.DOMAIN_LOCK, null);
|
final Jid jid = Config.DOMAIN_LOCK == null ? Jid.of(selectedAccount) : Jid.of(selectedAccount, Config.DOMAIN_LOCK, null);
|
||||||
final boolean syncAutoJoin = getBooleanPreference("autojoin", R.bool.autojoin);
|
final boolean syncAutoJoin = getBooleanPreference("autojoin", R.bool.autojoin);
|
||||||
final Account account = xmppConnectionService.findAccountByJid(jid);
|
final Account account = xmppConnectionService.findAccountByJid(jid);
|
||||||
|
|
|
@ -5,6 +5,7 @@ import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.v7.app.ActionBar;
|
import android.support.v7.app.ActionBar;
|
||||||
import android.widget.ListView;
|
import android.widget.ListView;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -78,7 +79,12 @@ public class ChooseAccountForProfilePictureActivity extends XmppActivity {
|
||||||
intent.putExtra(EXTRA_ACCOUNT, account.getJid().asBareJid().toString());
|
intent.putExtra(EXTRA_ACCOUNT, account.getJid().asBareJid().toString());
|
||||||
intent.setData(uri);
|
intent.setData(uri);
|
||||||
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||||
startActivity(intent);
|
try {
|
||||||
|
startActivity(intent);
|
||||||
|
} catch (SecurityException e) {
|
||||||
|
Toast.makeText(this, R.string.sharing_application_not_grant_permission, Toast.LENGTH_SHORT).show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
|
|
|
@ -2267,7 +2267,6 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
|
||||||
|
|
||||||
public void updateSendButton() {
|
public void updateSendButton() {
|
||||||
boolean hasAttachments = mediaPreviewAdapter != null && mediaPreviewAdapter.hasAttachments();
|
boolean hasAttachments = mediaPreviewAdapter != null && mediaPreviewAdapter.hasAttachments();
|
||||||
boolean useSendButtonToIndicateStatus = activity != null && PreferenceManager.getDefaultSharedPreferences(activity).getBoolean("send_button_status", getResources().getBoolean(R.bool.send_button_status));
|
|
||||||
final Conversation c = this.conversation;
|
final Conversation c = this.conversation;
|
||||||
final Presence.Status status;
|
final Presence.Status status;
|
||||||
final String text = this.binding.textinput == null ? "" : this.binding.textinput.getText().toString();
|
final String text = this.binding.textinput == null ? "" : this.binding.textinput.getText().toString();
|
||||||
|
@ -2277,7 +2276,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
|
||||||
} else {
|
} else {
|
||||||
action = SendButtonTool.getAction(getActivity(), c, text);
|
action = SendButtonTool.getAction(getActivity(), c, text);
|
||||||
}
|
}
|
||||||
if (useSendButtonToIndicateStatus && c.getAccount().getStatus() == Account.State.ONLINE) {
|
if (c.getAccount().getStatus() == Account.State.ONLINE) {
|
||||||
if (activity != null && activity.xmppConnectionService != null && activity.xmppConnectionService.getMessageArchiveService().isCatchingUp(c)) {
|
if (activity != null && activity.xmppConnectionService != null && activity.xmppConnectionService.getMessageArchiveService().isCatchingUp(c)) {
|
||||||
status = Presence.Status.OFFLINE;
|
status = Presence.Status.OFFLINE;
|
||||||
} else if (c.getMode() == Conversation.MODE_SINGLE) {
|
} else if (c.getMode() == Conversation.MODE_SINGLE) {
|
||||||
|
|
|
@ -228,20 +228,22 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat
|
||||||
removeErrorsOnAllBut(binding.hostnameLayout);
|
removeErrorsOnAllBut(binding.hostnameLayout);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
if (!hostname.isEmpty()) {
|
||||||
numericPort = Integer.parseInt(port);
|
try {
|
||||||
if (numericPort < 0 || numericPort > 65535) {
|
numericPort = Integer.parseInt(port);
|
||||||
|
if (numericPort < 0 || numericPort > 65535) {
|
||||||
|
binding.portLayout.setError(getString(R.string.not_a_valid_port));
|
||||||
|
removeErrorsOnAllBut(binding.portLayout);
|
||||||
|
binding.port.requestFocus();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
binding.portLayout.setError(getString(R.string.not_a_valid_port));
|
binding.portLayout.setError(getString(R.string.not_a_valid_port));
|
||||||
removeErrorsOnAllBut(binding.portLayout);
|
removeErrorsOnAllBut(binding.portLayout);
|
||||||
binding.port.requestFocus();
|
binding.port.requestFocus();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
binding.portLayout.setError(getString(R.string.not_a_valid_port));
|
|
||||||
removeErrorsOnAllBut(binding.portLayout);
|
|
||||||
binding.port.requestFocus();
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -477,8 +479,13 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updatePortLayout() {
|
private void updatePortLayout() {
|
||||||
String hostname = this.binding.hostname.getText().toString();
|
final String hostname = this.binding.hostname.getText().toString();
|
||||||
this.binding.portLayout.setEnabled(!TextUtils.isEmpty(hostname));
|
if (TextUtils.isEmpty(hostname)) {
|
||||||
|
this.binding.portLayout.setEnabled(false);
|
||||||
|
this.binding.portLayout.setError(null);
|
||||||
|
} else {
|
||||||
|
this.binding.portLayout.setEnabled(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void updateSaveButton() {
|
protected void updateSaveButton() {
|
||||||
|
@ -613,7 +620,7 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat
|
||||||
}
|
}
|
||||||
|
|
||||||
private void refreshAvatar() {
|
private void refreshAvatar() {
|
||||||
AvatarWorkerTask.loadAvatar(mAccount,binding.avater,R.dimen.avatar_on_details_screen_size);
|
AvatarWorkerTask.loadAvatar(mAccount, binding.avater, R.dimen.avatar_on_details_screen_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -683,9 +690,9 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat
|
||||||
}
|
}
|
||||||
boolean init = intent.getBooleanExtra("init", false);
|
boolean init = intent.getBooleanExtra("init", false);
|
||||||
boolean openedFromNotification = intent.getBooleanExtra(EXTRA_OPENED_FROM_NOTIFICATION, false);
|
boolean openedFromNotification = intent.getBooleanExtra(EXTRA_OPENED_FROM_NOTIFICATION, false);
|
||||||
Log.d(Config.LOGTAG,"extras "+intent.getExtras());
|
Log.d(Config.LOGTAG, "extras " + intent.getExtras());
|
||||||
this.mForceRegister = intent.hasExtra(EXTRA_FORCE_REGISTER) ? intent.getBooleanExtra(EXTRA_FORCE_REGISTER,false) : null;
|
this.mForceRegister = intent.hasExtra(EXTRA_FORCE_REGISTER) ? intent.getBooleanExtra(EXTRA_FORCE_REGISTER, false) : null;
|
||||||
Log.d(Config.LOGTAG,"force register="+mForceRegister);
|
Log.d(Config.LOGTAG, "force register=" + mForceRegister);
|
||||||
this.mInitMode = init || this.jidToEdit == null;
|
this.mInitMode = init || this.jidToEdit == null;
|
||||||
this.messageFingerprint = intent.getStringExtra("fingerprint");
|
this.messageFingerprint = intent.getStringExtra("fingerprint");
|
||||||
if (!mInitMode) {
|
if (!mInitMode) {
|
||||||
|
@ -975,7 +982,7 @@ public class EditAccountActivity extends OmemoActivity implements OnAccountUpdat
|
||||||
|
|
||||||
if (!mInitMode) {
|
if (!mInitMode) {
|
||||||
this.binding.avater.setVisibility(View.VISIBLE);
|
this.binding.avater.setVisibility(View.VISIBLE);
|
||||||
AvatarWorkerTask.loadAvatar(mAccount,binding.avater,R.dimen.avatar_on_details_screen_size);
|
AvatarWorkerTask.loadAvatar(mAccount, binding.avater, R.dimen.avatar_on_details_screen_size);
|
||||||
} else {
|
} else {
|
||||||
this.binding.avater.setVisibility(View.GONE);
|
this.binding.avater.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -92,11 +92,16 @@ public class SettingsActivity extends XmppActivity implements
|
||||||
changeOmemoSettingSummary();
|
changeOmemoSettingSummary();
|
||||||
|
|
||||||
if (QuickConversationsService.isQuicksy()) {
|
if (QuickConversationsService.isQuicksy()) {
|
||||||
PreferenceCategory connectionOptions = (PreferenceCategory) mSettingsFragment.findPreference("connection_options");
|
final PreferenceCategory connectionOptions = (PreferenceCategory) mSettingsFragment.findPreference("connection_options");
|
||||||
|
final PreferenceCategory groupChats = (PreferenceCategory) mSettingsFragment.findPreference("group_chats");
|
||||||
|
final Preference channelDiscoveryMethod = mSettingsFragment.findPreference("channel_discovery_method");
|
||||||
PreferenceScreen expert = (PreferenceScreen) mSettingsFragment.findPreference("expert");
|
PreferenceScreen expert = (PreferenceScreen) mSettingsFragment.findPreference("expert");
|
||||||
if (connectionOptions != null) {
|
if (connectionOptions != null) {
|
||||||
expert.removePreference(connectionOptions);
|
expert.removePreference(connectionOptions);
|
||||||
}
|
}
|
||||||
|
if (groupChats != null && channelDiscoveryMethod != null) {
|
||||||
|
groupChats.removePreference(channelDiscoveryMethod);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
PreferenceScreen mainPreferenceScreen = (PreferenceScreen) mSettingsFragment.findPreference("main_screen");
|
PreferenceScreen mainPreferenceScreen = (PreferenceScreen) mSettingsFragment.findPreference("main_screen");
|
||||||
|
|
|
@ -200,7 +200,12 @@ public class ShareWithActivity extends XmppActivity implements XmppConnectionSer
|
||||||
intent.putExtra(Intent.EXTRA_TEXT, share.text);
|
intent.putExtra(Intent.EXTRA_TEXT, share.text);
|
||||||
intent.putExtra(ConversationsActivity.EXTRA_AS_QUOTE, share.asQuote);
|
intent.putExtra(ConversationsActivity.EXTRA_AS_QUOTE, share.asQuote);
|
||||||
}
|
}
|
||||||
startActivity(intent);
|
try {
|
||||||
|
startActivity(intent);
|
||||||
|
} catch (SecurityException e) {
|
||||||
|
Toast.makeText(this, R.string.sharing_application_not_grant_permission, Toast.LENGTH_SHORT).show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,26 +16,26 @@ import java.util.Locale;
|
||||||
|
|
||||||
import eu.siacs.conversations.R;
|
import eu.siacs.conversations.R;
|
||||||
import eu.siacs.conversations.databinding.SearchResultItemBinding;
|
import eu.siacs.conversations.databinding.SearchResultItemBinding;
|
||||||
import eu.siacs.conversations.http.services.MuclumbusService;
|
import eu.siacs.conversations.entities.Room;
|
||||||
import eu.siacs.conversations.ui.XmppActivity;
|
import eu.siacs.conversations.ui.XmppActivity;
|
||||||
import eu.siacs.conversations.ui.util.AvatarWorkerTask;
|
import eu.siacs.conversations.ui.util.AvatarWorkerTask;
|
||||||
import rocks.xmpp.addr.Jid;
|
import rocks.xmpp.addr.Jid;
|
||||||
|
|
||||||
public class ChannelSearchResultAdapter extends ListAdapter<MuclumbusService.Room, ChannelSearchResultAdapter.ViewHolder> implements View.OnCreateContextMenuListener {
|
public class ChannelSearchResultAdapter extends ListAdapter<Room, ChannelSearchResultAdapter.ViewHolder> implements View.OnCreateContextMenuListener {
|
||||||
|
|
||||||
private static final DiffUtil.ItemCallback<MuclumbusService.Room> DIFF = new DiffUtil.ItemCallback<MuclumbusService.Room>() {
|
private static final DiffUtil.ItemCallback<Room> DIFF = new DiffUtil.ItemCallback<Room>() {
|
||||||
@Override
|
@Override
|
||||||
public boolean areItemsTheSame(@NonNull MuclumbusService.Room a, @NonNull MuclumbusService.Room b) {
|
public boolean areItemsTheSame(@NonNull Room a, @NonNull Room b) {
|
||||||
return a.address != null && a.address.equals(b.address);
|
return a.address != null && a.address.equals(b.address);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean areContentsTheSame(@NonNull MuclumbusService.Room a, @NonNull MuclumbusService.Room b) {
|
public boolean areContentsTheSame(@NonNull Room a, @NonNull Room b) {
|
||||||
return a.equals(b);
|
return a.equals(b);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
private OnChannelSearchResultSelected listener;
|
private OnChannelSearchResultSelected listener;
|
||||||
private MuclumbusService.Room current;
|
private Room current;
|
||||||
|
|
||||||
public ChannelSearchResultAdapter() {
|
public ChannelSearchResultAdapter() {
|
||||||
super(DIFF);
|
super(DIFF);
|
||||||
|
@ -49,7 +49,7 @@ public class ChannelSearchResultAdapter extends ListAdapter<MuclumbusService.Roo
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
|
public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
|
||||||
final MuclumbusService.Room searchResult = getItem(position);
|
final Room searchResult = getItem(position);
|
||||||
viewHolder.binding.name.setText(searchResult.getName());
|
viewHolder.binding.name.setText(searchResult.getName());
|
||||||
final String description = searchResult.getDescription();
|
final String description = searchResult.getDescription();
|
||||||
final String language = searchResult.getLanguage();
|
final String language = searchResult.getLanguage();
|
||||||
|
@ -78,7 +78,7 @@ public class ChannelSearchResultAdapter extends ListAdapter<MuclumbusService.Roo
|
||||||
this.listener = listener;
|
this.listener = listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MuclumbusService.Room getCurrent() {
|
public Room getCurrent() {
|
||||||
return this.current;
|
return this.current;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,15 +86,14 @@ public class ChannelSearchResultAdapter extends ListAdapter<MuclumbusService.Roo
|
||||||
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
|
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
|
||||||
final Activity activity = XmppActivity.find(v);
|
final Activity activity = XmppActivity.find(v);
|
||||||
final Object tag = v.getTag();
|
final Object tag = v.getTag();
|
||||||
if (activity != null && tag instanceof MuclumbusService.Room) {
|
if (activity != null && tag instanceof Room) {
|
||||||
activity.getMenuInflater().inflate(R.menu.channel_item_context, menu);
|
activity.getMenuInflater().inflate(R.menu.channel_item_context, menu);
|
||||||
this.current = (MuclumbusService.Room) tag;
|
this.current = (Room) tag;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public interface OnChannelSearchResultSelected {
|
public interface OnChannelSearchResultSelected {
|
||||||
void onChannelSearchResult(MuclumbusService.Room result);
|
void onChannelSearchResult(Room result);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class ViewHolder extends RecyclerView.ViewHolder {
|
public static class ViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
|
@ -89,7 +89,6 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
|
||||||
private DisplayMetrics metrics;
|
private DisplayMetrics metrics;
|
||||||
private OnContactPictureClicked mOnContactPictureClickedListener;
|
private OnContactPictureClicked mOnContactPictureClickedListener;
|
||||||
private OnContactPictureLongClicked mOnContactPictureLongClickedListener;
|
private OnContactPictureLongClicked mOnContactPictureLongClickedListener;
|
||||||
private boolean mIndicateReceived = false;
|
|
||||||
private OnQuoteListener onQuoteListener;
|
private OnQuoteListener onQuoteListener;
|
||||||
public MessageAdapter(XmppActivity activity, List<Message> messages) {
|
public MessageAdapter(XmppActivity activity, List<Message> messages) {
|
||||||
super(activity, 0, messages);
|
super(activity, 0, messages);
|
||||||
|
@ -207,9 +206,7 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
|
||||||
break;
|
break;
|
||||||
case Message.STATUS_SEND_RECEIVED:
|
case Message.STATUS_SEND_RECEIVED:
|
||||||
case Message.STATUS_SEND_DISPLAYED:
|
case Message.STATUS_SEND_DISPLAYED:
|
||||||
if (mIndicateReceived) {
|
viewHolder.indicatorReceived.setVisibility(View.VISIBLE);
|
||||||
viewHolder.indicatorReceived.setVisibility(View.VISIBLE);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case Message.STATUS_SEND_FAILED:
|
case Message.STATUS_SEND_FAILED:
|
||||||
final String errorMessage = message.getErrorMessage();
|
final String errorMessage = message.getErrorMessage();
|
||||||
|
@ -903,7 +900,6 @@ public class MessageAdapter extends ArrayAdapter<Message> implements CopyTextVie
|
||||||
|
|
||||||
public void updatePreferences() {
|
public void updatePreferences() {
|
||||||
SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(activity);
|
SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(activity);
|
||||||
this.mIndicateReceived = p.getBoolean("indicate_received", activity.getResources().getBoolean(R.bool.indicate_received));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -346,8 +346,12 @@ public class AudioPlayer implements View.OnClickListener, MediaPlayer.OnCompleti
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
final ViewHolder viewHolder = ViewHolder.get(audioPlayer);
|
final ViewHolder viewHolder = ViewHolder.get(audioPlayer);
|
||||||
viewHolder.progress.setProgress(current * 100 / duration);
|
if (duration <= 0) {
|
||||||
viewHolder.runtime.setText(formatTime(current) + " / " + formatTime(duration));
|
viewHolder.progress.setProgress(100);
|
||||||
|
} else {
|
||||||
|
viewHolder.progress.setProgress(current * 100 / duration);
|
||||||
|
}
|
||||||
|
viewHolder.runtime.setText(String.format("%s / %s", formatTime(current), formatTime(duration)));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,8 +70,8 @@ public class FixedURLSpan extends URLSpan {
|
||||||
public void onClick(View widget) {
|
public void onClick(View widget) {
|
||||||
final Uri uri = Uri.parse(getURL());
|
final Uri uri = Uri.parse(getURL());
|
||||||
final Context context = widget.getContext();
|
final Context context = widget.getContext();
|
||||||
final boolean candidateToProcessDirecty = "xmpp".equals(uri.getScheme()) || ("https".equals(uri.getScheme()) && "conversations.im".equals(uri.getHost()) && uri.getPathSegments().size() > 1 && Arrays.asList("j","i").contains(uri.getPathSegments().get(0)));
|
final boolean candidateToProcessDirectly = "xmpp".equals(uri.getScheme()) || ("https".equals(uri.getScheme()) && "conversations.im".equals(uri.getHost()) && uri.getPathSegments().size() > 1 && Arrays.asList("j","i").contains(uri.getPathSegments().get(0)));
|
||||||
if (candidateToProcessDirecty && context instanceof ConversationsActivity) {
|
if (candidateToProcessDirectly && context instanceof ConversationsActivity) {
|
||||||
if (((ConversationsActivity) context).onXmppUriClicked(uri)) {
|
if (((ConversationsActivity) context).onXmppUriClicked(uri)) {
|
||||||
widget.playSoundEffect(0);
|
widget.playSoundEffect(0);
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -13,6 +13,7 @@ import android.view.View;
|
||||||
|
|
||||||
import eu.siacs.conversations.Config;
|
import eu.siacs.conversations.Config;
|
||||||
import eu.siacs.conversations.R;
|
import eu.siacs.conversations.R;
|
||||||
|
import eu.siacs.conversations.entities.Account;
|
||||||
import eu.siacs.conversations.entities.Contact;
|
import eu.siacs.conversations.entities.Contact;
|
||||||
import eu.siacs.conversations.entities.Conversation;
|
import eu.siacs.conversations.entities.Conversation;
|
||||||
import eu.siacs.conversations.entities.MucOptions;
|
import eu.siacs.conversations.entities.MucOptions;
|
||||||
|
@ -71,8 +72,8 @@ public final class MucDetailsContextMenuHelper {
|
||||||
startConversation.setVisible(true);
|
startConversation.setVisible(true);
|
||||||
final Contact contact = user.getContact();
|
final Contact contact = user.getContact();
|
||||||
final User self = conversation.getMucOptions().getSelf();
|
final User self = conversation.getMucOptions().getSelf();
|
||||||
if (contact != null && contact.showInRoster()) {
|
if ((contact != null && contact.showInRoster()) || mucOptions.isPrivateAndNonAnonymous()) {
|
||||||
showContactDetails.setVisible(!contact.isSelf());
|
showContactDetails.setVisible(contact == null || !contact.isSelf());
|
||||||
}
|
}
|
||||||
if ((activity instanceof ConferenceDetailsActivity || activity instanceof MucUsersActivity) && user.getRole() == MucOptions.Role.NONE) {
|
if ((activity instanceof ConferenceDetailsActivity || activity instanceof MucUsersActivity) && user.getRole() == MucOptions.Role.NONE) {
|
||||||
invite.setVisible(true);
|
invite.setVisible(true);
|
||||||
|
@ -135,7 +136,9 @@ public final class MucDetailsContextMenuHelper {
|
||||||
Jid jid = user.getRealJid();
|
Jid jid = user.getRealJid();
|
||||||
switch (item.getItemId()) {
|
switch (item.getItemId()) {
|
||||||
case R.id.action_contact_details:
|
case R.id.action_contact_details:
|
||||||
Contact contact = user.getContact();
|
final Jid realJid = user.getRealJid();
|
||||||
|
final Account account = conversation.getAccount();
|
||||||
|
final Contact contact = realJid == null ? null : account.getRoster().getContact(realJid);
|
||||||
if (contact != null) {
|
if (contact != null) {
|
||||||
activity.switchToContactDetails(contact, fingerprint);
|
activity.switchToContactDetails(contact, fingerprint);
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,7 +102,11 @@ public class AccountUtils {
|
||||||
public static void showHideMenuItems(final Menu menu) {
|
public static void showHideMenuItems(final Menu menu) {
|
||||||
final MenuItem manageAccounts = menu.findItem(R.id.action_accounts);
|
final MenuItem manageAccounts = menu.findItem(R.id.action_accounts);
|
||||||
final MenuItem manageAccount = menu.findItem(R.id.action_account);
|
final MenuItem manageAccount = menu.findItem(R.id.action_account);
|
||||||
manageAccount.setVisible(MANAGE_ACCOUNT_ACTIVITY == null);
|
if (manageAccount != null) {
|
||||||
manageAccounts.setVisible(MANAGE_ACCOUNT_ACTIVITY != null);
|
manageAccount.setVisible(MANAGE_ACCOUNT_ACTIVITY == null);
|
||||||
|
}
|
||||||
|
if (manageAccounts != null) {
|
||||||
|
manageAccounts.setVisible(MANAGE_ACCOUNT_ACTIVITY != null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,7 +93,7 @@ public class Compatibility {
|
||||||
public static void removeUnusedPreferences(SettingsFragment settingsFragment) {
|
public static void removeUnusedPreferences(SettingsFragment settingsFragment) {
|
||||||
List<PreferenceCategory> categories = Arrays.asList(
|
List<PreferenceCategory> categories = Arrays.asList(
|
||||||
(PreferenceCategory) settingsFragment.findPreference("notification_category"),
|
(PreferenceCategory) settingsFragment.findPreference("notification_category"),
|
||||||
(PreferenceCategory) settingsFragment.findPreference("other_expert_category"));
|
(PreferenceCategory) settingsFragment.findPreference("advanced"));
|
||||||
for (String key : (runsTwentySix() ? UNUSED_SETTINGS_POST_TWENTYSIX : UNUESD_SETTINGS_PRE_TWENTYSIX)) {
|
for (String key : (runsTwentySix() ? UNUSED_SETTINGS_POST_TWENTYSIX : UNUESD_SETTINGS_PRE_TWENTYSIX)) {
|
||||||
Preference preference = settingsFragment.findPreference(key);
|
Preference preference = settingsFragment.findPreference(key);
|
||||||
if (preference != null) {
|
if (preference != null) {
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package eu.siacs.conversations.xml;
|
package eu.siacs.conversations.xml;
|
||||||
|
|
||||||
public final class Namespace {
|
public final class Namespace {
|
||||||
|
public static final String DISCO_ITEMS = "http://jabber.org/protocol/disco#items";
|
||||||
|
public static final String DISCO_INFO = "http://jabber.org/protocol/disco#info";
|
||||||
public static final String BLOCKING = "urn:xmpp:blocking";
|
public static final String BLOCKING = "urn:xmpp:blocking";
|
||||||
public static final String ROSTER = "jabber:iq:roster";
|
public static final String ROSTER = "jabber:iq:roster";
|
||||||
public static final String REGISTER = "jabber:iq:register";
|
public static final String REGISTER = "jabber:iq:register";
|
||||||
|
|
|
@ -71,6 +71,8 @@ public class JingleConnection implements Transferable {
|
||||||
private Element fileOffer;
|
private Element fileOffer;
|
||||||
private DownloadableFile file = null;
|
private DownloadableFile file = null;
|
||||||
|
|
||||||
|
private boolean proxyActivationFailed = false;
|
||||||
|
|
||||||
private String contentName;
|
private String contentName;
|
||||||
private String contentCreator;
|
private String contentCreator;
|
||||||
private Transport initialTransport;
|
private Transport initialTransport;
|
||||||
|
@ -175,6 +177,7 @@ public class JingleConnection implements Transferable {
|
||||||
@Override
|
@Override
|
||||||
public void failed() {
|
public void failed() {
|
||||||
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": proxy activation failed");
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": proxy activation failed");
|
||||||
|
proxyActivationFailed = true;
|
||||||
if (initiating()) {
|
if (initiating()) {
|
||||||
sendFallbackToIbb();
|
sendFallbackToIbb();
|
||||||
}
|
}
|
||||||
|
@ -504,10 +507,11 @@ public class JingleConnection implements Transferable {
|
||||||
|
|
||||||
respondToIq(packet, true);
|
respondToIq(packet, true);
|
||||||
|
|
||||||
if (mJingleConnectionManager.hasStoragePermission()
|
if (account.getRoster().getContact(from).showInContactList()
|
||||||
|
&& mJingleConnectionManager.hasStoragePermission()
|
||||||
&& size < this.mJingleConnectionManager.getAutoAcceptFileSize()
|
&& size < this.mJingleConnectionManager.getAutoAcceptFileSize()
|
||||||
&& mXmppConnectionService.isDataSaverDisabled()) {
|
&& mXmppConnectionService.isDataSaverDisabled()) {
|
||||||
Log.d(Config.LOGTAG, "auto accepting file from " + packet.getFrom());
|
Log.d(Config.LOGTAG, "auto accepting file from " + from);
|
||||||
this.acceptedAutomatically = true;
|
this.acceptedAutomatically = true;
|
||||||
this.sendAccept();
|
this.sendAccept();
|
||||||
} else {
|
} else {
|
||||||
|
@ -700,6 +704,11 @@ public class JingleConnection implements Transferable {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void receiveAccept(JinglePacket packet) {
|
private void receiveAccept(JinglePacket packet) {
|
||||||
|
if (responding()) {
|
||||||
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received out of order session-accept (we were responding)");
|
||||||
|
respondToIqWithOutOfOrder(packet);
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (this.mJingleStatus != JINGLE_STATUS_INITIATED) {
|
if (this.mJingleStatus != JINGLE_STATUS_INITIATED) {
|
||||||
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received out of order session-accept");
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received out of order session-accept");
|
||||||
respondToIqWithOutOfOrder(packet);
|
respondToIqWithOutOfOrder(packet);
|
||||||
|
@ -909,6 +918,18 @@ public class JingleConnection implements Transferable {
|
||||||
|
|
||||||
|
|
||||||
private void receiveFallbackToIbb(JinglePacket packet) {
|
private void receiveFallbackToIbb(JinglePacket packet) {
|
||||||
|
if (initiating()) {
|
||||||
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received out of order transport-replace (we were initiating)");
|
||||||
|
respondToIqWithOutOfOrder(packet);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
final boolean validState = mJingleStatus == JINGLE_STATUS_ACCEPTED || (proxyActivationFailed && mJingleStatus == JINGLE_STATUS_TRANSMITTING);
|
||||||
|
if (!validState) {
|
||||||
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received out of order transport-replace");
|
||||||
|
respondToIqWithOutOfOrder(packet);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.proxyActivationFailed = false; //fallback received; now we no longer need to accept another one;
|
||||||
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": receiving fallback to ibb");
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": receiving fallback to ibb");
|
||||||
final String receivedBlockSize = packet.getJingleContent().ibbTransport().getAttribute("block-size");
|
final String receivedBlockSize = packet.getJingleContent().ibbTransport().getAttribute("block-size");
|
||||||
if (receivedBlockSize != null) {
|
if (receivedBlockSize != null) {
|
||||||
|
@ -947,6 +968,18 @@ public class JingleConnection implements Transferable {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void receiveTransportAccept(JinglePacket packet) {
|
private void receiveTransportAccept(JinglePacket packet) {
|
||||||
|
if (responding()) {
|
||||||
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received out of order transport-accept (we were responding)");
|
||||||
|
respondToIqWithOutOfOrder(packet);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
final boolean validState = mJingleStatus == JINGLE_STATUS_ACCEPTED || (proxyActivationFailed && mJingleStatus == JINGLE_STATUS_TRANSMITTING);
|
||||||
|
if (!validState) {
|
||||||
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received out of order transport-accept");
|
||||||
|
respondToIqWithOutOfOrder(packet);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.proxyActivationFailed = false; //fallback accepted; now we no longer need to accept another one;
|
||||||
if (packet.getJingleContent().hasIbbTransport()) {
|
if (packet.getJingleContent().hasIbbTransport()) {
|
||||||
final Element ibbTransport = packet.getJingleContent().ibbTransport();
|
final Element ibbTransport = packet.getJingleContent().ibbTransport();
|
||||||
final String receivedBlockSize = ibbTransport.getAttribute("block-size");
|
final String receivedBlockSize = ibbTransport.getAttribute("block-size");
|
||||||
|
@ -970,8 +1003,6 @@ public class JingleConnection implements Transferable {
|
||||||
//might be receive instead if we are not initiating
|
//might be receive instead if we are not initiating
|
||||||
if (initiating()) {
|
if (initiating()) {
|
||||||
this.transport.connect(onIbbTransportConnected);
|
this.transport.connect(onIbbTransportConnected);
|
||||||
} else {
|
|
||||||
this.transport.receive(file, onFileTransmissionStatusChanged);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received invalid transport-accept");
|
Log.d(Config.LOGTAG, account.getJid().asBareJid() + ": received invalid transport-accept");
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
~ Copyright (c) 2018, Daniel Gultsch All rights reserved.
|
||||||
|
~
|
||||||
|
~ Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
~ are permitted provided that the following conditions are met:
|
||||||
|
~
|
||||||
|
~ 1. Redistributions of source code must retain the above copyright notice, this
|
||||||
|
~ list of conditions and the following disclaimer.
|
||||||
|
~
|
||||||
|
~ 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
~ this list of conditions and the following disclaimer in the documentation and/or
|
||||||
|
~ other materials provided with the distribution.
|
||||||
|
~
|
||||||
|
~ 3. Neither the name of the copyright holder nor the names of its contributors
|
||||||
|
~ may be used to endorse or promote products derived from this software without
|
||||||
|
~ specific prior written permission.
|
||||||
|
~
|
||||||
|
~ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
~ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
~ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
~ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
~ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
~ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
~ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
~ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
~ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
~ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<item android:drawable="@color/grey800"/>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<bitmap
|
||||||
|
android:alpha="@dimen/background_image_opacity"
|
||||||
|
android:gravity="center"
|
||||||
|
android:src="@drawable/ic_no_results_background_white"/>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
|
@ -0,0 +1,41 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
~ Copyright (c) 2018, Daniel Gultsch All rights reserved.
|
||||||
|
~
|
||||||
|
~ Redistribution and use in source and binary forms, with or without modification,
|
||||||
|
~ are permitted provided that the following conditions are met:
|
||||||
|
~
|
||||||
|
~ 1. Redistributions of source code must retain the above copyright notice, this
|
||||||
|
~ list of conditions and the following disclaimer.
|
||||||
|
~
|
||||||
|
~ 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
~ this list of conditions and the following disclaimer in the documentation and/or
|
||||||
|
~ other materials provided with the distribution.
|
||||||
|
~
|
||||||
|
~ 3. Neither the name of the copyright holder nor the names of its contributors
|
||||||
|
~ may be used to endorse or promote products derived from this software without
|
||||||
|
~ specific prior written permission.
|
||||||
|
~
|
||||||
|
~ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
~ ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
~ WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
~ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||||
|
~ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
~ (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
~ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
|
~ ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
~ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
~ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<item android:drawable="@color/grey50"/>
|
||||||
|
|
||||||
|
<item>
|
||||||
|
<bitmap
|
||||||
|
android:alpha="@dimen/background_image_opacity"
|
||||||
|
android:gravity="center"
|
||||||
|
android:src="@drawable/ic_no_results_background_black"/>
|
||||||
|
</item>
|
||||||
|
</layer-list>
|
|
@ -34,7 +34,6 @@
|
||||||
android:background="?attr/color_background_primary"
|
android:background="?attr/color_background_primary"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:scrollbars="vertical"
|
android:scrollbars="vertical"
|
||||||
android:visibility="gone"
|
|
||||||
app:layoutManager="android.support.v7.widget.LinearLayoutManager" />
|
app:layoutManager="android.support.v7.widget.LinearLayoutManager" />
|
||||||
</android.support.design.widget.CoordinatorLayout>
|
</android.support.design.widget.CoordinatorLayout>
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,21 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
|
||||||
<item
|
<item
|
||||||
android:id="@+id/action_search"
|
android:id="@+id/action_search"
|
||||||
app:actionLayout="@layout/actionview_search"
|
|
||||||
android:icon="?attr/icon_search"
|
android:icon="?attr/icon_search"
|
||||||
app:showAsAction="collapseActionView|always"
|
android:title="@string/search"
|
||||||
android:title="@string/search"/>
|
app:actionLayout="@layout/actionview_search"
|
||||||
|
app:showAsAction="collapseActionView|always" />
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_accounts"
|
||||||
|
android:orderInCategory="90"
|
||||||
|
android:title="@string/action_accounts"
|
||||||
|
app:showAsAction="never"/>
|
||||||
|
<item
|
||||||
|
android:id="@+id/action_settings"
|
||||||
|
android:orderInCategory="100"
|
||||||
|
android:title="@string/action_settings"
|
||||||
|
app:showAsAction="never" />
|
||||||
</menu>
|
</menu>
|
||||||
|
|
|
@ -260,7 +260,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">وقت النهاية</string>
|
<string name="title_pref_quiet_hours_end_time">وقت النهاية</string>
|
||||||
<string name="title_pref_enable_quiet_hours">تفعيل ساعات السكون</string>
|
<string name="title_pref_enable_quiet_hours">تفعيل ساعات السكون</string>
|
||||||
<string name="pref_quiet_hours_summary">سوف تكتم التنبيهات إبان ساعات السكون</string>
|
<string name="pref_quiet_hours_summary">سوف تكتم التنبيهات إبان ساعات السكون</string>
|
||||||
<string name="pref_use_indicate_received">طلب تقارير تسليم الرسائل</string>
|
|
||||||
<string name="pref_expert_options_other">أخرى</string>
|
<string name="pref_expert_options_other">أخرى</string>
|
||||||
<string name="pref_autojoin">زامِن مع الفواصل المرجعية</string>
|
<string name="pref_autojoin">زامِن مع الفواصل المرجعية</string>
|
||||||
<string name="toast_message_omemo_fingerprint">تم نسخ بصمة OMEMO إلى الحافظة !</string>
|
<string name="toast_message_omemo_fingerprint">تم نسخ بصمة OMEMO إلى الحافظة !</string>
|
||||||
|
@ -279,6 +278,7 @@
|
||||||
<string name="copy_original_url">أنسخ الرابط الأصلي</string>
|
<string name="copy_original_url">أنسخ الرابط الأصلي</string>
|
||||||
<string name="send_again">أعد الإرسال</string>
|
<string name="send_again">أعد الإرسال</string>
|
||||||
<string name="file_url">رابط الملف</string>
|
<string name="file_url">رابط الملف</string>
|
||||||
|
<string name="url_copied_to_clipboard">تم نسخ الرابط إلى الحافظة</string>
|
||||||
<string name="jabber_id_copied_to_clipboard">تم نسخ عنوان الـ XMPP إلى الحافظة</string>
|
<string name="jabber_id_copied_to_clipboard">تم نسخ عنوان الـ XMPP إلى الحافظة</string>
|
||||||
<string name="error_message_copied_to_clipboard">تم نسخ رسالة الخطأ إلى الحافظة</string>
|
<string name="error_message_copied_to_clipboard">تم نسخ رسالة الخطأ إلى الحافظة</string>
|
||||||
<string name="web_address">عنوان الويب</string>
|
<string name="web_address">عنوان الويب</string>
|
||||||
|
@ -341,6 +341,7 @@
|
||||||
<string name="remove_from_channel">أزله مِن القناة</string>
|
<string name="remove_from_channel">أزله مِن القناة</string>
|
||||||
<string name="could_not_change_affiliation">لا يمكن تغيير انتساب %s</string>
|
<string name="could_not_change_affiliation">لا يمكن تغيير انتساب %s</string>
|
||||||
<string name="ban_from_conference">الحظر من دخول مجموعة المحادثة</string>
|
<string name="ban_from_conference">الحظر من دخول مجموعة المحادثة</string>
|
||||||
|
<string name="ban_from_channel">اطرده مِن القناة</string>
|
||||||
<string name="ban_now">حظر الآن</string>
|
<string name="ban_now">حظر الآن</string>
|
||||||
<string name="could_not_change_role">لا يمكن تغيير دول %s</string>
|
<string name="could_not_change_role">لا يمكن تغيير دول %s</string>
|
||||||
<string name="channel_options">إعدادات القناة العمومية</string>
|
<string name="channel_options">إعدادات القناة العمومية</string>
|
||||||
|
@ -447,9 +448,7 @@
|
||||||
<string name="notify_never">تعطيل الإخطارات</string>
|
<string name="notify_never">تعطيل الإخطارات</string>
|
||||||
<string name="notify_paused">الإشعارات موقفة</string>
|
<string name="notify_paused">الإشعارات موقفة</string>
|
||||||
<string name="pref_picture_compression">ضغط الصورة</string>
|
<string name="pref_picture_compression">ضغط الصورة</string>
|
||||||
<string name="pref_picture_compression_summary">تغيير حجم الصور وضغطها</string>
|
|
||||||
<string name="always">دائماً</string>
|
<string name="always">دائماً</string>
|
||||||
<string name="automatically">آليا</string>
|
|
||||||
<string name="battery_optimizations_enabled">وضع تحسين أداء البطارية مفعّل</string>
|
<string name="battery_optimizations_enabled">وضع تحسين أداء البطارية مفعّل</string>
|
||||||
<string name="disable">تعطيل</string>
|
<string name="disable">تعطيل</string>
|
||||||
<string name="selection_too_large">المساحة المحددة كبيرة جدا</string>
|
<string name="selection_too_large">المساحة المحددة كبيرة جدا</string>
|
||||||
|
@ -653,6 +652,7 @@
|
||||||
<string name="notification_group_messages">رسائل</string>
|
<string name="notification_group_messages">رسائل</string>
|
||||||
<string name="messages_channel_name">رسائل</string>
|
<string name="messages_channel_name">رسائل</string>
|
||||||
<string name="pref_more_notification_settings">إعدادات الإشعار</string>
|
<string name="pref_more_notification_settings">إعدادات الإشعار</string>
|
||||||
|
<string name="pref_more_notification_settings_summary">الأهمية ، الصوت ، الإهتزاز</string>
|
||||||
<string name="video_compression_channel_name">ضغط الفيديو</string>
|
<string name="video_compression_channel_name">ضغط الفيديو</string>
|
||||||
<string name="view_media">اعرض الوسائط</string>
|
<string name="view_media">اعرض الوسائط</string>
|
||||||
<string name="view_users">اعرض المشارِكين</string>
|
<string name="view_users">اعرض المشارِكين</string>
|
||||||
|
|
|
@ -115,7 +115,6 @@
|
||||||
<string name="pref_sound">Тон на звънене</string>
|
<string name="pref_sound">Тон на звънене</string>
|
||||||
<string name="pref_sound_summary">Изпълнение на звук при получаване на ново съобщение</string>
|
<string name="pref_sound_summary">Изпълнение на звук при получаване на ново съобщение</string>
|
||||||
<string name="pref_notification_grace_period">Период на пренебрегване</string>
|
<string name="pref_notification_grace_period">Период на пренебрегване</string>
|
||||||
<string name="pref_notification_grace_period_summary">Времето, през което Conversations няма да прави нищо, след като забележи дейност на друго устройство</string>
|
|
||||||
<string name="pref_advanced_options">Разширени</string>
|
<string name="pref_advanced_options">Разширени</string>
|
||||||
<string name="pref_never_send_crash">Никога да не се изпращат доклади за сривове</string>
|
<string name="pref_never_send_crash">Никога да не се изпращат доклади за сривове</string>
|
||||||
<string name="pref_never_send_crash_summary">Изпращайки проследявания на стека, Вие помагате за непрекъснатото развитие на Conversations</string>
|
<string name="pref_never_send_crash_summary">Изпращайки проследявания на стека, Вие помагате за непрекъснатото развитие на Conversations</string>
|
||||||
|
@ -268,10 +267,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Край</string>
|
<string name="title_pref_quiet_hours_end_time">Край</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Включване на тихите часове</string>
|
<string name="title_pref_enable_quiet_hours">Включване на тихите часове</string>
|
||||||
<string name="pref_quiet_hours_summary">Известията ще бъдат заглушени по време на тихите часове</string>
|
<string name="pref_quiet_hours_summary">Известията ще бъдат заглушени по време на тихите часове</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Бутонът за изпращане показва състоянието</string>
|
|
||||||
<string name="pref_use_indicate_received">Изискване на отчет за съобщенията</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Получените съобщения ще бъдат отбелязани със зелена отметка, ако това се поддържа</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Оцветяване на бутона за изпращане в зависимост от състоянието на контакта</string>
|
|
||||||
<string name="pref_expert_options_other">Други</string>
|
<string name="pref_expert_options_other">Други</string>
|
||||||
<string name="pref_autojoin">Синхронизиране с отметките</string>
|
<string name="pref_autojoin">Синхронизиране с отметките</string>
|
||||||
<string name="pref_autojoin_summary">Присъединяване и напускане на групови разговори според флага за автоматично присъединяване в отметките.</string>
|
<string name="pref_autojoin_summary">Присъединяване и напускане на групови разговори според флага за автоматично присъединяване в отметките.</string>
|
||||||
|
@ -474,9 +469,7 @@
|
||||||
<string name="notify_never">Известията са изключени</string>
|
<string name="notify_never">Известията са изключени</string>
|
||||||
<string name="notify_paused">Известията са спрени временно</string>
|
<string name="notify_paused">Известията са спрени временно</string>
|
||||||
<string name="pref_picture_compression">Компресия на изображенията</string>
|
<string name="pref_picture_compression">Компресия на изображенията</string>
|
||||||
<string name="pref_picture_compression_summary">Преоразмеряване и компресиране на изображенията</string>
|
|
||||||
<string name="always">Винаги</string>
|
<string name="always">Винаги</string>
|
||||||
<string name="automatically">Автоматично</string>
|
|
||||||
<string name="battery_optimizations_enabled">Оптимизациите за използв. на батерията са вкл.</string>
|
<string name="battery_optimizations_enabled">Оптимизациите за използв. на батерията са вкл.</string>
|
||||||
<string name="battery_optimizations_enabled_explained">Устройството Ви прилага сериозни оптимизации за използването на батерията върху Conversations, а те може да доведат до забавени известия и дори пропуснати съобщения.\nПрепоръчително е до ги изключите.</string>
|
<string name="battery_optimizations_enabled_explained">Устройството Ви прилага сериозни оптимизации за използването на батерията върху Conversations, а те може да доведат до забавени известия и дори пропуснати съобщения.\nПрепоръчително е до ги изключите.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">Устройството Ви прилага сериозни оптимизации за използването на батерията върху Conversations, а те може да доведат до забавени известия и дори пропуснати съобщения.\n\nСега ще Ви бъде предложено да ги изключите.</string>
|
<string name="battery_optimizations_enabled_dialog">Устройството Ви прилага сериозни оптимизации за използването на батерията върху Conversations, а те може да доведат до забавени известия и дори пропуснати съобщения.\n\nСега ще Ви бъде предложено да ги изключите.</string>
|
||||||
|
|
|
@ -115,7 +115,6 @@
|
||||||
<string name="pref_sound">So d\'avís</string>
|
<string name="pref_sound">So d\'avís</string>
|
||||||
<string name="pref_sound_summary">Reprodueix un so quan arribi un missatge nou</string>
|
<string name="pref_sound_summary">Reprodueix un so quan arribi un missatge nou</string>
|
||||||
<string name="pref_notification_grace_period">Període de gràcia</string>
|
<string name="pref_notification_grace_period">Període de gràcia</string>
|
||||||
<string name="pref_notification_grace_period_summary">El temps que el Conversations guarda silenci després de veure activitat en un altre dispositiu</string>
|
|
||||||
<string name="pref_advanced_options">Avançat</string>
|
<string name="pref_advanced_options">Avançat</string>
|
||||||
<string name="pref_never_send_crash">Mai enviïs informes d\'errors</string>
|
<string name="pref_never_send_crash">Mai enviïs informes d\'errors</string>
|
||||||
<string name="pref_never_send_crash_summary">Amb l\'enviament de traces d\'execució ajudeu al desenvolupament futur del Conversations</string>
|
<string name="pref_never_send_crash_summary">Amb l\'enviament de traces d\'execució ajudeu al desenvolupament futur del Conversations</string>
|
||||||
|
@ -268,10 +267,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Hora de finalització</string>
|
<string name="title_pref_quiet_hours_end_time">Hora de finalització</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Habilitar hores de silenci</string>
|
<string name="title_pref_enable_quiet_hours">Habilitar hores de silenci</string>
|
||||||
<string name="pref_quiet_hours_summary">Les notificacions seràn silenciades a les hores de silenci</string>
|
<string name="pref_quiet_hours_summary">Les notificacions seràn silenciades a les hores de silenci</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Botó d\'indicació de l\'estatus enviar</string>
|
|
||||||
<string name="pref_use_indicate_received">Rebuts de sol.licituds dels missatges</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Els missatges rebuts seràn marcats amb uns ticks verds si ho admet</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Pintar el botó d\'enviament per indicar l\'estatus del contacte</string>
|
|
||||||
<string name="pref_expert_options_other">Altres</string>
|
<string name="pref_expert_options_other">Altres</string>
|
||||||
<string name="toast_message_omemo_fingerprint">S\'ha copiat l\'empremta digital d\'OMEMO al porta-retalls.</string>
|
<string name="toast_message_omemo_fingerprint">S\'ha copiat l\'empremta digital d\'OMEMO al porta-retalls.</string>
|
||||||
<string name="conference_banned">Estàs prohibit en aquest xat de grup</string>
|
<string name="conference_banned">Estàs prohibit en aquest xat de grup</string>
|
||||||
|
@ -479,9 +474,7 @@ mentrestant.</string>
|
||||||
<string name="notify_never">S\'han desactivat les notificacions</string>
|
<string name="notify_never">S\'han desactivat les notificacions</string>
|
||||||
<string name="notify_paused">S\'han pausat les notificacions</string>
|
<string name="notify_paused">S\'han pausat les notificacions</string>
|
||||||
<string name="pref_picture_compression">Compressió d\'imatge</string>
|
<string name="pref_picture_compression">Compressió d\'imatge</string>
|
||||||
<string name="pref_picture_compression_summary">Redimensionar i comprimir imatges</string>
|
|
||||||
<string name="always">Sempre</string>
|
<string name="always">Sempre</string>
|
||||||
<string name="automatically">Automàticament</string>
|
|
||||||
<string name="battery_optimizations_enabled">Optimitzacions de la bateria habilitades</string>
|
<string name="battery_optimizations_enabled">Optimitzacions de la bateria habilitades</string>
|
||||||
<string name="battery_optimizations_enabled_explained">El vostre dispositiu fa algunes optimitzacions pesades de la bateria i Conversations
|
<string name="battery_optimizations_enabled_explained">El vostre dispositiu fa algunes optimitzacions pesades de la bateria i Conversations
|
||||||
pot provocar notificacions retardades o fins i tot pèrdua de
|
pot provocar notificacions retardades o fins i tot pèrdua de
|
||||||
|
|
|
@ -98,7 +98,6 @@
|
||||||
<string name="pref_sound">Tón upozornění</string>
|
<string name="pref_sound">Tón upozornění</string>
|
||||||
<string name="pref_sound_summary">Přehrát zvuk při přijetí nové zprávy</string>
|
<string name="pref_sound_summary">Přehrát zvuk při přijetí nové zprávy</string>
|
||||||
<string name="pref_notification_grace_period">Časová lhůta</string>
|
<string name="pref_notification_grace_period">Časová lhůta</string>
|
||||||
<string name="pref_notification_grace_period_summary">Časová lhůta po kterou bude Conversations v tichém režimu při zaznamenání aktivity na jiném přístroji</string>
|
|
||||||
<string name="pref_advanced_options">Rozšířené</string>
|
<string name="pref_advanced_options">Rozšířené</string>
|
||||||
<string name="pref_never_send_crash">Neodesílat detaily o pádu aplikace</string>
|
<string name="pref_never_send_crash">Neodesílat detaily o pádu aplikace</string>
|
||||||
<string name="pref_never_send_crash_summary">Zasláním detailů o důvodu selhání pomůžete dalšímu vývoji aplikace Konverzace</string>
|
<string name="pref_never_send_crash_summary">Zasláním detailů o důvodu selhání pomůžete dalšímu vývoji aplikace Konverzace</string>
|
||||||
|
@ -230,10 +229,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Dokdy</string>
|
<string name="title_pref_quiet_hours_end_time">Dokdy</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Povolit tichý režim</string>
|
<string name="title_pref_enable_quiet_hours">Povolit tichý režim</string>
|
||||||
<string name="pref_quiet_hours_summary">Upozornění budou během tichého režimu ztlumena</string>
|
<string name="pref_quiet_hours_summary">Upozornění budou během tichého režimu ztlumena</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Tlačítko pro odeslání zobrazuje stav</string>
|
|
||||||
<string name="pref_use_indicate_received">Požadovat oznámení o přijetí</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Přijaté zprávy budou označeny zeleně, pokud je funkce podporována</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Obarvit tlačítko odesílání barvou indikující stavu kontaktu</string>
|
|
||||||
<string name="pref_expert_options_other">Další</string>
|
<string name="pref_expert_options_other">Další</string>
|
||||||
<string name="toast_message_omemo_fingerprint">OMEMO otisk zkopírován do schránky!</string>
|
<string name="toast_message_omemo_fingerprint">OMEMO otisk zkopírován do schránky!</string>
|
||||||
<string name="using_account">za použití účtu %s</string>
|
<string name="using_account">za použití účtu %s</string>
|
||||||
|
@ -396,7 +391,6 @@
|
||||||
<string name="notify_never">Upozornění vypnuta</string>
|
<string name="notify_never">Upozornění vypnuta</string>
|
||||||
<string name="notify_paused">Upozornění pozastavena</string>
|
<string name="notify_paused">Upozornění pozastavena</string>
|
||||||
<string name="always">Vždy</string>
|
<string name="always">Vždy</string>
|
||||||
<string name="automatically">Automaticky</string>
|
|
||||||
<string name="battery_optimizations_enabled">Povolena optimalizace využití baterie</string>
|
<string name="battery_optimizations_enabled">Povolena optimalizace využití baterie</string>
|
||||||
<string name="battery_optimizations_enabled_explained">Tento přístroj provádí agresivní optimalizace využití baterie pro aplikaci Conversations. Ty mohou způsobit zpoždění upozornění nebo ztrátu zpráv.\nJe doporučeno tyto vypnout.</string>
|
<string name="battery_optimizations_enabled_explained">Tento přístroj provádí agresivní optimalizace využití baterie pro aplikaci Conversations. Ty mohou způsobit zpoždění upozornění nebo ztrátu zpráv.\nJe doporučeno tyto vypnout.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">Tento přístroj provádí agresivní optimalizace využití baterie pro aplikaci Conversations. Ty mohou způsobit zpoždění upozornění nebo ztrátu zpráv.\nnyní budete vyzváni k jejich vypnutí.</string>
|
<string name="battery_optimizations_enabled_dialog">Tento přístroj provádí agresivní optimalizace využití baterie pro aplikaci Conversations. Ty mohou způsobit zpoždění upozornění nebo ztrátu zpráv.\nnyní budete vyzváni k jejich vypnutí.</string>
|
||||||
|
|
|
@ -73,7 +73,7 @@
|
||||||
<string name="problem_connecting_to_account">Es gibt Probleme beim Verbindungsaufbau mit einem Konto</string>
|
<string name="problem_connecting_to_account">Es gibt Probleme beim Verbindungsaufbau mit einem Konto</string>
|
||||||
<string name="problem_connecting_to_accounts">Es gibt Probleme beim Verbindungsaufbau mit mehreren Konten</string>
|
<string name="problem_connecting_to_accounts">Es gibt Probleme beim Verbindungsaufbau mit mehreren Konten</string>
|
||||||
<string name="touch_to_fix">Hier antippen, um deine Konten zu verwalten</string>
|
<string name="touch_to_fix">Hier antippen, um deine Konten zu verwalten</string>
|
||||||
<string name="attach_file">Datei hinzufügen</string>
|
<string name="attach_file">Datei auswählen</string>
|
||||||
<string name="not_in_roster">Der Kontakt ist nicht in deiner Kontaktliste. Möchtest du ihn hinzufügen?</string>
|
<string name="not_in_roster">Der Kontakt ist nicht in deiner Kontaktliste. Möchtest du ihn hinzufügen?</string>
|
||||||
<string name="add_contact">Kontakt hinzufügen</string>
|
<string name="add_contact">Kontakt hinzufügen</string>
|
||||||
<string name="send_failed">Zustellung fehlgeschlagen</string>
|
<string name="send_failed">Zustellung fehlgeschlagen</string>
|
||||||
|
@ -119,7 +119,7 @@
|
||||||
<string name="pref_sound">Benachrichtigungston</string>
|
<string name="pref_sound">Benachrichtigungston</string>
|
||||||
<string name="pref_sound_summary">Benachrichtigungston wiedergeben</string>
|
<string name="pref_sound_summary">Benachrichtigungston wiedergeben</string>
|
||||||
<string name="pref_notification_grace_period">Schonfrist</string>
|
<string name="pref_notification_grace_period">Schonfrist</string>
|
||||||
<string name="pref_notification_grace_period_summary">Zeitspanne, in der Conversations still bleibt, nachdem es Aktivitäten auf einem anderen Gerät erkannt hat.</string>
|
<string name="pref_notification_grace_period_summary">Die Zeitspanne, in der Benachrichtigungen nach der Erkennung von Aktivitäten auf einem deiner anderen Geräte unterdrückt werden.</string>
|
||||||
<string name="pref_advanced_options">Erweitert</string>
|
<string name="pref_advanced_options">Erweitert</string>
|
||||||
<string name="pref_never_send_crash">Niemals Absturzberichte senden</string>
|
<string name="pref_never_send_crash">Niemals Absturzberichte senden</string>
|
||||||
<string name="pref_never_send_crash_summary">Wenn du Absturzberichte einschickst, hilfst du Conversations stetig zu verbessern</string>
|
<string name="pref_never_send_crash_summary">Wenn du Absturzberichte einschickst, hilfst du Conversations stetig zu verbessern</string>
|
||||||
|
@ -281,10 +281,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Ende</string>
|
<string name="title_pref_quiet_hours_end_time">Ende</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Ruhige Stunden aktivieren</string>
|
<string name="title_pref_enable_quiet_hours">Ruhige Stunden aktivieren</string>
|
||||||
<string name="pref_quiet_hours_summary">Benachrichtigungen sind während der ruhigen Stunden stumm.</string>
|
<string name="pref_quiet_hours_summary">Benachrichtigungen sind während der ruhigen Stunden stumm.</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">\"Senden\"-Schaltfläche zeigt Online-Status an</string>
|
|
||||||
<string name="pref_use_indicate_received">Empfangsbestätigungen anfragen</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Empfangene Nachrichten werden mit einem grünen Häkchen markiert. Bitte beachte, dass dies nicht in allen Fällen funktioniert.</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">\"Senden\"-Schaltfläche einfärben, um den Online-Status des Kontakts anzuzeigen</string>
|
|
||||||
<string name="pref_expert_options_other">Sonstiges</string>
|
<string name="pref_expert_options_other">Sonstiges</string>
|
||||||
<string name="pref_autojoin">Mit Lesezeichen synchronisieren</string>
|
<string name="pref_autojoin">Mit Lesezeichen synchronisieren</string>
|
||||||
<string name="pref_autojoin_summary">Tritt Gruppenchats bei und verlasse sie entsprechend der Auto-Join-Funktion in deinen Lesezeichen.</string>
|
<string name="pref_autojoin_summary">Tritt Gruppenchats bei und verlasse sie entsprechend der Auto-Join-Funktion in deinen Lesezeichen.</string>
|
||||||
|
@ -512,9 +508,9 @@
|
||||||
<string name="notify_never">Benachrichtigungen deaktiviert</string>
|
<string name="notify_never">Benachrichtigungen deaktiviert</string>
|
||||||
<string name="notify_paused">Benachrichtigungen pausiert</string>
|
<string name="notify_paused">Benachrichtigungen pausiert</string>
|
||||||
<string name="pref_picture_compression">Bilder komprimieren</string>
|
<string name="pref_picture_compression">Bilder komprimieren</string>
|
||||||
<string name="pref_picture_compression_summary">Bildgröße ändern und komprimieren</string>
|
<string name="pref_picture_compression_summary">Tipp: Nutze ‘Datei auswählen’ statt ‘Bild auswählen’ um ein einzelnes Bild, unabhängig von dieser Einstellung, unkomprimiert zu übertragen.</string>
|
||||||
<string name="always">Immer</string>
|
<string name="always">Immer</string>
|
||||||
<string name="automatically">Automatisch</string>
|
<string name="large_images_only">Nur große Bilder</string>
|
||||||
<string name="battery_optimizations_enabled">Akkuoptimierung aktiv</string>
|
<string name="battery_optimizations_enabled">Akkuoptimierung aktiv</string>
|
||||||
<string name="battery_optimizations_enabled_explained">Dein Telefon verwendet Akkuoptimierungen bei Conversations, welche verspätete Benachrichtigungen oder Nachrichtenverlust verursachen können.\nEs wird empfohlen, diese zu deaktivieren.</string>
|
<string name="battery_optimizations_enabled_explained">Dein Telefon verwendet Akkuoptimierungen bei Conversations, welche verspätete Benachrichtigungen oder Nachrichtenverlust verursachen können.\nEs wird empfohlen, diese zu deaktivieren.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">Dein Telefon verwendet Akkuoptimierungen bei Conversations, welche verspätete Benachrichtigungen oder Nachrichtenverlust verursachen können.\n\nDu wirst nun gefragt, diese zu deaktivieren.</string>
|
<string name="battery_optimizations_enabled_dialog">Dein Telefon verwendet Akkuoptimierungen bei Conversations, welche verspätete Benachrichtigungen oder Nachrichtenverlust verursachen können.\n\nDu wirst nun gefragt, diese zu deaktivieren.</string>
|
||||||
|
@ -858,7 +854,7 @@
|
||||||
<string name="discover_channels">Channels entdecken</string>
|
<string name="discover_channels">Channels entdecken</string>
|
||||||
<string name="search_channels">Channels suchen</string>
|
<string name="search_channels">Channels suchen</string>
|
||||||
<string name="channel_discovery_opt_in_title">Mögliche Datenschutzverletzung!</string>
|
<string name="channel_discovery_opt_in_title">Mögliche Datenschutzverletzung!</string>
|
||||||
<string name="channel_discover_opt_in_message"><![CDATA[Die Channel-Entdeckung verwendet einen Drittanbieterservice namens <a href="https://search.jabber.network">search.jabber.network</a>.<br><br>Wenn du diese Funktion verwendest, werden deine IP-Adresse und deine Suchbegriffe an diesen Dienst übertragen. Weitere Informationen findest du in der <a href="https://search.jabber.network/privacy">Datenschutzerklärung</a>.]]></string>
|
<string name="channel_discover_opt_in_message"><![CDATA[Die Channelsuche verwendet einen Drittanbieterservice namens <a href="https://search.jabber.network">search.jabber.network</a>.<br><br>Wenn du diese Funktion verwendest, werden deine IP-Adresse und deine Suchbegriffe an diesen Dienst übertragen. Weitere Informationen findest du in der <a href="https://search.jabber.network/privacy">Datenschutzerklärung</a>.]]></string>
|
||||||
<string name="i_already_have_an_account">Ich habe bereits ein Konto</string>
|
<string name="i_already_have_an_account">Ich habe bereits ein Konto</string>
|
||||||
<string name="add_existing_account">Vorhandenes Konto hinzufügen</string>
|
<string name="add_existing_account">Vorhandenes Konto hinzufügen</string>
|
||||||
<string name="register_new_account">Neues Konto erstellen</string>
|
<string name="register_new_account">Neues Konto erstellen</string>
|
||||||
|
@ -874,4 +870,12 @@
|
||||||
<string name="please_enter_password">Bitte gib das Passwort für dieses Konto ein</string>
|
<string name="please_enter_password">Bitte gib das Passwort für dieses Konto ein</string>
|
||||||
<string name="unable_to_perform_this_action">Diese Aktion kann nicht ausgeführt werden</string>
|
<string name="unable_to_perform_this_action">Diese Aktion kann nicht ausgeführt werden</string>
|
||||||
<string name="open_join_dialog">Öffentlichen Channel beitreten...</string>
|
<string name="open_join_dialog">Öffentlichen Channel beitreten...</string>
|
||||||
|
<string name="sharing_application_not_grant_permission">Die teilende App hat keine Berechtigung für den Zugriff auf diese Datei erteilt.</string>
|
||||||
|
<string name="group_chats_and_channels"><![CDATA[Gruppenchats & Channels]]></string>
|
||||||
|
<string name="jabber_network">jabber.network</string>
|
||||||
|
<string name="local_server">Lokaler Server</string>
|
||||||
|
<string name="pref_channel_discovery_summary">Die meisten Benutzer sollten hier ‘jabber.network’ auswählen um bessere Vorschläge aus dem gesamten, öffentlichen XMPP Ökosystem zu bekommen.</string>
|
||||||
|
<string name="pref_channel_discovery">Channelsuchmethode</string>
|
||||||
|
<string name="backup">Sicherungskopie</string>
|
||||||
|
<string name="category_about">Über</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -118,7 +118,6 @@
|
||||||
<string name="pref_sound">Ήχος</string>
|
<string name="pref_sound">Ήχος</string>
|
||||||
<string name="pref_sound_summary">Κουδούνισμα όταν δέχεστε νέο μήνυμα</string>
|
<string name="pref_sound_summary">Κουδούνισμα όταν δέχεστε νέο μήνυμα</string>
|
||||||
<string name="pref_notification_grace_period">Περίοδος Χάριτος</string>
|
<string name="pref_notification_grace_period">Περίοδος Χάριτος</string>
|
||||||
<string name="pref_notification_grace_period_summary">Η διάρκεια του χρόνου που το Conversations σταματάει τη λειτουργία του καθώς ανιχνεύθηκε δραστηριόητα σε άλλη συσκευή</string>
|
|
||||||
<string name="pref_advanced_options">Προχωρημένος</string>
|
<string name="pref_advanced_options">Προχωρημένος</string>
|
||||||
<string name="pref_never_send_crash">Να μην αποστέλλονται αναφορές λαθών</string>
|
<string name="pref_never_send_crash">Να μην αποστέλλονται αναφορές λαθών</string>
|
||||||
<string name="pref_never_send_crash_summary">Στέλνοντας ίχνη στοίβας βοηθάτε την συνεχόμενη ανάπτυξη του Conversations</string>
|
<string name="pref_never_send_crash_summary">Στέλνοντας ίχνη στοίβας βοηθάτε την συνεχόμενη ανάπτυξη του Conversations</string>
|
||||||
|
@ -281,10 +280,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Ώρα λήξης</string>
|
<string name="title_pref_quiet_hours_end_time">Ώρα λήξης</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Ενεργοποίηση ωρών ησυχίας</string>
|
<string name="title_pref_enable_quiet_hours">Ενεργοποίηση ωρών ησυχίας</string>
|
||||||
<string name="pref_quiet_hours_summary">Οι ειδοποιήσεις θα σιγαστούν κατά τις ώρες ησυχίας</string>
|
<string name="pref_quiet_hours_summary">Οι ειδοποιήσεις θα σιγαστούν κατά τις ώρες ησυχίας</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Το κουμπί αποστολής υποδηλώνει την κατάσταση</string>
|
|
||||||
<string name="pref_use_indicate_received">Αίτηση για αποδείξεις μηνυμάτων</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Τα ληφθέντα μηνύματα θα σημειώνονται με ένα πράσινο τικ, αν αυτό υποστηρίζεται</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Χρωματισμός του κουμπιού αποστολής ως ένδειξη κατάστασης επαφής</string>
|
|
||||||
<string name="pref_expert_options_other">Άλλο</string>
|
<string name="pref_expert_options_other">Άλλο</string>
|
||||||
<string name="pref_autojoin">Συγχρονισμός με σελιδοδείκτες</string>
|
<string name="pref_autojoin">Συγχρονισμός με σελιδοδείκτες</string>
|
||||||
<string name="pref_autojoin_summary">Συμμετοχή και έξοδος από ομαδικές συζητήσεις σύμφωνα με την επιλογή αυτόματης συμμετοχής στους σελιδοδείκτες σας.</string>
|
<string name="pref_autojoin_summary">Συμμετοχή και έξοδος από ομαδικές συζητήσεις σύμφωνα με την επιλογή αυτόματης συμμετοχής στους σελιδοδείκτες σας.</string>
|
||||||
|
@ -511,9 +506,7 @@
|
||||||
<string name="notify_never">Απενεργοποίηση ειδοποιήσεων</string>
|
<string name="notify_never">Απενεργοποίηση ειδοποιήσεων</string>
|
||||||
<string name="notify_paused">Παύση ειδοποιήσεων</string>
|
<string name="notify_paused">Παύση ειδοποιήσεων</string>
|
||||||
<string name="pref_picture_compression">Συμπίεση εικόνας</string>
|
<string name="pref_picture_compression">Συμπίεση εικόνας</string>
|
||||||
<string name="pref_picture_compression_summary">Σμίκρυνση και συμπίεση εικόνων</string>
|
|
||||||
<string name="always">Πάντα</string>
|
<string name="always">Πάντα</string>
|
||||||
<string name="automatically">Αυτόματα</string>
|
|
||||||
<string name="battery_optimizations_enabled">Ενεργοποίηση βελτιστοποίησης χρήσης μπαταρίας</string>
|
<string name="battery_optimizations_enabled">Ενεργοποίηση βελτιστοποίησης χρήσης μπαταρίας</string>
|
||||||
<string name="battery_optimizations_enabled_explained">Η συσκευή σας χρησιμοποιεί βελτιστοποίηση στην χρήση μπαταρίας του Conversations που μπορεί να οδηγήσει σε αργοπορημένες ειδοποιήσεις ή ακόμα και σε απώλεια μηνυμάτων.\nΠροτείνεται να την απενεργοποιήσετε</string>
|
<string name="battery_optimizations_enabled_explained">Η συσκευή σας χρησιμοποιεί βελτιστοποίηση στην χρήση μπαταρίας του Conversations που μπορεί να οδηγήσει σε αργοπορημένες ειδοποιήσεις ή ακόμα και σε απώλεια μηνυμάτων.\nΠροτείνεται να την απενεργοποιήσετε</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">Η συσκευή σας χρησιμοποιεί βελτιστοποίηση στην χρήση μπαταρίας του Conversations που μπορεί να οδηγήσει σε αργοπορημένες ειδοποιήσεις ή ακόμα και σε απώλεια μηνυμάτων.\nΘα σας ζητηθεί να την απενεργοποιήσετε.</string>
|
<string name="battery_optimizations_enabled_dialog">Η συσκευή σας χρησιμοποιεί βελτιστοποίηση στην χρήση μπαταρίας του Conversations που μπορεί να οδηγήσει σε αργοπορημένες ειδοποιήσεις ή ακόμα και σε απώλεια μηνυμάτων.\nΘα σας ζητηθεί να την απενεργοποιήσετε.</string>
|
||||||
|
|
|
@ -119,7 +119,7 @@
|
||||||
<string name="pref_sound">Tono</string>
|
<string name="pref_sound">Tono</string>
|
||||||
<string name="pref_sound_summary">Reproduce tono con la notificación</string>
|
<string name="pref_sound_summary">Reproduce tono con la notificación</string>
|
||||||
<string name="pref_notification_grace_period">Periodo de gracia</string>
|
<string name="pref_notification_grace_period">Periodo de gracia</string>
|
||||||
<string name="pref_notification_grace_period_summary">Periodo de tiempo en el que Conversations deshabilita las notificaciones tras ver que tienes actividad en otro de tus dispositivos</string>
|
<string name="pref_notification_grace_period_summary">El periodo de tiempo en el que las notificaciones están silenciadas tras detectar actividad en otro de tus dispositivos.</string>
|
||||||
<string name="pref_advanced_options">Avanzado</string>
|
<string name="pref_advanced_options">Avanzado</string>
|
||||||
<string name="pref_never_send_crash">Nunca informar de errores</string>
|
<string name="pref_never_send_crash">Nunca informar de errores</string>
|
||||||
<string name="pref_never_send_crash_summary">Si envías registros de error ayudas al desarrollo de Conversations</string>
|
<string name="pref_never_send_crash_summary">Si envías registros de error ayudas al desarrollo de Conversations</string>
|
||||||
|
@ -281,10 +281,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Hora de fin</string>
|
<string name="title_pref_quiet_hours_end_time">Hora de fin</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Habilitar horario de silencio</string>
|
<string name="title_pref_enable_quiet_hours">Habilitar horario de silencio</string>
|
||||||
<string name="pref_quiet_hours_summary">Las notificaciones serán silenciadas durante el horario de silencio</string>
|
<string name="pref_quiet_hours_summary">Las notificaciones serán silenciadas durante el horario de silencio</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Botón enviar indica estado</string>
|
|
||||||
<string name="pref_use_indicate_received">Solicitar entrega de mensaje</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Cuando el contacto reciba el mensaje será indicado con una marca verde. Cuidado, esto podría no funcionar en todos los casos.</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">El color del botón enviar indica el estado del contacto</string>
|
|
||||||
<string name="pref_expert_options_other">Otros</string>
|
<string name="pref_expert_options_other">Otros</string>
|
||||||
<string name="pref_autojoin">Sincronizar marcadores</string>
|
<string name="pref_autojoin">Sincronizar marcadores</string>
|
||||||
<string name="pref_autojoin_summary">Unirse y salir de las conversaciones en grupo de acuerdo con la marca de unirse automáticamente de tus marcadores.</string>
|
<string name="pref_autojoin_summary">Unirse y salir de las conversaciones en grupo de acuerdo con la marca de unirse automáticamente de tus marcadores.</string>
|
||||||
|
@ -337,6 +333,7 @@
|
||||||
<string name="x_file_offered_for_download">%s ofrecido para descarga</string>
|
<string name="x_file_offered_for_download">%s ofrecido para descarga</string>
|
||||||
<string name="cancel_transmission">Cancelar transferencia</string>
|
<string name="cancel_transmission">Cancelar transferencia</string>
|
||||||
<string name="file_transmission_failed">falló la transferencia del archivo</string>
|
<string name="file_transmission_failed">falló la transferencia del archivo</string>
|
||||||
|
<string name="file_transmission_cancelled">transferencia del fichero cancelada</string>
|
||||||
<string name="file_deleted">El archivo ha sido eliminado</string>
|
<string name="file_deleted">El archivo ha sido eliminado</string>
|
||||||
<string name="no_application_found_to_open_file">No se ha encontrado ninguna aplicación para abrir el archivo</string>
|
<string name="no_application_found_to_open_file">No se ha encontrado ninguna aplicación para abrir el archivo</string>
|
||||||
<string name="no_application_found_to_open_link">No se ha encontrado aplicación para abrir el link</string>
|
<string name="no_application_found_to_open_link">No se ha encontrado aplicación para abrir el link</string>
|
||||||
|
@ -511,9 +508,9 @@
|
||||||
<string name="notify_never">Notificaciones deshabilitadas</string>
|
<string name="notify_never">Notificaciones deshabilitadas</string>
|
||||||
<string name="notify_paused">Notificaciones pausadas</string>
|
<string name="notify_paused">Notificaciones pausadas</string>
|
||||||
<string name="pref_picture_compression">Compresión de imagen</string>
|
<string name="pref_picture_compression">Compresión de imagen</string>
|
||||||
<string name="pref_picture_compression_summary">Redimensionar y comprimir las imágenes</string>
|
<string name="pref_picture_compression_summary">Pista: Usa \'Seleccionar archivo\' en lugar de \'Seleccionar imagen\' para enviar imágenes individuales sin comprimir con independencia de los ajustes.</string>
|
||||||
<string name="always">Siempre</string>
|
<string name="always">Siempre</string>
|
||||||
<string name="automatically">Automáticamente</string>
|
<string name="large_images_only">Solo imágenes de gran tamaño</string>
|
||||||
<string name="battery_optimizations_enabled">Optimizaciones de uso de batería habilitadas</string>
|
<string name="battery_optimizations_enabled">Optimizaciones de uso de batería habilitadas</string>
|
||||||
<string name="battery_optimizations_enabled_explained">Tu dispositivo está realizando optimizaciones de uso de batería en Conversations que pueden hacer que los mensajes se retrasen o incluso hacer que se pierdan.\nEs recomendable deshabilitarlas.</string>
|
<string name="battery_optimizations_enabled_explained">Tu dispositivo está realizando optimizaciones de uso de batería en Conversations que pueden hacer que los mensajes se retrasen o incluso hacer que se pierdan.\nEs recomendable deshabilitarlas.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">Tu dispositivo está realizando optimizaciones de uso de batería en Conversations que pueden hacer que los mensajes se retrasen o incluso hacer que se pierdan.\n\nEl sistema te preguntará ahora para deshabilitarlas.</string>
|
<string name="battery_optimizations_enabled_dialog">Tu dispositivo está realizando optimizaciones de uso de batería en Conversations que pueden hacer que los mensajes se retrasen o incluso hacer que se pierdan.\n\nEl sistema te preguntará ahora para deshabilitarlas.</string>
|
||||||
|
@ -857,6 +854,7 @@
|
||||||
<string name="discover_channels">Descubrir canales</string>
|
<string name="discover_channels">Descubrir canales</string>
|
||||||
<string name="search_channels">Buscar canales</string>
|
<string name="search_channels">Buscar canales</string>
|
||||||
<string name="channel_discovery_opt_in_title">¡Posible violación de privacidad!</string>
|
<string name="channel_discovery_opt_in_title">¡Posible violación de privacidad!</string>
|
||||||
|
<string name="channel_discover_opt_in_message"><![CDATA[La búsqueda de canales usa un servicio de terceros llamado <a href="https://search.jabber.network">search.jabbercat.org</a>.<br><br>Usando esta funcionalidad transmitirás tu dirección IP y los términos buscados a este servicio. Ver su <a href="https://search.jabber.network/privacy">Política de Privacidad</a> para más información.]]> </string>
|
||||||
<string name="i_already_have_an_account">Ya tengo una cuenta</string>
|
<string name="i_already_have_an_account">Ya tengo una cuenta</string>
|
||||||
<string name="add_existing_account">Añadir una cuenta existente</string>
|
<string name="add_existing_account">Añadir una cuenta existente</string>
|
||||||
<string name="register_new_account">Registrar una cuenta nueva</string>
|
<string name="register_new_account">Registrar una cuenta nueva</string>
|
||||||
|
@ -872,4 +870,12 @@
|
||||||
<string name="please_enter_password">Por favor ingrese la contraseña para esta cuenta</string>
|
<string name="please_enter_password">Por favor ingrese la contraseña para esta cuenta</string>
|
||||||
<string name="unable_to_perform_this_action">No se ha podido realizar esta acción</string>
|
<string name="unable_to_perform_this_action">No se ha podido realizar esta acción</string>
|
||||||
<string name="open_join_dialog">Unirse a canal público...</string>
|
<string name="open_join_dialog">Unirse a canal público...</string>
|
||||||
|
<string name="sharing_application_not_grant_permission">La aplicación \'Compartir\' no concedió permisos para acceder a este fichero.</string>
|
||||||
|
<string name="group_chats_and_channels"><![CDATA[Conversaciones en grupo & Canales]]></string>
|
||||||
|
<string name="jabber_network">jabber.network</string>
|
||||||
|
<string name="local_server">Servidor local</string>
|
||||||
|
<string name="pref_channel_discovery_summary">La mayoría de los usuarios deberían elegir \'jabber.network\' para mejores sugerencias de todo el ecosistema público XMPP.</string>
|
||||||
|
<string name="pref_channel_discovery">Método para la búsqueda de Canales</string>
|
||||||
|
<string name="backup">Copia de respaldo</string>
|
||||||
|
<string name="category_about">Acerca de</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -119,7 +119,6 @@
|
||||||
<string name="pref_sound">Dei-tonua</string>
|
<string name="pref_sound">Dei-tonua</string>
|
||||||
<string name="pref_sound_summary">Mezu berri bat heltzerakoan dei-tonua jo</string>
|
<string name="pref_sound_summary">Mezu berri bat heltzerakoan dei-tonua jo</string>
|
||||||
<string name="pref_notification_grace_period">Grazia epea</string>
|
<string name="pref_notification_grace_period">Grazia epea</string>
|
||||||
<string name="pref_notification_grace_period_summary">Beste gailu batean aktibitatea ikusi ostean Conversationsek isilik mantentzen den denbora</string>
|
|
||||||
<string name="pref_advanced_options">Aurreratua</string>
|
<string name="pref_advanced_options">Aurreratua</string>
|
||||||
<string name="pref_never_send_crash">Gelditze txostenik ez bidali inoiz</string>
|
<string name="pref_never_send_crash">Gelditze txostenik ez bidali inoiz</string>
|
||||||
<string name="pref_never_send_crash_summary">Akats harraskak bidaliz Conversationsen garapenean laguntzen duzu</string>
|
<string name="pref_never_send_crash_summary">Akats harraskak bidaliz Conversationsen garapenean laguntzen duzu</string>
|
||||||
|
@ -281,10 +280,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Amaiera ordua</string>
|
<string name="title_pref_quiet_hours_end_time">Amaiera ordua</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Ordu lasaiak gaitu</string>
|
<string name="title_pref_enable_quiet_hours">Ordu lasaiak gaitu</string>
|
||||||
<string name="pref_quiet_hours_summary">Jakinarazpenak isilaraziko dira ordu lasaiak iraun bitartean </string>
|
<string name="pref_quiet_hours_summary">Jakinarazpenak isilaraziko dira ordu lasaiak iraun bitartean </string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Bidaltze botoiak egoera adierazten du</string>
|
|
||||||
<string name="pref_use_indicate_received">Mezuen jasotzea eskatu</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Jasotako mezuak marka berde batekin markatuko dira. Baliteke kasu guztietan ez funtzionatzea.</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Bidaltze botoia koloreztatu kontaktu baten egoera adierazteko</string>
|
|
||||||
<string name="pref_expert_options_other">Besteak</string>
|
<string name="pref_expert_options_other">Besteak</string>
|
||||||
<string name="pref_autojoin">Laster-markekin sinkronizatu</string>
|
<string name="pref_autojoin">Laster-markekin sinkronizatu</string>
|
||||||
<string name="pref_autojoin_summary">Taldeetan sartu eta taldeak utzi zure laster-marken auto-batu markaren arabera.</string>
|
<string name="pref_autojoin_summary">Taldeetan sartu eta taldeak utzi zure laster-marken auto-batu markaren arabera.</string>
|
||||||
|
@ -511,9 +506,7 @@
|
||||||
<string name="notify_never">Jakinarazpenak ezgaituta</string>
|
<string name="notify_never">Jakinarazpenak ezgaituta</string>
|
||||||
<string name="notify_paused">Jakinarazpenak gelditu dira</string>
|
<string name="notify_paused">Jakinarazpenak gelditu dira</string>
|
||||||
<string name="pref_picture_compression">Irudiak konprimatu</string>
|
<string name="pref_picture_compression">Irudiak konprimatu</string>
|
||||||
<string name="pref_picture_compression_summary">Irudiak konprimatu eta neurriz aldatu</string>
|
|
||||||
<string name="always">Beti</string>
|
<string name="always">Beti</string>
|
||||||
<string name="automatically">Automatikoki</string>
|
|
||||||
<string name="battery_optimizations_enabled">Bateriaren optimizazioak gaituta</string>
|
<string name="battery_optimizations_enabled">Bateriaren optimizazioak gaituta</string>
|
||||||
<string name="battery_optimizations_enabled_explained">Zure gailua jakinarazpen atzeratuak edota mezuen galera ekar lezaketen bateriaren optimizazio handiak egiten ari da Conversationsen.\nHoriek ezgaitzea gomendatzen da.</string>
|
<string name="battery_optimizations_enabled_explained">Zure gailua jakinarazpen atzeratuak edota mezuen galera ekar lezaketen bateriaren optimizazio handiak egiten ari da Conversationsen.\nHoriek ezgaitzea gomendatzen da.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">Zure gailua jakinarazpen atzeratuak edota mezuen galera ekar lezaketen bateriaren optimizazio handiak egiten ari da Conversationsen.\nJarraian hauek ezgaitzea eskatuko zaizu.</string>
|
<string name="battery_optimizations_enabled_dialog">Zure gailua jakinarazpen atzeratuak edota mezuen galera ekar lezaketen bateriaren optimizazio handiak egiten ari da Conversationsen.\nJarraian hauek ezgaitzea eskatuko zaizu.</string>
|
||||||
|
|
|
@ -119,7 +119,7 @@
|
||||||
<string name="pref_sound">Sonnerie</string>
|
<string name="pref_sound">Sonnerie</string>
|
||||||
<string name="pref_sound_summary">Jouer un son lors de la réception d\'un message</string>
|
<string name="pref_sound_summary">Jouer un son lors de la réception d\'un message</string>
|
||||||
<string name="pref_notification_grace_period">Période sans notification</string>
|
<string name="pref_notification_grace_period">Période sans notification</string>
|
||||||
<string name="pref_notification_grace_period_summary">Durée d\'inactivité de Conversations après avoir repéré un changement sur un autre appareil</string>
|
<string name="pref_notification_grace_period_summary">La durée pendant laquelle les notifications sont désactivées après la détection d\'une activité sur l\'un de vos autres appareils.</string>
|
||||||
<string name="pref_advanced_options">Avancé</string>
|
<string name="pref_advanced_options">Avancé</string>
|
||||||
<string name="pref_never_send_crash">Ne pas envoyer de rapports d\'erreurs</string>
|
<string name="pref_never_send_crash">Ne pas envoyer de rapports d\'erreurs</string>
|
||||||
<string name="pref_never_send_crash_summary">En envoyant des logs vous aidez le développement de Conversations.</string>
|
<string name="pref_never_send_crash_summary">En envoyant des logs vous aidez le développement de Conversations.</string>
|
||||||
|
@ -281,10 +281,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Heure de fin</string>
|
<string name="title_pref_quiet_hours_end_time">Heure de fin</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Activer les heures tranquilles</string>
|
<string name="title_pref_enable_quiet_hours">Activer les heures tranquilles</string>
|
||||||
<string name="pref_quiet_hours_summary">Les notifications seront muettes pendant les heures tranquilles.</string>
|
<string name="pref_quiet_hours_summary">Les notifications seront muettes pendant les heures tranquilles.</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Statut sur le bouton Envoyer</string>
|
|
||||||
<string name="pref_use_indicate_received">Accusés de réception</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Les messages reçus seront marqués d\'une coche verte (si supporté).</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Le bouton Envoyer change de couleur pour indiquer le statut du contact.</string>
|
|
||||||
<string name="pref_expert_options_other">Autres</string>
|
<string name="pref_expert_options_other">Autres</string>
|
||||||
<string name="pref_autojoin">Synchroniser avec les signets</string>
|
<string name="pref_autojoin">Synchroniser avec les signets</string>
|
||||||
<string name="pref_autojoin_summary">Rejoignez et quittez les discussions de groupe en fonction de l\'indicateur de jointure automatique dans vos favoris.</string>
|
<string name="pref_autojoin_summary">Rejoignez et quittez les discussions de groupe en fonction de l\'indicateur de jointure automatique dans vos favoris.</string>
|
||||||
|
@ -512,9 +508,7 @@
|
||||||
<string name="notify_never">Notifications désactivées</string>
|
<string name="notify_never">Notifications désactivées</string>
|
||||||
<string name="notify_paused">Notifications en pause</string>
|
<string name="notify_paused">Notifications en pause</string>
|
||||||
<string name="pref_picture_compression">Compression de l\'image</string>
|
<string name="pref_picture_compression">Compression de l\'image</string>
|
||||||
<string name="pref_picture_compression_summary">Redimensionner et compresser les images</string>
|
|
||||||
<string name="always">Toujours</string>
|
<string name="always">Toujours</string>
|
||||||
<string name="automatically">Automatiquement</string>
|
|
||||||
<string name="battery_optimizations_enabled">Optimisations de batterie activées</string>
|
<string name="battery_optimizations_enabled">Optimisations de batterie activées</string>
|
||||||
<string name="battery_optimizations_enabled_explained">Votre appareil applique sur Conversations des optimisations de batterie très strictes qui pourraient provoquer des retards dans les notifications, voire des pertes de messages.\nNous vous recommandons de les désactiver.</string>
|
<string name="battery_optimizations_enabled_explained">Votre appareil applique sur Conversations des optimisations de batterie très strictes qui pourraient provoquer des retards dans les notifications, voire des pertes de messages.\nNous vous recommandons de les désactiver.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">Votre appareil applique sur Conversations des optimisations de batterie très strictes qui pourraient provoquer des retards dans les notifications, voire des pertes de messages.\nVous allez maintenant avoir la possibilité de les désactiver.</string>
|
<string name="battery_optimizations_enabled_dialog">Votre appareil applique sur Conversations des optimisations de batterie très strictes qui pourraient provoquer des retards dans les notifications, voire des pertes de messages.\nVous allez maintenant avoir la possibilité de les désactiver.</string>
|
||||||
|
@ -874,4 +868,5 @@
|
||||||
<string name="please_enter_password">Veuillez saisir le mot de passe pour ce compte</string>
|
<string name="please_enter_password">Veuillez saisir le mot de passe pour ce compte</string>
|
||||||
<string name="unable_to_perform_this_action">Action impossible à réaliser</string>
|
<string name="unable_to_perform_this_action">Action impossible à réaliser</string>
|
||||||
<string name="open_join_dialog">Rejoindre le canal public ...</string>
|
<string name="open_join_dialog">Rejoindre le canal public ...</string>
|
||||||
|
<string name="sharing_application_not_grant_permission">L\'application de partage n\'a pas accordé la permission d\'accéder à ce fichier.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -119,7 +119,7 @@
|
||||||
<string name="pref_sound">Ton de aviso</string>
|
<string name="pref_sound">Ton de aviso</string>
|
||||||
<string name="pref_sound_summary">Emitir son cando chegue unha nova mensaxe</string>
|
<string name="pref_sound_summary">Emitir son cando chegue unha nova mensaxe</string>
|
||||||
<string name="pref_notification_grace_period">Período de graza</string>
|
<string name="pref_notification_grace_period">Período de graza</string>
|
||||||
<string name="pref_notification_grace_period_summary">O tempo que Conversations permanece silente despois de ver actividade en outro dispositivo</string>
|
<string name="pref_notification_grace_period_summary">O tempo no que as notificacións son silenciadas tras detectar actividade en algún dos teus outros dispositivos.</string>
|
||||||
<string name="pref_advanced_options">Avanzado</string>
|
<string name="pref_advanced_options">Avanzado</string>
|
||||||
<string name="pref_never_send_crash">Nunca enviar informe de erros</string>
|
<string name="pref_never_send_crash">Nunca enviar informe de erros</string>
|
||||||
<string name="pref_never_send_crash_summary">Enviando volcados de pilas axudas ao desenvolvemento de Conversations</string>
|
<string name="pref_never_send_crash_summary">Enviando volcados de pilas axudas ao desenvolvemento de Conversations</string>
|
||||||
|
@ -281,10 +281,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Hora de finalización</string>
|
<string name="title_pref_quiet_hours_end_time">Hora de finalización</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Establecer horario sen notificacións</string>
|
<string name="title_pref_enable_quiet_hours">Establecer horario sen notificacións</string>
|
||||||
<string name="pref_quiet_hours_summary">As notificacións serán silenciadas durante estas horas</string>
|
<string name="pref_quiet_hours_summary">As notificacións serán silenciadas durante estas horas</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">O botón Enviar indica o estado</string>
|
|
||||||
<string name="pref_use_indicate_received">Solicitar avisos de recepción</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">As mensaxes recibidas marcaránse cun sinal verde si este está admitido</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Boton de enviar de cor para indicar o estado do contacto</string>
|
|
||||||
<string name="pref_expert_options_other">Outro</string>
|
<string name="pref_expert_options_other">Outro</string>
|
||||||
<string name="pref_autojoin">Sincronizar cos marcadores</string>
|
<string name="pref_autojoin">Sincronizar cos marcadores</string>
|
||||||
<string name="pref_autojoin_summary">Unirse e deixar conversas de grupo de acordo coa marca auto-unirse nos seus marcadores.</string>
|
<string name="pref_autojoin_summary">Unirse e deixar conversas de grupo de acordo coa marca auto-unirse nos seus marcadores.</string>
|
||||||
|
@ -337,6 +333,7 @@
|
||||||
<string name="x_file_offered_for_download">Ofreceuse %s para descargar</string>
|
<string name="x_file_offered_for_download">Ofreceuse %s para descargar</string>
|
||||||
<string name="cancel_transmission">Cancelar a transmisión</string>
|
<string name="cancel_transmission">Cancelar a transmisión</string>
|
||||||
<string name="file_transmission_failed">fallou a transmisión do ficheiro</string>
|
<string name="file_transmission_failed">fallou a transmisión do ficheiro</string>
|
||||||
|
<string name="file_transmission_cancelled">Detívose a transmisión do ficheiro</string>
|
||||||
<string name="file_deleted">Este ficheiro eliminouse</string>
|
<string name="file_deleted">Este ficheiro eliminouse</string>
|
||||||
<string name="no_application_found_to_open_file">Non se atopou un aplicativo para abrir o ficheiro</string>
|
<string name="no_application_found_to_open_file">Non se atopou un aplicativo para abrir o ficheiro</string>
|
||||||
<string name="no_application_found_to_open_link">Non se atopou ningunha aplicación para abrir a ligazón</string>
|
<string name="no_application_found_to_open_link">Non se atopou ningunha aplicación para abrir a ligazón</string>
|
||||||
|
@ -511,9 +508,9 @@
|
||||||
<string name="notify_never">Notificacións desactivadas</string>
|
<string name="notify_never">Notificacións desactivadas</string>
|
||||||
<string name="notify_paused">Notificacións pausadas</string>
|
<string name="notify_paused">Notificacións pausadas</string>
|
||||||
<string name="pref_picture_compression">Compresión de imaxes</string>
|
<string name="pref_picture_compression">Compresión de imaxes</string>
|
||||||
<string name="pref_picture_compression_summary">Escalar e comprimir imaxes</string>
|
<string name="pref_picture_compression_summary">Truco: Utiliza \'Escoller ficheiro\' no lugar de \'Escoller imaxe\' para enviar imaxes individuais sen comprimir obviando este axuste.</string>
|
||||||
<string name="always">Sempre</string>
|
<string name="always">Sempre</string>
|
||||||
<string name="automatically">Automáticamente</string>
|
<string name="large_images_only">Só imaxes grandes</string>
|
||||||
<string name="battery_optimizations_enabled">Optimizacións de batería activadas</string>
|
<string name="battery_optimizations_enabled">Optimizacións de batería activadas</string>
|
||||||
<string name="battery_optimizations_enabled_explained">O seu dispositivo está a realizar algunhas optimizacións de batería extremas en Conversations que poderían levar a notificacións con retraso ou incluso perda das mesmas.\nÉ recomendado desactivalas.</string>
|
<string name="battery_optimizations_enabled_explained">O seu dispositivo está a realizar algunhas optimizacións de batería extremas en Conversations que poderían levar a notificacións con retraso ou incluso perda das mesmas.\nÉ recomendado desactivalas.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">O seu dispositivo está facendo unhas optimizacións de batería moi fortes en Conversations que poderían facer que se retrasasen algunhas mensaxes ou incluso se perdesen.\n\nAgora pediráselle que se desactive as mesmas.</string>
|
<string name="battery_optimizations_enabled_dialog">O seu dispositivo está facendo unhas optimizacións de batería moi fortes en Conversations que poderían facer que se retrasasen algunhas mensaxes ou incluso se perdesen.\n\nAgora pediráselle que se desactive as mesmas.</string>
|
||||||
|
@ -857,6 +854,7 @@
|
||||||
<string name="discover_channels">Descubrir canales</string>
|
<string name="discover_channels">Descubrir canales</string>
|
||||||
<string name="search_channels">Buscar canales</string>
|
<string name="search_channels">Buscar canales</string>
|
||||||
<string name="channel_discovery_opt_in_title">Posible intrusión na intimidade!</string>
|
<string name="channel_discovery_opt_in_title">Posible intrusión na intimidade!</string>
|
||||||
|
<string name="channel_discover_opt_in_message"><![CDATA[O descubrimento de canais utiliza un servizo de terceiros chamado <a href="https://search.jabber.network">search.jabber.network</a>.<br><br>Ao utilizar esta función transmitirá o seu enderezo IP e termos de busca a ese servizo. Lea a súa <a href="https://search.jabber.network/privacy">Política de Intimidade</a> para máis información.]]></string>
|
||||||
<string name="i_already_have_an_account">Xa teño unha conta</string>
|
<string name="i_already_have_an_account">Xa teño unha conta</string>
|
||||||
<string name="add_existing_account">Engadir conta existente</string>
|
<string name="add_existing_account">Engadir conta existente</string>
|
||||||
<string name="register_new_account">Rexistrar unha nova conta</string>
|
<string name="register_new_account">Rexistrar unha nova conta</string>
|
||||||
|
@ -872,4 +870,12 @@
|
||||||
<string name="please_enter_password">Introduza o contrasinal de esta conta</string>
|
<string name="please_enter_password">Introduza o contrasinal de esta conta</string>
|
||||||
<string name="unable_to_perform_this_action">Non se puido completar a acción</string>
|
<string name="unable_to_perform_this_action">Non se puido completar a acción</string>
|
||||||
<string name="open_join_dialog">Unirse a canle pública...</string>
|
<string name="open_join_dialog">Unirse a canle pública...</string>
|
||||||
|
<string name="sharing_application_not_grant_permission">A aplicación que comparte non proporciona permiso para acceder ao ficheiro.</string>
|
||||||
|
<string name="group_chats_and_channels"><![CDATA[Conversas grupo & Canles]]></string>
|
||||||
|
<string name="jabber_network">jabber.network</string>
|
||||||
|
<string name="local_server">Servidor local</string>
|
||||||
|
<string name="pref_channel_discovery_summary">A maioría das usuarias debería escoller \'jabber.network\' para obter mellores suxestións desde o ecosistema público XMPP.</string>
|
||||||
|
<string name="pref_channel_discovery">Método de descubrimento de canles</string>
|
||||||
|
<string name="backup">Respaldo</string>
|
||||||
|
<string name="category_about">Acerca de</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -118,7 +118,6 @@
|
||||||
<string name="pref_sound">Csengőhang</string>
|
<string name="pref_sound">Csengőhang</string>
|
||||||
<string name="pref_sound_summary">Hangeffekt lejátszása új üzenet érkezésekor</string>
|
<string name="pref_sound_summary">Hangeffekt lejátszása új üzenet érkezésekor</string>
|
||||||
<string name="pref_notification_grace_period">Türelmi idő</string>
|
<string name="pref_notification_grace_period">Türelmi idő</string>
|
||||||
<string name="pref_notification_grace_period_summary">A szoftver csendben marad ennyi ideig, miután aktivitást észlelt másik eszközön</string>
|
|
||||||
<string name="pref_advanced_options">Fejlett funkciók</string>
|
<string name="pref_advanced_options">Fejlett funkciók</string>
|
||||||
<string name="pref_never_send_crash">Ne küldjön programhiba jelentéseket</string>
|
<string name="pref_never_send_crash">Ne küldjön programhiba jelentéseket</string>
|
||||||
<string name="pref_never_send_crash_summary">A hibák jelentésével segíted a Conversations program fejlesztését</string>
|
<string name="pref_never_send_crash_summary">A hibák jelentésével segíted a Conversations program fejlesztését</string>
|
||||||
|
@ -280,10 +279,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Befejezése</string>
|
<string name="title_pref_quiet_hours_end_time">Befejezése</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Csöndes órák engedélyezése</string>
|
<string name="title_pref_enable_quiet_hours">Csöndes órák engedélyezése</string>
|
||||||
<string name="pref_quiet_hours_summary">Értesítések el lesznek némítva a csöndes órákban</string>
|
<string name="pref_quiet_hours_summary">Értesítések el lesznek némítva a csöndes órákban</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">A küldés gomb jelzi az állapotot</string>
|
|
||||||
<string name="pref_use_indicate_received">Üzenet nyugták kérése</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">A megkapott üzenetek egy zöld pipával lesznek jelölve ha támogatott ez a funkció</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Kiszínezi a küldés gombot, hogy jelezze a partner állapotát</string>
|
|
||||||
<string name="pref_expert_options_other">Egyéb</string>
|
<string name="pref_expert_options_other">Egyéb</string>
|
||||||
<string name="pref_autojoin">Szinkronizáljon könyvjelzőkkel</string>
|
<string name="pref_autojoin">Szinkronizáljon könyvjelzőkkel</string>
|
||||||
<string name="pref_autojoin_summary">Csatlakozzon és hagyja ott a csoportos beszélgetéseket a könyvjelzők automatikus csatlakozásának megfelelően.</string>
|
<string name="pref_autojoin_summary">Csatlakozzon és hagyja ott a csoportos beszélgetéseket a könyvjelzők automatikus csatlakozásának megfelelően.</string>
|
||||||
|
@ -510,9 +505,7 @@
|
||||||
<string name="notify_never">Értesítések letiltva</string>
|
<string name="notify_never">Értesítések letiltva</string>
|
||||||
<string name="notify_paused">Értesítések szüneteltetve</string>
|
<string name="notify_paused">Értesítések szüneteltetve</string>
|
||||||
<string name="pref_picture_compression">Kép tömörítés</string>
|
<string name="pref_picture_compression">Kép tömörítés</string>
|
||||||
<string name="pref_picture_compression_summary">Átméretezi és tömöríti a képeket</string>
|
|
||||||
<string name="always">Mindig</string>
|
<string name="always">Mindig</string>
|
||||||
<string name="automatically">Automatikusan</string>
|
|
||||||
<string name="battery_optimizations_enabled">Akkumulátor optimalizációk engedélyezve</string>
|
<string name="battery_optimizations_enabled">Akkumulátor optimalizációk engedélyezve</string>
|
||||||
<string name="battery_optimizations_enabled_explained">A készülék erős akkumulátor optimalizálást végez a Conversations programon, ami késleltetett értesítésekhez, vagy akár üzenetek elvesztéséhet is vezethet.\nJavasolt kikapcsolni ezt.</string>
|
<string name="battery_optimizations_enabled_explained">A készülék erős akkumulátor optimalizálást végez a Conversations programon, ami késleltetett értesítésekhez, vagy akár üzenetek elvesztéséhet is vezethet.\nJavasolt kikapcsolni ezt.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">A készülék erős akkumulátor optimalizálást végez a Conversations programon, ami késleltetett értesítésekhez, vagy akár üzenetek elvesztéséhet is vezethet.\nMost meg lesz kérve az optimalizáció letiltására.</string>
|
<string name="battery_optimizations_enabled_dialog">A készülék erős akkumulátor optimalizálást végez a Conversations programon, ami késleltetett értesítésekhez, vagy akár üzenetek elvesztéséhet is vezethet.\nMost meg lesz kérve az optimalizáció letiltására.</string>
|
||||||
|
|
|
@ -206,10 +206,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Waktu selesai</string>
|
<string name="title_pref_quiet_hours_end_time">Waktu selesai</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Aktifkan waktu sunyi</string>
|
<string name="title_pref_enable_quiet_hours">Aktifkan waktu sunyi</string>
|
||||||
<string name="pref_quiet_hours_summary">Pemberitahuan akan disunyukan ketika jam sunyi.</string>
|
<string name="pref_quiet_hours_summary">Pemberitahuan akan disunyukan ketika jam sunyi.</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Tombol kirim menunjukan statusnya</string>
|
|
||||||
<string name="pref_use_indicate_received">Permintaan penerimaan pesan</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Pesan yang diterima akan ditambahkan centang hijau jika didukung</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Warnai tombol kirim untuk mengindikasikan status kontak</string>
|
|
||||||
<string name="pref_expert_options_other">Lainnya</string>
|
<string name="pref_expert_options_other">Lainnya</string>
|
||||||
<string name="using_account">menggunakan akun %s</string>
|
<string name="using_account">menggunakan akun %s</string>
|
||||||
<string name="not_connected_try_again">Anda tidak terhubung. Coba lagi nanti</string>
|
<string name="not_connected_try_again">Anda tidak terhubung. Coba lagi nanti</string>
|
||||||
|
@ -325,7 +321,6 @@
|
||||||
<string name="sync_with_contacts">Sinkronkan dengan kontak</string>
|
<string name="sync_with_contacts">Sinkronkan dengan kontak</string>
|
||||||
<string name="notify_on_all_messages">Tampilkan notifikasi untuk semua pesan</string>
|
<string name="notify_on_all_messages">Tampilkan notifikasi untuk semua pesan</string>
|
||||||
<string name="always">Selalu</string>
|
<string name="always">Selalu</string>
|
||||||
<string name="automatically">Secara otomatis</string>
|
|
||||||
<string name="battery_optimizations_enabled">Pengoptimalan baterai diaktifkan</string>
|
<string name="battery_optimizations_enabled">Pengoptimalan baterai diaktifkan</string>
|
||||||
<string name="disable">Non-aktifkan</string>
|
<string name="disable">Non-aktifkan</string>
|
||||||
<string name="selection_too_large">Area yang dipilih terlalu besar</string>
|
<string name="selection_too_large">Area yang dipilih terlalu besar</string>
|
||||||
|
|
|
@ -119,7 +119,6 @@
|
||||||
<string name="pref_sound">Suono di notifica</string>
|
<string name="pref_sound">Suono di notifica</string>
|
||||||
<string name="pref_sound_summary">Esegui un suono quando arriva un nuovo messaggio</string>
|
<string name="pref_sound_summary">Esegui un suono quando arriva un nuovo messaggio</string>
|
||||||
<string name="pref_notification_grace_period">Periodo di grazia</string>
|
<string name="pref_notification_grace_period">Periodo di grazia</string>
|
||||||
<string name="pref_notification_grace_period_summary">Il periodo di tempo in cui Conversations resta silenzioso quando vede attività su un altro dispositivo</string>
|
|
||||||
<string name="pref_advanced_options">Avanzate</string>
|
<string name="pref_advanced_options">Avanzate</string>
|
||||||
<string name="pref_never_send_crash">Non inviare mai segnalazioni di errore</string>
|
<string name="pref_never_send_crash">Non inviare mai segnalazioni di errore</string>
|
||||||
<string name="pref_never_send_crash_summary">Se scegli di inviare una segnalazione dell’errore aiuterai lo sviluppo di Conversations</string>
|
<string name="pref_never_send_crash_summary">Se scegli di inviare una segnalazione dell’errore aiuterai lo sviluppo di Conversations</string>
|
||||||
|
@ -281,10 +280,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Orario fine</string>
|
<string name="title_pref_quiet_hours_end_time">Orario fine</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Attiva ore di quiete</string>
|
<string name="title_pref_enable_quiet_hours">Attiva ore di quiete</string>
|
||||||
<string name="pref_quiet_hours_summary">Le notifiche verranno silenziate durante le ore di quiete</string>
|
<string name="pref_quiet_hours_summary">Le notifiche verranno silenziate durante le ore di quiete</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Il pulsante di invio indica lo stato</string>
|
|
||||||
<string name="pref_use_indicate_received">Richiedi la ricevuta di ritorno</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">I messaggi ricevuti verranno contrassegnati con una spunta verde se supportato</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Colora il pulsante di invio per indicare lo stato del contatto</string>
|
|
||||||
<string name="pref_expert_options_other">Altro</string>
|
<string name="pref_expert_options_other">Altro</string>
|
||||||
<string name="pref_autojoin">Sincronizza con i segnalibri</string>
|
<string name="pref_autojoin">Sincronizza con i segnalibri</string>
|
||||||
<string name="pref_autojoin_summary">Entra ed esci dalle chat di gruppo rispettando l\'opzione di entrata automatica nei tuoi segnalibri.</string>
|
<string name="pref_autojoin_summary">Entra ed esci dalle chat di gruppo rispettando l\'opzione di entrata automatica nei tuoi segnalibri.</string>
|
||||||
|
@ -337,6 +332,7 @@
|
||||||
<string name="x_file_offered_for_download">%s offerto da scaricare</string>
|
<string name="x_file_offered_for_download">%s offerto da scaricare</string>
|
||||||
<string name="cancel_transmission">Annulla trasmissione</string>
|
<string name="cancel_transmission">Annulla trasmissione</string>
|
||||||
<string name="file_transmission_failed">trasmissione del file fallita</string>
|
<string name="file_transmission_failed">trasmissione del file fallita</string>
|
||||||
|
<string name="file_transmission_cancelled">trasmissione file annullata</string>
|
||||||
<string name="file_deleted">Il file è stato eliminato</string>
|
<string name="file_deleted">Il file è stato eliminato</string>
|
||||||
<string name="no_application_found_to_open_file">Nessuna applicazione trovata per aprire il file</string>
|
<string name="no_application_found_to_open_file">Nessuna applicazione trovata per aprire il file</string>
|
||||||
<string name="no_application_found_to_open_link">Nessuna applicazione trovata per aprire il link</string>
|
<string name="no_application_found_to_open_link">Nessuna applicazione trovata per aprire il link</string>
|
||||||
|
@ -511,9 +507,7 @@
|
||||||
<string name="notify_never">Notifiche disattivate</string>
|
<string name="notify_never">Notifiche disattivate</string>
|
||||||
<string name="notify_paused">Notifiche in pausa</string>
|
<string name="notify_paused">Notifiche in pausa</string>
|
||||||
<string name="pref_picture_compression">Compressione immagini</string>
|
<string name="pref_picture_compression">Compressione immagini</string>
|
||||||
<string name="pref_picture_compression_summary">Ridimensiona e comprimi le immagini</string>
|
|
||||||
<string name="always">Sempre</string>
|
<string name="always">Sempre</string>
|
||||||
<string name="automatically">Automaticamente</string>
|
|
||||||
<string name="battery_optimizations_enabled">Ottimizzazioni batteria attivate</string>
|
<string name="battery_optimizations_enabled">Ottimizzazioni batteria attivate</string>
|
||||||
<string name="battery_optimizations_enabled_explained">Il tuo dispositivo sta facendo delle ingenti ottimizzazioni della batteria per Conversations che potrebbero portare ritardi alle notifiche o anche perdita di messaggi.\nSi consiglia di disattivarle.</string>
|
<string name="battery_optimizations_enabled_explained">Il tuo dispositivo sta facendo delle ingenti ottimizzazioni della batteria per Conversations che potrebbero portare ritardi alle notifiche o anche perdita di messaggi.\nSi consiglia di disattivarle.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">Il tuo dispositivo sta facendo delle ingenti ottimizzazioni della batteria per Conversations che potrebbero portare ritardi alle notifiche o anche perdita di messaggi.\n\nTi verrà ora chiesto di disattivarle.</string>
|
<string name="battery_optimizations_enabled_dialog">Il tuo dispositivo sta facendo delle ingenti ottimizzazioni della batteria per Conversations che potrebbero portare ritardi alle notifiche o anche perdita di messaggi.\n\nTi verrà ora chiesto di disattivarle.</string>
|
||||||
|
@ -857,6 +851,7 @@
|
||||||
<string name="discover_channels">Individua i canali</string>
|
<string name="discover_channels">Individua i canali</string>
|
||||||
<string name="search_channels">Cerca i canali</string>
|
<string name="search_channels">Cerca i canali</string>
|
||||||
<string name="channel_discovery_opt_in_title">Possibile violazione della privacy!</string>
|
<string name="channel_discovery_opt_in_title">Possibile violazione della privacy!</string>
|
||||||
|
<string name="channel_discover_opt_in_message"><![CDATA[La scoperta dei canali usa un servizio di terze parti chiamato <a href="https://search.jabber.network">search.jabber.network</a>.<br><br>L\'uso di questa funzione trasmetterà il tuo indirizzo IP e i termini di ricerca a quel servizio. Vedi la loro <a href="https://search.jabber.network/privacy">Informativa sulla Privacy</a> per saperne di più.]]></string>
|
||||||
<string name="i_already_have_an_account">Ho già un account</string>
|
<string name="i_already_have_an_account">Ho già un account</string>
|
||||||
<string name="add_existing_account">Aggiungi un account pre-esistente</string>
|
<string name="add_existing_account">Aggiungi un account pre-esistente</string>
|
||||||
<string name="register_new_account">Registra un nuovo account</string>
|
<string name="register_new_account">Registra un nuovo account</string>
|
||||||
|
@ -871,4 +866,5 @@
|
||||||
<string name="account_already_setup">Questo account è già stato configurato</string>
|
<string name="account_already_setup">Questo account è già stato configurato</string>
|
||||||
<string name="please_enter_password">Inserisci la password per questo account</string>
|
<string name="please_enter_password">Inserisci la password per questo account</string>
|
||||||
<string name="unable_to_perform_this_action">Impossibile eseguire questa azione</string>
|
<string name="unable_to_perform_this_action">Impossibile eseguire questa azione</string>
|
||||||
|
<string name="open_join_dialog">Entra in un canale pubblico...</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -197,10 +197,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">זמן סיום</string>
|
<string name="title_pref_quiet_hours_end_time">זמן סיום</string>
|
||||||
<string name="title_pref_enable_quiet_hours">הפעל \"שעות שקטות\"</string>
|
<string name="title_pref_enable_quiet_hours">הפעל \"שעות שקטות\"</string>
|
||||||
<string name="pref_quiet_hours_summary">ההתראות יושבתו במהלך שעות שקטות</string>
|
<string name="pref_quiet_hours_summary">ההתראות יושבתו במהלך שעות שקטות</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">לחצן השליחה מעיד על הסטטוס</string>
|
|
||||||
<string name="pref_use_indicate_received">בקש אימות הגעת הודעות</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">יופיע סימן \"וי\" ליד כל הודעה שהתקבלה על ידי איש הקשר, במידה והפעולה נתמכת על ידי איש הקשר.</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">צבעו של לחצן שליחת ההודעות יעיד על סטטוס איש הקשר.</string>
|
|
||||||
<string name="pref_expert_options_other">אחר</string>
|
<string name="pref_expert_options_other">אחר</string>
|
||||||
<string name="toast_message_omemo_fingerprint">טביעת אצבע של OMEMO הועתקה</string>
|
<string name="toast_message_omemo_fingerprint">טביעת אצבע של OMEMO הועתקה</string>
|
||||||
<string name="using_account">משתמש בחשבון: %s</string>
|
<string name="using_account">משתמש בחשבון: %s</string>
|
||||||
|
|
|
@ -115,7 +115,6 @@
|
||||||
<string name="pref_sound">着信音</string>
|
<string name="pref_sound">着信音</string>
|
||||||
<string name="pref_sound_summary">新しいメッセージが届いたときにサウンドを再生します</string>
|
<string name="pref_sound_summary">新しいメッセージが届いたときにサウンドを再生します</string>
|
||||||
<string name="pref_notification_grace_period">猶予期間</string>
|
<string name="pref_notification_grace_period">猶予期間</string>
|
||||||
<string name="pref_notification_grace_period_summary">別のデバイスで活動を見た後、Conversations を静かにする時間の長さ</string>
|
|
||||||
<string name="pref_advanced_options">詳細</string>
|
<string name="pref_advanced_options">詳細</string>
|
||||||
<string name="pref_never_send_crash">クラッシュレポートを送信しない</string>
|
<string name="pref_never_send_crash">クラッシュレポートを送信しない</string>
|
||||||
<string name="pref_never_send_crash_summary">スタックトレースを送信することで、あなたは Conversations の継続的な開発を支援しています</string>
|
<string name="pref_never_send_crash_summary">スタックトレースを送信することで、あなたは Conversations の継続的な開発を支援しています</string>
|
||||||
|
@ -273,10 +272,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">終了時間</string>
|
<string name="title_pref_quiet_hours_end_time">終了時間</string>
|
||||||
<string name="title_pref_enable_quiet_hours">消音時間を有効にする</string>
|
<string name="title_pref_enable_quiet_hours">消音時間を有効にする</string>
|
||||||
<string name="pref_quiet_hours_summary">消音時間の間、通知は無音になります</string>
|
<string name="pref_quiet_hours_summary">消音時間の間、通知は無音になります</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">送信ボタンにステータスを示す</string>
|
|
||||||
<string name="pref_use_indicate_received">要求メッセージの受信</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">サポートされている場合、受信したメッセージに緑色のチェックマークが付きます</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">送信ボタンに連絡先ステータスを示す色が付きます</string>
|
|
||||||
<string name="pref_expert_options_other">その他</string>
|
<string name="pref_expert_options_other">その他</string>
|
||||||
<string name="pref_autojoin">ブックマークと同期</string>
|
<string name="pref_autojoin">ブックマークと同期</string>
|
||||||
<string name="pref_autojoin_summary">ブックマークの自動参加フラグに従って、グループチャットに参加したり退席します。</string>
|
<string name="pref_autojoin_summary">ブックマークの自動参加フラグに従って、グループチャットに参加したり退席します。</string>
|
||||||
|
@ -476,9 +471,7 @@
|
||||||
<string name="notify_never">通知は無効</string>
|
<string name="notify_never">通知は無効</string>
|
||||||
<string name="notify_paused">通知は一時停止</string>
|
<string name="notify_paused">通知は一時停止</string>
|
||||||
<string name="pref_picture_compression">画像の圧縮</string>
|
<string name="pref_picture_compression">画像の圧縮</string>
|
||||||
<string name="pref_picture_compression_summary">画像のサイズ変更と圧縮</string>
|
|
||||||
<string name="always">常に</string>
|
<string name="always">常に</string>
|
||||||
<string name="automatically">自動</string>
|
|
||||||
<string name="battery_optimizations_enabled">バッテリー最適化が有効</string>
|
<string name="battery_optimizations_enabled">バッテリー最適化が有効</string>
|
||||||
<string name="battery_optimizations_enabled_explained">お使いのデバイスは、Conversations で、通知の遅延やメッセージの損失につながる可能性のある、いくつかの重いバッテリーの最適化を行っています。\nそれらを無効にすることをお勧めします。</string>
|
<string name="battery_optimizations_enabled_explained">お使いのデバイスは、Conversations で、通知の遅延やメッセージの損失につながる可能性のある、いくつかの重いバッテリーの最適化を行っています。\nそれらを無効にすることをお勧めします。</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">お使いのデバイスは、Conversations で通知の遅延やメッセージの損失につながる可能性のある、いくつかの重いバッテリーの最適化を行っています。\n\n今、それらを無効にするように求められます。</string>
|
<string name="battery_optimizations_enabled_dialog">お使いのデバイスは、Conversations で通知の遅延やメッセージの損失につながる可能性のある、いくつかの重いバッテリーの最適化を行っています。\n\n今、それらを無効にするように求められます。</string>
|
||||||
|
|
|
@ -230,10 +230,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">마감 시간 </string>
|
<string name="title_pref_quiet_hours_end_time">마감 시간 </string>
|
||||||
<string name="title_pref_enable_quiet_hours">무음 시간대 사용 </string>
|
<string name="title_pref_enable_quiet_hours">무음 시간대 사용 </string>
|
||||||
<string name="pref_quiet_hours_summary">무음 시간대에는 알림이 해제됩니다 </string>
|
<string name="pref_quiet_hours_summary">무음 시간대에는 알림이 해제됩니다 </string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">전송 버튼이 상태를 나타냄</string>
|
|
||||||
<string name="pref_use_indicate_received">메세지 영수증 요청</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">만약 지원될 경우, 수신된 메세지는 초록색 기호로 표시됩니다. </string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">연락처 상태를 표시하기 위해 전송 버튼을 색칠함 </string>
|
|
||||||
<string name="pref_expert_options_other">기타 </string>
|
<string name="pref_expert_options_other">기타 </string>
|
||||||
<string name="toast_message_omemo_fingerprint">OMEMO 핑거프린트가 클립보드에 복사되었습니다</string>
|
<string name="toast_message_omemo_fingerprint">OMEMO 핑거프린트가 클립보드에 복사되었습니다</string>
|
||||||
<string name="using_account">using account %s</string>
|
<string name="using_account">using account %s</string>
|
||||||
|
@ -396,7 +392,6 @@
|
||||||
<string name="notify_never">알림 해제됨</string>
|
<string name="notify_never">알림 해제됨</string>
|
||||||
<string name="notify_paused">알림 일시중지됨</string>
|
<string name="notify_paused">알림 일시중지됨</string>
|
||||||
<string name="always">항상</string>
|
<string name="always">항상</string>
|
||||||
<string name="automatically">자동</string>
|
|
||||||
<string name="battery_optimizations_enabled">배터리 최적화 사용됨</string>
|
<string name="battery_optimizations_enabled">배터리 최적화 사용됨</string>
|
||||||
<string name="battery_optimizations_enabled_explained">당신의 기기는 메세지를 받지 못하게 되거나 알림을 지연시킬 수도 있는 고강도의 배터리 최적화를 Conversations에 하고 있습니다.\n배터리 최적화를 해제하는 것을 추천합니다.</string>
|
<string name="battery_optimizations_enabled_explained">당신의 기기는 메세지를 받지 못하게 되거나 알림을 지연시킬 수도 있는 고강도의 배터리 최적화를 Conversations에 하고 있습니다.\n배터리 최적화를 해제하는 것을 추천합니다.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">당신의 기기는 메세지를 받지 못하게 되거나 알림을 지연시킬 수도 있는 고강도의 배터리 최적화를 Conversations에 하고 있습니다.\n이것을 해제할 것인지 물어볼 것입니다.</string>
|
<string name="battery_optimizations_enabled_dialog">당신의 기기는 메세지를 받지 못하게 되거나 알림을 지연시킬 수도 있는 고강도의 배터리 최적화를 Conversations에 하고 있습니다.\n이것을 해제할 것인지 물어볼 것입니다.</string>
|
||||||
|
|
|
@ -105,7 +105,6 @@
|
||||||
<string name="pref_sound">Ringetone</string>
|
<string name="pref_sound">Ringetone</string>
|
||||||
<string name="pref_sound_summary">Spill en lyd når en ny melding ankommer</string>
|
<string name="pref_sound_summary">Spill en lyd når en ny melding ankommer</string>
|
||||||
<string name="pref_notification_grace_period">Fristperiode</string>
|
<string name="pref_notification_grace_period">Fristperiode</string>
|
||||||
<string name="pref_notification_grace_period_summary">Mengden tid Conversations forholder seg rolig i, etter å ha sett aktivitet på en annen enhet</string>
|
|
||||||
<string name="pref_advanced_options">Avansert</string>
|
<string name="pref_advanced_options">Avansert</string>
|
||||||
<string name="pref_never_send_crash">Aldri send kræsjrapporter</string>
|
<string name="pref_never_send_crash">Aldri send kræsjrapporter</string>
|
||||||
<string name="pref_never_send_crash_summary">Ved å sende inn stabelsporinger hjelper du den pågående utviklingen av Conversations</string>
|
<string name="pref_never_send_crash_summary">Ved å sende inn stabelsporinger hjelper du den pågående utviklingen av Conversations</string>
|
||||||
|
@ -248,10 +247,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Avslutning</string>
|
<string name="title_pref_quiet_hours_end_time">Avslutning</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Aktiver stille tidsavgrensning</string>
|
<string name="title_pref_enable_quiet_hours">Aktiver stille tidsavgrensning</string>
|
||||||
<string name="pref_quiet_hours_summary">Varslinger blir ikke spilt under stilletid</string>
|
<string name="pref_quiet_hours_summary">Varslinger blir ikke spilt under stilletid</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Forsendelsesknappstatus</string>
|
|
||||||
<string name="pref_use_indicate_received">Forespør meldingskvitteringer</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Mottatte meldinger vil bli avmerket i grønt hvis støttet</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Fargelegg send-knapp for å indikere kontakt-status</string>
|
|
||||||
<string name="pref_expert_options_other">Annet</string>
|
<string name="pref_expert_options_other">Annet</string>
|
||||||
<string name="toast_message_omemo_fingerprint">OMEMO-fingeravtrykk kopiert til utklippstavle!</string>
|
<string name="toast_message_omemo_fingerprint">OMEMO-fingeravtrykk kopiert til utklippstavle!</string>
|
||||||
<string name="conference_banned">Du er bannlyst fra denne gruppesludringen</string>
|
<string name="conference_banned">Du er bannlyst fra denne gruppesludringen</string>
|
||||||
|
@ -437,7 +432,6 @@
|
||||||
<string name="notify_never">Varslinger deaktivert</string>
|
<string name="notify_never">Varslinger deaktivert</string>
|
||||||
<string name="notify_paused">Varslinger pauset</string>
|
<string name="notify_paused">Varslinger pauset</string>
|
||||||
<string name="always">Alltid</string>
|
<string name="always">Alltid</string>
|
||||||
<string name="automatically">Automatisk</string>
|
|
||||||
<string name="battery_optimizations_enabled">Batterioptimaliseringer aktivert</string>
|
<string name="battery_optimizations_enabled">Batterioptimaliseringer aktivert</string>
|
||||||
<string name="battery_optimizations_enabled_explained">Enheten din gjør noen tunge batterioptimaliseringer på Conversations som kan føre til forsinkede varslinger eller tap av meldinger.\nDet anbefales at du deaktiverer disse.</string>
|
<string name="battery_optimizations_enabled_explained">Enheten din gjør noen tunge batterioptimaliseringer på Conversations som kan føre til forsinkede varslinger eller tap av meldinger.\nDet anbefales at du deaktiverer disse.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">Enheten din gjør noen tunge batterioptimaliseringer på Conversations som kan føre til forsinkede varslinger eller tap av meldinger.\n\nDu vil nå bli bedt om å deaktivere disse.</string>
|
<string name="battery_optimizations_enabled_dialog">Enheten din gjør noen tunge batterioptimaliseringer på Conversations som kan føre til forsinkede varslinger eller tap av meldinger.\n\nDu vil nå bli bedt om å deaktivere disse.</string>
|
||||||
|
|
|
@ -119,7 +119,6 @@
|
||||||
<string name="pref_sound">Meldingstoon</string>
|
<string name="pref_sound">Meldingstoon</string>
|
||||||
<string name="pref_sound_summary">Geluid afspelen wanneer een nieuw bericht ontvangen wordt</string>
|
<string name="pref_sound_summary">Geluid afspelen wanneer een nieuw bericht ontvangen wordt</string>
|
||||||
<string name="pref_notification_grace_period">Uitstelperiode</string>
|
<string name="pref_notification_grace_period">Uitstelperiode</string>
|
||||||
<string name="pref_notification_grace_period_summary">Hoe lang Conversations stil blijft na activiteit op een ander apparaat waar te nemen</string>
|
|
||||||
<string name="pref_advanced_options">Geavanceerd</string>
|
<string name="pref_advanced_options">Geavanceerd</string>
|
||||||
<string name="pref_never_send_crash">Verstuur nooit crashrapportages</string>
|
<string name="pref_never_send_crash">Verstuur nooit crashrapportages</string>
|
||||||
<string name="pref_never_send_crash_summary">Door crashrapportages te versturen help je de ontwikkeling van Conversations</string>
|
<string name="pref_never_send_crash_summary">Door crashrapportages te versturen help je de ontwikkeling van Conversations</string>
|
||||||
|
@ -281,10 +280,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Eindtijd</string>
|
<string name="title_pref_quiet_hours_end_time">Eindtijd</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Stille uren inschakelen</string>
|
<string name="title_pref_enable_quiet_hours">Stille uren inschakelen</string>
|
||||||
<string name="pref_quiet_hours_summary">Tijdens stille uren worden meldingen onderdrukt</string>
|
<string name="pref_quiet_hours_summary">Tijdens stille uren worden meldingen onderdrukt</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Verstuur-knop toont status aan</string>
|
|
||||||
<string name="pref_use_indicate_received">Vraag ontvangstbevestigingen</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Indien ondersteund, worden ontvangen berichten met een groen vinkje aangeduid</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Kleur verstuur-knop in om status van contact weer te geven</string>
|
|
||||||
<string name="pref_expert_options_other">Andere</string>
|
<string name="pref_expert_options_other">Andere</string>
|
||||||
<string name="pref_autojoin">Synchroniseren met bladwijzers</string>
|
<string name="pref_autojoin">Synchroniseren met bladwijzers</string>
|
||||||
<string name="pref_autojoin_summary">Neem deel aan en verlaat groepsgesprekken op basis van de automatische deelname-optie in je bladwijzers.</string>
|
<string name="pref_autojoin_summary">Neem deel aan en verlaat groepsgesprekken op basis van de automatische deelname-optie in je bladwijzers.</string>
|
||||||
|
@ -512,9 +507,7 @@
|
||||||
<string name="notify_never">Meldingen uitgeschakeld</string>
|
<string name="notify_never">Meldingen uitgeschakeld</string>
|
||||||
<string name="notify_paused">Meldingen gepauzeerd</string>
|
<string name="notify_paused">Meldingen gepauzeerd</string>
|
||||||
<string name="pref_picture_compression">Afbeeldingscompressie</string>
|
<string name="pref_picture_compression">Afbeeldingscompressie</string>
|
||||||
<string name="pref_picture_compression_summary">Afbeeldingen verkleinen en comprimeren</string>
|
|
||||||
<string name="always">Altijd</string>
|
<string name="always">Altijd</string>
|
||||||
<string name="automatically">Automatisch</string>
|
|
||||||
<string name="battery_optimizations_enabled">Batterij-optimalisaties ingeschakeld</string>
|
<string name="battery_optimizations_enabled">Batterij-optimalisaties ingeschakeld</string>
|
||||||
<string name="battery_optimizations_enabled_explained">Je apparaat voert sterke batterij-optimalisaties uit op Conversations, die kunnen leiden tot vertraagde meldingen of zelfs verlies van berichten.\nHet is aangeraden deze optimalisaties uit te schakelen.</string>
|
<string name="battery_optimizations_enabled_explained">Je apparaat voert sterke batterij-optimalisaties uit op Conversations, die kunnen leiden tot vertraagde meldingen of zelfs verlies van berichten.\nHet is aangeraden deze optimalisaties uit te schakelen.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">Je apparaat voert sterke batterij-optimalisaties uit op Conversations, die kunnen leiden tot vertraagde meldingen of zelfs verlies van berichten.\nJe zal nu gevraagd worden deze optimalisaties uit te schakelen.</string>
|
<string name="battery_optimizations_enabled_dialog">Je apparaat voert sterke batterij-optimalisaties uit op Conversations, die kunnen leiden tot vertraagde meldingen of zelfs verlies van berichten.\nJe zal nu gevraagd worden deze optimalisaties uit te schakelen.</string>
|
||||||
|
|
|
@ -119,7 +119,7 @@
|
||||||
<string name="pref_sound">Dzwonek</string>
|
<string name="pref_sound">Dzwonek</string>
|
||||||
<string name="pref_sound_summary">Odtwórz dźwięk gdy nadejdzie wiadomość</string>
|
<string name="pref_sound_summary">Odtwórz dźwięk gdy nadejdzie wiadomość</string>
|
||||||
<string name="pref_notification_grace_period">Czas bez powiadomień</string>
|
<string name="pref_notification_grace_period">Czas bez powiadomień</string>
|
||||||
<string name="pref_notification_grace_period_summary">Czas od ostatniej aktywności na innym urządzeniu, przez który Conversations nie odzywa się</string>
|
<string name="pref_notification_grace_period_summary">Długość czasu kiedy powiadomienia są uśpione po wykryciu aktywności na jednym z twoich innych urządzeń.</string>
|
||||||
<string name="pref_advanced_options">Zaawansowane</string>
|
<string name="pref_advanced_options">Zaawansowane</string>
|
||||||
<string name="pref_never_send_crash">Nie wysyłaj raportów awarii</string>
|
<string name="pref_never_send_crash">Nie wysyłaj raportów awarii</string>
|
||||||
<string name="pref_never_send_crash_summary">Wysyłając ślady stosu pomagasz rozwijać Conversations</string>
|
<string name="pref_never_send_crash_summary">Wysyłając ślady stosu pomagasz rozwijać Conversations</string>
|
||||||
|
@ -281,10 +281,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Koniec</string>
|
<string name="title_pref_quiet_hours_end_time">Koniec</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Włącz godziny ciszy</string>
|
<string name="title_pref_enable_quiet_hours">Włącz godziny ciszy</string>
|
||||||
<string name="pref_quiet_hours_summary">Powiadomienia będą wyciszone w wybranym przedziale czasu</string>
|
<string name="pref_quiet_hours_summary">Powiadomienia będą wyciszone w wybranym przedziale czasu</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Przycisk wysyłania wskazuje status</string>
|
|
||||||
<string name="pref_use_indicate_received">Raporty dostarczenia</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Jeżeli to możliwe, oznaczaj dostarczone wiadomości zielonym haczykiem</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Koloruj przycisk wysyłania w zależności od statusu kontaktu</string>
|
|
||||||
<string name="pref_expert_options_other">Inne</string>
|
<string name="pref_expert_options_other">Inne</string>
|
||||||
<string name="pref_autojoin">Synchronizuj z zakładkami</string>
|
<string name="pref_autojoin">Synchronizuj z zakładkami</string>
|
||||||
<string name="pref_autojoin_summary">Dołączaj i wychodź z konferencji przy użyciu flagi automatycznego dołączania z zakładek</string>
|
<string name="pref_autojoin_summary">Dołączaj i wychodź z konferencji przy użyciu flagi automatycznego dołączania z zakładek</string>
|
||||||
|
@ -337,6 +333,7 @@
|
||||||
<string name="x_file_offered_for_download">Zaproponowano pobranie pliku %s</string>
|
<string name="x_file_offered_for_download">Zaproponowano pobranie pliku %s</string>
|
||||||
<string name="cancel_transmission">Anuluj przesyłanie</string>
|
<string name="cancel_transmission">Anuluj przesyłanie</string>
|
||||||
<string name="file_transmission_failed">Przesyłanie pliku nie powiodło się</string>
|
<string name="file_transmission_failed">Przesyłanie pliku nie powiodło się</string>
|
||||||
|
<string name="file_transmission_cancelled">transmisja pliku anulowana</string>
|
||||||
<string name="file_deleted">Plik został usunięty</string>
|
<string name="file_deleted">Plik został usunięty</string>
|
||||||
<string name="no_application_found_to_open_file">Nie odnaleziono aplikacji skojarzonej z typem pliku</string>
|
<string name="no_application_found_to_open_file">Nie odnaleziono aplikacji skojarzonej z typem pliku</string>
|
||||||
<string name="no_application_found_to_open_link">Brak aplikacji do otwarcia linka</string>
|
<string name="no_application_found_to_open_link">Brak aplikacji do otwarcia linka</string>
|
||||||
|
@ -515,9 +512,9 @@
|
||||||
<string name="notify_never">Powiadomienia wyłączone</string>
|
<string name="notify_never">Powiadomienia wyłączone</string>
|
||||||
<string name="notify_paused">Powiadomienia wstrzymane</string>
|
<string name="notify_paused">Powiadomienia wstrzymane</string>
|
||||||
<string name="pref_picture_compression">Kompresja obrazów</string>
|
<string name="pref_picture_compression">Kompresja obrazów</string>
|
||||||
<string name="pref_picture_compression_summary">Zmień rozmiar i kompresuj obrazki</string>
|
<string name="pref_picture_compression_summary">Podpowiedź: Użyj \'Wybierz plik\' zamiast \'Wybierz obraz\' aby wysłać poszczególne obrazki bez kompresji bez względu na to ustawienie. </string>
|
||||||
<string name="always">Zawsze</string>
|
<string name="always">Zawsze</string>
|
||||||
<string name="automatically">Automatycznie</string>
|
<string name="large_images_only">Tylko duże obrazki</string>
|
||||||
<string name="battery_optimizations_enabled">Optymalizacje zużycia baterii włączone</string>
|
<string name="battery_optimizations_enabled">Optymalizacje zużycia baterii włączone</string>
|
||||||
<string name="battery_optimizations_enabled_explained">Twoje urządzenie wykonuje poważnie optymalizacje zużycia baterii przez Conversations, które mogą powodować opóźnienie powiadomień lub nawet utratę wiadomości.\nZaleca się ich wyłączenie.</string>
|
<string name="battery_optimizations_enabled_explained">Twoje urządzenie wykonuje poważnie optymalizacje zużycia baterii przez Conversations, które mogą powodować opóźnienie powiadomień lub nawet utratę wiadomości.\nZaleca się ich wyłączenie.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">Twoje urządzenie wykonuje poważnie optymalizacje zużycia baterii przez Conversations, które mogą powodować opóźnienie powiadomień lub nawet utratę wiadomości.\nZostaniesz teraz poproszony o ich wyłączenie</string>
|
<string name="battery_optimizations_enabled_dialog">Twoje urządzenie wykonuje poważnie optymalizacje zużycia baterii przez Conversations, które mogą powodować opóźnienie powiadomień lub nawet utratę wiadomości.\nZostaniesz teraz poproszony o ich wyłączenie</string>
|
||||||
|
@ -874,6 +871,7 @@ Administrator twojego serwera będzie mógł czytać twoje wiadomości, ale moż
|
||||||
<string name="discover_channels">Odkryj kanały</string>
|
<string name="discover_channels">Odkryj kanały</string>
|
||||||
<string name="search_channels">Wyszukaj kanał</string>
|
<string name="search_channels">Wyszukaj kanał</string>
|
||||||
<string name="channel_discovery_opt_in_title">Możliwe naruszenie prywatności!</string>
|
<string name="channel_discovery_opt_in_title">Możliwe naruszenie prywatności!</string>
|
||||||
|
<string name="channel_discover_opt_in_message"><![CDATA[Odkrywanie kanałów używa usługi firmy trzeciej <a href="https://search.jabber.network">search.jabber.network</a>. <br><br>Używając tej funkcji twój adres IP oraz kryteria wyszukiwania zostaną wysłane do tej usługi. Sprawdź <a href="https://search.jabber.network/privacy">Politykę Prywatności</a> aby uzyskać więcej informacji.]]></string>
|
||||||
<string name="i_already_have_an_account">Już mam konto</string>
|
<string name="i_already_have_an_account">Już mam konto</string>
|
||||||
<string name="add_existing_account">Dodaj istniejące konto</string>
|
<string name="add_existing_account">Dodaj istniejące konto</string>
|
||||||
<string name="register_new_account">Zarejestruj nowe konto</string>
|
<string name="register_new_account">Zarejestruj nowe konto</string>
|
||||||
|
@ -889,4 +887,12 @@ Administrator twojego serwera będzie mógł czytać twoje wiadomości, ale moż
|
||||||
<string name="please_enter_password">Proszę podać hasło dla tego konta</string>
|
<string name="please_enter_password">Proszę podać hasło dla tego konta</string>
|
||||||
<string name="unable_to_perform_this_action">Nie można wykonać tej akcji</string>
|
<string name="unable_to_perform_this_action">Nie można wykonać tej akcji</string>
|
||||||
<string name="open_join_dialog">Dołącz do publicznego kanału...</string>
|
<string name="open_join_dialog">Dołącz do publicznego kanału...</string>
|
||||||
|
<string name="sharing_application_not_grant_permission">Aplikacja udostępniająca nie udzieliła pozwolenia na dostęp do tego pliku.</string>
|
||||||
|
<string name="group_chats_and_channels"><![CDATA[Rozmowy grupowe i kanały]]></string>
|
||||||
|
<string name="jabber_network">jabber.network</string>
|
||||||
|
<string name="local_server">Serwer lokalny</string>
|
||||||
|
<string name="pref_channel_discovery_summary">Większość użytkowników powinna wybrać \'jabber.network\' dla lepszych sugestii z całego ekosystemu XMPP. </string>
|
||||||
|
<string name="pref_channel_discovery">Metoda odkrywania kanałów</string>
|
||||||
|
<string name="backup">Kopia zapasowa</string>
|
||||||
|
<string name="category_about">O aplikacji</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -119,7 +119,7 @@
|
||||||
<string name="pref_sound">Toque</string>
|
<string name="pref_sound">Toque</string>
|
||||||
<string name="pref_sound_summary">Toca um som ao receber uma nova mensagem.</string>
|
<string name="pref_sound_summary">Toca um som ao receber uma nova mensagem.</string>
|
||||||
<string name="pref_notification_grace_period">Período de espera</string>
|
<string name="pref_notification_grace_period">Período de espera</string>
|
||||||
<string name="pref_notification_grace_period_summary">Espaço de tempo em que o Conversations ficará sem notificações, após alguma atividade em outro dispositivo.</string>
|
<string name="pref_notification_grace_period_summary">Espaço de tempo em que as notificações serão silenciadas, após detectar atividade em algum dos seus outros dispositivos.</string>
|
||||||
<string name="pref_advanced_options">Avançado</string>
|
<string name="pref_advanced_options">Avançado</string>
|
||||||
<string name="pref_never_send_crash">Nunca enviar relatórios de erros</string>
|
<string name="pref_never_send_crash">Nunca enviar relatórios de erros</string>
|
||||||
<string name="pref_never_send_crash_summary">Ao enviar os stack traces você está colaborando com o desenvolvimento do Conversations.</string>
|
<string name="pref_never_send_crash_summary">Ao enviar os stack traces você está colaborando com o desenvolvimento do Conversations.</string>
|
||||||
|
@ -281,10 +281,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Fim</string>
|
<string name="title_pref_quiet_hours_end_time">Fim</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Habilitar horário de sossego</string>
|
<string name="title_pref_enable_quiet_hours">Habilitar horário de sossego</string>
|
||||||
<string name="pref_quiet_hours_summary">As notificações serão silenciadas no horário de sossego.</string>
|
<string name="pref_quiet_hours_summary">As notificações serão silenciadas no horário de sossego.</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">O botão de envio indica o status</string>
|
|
||||||
<string name="pref_use_indicate_received">Solicitar confirmação de recebimento</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">As mensagens recebidas serão marcadas com um tique verde, se suportado.</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Colore o botão de envio para indicar o status do contato.</string>
|
|
||||||
<string name="pref_expert_options_other">Outras</string>
|
<string name="pref_expert_options_other">Outras</string>
|
||||||
<string name="pref_autojoin">Sincronizar com os favoritos</string>
|
<string name="pref_autojoin">Sincronizar com os favoritos</string>
|
||||||
<string name="pref_autojoin_summary">Entrar e sair das conversas em grupo de acordo com a sinalização de entrada automática nos seus favoritos.</string>
|
<string name="pref_autojoin_summary">Entrar e sair das conversas em grupo de acordo com a sinalização de entrada automática nos seus favoritos.</string>
|
||||||
|
@ -337,6 +333,7 @@
|
||||||
<string name="x_file_offered_for_download">%s oferecido para baixar</string>
|
<string name="x_file_offered_for_download">%s oferecido para baixar</string>
|
||||||
<string name="cancel_transmission">Cancelar transmissão</string>
|
<string name="cancel_transmission">Cancelar transmissão</string>
|
||||||
<string name="file_transmission_failed">não foi possível transferir o arquivo</string>
|
<string name="file_transmission_failed">não foi possível transferir o arquivo</string>
|
||||||
|
<string name="file_transmission_cancelled">transmissão do arquivo cancelada</string>
|
||||||
<string name="file_deleted">O arquivo foi excluído</string>
|
<string name="file_deleted">O arquivo foi excluído</string>
|
||||||
<string name="no_application_found_to_open_file">Não foi encontrado nenhum aplicativo para abrir o arquivo</string>
|
<string name="no_application_found_to_open_file">Não foi encontrado nenhum aplicativo para abrir o arquivo</string>
|
||||||
<string name="no_application_found_to_open_link">Não foi encontrado nenhum aplicativo para abrir o link</string>
|
<string name="no_application_found_to_open_link">Não foi encontrado nenhum aplicativo para abrir o link</string>
|
||||||
|
@ -511,9 +508,7 @@
|
||||||
<string name="notify_never">Notificações desabilitadas</string>
|
<string name="notify_never">Notificações desabilitadas</string>
|
||||||
<string name="notify_paused">Notificações pausadas</string>
|
<string name="notify_paused">Notificações pausadas</string>
|
||||||
<string name="pref_picture_compression">Compressão de imagem</string>
|
<string name="pref_picture_compression">Compressão de imagem</string>
|
||||||
<string name="pref_picture_compression_summary">Redimensiona e comprime as imagens.</string>
|
|
||||||
<string name="always">Sempre</string>
|
<string name="always">Sempre</string>
|
||||||
<string name="automatically">Automaticamente</string>
|
|
||||||
<string name="battery_optimizations_enabled">Otimizações de bateria habilitadas</string>
|
<string name="battery_optimizations_enabled">Otimizações de bateria habilitadas</string>
|
||||||
<string name="battery_optimizations_enabled_explained">O seu dispositivo está aplicando uma otimização intensa de bateria no Conversations, que pode levar a atraso nas notificações ou até mesmo perda de mensagens.\nÉ recomendável desabilitar isso.</string>
|
<string name="battery_optimizations_enabled_explained">O seu dispositivo está aplicando uma otimização intensa de bateria no Conversations, que pode levar a atraso nas notificações ou até mesmo perda de mensagens.\nÉ recomendável desabilitar isso.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">O seu dispositivo está aplicando uma otimização intensa de bateria no Conversations, que pode levar a atraso nas notificações ou até mesmo perda de mensagens.\nAgora você será solicitado a desabilitá-la.</string>
|
<string name="battery_optimizations_enabled_dialog">O seu dispositivo está aplicando uma otimização intensa de bateria no Conversations, que pode levar a atraso nas notificações ou até mesmo perda de mensagens.\nAgora você será solicitado a desabilitá-la.</string>
|
||||||
|
@ -856,6 +851,7 @@
|
||||||
<string name="discover_channels">Descobrir canais</string>
|
<string name="discover_channels">Descobrir canais</string>
|
||||||
<string name="search_channels">Pesquisar canais</string>
|
<string name="search_channels">Pesquisar canais</string>
|
||||||
<string name="channel_discovery_opt_in_title">Provável violação de privacidade!</string>
|
<string name="channel_discovery_opt_in_title">Provável violação de privacidade!</string>
|
||||||
|
<string name="channel_discover_opt_in_message"><![CDATA[A descoberta de canais utiliza um serviço de terceiros chamado <a href="https://search.jabber.network">search.jabber.network</a>.<br><br>Ao usar esse recurso, você enviará o seu endereço IP e termos de pesquisa para esse serviço. Veja sua <a href="https://search.jabber.network/privacy">Política de Privacidade</a> para maiores informações.]]></string>
|
||||||
<string name="i_already_have_an_account">Eu já tenho uma conta.</string>
|
<string name="i_already_have_an_account">Eu já tenho uma conta.</string>
|
||||||
<string name="add_existing_account">Adicionar uma conta já existente</string>
|
<string name="add_existing_account">Adicionar uma conta já existente</string>
|
||||||
<string name="register_new_account">Registrar uma nova conta</string>
|
<string name="register_new_account">Registrar uma nova conta</string>
|
||||||
|
@ -870,4 +866,6 @@
|
||||||
<string name="account_already_setup">Esta conta já foi configurada</string>
|
<string name="account_already_setup">Esta conta já foi configurada</string>
|
||||||
<string name="please_enter_password">Por favor, digite a senha para esta conta</string>
|
<string name="please_enter_password">Por favor, digite a senha para esta conta</string>
|
||||||
<string name="unable_to_perform_this_action">Não foi possível executar essa ação</string>
|
<string name="unable_to_perform_this_action">Não foi possível executar essa ação</string>
|
||||||
|
<string name="open_join_dialog">Entrar no canal público...</string>
|
||||||
|
<string name="sharing_application_not_grant_permission">O aplicativo de compartilhamento não permitiu o acesso a esse arquivo.</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -241,10 +241,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Hora de fim</string>
|
<string name="title_pref_quiet_hours_end_time">Hora de fim</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Ativar horas de tranquilidade</string>
|
<string name="title_pref_enable_quiet_hours">Ativar horas de tranquilidade</string>
|
||||||
<string name="pref_quiet_hours_summary">Notificações serão silenciadas nas horas de tranquilidade</string>
|
<string name="pref_quiet_hours_summary">Notificações serão silenciadas nas horas de tranquilidade</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">O botão de enviar indica o estado</string>
|
|
||||||
<string name="pref_use_indicate_received">Solicitar recibo de mensagem</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Mensagens recebidas serão marcadas com um visto verde se suportado</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Colorir o botão de enviar para indicar o estado do contacto</string>
|
|
||||||
<string name="pref_expert_options_other">Outros</string>
|
<string name="pref_expert_options_other">Outros</string>
|
||||||
<string name="toast_message_omemo_fingerprint">Impressão digital OMEMO copiada para a área de transferência!</string>
|
<string name="toast_message_omemo_fingerprint">Impressão digital OMEMO copiada para a área de transferência!</string>
|
||||||
<string name="conference_banned">Está banido desta conversa de grupo</string>
|
<string name="conference_banned">Está banido desta conversa de grupo</string>
|
||||||
|
@ -429,7 +425,6 @@
|
||||||
<string name="notify_never">Notificações desativadas</string>
|
<string name="notify_never">Notificações desativadas</string>
|
||||||
<string name="notify_paused">Notificações interrompidas</string>
|
<string name="notify_paused">Notificações interrompidas</string>
|
||||||
<string name="always">Sempre</string>
|
<string name="always">Sempre</string>
|
||||||
<string name="automatically">Automaticamente</string>
|
|
||||||
<string name="battery_optimizations_enabled">Otimizações da bateria ativadas</string>
|
<string name="battery_optimizations_enabled">Otimizações da bateria ativadas</string>
|
||||||
<string name="battery_optimizations_enabled_explained">O seu dispositivo está a fazer otimizações de bateria bastante agressivas na aplicação Conversations que poderão levar a notificações atrasadas ou até mesmo a perda de mensagens.\nÉ recomendado que as desative.</string>
|
<string name="battery_optimizations_enabled_explained">O seu dispositivo está a fazer otimizações de bateria bastante agressivas na aplicação Conversations que poderão levar a notificações atrasadas ou até mesmo a perda de mensagens.\nÉ recomendado que as desative.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">O seu dispositivo está a fazer otimizações de bateria bastantes agressivas na aplicação Conversations que poderão levar a notificações atrasadas ou até mesmo perda de mensagens.\n\nIrá-lhe agora ser pedido para desativá-las.</string>
|
<string name="battery_optimizations_enabled_dialog">O seu dispositivo está a fazer otimizações de bateria bastantes agressivas na aplicação Conversations que poderão levar a notificações atrasadas ou até mesmo perda de mensagens.\n\nIrá-lhe agora ser pedido para desativá-las.</string>
|
||||||
|
|
|
@ -119,7 +119,7 @@
|
||||||
<string name="pref_sound">Sunet de notificare</string>
|
<string name="pref_sound">Sunet de notificare</string>
|
||||||
<string name="pref_sound_summary">Notificare sonoră atunci când este primit un mesaj nou</string>
|
<string name="pref_sound_summary">Notificare sonoră atunci când este primit un mesaj nou</string>
|
||||||
<string name="pref_notification_grace_period">Perioadă de grație</string>
|
<string name="pref_notification_grace_period">Perioadă de grație</string>
|
||||||
<string name="pref_notification_grace_period_summary">Durata de timp cât Conversations păstrează liniștea după ce a observat activitate pe un alt dispozitiv</string>
|
<string name="pref_notification_grace_period_summary">Durata de timp cât notificările sunt ascunse după ce s-a observat activitate pe un alt dispozitiv al dumneavoastră.</string>
|
||||||
<string name="pref_advanced_options">Opțiuni avansate</string>
|
<string name="pref_advanced_options">Opțiuni avansate</string>
|
||||||
<string name="pref_never_send_crash">Nu trimite rapoarte de erori</string>
|
<string name="pref_never_send_crash">Nu trimite rapoarte de erori</string>
|
||||||
<string name="pref_never_send_crash_summary">Trimițând datele despre erori ajutați la continuarea dezvoltării aplicației Conversations</string>
|
<string name="pref_never_send_crash_summary">Trimițând datele despre erori ajutați la continuarea dezvoltării aplicației Conversations</string>
|
||||||
|
@ -281,10 +281,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Ora de terminare</string>
|
<string name="title_pref_quiet_hours_end_time">Ora de terminare</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Activează orar de liniște</string>
|
<string name="title_pref_enable_quiet_hours">Activează orar de liniște</string>
|
||||||
<string name="pref_quiet_hours_summary">Notificările vor fi reduse la tăcere în timpul orelor de liniște</string>
|
<string name="pref_quiet_hours_summary">Notificările vor fi reduse la tăcere în timpul orelor de liniște</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Butonul de trimitere indică starea</string>
|
|
||||||
<string name="pref_use_indicate_received">Cere raport de primire</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Mesajele primite vor fi marcate cu o bifa verde, dacă este suportat</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Colorează butonul de trimitere pentru a indica starea contactului</string>
|
|
||||||
<string name="pref_expert_options_other">Altele</string>
|
<string name="pref_expert_options_other">Altele</string>
|
||||||
<string name="pref_autojoin">Sincronizează cu semnele de carte</string>
|
<string name="pref_autojoin">Sincronizează cu semnele de carte</string>
|
||||||
<string name="pref_autojoin_summary">Alătură-te sau părăsește discuțiile de grup în mod automat în funcție de setarea din semnele de carte.</string>
|
<string name="pref_autojoin_summary">Alătură-te sau părăsește discuțiile de grup în mod automat în funcție de setarea din semnele de carte.</string>
|
||||||
|
@ -514,9 +510,9 @@
|
||||||
<string name="notify_never">Notificări dezactivate</string>
|
<string name="notify_never">Notificări dezactivate</string>
|
||||||
<string name="notify_paused">Notificări suspendate</string>
|
<string name="notify_paused">Notificări suspendate</string>
|
||||||
<string name="pref_picture_compression">Compresie imagini</string>
|
<string name="pref_picture_compression">Compresie imagini</string>
|
||||||
<string name="pref_picture_compression_summary">Redimensionează și comprimă imaginile</string>
|
<string name="pref_picture_compression_summary">Notă: Folosiți \'Alegeți un fișier\' în loc de \'Alegeți o imagine\' pentru a trimite imaginile necomprimate ignorând această setare.</string>
|
||||||
<string name="always">Mereu</string>
|
<string name="always">Mereu</string>
|
||||||
<string name="automatically">Automat</string>
|
<string name="large_images_only">Doar imaginile mari</string>
|
||||||
<string name="battery_optimizations_enabled">Optimizare baterie activată</string>
|
<string name="battery_optimizations_enabled">Optimizare baterie activată</string>
|
||||||
<string name="battery_optimizations_enabled_explained">Dispozitivul dumneavoastră încearcă să optimizeze agresiv consumul bateriei pentru Conversations, asta poate duce la notificări întârziate sau chiar pierderea mesajelor.\nEste recomandat sa dezactivați aceste optimizări.</string>
|
<string name="battery_optimizations_enabled_explained">Dispozitivul dumneavoastră încearcă să optimizeze agresiv consumul bateriei pentru Conversations, asta poate duce la notificări întârziate sau chiar pierderea mesajelor.\nEste recomandat sa dezactivați aceste optimizări.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">Dispozitivul dumneavoastră încearcă să optimizeze agresiv consumul
|
<string name="battery_optimizations_enabled_dialog">Dispozitivul dumneavoastră încearcă să optimizeze agresiv consumul
|
||||||
|
@ -883,4 +879,12 @@ sau chiar pierderea mesajelor.\nÎn continuare veți fi rugați să dezactivați
|
||||||
<string name="please_enter_password">Va rugăm să introduceți parola pentru acest cont</string>
|
<string name="please_enter_password">Va rugăm să introduceți parola pentru acest cont</string>
|
||||||
<string name="unable_to_perform_this_action">Nu se poate realiza această acțiune</string>
|
<string name="unable_to_perform_this_action">Nu se poate realiza această acțiune</string>
|
||||||
<string name="open_join_dialog">Alătură-te unui canal public...</string>
|
<string name="open_join_dialog">Alătură-te unui canal public...</string>
|
||||||
|
<string name="sharing_application_not_grant_permission">Aplicația care a partajat nu a permis accesul la acest fișier.</string>
|
||||||
|
<string name="group_chats_and_channels"><![CDATA[Discuții de grup & Canale]]></string>
|
||||||
|
<string name="jabber_network">jabber.network</string>
|
||||||
|
<string name="local_server">Server local</string>
|
||||||
|
<string name="pref_channel_discovery_summary">Cei mai mulți utilizatori ar trebui să aleagă \'jabber.network\' pentru a primi sugestii mai bune din întregul ecosistem XMPP.</string>
|
||||||
|
<string name="pref_channel_discovery">Metoda de descoperire a canalelor</string>
|
||||||
|
<string name="backup">Copie de siguranță</string>
|
||||||
|
<string name="category_about">Despre</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -114,7 +114,6 @@
|
||||||
<string name="pref_sound">Звук уведомления</string>
|
<string name="pref_sound">Звук уведомления</string>
|
||||||
<string name="pref_sound_summary">Звук при поступлении новых сообщений</string>
|
<string name="pref_sound_summary">Звук при поступлении новых сообщений</string>
|
||||||
<string name="pref_notification_grace_period">Грейс-период</string>
|
<string name="pref_notification_grace_period">Грейс-период</string>
|
||||||
<string name="pref_notification_grace_period_summary">Промежуток времени, в течение которого Conversations хранит молчание при обнаружении активности на другом устройстве</string>
|
|
||||||
<string name="pref_advanced_options">Дополнительно</string>
|
<string name="pref_advanced_options">Дополнительно</string>
|
||||||
<string name="pref_never_send_crash">Не отправлять отчёты об ошибках</string>
|
<string name="pref_never_send_crash">Не отправлять отчёты об ошибках</string>
|
||||||
<string name="pref_never_send_crash_summary">Отправляя отчёты об ошибках, вы помогаете исправить и улучшить Conversations</string>
|
<string name="pref_never_send_crash_summary">Отправляя отчёты об ошибках, вы помогаете исправить и улучшить Conversations</string>
|
||||||
|
@ -268,10 +267,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Окончание</string>
|
<string name="title_pref_quiet_hours_end_time">Окончание</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Включить режим «тихих часов»</string>
|
<string name="title_pref_enable_quiet_hours">Включить режим «тихих часов»</string>
|
||||||
<string name="pref_quiet_hours_summary">Уведомления будут отключены во время «тихих часов»</string>
|
<string name="pref_quiet_hours_summary">Уведомления будут отключены во время «тихих часов»</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Использовать кнопку-индикатор</string>
|
|
||||||
<string name="pref_use_indicate_received">Запрос в получении сообщения</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Если поддерживается, поступившие сообщения будут отмечены зелёной галочкой</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Раскрасить кнопку отправить, указывая текущий статус собеседника</string>
|
|
||||||
<string name="pref_expert_options_other">Другие</string>
|
<string name="pref_expert_options_other">Другие</string>
|
||||||
<string name="toast_message_omemo_fingerprint">OMEMO отпечаток скопирован в буфер обмена!</string>
|
<string name="toast_message_omemo_fingerprint">OMEMO отпечаток скопирован в буфер обмена!</string>
|
||||||
<string name="conference_banned">Вы заблокированы из этой конференции</string>
|
<string name="conference_banned">Вы заблокированы из этой конференции</string>
|
||||||
|
@ -482,9 +477,7 @@
|
||||||
<string name="notify_never">Без уведомления</string>
|
<string name="notify_never">Без уведомления</string>
|
||||||
<string name="notify_paused">Уведомления приостановлены</string>
|
<string name="notify_paused">Уведомления приостановлены</string>
|
||||||
<string name="pref_picture_compression">Сжатие изображений</string>
|
<string name="pref_picture_compression">Сжатие изображений</string>
|
||||||
<string name="pref_picture_compression_summary">Изменять размер и сжимать изображения</string>
|
|
||||||
<string name="always">Всегда</string>
|
<string name="always">Всегда</string>
|
||||||
<string name="automatically">Автоматически</string>
|
|
||||||
<string name="battery_optimizations_enabled">Оптимизации энергопотребления разрешены</string>
|
<string name="battery_optimizations_enabled">Оптимизации энергопотребления разрешены</string>
|
||||||
<string name="battery_optimizations_enabled_explained">Ваше устройство использует сильные оптимизации энергопотребления, что может привести к задержке уведомлений и даже потере сообщений.\nРекомендуется их отключить.</string>
|
<string name="battery_optimizations_enabled_explained">Ваше устройство использует сильные оптимизации энергопотребления, что может привести к задержке уведомлений и даже потере сообщений.\nРекомендуется их отключить.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">Ваше устройство использует сильные оптимизации энергопотребления, что может привести к задержке уведомлений и даже потере сообщений.\nСейчас появится предложение их отключить.</string>
|
<string name="battery_optimizations_enabled_dialog">Ваше устройство использует сильные оптимизации энергопотребления, что может привести к задержке уведомлений и даже потере сообщений.\nСейчас появится предложение их отключить.</string>
|
||||||
|
|
|
@ -195,10 +195,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Čas konca</string>
|
<string name="title_pref_quiet_hours_end_time">Čas konca</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Povoliť tichý režim</string>
|
<string name="title_pref_enable_quiet_hours">Povoliť tichý režim</string>
|
||||||
<string name="pref_quiet_hours_summary">Upozornenia budú počas tichého režimu stlmené</string>
|
<string name="pref_quiet_hours_summary">Upozornenia budú počas tichého režimu stlmené</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Tlačidlo pre odoslanie zobrazuje stav</string>
|
|
||||||
<string name="pref_use_indicate_received">Požadovať oznámenie o prijatí</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Prijaté správy budú označené zelenou kvačkou. Toto nemusí vždy plne fungovať.</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Vyfarbiť tlačidlo pre odoslanie na určenie stavu kontaktu</string>
|
|
||||||
<string name="pref_expert_options_other">Ďalší</string>
|
<string name="pref_expert_options_other">Ďalší</string>
|
||||||
<string name="using_account">Používa sa účet %s</string>
|
<string name="using_account">Používa sa účet %s</string>
|
||||||
<string name="checking_x">Overiť %s na HTTP host</string>
|
<string name="checking_x">Overiť %s na HTTP host</string>
|
||||||
|
|
|
@ -108,7 +108,6 @@
|
||||||
<string name="pref_sound">Звук</string>
|
<string name="pref_sound">Звук</string>
|
||||||
<string name="pref_sound_summary">Пуштање звука кад стигне нова порука</string>
|
<string name="pref_sound_summary">Пуштање звука кад стигне нова порука</string>
|
||||||
<string name="pref_notification_grace_period">Период одгоде</string>
|
<string name="pref_notification_grace_period">Период одгоде</string>
|
||||||
<string name="pref_notification_grace_period_summary">Период тишине након што Конверзација запази активност на другом уређају</string>
|
|
||||||
<string name="pref_advanced_options">Напредно</string>
|
<string name="pref_advanced_options">Напредно</string>
|
||||||
<string name="pref_never_send_crash">Никад не шаљи извештаје о паду</string>
|
<string name="pref_never_send_crash">Никад не шаљи извештаје о паду</string>
|
||||||
<string name="pref_never_send_crash_summary">Слањем контратрага помажете текући развој Конверзације</string>
|
<string name="pref_never_send_crash_summary">Слањем контратрага помажете текући развој Конверзације</string>
|
||||||
|
@ -254,10 +253,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Време завршетка</string>
|
<string name="title_pref_quiet_hours_end_time">Време завршетка</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Укључи тихе сате</string>
|
<string name="title_pref_enable_quiet_hours">Укључи тихе сате</string>
|
||||||
<string name="pref_quiet_hours_summary">Обавештења ће бити ућуткана за време тихих сати</string>
|
<string name="pref_quiet_hours_summary">Обавештења ће бити ућуткана за време тихих сати</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Дугме слања показује стање</string>
|
|
||||||
<string name="pref_use_indicate_received">Захтевај потврде порука</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Означи примљене поруке зеленом квачицом, ако је подржано</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Боја дугмета за слање показује стање контакта</string>
|
|
||||||
<string name="pref_expert_options_other">Остало</string>
|
<string name="pref_expert_options_other">Остало</string>
|
||||||
<string name="toast_message_omemo_fingerprint">ОМЕМО отисак копиран на клипборд!</string>
|
<string name="toast_message_omemo_fingerprint">ОМЕМО отисак копиран на клипборд!</string>
|
||||||
<string name="conference_banned">Забрањени сте на овом групном ћаскању</string>
|
<string name="conference_banned">Забрањени сте на овом групном ћаскању</string>
|
||||||
|
@ -453,7 +448,6 @@
|
||||||
<string name="notify_never">Обавештења искључена</string>
|
<string name="notify_never">Обавештења искључена</string>
|
||||||
<string name="notify_paused">Обавештења паузирана</string>
|
<string name="notify_paused">Обавештења паузирана</string>
|
||||||
<string name="always">увек</string>
|
<string name="always">увек</string>
|
||||||
<string name="automatically">аутоматски</string>
|
|
||||||
<string name="battery_optimizations_enabled">Оптимизација батерије је укључена</string>
|
<string name="battery_optimizations_enabled">Оптимизација батерије је укључена</string>
|
||||||
<string name="battery_optimizations_enabled_explained">Ваш уређај користи оптимизацију потрошње батерије за Конверзацију што може да доведе до застоја обавештења или чак губитка порука.\nПрепоручљиво је да то искључите.</string>
|
<string name="battery_optimizations_enabled_explained">Ваш уређај користи оптимизацију потрошње батерије за Конверзацију што може да доведе до застоја обавештења или чак губитка порука.\nПрепоручљиво је да то искључите.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">Ваш уређај користи оптимизацију потрошње батерије за Конверзацију што може да доведе до застоја обавештења или чак губитка порука.\n\nСада ћете бити упитани да то искључите.</string>
|
<string name="battery_optimizations_enabled_dialog">Ваш уређај користи оптимизацију потрошње батерије за Конверзацију што може да доведе до застоја обавештења или чак губитка порука.\n\nСада ћете бити упитани да то искључите.</string>
|
||||||
|
|
|
@ -117,7 +117,6 @@
|
||||||
<string name="pref_sound">Meddelandesignal</string>
|
<string name="pref_sound">Meddelandesignal</string>
|
||||||
<string name="pref_sound_summary">Spela ljud när meddelande tagits emot</string>
|
<string name="pref_sound_summary">Spela ljud när meddelande tagits emot</string>
|
||||||
<string name="pref_notification_grace_period">Notifieringsfrist</string>
|
<string name="pref_notification_grace_period">Notifieringsfrist</string>
|
||||||
<string name="pref_notification_grace_period_summary">Hur lång tid Conversations är tyst efter aktivitet på en annan enhet</string>
|
|
||||||
<string name="pref_advanced_options">Avancerat</string>
|
<string name="pref_advanced_options">Avancerat</string>
|
||||||
<string name="pref_never_send_crash">Skicka aldrig krasch-rapporter</string>
|
<string name="pref_never_send_crash">Skicka aldrig krasch-rapporter</string>
|
||||||
<string name="pref_never_send_crash_summary">Genom att skicka in stack traces hjälper du utvecklarna av Conversations</string>
|
<string name="pref_never_send_crash_summary">Genom att skicka in stack traces hjälper du utvecklarna av Conversations</string>
|
||||||
|
@ -265,10 +264,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Sluttid</string>
|
<string name="title_pref_quiet_hours_end_time">Sluttid</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Aktivera tysta timmar</string>
|
<string name="title_pref_enable_quiet_hours">Aktivera tysta timmar</string>
|
||||||
<string name="pref_quiet_hours_summary">Notifieringar kommer vara tysta under tysta timmar</string>
|
<string name="pref_quiet_hours_summary">Notifieringar kommer vara tysta under tysta timmar</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Skickaknappen indikerar status</string>
|
|
||||||
<string name="pref_use_indicate_received">Begär mottagningskvitto</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Mottagna meddelanden markeras med en grön bock om det stöds</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Färglägg skickaknappen för att indikera kontaktens status</string>
|
|
||||||
<string name="pref_expert_options_other">Annat</string>
|
<string name="pref_expert_options_other">Annat</string>
|
||||||
<string name="pref_autojoin">Synkronisera med bokmärken</string>
|
<string name="pref_autojoin">Synkronisera med bokmärken</string>
|
||||||
<string name="toast_message_omemo_fingerprint">OMEMO-fingeravtryck har kopierats till urklipp!</string>
|
<string name="toast_message_omemo_fingerprint">OMEMO-fingeravtryck har kopierats till urklipp!</string>
|
||||||
|
@ -459,9 +454,7 @@
|
||||||
<string name="notify_never">Notifieringar deaktiverade</string>
|
<string name="notify_never">Notifieringar deaktiverade</string>
|
||||||
<string name="notify_paused">Notifieringar pausade</string>
|
<string name="notify_paused">Notifieringar pausade</string>
|
||||||
<string name="pref_picture_compression">Bildkomprimering</string>
|
<string name="pref_picture_compression">Bildkomprimering</string>
|
||||||
<string name="pref_picture_compression_summary">Ändra storlek på och komprimera bilder</string>
|
|
||||||
<string name="always">Alltid</string>
|
<string name="always">Alltid</string>
|
||||||
<string name="automatically">Automatiskt</string>
|
|
||||||
<string name="battery_optimizations_enabled">Batterioptimeringar aktiverade</string>
|
<string name="battery_optimizations_enabled">Batterioptimeringar aktiverade</string>
|
||||||
<string name="battery_optimizations_enabled_explained">Din enhet har kraftiga batterioptimeringar som påverkar Conversations på så sätt att inkommande meddelanden kan försenas eller kan till och med gå förlorade.\nDet är rekommenderat att deaktivera batterioptimeringarna.</string>
|
<string name="battery_optimizations_enabled_explained">Din enhet har kraftiga batterioptimeringar som påverkar Conversations på så sätt att inkommande meddelanden kan försenas eller kan till och med gå förlorade.\nDet är rekommenderat att deaktivera batterioptimeringarna.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">Din enhet har kraftiga batterioptimeringar som påverkar Conversations på så sätt att inkommande meddelanden kan försenas eller kan till och med gå förlorade.\nDu kommer nu att bli ombedd att stänga av batterioptimeringarna för Conversations.</string>
|
<string name="battery_optimizations_enabled_dialog">Din enhet har kraftiga batterioptimeringar som påverkar Conversations på så sätt att inkommande meddelanden kan försenas eller kan till och med gå förlorade.\nDu kommer nu att bli ombedd att stänga av batterioptimeringarna för Conversations.</string>
|
||||||
|
|
|
@ -98,7 +98,6 @@
|
||||||
<string name="pref_sound">Zil sesi</string>
|
<string name="pref_sound">Zil sesi</string>
|
||||||
<string name="pref_sound_summary">Yeni bir ileti geldiğinde sesli bildir</string>
|
<string name="pref_sound_summary">Yeni bir ileti geldiğinde sesli bildir</string>
|
||||||
<string name="pref_notification_grace_period">Mühlet</string>
|
<string name="pref_notification_grace_period">Mühlet</string>
|
||||||
<string name="pref_notification_grace_period_summary">Başka bir aygıt üstünde etkinlik algılandığında Conversations\'ın sessiz kalma süresi</string>
|
|
||||||
<string name="pref_advanced_options">Gelişmiş</string>
|
<string name="pref_advanced_options">Gelişmiş</string>
|
||||||
<string name="pref_never_send_crash">Asla çöküş raporu gönderme</string>
|
<string name="pref_never_send_crash">Asla çöküş raporu gönderme</string>
|
||||||
<string name="pref_never_send_crash_summary">Çöküş raporu göndermeniz Conversations’ın geliştirilmesine katkıda bulunacaktır.</string>
|
<string name="pref_never_send_crash_summary">Çöküş raporu göndermeniz Conversations’ın geliştirilmesine katkıda bulunacaktır.</string>
|
||||||
|
@ -231,10 +230,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Bitiş zamanı</string>
|
<string name="title_pref_quiet_hours_end_time">Bitiş zamanı</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Sessiz saatleri etkinleştir</string>
|
<string name="title_pref_enable_quiet_hours">Sessiz saatleri etkinleştir</string>
|
||||||
<string name="pref_quiet_hours_summary">Bildirimler sessiz saatler boyunca sessize alınacaktır</string>
|
<string name="pref_quiet_hours_summary">Bildirimler sessiz saatler boyunca sessize alınacaktır</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Gönder düğmesi durum bildirsin</string>
|
|
||||||
<string name="pref_use_indicate_received">İleti alındısı iste</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Alınan iletiler, eğer destekleniyorsa, yeşil bir tikle işaretlenecektir.</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Gönder butonunu kişinin durumuna göre renklendir</string>
|
|
||||||
<string name="pref_expert_options_other">Diğer</string>
|
<string name="pref_expert_options_other">Diğer</string>
|
||||||
<string name="toast_message_omemo_fingerprint">OMEMO parmak izi panoya kopyalandı!</string>
|
<string name="toast_message_omemo_fingerprint">OMEMO parmak izi panoya kopyalandı!</string>
|
||||||
<string name="using_account">%s hesabını kullanarak</string>
|
<string name="using_account">%s hesabını kullanarak</string>
|
||||||
|
@ -399,7 +394,6 @@
|
||||||
<string name="notify_never">Uyarılar devre dışı</string>
|
<string name="notify_never">Uyarılar devre dışı</string>
|
||||||
<string name="notify_paused">Uyarılar geçici olarak durduruldu</string>
|
<string name="notify_paused">Uyarılar geçici olarak durduruldu</string>
|
||||||
<string name="always">Her zaman</string>
|
<string name="always">Her zaman</string>
|
||||||
<string name="automatically">Kendiliğinden</string>
|
|
||||||
<string name="battery_optimizations_enabled">Pil optimizasyonu devrede</string>
|
<string name="battery_optimizations_enabled">Pil optimizasyonu devrede</string>
|
||||||
<string name="battery_optimizations_enabled_explained">Aygıtınız Conversations üzerinde yoğun pil iyileştirmesi yaptığı için bildirimlerde gecikmeler olabilir üstelik bazı ileti kayıpları yaşanabilir.\nBu durumla karşılaşamamak için devre dışı bırakmanız önerilir. </string>
|
<string name="battery_optimizations_enabled_explained">Aygıtınız Conversations üzerinde yoğun pil iyileştirmesi yaptığı için bildirimlerde gecikmeler olabilir üstelik bazı ileti kayıpları yaşanabilir.\nBu durumla karşılaşamamak için devre dışı bırakmanız önerilir. </string>
|
||||||
<string name="battery_optimizations_enabled_dialog">Aygıtınız Conversations üzerinde yoğun pil iyileştirmesi yaptığı için bildirimlerde gecikmeler olabilir üstelik bazı ileti kayıpları yaşanabilir.\n Şimdi bunları devre dışı bırakmanız istenecek.</string>
|
<string name="battery_optimizations_enabled_dialog">Aygıtınız Conversations üzerinde yoğun pil iyileştirmesi yaptığı için bildirimlerde gecikmeler olabilir üstelik bazı ileti kayıpları yaşanabilir.\n Şimdi bunları devre dışı bırakmanız istenecek.</string>
|
||||||
|
|
|
@ -116,7 +116,6 @@
|
||||||
<string name="pref_sound">Мелодія дзвінка</string>
|
<string name="pref_sound">Мелодія дзвінка</string>
|
||||||
<string name="pref_sound_summary">Грати звук, коли надходить нове повідомлення</string>
|
<string name="pref_sound_summary">Грати звук, коли надходить нове повідомлення</string>
|
||||||
<string name="pref_notification_grace_period">Період очікування</string>
|
<string name="pref_notification_grace_period">Період очікування</string>
|
||||||
<string name="pref_notification_grace_period_summary">Період часу, протягом якого програма не сповіщає, після діяльності на іншому пристрої</string>
|
|
||||||
<string name="pref_advanced_options">Розширені</string>
|
<string name="pref_advanced_options">Розширені</string>
|
||||||
<string name="pref_never_send_crash">Не надсилати звіти про збої</string>
|
<string name="pref_never_send_crash">Не надсилати звіти про збої</string>
|
||||||
<string name="pref_never_send_crash_summary">Надсилаючи траси стеку викликів Ви допомагаєте розробці Розмов, яка продовжується</string>
|
<string name="pref_never_send_crash_summary">Надсилаючи траси стеку викликів Ви допомагаєте розробці Розмов, яка продовжується</string>
|
||||||
|
@ -279,10 +278,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Час завершення</string>
|
<string name="title_pref_quiet_hours_end_time">Час завершення</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Задіяти години тиші</string>
|
<string name="title_pref_enable_quiet_hours">Задіяти години тиші</string>
|
||||||
<string name="pref_quiet_hours_summary">Сповіщення не звучатимуть під час годин тиші</string>
|
<string name="pref_quiet_hours_summary">Сповіщення не звучатимуть під час годин тиші</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Кнопка відправки показує стан</string>
|
|
||||||
<string name="pref_use_indicate_received">Просити повідомлення про доставку</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Отримані повідомлення будуть позначені зеленою галочкою, якщо ця функція підтримується</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Змінювати колір кнопки відправлення на позначення статусу контакта</string>
|
|
||||||
<string name="pref_expert_options_other">Інше</string>
|
<string name="pref_expert_options_other">Інше</string>
|
||||||
<string name="pref_autojoin">Синхронізувати з закладками</string>
|
<string name="pref_autojoin">Синхронізувати з закладками</string>
|
||||||
<string name="pref_autojoin_summary">Приєднуватися до груп і полишати їх відповідно до опції автоматичного приєднання, вибраної в закладках.</string>
|
<string name="pref_autojoin_summary">Приєднуватися до груп і полишати їх відповідно до опції автоматичного приєднання, вибраної в закладках.</string>
|
||||||
|
@ -513,9 +508,7 @@
|
||||||
<string name="notify_never">Сповіщення вимкнено</string>
|
<string name="notify_never">Сповіщення вимкнено</string>
|
||||||
<string name="notify_paused">Сповіщення призупинено</string>
|
<string name="notify_paused">Сповіщення призупинено</string>
|
||||||
<string name="pref_picture_compression">Стиснення зображень</string>
|
<string name="pref_picture_compression">Стиснення зображень</string>
|
||||||
<string name="pref_picture_compression_summary">Змінити розмір і стиснути зображення</string>
|
|
||||||
<string name="always">Завжди</string>
|
<string name="always">Завжди</string>
|
||||||
<string name="automatically">Автоматично</string>
|
|
||||||
<string name="battery_optimizations_enabled">Оптимізацію батареї задіяно</string>
|
<string name="battery_optimizations_enabled">Оптимізацію батареї задіяно</string>
|
||||||
<string name="battery_optimizations_enabled_explained">Ваш пристрій здійснює деяку агресивну оптимізацію Розмов для збереження заряду батареї, яка може призвести до затримки сповіщення або навіть втрати повідомлень.\nРекомендовано відключити цю оптимізацію.</string>
|
<string name="battery_optimizations_enabled_explained">Ваш пристрій здійснює деяку агресивну оптимізацію Розмов для збереження заряду батареї, яка може призвести до затримки сповіщення або навіть втрати повідомлень.\nРекомендовано відключити цю оптимізацію.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">Ваш пристрій здійснює деяку агресивну оптимізацію Розмов для збереження заряду батареї, яка може призвести до затримки сповіщення або навіть втрати повідомлень.\nПросимо Вас зараз відключити цю оптимзацію.</string>
|
<string name="battery_optimizations_enabled_dialog">Ваш пристрій здійснює деяку агресивну оптимізацію Розмов для збереження заряду батареї, яка може призвести до затримки сповіщення або навіть втрати повідомлень.\nПросимо Вас зараз відключити цю оптимзацію.</string>
|
||||||
|
|
|
@ -98,7 +98,6 @@
|
||||||
<string name="pref_sound">Âm báo</string>
|
<string name="pref_sound">Âm báo</string>
|
||||||
<string name="pref_sound_summary">Chơi nhạc báo khi có tin nhắn mới</string>
|
<string name="pref_sound_summary">Chơi nhạc báo khi có tin nhắn mới</string>
|
||||||
<string name="pref_notification_grace_period">Thời gian gia hạn thông báo</string>
|
<string name="pref_notification_grace_period">Thời gian gia hạn thông báo</string>
|
||||||
<string name="pref_notification_grace_period_summary">Khoảng thời gian Conversations giữ yên lặng sau khi xem hoạt động trên một thiết bị khác</string>
|
|
||||||
<string name="pref_advanced_options">Nâng cao</string>
|
<string name="pref_advanced_options">Nâng cao</string>
|
||||||
<string name="pref_never_send_crash">Không bao giờ gửi báo cáo dừng chạy</string>
|
<string name="pref_never_send_crash">Không bao giờ gửi báo cáo dừng chạy</string>
|
||||||
<string name="pref_never_send_crash_summary">Bằng việc gửi báo cáo hoạt động, bạn đang hỗ trợ nhóm phát triển của Conversations</string>
|
<string name="pref_never_send_crash_summary">Bằng việc gửi báo cáo hoạt động, bạn đang hỗ trợ nhóm phát triển của Conversations</string>
|
||||||
|
@ -227,10 +226,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">Thời gian kết thúc</string>
|
<string name="title_pref_quiet_hours_end_time">Thời gian kết thúc</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Bật giờ yên lặng</string>
|
<string name="title_pref_enable_quiet_hours">Bật giờ yên lặng</string>
|
||||||
<string name="pref_quiet_hours_summary">Thông báo sẽ được tắt trong giờ yên lặng</string>
|
<string name="pref_quiet_hours_summary">Thông báo sẽ được tắt trong giờ yên lặng</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Nút gửi biểu thị trạng thái</string>
|
|
||||||
<string name="pref_use_indicate_received">Yêu cầu thông báo nhận tin nhắn</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Các tin nhắn đã nhận sẽ được đánh dấu kiểm màu xanh lá nếu được hỗ trợ</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Tô màu nút gửi để biểu thị trạng thái của liên hệ</string>
|
|
||||||
<string name="pref_expert_options_other">Khác</string>
|
<string name="pref_expert_options_other">Khác</string>
|
||||||
<string name="toast_message_omemo_fingerprint">Đã chép dấu vân tay OMEMO vào clipboard!</string>
|
<string name="toast_message_omemo_fingerprint">Đã chép dấu vân tay OMEMO vào clipboard!</string>
|
||||||
<string name="using_account">đang dùng tài khoản %s</string>
|
<string name="using_account">đang dùng tài khoản %s</string>
|
||||||
|
@ -367,7 +362,6 @@
|
||||||
<string name="notify_never">Đã tắt thông báo</string>
|
<string name="notify_never">Đã tắt thông báo</string>
|
||||||
<string name="notify_paused">Đã dừng thông báo</string>
|
<string name="notify_paused">Đã dừng thông báo</string>
|
||||||
<string name="always">Luôn luôn</string>
|
<string name="always">Luôn luôn</string>
|
||||||
<string name="automatically">Tự động</string>
|
|
||||||
<string name="battery_optimizations_enabled">Đã bật tối ưu pin</string>
|
<string name="battery_optimizations_enabled">Đã bật tối ưu pin</string>
|
||||||
<string name="battery_optimizations_enabled_explained">Thiết bị đang thực hiện tối ưu hoá pin trên Conversations và nó có thể gây trì hoãn thông báo hay thậm chí làm mất tin nhắn.\nBạn nên tắt chế độ đó đi.</string>
|
<string name="battery_optimizations_enabled_explained">Thiết bị đang thực hiện tối ưu hoá pin trên Conversations và nó có thể gây trì hoãn thông báo hay thậm chí làm mất tin nhắn.\nBạn nên tắt chế độ đó đi.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">Thiết bị đang thực hiện tối ưu hoá pin trên Conversations và nó có thể gây trì hoãn thông báo hay thậm chí làm mất tin nhắn.\n\nBây giờ, bạn sẽ được yêu cầu tắt chế độ đó đi.</string>
|
<string name="battery_optimizations_enabled_dialog">Thiết bị đang thực hiện tối ưu hoá pin trên Conversations và nó có thể gây trì hoãn thông báo hay thậm chí làm mất tin nhắn.\n\nBây giờ, bạn sẽ được yêu cầu tắt chế độ đó đi.</string>
|
||||||
|
|
|
@ -119,7 +119,6 @@
|
||||||
<string name="pref_sound">铃声</string>
|
<string name="pref_sound">铃声</string>
|
||||||
<string name="pref_sound_summary">收到新消息时响铃</string>
|
<string name="pref_sound_summary">收到新消息时响铃</string>
|
||||||
<string name="pref_notification_grace_period">静默期限</string>
|
<string name="pref_notification_grace_period">静默期限</string>
|
||||||
<string name="pref_notification_grace_period_summary">发现在其它设备上的活动后,Conversations保持安静的时间</string>
|
|
||||||
<string name="pref_advanced_options">高级</string>
|
<string name="pref_advanced_options">高级</string>
|
||||||
<string name="pref_never_send_crash">从不发送崩溃报告</string>
|
<string name="pref_never_send_crash">从不发送崩溃报告</string>
|
||||||
<string name="pref_never_send_crash_summary">通过发送堆栈跟踪,您可以帮助Conversations持续发展</string>
|
<string name="pref_never_send_crash_summary">通过发送堆栈跟踪,您可以帮助Conversations持续发展</string>
|
||||||
|
@ -281,10 +280,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">结束时间</string>
|
<string name="title_pref_quiet_hours_end_time">结束时间</string>
|
||||||
<string name="title_pref_enable_quiet_hours">启用静默时间段</string>
|
<string name="title_pref_enable_quiet_hours">启用静默时间段</string>
|
||||||
<string name="pref_quiet_hours_summary">在静默时间段内通知将保持静音</string>
|
<string name="pref_quiet_hours_summary">在静默时间段内通知将保持静音</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">发送按钮显示状态</string>
|
|
||||||
<string name="pref_use_indicate_received">请求消息回执</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">如果支持,收到的消息将标记为绿色对勾</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">着色发送按钮以示联系人状态</string>
|
|
||||||
<string name="pref_expert_options_other">其他</string>
|
<string name="pref_expert_options_other">其他</string>
|
||||||
<string name="pref_autojoin">同步书签</string>
|
<string name="pref_autojoin">同步书签</string>
|
||||||
<string name="pref_autojoin_summary">根据书签中的自动加入标记加入并离开群聊。</string>
|
<string name="pref_autojoin_summary">根据书签中的自动加入标记加入并离开群聊。</string>
|
||||||
|
@ -509,9 +504,7 @@
|
||||||
<string name="notify_never">禁用通知</string>
|
<string name="notify_never">禁用通知</string>
|
||||||
<string name="notify_paused">暂停通知</string>
|
<string name="notify_paused">暂停通知</string>
|
||||||
<string name="pref_picture_compression">图像压缩</string>
|
<string name="pref_picture_compression">图像压缩</string>
|
||||||
<string name="pref_picture_compression_summary">调整大小并压缩图像</string>
|
|
||||||
<string name="always">总是</string>
|
<string name="always">总是</string>
|
||||||
<string name="automatically">自动</string>
|
|
||||||
<string name="battery_optimizations_enabled">启用节电模式</string>
|
<string name="battery_optimizations_enabled">启用节电模式</string>
|
||||||
<string name="battery_optimizations_enabled_explained">你的设备正在为Conversations进行电池优化,这可能导致通知的延迟甚至消息的丢失。
|
<string name="battery_optimizations_enabled_explained">你的设备正在为Conversations进行电池优化,这可能导致通知的延迟甚至消息的丢失。
|
||||||
建议不要这样做</string>
|
建议不要这样做</string>
|
||||||
|
|
|
@ -99,7 +99,6 @@
|
||||||
<string name="pref_sound">鈴聲</string>
|
<string name="pref_sound">鈴聲</string>
|
||||||
<string name="pref_sound_summary">收到新訊息時響鈴</string>
|
<string name="pref_sound_summary">收到新訊息時響鈴</string>
|
||||||
<string name="pref_notification_grace_period">靜默期限</string>
|
<string name="pref_notification_grace_period">靜默期限</string>
|
||||||
<string name="pref_notification_grace_period_summary">發現在其它設備上的活動後,Conversations保持安靜的時間</string>
|
|
||||||
<string name="pref_advanced_options">高級</string>
|
<string name="pref_advanced_options">高級</string>
|
||||||
<string name="pref_never_send_crash">總不發送崩潰報告</string>
|
<string name="pref_never_send_crash">總不發送崩潰報告</string>
|
||||||
<string name="pref_never_send_crash_summary">發送堆疊跟蹤説明 Conversations 開發人員</string>
|
<string name="pref_never_send_crash_summary">發送堆疊跟蹤説明 Conversations 開發人員</string>
|
||||||
|
@ -235,10 +234,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">結束時間</string>
|
<string name="title_pref_quiet_hours_end_time">結束時間</string>
|
||||||
<string name="title_pref_enable_quiet_hours">啟用靜默時間段</string>
|
<string name="title_pref_enable_quiet_hours">啟用靜默時間段</string>
|
||||||
<string name="pref_quiet_hours_summary">在靜默時間段內通知將保持靜音</string>
|
<string name="pref_quiet_hours_summary">在靜默時間段內通知將保持靜音</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">發送按鈕顯示狀態</string>
|
|
||||||
<string name="pref_use_indicate_received">請求訊息回復</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">如果支援收到的訊息將會以綠色勾號標識</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">發送按鈕採用其他顏色以示發送狀態的區別</string>
|
|
||||||
<string name="pref_expert_options_other">其他</string>
|
<string name="pref_expert_options_other">其他</string>
|
||||||
<string name="toast_message_omemo_fingerprint">OMEMO 指紋已拷貝到剪貼板!</string>
|
<string name="toast_message_omemo_fingerprint">OMEMO 指紋已拷貝到剪貼板!</string>
|
||||||
<string name="using_account">用帳戶 %s</string>
|
<string name="using_account">用帳戶 %s</string>
|
||||||
|
@ -401,7 +396,6 @@
|
||||||
<string name="notify_never">關閉通知</string>
|
<string name="notify_never">關閉通知</string>
|
||||||
<string name="notify_paused">暫停通知</string>
|
<string name="notify_paused">暫停通知</string>
|
||||||
<string name="always">總是</string>
|
<string name="always">總是</string>
|
||||||
<string name="automatically">自動</string>
|
|
||||||
<string name="battery_optimizations_enabled">啟用節電模式</string>
|
<string name="battery_optimizations_enabled">啟用節電模式</string>
|
||||||
<string name="battery_optimizations_enabled_explained">你的設備正在為Conversations進行電池優化,這可能導致通知的延遲甚至訊息的丟失。
|
<string name="battery_optimizations_enabled_explained">你的設備正在為Conversations進行電池優化,這可能導致通知的延遲甚至訊息的丟失。
|
||||||
建議不要這樣做</string>
|
建議不要這樣做</string>
|
||||||
|
|
|
@ -62,7 +62,7 @@
|
||||||
|
|
||||||
<string-array name="picture_compression_entries">
|
<string-array name="picture_compression_entries">
|
||||||
<item>@string/never</item>
|
<item>@string/never</item>
|
||||||
<item>@string/automatically</item>
|
<item>@string/large_images_only</item>
|
||||||
<item>@string/always</item>
|
<item>@string/always</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
|
@ -124,4 +124,14 @@
|
||||||
<item>@string/video_720p</item>
|
<item>@string/video_720p</item>
|
||||||
<item>@string/video_original</item>
|
<item>@string/video_original</item>
|
||||||
</string-array>
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="channel_discovery_entries">
|
||||||
|
<item>@string/jabber_network</item>
|
||||||
|
<item>@string/local_server</item>
|
||||||
|
</string-array>
|
||||||
|
|
||||||
|
<string-array name="channel_discover_values">
|
||||||
|
<item>JABBER_NETWORK</item>
|
||||||
|
<item>LOCAL_SERVER</item>
|
||||||
|
</string-array>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
|
|
||||||
<attr name="activity_background_search" format="reference"/>
|
<attr name="activity_background_search" format="reference"/>
|
||||||
<attr name="activity_background_no_results" format="reference"/>
|
<attr name="activity_background_no_results" format="reference"/>
|
||||||
|
<attr name="activity_primary_background_no_results" format="reference"/>
|
||||||
|
|
||||||
<attr name="list_item_background" format="reference"/>
|
<attr name="list_item_background" format="reference"/>
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
<integer name="auto_accept_filesize">524288</integer>
|
<integer name="auto_accept_filesize">524288</integer>
|
||||||
<string name="picture_compression">auto</string>
|
<string name="picture_compression">auto</string>
|
||||||
<string name="theme">light</string>
|
<string name="theme">light</string>
|
||||||
<bool name="send_button_status">true</bool>
|
|
||||||
<string name="quick_action">recent</string>
|
<string name="quick_action">recent</string>
|
||||||
<bool name="show_dynamic_tags">true</bool>
|
<bool name="show_dynamic_tags">true</bool>
|
||||||
<bool name="btbv">true</bool>
|
<bool name="btbv">true</bool>
|
||||||
|
@ -31,7 +30,6 @@
|
||||||
<bool name="dnd_on_silent_mode">true</bool>
|
<bool name="dnd_on_silent_mode">true</bool>
|
||||||
<bool name="treat_vibrate_as_silent">true</bool>
|
<bool name="treat_vibrate_as_silent">true</bool>
|
||||||
<bool name="autojoin">true</bool>
|
<bool name="autojoin">true</bool>
|
||||||
<bool name="indicate_received">true</bool>
|
|
||||||
<bool name="enable_foreground_service">true</bool>
|
<bool name="enable_foreground_service">true</bool>
|
||||||
<bool name="never_send">false</bool>
|
<bool name="never_send">false</bool>
|
||||||
<bool name="validate_hostname">false</bool>
|
<bool name="validate_hostname">false</bool>
|
||||||
|
@ -42,4 +40,5 @@
|
||||||
<bool name="use_share_location_plugin">false</bool>
|
<bool name="use_share_location_plugin">false</bool>
|
||||||
<bool name="start_searching">false</bool>
|
<bool name="start_searching">false</bool>
|
||||||
<string name="video_compression">360</string>
|
<string name="video_compression">360</string>
|
||||||
|
<string name="default_channel_discovery">JABBER_NETWORK</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -119,7 +119,7 @@
|
||||||
<string name="pref_sound">Ringtone</string>
|
<string name="pref_sound">Ringtone</string>
|
||||||
<string name="pref_sound_summary">Play sound when a new message arrives</string>
|
<string name="pref_sound_summary">Play sound when a new message arrives</string>
|
||||||
<string name="pref_notification_grace_period">Grace Period</string>
|
<string name="pref_notification_grace_period">Grace Period</string>
|
||||||
<string name="pref_notification_grace_period_summary">The length of time Conversations keeps quiet after seeing activity on another device</string>
|
<string name="pref_notification_grace_period_summary">The length of time notifications are silenced after detecting activity on one of your other devices.</string>
|
||||||
<string name="pref_advanced_options">Advanced</string>
|
<string name="pref_advanced_options">Advanced</string>
|
||||||
<string name="pref_never_send_crash">Never send crash reports</string>
|
<string name="pref_never_send_crash">Never send crash reports</string>
|
||||||
<string name="pref_never_send_crash_summary">By sending in stack traces you are helping the ongoing development of Conversations</string>
|
<string name="pref_never_send_crash_summary">By sending in stack traces you are helping the ongoing development of Conversations</string>
|
||||||
|
@ -281,10 +281,6 @@
|
||||||
<string name="title_pref_quiet_hours_end_time">End time</string>
|
<string name="title_pref_quiet_hours_end_time">End time</string>
|
||||||
<string name="title_pref_enable_quiet_hours">Enable quiet hours</string>
|
<string name="title_pref_enable_quiet_hours">Enable quiet hours</string>
|
||||||
<string name="pref_quiet_hours_summary">Notifications will be silenced during quiet hours</string>
|
<string name="pref_quiet_hours_summary">Notifications will be silenced during quiet hours</string>
|
||||||
<string name="pref_use_send_button_to_indicate_status">Send button indicates status</string>
|
|
||||||
<string name="pref_use_indicate_received">Request message receipts</string>
|
|
||||||
<string name="pref_use_indicate_received_summary">Received messages will be marked with a green tick if supported</string>
|
|
||||||
<string name="pref_use_send_button_to_indicate_status_summary">Colorize send button to indicate contact status</string>
|
|
||||||
<string name="pref_expert_options_other">Other</string>
|
<string name="pref_expert_options_other">Other</string>
|
||||||
<string name="pref_autojoin">Synchronize with bookmarks</string>
|
<string name="pref_autojoin">Synchronize with bookmarks</string>
|
||||||
<string name="pref_autojoin_summary">Join and leave group chats according to auto-join flag in your bookmarks.</string>
|
<string name="pref_autojoin_summary">Join and leave group chats according to auto-join flag in your bookmarks.</string>
|
||||||
|
@ -512,9 +508,9 @@
|
||||||
<string name="notify_never">Notifications disabled</string>
|
<string name="notify_never">Notifications disabled</string>
|
||||||
<string name="notify_paused">Notifications paused</string>
|
<string name="notify_paused">Notifications paused</string>
|
||||||
<string name="pref_picture_compression">Image Compression</string>
|
<string name="pref_picture_compression">Image Compression</string>
|
||||||
<string name="pref_picture_compression_summary">Resize and compress images</string>
|
<string name="pref_picture_compression_summary">Hint: Use ‘Choose file’ instead of ‘Choose picture’ to send individual images uncompressed regardless of this setting.</string>
|
||||||
<string name="always">Always</string>
|
<string name="always">Always</string>
|
||||||
<string name="automatically">Automatically</string>
|
<string name="large_images_only">Large images only</string>
|
||||||
<string name="battery_optimizations_enabled">Battery optimizations enabled</string>
|
<string name="battery_optimizations_enabled">Battery optimizations enabled</string>
|
||||||
<string name="battery_optimizations_enabled_explained">Your device is doing some heavy battery optimizations on Conversations that might lead to delayed notifications or even message loss.\nIt is recommended to disable those.</string>
|
<string name="battery_optimizations_enabled_explained">Your device is doing some heavy battery optimizations on Conversations that might lead to delayed notifications or even message loss.\nIt is recommended to disable those.</string>
|
||||||
<string name="battery_optimizations_enabled_dialog">Your device is doing some heavy battery optimizations on Conversations that might lead to delayed notifications or even message loss.\n\nYou will now be asked to disable those.</string>
|
<string name="battery_optimizations_enabled_dialog">Your device is doing some heavy battery optimizations on Conversations that might lead to delayed notifications or even message loss.\n\nYou will now be asked to disable those.</string>
|
||||||
|
@ -876,4 +872,12 @@
|
||||||
<string name="please_enter_password">Please enter the password for this account</string>
|
<string name="please_enter_password">Please enter the password for this account</string>
|
||||||
<string name="unable_to_perform_this_action">Unable to perform this action</string>
|
<string name="unable_to_perform_this_action">Unable to perform this action</string>
|
||||||
<string name="open_join_dialog">Join public channel…</string>
|
<string name="open_join_dialog">Join public channel…</string>
|
||||||
|
<string name="sharing_application_not_grant_permission">The sharing application did not grant permission to access this file.</string>
|
||||||
|
<string name="group_chats_and_channels"><![CDATA[Group Chats & Channels]]></string>
|
||||||
|
<string name="jabber_network">jabber.network</string>
|
||||||
|
<string name="local_server">Local server</string>
|
||||||
|
<string name="pref_channel_discovery_summary">Most users should choose ‘jabber.network’ for better suggestions from the entirety of the public XMPP ecosystem.</string>
|
||||||
|
<string name="pref_channel_discovery">Channel discovery method</string>
|
||||||
|
<string name="backup">Backup</string>
|
||||||
|
<string name="category_about">About</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
|
|
||||||
<item name="activity_background_search">@drawable/search_background_light</item>
|
<item name="activity_background_search">@drawable/search_background_light</item>
|
||||||
<item name="activity_background_no_results">@drawable/no_results_background_light</item>
|
<item name="activity_background_no_results">@drawable/no_results_background_light</item>
|
||||||
|
<item name="activity_primary_background_no_results">@drawable/no_results_primary_background_light</item>
|
||||||
<item name="list_item_background">@drawable/list_item_background_light</item>
|
<item name="list_item_background">@drawable/list_item_background_light</item>
|
||||||
|
|
||||||
<item name="EmojiColor">@color/black</item>
|
<item name="EmojiColor">@color/black</item>
|
||||||
|
@ -127,6 +128,7 @@
|
||||||
<item name="color_background_overlay">@color/grey700</item>
|
<item name="color_background_overlay">@color/grey700</item>
|
||||||
<item name="activity_background_search">@drawable/search_background_dark</item>
|
<item name="activity_background_search">@drawable/search_background_dark</item>
|
||||||
<item name="activity_background_no_results">@drawable/no_results_background_dark</item>
|
<item name="activity_background_no_results">@drawable/no_results_background_dark</item>
|
||||||
|
<item name="activity_primary_background_no_results">@drawable/no_results_primary_background_dark</item>
|
||||||
<item name="list_item_background">@drawable/list_item_background_dark</item>
|
<item name="list_item_background">@drawable/list_item_background_dark</item>
|
||||||
<item name="color_warning">@color/red_a100</item>
|
<item name="color_warning">@color/red_a100</item>
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,22 @@
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
<PreferenceCategory android:title="@string/pref_privacy">
|
<PreferenceCategory android:title="@string/pref_privacy">
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:defaultValue="@bool/confirm_messages"
|
||||||
|
android:key="confirm_messages"
|
||||||
|
android:summary="@string/pref_confirm_messages_summary"
|
||||||
|
android:title="@string/pref_confirm_messages" />
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:defaultValue="@bool/chat_states"
|
||||||
|
android:key="chat_states"
|
||||||
|
android:summary="@string/pref_chat_states_summary"
|
||||||
|
android:title="@string/pref_chat_states" />
|
||||||
|
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:defaultValue="@bool/last_activity"
|
||||||
|
android:key="last_activity"
|
||||||
|
android:summary="@string/pref_broadcast_last_activity_summary"
|
||||||
|
android:title="@string/pref_broadcast_last_activity" />
|
||||||
<ListPreference
|
<ListPreference
|
||||||
android:defaultValue="@string/omemo_setting_default"
|
android:defaultValue="@string/omemo_setting_default"
|
||||||
android:entries="@array/omemo_setting_entries"
|
android:entries="@array/omemo_setting_entries"
|
||||||
|
@ -23,39 +39,10 @@
|
||||||
android:key="omemo"
|
android:key="omemo"
|
||||||
android:summary="@string/pref_omemo_setting_summary_default_on"
|
android:summary="@string/pref_omemo_setting_summary_default_on"
|
||||||
android:title="@string/pref_omemo_setting" />
|
android:title="@string/pref_omemo_setting" />
|
||||||
<CheckBoxPreference
|
|
||||||
android:defaultValue="@bool/confirm_messages"
|
|
||||||
android:key="confirm_messages"
|
|
||||||
android:summary="@string/pref_confirm_messages_summary"
|
|
||||||
android:title="@string/pref_confirm_messages" />
|
|
||||||
|
|
||||||
<CheckBoxPreference
|
|
||||||
android:defaultValue="@bool/chat_states"
|
|
||||||
android:key="chat_states"
|
|
||||||
android:summary="@string/pref_chat_states_summary"
|
|
||||||
android:title="@string/pref_chat_states" />
|
|
||||||
<CheckBoxPreference
|
|
||||||
android:defaultValue="@bool/last_activity"
|
|
||||||
android:key="last_activity"
|
|
||||||
android:summary="@string/pref_broadcast_last_activity_summary"
|
|
||||||
android:title="@string/pref_broadcast_last_activity" />
|
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:title="@string/pref_notification_settings"
|
android:key="notification_category"
|
||||||
android:key="notification_category">
|
android:title="@string/pref_notification_settings">
|
||||||
<PreferenceScreen
|
|
||||||
android:key="more_notification_settings"
|
|
||||||
android:summary="@string/pref_more_notification_settings_summary"
|
|
||||||
android:title="@string/pref_more_notification_settings">
|
|
||||||
<intent android:action="android.settings.CHANNEL_NOTIFICATION_SETTINGS">
|
|
||||||
<extra
|
|
||||||
android:name="android.provider.extra.APP_PACKAGE"
|
|
||||||
android:value="@string/applicationId" />
|
|
||||||
<extra
|
|
||||||
android:name="android.provider.extra.CHANNEL_ID"
|
|
||||||
android:value="messages" />
|
|
||||||
</intent>
|
|
||||||
</PreferenceScreen>
|
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:defaultValue="@bool/notifications_from_strangers"
|
android:defaultValue="@bool/notifications_from_strangers"
|
||||||
android:key="notifications_from_strangers"
|
android:key="notifications_from_strangers"
|
||||||
|
@ -76,24 +63,17 @@
|
||||||
android:key="led"
|
android:key="led"
|
||||||
android:summary="@string/pref_led_summary"
|
android:summary="@string/pref_led_summary"
|
||||||
android:title="@string/pref_led" />
|
android:title="@string/pref_led" />
|
||||||
<RingtonePreference
|
<ListPreference
|
||||||
android:defaultValue="@string/notification_ringtone"
|
android:defaultValue="@integer/grace_period"
|
||||||
android:key="notification_ringtone"
|
android:entries="@array/grace_periods"
|
||||||
android:ringtoneType="notification"
|
android:entryValues="@array/grace_periods_values"
|
||||||
android:summary="@string/pref_sound_summary"
|
android:key="grace_period_length"
|
||||||
android:title="@string/pref_sound" />
|
android:summary="@string/pref_notification_grace_period_summary"
|
||||||
|
android:title="@string/pref_notification_grace_period" />
|
||||||
<PreferenceScreen
|
<PreferenceScreen
|
||||||
android:key="quiet_hours"
|
android:key="quiet_hours"
|
||||||
android:summary="@string/pref_quiet_hours_summary"
|
android:summary="@string/pref_quiet_hours_summary"
|
||||||
android:title="@string/title_pref_quiet_hours">
|
android:title="@string/title_pref_quiet_hours">
|
||||||
<intent
|
|
||||||
android:action="android.intent.action.VIEW"
|
|
||||||
android:targetClass="eu.siacs.conversations.ui.SettingsActivity"
|
|
||||||
android:targetPackage="@string/applicationId">
|
|
||||||
<extra
|
|
||||||
android:name="page"
|
|
||||||
android:value="quiet_hours" />
|
|
||||||
</intent>
|
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:defaultValue="@bool/enable_quiet_hours"
|
android:defaultValue="@bool/enable_quiet_hours"
|
||||||
android:key="enable_quiet_hours"
|
android:key="enable_quiet_hours"
|
||||||
|
@ -111,25 +91,43 @@
|
||||||
android:negativeButtonText="@string/cancel"
|
android:negativeButtonText="@string/cancel"
|
||||||
android:positiveButtonText="@string/set"
|
android:positiveButtonText="@string/set"
|
||||||
android:title="@string/title_pref_quiet_hours_end_time" />
|
android:title="@string/title_pref_quiet_hours_end_time" />
|
||||||
|
<intent
|
||||||
|
android:action="android.intent.action.VIEW"
|
||||||
|
android:targetClass="eu.siacs.conversations.ui.SettingsActivity"
|
||||||
|
android:targetPackage="@string/applicationId">
|
||||||
|
<extra
|
||||||
|
android:name="page"
|
||||||
|
android:value="quiet_hours" />
|
||||||
|
</intent>
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
<ListPreference
|
<PreferenceScreen
|
||||||
android:defaultValue="@integer/grace_period"
|
android:key="more_notification_settings"
|
||||||
android:entries="@array/grace_periods"
|
android:summary="@string/pref_more_notification_settings_summary"
|
||||||
android:entryValues="@array/grace_periods_values"
|
android:title="@string/pref_more_notification_settings">
|
||||||
android:key="grace_period_length"
|
<intent android:action="android.settings.CHANNEL_NOTIFICATION_SETTINGS">
|
||||||
android:summary="@string/pref_notification_grace_period_summary"
|
<extra
|
||||||
android:title="@string/pref_notification_grace_period" />
|
android:name="android.provider.extra.APP_PACKAGE"
|
||||||
|
android:value="@string/applicationId" />
|
||||||
|
<extra
|
||||||
|
android:name="android.provider.extra.CHANNEL_ID"
|
||||||
|
android:value="messages" />
|
||||||
|
</intent>
|
||||||
|
</PreferenceScreen>
|
||||||
|
<RingtonePreference
|
||||||
|
android:defaultValue="@string/notification_ringtone"
|
||||||
|
android:key="notification_ringtone"
|
||||||
|
android:ringtoneType="notification"
|
||||||
|
android:summary="@string/pref_sound_summary"
|
||||||
|
android:title="@string/pref_sound" />
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:key="attachments"
|
android:key="attachments"
|
||||||
android:title="@string/pref_attachments">
|
android:title="@string/pref_attachments">
|
||||||
<ListPreference
|
<CheckBoxPreference
|
||||||
android:defaultValue="@integer/auto_accept_filesize"
|
android:defaultValue="@bool/use_share_location_plugin"
|
||||||
android:entries="@array/filesizes"
|
android:key="use_share_location_plugin"
|
||||||
android:entryValues="@array/filesizes_values"
|
android:summary="@string/pref_use_share_location_plugin_summary"
|
||||||
android:key="auto_accept_file_size"
|
android:title="@string/pref_use_share_location_plugin" />
|
||||||
android:summary="@string/pref_accept_files_summary"
|
|
||||||
android:title="@string/pref_accept_files" />
|
|
||||||
<ListPreference
|
<ListPreference
|
||||||
android:defaultValue="@string/picture_compression"
|
android:defaultValue="@string/picture_compression"
|
||||||
android:entries="@array/picture_compression_entries"
|
android:entries="@array/picture_compression_entries"
|
||||||
|
@ -144,13 +142,20 @@
|
||||||
android:key="video_compression"
|
android:key="video_compression"
|
||||||
android:summary="@string/pref_video_compression_summary"
|
android:summary="@string/pref_video_compression_summary"
|
||||||
android:title="@string/pref_video_compression" />
|
android:title="@string/pref_video_compression" />
|
||||||
<CheckBoxPreference
|
<ListPreference
|
||||||
android:defaultValue="@bool/use_share_location_plugin"
|
android:defaultValue="@integer/auto_accept_filesize"
|
||||||
android:key="use_share_location_plugin"
|
android:entries="@array/filesizes"
|
||||||
android:summary="@string/pref_use_share_location_plugin_summary"
|
android:entryValues="@array/filesizes_values"
|
||||||
android:title="@string/pref_use_share_location_plugin" />
|
android:key="auto_accept_file_size"
|
||||||
|
android:summary="@string/pref_accept_files_summary"
|
||||||
|
android:title="@string/pref_accept_files" />
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
<PreferenceCategory android:title="@string/pref_ui_options">
|
<PreferenceCategory android:title="@string/pref_ui_options">
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:defaultValue="@bool/show_dynamic_tags"
|
||||||
|
android:key="show_dynamic_tags"
|
||||||
|
android:summary="@string/pref_show_dynamic_tags_summary"
|
||||||
|
android:title="@string/pref_show_dynamic_tags" />
|
||||||
<ListPreference
|
<ListPreference
|
||||||
android:defaultValue="@string/theme"
|
android:defaultValue="@string/theme"
|
||||||
android:entries="@array/themes"
|
android:entries="@array/themes"
|
||||||
|
@ -158,18 +163,6 @@
|
||||||
android:key="theme"
|
android:key="theme"
|
||||||
android:summary="@string/pref_theme_options_summary"
|
android:summary="@string/pref_theme_options_summary"
|
||||||
android:title="@string/pref_theme_options" />
|
android:title="@string/pref_theme_options" />
|
||||||
<ListPreference
|
|
||||||
android:defaultValue="@string/default_font_size"
|
|
||||||
android:entries="@array/font_size_entries"
|
|
||||||
android:entryValues="@array/font_size_entry_values"
|
|
||||||
android:key="font_size"
|
|
||||||
android:summary="@string/pref_font_size_summary"
|
|
||||||
android:title="@string/pref_font_size" />
|
|
||||||
<CheckBoxPreference
|
|
||||||
android:defaultValue="@bool/send_button_status"
|
|
||||||
android:key="send_button_status"
|
|
||||||
android:summary="@string/pref_use_send_button_to_indicate_status_summary"
|
|
||||||
android:title="@string/pref_use_send_button_to_indicate_status" />
|
|
||||||
<ListPreference
|
<ListPreference
|
||||||
android:defaultValue="@string/quick_action"
|
android:defaultValue="@string/quick_action"
|
||||||
android:dialogTitle="@string/choose_quick_action"
|
android:dialogTitle="@string/choose_quick_action"
|
||||||
|
@ -178,27 +171,41 @@
|
||||||
android:key="quick_action"
|
android:key="quick_action"
|
||||||
android:summary="@string/pref_quick_action_summary"
|
android:summary="@string/pref_quick_action_summary"
|
||||||
android:title="@string/pref_quick_action" />
|
android:title="@string/pref_quick_action" />
|
||||||
<CheckBoxPreference
|
<ListPreference
|
||||||
android:defaultValue="@bool/show_dynamic_tags"
|
android:defaultValue="@string/default_font_size"
|
||||||
android:key="show_dynamic_tags"
|
android:entries="@array/font_size_entries"
|
||||||
android:summary="@string/pref_show_dynamic_tags_summary"
|
android:entryValues="@array/font_size_entry_values"
|
||||||
android:title="@string/pref_show_dynamic_tags" />
|
android:key="font_size"
|
||||||
|
android:summary="@string/pref_font_size_summary"
|
||||||
|
android:title="@string/pref_font_size" />
|
||||||
|
</PreferenceCategory>
|
||||||
|
<PreferenceCategory
|
||||||
|
android:key="backup_category"
|
||||||
|
android:title="@string/backup">
|
||||||
|
<Preference
|
||||||
|
android:key="create_backup"
|
||||||
|
android:summary="@string/pref_create_backup_summary"
|
||||||
|
android:title="@string/pref_create_backup" />
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:key="advanced"
|
android:key="advanced"
|
||||||
android:title="@string/pref_advanced_options">
|
android:title="@string/pref_advanced_options">
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:defaultValue="@bool/never_send"
|
||||||
|
android:key="never_send"
|
||||||
|
android:summary="@string/pref_never_send_crash_summary"
|
||||||
|
android:title="@string/pref_never_send_crash" />
|
||||||
|
|
||||||
|
<CheckBoxPreference
|
||||||
|
android:defaultValue="@bool/enable_foreground_service"
|
||||||
|
android:key="enable_foreground_service"
|
||||||
|
android:summary="@string/pref_keep_foreground_service_summary"
|
||||||
|
android:title="@string/pref_keep_foreground_service" />
|
||||||
|
|
||||||
<PreferenceScreen
|
<PreferenceScreen
|
||||||
android:key="expert"
|
android:key="expert"
|
||||||
android:summary="@string/pref_expert_options_summary"
|
android:summary="@string/pref_expert_options_summary"
|
||||||
android:title="@string/pref_expert_options">
|
android:title="@string/pref_expert_options">
|
||||||
<intent
|
|
||||||
android:action="android.intent.action.VIEW"
|
|
||||||
android:targetClass="eu.siacs.conversations.ui.SettingsActivity"
|
|
||||||
android:targetPackage="@string/applicationId">
|
|
||||||
<extra
|
|
||||||
android:name="page"
|
|
||||||
android:value="expert" />
|
|
||||||
</intent>
|
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:key="security_options"
|
android:key="security_options"
|
||||||
android:title="@string/pref_security_settings">
|
android:title="@string/pref_security_settings">
|
||||||
|
@ -207,11 +214,6 @@
|
||||||
android:key="btbv"
|
android:key="btbv"
|
||||||
android:summary="@string/pref_blind_trust_before_verification_summary"
|
android:summary="@string/pref_blind_trust_before_verification_summary"
|
||||||
android:title="@string/pref_blind_trust_before_verification" />
|
android:title="@string/pref_blind_trust_before_verification" />
|
||||||
<ListPreference
|
|
||||||
android:defaultValue="@integer/automatic_message_deletion"
|
|
||||||
android:key="automatic_message_deletion"
|
|
||||||
android:summary="@string/pref_automatically_delete_messages_description"
|
|
||||||
android:title="@string/pref_automatically_delete_messages" />
|
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:defaultValue="@bool/dont_trust_system_cas"
|
android:defaultValue="@bool/dont_trust_system_cas"
|
||||||
android:key="dont_trust_system_cas"
|
android:key="dont_trust_system_cas"
|
||||||
|
@ -222,15 +224,20 @@
|
||||||
android:key="validate_hostname"
|
android:key="validate_hostname"
|
||||||
android:summary="@string/pref_validate_hostname_summary"
|
android:summary="@string/pref_validate_hostname_summary"
|
||||||
android:title="@string/pref_validate_hostname" />
|
android:title="@string/pref_validate_hostname" />
|
||||||
<Preference
|
|
||||||
android:key="remove_trusted_certificates"
|
|
||||||
android:summary="@string/pref_remove_trusted_certificates_summary"
|
|
||||||
android:title="@string/pref_remove_trusted_certificates_title" />
|
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:defaultValue="@bool/allow_message_correction"
|
android:defaultValue="@bool/allow_message_correction"
|
||||||
android:key="allow_message_correction"
|
android:key="allow_message_correction"
|
||||||
android:summary="@string/pref_allow_message_correction_summary"
|
android:summary="@string/pref_allow_message_correction_summary"
|
||||||
android:title="@string/pref_allow_message_correction" />
|
android:title="@string/pref_allow_message_correction" />
|
||||||
|
<ListPreference
|
||||||
|
android:defaultValue="@integer/automatic_message_deletion"
|
||||||
|
android:key="automatic_message_deletion"
|
||||||
|
android:summary="@string/pref_automatically_delete_messages_description"
|
||||||
|
android:title="@string/pref_automatically_delete_messages" />
|
||||||
|
<Preference
|
||||||
|
android:key="remove_trusted_certificates"
|
||||||
|
android:summary="@string/pref_remove_trusted_certificates_summary"
|
||||||
|
android:title="@string/pref_remove_trusted_certificates_title" />
|
||||||
<Preference
|
<Preference
|
||||||
android:key="clean_cache"
|
android:key="clean_cache"
|
||||||
android:summary="@string/pref_clean_cache_summary"
|
android:summary="@string/pref_clean_cache_summary"
|
||||||
|
@ -307,35 +314,32 @@
|
||||||
android:title="@string/pref_treat_vibrate_as_silent" />
|
android:title="@string/pref_treat_vibrate_as_silent" />
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:key="other_expert_category"
|
android:key="group_chats"
|
||||||
android:title="@string/pref_expert_options_other">
|
android:title="@string/group_chats_and_channels">
|
||||||
<CheckBoxPreference
|
<CheckBoxPreference
|
||||||
android:defaultValue="@bool/autojoin"
|
android:defaultValue="@bool/autojoin"
|
||||||
android:key="autojoin"
|
android:key="autojoin"
|
||||||
android:summary="@string/pref_autojoin_summary"
|
android:summary="@string/pref_autojoin_summary"
|
||||||
android:title="@string/pref_autojoin" />
|
android:title="@string/pref_autojoin" />
|
||||||
<CheckBoxPreference
|
<ListPreference
|
||||||
android:defaultValue="@bool/indicate_received"
|
android:defaultValue="@string/default_channel_discovery"
|
||||||
android:key="indicate_received"
|
android:entries="@array/channel_discovery_entries"
|
||||||
android:summary="@string/pref_use_indicate_received_summary"
|
android:entryValues="@array/channel_discover_values"
|
||||||
android:title="@string/pref_use_indicate_received" />
|
android:key="channel_discovery_method"
|
||||||
<CheckBoxPreference
|
android:summary="@string/pref_channel_discovery_summary"
|
||||||
android:defaultValue="@bool/enable_foreground_service"
|
android:title="@string/pref_channel_discovery" />
|
||||||
android:key="enable_foreground_service"
|
|
||||||
android:summary="@string/pref_keep_foreground_service_summary"
|
|
||||||
android:title="@string/pref_keep_foreground_service" />
|
|
||||||
<Preference
|
|
||||||
android:key="create_backup"
|
|
||||||
android:summary="@string/pref_create_backup_summary"
|
|
||||||
android:title="@string/pref_create_backup" />
|
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
|
<intent
|
||||||
|
android:action="android.intent.action.VIEW"
|
||||||
|
android:targetClass="eu.siacs.conversations.ui.SettingsActivity"
|
||||||
|
android:targetPackage="@string/applicationId">
|
||||||
|
<extra
|
||||||
|
android:name="page"
|
||||||
|
android:value="expert" />
|
||||||
|
</intent>
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
|
|
||||||
<CheckBoxPreference
|
|
||||||
android:defaultValue="@bool/never_send"
|
|
||||||
android:key="never_send"
|
|
||||||
android:summary="@string/pref_never_send_crash_summary"
|
|
||||||
android:title="@string/pref_never_send_crash" />
|
|
||||||
</PreferenceCategory>
|
</PreferenceCategory>
|
||||||
<eu.siacs.conversations.ui.AboutPreference/>
|
<PreferenceCategory android:title="@string/category_about">
|
||||||
|
<eu.siacs.conversations.ui.AboutPreference />
|
||||||
|
</PreferenceCategory>
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
|
|
Loading…
Reference in New Issue