aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Account.java5
-rw-r--r--src/main/java/eu/siacs/conversations/entities/Conversation.java11
-rw-r--r--src/main/java/eu/siacs/conversations/services/XmppConnectionService.java20
-rw-r--r--src/main/java/eu/siacs/conversations/utils/ConversationsFileObserver.java22
-rw-r--r--src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java17
-rw-r--r--src/main/res/values-eu/strings.xml8
-rw-r--r--src/main/res/values-fr/strings.xml2
-rw-r--r--src/main/res/values-ro-rRO/strings.xml12
-rw-r--r--src/main/res/values-sr/strings.xml8
-rw-r--r--src/main/res/values-tr-rTR/strings.xml23
-rw-r--r--src/main/res/values/strings.xml1
11 files changed, 109 insertions, 20 deletions
diff --git a/src/main/java/eu/siacs/conversations/entities/Account.java b/src/main/java/eu/siacs/conversations/entities/Account.java
index 7085c7ba..b77d85c4 100644
--- a/src/main/java/eu/siacs/conversations/entities/Account.java
+++ b/src/main/java/eu/siacs/conversations/entities/Account.java
@@ -111,7 +111,8 @@ public class Account extends AbstractEntity {
REGISTRATION_PLEASE_WAIT(true),
STREAM_ERROR(true),
POLICY_VIOLATION(true),
- REGISTRATION_PASSWORD_TOO_WEAK(true);
+ REGISTRATION_PASSWORD_TOO_WEAK(true),
+ PAYMENT_REQUIRED(true);
private final boolean isError;
@@ -169,6 +170,8 @@ public class Account extends AbstractEntity {
return R.string.registration_password_too_weak;
case STREAM_ERROR:
return R.string.account_status_stream_error;
+ case PAYMENT_REQUIRED:
+ return R.string.payment_required;
default:
return R.string.account_status_unknown;
}
diff --git a/src/main/java/eu/siacs/conversations/entities/Conversation.java b/src/main/java/eu/siacs/conversations/entities/Conversation.java
index 56739f40..3c00fd59 100644
--- a/src/main/java/eu/siacs/conversations/entities/Conversation.java
+++ b/src/main/java/eu/siacs/conversations/entities/Conversation.java
@@ -803,19 +803,18 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
}
public long getLastMessageTransmitted() {
- long last_clear = getLastClearHistory();
- if (last_clear != 0) {
- return last_clear;
- }
+ final long last_clear = getLastClearHistory();
+ long last_received = 0;
synchronized (this.messages) {
for(int i = this.messages.size() - 1; i >= 0; --i) {
Message message = this.messages.get(i);
if (message.getStatus() == Message.STATUS_RECEIVED || message.isCarbon()) {
- return message.getTimeSent();
+ last_received = message.getTimeSent();
+ break;
}
}
}
- return 0;
+ return Math.max(last_clear,last_received);
}
public void setMutedTill(long value) {
diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
index 426c6f1a..2f5262de 100644
--- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
+++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java
@@ -193,15 +193,12 @@ public class XmppConnectionService extends Service {
sendUnsentMessages(conversation);
}
} else {
- if (contact.getPresences().size() >= 1) {
- if (conversation.hasValidOtrSession()) {
- String otrResource = conversation.getOtrSession().getSessionID().getUserID();
- if (!(Arrays.asList(contact.getPresences().toResourceArray()).contains(otrResource))) {
- conversation.endOtrIfNeeded();
- }
+ //check if the resource we are haveing a conversation with is still online
+ if (conversation.hasValidOtrSession()) {
+ String otrResource = conversation.getOtrSession().getSessionID().getUserID();
+ if (!(Arrays.asList(contact.getPresences().toResourceArray()).contains(otrResource))) {
+ conversation.endOtrIfNeeded();
}
- } else {
- conversation.endOtrIfNeeded();
}
}
}
@@ -784,7 +781,12 @@ public class XmppConnectionService extends Service {
restoreFromDatabase();
getContentResolver().registerContentObserver(ContactsContract.Contacts.CONTENT_URI, true, contactObserver);
- this.fileObserver.startWatching();
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ fileObserver.startWatching();
+ }
+ }).start();
if (Config.supportOpenPgp()) {
this.pgpServiceConnection = new OpenPgpServiceConnection(getApplicationContext(), "org.sufficientlysecure.keychain", new OpenPgpServiceConnection.OnBound() {
@Override
diff --git a/src/main/java/eu/siacs/conversations/utils/ConversationsFileObserver.java b/src/main/java/eu/siacs/conversations/utils/ConversationsFileObserver.java
index e6993bfe..ab4dead8 100644
--- a/src/main/java/eu/siacs/conversations/utils/ConversationsFileObserver.java
+++ b/src/main/java/eu/siacs/conversations/utils/ConversationsFileObserver.java
@@ -37,7 +37,10 @@ public abstract class ConversationsFileObserver {
}
for(File file : files) {
if (file.isDirectory() && !file.getName().equals(".") && !file.getName().equals("..")) {
- stack.push(file.getPath());
+ final String currentPath = file.getAbsolutePath();
+ if (depth(file) <= 8 && !stack.contains(currentPath) && !observing(currentPath)) {
+ stack.push(currentPath);
+ }
}
}
}
@@ -46,6 +49,23 @@ public abstract class ConversationsFileObserver {
}
}
+ private static int depth(File file) {
+ int depth = 0;
+ while((file = file.getParentFile()) != null) {
+ depth++;
+ }
+ return depth;
+ }
+
+ private boolean observing(String path) {
+ for(SingleFileObserver observer : mObservers) {
+ if(path.equals(observer.path)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
public synchronized void stopWatching() {
for(FileObserver observer : mObservers) {
observer.stopWatching();
diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java
index 89ffa05d..6e36a546 100644
--- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java
+++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java
@@ -384,6 +384,8 @@ public class XmppConnection implements Runnable {
this.changeStatus(Account.State.SECURITY_ERROR);
} catch (final UnauthorizedException e) {
this.changeStatus(Account.State.UNAUTHORIZED);
+ } catch (final PaymentRequiredException e) {
+ this.changeStatus(Account.State.PAYMENT_REQUIRED);
} catch (final UnknownHostException | ConnectException e) {
this.changeStatus(Account.State.SERVER_NOT_FOUND);
} catch (final SocksSocketFactory.SocksProxyNotFoundException e) {
@@ -505,7 +507,16 @@ public class XmppConnection implements Runnable {
}
break;
} else if (nextTag.isStart("failure")) {
- throw new UnauthorizedException();
+ final Element failure = tagReader.readElement(nextTag);
+ final String accountDisabled = failure.findChildContent("account-disabled");
+ if (accountDisabled != null
+ && accountDisabled.contains("renew")
+ && Config.MAGIC_CREATE_DOMAIN != null
+ && accountDisabled.contains(Config.MAGIC_CREATE_DOMAIN)) {
+ throw new PaymentRequiredException();
+ } else {
+ throw new UnauthorizedException();
+ }
} else if (nextTag.isStart("challenge")) {
final String challenge = tagReader.readElement(nextTag).getContent();
final Element response = new Element("response");
@@ -1535,6 +1546,10 @@ public class XmppConnection implements Runnable {
}
+ private class PaymentRequiredException extends IOException {
+
+ }
+
public enum Identity {
FACEBOOK,
SLACK,
diff --git a/src/main/res/values-eu/strings.xml b/src/main/res/values-eu/strings.xml
index e731b0d0..61adf4a5 100644
--- a/src/main/res/values-eu/strings.xml
+++ b/src/main/res/values-eu/strings.xml
@@ -157,7 +157,9 @@
<string name="account_status_regis_success">Erregistroa burutu da</string>
<string name="account_status_regis_not_sup">Zerbitzariak ez du erregistratzea onartzen</string>
<string name="account_status_security_error">Segurtasun akatsa</string>
+ <string name="account_status_policy_violation">Politikaren urraketa</string>
<string name="account_status_incompatible_server">Zerbitzari ez bateragarria</string>
+ <string name="account_status_stream_error">Akatsa korrontean</string>
<string name="encryption_choice_unencrypted">Enkriptatu gabe</string>
<string name="encryption_choice_otr">OTR</string>
<string name="encryption_choice_pgp">OpenPGP</string>
@@ -218,6 +220,8 @@
<string name="reception_failed">Jasotzeak huts egin du</string>
<string name="your_fingerprint">Zure hatz-marka</string>
<string name="otr_fingerprint">OTR hatz-marka</string>
+ <string name="otr_fingerprint_selected_message">Mezuaren OTR hatz-marka</string>
+ <string name="openpgp_key_id">OpenPGP gakoaren nortasuna</string>
<string name="omemo_fingerprint">OMEMO hatz-marka</string>
<string name="omemo_fingerprint_x509">v\\OMEMO hatz-marka</string>
<string name="omemo_fingerprint_selected_message">Mezuaren OMEMO hatz-marka</string>
@@ -512,6 +516,7 @@
<string name="pref_use_white_background_summary">Jasotako mezuak testu beltza atzeko-plano zuri baten gainean bezala erakutsi</string>
<string name="account_status_tor_unavailable">Tor sarea ez dago eskuragarri</string>
<string name="account_status_bind_failure">Estekatzeak hust egin du</string>
+ <string name="account_status_host_unknown">Zerbitzaria ez da domeinuaren erantzule</string>
<string name="server_info_broken">Hondatuta</string>
<string name="pref_presence_settings">Presentzia</string>
<string name="pref_away_when_screen_off">Urrun pantaila itzalita dagoenean</string>
@@ -610,6 +615,7 @@
<string name="device_does_not_support_battery_op">Zure gailuak ez du bateria optimizatzeko aukerarik ematen</string>
<string name="show_password">Pasahitza erakutsi</string>
<string name="registration_please_wait">Erregistroak huts egin du: saiatu berriz beranduago</string>
+ <string name="registration_password_too_weak">Erregistroa huts egin du: pasahitza ahulegia da</string>
<string name="create_conference">Konferentzia sortu</string>
<string name="join_or_create_conference">Konferentzia batera batu edo sortu</string>
<string name="conference_subject">Gaia</string>
@@ -628,4 +634,6 @@
<string name="pref_theme_dark">Gai iluna</string>
<string name="pref_use_green_background">Atzealde berdea</string>
<string name="pref_use_green_background_summary">Atzealde berdea erabili jasotako mezuentzat</string>
+ <string name="unable_to_connect_to_keychain">Ezin izan da OpenKeychainekin konektatu</string>
+ <string name="this_device_is_no_longer_in_use">Gailu hau ez da gehiago erabiltzen</string>
</resources>
diff --git a/src/main/res/values-fr/strings.xml b/src/main/res/values-fr/strings.xml
index 05340340..165727d9 100644
--- a/src/main/res/values-fr/strings.xml
+++ b/src/main/res/values-fr/strings.xml
@@ -157,6 +157,7 @@
<string name="account_status_regis_success">Enregistrement réussi</string>
<string name="account_status_regis_not_sup">Le serveur ne permet pas l\'enregistrement</string>
<string name="account_status_security_error">Erreur de sécurité</string>
+ <string name="account_status_policy_violation">Violation de politique</string>
<string name="account_status_incompatible_server">Serveur incompatible</string>
<string name="account_status_stream_error">Erreur de flux</string>
<string name="encryption_choice_unencrypted">Non chiffré</string>
@@ -515,6 +516,7 @@
<string name="pref_use_white_background_summary">Afficher les messages reçus en texte noir sur fond blanc.</string>
<string name="account_status_tor_unavailable">Réseau Tor inaccessible</string>
<string name="account_status_bind_failure">La liaison a échoué</string>
+ <string name="account_status_host_unknown">Le serveur n\'est pas responsable du domaine</string>
<string name="server_info_broken">Détraqué</string>
<string name="pref_presence_settings">Disponibilité</string>
<string name="pref_away_when_screen_off">Absent quand l\'écran est éteint</string>
diff --git a/src/main/res/values-ro-rRO/strings.xml b/src/main/res/values-ro-rRO/strings.xml
index 0bcbb958..e1c94f12 100644
--- a/src/main/res/values-ro-rRO/strings.xml
+++ b/src/main/res/values-ro-rRO/strings.xml
@@ -101,7 +101,7 @@
<string name="contacts_have_no_pgp_keys">Conversations nu poate cripta mesajele tale pentru contactele tale care nu isi anunta cheia publica.\n\n<small>Te rog cere contactelor sa configureze OpenPGP.</small></string>
<string name="pref_general">General</string>
<string name="pref_xmpp_resource">Nume client XMPP</string>
- <string name="pref_xmpp_resource_summary">Numele cu care acest client se identifica</string>
+ <string name="pref_xmpp_resource_summary">Identificatorul acestui client</string>
<string name="pref_accept_files">Accepta fisiere</string>
<string name="pref_accept_files_summary">Accepta automat fisiere mai mici decat...</string>
<string name="pref_attachments">Atasamente</string>
@@ -157,7 +157,9 @@
<string name="account_status_regis_success">Inregistrare completa</string>
<string name="account_status_regis_not_sup">Acest server nu permite inregistrarea</string>
<string name="account_status_security_error">Eroare de securitate</string>
+ <string name="account_status_policy_violation">Incalcare conditii serviciu</string>
<string name="account_status_incompatible_server">Server incompatibil</string>
+ <string name="account_status_stream_error">Eroare de date</string>
<string name="encryption_choice_unencrypted">Ne criptat</string>
<string name="encryption_choice_otr">OTR</string>
<string name="encryption_choice_pgp">OpenGPG</string>
@@ -218,6 +220,8 @@
<string name="reception_failed">Receptie esuata</string>
<string name="your_fingerprint">Amprenta ta</string>
<string name="otr_fingerprint">Amprenta OTR</string>
+ <string name="otr_fingerprint_selected_message">Amprenta OTR a mesajului</string>
+ <string name="openpgp_key_id">ID cheie OpenPGP</string>
<string name="omemo_fingerprint">Amprenta OMEMO</string>
<string name="omemo_fingerprint_x509">Amprenta v\\OMEMO</string>
<string name="omemo_fingerprint_selected_message">Amprenta OMEMO a mesajului</string>
@@ -514,6 +518,7 @@
<string name="pref_use_white_background_summary">Arata mesajele primite cu negru pe fond alb</string>
<string name="account_status_tor_unavailable">Reteaua Tor nu este disponibila</string>
<string name="account_status_bind_failure">Eroare de conexiune</string>
+ <string name="account_status_host_unknown">Gazda fara domeniu</string>
<string name="server_info_broken">Deteriorat</string>
<string name="pref_presence_settings">Setari de prezenta</string>
<string name="pref_away_when_screen_off">Plecat cand ecranul este oprit</string>
@@ -614,6 +619,7 @@ Emitent</string>
<string name="device_does_not_support_battery_op">Dispozitivul dumneavoastra nu suporta dezactivarea optimizarii de baterie pentru aceasta aplicatie</string>
<string name="show_password">Arata parola</string>
<string name="registration_please_wait">Inregistrarea a esuat: Incercati mai tarziu</string>
+ <string name="registration_password_too_weak">Inregistrare esuata: Parola slaba</string>
<string name="create_conference">Creeaza conferinta</string>
<string name="join_or_create_conference">Alatura-te sau creeaza conferinta</string>
<string name="conference_subject">Subiect</string>
@@ -623,7 +629,7 @@ Emitent</string>
<string name="gp_short">Scurt</string>
<string name="gp_medium">Mediu</string>
<string name="gp_long">Lung</string>
- <string name="pref_broadcast_last_activity">Notifica momentul ultimei interactiuni cu aplicatia</string>
+ <string name="pref_broadcast_last_activity">Notifica ultima interactiune</string>
<string name="pref_broadcast_last_activity_summary">Anunta contactele cand folosesti Conversations</string>
<string name="pref_privacy">Intimitate</string>
<string name="pref_theme_options">Tema</string>
@@ -632,4 +638,6 @@ Emitent</string>
<string name="pref_theme_dark">Tema intunecata</string>
<string name="pref_use_green_background">Fundal verde</string>
<string name="pref_use_green_background_summary">Foloseste la mesajele primite un fundal verde</string>
+ <string name="unable_to_connect_to_keychain">Nu s-a putut contacta OpenKeychain</string>
+ <string name="this_device_is_no_longer_in_use">Acest dispozitiv nu mai este in uz</string>
</resources>
diff --git a/src/main/res/values-sr/strings.xml b/src/main/res/values-sr/strings.xml
index dc04c310..358f2b28 100644
--- a/src/main/res/values-sr/strings.xml
+++ b/src/main/res/values-sr/strings.xml
@@ -157,7 +157,9 @@
<string name="account_status_regis_success">Регистрација завршена</string>
<string name="account_status_regis_not_sup">Сервер не подржава регистрацију</string>
<string name="account_status_security_error">Безбедносна грешка</string>
+ <string name="account_status_policy_violation">Нарушавање полисе</string>
<string name="account_status_incompatible_server">Некомпатибилан сервер</string>
+ <string name="account_status_stream_error">Грешка тока</string>
<string name="encryption_choice_unencrypted">Нешифровано</string>
<string name="encryption_choice_otr">ОТР</string>
<string name="encryption_choice_pgp">ОпенПГП</string>
@@ -218,6 +220,8 @@
<string name="reception_failed">Примање није успело</string>
<string name="your_fingerprint">Ваш отисак</string>
<string name="otr_fingerprint">ОТР отисак</string>
+ <string name="otr_fingerprint_selected_message">ОТР отисак поруке</string>
+ <string name="openpgp_key_id">ИД ОпенПГП кључа</string>
<string name="omemo_fingerprint">ОМЕМО отисак</string>
<string name="omemo_fingerprint_x509">v\\ОМЕМО отисак</string>
<string name="omemo_fingerprint_selected_message">ОМЕМО отисак поруке</string>
@@ -514,6 +518,7 @@
<string name="pref_use_white_background_summary">Приказ примљених порука црним текстом на белој позадини</string>
<string name="account_status_tor_unavailable">Тор мрежа недоступна</string>
<string name="account_status_bind_failure">Неуспех свезивања</string>
+ <string name="account_status_host_unknown">Сервер није одговоран за домен</string>
<string name="server_info_broken">Оштећен</string>
<string name="pref_presence_settings">Присутност</string>
<string name="pref_away_when_screen_off">Одсутан кад је екран искључен</string>
@@ -612,6 +617,7 @@
<string name="device_does_not_support_battery_op">Ваш уређај не подржава искључивање оптимизације батерије</string>
<string name="show_password">Прикажи лозинку</string>
<string name="registration_please_wait">Регистрација није успела: покушајте поново касније</string>
+ <string name="registration_password_too_weak">Регистрација није успела: лозинка преслаба</string>
<string name="create_conference">Направи групно ћаскање</string>
<string name="join_or_create_conference">Придружи се или направи групно ћаскање</string>
<string name="conference_subject">Предмет</string>
@@ -630,4 +636,6 @@
<string name="pref_theme_dark">Тамна тема</string>
<string name="pref_use_green_background">Зелена позадина</string>
<string name="pref_use_green_background_summary">Зелена позадина за примљене поруке</string>
+ <string name="unable_to_connect_to_keychain">Не могох да се повежем са Отвореним кључарником</string>
+ <string name="this_device_is_no_longer_in_use">Овај уређај више није у употреби</string>
</resources>
diff --git a/src/main/res/values-tr-rTR/strings.xml b/src/main/res/values-tr-rTR/strings.xml
index 664eaca8..bd3d7e2d 100644
--- a/src/main/res/values-tr-rTR/strings.xml
+++ b/src/main/res/values-tr-rTR/strings.xml
@@ -116,6 +116,8 @@
<string name="pref_led_summary">Yeni bir ileti geldiğinde bildirim ışığı yanıp sönsün</string>
<string name="pref_sound">Zil sesi</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_summary">Başka bir cihaz üstünde etkinlik algılandığında Conversations\'ın sessiz kalma süresi</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_summary">Çöküş raporu göndermeniz Conversations\n’ın geliştirilmesine katkıda bulunacaktır.</string>
@@ -155,7 +157,9 @@
<string name="account_status_regis_success">Hesap oluşturuldu</string>
<string name="account_status_regis_not_sup">Sunucu hesap oluşturma işlemini desteklemiyor</string>
<string name="account_status_security_error">Güvenlik hatası</string>
+ <string name="account_status_policy_violation">Politika ihlali</string>
<string name="account_status_incompatible_server">Sunucu uyuşmazlığı</string>
+ <string name="account_status_stream_error">Akış hatası</string>
<string name="encryption_choice_unencrypted">Şifrelenmemiş</string>
<string name="encryption_choice_otr">OTR</string>
<string name="encryption_choice_pgp">OpenPGP</string>
@@ -216,6 +220,8 @@
<string name="reception_failed">Alınamadı</string>
<string name="your_fingerprint">Parmak iziniz</string>
<string name="otr_fingerprint">OTR parmak izi</string>
+ <string name="otr_fingerprint_selected_message">İletinin OTR parmak izi</string>
+ <string name="openpgp_key_id">OpenPGP Anahtar ID</string>
<string name="omemo_fingerprint">OMEMO parmak izi</string>
<string name="omemo_fingerprint_x509">v\\OMEMO parmak izi</string>
<string name="omemo_fingerprint_selected_message">İletinin OMEMO parmak izi</string>
@@ -503,10 +509,12 @@
<string name="download_failed_server_not_found">İndirme başarısız: Sunucu bulunamadı</string>
<string name="download_failed_file_not_found">İndirme başarısız: Dosya bulunamadı</string>
<string name="download_failed_could_not_connect">İndirme başarısız: Sunucuya bağlanılamadı</string>
+ <string name="download_failed_could_not_write_file">İndirme başarısız: Dosya yazılamıyor</string>
<string name="pref_use_white_background">Beyaz arka plan kullan</string>
<string name="pref_use_white_background_summary">Alınan iletileri beyaz arka plan üzerinde siyah yazıyla göster</string>
<string name="account_status_tor_unavailable">Tor ağına erişilemiyor</string>
<string name="account_status_bind_failure">Bağlantı başarısız</string>
+ <string name="account_status_host_unknown">Sunucu alan adı için sorumlu değil</string>
<string name="server_info_broken">Bozuk</string>
<string name="pref_presence_settings">Durum</string>
<string name="pref_away_when_screen_off">Ekran kapandığında uzakta</string>
@@ -604,10 +612,25 @@
<string name="device_does_not_support_battery_op">Cihazınız pil optimizasyonunu devre dışı bırakmayı desteklemiyor</string>
<string name="show_password">Parola göster</string>
<string name="registration_please_wait">Hesap oluşturulamadı: Sonra tekrar deneyin</string>
+ <string name="registration_password_too_weak">Kayıt Başarısız: Parola çok zayıf</string>
<string name="create_conference">Grup Sohbet başlat</string>
<string name="join_or_create_conference">Grup Sohbete katıl veya başlat</string>
<string name="conference_subject">Konu</string>
<string name="choose_participants">Katılımcıları seç</string>
<string name="creating_conference">Grup Sohbet başlatılıyor...</string>
<string name="invite_again">Yeniden davet et</string>
+ <string name="gp_short">Kısa</string>
+ <string name="gp_medium">Orta</string>
+ <string name="gp_long">Uzun</string>
+ <string name="pref_broadcast_last_activity">Son kullanıcı etkileşimini yayınla</string>
+ <string name="pref_broadcast_last_activity_summary">Tüm kişileriniz ne zaman Conversations kullandığınızı görsün</string>
+ <string name="pref_privacy">Mahremiyet</string>
+ <string name="pref_theme_options">Tema</string>
+ <string name="pref_theme_options_summary">Renk paletini seçin</string>
+ <string name="pref_theme_light">Açık tema</string>
+ <string name="pref_theme_dark">Koyu tema</string>
+ <string name="pref_use_green_background">Yeşil arka plan</string>
+ <string name="pref_use_green_background_summary">Gelen iletiler için yeşil arka plan kullan</string>
+ <string name="unable_to_connect_to_keychain">OpenKeychain\'e bağlanılamıyor</string>
+ <string name="this_device_is_no_longer_in_use">Bu cihaz artık kullanılmıyor</string>
</resources>
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index 766cb9fe..ab175a36 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -674,4 +674,5 @@
<string name="type_tablet">Tablet</string>
<string name="type_web">Web browser</string>
<string name="type_console">Console</string>
+ <string name="payment_required">Payment required</string>
</resources>