瀏覽代碼

Merge pull request #726 from deltachat/search-empty-state

Search: show empty state banner
cyBerta 5 年之前
父節點
當前提交
c5d6b2cbc5
共有 33 個文件被更改,包括 263 次插入134 次删除
  1. 28 1
      deltachat-ios/Controller/ChatListController.swift
  2. 34 1
      deltachat-ios/Controller/GroupMembersViewController.swift
  3. 33 2
      deltachat-ios/Controller/NewChatViewController.swift
  4. 9 1
      deltachat-ios/ViewModel/ChatListViewModel.swift
  5. 4 4
      deltachat-ios/az.lproj/Localizable.strings
  6. 4 4
      deltachat-ios/ca.lproj/Localizable.strings
  7. 4 4
      deltachat-ios/da.lproj/Localizable.strings
  8. 4 6
      deltachat-ios/de.lproj/Localizable.strings
  9. 6 5
      deltachat-ios/en.lproj/Localizable.strings
  10. 1 1
      deltachat-ios/eo.lproj/Localizable.strings
  11. 4 6
      deltachat-ios/es.lproj/Localizable.strings
  12. 15 4
      deltachat-ios/eu.lproj/Localizable.strings
  13. 4 4
      deltachat-ios/fr.lproj/Localizable.strings
  14. 9 8
      deltachat-ios/gl.lproj/Localizable.strings
  15. 1 1
      deltachat-ios/hr.lproj/Localizable.strings
  16. 1 1
      deltachat-ios/hu.lproj/Localizable.strings
  17. 4 4
      deltachat-ios/id.lproj/Localizable.strings
  18. 18 17
      deltachat-ios/it.lproj/Localizable.strings
  19. 1 1
      deltachat-ios/it.lproj/Localizable.stringsdict
  20. 1 1
      deltachat-ios/ja.lproj/Localizable.strings
  21. 2 2
      deltachat-ios/lt.lproj/Localizable.strings
  22. 5 4
      deltachat-ios/nl.lproj/Localizable.strings
  23. 4 4
      deltachat-ios/pl.lproj/Localizable.strings
  24. 4 4
      deltachat-ios/pt-BR.lproj/Localizable.strings
  25. 4 4
      deltachat-ios/pt-PT.lproj/Localizable.strings
  26. 6 5
      deltachat-ios/ru.lproj/Localizable.strings
  27. 5 4
      deltachat-ios/sq.lproj/Localizable.strings
  28. 9 8
      deltachat-ios/sv.lproj/Localizable.strings
  29. 6 5
      deltachat-ios/tr.lproj/Localizable.strings
  30. 4 4
      deltachat-ios/uk.lproj/Localizable.strings
  31. 3 3
      deltachat-ios/zh-Hant-TW.lproj/Localizable.strings
  32. 10 4
      deltachat-ios/zh-Hant.lproj/Localizable.strings
  33. 16 7
      tools/convertTranslations.js

+ 28 - 1
deltachat-ios/Controller/ChatListController.swift

@@ -33,6 +33,12 @@ class ChatListController: UITableViewController {
         return button
         return button
     }()
     }()
 
 
+    private lazy var emptySearchStateLabel: EmptyStateLabel = {
+        let label = EmptyStateLabel()
+        label.isHidden = false
+        return label
+    }()
+
     func getArchiveCell(title: String) -> UITableViewCell {
     func getArchiveCell(title: String) -> UITableViewCell {
         let cell = UITableViewCell()
         let cell = UITableViewCell()
         cell.textLabel?.textColor = .systemBlue
         cell.textLabel?.textColor = .systemBlue
@@ -64,6 +70,7 @@ class ChatListController: UITableViewController {
             navigationItem.searchController = searchController
             navigationItem.searchController = searchController
         }
         }
         configureTableView()
         configureTableView()
+        setupSubviews()
     }
     }
 
 
     override func viewWillAppear(_ animated: Bool) {
     override func viewWillAppear(_ animated: Bool) {
@@ -116,6 +123,15 @@ class ChatListController: UITableViewController {
             nc.removeObserver(viewChatObserver)
             nc.removeObserver(viewChatObserver)
         }
         }
     }
     }
+    // MARK: - setup
+    private func setupSubviews() {
+        view.addSubview(emptySearchStateLabel)
+        emptySearchStateLabel.translatesAutoresizingMaskIntoConstraints = false
+        emptySearchStateLabel.centerYAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerYAnchor).isActive = true
+        emptySearchStateLabel.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 40).isActive = true
+        emptySearchStateLabel.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -40).isActive = true
+        emptySearchStateLabel.centerXAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerXAnchor).isActive = true
+    }
 
 
     // MARK: - configuration
     // MARK: - configuration
     private func configureTableView() {
     private func configureTableView() {
@@ -155,7 +171,6 @@ class ChatListController: UITableViewController {
         return viewModel.numberOfRowsIn(section: section)
         return viewModel.numberOfRowsIn(section: section)
     }
     }
 
 
-
     override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
     override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
 
 
         let cellData = viewModel.cellDataFor(section: indexPath.section, row: indexPath.row)
         let cellData = viewModel.cellDataFor(section: indexPath.section, row: indexPath.row)
@@ -268,6 +283,18 @@ class ChatListController: UITableViewController {
 
 
     func handleChatListUpdate() {
     func handleChatListUpdate() {
         tableView.reloadData()
         tableView.reloadData()
+
+        if let emptySearchText = viewModel.emptySearchText {
+            let text = String.localizedStringWithFormat(
+                String.localized("search_no_result_for_x"),
+                emptySearchText
+            )
+            emptySearchStateLabel.text = text
+            emptySearchStateLabel.isHidden = false
+        } else {
+            emptySearchStateLabel.text = nil
+            emptySearchStateLabel.isHidden = true
+        }
     }
     }
 
 
     func getArchiveCell(_ tableView: UITableView, title: String) -> UITableViewCell {
     func getArchiveCell(_ tableView: UITableView, title: String) -> UITableViewCell {

+ 34 - 1
deltachat-ios/Controller/GroupMembersViewController.swift

@@ -25,6 +25,7 @@ class NewGroupAddMembersViewController: GroupMembersViewController {
         fatalError("init(coder:) has not been implemented")
         fatalError("init(coder:) has not been implemented")
     }
     }
 
 
+    // MARK - lifecycle
     override func viewDidLoad() {
     override func viewDidLoad() {
         super.viewDidLoad()
         super.viewDidLoad()
         title = String.localized("group_add_members")
         title = String.localized("group_add_members")
@@ -96,6 +97,7 @@ class AddGroupMembersViewController: GroupMembersViewController {
         fatalError("init(coder:) has not been implemented")
         fatalError("init(coder:) has not been implemented")
     }
     }
 
 
+    // MARK: - lifecycle
     override func viewDidLoad() {
     override func viewDidLoad() {
         super.viewDidLoad()
         super.viewDidLoad()
 
 
@@ -348,6 +350,12 @@ class GroupMembersViewController: UITableViewController, UISearchResultsUpdating
         return searchController
         return searchController
     }()
     }()
 
 
+    private lazy var emptySearchStateLabel: EmptyStateLabel = {
+        let label = EmptyStateLabel()
+        label.isHidden = false
+        return label
+    }()
+
     var selectedContactIds: Set<Int> = []
     var selectedContactIds: Set<Int> = []
 
 
     init() {
     init() {
@@ -360,6 +368,7 @@ class GroupMembersViewController: UITableViewController, UISearchResultsUpdating
         fatalError("init(coder:) has not been implemented")
         fatalError("init(coder:) has not been implemented")
     }
     }
 
 
+    // MARK: - lifecycle
     override func viewDidLoad() {
     override func viewDidLoad() {
         tableView.register(ContactCell.self, forCellReuseIdentifier: contactCellReuseIdentifier)
         tableView.register(ContactCell.self, forCellReuseIdentifier: contactCellReuseIdentifier)
         navigationItem.searchController = searchController
         navigationItem.searchController = searchController
@@ -367,8 +376,19 @@ class GroupMembersViewController: UITableViewController, UISearchResultsUpdating
             navigationItem.hidesSearchBarWhenScrolling = false
             navigationItem.hidesSearchBarWhenScrolling = false
         }
         }
         definesPresentationContext = true
         definesPresentationContext = true
+        setupSubviews()
+    }
+
+    private func setupSubviews() {
+        view.addSubview(emptySearchStateLabel)
+        emptySearchStateLabel.translatesAutoresizingMaskIntoConstraints = false
+        emptySearchStateLabel.centerYAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerYAnchor).isActive = true
+        emptySearchStateLabel.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 40).isActive = true
+        emptySearchStateLabel.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -40).isActive = true
+        emptySearchStateLabel.centerXAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerXAnchor).isActive = true
     }
     }
 
 
+    // MARK: - UITableView datasource + delegate
     override func numberOfSections(in _: UITableView) -> Int {
     override func numberOfSections(in _: UITableView) -> Int {
         return numberOfSections
         return numberOfSections
     }
     }
@@ -430,7 +450,7 @@ class GroupMembersViewController: UITableViewController, UISearchResultsUpdating
     func updateSearchResults(for searchController: UISearchController) {
     func updateSearchResults(for searchController: UISearchController) {
         if let searchText = searchController.searchBar.text {
         if let searchText = searchController.searchBar.text {
             filterContentForSearchText(searchText)
             filterContentForSearchText(searchText)
-        }
+        } 
     }
     }
 
 
     private func filterContentForSearchText(_ searchText: String, scope _: String = String.localized("pref_show_emails_all")) {
     private func filterContentForSearchText(_ searchText: String, scope _: String = String.localized("pref_show_emails_all")) {
@@ -442,6 +462,19 @@ class GroupMembersViewController: UITableViewController, UISearchResultsUpdating
         filteredContacts = contactsWithHighlights.filter { !$0.indexesToHighlight.isEmpty }
         filteredContacts = contactsWithHighlights.filter { !$0.indexesToHighlight.isEmpty }
         tableView.reloadData()
         tableView.reloadData()
         tableView.scrollToTop()
         tableView.scrollToTop()
+
+        // handle empty searchstate
+        if isFiltering() && getNumberOfRowsForContactList() == 0 {
+            let text = String.localizedStringWithFormat(
+                String.localized("search_no_result_for_x"),
+                searchText
+            )
+            emptySearchStateLabel.text = text
+            emptySearchStateLabel.isHidden = false
+        } else {
+            emptySearchStateLabel.text = nil
+            emptySearchStateLabel.isHidden = true
+        }
     }
     }
 
 
     private func updateContactCell(cell: ContactCell, contactWithHighlight: ContactWithSearchResults) {
     private func updateContactCell(cell: ContactCell, contactWithHighlight: ContactWithSearchResults) {

+ 33 - 2
deltachat-ios/Controller/NewChatViewController.swift

@@ -26,6 +26,12 @@ class NewChatViewController: UITableViewController {
         return searchController
         return searchController
     }()
     }()
 
 
+    private lazy var emptySearchStateLabel: EmptyStateLabel = {
+        let label = EmptyStateLabel()
+        label.isHidden = false
+        return label
+    }()
+
     private var contactIds: [Int]
     private var contactIds: [Int]
     private var filteredContactIds: [Int] = []
     private var filteredContactIds: [Int] = []
 
 
@@ -65,6 +71,7 @@ class NewChatViewController: UITableViewController {
         fatalError("init(coder:) has not been implemented")
         fatalError("init(coder:) has not been implemented")
     }
     }
 
 
+    // MARK: - lifecycle
     override func viewDidLoad() {
     override func viewDidLoad() {
         super.viewDidLoad()
         super.viewDidLoad()
 
 
@@ -78,6 +85,7 @@ class NewChatViewController: UITableViewController {
         }
         }
         tableView.register(ActionCell.self, forCellReuseIdentifier: "actionCell")
         tableView.register(ActionCell.self, forCellReuseIdentifier: "actionCell")
         tableView.register(ContactCell.self, forCellReuseIdentifier: "contactCell")
         tableView.register(ContactCell.self, forCellReuseIdentifier: "contactCell")
+        setupSubviews()
     }
     }
 
 
     override func viewWillAppear(_ animated: Bool) {
     override func viewWillAppear(_ animated: Bool) {
@@ -85,12 +93,22 @@ class NewChatViewController: UITableViewController {
         deviceContactAccessGranted = CNContactStore.authorizationStatus(for: .contacts) == .authorized
         deviceContactAccessGranted = CNContactStore.authorizationStatus(for: .contacts) == .authorized
     }
     }
 
 
+    // MARK: - setup
+    private func setupSubviews() {
+        view.addSubview(emptySearchStateLabel)
+        emptySearchStateLabel.translatesAutoresizingMaskIntoConstraints = false
+        emptySearchStateLabel.centerYAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerYAnchor).isActive = true
+        emptySearchStateLabel.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 40).isActive = true
+        emptySearchStateLabel.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -40).isActive = true
+        emptySearchStateLabel.centerXAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerXAnchor).isActive = true
+    }
+
+    // MARK: - actions
     @objc func cancelButtonPressed() {
     @objc func cancelButtonPressed() {
         dismiss(animated: true, completion: nil)
         dismiss(animated: true, completion: nil)
     }
     }
 
 
     // MARK: - Table view data source
     // MARK: - Table view data source
-
     override func numberOfSections(in _: UITableView) -> Int {
     override func numberOfSections(in _: UITableView) -> Int {
         return sectionsCount
         return sectionsCount
     }
     }
@@ -229,7 +247,6 @@ class NewChatViewController: UITableViewController {
 
 
     private func contactViewModelBy(row: Int) -> ContactCellViewModel {
     private func contactViewModelBy(row: Int) -> ContactCellViewModel {
         let id = contactIdByRow(row)
         let id = contactIdByRow(row)
-
         return ContactCellViewModel.make(contactId: id, searchText: searchText, dcContext: dcContext)
         return ContactCellViewModel.make(contactId: id, searchText: searchText, dcContext: dcContext)
   }
   }
 
 
@@ -271,6 +288,7 @@ class NewChatViewController: UITableViewController {
         }
         }
     }
     }
 
 
+    // MARK: - search
     private func reactivateSearchBarIfNeeded() {
     private func reactivateSearchBarIfNeeded() {
         if !searchBarIsEmpty {
         if !searchBarIsEmpty {
             searchController.isActive = true
             searchController.isActive = true
@@ -294,6 +312,19 @@ class NewChatViewController: UITableViewController {
         filteredContactIds = dcContext.getContacts(flags: DC_GCL_ADD_SELF, queryString: searchText)
         filteredContactIds = dcContext.getContacts(flags: DC_GCL_ADD_SELF, queryString: searchText)
         tableView.reloadData()
         tableView.reloadData()
         tableView.scrollToTop()
         tableView.scrollToTop()
+
+        // handle empty searchstate
+        if searchController.isActive && filteredContactIds.isEmpty {
+            let text = String.localizedStringWithFormat(
+                String.localized("search_no_result_for_x"),
+                searchText
+            )
+            emptySearchStateLabel.text = text
+            emptySearchStateLabel.isHidden = false
+        } else {
+            emptySearchStateLabel.text = nil
+            emptySearchStateLabel.isHidden = true
+        }
     }
     }
 
 
     // MARK: - coordinator
     // MARK: - coordinator

+ 9 - 1
deltachat-ios/ViewModel/ChatListViewModel.swift

@@ -20,7 +20,8 @@ protocol ChatListViewModelProtocol: class, UISearchResultsUpdating {
     func beginSearch()
     func beginSearch()
     func endSearch()
     func endSearch()
     func titleForHeaderIn(section: Int) -> String? // only visible on search results
     func titleForHeaderIn(section: Int) -> String? // only visible on search results
-    
+    var emptySearchText: String? { get }
+
     /// returns ROW of table
     /// returns ROW of table
     func deleteChat(chatId: Int) -> Int
     func deleteChat(chatId: Int) -> Int
     func archiveChatToggle(chatId: Int)
     func archiveChatToggle(chatId: Int)
@@ -167,6 +168,13 @@ class ChatListViewModel: NSObject, ChatListViewModelProtocol {
         resetSearch()
         resetSearch()
     }
     }
 
 
+    var emptySearchText: String? {
+        if searchActive && numberOfSections == 0 {
+            return searchText
+        }
+        return nil
+    }
+
     func deleteChat(chatId: Int) -> Int {
     func deleteChat(chatId: Int) -> Int {
         // find index of chatId
         // find index of chatId
         let indexToDelete = Array(0..<chatList.length).filter { chatList.getChatId(index: $0) == chatId }.first
         let indexToDelete = Array(0..<chatList.length).filter { chatList.getChatId(index: $0) == chatId }.first

+ 4 - 4
deltachat-ios/az.lproj/Localizable.strings

@@ -216,7 +216,7 @@
 // search
 // search
 "search" = "Axtarış";
 "search" = "Axtarış";
 "search_explain" = "Çatlar, kontaktlar və mesajlar axtar";
 "search_explain" = "Çatlar, kontaktlar və mesajlar axtar";
-"search_no_result_for_x" = "\"%s\" üçün heç bir nəticə tapılmadı";
+"search_no_result_for_x" = "\"%1$@\" üçün heç bir nəticə tapılmadı";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -278,8 +278,8 @@
 
 
 
 
 // preferences
 // preferences
-"pref_using_custom" = ":Xüsusi istifadə %s";
-"pref_using_default" = "Varsayılan istifadə: %s";
+"pref_using_custom" = ":Xüsusi istifadə %1$@";
+"pref_using_default" = "Varsayılan istifadə: %1$@";
 "pref_profile_info_headline" = "Profil məlumatınız";
 "pref_profile_info_headline" = "Profil məlumatınız";
 "pref_profile_photo" = "Profil şəkili";
 "pref_profile_photo" = "Profil şəkili";
 "pref_blocked_contacts" = "Bloklanmış kontaktlar";
 "pref_blocked_contacts" = "Bloklanmış kontaktlar";
@@ -445,7 +445,7 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%1$d yeni mesaj %2$d çatda";
 "notify_n_messages_in_m_chats" = "%1$d yeni mesaj %2$d çatda";
 "notify_most_recent_from" = "Ən son olanlar: %1$@";
 "notify_most_recent_from" = "Ən son olanlar: %1$@";
-"notify_media_message_with_text" = "Media messaj: %s";
+"notify_media_message_with_text" = "Media messaj: %1$@";
 "notify_mark_all_read" = "Hamısını oxunmuş olaraq işarələ";
 "notify_mark_all_read" = "Hamısını oxunmuş olaraq işarələ";
 "notify_mark_read" = "Oxuma işarəsi";
 "notify_mark_read" = "Oxuma işarəsi";
 "notify_media_message" = "Media mesaj";
 "notify_media_message" = "Media mesaj";

+ 4 - 4
deltachat-ios/ca.lproj/Localizable.strings

@@ -177,7 +177,7 @@
 // search
 // search
 "search" = "Busca";
 "search" = "Busca";
 "search_explain" = "Busca als xats, contactes i missatges";
 "search_explain" = "Busca als xats, contactes i missatges";
-"search_no_result_for_x" = "No s\'han trobat resultats per \"%s\"";
+"search_no_result_for_x" = "No s\'han trobat resultats per \"%1$@\"";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -233,8 +233,8 @@
 
 
 
 
 // preferences
 // preferences
-"pref_using_custom" = "Ús personalitzat: %s";
-"pref_using_default" = "Ús per defecte: %s";
+"pref_using_custom" = "Ús personalitzat: %1$@";
+"pref_using_default" = "Ús per defecte: %1$@";
 "pref_profile_info_headline" = "Informació del vostre perfil";
 "pref_profile_info_headline" = "Informació del vostre perfil";
 "pref_profile_photo" = "Fotografia de perfil";
 "pref_profile_photo" = "Fotografia de perfil";
 "pref_blocked_contacts" = "Contactes bloquejats";
 "pref_blocked_contacts" = "Contactes bloquejats";
@@ -385,7 +385,7 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%1$d missatges nous en %2$d xats";
 "notify_n_messages_in_m_chats" = "%1$d missatges nous en %2$d xats";
 "notify_most_recent_from" = "El més nou des de : %1$@";
 "notify_most_recent_from" = "El més nou des de : %1$@";
-"notify_media_message_with_text" = "Missatge multimèdia: %s";
+"notify_media_message_with_text" = "Missatge multimèdia: %1$@";
 "notify_mark_all_read" = "Marca\'ls tots com a llegits";
 "notify_mark_all_read" = "Marca\'ls tots com a llegits";
 "notify_mark_read" = "Marca\'l com a llegit";
 "notify_mark_read" = "Marca\'l com a llegit";
 "notify_media_message" = "Missatge multimèdia";
 "notify_media_message" = "Missatge multimèdia";

+ 4 - 4
deltachat-ios/da.lproj/Localizable.strings

@@ -201,7 +201,7 @@
 // search
 // search
 "search" = "Søge";
 "search" = "Søge";
 "search_explain" = "Søge efter samtaler, kontakter og beskeder";
 "search_explain" = "Søge efter samtaler, kontakter og beskeder";
-"search_no_result_for_x" = "Ingen resultater fundet for  \"%s\"";
+"search_no_result_for_x" = "Ingen resultater fundet for  \"%1$@\"";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -265,8 +265,8 @@
 
 
 
 
 // preferences
 // preferences
-"pref_using_custom" = "Bruger tilpasset: %s";
-"pref_using_default" = "Bruger standard: %s";
+"pref_using_custom" = "Bruger tilpasset: %1$@";
+"pref_using_default" = "Bruger standard: %1$@";
 "pref_profile_info_headline" = "Profil information";
 "pref_profile_info_headline" = "Profil information";
 "pref_profile_photo" = "Profil billede";
 "pref_profile_photo" = "Profil billede";
 "pref_blocked_contacts" = "Blokerede kontakter";
 "pref_blocked_contacts" = "Blokerede kontakter";
@@ -423,7 +423,7 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%1$d nye beskeder i %2$d samtaler";
 "notify_n_messages_in_m_chats" = "%1$d nye beskeder i %2$d samtaler";
 "notify_most_recent_from" = "Nylig fra: %1$@";
 "notify_most_recent_from" = "Nylig fra: %1$@";
-"notify_media_message_with_text" = "Medie besked: %s";
+"notify_media_message_with_text" = "Medie besked: %1$@";
 "notify_mark_all_read" = "Vælge alle som læst";
 "notify_mark_all_read" = "Vælge alle som læst";
 "notify_mark_read" = "Vælge læst";
 "notify_mark_read" = "Vælge læst";
 "notify_media_message" = "Medie besked";
 "notify_media_message" = "Medie besked";

+ 4 - 6
deltachat-ios/de.lproj/Localizable.strings

@@ -240,7 +240,7 @@
 // search
 // search
 "search" = "Suchen";
 "search" = "Suchen";
 "search_explain" = "Suche nach Chats, Kontakten und Nachrichten";
 "search_explain" = "Suche nach Chats, Kontakten und Nachrichten";
-"search_no_result_for_x" = "Keine Ergebnisse für \"%s\" gefunden.";
+"search_no_result_for_x" = "Keine Ergebnisse für \"%1$@\" gefunden.";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -320,8 +320,8 @@
 
 
 
 
 // preferences
 // preferences
-"pref_using_custom" = "Benutzerdefiniert verwenden: %s";
-"pref_using_default" = "Standard verwenden: %s";
+"pref_using_custom" = "Benutzerdefiniert verwenden: %1$@";
+"pref_using_default" = "Standard verwenden: %1$@";
 "pref_profile_info_headline" = "Mein Profil";
 "pref_profile_info_headline" = "Mein Profil";
 "pref_profile_photo" = "Profilbild";
 "pref_profile_photo" = "Profilbild";
 "pref_blocked_contacts" = "Blockierte Kontakte";
 "pref_blocked_contacts" = "Blockierte Kontakte";
@@ -524,7 +524,7 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%1$d neue Nachrichten in %2$d Chats";
 "notify_n_messages_in_m_chats" = "%1$d neue Nachrichten in %2$d Chats";
 "notify_most_recent_from" = "Letzter Stand von: %1$@";
 "notify_most_recent_from" = "Letzter Stand von: %1$@";
-"notify_media_message_with_text" = "Medienmitteilung: %s";
+"notify_media_message_with_text" = "Medienmitteilung: %1$@";
 "notify_mark_all_read" = "Alle als gelesen markieren";
 "notify_mark_all_read" = "Alle als gelesen markieren";
 "notify_mark_read" = "Als gelesen markieren";
 "notify_mark_read" = "Als gelesen markieren";
 "notify_media_message" = "Medienmitteilung";
 "notify_media_message" = "Medienmitteilung";
@@ -643,5 +643,3 @@
 // android specific strings, developers: please take care to remove strings that are no longer used!
 // android specific strings, developers: please take care to remove strings that are no longer used!
 // this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
 // this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
 "device_talk_background_connection_android" = "Zum Hinweis \"Hintergrundverbindung aktiviert\" im Systembereich:\n\n👉 Der Hinweis hält das Betriebssystem normalerweise davon ab, die Verbindung zwischen Delta Chat und Ihrem Server zu unterbrechen.\n\n👉 Wenn der Hinweis ohne Ihr Zutun verschwindet wurde die Verbindung vermutlich dennoch unterbrochen. Auch wenn dies seltsam erscheint - viele Handyhersteller tun genau dies - auf der Seite https://dontkillmyapp.com finden Sie herstellerspezifische Hinweise, was Sie dagegen tun können.\n\nWie auch immer - wir freuen uns, dass wir die Hintergrundverbindung grundsätzlich stabiler gestalten konnten und so viele Benutzerwünsche erfüllen könnten 🤗";
 "device_talk_background_connection_android" = "Zum Hinweis \"Hintergrundverbindung aktiviert\" im Systembereich:\n\n👉 Der Hinweis hält das Betriebssystem normalerweise davon ab, die Verbindung zwischen Delta Chat und Ihrem Server zu unterbrechen.\n\n👉 Wenn der Hinweis ohne Ihr Zutun verschwindet wurde die Verbindung vermutlich dennoch unterbrochen. Auch wenn dies seltsam erscheint - viele Handyhersteller tun genau dies - auf der Seite https://dontkillmyapp.com finden Sie herstellerspezifische Hinweise, was Sie dagegen tun können.\n\nWie auch immer - wir freuen uns, dass wir die Hintergrundverbindung grundsätzlich stabiler gestalten konnten und so viele Benutzerwünsche erfüllen könnten 🤗";
-
-

+ 6 - 5
deltachat-ios/en.lproj/Localizable.strings

@@ -240,7 +240,7 @@
 // search
 // search
 "search" = "Search";
 "search" = "Search";
 "search_explain" = "Search for chats, contacts, and messages";
 "search_explain" = "Search for chats, contacts, and messages";
-"search_no_result_for_x" = "No results found for \"%s\"";
+"search_no_result_for_x" = "No results found for \"%1$@\"";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -299,7 +299,7 @@
 // Translators: %1$s will be replaced by the email address
 // Translators: %1$s will be replaced by the email address
 "login_error_cannot_login" = "Cannot login as \"%1$@\". Please check if the email address and the password are correct.";
 "login_error_cannot_login" = "Cannot login as \"%1$@\". Please check if the email address and the password are correct.";
 // Translators: %1$s will be replaced by the server name (eg. imap.somewhere.org) and %2$s will be replaced by the human-readable response from the server. this response may be a single word or some sentences and may or may not be localized.
 // Translators: %1$s will be replaced by the server name (eg. imap.somewhere.org) and %2$s will be replaced by the human-readable response from the server. this response may be a single word or some sentences and may or may not be localized.
-"login_error_server_response" = "Response from %1$@: %2$@\n\nSome providers place additional information in your inbox; you can check them it eg. in the web frontend. Consult your provider or friends if you run into problems.";
+"login_error_server_response" = "Response from %1$@: %2$@\n\nSome providers place additional information in your inbox; you can check them eg. in the web frontend. Consult your provider or friends if you run into problems.";
 
 
 // TLS certificate checks
 // TLS certificate checks
 "accept_invalid_hostnames" = "Accept invalid hostnames";
 "accept_invalid_hostnames" = "Accept invalid hostnames";
@@ -320,8 +320,8 @@
 
 
 
 
 // preferences
 // preferences
-"pref_using_custom" = "Using custom: %s";
-"pref_using_default" = "Using default: %s";
+"pref_using_custom" = "Using custom: %1$@";
+"pref_using_default" = "Using default: %1$@";
 "pref_profile_info_headline" = "Your profile info";
 "pref_profile_info_headline" = "Your profile info";
 "pref_profile_photo" = "Profile picture";
 "pref_profile_photo" = "Profile picture";
 "pref_blocked_contacts" = "Blocked contacts";
 "pref_blocked_contacts" = "Blocked contacts";
@@ -524,7 +524,7 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%1$d new messages in %2$d chats";
 "notify_n_messages_in_m_chats" = "%1$d new messages in %2$d chats";
 "notify_most_recent_from" = "Most recent from: %1$@";
 "notify_most_recent_from" = "Most recent from: %1$@";
-"notify_media_message_with_text" = "Media message: %s";
+"notify_media_message_with_text" = "Media message: %1$@";
 "notify_mark_all_read" = "Mark all as read";
 "notify_mark_all_read" = "Mark all as read";
 "notify_mark_read" = "Mark read";
 "notify_mark_read" = "Mark read";
 "notify_media_message" = "Media message";
 "notify_media_message" = "Media message";
@@ -643,6 +643,7 @@
 // android specific strings, developers: please take care to remove strings that are no longer used!
 // android specific strings, developers: please take care to remove strings that are no longer used!
 // this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
 // this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
 "device_talk_background_connection_android" = "You may already have noticed, that there is a hint \"Background connection enabled\" shown by the system.\n\n👉 The hint normally prevents the operating system from killing the connection between Delta Chat and your server.\n\n👉 If the hint disappears without any action on your part, the connection has probably been killed anyway.\nIf you think this is weird, we totally agree - but many manufacturers do exactly that. The site https://dontkillmyapp.com shows some workarounds.\n\nHowever, we are happy that we could improve the receiving of messages in background with this change and could fulfil the requests of many users - thanks for reporting 🤗";
 "device_talk_background_connection_android" = "You may already have noticed, that there is a hint \"Background connection enabled\" shown by the system.\n\n👉 The hint normally prevents the operating system from killing the connection between Delta Chat and your server.\n\n👉 If the hint disappears without any action on your part, the connection has probably been killed anyway.\nIf you think this is weird, we totally agree - but many manufacturers do exactly that. The site https://dontkillmyapp.com shows some workarounds.\n\nHowever, we are happy that we could improve the receiving of messages in background with this change and could fulfil the requests of many users - thanks for reporting 🤗";
+"device_talk_background_connection2_android" = "You can now enable and disabled the \"Background connection\" as needed at \"Settings / Notifications\".";
 
 
 
 
 
 

+ 1 - 1
deltachat-ios/eo.lproj/Localizable.strings

@@ -228,7 +228,7 @@
 // search
 // search
 "search" = "Serĉi";
 "search" = "Serĉi";
 "search_explain" = "Serĉi babilojn, kontaktojn, kaj mesaĝojn";
 "search_explain" = "Serĉi babilojn, kontaktojn, kaj mesaĝojn";
-"search_no_result_for_x" = "Neniu rezulto trovita por \"%s\"";
+"search_no_result_for_x" = "Neniu rezulto trovita por \"%1$@\"";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile

+ 4 - 6
deltachat-ios/es.lproj/Localizable.strings

@@ -239,7 +239,7 @@
 // search
 // search
 "search" = "Buscar";
 "search" = "Buscar";
 "search_explain" = "Buscar chats, contactos, y mensajes";
 "search_explain" = "Buscar chats, contactos, y mensajes";
-"search_no_result_for_x" = "No se encontraron resultados para \"%s\"";
+"search_no_result_for_x" = "No se encontraron resultados para \"%1$@\"";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -315,8 +315,8 @@
 
 
 
 
 // preferences
 // preferences
-"pref_using_custom" = "Usando valor personalizado: %s";
-"pref_using_default" = "Usando valor por defecto: %s";
+"pref_using_custom" = "Usando valor personalizado: %1$@";
+"pref_using_default" = "Usando valor por defecto: %1$@";
 "pref_profile_info_headline" = "Información de perfil ";
 "pref_profile_info_headline" = "Información de perfil ";
 "pref_profile_photo" = "Foto de perfil";
 "pref_profile_photo" = "Foto de perfil";
 "pref_blocked_contacts" = "Contactos bloqueados";
 "pref_blocked_contacts" = "Contactos bloqueados";
@@ -493,7 +493,7 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%1$d nuevos mensajes en %2$d chats";
 "notify_n_messages_in_m_chats" = "%1$d nuevos mensajes en %2$d chats";
 "notify_most_recent_from" = "Más reciente de: %1$@";
 "notify_most_recent_from" = "Más reciente de: %1$@";
-"notify_media_message_with_text" = "Mensaje multimedia: %s";
+"notify_media_message_with_text" = "Mensaje multimedia: %1$@";
 "notify_mark_all_read" = "Marcar todo como leído";
 "notify_mark_all_read" = "Marcar todo como leído";
 "notify_mark_read" = "Marcar como leído";
 "notify_mark_read" = "Marcar como leído";
 "notify_media_message" = "Mensaje multimedia";
 "notify_media_message" = "Mensaje multimedia";
@@ -612,5 +612,3 @@
 // android specific strings, developers: please take care to remove strings that are no longer used!
 // android specific strings, developers: please take care to remove strings that are no longer used!
 // this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
 // this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
 "device_talk_background_connection_android" = "Es posible que ya haya notado que el sistema muestra una notificación \"Conexión de fondo habilitada\".\n\n👉 Esta notificación normalmente impide que el sistema operativo corte la conexión entre Delta Chat y su servidor.\n\n👉 Si la notificación desaparece sin ninguna acción de su parte, la conexión probablemente se haya interrumpido de todos modos. Si cree, esto es extraño, estamos totalmente de acuerdo, pero muchos fabricantes hacen exactamente eso. El sitio https://dontkillmyapp.com muestra algunas soluciones.\n\nSin embargo, estamos contentos de poder mejorar la recepción de mensajes en segundo plano con este cambio y satisfacer las solicitudes de muchos usuarios - gracias por reportar 🤗";
 "device_talk_background_connection_android" = "Es posible que ya haya notado que el sistema muestra una notificación \"Conexión de fondo habilitada\".\n\n👉 Esta notificación normalmente impide que el sistema operativo corte la conexión entre Delta Chat y su servidor.\n\n👉 Si la notificación desaparece sin ninguna acción de su parte, la conexión probablemente se haya interrumpido de todos modos. Si cree, esto es extraño, estamos totalmente de acuerdo, pero muchos fabricantes hacen exactamente eso. El sitio https://dontkillmyapp.com muestra algunas soluciones.\n\nSin embargo, estamos contentos de poder mejorar la recepción de mensajes en segundo plano con este cambio y satisfacer las solicitudes de muchos usuarios - gracias por reportar 🤗";
-
-

+ 15 - 4
deltachat-ios/eu.lproj/Localizable.strings

@@ -240,7 +240,7 @@
 // search
 // search
 "search" = "Bilatu";
 "search" = "Bilatu";
 "search_explain" = "Bilatu txatak, kontaktuak, eta mezuak.";
 "search_explain" = "Bilatu txatak, kontaktuak, eta mezuak.";
-"search_no_result_for_x" = "Ez da emaitzarik aurkitu \"%s\" bilaketarentzat";
+"search_no_result_for_x" = "Ez da emaitzarik aurkitu \"%1$@\" bilaketarentzat";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -320,8 +320,8 @@
 
 
 
 
 // preferences
 // preferences
-"pref_using_custom" = "Pertsonalizatua erabiltzen: %s";
-"pref_using_default" = "Lehenetsia erabiltzen: %s";
+"pref_using_custom" = "Pertsonalizatua erabiltzen: %1$@";
+"pref_using_default" = "Lehenetsia erabiltzen: %1$@";
 "pref_profile_info_headline" = "Zure profileko informazioa";
 "pref_profile_info_headline" = "Zure profileko informazioa";
 "pref_profile_photo" = "Profileko argazkia";
 "pref_profile_photo" = "Profileko argazkia";
 "pref_blocked_contacts" = "Blokeatutako kontaktuak";
 "pref_blocked_contacts" = "Blokeatutako kontaktuak";
@@ -422,6 +422,11 @@
 "pref_background_default_color" = "Lehenetsitako kolorea";
 "pref_background_default_color" = "Lehenetsitako kolorea";
 "pref_background_custom_image" = "Irudi pertsonalizatua";
 "pref_background_custom_image" = "Irudi pertsonalizatua";
 "pref_background_custom_color" = "Kolore pertsonalizatua";
 "pref_background_custom_color" = "Kolore pertsonalizatua";
+// disabling "Reliable service" will hide a the maybe annoying permanent-notification with the drawback that new-message-notifications get potentially unreliable
+"pref_reliable_service" = "Bigarren planoko konexio egonkorra";
+"pref_reliable_service_explain" = "Etengabeko jakinarazpena eskatzen du";
+
+
 // automatically delete message
 // automatically delete message
 "autodel_title" = "Automatikoki ezabatu mezuak";
 "autodel_title" = "Automatikoki ezabatu mezuak";
 "autodel_title_short" = "Automatikoki ezabatu";
 "autodel_title_short" = "Automatikoki ezabatu";
@@ -518,7 +523,7 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%1$d mezu berri %2$d txatetan";
 "notify_n_messages_in_m_chats" = "%1$d mezu berri %2$d txatetan";
 "notify_most_recent_from" = "%1$@(r)en azkena";
 "notify_most_recent_from" = "%1$@(r)en azkena";
-"notify_media_message_with_text" = "Multimedia mezua: %s";
+"notify_media_message_with_text" = "Multimedia mezua: %1$@";
 "notify_mark_all_read" = "Markatu denak irakurrita gisa";
 "notify_mark_all_read" = "Markatu denak irakurrita gisa";
 "notify_mark_read" = "Markatu irakurrita gisa";
 "notify_mark_read" = "Markatu irakurrita gisa";
 "notify_media_message" = "Multimedia mezua";
 "notify_media_message" = "Multimedia mezua";
@@ -634,3 +639,9 @@
 // iOS permissions, copy from "deltachat-ios/Info.plist", which is used on missing translations in "deltachat-ios/LANG.lproj/InfoPlist.strings"
 // iOS permissions, copy from "deltachat-ios/Info.plist", which is used on missing translations in "deltachat-ios/LANG.lproj/InfoPlist.strings"
 
 
 
 
+// android specific strings, developers: please take care to remove strings that are no longer used!
+// this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
+"device_talk_background_connection_android" = "Agian ikusi duzu, \"Bigarren planoko konexioa gaituta\" erakusten du sistemak.\n\n👉 Jakinarazpenak normalean sistema eragileak Delta Chat eta zure zerbitzariaren arteko konexioa etetea eragozten du.\n\n👉 Zuk ezer egin gabe desagertzen bada jakinarazpena, konexioa eten egin dela esan nahi lezake.\nHau arraroa dela uste baduzu, ados gaude, baina ekoizleek horrelakoak egiten dituzte. https://dontkillmyapp.com guneak konponbide batzuk erakusten dit,\n\nEdonola ere, aldaketa honekin bigarren planoan mezuak jasotzea hobetu izanak pozten gaitu, erabiltzaile askoren eskaerei erantzunez., eskerrik asko berri emateagatik.";
+"device_talk_background_connection2_android" = "\"Bigarren planoko konexioa\" nahi eran gaitu edo desgaitu dezakezu  \"Ezarpenak / Jakinarazpenak\" atalean.";
+
+

+ 4 - 4
deltachat-ios/fr.lproj/Localizable.strings

@@ -239,7 +239,7 @@
 // search
 // search
 "search" = "Chercher";
 "search" = "Chercher";
 "search_explain" = "Rechercher des discussions, des contacts ou des messages";
 "search_explain" = "Rechercher des discussions, des contacts ou des messages";
-"search_no_result_for_x" = "Aucun résultat trouvé pour \"%s\"";
+"search_no_result_for_x" = "Aucun résultat trouvé pour \"%1$@\"";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -315,8 +315,8 @@
 
 
 
 
 // preferences
 // preferences
-"pref_using_custom" = "Usage de la personnalisation : %s";
-"pref_using_default" = "Utilisation par défaut : %s";
+"pref_using_custom" = "Usage de la personnalisation : %1$@";
+"pref_using_default" = "Utilisation par défaut : %1$@";
 "pref_profile_info_headline" = "Informations de votre profil";
 "pref_profile_info_headline" = "Informations de votre profil";
 "pref_profile_photo" = "Photo du profil";
 "pref_profile_photo" = "Photo du profil";
 "pref_blocked_contacts" = "Contacts bloqués";
 "pref_blocked_contacts" = "Contacts bloqués";
@@ -493,7 +493,7 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%1$d nouveaux messages dans %2$d tchats";
 "notify_n_messages_in_m_chats" = "%1$d nouveaux messages dans %2$d tchats";
 "notify_most_recent_from" = "Plus récents depuis : %1$@";
 "notify_most_recent_from" = "Plus récents depuis : %1$@";
-"notify_media_message_with_text" = "Message multimédia: %s";
+"notify_media_message_with_text" = "Message multimédia: %1$@";
 "notify_mark_all_read" = "Tout marquer comme lus";
 "notify_mark_all_read" = "Tout marquer comme lus";
 "notify_mark_read" = "Marquer comme lu";
 "notify_mark_read" = "Marquer comme lu";
 "notify_media_message" = "Message multimédia";
 "notify_media_message" = "Message multimédia";

+ 9 - 8
deltachat-ios/gl.lproj/Localizable.strings

@@ -240,7 +240,7 @@
 // search
 // search
 "search" = "Buscar";
 "search" = "Buscar";
 "search_explain" = "Buscar conversas, contactos e mensaxes";
 "search_explain" = "Buscar conversas, contactos e mensaxes";
-"search_no_result_for_x" = "Non hai resultados para \"%s\"";
+"search_no_result_for_x" = "Non hai resultados para \"%1$@\"";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -320,8 +320,8 @@
 
 
 
 
 // preferences
 // preferences
-"pref_using_custom" = "Utilizar personalizado: %s";
-"pref_using_default" = "Utilizando por omisión: %s";
+"pref_using_custom" = "Utilizar personalizado: %1$@";
+"pref_using_default" = "Utilizando por omisión: %1$@";
 "pref_profile_info_headline" = "Info do teu perfil";
 "pref_profile_info_headline" = "Info do teu perfil";
 "pref_profile_photo" = "Imaxe de perfil";
 "pref_profile_photo" = "Imaxe de perfil";
 "pref_blocked_contacts" = "Contactos bloqueados";
 "pref_blocked_contacts" = "Contactos bloqueados";
@@ -343,7 +343,7 @@
 "pref_vibrate" = "Vibrar";
 "pref_vibrate" = "Vibrar";
 "pref_chat_settings" = "Axustes da conversa";
 "pref_chat_settings" = "Axustes da conversa";
 "pref_change_secret" = "Cambiar seguridade";
 "pref_change_secret" = "Cambiar seguridade";
-"pref_change_secret_explain" = "Cambiar o PIN / patrón / pegada dactilar a través dos axustes do sistema";
+"pref_change_secret_explain" = "Cambiar o PIN / patrón / impresión dactilar a través dos axustes do sistema";
 "pref_screen_security" = "Seguridade da pantalla";
 "pref_screen_security" = "Seguridade da pantalla";
 // Translators: The wording must indicate that we can't guarantee that, its a System flag that we set. But the System in question must honor it.
 // Translators: The wording must indicate that we can't guarantee that, its a System flag that we set. But the System in question must honor it.
 "pref_screen_security_explain" = "Solicitar bloqueo de captura de pantalla para a lista de recentes e dentro da app";
 "pref_screen_security_explain" = "Solicitar bloqueo de captura de pantalla para a lista de recentes e dentro da app";
@@ -480,7 +480,7 @@
 
 
 // screen lock
 // screen lock
 "screenlock_title" = "Bloqueo de pantalla";
 "screenlock_title" = "Bloqueo de pantalla";
-"screenlock_explain" = "Limita o acceso co bloqueo de pantalla Android ou pegada dactilar; para evitar mostrar o contido, por favor activa \"Seguridade de Pantalla\".";
+"screenlock_explain" = "Limita o acceso co bloqueo de pantalla Android ou impresión dactilar; para evitar mostrar o contido, por favor activa \"Seguridade de Pantalla\".";
 "screenlock_authentication_failed" = "Fallo de Autenticación.";
 "screenlock_authentication_failed" = "Fallo de Autenticación.";
 "screenlock_unlock_title" = "Desbloquear Delta Chat";
 "screenlock_unlock_title" = "Desbloquear Delta Chat";
 "screenlock_unlock_description" = "Introduce o código establecido no sistema para desbloquerar Delta Chat.";
 "screenlock_unlock_description" = "Introduce o código establecido no sistema para desbloquerar Delta Chat.";
@@ -494,8 +494,8 @@
 "qrscan_title" = "Escanear código QR";
 "qrscan_title" = "Escanear código QR";
 "qrscan_hint" = "Mantén a cámara sobre o código QR.";
 "qrscan_hint" = "Mantén a cámara sobre o código QR.";
 "qrscan_ask_join_group" = "Queres unirte ao grupo \"%1$@\"?";
 "qrscan_ask_join_group" = "Queres unirte ao grupo \"%1$@\"?";
-"qrscan_fingerprint_mismatch" = "A pegada escaneada non concorda coa última vista para %1$@.";
-"qrscan_no_addr_found" = "Este código QR contén unha pegada dactilar pero non un enderezo de correo.\n\nPara unha verificación fora de liña, por favor establece unha conexión cifrada co correspondente.";
+"qrscan_fingerprint_mismatch" = "A impresión escaneada non concorda coa última vista para %1$@.";
+"qrscan_no_addr_found" = "Este código QR contén unha imprsión dixital pero non un enderezo de correo.\n\nPara unha verificación fora de liña, por favor establece unha conexión cifrada co correspondente.";
 "qrscan_contains_text" = "Texto escaneado no código QR:\n\n%1$@";
 "qrscan_contains_text" = "Texto escaneado no código QR:\n\n%1$@";
 "qrscan_contains_url" = "URL escaneado no código QR:\n\n%1$@";
 "qrscan_contains_url" = "URL escaneado no código QR:\n\n%1$@";
 "qrscan_fingerprint_label" = "Pegada dactilar";
 "qrscan_fingerprint_label" = "Pegada dactilar";
@@ -524,7 +524,7 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%1$d novas mensaxes en %2$d conversas";
 "notify_n_messages_in_m_chats" = "%1$d novas mensaxes en %2$d conversas";
 "notify_most_recent_from" = "Máis recente desde: %1$@";
 "notify_most_recent_from" = "Máis recente desde: %1$@";
-"notify_media_message_with_text" = "Mensaxe de medios: %s";
+"notify_media_message_with_text" = "Mensaxe de medios: %1$@";
 "notify_mark_all_read" = "Marcar todo como lido";
 "notify_mark_all_read" = "Marcar todo como lido";
 "notify_mark_read" = "Marcar como lido";
 "notify_mark_read" = "Marcar como lido";
 "notify_media_message" = "Mensaxe de medios";
 "notify_media_message" = "Mensaxe de medios";
@@ -643,5 +643,6 @@
 // android specific strings, developers: please take care to remove strings that are no longer used!
 // android specific strings, developers: please take care to remove strings that are no longer used!
 // this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
 // this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
 "device_talk_background_connection_android" = "Igual xa o notaches, hai un aviso \"Conexión en segundo plano activada\" na bandexa do sistema.\n\n👉 O aviso normalmente evita que o sistema corte a conexión entre Delta Chat e o teu servidor.\n\n👉 O aviso desaparece sen que teñas que facer nada, a conexión vaise cortar igualmente.\nSe cres que é raro, entendémolo - pero moitos fabricantes fan precisamente eso. A web https://dontkillmyapp.com proporciona posibles solucións.\n\nPorén, agrádanos poder mellorar a recepción de mensaxes en segundo plano con este cambio e poder cumprir coas expectativas de moitas usuarias - grazas por informarnos  🤗";
 "device_talk_background_connection_android" = "Igual xa o notaches, hai un aviso \"Conexión en segundo plano activada\" na bandexa do sistema.\n\n👉 O aviso normalmente evita que o sistema corte a conexión entre Delta Chat e o teu servidor.\n\n👉 O aviso desaparece sen que teñas que facer nada, a conexión vaise cortar igualmente.\nSe cres que é raro, entendémolo - pero moitos fabricantes fan precisamente eso. A web https://dontkillmyapp.com proporciona posibles solucións.\n\nPorén, agrádanos poder mellorar a recepción de mensaxes en segundo plano con este cambio e poder cumprir coas expectativas de moitas usuarias - grazas por informarnos  🤗";
+"device_talk_background_connection2_android" = "Se o precisas xa podes activar / desactivar a \"Conexión en segundo plano\" nos \"Axustes / Notificacións\".";
 
 
 
 

+ 1 - 1
deltachat-ios/hr.lproj/Localizable.strings

@@ -133,7 +133,7 @@
 "saved_messages" = "Sačuvane poruke";
 "saved_messages" = "Sačuvane poruke";
 // search
 // search
 "search" = "Traži";
 "search" = "Traži";
-"search_no_result_for_x" = "Nema pronađenih rezultata za \"%s\"";
+"search_no_result_for_x" = "Nema pronađenih rezultata za \"%1$@\"";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile

+ 1 - 1
deltachat-ios/hu.lproj/Localizable.strings

@@ -277,7 +277,7 @@
 "contact_not_verified" = "%1$@ nem ellenőrizhető";
 "contact_not_verified" = "%1$@ nem ellenőrizhető";
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%1$dúj üzenet %2$d beszélgetésben";
 "notify_n_messages_in_m_chats" = "%1$dúj üzenet %2$d beszélgetésben";
-"notify_media_message_with_text" = "Médiaüzenet: %s";
+"notify_media_message_with_text" = "Médiaüzenet: %1$@";
 "notify_mark_all_read" = "Mindet olvasottnak jelöl";
 "notify_mark_all_read" = "Mindet olvasottnak jelöl";
 "notify_mark_read" = "Olvasottnak jelöl";
 "notify_mark_read" = "Olvasottnak jelöl";
 "notify_media_message" = "Médiaüzenet";
 "notify_media_message" = "Médiaüzenet";

+ 4 - 4
deltachat-ios/id.lproj/Localizable.strings

@@ -240,7 +240,7 @@
 // search
 // search
 "search" = "Cari";
 "search" = "Cari";
 "search_explain" = "Mencari obrolan, kontak dan pesan";
 "search_explain" = "Mencari obrolan, kontak dan pesan";
-"search_no_result_for_x" = "Tak ada hasil dari \"%s\"";
+"search_no_result_for_x" = "Tak ada hasil dari \"%1$@\"";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -316,8 +316,8 @@
 
 
 
 
 // preferences
 // preferences
-"pref_using_custom" = "Menggunakan custom: %s";
-"pref_using_default" = "Menggunakan default: %s";
+"pref_using_custom" = "Menggunakan custom: %1$@";
+"pref_using_default" = "Menggunakan default: %1$@";
 "pref_profile_info_headline" = "Info profil Anda";
 "pref_profile_info_headline" = "Info profil Anda";
 "pref_profile_photo" = "Gambar profil";
 "pref_profile_photo" = "Gambar profil";
 "pref_blocked_contacts" = "Kontak yang diblokir";
 "pref_blocked_contacts" = "Kontak yang diblokir";
@@ -472,7 +472,7 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%1$dpesan baru di%2$d obrolan";
 "notify_n_messages_in_m_chats" = "%1$dpesan baru di%2$d obrolan";
 "notify_most_recent_from" = "Terbaru dari: %1$@";
 "notify_most_recent_from" = "Terbaru dari: %1$@";
-"notify_media_message_with_text" = "Pesan media: %s";
+"notify_media_message_with_text" = "Pesan media: %1$@";
 "notify_mark_all_read" = "Tandai semua telah dibaca";
 "notify_mark_all_read" = "Tandai semua telah dibaca";
 "notify_media_message" = "Pesan media";
 "notify_media_message" = "Pesan media";
 "notify_reply_button" = "Balasan";
 "notify_reply_button" = "Balasan";

+ 18 - 17
deltachat-ios/it.lproj/Localizable.strings

@@ -53,7 +53,7 @@
 // Translators: used as a headline in sections with actions that cannot be undone. could also be "Caution" or "Cave" or so.
 // Translators: used as a headline in sections with actions that cannot be undone. could also be "Caution" or "Cave" or so.
 "danger" = "Attenzione";
 "danger" = "Attenzione";
 // n_min_ago is deprecated, use n_minutes instead
 // n_min_ago is deprecated, use n_minutes instead
-"n_min_ago" = "%d min";
+"n_min_ago" = "%d min.";
 "today" = "Oggi";
 "today" = "Oggi";
 "yesterday" = "Ieri";
 "yesterday" = "Ieri";
 "this_week" = "Questa settimana";
 "this_week" = "Questa settimana";
@@ -108,8 +108,8 @@
 "menu_new_group" = "Nuovo gruppo";
 "menu_new_group" = "Nuovo gruppo";
 "menu_new_verified_group" = "Nuovo gruppo verificato";
 "menu_new_verified_group" = "Nuovo gruppo verificato";
 "menu_send" = "Inviato";
 "menu_send" = "Inviato";
-"menu_toggle_keyboard" = "Alterna tastiera emoji";
-"menu_edit_group" = "Modifica grupp";
+"menu_toggle_keyboard" = "Attiva/Disattiva tastiera emoji";
+"menu_edit_group" = "Modifica gruppo";
 "menu_group_name_and_image" = "Nome e immagine gruppo";
 "menu_group_name_and_image" = "Nome e immagine gruppo";
 "menu_show_map" = "Mostra mappa";
 "menu_show_map" = "Mostra mappa";
 "menu_show_global_map" = "Mostra tutte le posizioni";
 "menu_show_global_map" = "Mostra tutte le posizioni";
@@ -155,8 +155,8 @@
 "title_share_location" = "Condividi posizione con tutti i membri";
 "title_share_location" = "Condividi posizione con tutti i membri";
 "device_talk" = "Messaggi del dispositivo";
 "device_talk" = "Messaggi del dispositivo";
 "device_talk_subtitle" = "Messaggi generati localmente";
 "device_talk_subtitle" = "Messaggi generati localmente";
-"device_talk_explain" = "I messaggio in questa chat vengono generati localmente da Delta Chat. Gli sviluppatori li usano per informarti sugli aggiornamenti o sui problemi d\'utilizzo.";
-"device_talk_welcome_message" = "Benvenuto in Delta Chat! - Delta Chat ha l\'aspetto e lo stile di altre popolari applicazioni di messaggistica, ma non costringe ad un controllo centralizzato, al tracciamento o alla vendita tua,  dei tuoi amici, colleghi o familiari a grandi organizzazioni.\n \n Tecnicamente, Delta Chat è un\'applicazione di posta elettronica con un\'interfaccia moderna. L\'email in una nuova veste 👻 \n \nUtilizza Delta Chat con chiunque: basta conoscere il loro indirizzo e-mail. I destinatari non hanno bisogno di installare Delta Chat, visitare siti web o iscriversi da nessuna parte -  ma, naturalmente se lo desiderano, puoi suggerirgli 👉 https://get.delta.chat";
+"device_talk_explain" = "I messaggi in questa chat vengono generati localmente da Delta Chat. Gli sviluppatori li usano per informarti sugli aggiornamenti o sui problemi d\'utilizzo.";
+"device_talk_welcome_message" = "Benvenuto in Delta Chat! - Delta Chat ha l\'aspetto e lo stile di altre popolari applicazioni di messaggistica, ma non costringe ad un controllo centralizzato, al tracciamento o alla vendita tua, dei tuoi amici, colleghi o familiari a grandi organizzazioni.\n\nTecnicamente, Delta Chat è un\'applicazione di posta elettronica con un\'interfaccia moderna. L\'email in una nuova veste 👻\n\nUtilizza Delta Chat con chiunque: basta conoscere il loro indirizzo e-mail. I destinatari non hanno bisogno di installare Delta Chat, visitare siti web o iscriversi da nessuna parte - ma, naturalmente se lo desiderano, puoi suggerirgli 👉 https://get.delta.chat";
 "edit_contact" = "Modifica contatto";
 "edit_contact" = "Modifica contatto";
 // Translators: "Pin" here is the verb for pinning, making sth. sticky. this is NOT the appreviation for "pin number".
 // Translators: "Pin" here is the verb for pinning, making sth. sticky. this is NOT the appreviation for "pin number".
 "pin_chat" = "Fissa chat";
 "pin_chat" = "Fissa chat";
@@ -191,10 +191,10 @@
 "ask_delete_contacts" = "Eliminare il contatto? Questo eliminerà per sempre il contatto selezionato.\n\nI contatti con chat attive o presenti nella rubrica del sistema non possono essere eliminati permanentemente.";
 "ask_delete_contacts" = "Eliminare il contatto? Questo eliminerà per sempre il contatto selezionato.\n\nI contatti con chat attive o presenti nella rubrica del sistema non possono essere eliminati permanentemente.";
 "ask_delete_contact" = "Vuoi eliminare per sempre %1$@?\n\nI contatti con chat attive e quelli in rubrica non possono essere eliminati permanentemente.";
 "ask_delete_contact" = "Vuoi eliminare per sempre %1$@?\n\nI contatti con chat attive e quelli in rubrica non possono essere eliminati permanentemente.";
 "cannot_delete_contacts_in_use" = "Impossibile eliminare contatti con chat in corso.";
 "cannot_delete_contacts_in_use" = "Impossibile eliminare contatti con chat in corso.";
-"ask_start_chat_with" = "Chattare with %1$@?";
+"ask_start_chat_with" = "Chattare con %1$@?";
 // Translators: %1$s will be replaces by a comma separated list of names
 // Translators: %1$s will be replaces by a comma separated list of names
 "ask_remove_members" = "Rimuovere %1$@ dal gruppo?";
 "ask_remove_members" = "Rimuovere %1$@ dal gruppo?";
-"info_outdated_app_title" = "La applicazione non è aggiornata.";
+"info_outdated_app_title" = "L\' applicazione non è aggiornata.";
 "info_outdated_app_text" = "Sembra che tu abbia installato Delta Chat da una sorgente che non fornisce aggiornamenti automatici (es. GitHub). Scaricala da uno store per riceve nuove funzionalità e bug fix.";
 "info_outdated_app_text" = "Sembra che tu abbia installato Delta Chat da una sorgente che non fornisce aggiornamenti automatici (es. GitHub). Scaricala da uno store per riceve nuove funzionalità e bug fix.";
 "info_outdated_app_dialog_title" = "Aggiorna sorgenti";
 "info_outdated_app_dialog_title" = "Aggiorna sorgenti";
 "info_outdated_app_dialog_text" = "Delta Chat è disponibile su:";
 "info_outdated_app_dialog_text" = "Delta Chat è disponibile su:";
@@ -240,7 +240,7 @@
 // search
 // search
 "search" = "Cerca";
 "search" = "Cerca";
 "search_explain" = "Cerca in chat, contatti e messaggi";
 "search_explain" = "Cerca in chat, contatti e messaggi";
-"search_no_result_for_x" = "Nessun risultato per \"%s\"";
+"search_no_result_for_x" = "Nessun risultato per \"%1$@\"";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -287,7 +287,7 @@
 "login_smtp_security" = "Sicurezza SMTP";
 "login_smtp_security" = "Sicurezza SMTP";
 "login_auth_method" = "Metodo di autorizzazione";
 "login_auth_method" = "Metodo di autorizzazione";
 "login_info_oauth2_title" = "Usare il setup semplificato?";
 "login_info_oauth2_title" = "Usare il setup semplificato?";
-"login_info_oauth2_text" = "L\'indirizzo email inserito supporta l\'autenticazione semplificata (OAuth2).\n\nContinuando, puoi autorizzare Delta Chat ad operare come app di messaggistica via e-mail.\n\nNon esistono server di Delta Chat, i tuoi dati restano nel tuo dispositivo!";
+"login_info_oauth2_text" = "L\'indirizzo email inserito supporta l\'autenticazione semplificata (OAuth2.0).\n\nContinuando, puoi autorizzare Delta Chat ad operare come app di messaggistica via e-mail.\n\nNon esistono server di Delta Chat, i tuoi dati restano nel tuo dispositivo!";
 "login_certificate_checks" = "Controlli certificato";
 "login_certificate_checks" = "Controlli certificato";
 "login_error_mail" = "Inserisci un indirizzo email valido";
 "login_error_mail" = "Inserisci un indirizzo email valido";
 "login_error_server" = "Inserisci un server / indirizzo IP valido";
 "login_error_server" = "Inserisci un server / indirizzo IP valido";
@@ -320,13 +320,13 @@
 
 
 
 
 // preferences
 // preferences
-"pref_using_custom" = "Personalizzato in uso: %s";
-"pref_using_default" = "Predefinito in uso: %s";
+"pref_using_custom" = "Personalizzato in uso: %1$@";
+"pref_using_default" = "Predefinito in uso: %1$@";
 "pref_profile_info_headline" = "Le tue info profilo";
 "pref_profile_info_headline" = "Le tue info profilo";
 "pref_profile_photo" = "Foto profilo";
 "pref_profile_photo" = "Foto profilo";
 "pref_blocked_contacts" = "Contatti bloccati";
 "pref_blocked_contacts" = "Contatti bloccati";
 "pref_profile_photo_remove_ask" = "Rimuvere la foto profilo?";
 "pref_profile_photo_remove_ask" = "Rimuvere la foto profilo?";
-"pref_help_url" = "https://delta.chat/en/help";
+"pref_help_url" = "https://delta.chat/it/help";
 "pref_password_and_account_settings" = "Password e account";
 "pref_password_and_account_settings" = "Password e account";
 "pref_who_can_see_this_information" = "Chi può vedere queste informazioni?";
 "pref_who_can_see_this_information" = "Chi può vedere queste informazioni?";
 "pref_who_can_see_profile_explain" = "L\'immagine del tuo profilo e il tuo nome saranno mostrati insieme ai tuoi messaggi quando comunichi con altri utenti. Le informazioni già inviate non possono essere cancellate o rimosse.";
 "pref_who_can_see_profile_explain" = "L\'immagine del tuo profilo e il tuo nome saranno mostrati insieme ai tuoi messaggi quando comunichi con altri utenti. Le informazioni già inviate non possono essere cancellate o rimosse.";
@@ -490,7 +490,7 @@
 
 
 
 
 // qr code stuff
 // qr code stuff
-"qr_code" = "Codic QR";
+"qr_code" = "Codice QR";
 "qrscan_title" = "Scansiona codice QR";
 "qrscan_title" = "Scansiona codice QR";
 "qrscan_hint" = "Posiziona la camera sopra il codice QR";
 "qrscan_hint" = "Posiziona la camera sopra il codice QR";
 "qrscan_ask_join_group" = "Vuoi entrare nel gruppo \"%1$@\"?";
 "qrscan_ask_join_group" = "Vuoi entrare nel gruppo \"%1$@\"?";
@@ -524,13 +524,13 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%1$d nuovi messaggi in %2$d chat";
 "notify_n_messages_in_m_chats" = "%1$d nuovi messaggi in %2$d chat";
 "notify_most_recent_from" = "Più recente da: %1$@";
 "notify_most_recent_from" = "Più recente da: %1$@";
-"notify_media_message_with_text" = "Messaggio multimediale: %s";
+"notify_media_message_with_text" = "Messaggio multimediale: %1$@";
 "notify_mark_all_read" = "Segna tutti come letti";
 "notify_mark_all_read" = "Segna tutti come letti";
 "notify_mark_read" = "Segna come letto";
 "notify_mark_read" = "Segna come letto";
 "notify_media_message" = "Messaggio multimediale";
 "notify_media_message" = "Messaggio multimediale";
 "notify_reply_button" = "Rispondi";
 "notify_reply_button" = "Rispondi";
 "notify_new_message" = "Nuovo messaggio";
 "notify_new_message" = "Nuovo messaggio";
-"notify_background_connection_enabled" = "Connession in background abilitata";
+"notify_background_connection_enabled" = "Connessione in background abilitata";
 "notify_priority_high" = "Alta";
 "notify_priority_high" = "Alta";
 "notify_priority_max" = "Massima";
 "notify_priority_max" = "Massima";
 "notify_name_and_message" = "Nome e messaggio";
 "notify_name_and_message" = "Nome e messaggio";
@@ -598,7 +598,7 @@
 "autocrypt_key_transfer_desktop" = "Trasferimento chiave Autocrypt";
 "autocrypt_key_transfer_desktop" = "Trasferimento chiave Autocrypt";
 "initiate_key_transfer_desktop" = "Un \'Messaggio di configurazione Autocrypt\' condivide in sicurezza le tue impostazioni end-to-end con altre app compatibili. Le impostazioni sono criptate con un codice mostrato qui che deve essere inserito nell\'altro dispositivo.";
 "initiate_key_transfer_desktop" = "Un \'Messaggio di configurazione Autocrypt\' condivide in sicurezza le tue impostazioni end-to-end con altre app compatibili. Le impostazioni sono criptate con un codice mostrato qui che deve essere inserito nell\'altro dispositivo.";
 "reply_to_message_desktop" = "Rispondi al messaggio";
 "reply_to_message_desktop" = "Rispondi al messaggio";
-"select_group_image_desktop" = "Seleziona immagine grupp";
+"select_group_image_desktop" = "Seleziona immagine gruppo";
 "imex_progress_title_desktop" = "Avanzamento backup";
 "imex_progress_title_desktop" = "Avanzamento backup";
 "download_attachment_desktop" = "Scarica allegato";
 "download_attachment_desktop" = "Scarica allegato";
 "export_backup_desktop" = "Esporta backup";
 "export_backup_desktop" = "Esporta backup";
@@ -642,6 +642,7 @@
 
 
 // android specific strings, developers: please take care to remove strings that are no longer used!
 // android specific strings, developers: please take care to remove strings that are no longer used!
 // this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
 // this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
-"device_talk_background_connection_android" = "Potresti aver già notato che esiste una notifica \"Connessione in background abilitata\" mostrata dal sistema.\n\n 👉 La notifica normalmente impedisce al sistema operativo di interrompere la connessione tra Delta Chat e il tuo server.\n\n Se la notifica scompare senza alcuna azione da parte tua, la connessione è stata probabilmente soppressa.\nSe pensi che sia strano, siamo totalmente d\'accordo - ma molti produttori fanno esattamente questo. Il sito https://dontkillmyapp.com mostra alcune soluzioni alternative.\n\nTuttavia, siamo felici di poter migliorare la ricezione dei messaggi in background con questa modifica e di soddisfare le richieste di molti utenti, grazie per avercelo segnalato 🤗";
+"device_talk_background_connection_android" = "Potresti aver già notato che esiste una notifica \"Connessione in background abilitata\" mostrata dal sistema.\n\n 👉 La notifica normalmente impedisce al sistema operativo di interrompere la connessione tra Delta Chat e il tuo server.\n\n👉 Se la notifica scompare senza alcuna azione da parte tua, la connessione è stata probabilmente soppressa.\nSe pensi che sia strano, siamo totalmente d\'accordo - ma molti produttori fanno esattamente questo. Il sito https://dontkillmyapp.com mostra alcune soluzioni alternative.\n\nTuttavia, siamo felici di poter migliorare la ricezione dei messaggi in background con questa modifica e di soddisfare le richieste di molti utenti, grazie per avercelo segnalato 🤗";
+"device_talk_background_connection2_android" = "Ora puoi abilitare e disabilitare la \"Connessione in background\" secondo necessità in \"Impostazioni / Notifiche\".";
 
 
 
 

+ 1 - 1
deltachat-ios/it.lproj/Localizable.stringsdict

@@ -15,7 +15,7 @@
 			<key>one</key>
 			<key>one</key>
 			<string>%d min</string>
 			<string>%d min</string>
 			<key>other</key>
 			<key>other</key>
-			<string>%d min</string>
+			<string>%d min.</string>
 		</dict>
 		</dict>
 	</dict>
 	</dict>
 	<key>n_hours</key>
 	<key>n_hours</key>

+ 1 - 1
deltachat-ios/ja.lproj/Localizable.strings

@@ -155,7 +155,7 @@
 // search
 // search
 "search" = "検索";
 "search" = "検索";
 "search_explain" = "チャット・メッセージ・連絡先を検索";
 "search_explain" = "チャット・メッセージ・連絡先を検索";
-"search_no_result_for_x" = "「%s」は見付かりませんでした。";
+"search_no_result_for_x" = "「%1$@」は見付かりませんでした。";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile

+ 2 - 2
deltachat-ios/lt.lproj/Localizable.strings

@@ -203,7 +203,7 @@
 // search
 // search
 "search" = "Ieškoti";
 "search" = "Ieškoti";
 "search_explain" = "Ieškokite pokalbių, adresatų ir žinučių";
 "search_explain" = "Ieškokite pokalbių, adresatų ir žinučių";
-"search_no_result_for_x" = "Nerasta jokių rezultatų pagal užklausą \"%s\"";
+"search_no_result_for_x" = "Nerasta jokių rezultatų pagal užklausą \"%1$@\"";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -419,7 +419,7 @@
 "qrshow_join_contact_no_connection_toast" = "Nėra interneto ryšio, nepavyksta atlikti QR kodo sąrankos.";
 "qrshow_join_contact_no_connection_toast" = "Nėra interneto ryšio, nepavyksta atlikti QR kodo sąrankos.";
 "contact_not_verified" = "Nepavyksta patvirtinti %1$@";
 "contact_not_verified" = "Nepavyksta patvirtinti %1$@";
 "notify_most_recent_from" = "Naujausia nuo: %1$@";
 "notify_most_recent_from" = "Naujausia nuo: %1$@";
-"notify_media_message_with_text" = "Medijos žinutė: %s";
+"notify_media_message_with_text" = "Medijos žinutė: %1$@";
 "notify_mark_all_read" = "Žymėti visas kaip skaitytas";
 "notify_mark_all_read" = "Žymėti visas kaip skaitytas";
 "notify_mark_read" = "Žymėti kaip skaitytą";
 "notify_mark_read" = "Žymėti kaip skaitytą";
 "notify_media_message" = "Medijos žinutė";
 "notify_media_message" = "Medijos žinutė";

+ 5 - 4
deltachat-ios/nl.lproj/Localizable.strings

@@ -240,7 +240,7 @@
 // search
 // search
 "search" = "Zoeken";
 "search" = "Zoeken";
 "search_explain" = "Zoek naar gesprekken, contactpersonen en berichten";
 "search_explain" = "Zoek naar gesprekken, contactpersonen en berichten";
-"search_no_result_for_x" = "Geen resultaten gevonden voor \"%s\"";
+"search_no_result_for_x" = "Geen resultaten gevonden voor \"%1$@\"";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -320,8 +320,8 @@
 
 
 
 
 // preferences
 // preferences
-"pref_using_custom" = "Aangepast wordt gebruikt: %s";
-"pref_using_default" = "Standaard wordt gebruikt: %s";
+"pref_using_custom" = "Aangepast wordt gebruikt: %1$@";
+"pref_using_default" = "Standaard wordt gebruikt: %1$@";
 "pref_profile_info_headline" = "Mijn profiel";
 "pref_profile_info_headline" = "Mijn profiel";
 "pref_profile_photo" = "Profielfoto";
 "pref_profile_photo" = "Profielfoto";
 "pref_blocked_contacts" = "Geblokkeerde contactpersonen";
 "pref_blocked_contacts" = "Geblokkeerde contactpersonen";
@@ -524,7 +524,7 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%1$d nieuwe berichten in %2$d gesprekken";
 "notify_n_messages_in_m_chats" = "%1$d nieuwe berichten in %2$d gesprekken";
 "notify_most_recent_from" = "Recentste van: %1$@";
 "notify_most_recent_from" = "Recentste van: %1$@";
-"notify_media_message_with_text" = "Mediabericht: %s";
+"notify_media_message_with_text" = "Mediabericht: %1$@";
 "notify_mark_all_read" = "Alles markeren als gelezen";
 "notify_mark_all_read" = "Alles markeren als gelezen";
 "notify_mark_read" = "Markeren als gelezen";
 "notify_mark_read" = "Markeren als gelezen";
 "notify_media_message" = "Mediabericht";
 "notify_media_message" = "Mediabericht";
@@ -643,5 +643,6 @@
 // android specific strings, developers: please take care to remove strings that are no longer used!
 // android specific strings, developers: please take care to remove strings that are no longer used!
 // this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
 // this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
 "device_talk_background_connection_android" = "Je hebt wellicht al gemerkt dat er een systeemmelding \'Achtergrondverbinding ingeschakeld\' wordt getoond.\n\n👉 Deze melding voorkomt dat het systeem de verbinding tussen Delta Chat en je server verbreekt.\n\n👉 Als de melding zomaar verdwijnt, dan is de verbinding waarschijnlijk verbroken.\nVind je dat vreemd? Wij ook. Maar helaas doen sommige fabrikanten dit. Op de website https://dontkillmyapp.com vind je mogelijke oplossingen hiervoor.\n\nDesalniettemin zijn we blij dat we op deze manier het ophalen van berichten op de achtergrond hebben verbeterd en daarmee een grote gebruikerswens in vervulling hebben laten gaan. Bedankt voor alle steun 🤗";
 "device_talk_background_connection_android" = "Je hebt wellicht al gemerkt dat er een systeemmelding \'Achtergrondverbinding ingeschakeld\' wordt getoond.\n\n👉 Deze melding voorkomt dat het systeem de verbinding tussen Delta Chat en je server verbreekt.\n\n👉 Als de melding zomaar verdwijnt, dan is de verbinding waarschijnlijk verbroken.\nVind je dat vreemd? Wij ook. Maar helaas doen sommige fabrikanten dit. Op de website https://dontkillmyapp.com vind je mogelijke oplossingen hiervoor.\n\nDesalniettemin zijn we blij dat we op deze manier het ophalen van berichten op de achtergrond hebben verbeterd en daarmee een grote gebruikerswens in vervulling hebben laten gaan. Bedankt voor alle steun 🤗";
+"device_talk_background_connection2_android" = "Je kunt vanaf nu de achtergrondverbinding in- en uitschakelen via \'Instellingen --> Meldingen\'.";
 
 
 
 

+ 4 - 4
deltachat-ios/pl.lproj/Localizable.strings

@@ -234,7 +234,7 @@
 // search
 // search
 "search" = "Szukaj";
 "search" = "Szukaj";
 "search_explain" = "Wyszukaj czaty, kontakty i wiadomości";
 "search_explain" = "Wyszukaj czaty, kontakty i wiadomości";
-"search_no_result_for_x" = "Nie znaleziono wyników dla „%s";
+"search_no_result_for_x" = "Nie znaleziono wyników dla „%1$@";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -307,8 +307,8 @@
 
 
 
 
 // preferences
 // preferences
-"pref_using_custom" = "Używanie niestandardowe: %s";
-"pref_using_default" = "Użyj domyślne: %s";
+"pref_using_custom" = "Używanie niestandardowe: %1$@";
+"pref_using_default" = "Użyj domyślne: %1$@";
 "pref_profile_info_headline" = "Twój profil";
 "pref_profile_info_headline" = "Twój profil";
 "pref_profile_photo" = "Zdjęcie profilowe";
 "pref_profile_photo" = "Zdjęcie profilowe";
 "pref_blocked_contacts" = "Zablokowane kontakty";
 "pref_blocked_contacts" = "Zablokowane kontakty";
@@ -482,7 +482,7 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%1$d nowe wiadomości w %2$d czatach";
 "notify_n_messages_in_m_chats" = "%1$d nowe wiadomości w %2$d czatach";
 "notify_most_recent_from" = "Najnowsze z: %1$@";
 "notify_most_recent_from" = "Najnowsze z: %1$@";
-"notify_media_message_with_text" = "Wiadomość multimedialna: %s";
+"notify_media_message_with_text" = "Wiadomość multimedialna: %1$@";
 "notify_mark_all_read" = "Oznacz wszystkie jako przeczytane";
 "notify_mark_all_read" = "Oznacz wszystkie jako przeczytane";
 "notify_mark_read" = "Oznacz jako przeczytane";
 "notify_mark_read" = "Oznacz jako przeczytane";
 "notify_media_message" = "Wiadomość multimedialna";
 "notify_media_message" = "Wiadomość multimedialna";

+ 4 - 4
deltachat-ios/pt-BR.lproj/Localizable.strings

@@ -220,7 +220,7 @@
 // search
 // search
 "search" = "Procurar";
 "search" = "Procurar";
 "search_explain" = "Procurar conversas, contatos e mensagens";
 "search_explain" = "Procurar conversas, contatos e mensagens";
-"search_no_result_for_x" = "Nada relativo a \"%s\"";
+"search_no_result_for_x" = "Nada relativo a \"%1$@\"";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -284,8 +284,8 @@
 
 
 
 
 // preferences
 // preferences
-"pref_using_custom" = "Usando personalização: %s";
-"pref_using_default" = "Usando padrão: %s";
+"pref_using_custom" = "Usando personalização: %1$@";
+"pref_using_default" = "Usando padrão: %1$@";
 "pref_profile_info_headline" = "Informações do seu perfil";
 "pref_profile_info_headline" = "Informações do seu perfil";
 "pref_profile_photo" = "Foto do perfil";
 "pref_profile_photo" = "Foto do perfil";
 "pref_blocked_contacts" = "Contatos bloqueados";
 "pref_blocked_contacts" = "Contatos bloqueados";
@@ -449,7 +449,7 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%1$d novas mensagens em %2$d conversas";
 "notify_n_messages_in_m_chats" = "%1$d novas mensagens em %2$d conversas";
 "notify_most_recent_from" = "Mais recentes de: %1$@";
 "notify_most_recent_from" = "Mais recentes de: %1$@";
-"notify_media_message_with_text" = "Mensagens de mídia: %s";
+"notify_media_message_with_text" = "Mensagens de mídia: %1$@";
 "notify_mark_all_read" = "Marcar todas como lidas";
 "notify_mark_all_read" = "Marcar todas como lidas";
 "notify_mark_read" = "Marcar como lida";
 "notify_mark_read" = "Marcar como lida";
 "notify_media_message" = "Mensagem de mídia";
 "notify_media_message" = "Mensagem de mídia";

+ 4 - 4
deltachat-ios/pt-PT.lproj/Localizable.strings

@@ -160,7 +160,7 @@
 // search
 // search
 "search" = "Pesquisar";
 "search" = "Pesquisar";
 "search_explain" = "Pesquisar chats, contactos, emensagens";
 "search_explain" = "Pesquisar chats, contactos, emensagens";
-"search_no_result_for_x" = "Nenhum resultado encontrado para \"%s\"";
+"search_no_result_for_x" = "Nenhum resultado encontrado para \"%1$@\"";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -209,8 +209,8 @@
 // Translators: Title shown above a chat/contact list; the user selects the recipient of the messages he wants to forward to
 // Translators: Title shown above a chat/contact list; the user selects the recipient of the messages he wants to forward to
 "forward_to" = "Reencaminhar ...";
 "forward_to" = "Reencaminhar ...";
 // preferences
 // preferences
-"pref_using_custom" = "Utilizando personalizado %s";
-"pref_using_default" = "Utilizando padrão: %s";
+"pref_using_custom" = "Utilizando personalizado %1$@";
+"pref_using_default" = "Utilizando padrão: %1$@";
 "pref_profile_info_headline" = "O seu perfil";
 "pref_profile_info_headline" = "O seu perfil";
 "pref_profile_photo" = "Foto do perfil";
 "pref_profile_photo" = "Foto do perfil";
 "pref_blocked_contacts" = "Bloquear contactos";
 "pref_blocked_contacts" = "Bloquear contactos";
@@ -357,7 +357,7 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%1$d novas mensagens em %2$d chats";
 "notify_n_messages_in_m_chats" = "%1$d novas mensagens em %2$d chats";
 "notify_most_recent_from" = "Mais recentes de: %1$@";
 "notify_most_recent_from" = "Mais recentes de: %1$@";
-"notify_media_message_with_text" = "Mensagem de mídia: %s";
+"notify_media_message_with_text" = "Mensagem de mídia: %1$@";
 "notify_mark_all_read" = "Marcar tudo como lido";
 "notify_mark_all_read" = "Marcar tudo como lido";
 "notify_mark_read" = "Marcar lido";
 "notify_mark_read" = "Marcar lido";
 "notify_media_message" = "Mensagem de mídia";
 "notify_media_message" = "Mensagem de mídia";

+ 6 - 5
deltachat-ios/ru.lproj/Localizable.strings

@@ -240,7 +240,7 @@
 // search
 // search
 "search" = "Поиск";
 "search" = "Поиск";
 "search_explain" = "Поиск чатов, контактов и сообщений";
 "search_explain" = "Поиск чатов, контактов и сообщений";
-"search_no_result_for_x" = "Ничего не найдено по запросу «%s» ";
+"search_no_result_for_x" = "Ничего не найдено по запросу «%1$@» ";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -320,8 +320,8 @@
 
 
 
 
 // preferences
 // preferences
-"pref_using_custom" = "Использовать персонализованно: %s";
-"pref_using_default" = "Использовать по умолчанию: %s";
+"pref_using_custom" = "Использовать персонализованно: %1$@";
+"pref_using_default" = "Использовать по умолчанию: %1$@";
 "pref_profile_info_headline" = "Личный профиль";
 "pref_profile_info_headline" = "Личный профиль";
 "pref_profile_photo" = "Фото профиля";
 "pref_profile_photo" = "Фото профиля";
 "pref_blocked_contacts" = "Заблокированные контакты";
 "pref_blocked_contacts" = "Заблокированные контакты";
@@ -423,7 +423,7 @@
 "pref_background_custom_image" = "Пользовательское изображение";
 "pref_background_custom_image" = "Пользовательское изображение";
 "pref_background_custom_color" = "Пользовательский цвет";
 "pref_background_custom_color" = "Пользовательский цвет";
 // disabling "Reliable service" will hide a the maybe annoying permanent-notification with the drawback that new-message-notifications get potentially unreliable
 // disabling "Reliable service" will hide a the maybe annoying permanent-notification with the drawback that new-message-notifications get potentially unreliable
-"pref_reliable_service" = "Надежное фоновое соединение";
+"pref_reliable_service" = "Надёжное фоновое соединение";
 "pref_reliable_service_explain" = "Требует постоянного уведомления";
 "pref_reliable_service_explain" = "Требует постоянного уведомления";
 
 
 
 
@@ -524,7 +524,7 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%1$d новых сообщений в %2$d чатах.";
 "notify_n_messages_in_m_chats" = "%1$d новых сообщений в %2$d чатах.";
 "notify_most_recent_from" = "Последнее от: %1$@";
 "notify_most_recent_from" = "Последнее от: %1$@";
-"notify_media_message_with_text" = "Медиа-сообщение: %s";
+"notify_media_message_with_text" = "Медиа-сообщение: %1$@";
 "notify_mark_all_read" = "Отметить всё как прочитанное";
 "notify_mark_all_read" = "Отметить всё как прочитанное";
 "notify_mark_read" = "Отметить как прочитанное";
 "notify_mark_read" = "Отметить как прочитанное";
 "notify_media_message" = "Медиа-сообщение";
 "notify_media_message" = "Медиа-сообщение";
@@ -643,5 +643,6 @@
 // android specific strings, developers: please take care to remove strings that are no longer used!
 // android specific strings, developers: please take care to remove strings that are no longer used!
 // this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
 // this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
 "device_talk_background_connection_android" = "Как вы уже могли заметить, система теперь отображает уведомление «Соединение в фоновом режиме включено».\n\n👉 Это уведомление предотвращает остановку соединения между Delta Chat и вашим сервером операционной системой.\n\n👉 Если уведомление исчезает без каких-либо действий с вашей стороны, значит соединение все равно было остановлено\nЕсли вы считаете, что это странно — мы полностью согласны — но многие производители телефонов требуют именно этого. Сайт https://dontkillmyapp.com показывает некоторые обходные пути.\n\nТем не менее, мы рады, что нам удалось улучшить доставку сообщений в фоне с помощью этого изменения и удовлетворить пожелания многих пользователей — спасибо за сообщения об ошибках. 🤗";
 "device_talk_background_connection_android" = "Как вы уже могли заметить, система теперь отображает уведомление «Соединение в фоновом режиме включено».\n\n👉 Это уведомление предотвращает остановку соединения между Delta Chat и вашим сервером операционной системой.\n\n👉 Если уведомление исчезает без каких-либо действий с вашей стороны, значит соединение все равно было остановлено\nЕсли вы считаете, что это странно — мы полностью согласны — но многие производители телефонов требуют именно этого. Сайт https://dontkillmyapp.com показывает некоторые обходные пути.\n\nТем не менее, мы рады, что нам удалось улучшить доставку сообщений в фоне с помощью этого изменения и удовлетворить пожелания многих пользователей — спасибо за сообщения об ошибках. 🤗";
+"device_talk_background_connection2_android" = "Теперь вы можете включать и отключать «Фоновое соединение» по мере необходимости в «Настройках» → «Уведомления».";
 
 
 
 

+ 5 - 4
deltachat-ios/sq.lproj/Localizable.strings

@@ -240,7 +240,7 @@
 // search
 // search
 "search" = "Kërko";
 "search" = "Kërko";
 "search_explain" = "Kërkoni për fjalosje, kontakte dhe mesazhe.";
 "search_explain" = "Kërkoni për fjalosje, kontakte dhe mesazhe.";
-"search_no_result_for_x" = "S\’u gjetën përfundime për \"%s\"";
+"search_no_result_for_x" = "S\’u gjetën përfundime për \"%1$@\"";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -320,8 +320,8 @@
 
 
 
 
 // preferences
 // preferences
-"pref_using_custom" = "Po përdoret vetjak: %s";
-"pref_using_default" = "Po përdoret parazgjedhje: %s";
+"pref_using_custom" = "Po përdoret vetjak: %1$@";
+"pref_using_default" = "Po përdoret parazgjedhje: %1$@";
 "pref_profile_info_headline" = "Të dhëna tuajat të profilit";
 "pref_profile_info_headline" = "Të dhëna tuajat të profilit";
 "pref_profile_photo" = "Foto profili";
 "pref_profile_photo" = "Foto profili";
 "pref_blocked_contacts" = "Kontakte të bllokuar";
 "pref_blocked_contacts" = "Kontakte të bllokuar";
@@ -523,7 +523,7 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%1$d mesazhe të rinj në %2$d fjalosje";
 "notify_n_messages_in_m_chats" = "%1$d mesazhe të rinj në %2$d fjalosje";
 "notify_most_recent_from" = "Më të rejat nga: %1$@";
 "notify_most_recent_from" = "Më të rejat nga: %1$@";
-"notify_media_message_with_text" = "Mesazh media: %s";
+"notify_media_message_with_text" = "Mesazh media: %1$@";
 "notify_mark_all_read" = "Vëru shenjë të tërave si të lexuar";
 "notify_mark_all_read" = "Vëru shenjë të tërave si të lexuar";
 "notify_mark_read" = "Vëri shenjë si i lexuar";
 "notify_mark_read" = "Vëri shenjë si i lexuar";
 "notify_media_message" = "Mesazh media";
 "notify_media_message" = "Mesazh media";
@@ -642,5 +642,6 @@
 // android specific strings, developers: please take care to remove strings that are no longer used!
 // android specific strings, developers: please take care to remove strings that are no longer used!
 // this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
 // this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
 "device_talk_background_connection_android" = "Mund të keni vënë re tashmë se ka një ndihmëz \"Lidhje në prapaskenë e aktivizuar\" shfaqur nga sistemi.\n\n👉 Normalisht ndihmëza shërben për te penguar sistemin operativ të asgjësojë lidhjen mes Delta Chat-it dhe shërbyesin tuaj.\n\n👉 Nëse ndihmëza zhduket pa ndonjë veprim nga ana juaj, lidhja ka mundësi të jetë asgjësuar.\nNëse kjo ju duket e çuditshme - pajtohemi me ju plotësisht - por prodhuesit e telefonave bëjnë pikërisht këtë. Sajti https://dontkillmyapp.com tregon disa zgjidhje prej halli.\n\nSidoqoftë, jemi të lumtur që me këtë ndryshim mund të përmirësojmë marrjen e mesazheve në prapaskenë dhe mund të plotësojmë kërkesat e mjaft përdoruesve - faleminderit që e keni kërkuar 🤗";
 "device_talk_background_connection_android" = "Mund të keni vënë re tashmë se ka një ndihmëz \"Lidhje në prapaskenë e aktivizuar\" shfaqur nga sistemi.\n\n👉 Normalisht ndihmëza shërben për te penguar sistemin operativ të asgjësojë lidhjen mes Delta Chat-it dhe shërbyesin tuaj.\n\n👉 Nëse ndihmëza zhduket pa ndonjë veprim nga ana juaj, lidhja ka mundësi të jetë asgjësuar.\nNëse kjo ju duket e çuditshme - pajtohemi me ju plotësisht - por prodhuesit e telefonave bëjnë pikërisht këtë. Sajti https://dontkillmyapp.com tregon disa zgjidhje prej halli.\n\nSidoqoftë, jemi të lumtur që me këtë ndryshim mund të përmirësojmë marrjen e mesazheve në prapaskenë dhe mund të plotësojmë kërkesat e mjaft përdoruesve - faleminderit që e keni kërkuar 🤗";
+"device_talk_background_connection2_android" = "Tanimë mund të aktivizoni dhe çaktivizoni \"Lidhje në prapaskenë\" sipas nevojës, te \"Rregullime / Njoftime\".";
 
 
 
 

+ 9 - 8
deltachat-ios/sv.lproj/Localizable.strings

@@ -127,7 +127,7 @@
 "menu_forward" = "Vidarebefordra meddelande";
 "menu_forward" = "Vidarebefordra meddelande";
 "menu_resend" = "Skicka om meddelandet";
 "menu_resend" = "Skicka om meddelandet";
 "menu_reply" = "Svara på meddelandet";
 "menu_reply" = "Svara på meddelandet";
-"menu_mute" = "Stäng av aviseringar";
+"menu_mute" = "Stäng av avisering";
 "menu_unmute" = "Slå på";
 "menu_unmute" = "Slå på";
 "menu_export_attachment" = "Exportera bilaga";
 "menu_export_attachment" = "Exportera bilaga";
 "menu_all_media" = "All media";
 "menu_all_media" = "All media";
@@ -191,7 +191,7 @@
 "ask_delete_contacts" = "Ta bort kontakter? Detta kommer att ta bort de valda kontakterna permanent.\n\nKontakter med pågående chattar och kontakter från systemets adressbok kan inte tas bort permanent.";
 "ask_delete_contacts" = "Ta bort kontakter? Detta kommer att ta bort de valda kontakterna permanent.\n\nKontakter med pågående chattar och kontakter från systemets adressbok kan inte tas bort permanent.";
 "ask_delete_contact" = "Ta bort kontakten %1$@?\n\nKontakter med pågående chattar och kontakter från systemets adressbok kan inte tas bort permanent. ";
 "ask_delete_contact" = "Ta bort kontakten %1$@?\n\nKontakter med pågående chattar och kontakter från systemets adressbok kan inte tas bort permanent. ";
 "cannot_delete_contacts_in_use" = "Det går inte att ta bort kontakter med pågående chattar.";
 "cannot_delete_contacts_in_use" = "Det går inte att ta bort kontakter med pågående chattar.";
-"ask_start_chat_with" = "Chatta med%1$@ ?";
+"ask_start_chat_with" = "Chatta med %1$@ ?";
 // Translators: %1$s will be replaces by a comma separated list of names
 // Translators: %1$s will be replaces by a comma separated list of names
 "ask_remove_members" = "Ta bort %1$@ från gruppen?";
 "ask_remove_members" = "Ta bort %1$@ från gruppen?";
 "info_outdated_app_title" = "Din appversion är för gammal.";
 "info_outdated_app_title" = "Din appversion är för gammal.";
@@ -240,7 +240,7 @@
 // search
 // search
 "search" = "Sök";
 "search" = "Sök";
 "search_explain" = "Sök efter chattar, kontakter och meddelanden";
 "search_explain" = "Sök efter chattar, kontakter och meddelanden";
-"search_no_result_for_x" = "Inga resultat hittades för \" %s \"";
+"search_no_result_for_x" = "Inga resultat hittades för \" %1$@ \"";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -320,8 +320,8 @@
 
 
 
 
 // preferences
 // preferences
-"pref_using_custom" = "Använder anpassat: %s";
-"pref_using_default" = "Använder standard: %s";
+"pref_using_custom" = "Använder anpassat: %1$@";
+"pref_using_default" = "Använder standard: %1$@";
 "pref_profile_info_headline" = "Din profilinformation";
 "pref_profile_info_headline" = "Din profilinformation";
 "pref_profile_photo" = "Profilbild";
 "pref_profile_photo" = "Profilbild";
 "pref_blocked_contacts" = "Blockerade kontakter";
 "pref_blocked_contacts" = "Blockerade kontakter";
@@ -348,7 +348,7 @@
 // Translators: The wording must indicate that we can't guarantee that, its a System flag that we set. But the System in question must honor it.
 // Translators: The wording must indicate that we can't guarantee that, its a System flag that we set. But the System in question must honor it.
 "pref_screen_security_explain" = "Blockera skärmklipp i tidigare-listan samt inuti programmet";
 "pref_screen_security_explain" = "Blockera skärmklipp i tidigare-listan samt inuti programmet";
 "pref_screen_security_please_restart_hint" = "Starta om programmet för att tillämpa skärmsäkerhetsinställningarna";
 "pref_screen_security_please_restart_hint" = "Starta om programmet för att tillämpa skärmsäkerhetsinställningarna";
-"pref_notifications" = "Aviseringar";
+"pref_notifications" = "Avisering";
 "pref_notifications_show" = "Visa";
 "pref_notifications_show" = "Visa";
 "pref_notifications_priority" = "Prioritet";
 "pref_notifications_priority" = "Prioritet";
 "pref_led_color" = "Färg på ljusindikator";
 "pref_led_color" = "Färg på ljusindikator";
@@ -424,7 +424,7 @@
 "pref_background_custom_color" = "Anpassad färg";
 "pref_background_custom_color" = "Anpassad färg";
 // disabling "Reliable service" will hide a the maybe annoying permanent-notification with the drawback that new-message-notifications get potentially unreliable
 // disabling "Reliable service" will hide a the maybe annoying permanent-notification with the drawback that new-message-notifications get potentially unreliable
 "pref_reliable_service" = "Tillförlitlig bakgrundsanslutning";
 "pref_reliable_service" = "Tillförlitlig bakgrundsanslutning";
-"pref_reliable_service_explain" = "Kräver en permanent avisering";
+"pref_reliable_service_explain" = "Kräver permanent avisering";
 
 
 
 
 // automatically delete message
 // automatically delete message
@@ -524,7 +524,7 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%1$d nya meddelanden i %2$d chattar";
 "notify_n_messages_in_m_chats" = "%1$d nya meddelanden i %2$d chattar";
 "notify_most_recent_from" = "Senast från: %1$@";
 "notify_most_recent_from" = "Senast från: %1$@";
-"notify_media_message_with_text" = "Mediameddelande: %s";
+"notify_media_message_with_text" = "Mediameddelande: %1$@";
 "notify_mark_all_read" = "Markera alla som lästa";
 "notify_mark_all_read" = "Markera alla som lästa";
 "notify_mark_read" = "Läst";
 "notify_mark_read" = "Läst";
 "notify_media_message" = "Multimediameddelande";
 "notify_media_message" = "Multimediameddelande";
@@ -643,5 +643,6 @@
 // android specific strings, developers: please take care to remove strings that are no longer used!
 // android specific strings, developers: please take care to remove strings that are no longer used!
 // this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
 // this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
 "device_talk_background_connection_android" = "Du kanske redan har märkt att det finns ett tips, \"Bakgrundsanslutning aktiverad\" som visas av systemet.\n\n👉 Tipset förhindrar normalt att operativsystemet dödar anslutningen mellan Delta Chat och din server.\n\n👉 Om tipset försvinner utan någon åtgärd från din sida, har anslutningen förmodligen dödats ändå.\nOm du tycker att detta är konstigt, är vi helt överens men många tillverkare gör just så. Webbplatsen https://dontkillmyapp.com visar några lösningar.\n\nVi är dock glada att vi kunde förbättra mottagandet av meddelanden i bakgrunden, med denna förändring, och att vi kunde uppfylla önskemålen från många användare. Tack för rapporteringen! 🤗";
 "device_talk_background_connection_android" = "Du kanske redan har märkt att det finns ett tips, \"Bakgrundsanslutning aktiverad\" som visas av systemet.\n\n👉 Tipset förhindrar normalt att operativsystemet dödar anslutningen mellan Delta Chat och din server.\n\n👉 Om tipset försvinner utan någon åtgärd från din sida, har anslutningen förmodligen dödats ändå.\nOm du tycker att detta är konstigt, är vi helt överens men många tillverkare gör just så. Webbplatsen https://dontkillmyapp.com visar några lösningar.\n\nVi är dock glada att vi kunde förbättra mottagandet av meddelanden i bakgrunden, med denna förändring, och att vi kunde uppfylla önskemålen från många användare. Tack för rapporteringen! 🤗";
+"device_talk_background_connection2_android" = "Nu kan du aktivera och avaktivera \"Bakgrundsanslutning\" efter behov, i \"Inställningar / Avisering\".";
 
 
 
 

+ 6 - 5
deltachat-ios/tr.lproj/Localizable.strings

@@ -240,7 +240,7 @@
 // search
 // search
 "search" = "Ara";
 "search" = "Ara";
 "search_explain" = "Sohbetleri, kişileri ve iletileri ara";
 "search_explain" = "Sohbetleri, kişileri ve iletileri ara";
-"search_no_result_for_x" = "\"%s\" için sonuç bulunamadı";
+"search_no_result_for_x" = "\"%1$@\" için sonuç bulunamadı";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -267,7 +267,7 @@
 
 
 
 
 // welcome and login
 // welcome and login
-"welcome_intro1_message" = "Dünyanın en geniş kitleli ulağı. Özgür ve bağımsızdır.";
+"welcome_intro1_message" = "Dünyanın en geniş kitleli ulağı. Özgür ve bağımsız.";
 "welcome_start_messaging" = "İletileşmeye başla";
 "welcome_start_messaging" = "İletileşmeye başla";
 "login_title" = "Oturum aç";
 "login_title" = "Oturum aç";
 "login_header" = "Sunucunuzda oturum açın";
 "login_header" = "Sunucunuzda oturum açın";
@@ -320,8 +320,8 @@
 
 
 
 
 // preferences
 // preferences
-"pref_using_custom" = "Özel kullanılıyor: %s";
-"pref_using_default" = "Varsayılan kullanılıyor: %s";
+"pref_using_custom" = "Özel kullanılıyor: %1$@";
+"pref_using_default" = "Varsayılan kullanılıyor: %1$@";
 "pref_profile_info_headline" = "Profil bilginiz";
 "pref_profile_info_headline" = "Profil bilginiz";
 "pref_profile_photo" = "Profil resmi";
 "pref_profile_photo" = "Profil resmi";
 "pref_blocked_contacts" = "Engellenen kişiler";
 "pref_blocked_contacts" = "Engellenen kişiler";
@@ -524,7 +524,7 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%2$d sohbette %1$d yeni ileti";
 "notify_n_messages_in_m_chats" = "%2$d sohbette %1$d yeni ileti";
 "notify_most_recent_from" = "Şundan en yeni: %1$@";
 "notify_most_recent_from" = "Şundan en yeni: %1$@";
-"notify_media_message_with_text" = "Ortam iletisi: %s";
+"notify_media_message_with_text" = "Ortam iletisi: %1$@";
 "notify_mark_all_read" = "Tümünü okundu olarak imle";
 "notify_mark_all_read" = "Tümünü okundu olarak imle";
 "notify_mark_read" = "Okundu imi";
 "notify_mark_read" = "Okundu imi";
 "notify_media_message" = "Ortam iletisi";
 "notify_media_message" = "Ortam iletisi";
@@ -643,5 +643,6 @@
 // android specific strings, developers: please take care to remove strings that are no longer used!
 // android specific strings, developers: please take care to remove strings that are no longer used!
 // this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
 // this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
 "device_talk_background_connection_android" = "Sistem tarafından gösterilen bir \"Arka plan bağlantısı etkinleştirildi\" ipucu olduğunu zaten fark etmiş olabilirsiniz.\n\n👉 İpucu, normal olarak işletim sisteminin Delta Chat ve sunucunuz arasındaki bağlantıyı öldürmesini önler.\n\n👉 İpucu, tarafınızda herhangi bir eylem olmadan kaybolursa, bağlantı belki de öldürülmüştür.\nBunun olmaması gerektiğini düşünüyorsanız, genelde buna katılırız - ama çoğu üretici tam olarak bunu yapar. https://dontkillmyapp.com sitesi, bazı geçici çözümleri gösterir.\n\nBununla birlikte, bu değişiklikle arka planda iletilerin alınmasını iyileştirebildiğimiz ve çoğu kullanıcının isteklerini yerine getirebildiğimiz için mutluyuz - raporlama için teşekkürler 🤗";
 "device_talk_background_connection_android" = "Sistem tarafından gösterilen bir \"Arka plan bağlantısı etkinleştirildi\" ipucu olduğunu zaten fark etmiş olabilirsiniz.\n\n👉 İpucu, normal olarak işletim sisteminin Delta Chat ve sunucunuz arasındaki bağlantıyı öldürmesini önler.\n\n👉 İpucu, tarafınızda herhangi bir eylem olmadan kaybolursa, bağlantı belki de öldürülmüştür.\nBunun olmaması gerektiğini düşünüyorsanız, genelde buna katılırız - ama çoğu üretici tam olarak bunu yapar. https://dontkillmyapp.com sitesi, bazı geçici çözümleri gösterir.\n\nBununla birlikte, bu değişiklikle arka planda iletilerin alınmasını iyileştirebildiğimiz ve çoğu kullanıcının isteklerini yerine getirebildiğimiz için mutluyuz - raporlama için teşekkürler 🤗";
+"device_talk_background_connection2_android" = "Artık \"Ayarlar / Bildirimler\"den \"Arka plan bağlantısı\"nı gerektiğinde etkinleştirebilir ve etkisizleştirebilirsiniz.";
 
 
 
 

+ 4 - 4
deltachat-ios/uk.lproj/Localizable.strings

@@ -155,7 +155,7 @@
 // search
 // search
 "search" = "Пошук";
 "search" = "Пошук";
 "search_explain" = "Пошук чатів, контактів і повідомлень";
 "search_explain" = "Пошук чатів, контактів і повідомлень";
-"search_no_result_for_x" = "Запит «%s» не дав результатів";
+"search_no_result_for_x" = "Запит «%1$@» не дав результатів";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -205,8 +205,8 @@
 // Translators: Title shown above a chat/contact list; the user selects the recipient of the messages he wants to forward to
 // Translators: Title shown above a chat/contact list; the user selects the recipient of the messages he wants to forward to
 "forward_to" = "Переслати...";
 "forward_to" = "Переслати...";
 // preferences
 // preferences
-"pref_using_custom" = "Використовувати персоналізовано: %s";
-"pref_using_default" = "Використовувати за замовчуванням: %s";
+"pref_using_custom" = "Використовувати персоналізовано: %1$@";
+"pref_using_default" = "Використовувати за замовчуванням: %1$@";
 "pref_profile_info_headline" = "Ваш профіль";
 "pref_profile_info_headline" = "Ваш профіль";
 "pref_profile_photo" = "Фото профілю";
 "pref_profile_photo" = "Фото профілю";
 "pref_blocked_contacts" = "Заблоковані контакти";
 "pref_blocked_contacts" = "Заблоковані контакти";
@@ -355,7 +355,7 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%1$d нових повідомлень з %2$d чатів";
 "notify_n_messages_in_m_chats" = "%1$d нових повідомлень з %2$d чатів";
 "notify_most_recent_from" = "Останнє від: %1$@";
 "notify_most_recent_from" = "Останнє від: %1$@";
-"notify_media_message_with_text" = "Медіа-повідомлення: %s";
+"notify_media_message_with_text" = "Медіа-повідомлення: %1$@";
 "notify_mark_all_read" = "Позначити все як прочитане";
 "notify_mark_all_read" = "Позначити все як прочитане";
 "notify_mark_read" = "Позначити прочитаним";
 "notify_mark_read" = "Позначити прочитаним";
 "notify_media_message" = "Медіа-повідомлення";
 "notify_media_message" = "Медіа-повідомлення";

+ 3 - 3
deltachat-ios/zh-Hant-TW.lproj/Localizable.strings

@@ -192,7 +192,7 @@
 // search
 // search
 "search" = "搜尋";
 "search" = "搜尋";
 "search_explain" = "搜尋對話紀錄、聯絡人以及訊息";
 "search_explain" = "搜尋對話紀錄、聯絡人以及訊息";
-"search_no_result_for_x" = "找不到 %s";
+"search_no_result_for_x" = "找不到 %1$@";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -256,8 +256,8 @@
 
 
 
 
 // preferences
 // preferences
-"pref_using_custom" = "使用自訂值: %s";
-"pref_using_default" = "使用預設值: %s";
+"pref_using_custom" = "使用自訂值: %1$@";
+"pref_using_default" = "使用預設值: %1$@";
 "pref_profile_info_headline" = "你的個人資料";
 "pref_profile_info_headline" = "你的個人資料";
 "pref_profile_photo" = "大頭照";
 "pref_profile_photo" = "大頭照";
 "pref_blocked_contacts" = "已封鎖的聯絡人";
 "pref_blocked_contacts" = "已封鎖的聯絡人";

+ 10 - 4
deltachat-ios/zh-Hant.lproj/Localizable.strings

@@ -240,7 +240,7 @@
 // search
 // search
 "search" = "搜索";
 "search" = "搜索";
 "search_explain" = "搜索聊天、联系人和消息";
 "search_explain" = "搜索聊天、联系人和消息";
-"search_no_result_for_x" = "没有找到有关\"%s\"的结果";
+"search_no_result_for_x" = "没有找到有关\"%1$@\"的结果";
 
 
 
 
 // create/edit groups, contact/group profile
 // create/edit groups, contact/group profile
@@ -320,8 +320,8 @@
 
 
 
 
 // preferences
 // preferences
-"pref_using_custom" = "使用自定义: %s";
-"pref_using_default" = "使用默认: %s";
+"pref_using_custom" = "使用自定义: %1$@";
+"pref_using_default" = "使用默认: %1$@";
 "pref_profile_info_headline" = "您的个人资料";
 "pref_profile_info_headline" = "您的个人资料";
 "pref_profile_photo" = "个人资料图片";
 "pref_profile_photo" = "个人资料图片";
 "pref_blocked_contacts" = "已屏蔽联系人";
 "pref_blocked_contacts" = "已屏蔽联系人";
@@ -524,7 +524,7 @@
 // notifications 
 // notifications 
 "notify_n_messages_in_m_chats" = "%2$d 个聊天中有 %1$d 条新消息";
 "notify_n_messages_in_m_chats" = "%2$d 个聊天中有 %1$d 条新消息";
 "notify_most_recent_from" = "最新来自: %1$@";
 "notify_most_recent_from" = "最新来自: %1$@";
-"notify_media_message_with_text" = "媒体消息: %s";
+"notify_media_message_with_text" = "媒体消息: %1$@";
 "notify_mark_all_read" = "将所有标记为已读";
 "notify_mark_all_read" = "将所有标记为已读";
 "notify_mark_read" = "标记为已读";
 "notify_mark_read" = "标记为已读";
 "notify_media_message" = "媒体消息";
 "notify_media_message" = "媒体消息";
@@ -640,3 +640,9 @@
 // iOS permissions, copy from "deltachat-ios/Info.plist", which is used on missing translations in "deltachat-ios/LANG.lproj/InfoPlist.strings"
 // iOS permissions, copy from "deltachat-ios/Info.plist", which is used on missing translations in "deltachat-ios/LANG.lproj/InfoPlist.strings"
 
 
 
 
+// android specific strings, developers: please take care to remove strings that are no longer used!
+// this message is shown in the device chat, starting in version 1.6, it should explain the need for the permanent-notifiation and also use the same wording as used there (see "Background connection enabled")
+"device_talk_background_connection_android" = "您可能已经注意到了,系统显示了“后台连接已启用”的提示。\n\n👉通常,该提示可防止操作系统终止 Delta Chat 与您的服务器之间的连接。\n\n👉如果您没有采取任何行动而提示消失了,则连接可能已被终止。\n如果您认为这很奇怪,我们完全同意——但许多制造商确实是这么做的。网站 https://dontkillmyapp.com 给出了一些解决办法。\n\n不过,我们很高兴可以通过此更改改善后台的消息接收并能满足许多用户的请求——感谢您的报告🤗";
+"device_talk_background_connection2_android" = "现在,您可以根据需要在“设置/通知”中启用或禁用“后台连接”。";
+
+

+ 16 - 7
tools/convertTranslations.js

@@ -21,13 +21,22 @@ function parseAndroid(data) {
   for (let line of lines) {
   for (let line of lines) {
     let kv = line.match(rgxKeyValue);
     let kv = line.match(rgxKeyValue);
     if (kv != null) {
     if (kv != null) {
-      result.parsed.push([kv[1], kv[2].
-        replace(/([^\\])(")/g, '$1\\$2').
-        replace(/&quot;/g, '\\"').
-        replace(/&lt;/g, '<').
-        replace(/&gt;/g, '>').
-        replace(/&amp;/g, '&').
-        replace(/\$s/ig, '$@')])
+      value = kv[2].
+      replace(/([^\\])(")/g, '$1\\$2').
+      replace(/&quot;/g, '\\"').
+      replace(/&lt;/g, '<').
+      replace(/&gt;/g, '>').
+      replace(/&amp;/g, '&').
+      replace(/\$s/ig, '$@').
+      replace(/\%s/ig, '%1$@')
+
+      let countOfPlaceholders = (value.match(/\%1\$\@/g) || []).length
+      if (countOfPlaceholders > 1) {
+        console.error("\n\n\n ERROR: Placeholder mismatch. A source file contained '%s' and '%1$s' in the same resource which we are not willing to fix automatically. Please fix the input source on tranisfex first! \n\n\n")
+        continue;
+      }
+
+      result.parsed.push([kv[1], value])
       continue;
       continue;
     }
     }