Browse Source

Added basic log

main
M66B 5 years ago
parent
commit
2403be2231
48 changed files with 1577 additions and 178 deletions
  1. +891
    -0
      app/schemas/eu.faircode.email.DB/7.json
  2. +162
    -0
      app/src/main/java/eu/faircode/email/AdapterLog.java
  3. +12
    -1
      app/src/main/java/eu/faircode/email/DB.java
  4. +36
    -0
      app/src/main/java/eu/faircode/email/DaoLog.java
  5. +64
    -0
      app/src/main/java/eu/faircode/email/EntityLog.java
  6. +17
    -2
      app/src/main/java/eu/faircode/email/FragmentAbout.java
  7. +91
    -0
      app/src/main/java/eu/faircode/email/FragmentLogs.java
  8. +20
    -5
      app/src/main/java/eu/faircode/email/ServiceSynchronize.java
  9. +14
    -1
      app/src/main/res/layout/fragment_about.xml
  10. +36
    -0
      app/src/main/res/layout/fragment_logs.xml
  11. +28
    -0
      app/src/main/res/layout/item_log.xml
  12. +1
    -0
      app/src/main/res/values-af/strings.xml
  13. +1
    -0
      app/src/main/res/values-ar-rBH/strings.xml
  14. +1
    -0
      app/src/main/res/values-ar-rEG/strings.xml
  15. +1
    -0
      app/src/main/res/values-ar-rSA/strings.xml
  16. +1
    -0
      app/src/main/res/values-ar-rYE/strings.xml
  17. +1
    -0
      app/src/main/res/values-ar/strings.xml
  18. +1
    -0
      app/src/main/res/values-ca/strings.xml
  19. +1
    -0
      app/src/main/res/values-cs/strings.xml
  20. +1
    -0
      app/src/main/res/values-da/strings.xml
  21. +3
    -2
      app/src/main/res/values-de/strings.xml
  22. +1
    -0
      app/src/main/res/values-el/strings.xml
  23. +1
    -0
      app/src/main/res/values-en/strings.xml
  24. +1
    -0
      app/src/main/res/values-es-rES/strings.xml
  25. +1
    -0
      app/src/main/res/values-fi/strings.xml
  26. +1
    -0
      app/src/main/res/values-fr/strings.xml
  27. +1
    -0
      app/src/main/res/values-he/strings.xml
  28. +1
    -0
      app/src/main/res/values-hu/strings.xml
  29. +1
    -0
      app/src/main/res/values-it/strings.xml
  30. +1
    -0
      app/src/main/res/values-iw/strings.xml
  31. +1
    -0
      app/src/main/res/values-ja/strings.xml
  32. +1
    -0
      app/src/main/res/values-ko/strings.xml
  33. +1
    -0
      app/src/main/res/values-nb/strings.xml
  34. +1
    -0
      app/src/main/res/values-nl/strings.xml
  35. +1
    -0
      app/src/main/res/values-no/strings.xml
  36. +9
    -8
      app/src/main/res/values-pl/strings.xml
  37. +1
    -0
      app/src/main/res/values-pt-rBR/strings.xml
  38. +1
    -0
      app/src/main/res/values-pt-rPT/strings.xml
  39. +1
    -0
      app/src/main/res/values-ro/strings.xml
  40. +1
    -0
      app/src/main/res/values-ru/strings.xml
  41. +1
    -0
      app/src/main/res/values-sr/strings.xml
  42. +1
    -0
      app/src/main/res/values-sv-rSE/strings.xml
  43. +160
    -159
      app/src/main/res/values-tr/strings.xml
  44. +1
    -0
      app/src/main/res/values-uk/strings.xml
  45. +1
    -0
      app/src/main/res/values-vi/strings.xml
  46. +1
    -0
      app/src/main/res/values-zh-rCN/strings.xml
  47. +1
    -0
      app/src/main/res/values-zh-rTW/strings.xml
  48. +1
    -0
      app/src/main/res/values/strings.xml

+ 891
- 0
app/schemas/eu.faircode.email.DB/7.json View File

@ -0,0 +1,891 @@
{
"formatVersion": 1,
"database": {
"version": 7,
"identityHash": "78658430615109b7c163e62ed1ad0a48",
"entities": [
{
"tableName": "identity",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `name` TEXT NOT NULL, `email` TEXT NOT NULL, `replyto` TEXT, `account` INTEGER NOT NULL, `host` TEXT NOT NULL, `port` INTEGER NOT NULL, `starttls` INTEGER NOT NULL, `user` TEXT NOT NULL, `password` TEXT NOT NULL, `auth_type` INTEGER NOT NULL, `primary` INTEGER NOT NULL, `synchronize` INTEGER NOT NULL, `store_sent` INTEGER NOT NULL, `state` TEXT, `error` TEXT, FOREIGN KEY(`account`) REFERENCES `account`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "email",
"columnName": "email",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "replyto",
"columnName": "replyto",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "account",
"columnName": "account",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "host",
"columnName": "host",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "port",
"columnName": "port",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "starttls",
"columnName": "starttls",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "user",
"columnName": "user",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "password",
"columnName": "password",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "auth_type",
"columnName": "auth_type",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "primary",
"columnName": "primary",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "synchronize",
"columnName": "synchronize",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "store_sent",
"columnName": "store_sent",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [
{
"name": "index_identity_account",
"unique": false,
"columnNames": [
"account"
],
"createSql": "CREATE INDEX `index_identity_account` ON `${TABLE_NAME}` (`account`)"
}
],
"foreignKeys": [
{
"table": "account",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"account"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "account",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `name` TEXT, `host` TEXT NOT NULL, `port` INTEGER NOT NULL, `user` TEXT NOT NULL, `password` TEXT NOT NULL, `auth_type` INTEGER NOT NULL, `primary` INTEGER NOT NULL, `synchronize` INTEGER NOT NULL, `store_sent` INTEGER NOT NULL, `poll_interval` INTEGER NOT NULL, `seen_until` INTEGER, `state` TEXT, `error` TEXT)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "host",
"columnName": "host",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "port",
"columnName": "port",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "user",
"columnName": "user",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "password",
"columnName": "password",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "auth_type",
"columnName": "auth_type",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "primary",
"columnName": "primary",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "synchronize",
"columnName": "synchronize",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "store_sent",
"columnName": "store_sent",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "poll_interval",
"columnName": "poll_interval",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "seen_until",
"columnName": "seen_until",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "folder",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `account` INTEGER, `name` TEXT NOT NULL, `type` TEXT NOT NULL, `synchronize` INTEGER NOT NULL, `after` INTEGER NOT NULL, `state` TEXT, `error` TEXT, FOREIGN KEY(`account`) REFERENCES `account`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "account",
"columnName": "account",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "type",
"columnName": "type",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "synchronize",
"columnName": "synchronize",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "after",
"columnName": "after",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "state",
"columnName": "state",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [
{
"name": "index_folder_account_name",
"unique": true,
"columnNames": [
"account",
"name"
],
"createSql": "CREATE UNIQUE INDEX `index_folder_account_name` ON `${TABLE_NAME}` (`account`, `name`)"
},
{
"name": "index_folder_account",
"unique": false,
"columnNames": [
"account"
],
"createSql": "CREATE INDEX `index_folder_account` ON `${TABLE_NAME}` (`account`)"
},
{
"name": "index_folder_name",
"unique": false,
"columnNames": [
"name"
],
"createSql": "CREATE INDEX `index_folder_name` ON `${TABLE_NAME}` (`name`)"
},
{
"name": "index_folder_type",
"unique": false,
"columnNames": [
"type"
],
"createSql": "CREATE INDEX `index_folder_type` ON `${TABLE_NAME}` (`type`)"
}
],
"foreignKeys": [
{
"table": "account",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"account"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "message",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `account` INTEGER, `folder` INTEGER NOT NULL, `identity` INTEGER, `replying` INTEGER, `uid` INTEGER, `msgid` TEXT, `references` TEXT, `inreplyto` TEXT, `thread` TEXT, `from` TEXT, `to` TEXT, `cc` TEXT, `bcc` TEXT, `reply` TEXT, `subject` TEXT, `sent` INTEGER, `received` INTEGER NOT NULL, `stored` INTEGER NOT NULL, `seen` INTEGER NOT NULL, `ui_seen` INTEGER NOT NULL, `ui_hide` INTEGER NOT NULL, `ui_found` INTEGER NOT NULL, `error` TEXT, FOREIGN KEY(`account`) REFERENCES `account`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`folder`) REFERENCES `folder`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`identity`) REFERENCES `identity`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`replying`) REFERENCES `message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "account",
"columnName": "account",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "folder",
"columnName": "folder",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "identity",
"columnName": "identity",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "replying",
"columnName": "replying",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "uid",
"columnName": "uid",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "msgid",
"columnName": "msgid",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "references",
"columnName": "references",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "inreplyto",
"columnName": "inreplyto",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "thread",
"columnName": "thread",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "from",
"columnName": "from",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "to",
"columnName": "to",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "cc",
"columnName": "cc",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "bcc",
"columnName": "bcc",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "reply",
"columnName": "reply",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "subject",
"columnName": "subject",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "sent",
"columnName": "sent",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "received",
"columnName": "received",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "stored",
"columnName": "stored",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "seen",
"columnName": "seen",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "ui_seen",
"columnName": "ui_seen",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "ui_hide",
"columnName": "ui_hide",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "ui_found",
"columnName": "ui_found",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "error",
"columnName": "error",
"affinity": "TEXT",
"notNull": false
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [
{
"name": "index_message_account",
"unique": false,
"columnNames": [
"account"
],
"createSql": "CREATE INDEX `index_message_account` ON `${TABLE_NAME}` (`account`)"
},
{
"name": "index_message_folder",
"unique": false,
"columnNames": [
"folder"
],
"createSql": "CREATE INDEX `index_message_folder` ON `${TABLE_NAME}` (`folder`)"
},
{
"name": "index_message_identity",
"unique": false,
"columnNames": [
"identity"
],
"createSql": "CREATE INDEX `index_message_identity` ON `${TABLE_NAME}` (`identity`)"
},
{
"name": "index_message_replying",
"unique": false,
"columnNames": [
"replying"
],
"createSql": "CREATE INDEX `index_message_replying` ON `${TABLE_NAME}` (`replying`)"
},
{
"name": "index_message_folder_uid",
"unique": true,
"columnNames": [
"folder",
"uid"
],
"createSql": "CREATE UNIQUE INDEX `index_message_folder_uid` ON `${TABLE_NAME}` (`folder`, `uid`)"
},
{
"name": "index_message_msgid_folder",
"unique": true,
"columnNames": [
"msgid",
"folder"
],
"createSql": "CREATE UNIQUE INDEX `index_message_msgid_folder` ON `${TABLE_NAME}` (`msgid`, `folder`)"
},
{
"name": "index_message_thread",
"unique": false,
"columnNames": [
"thread"
],
"createSql": "CREATE INDEX `index_message_thread` ON `${TABLE_NAME}` (`thread`)"
},
{
"name": "index_message_received",
"unique": false,
"columnNames": [
"received"
],
"createSql": "CREATE INDEX `index_message_received` ON `${TABLE_NAME}` (`received`)"
},
{
"name": "index_message_ui_seen",
"unique": false,
"columnNames": [
"ui_seen"
],
"createSql": "CREATE INDEX `index_message_ui_seen` ON `${TABLE_NAME}` (`ui_seen`)"
},
{
"name": "index_message_ui_hide",
"unique": false,
"columnNames": [
"ui_hide"
],
"createSql": "CREATE INDEX `index_message_ui_hide` ON `${TABLE_NAME}` (`ui_hide`)"
}
],
"foreignKeys": [
{
"table": "account",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"account"
],
"referencedColumns": [
"id"
]
},
{
"table": "folder",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"folder"
],
"referencedColumns": [
"id"
]
},
{
"table": "identity",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"identity"
],
"referencedColumns": [
"id"
]
},
{
"table": "message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"replying"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "attachment",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `message` INTEGER NOT NULL, `sequence` INTEGER NOT NULL, `name` TEXT, `type` TEXT NOT NULL, `size` INTEGER, `progress` INTEGER, `available` INTEGER NOT NULL, FOREIGN KEY(`message`) REFERENCES `message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "message",
"columnName": "message",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "sequence",
"columnName": "sequence",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": false
},
{
"fieldPath": "type",
"columnName": "type",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "size",
"columnName": "size",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "progress",
"columnName": "progress",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "available",
"columnName": "available",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [
{
"name": "index_attachment_message",
"unique": false,
"columnNames": [
"message"
],
"createSql": "CREATE INDEX `index_attachment_message` ON `${TABLE_NAME}` (`message`)"
},
{
"name": "index_attachment_message_sequence",
"unique": true,
"columnNames": [
"message",
"sequence"
],
"createSql": "CREATE UNIQUE INDEX `index_attachment_message_sequence` ON `${TABLE_NAME}` (`message`, `sequence`)"
}
],
"foreignKeys": [
{
"table": "message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"message"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "operation",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `folder` INTEGER NOT NULL, `message` INTEGER NOT NULL, `name` TEXT NOT NULL, `args` TEXT NOT NULL, `created` INTEGER NOT NULL, FOREIGN KEY(`folder`) REFERENCES `folder`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE , FOREIGN KEY(`message`) REFERENCES `message`(`id`) ON UPDATE NO ACTION ON DELETE CASCADE )",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "folder",
"columnName": "folder",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "message",
"columnName": "message",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "args",
"columnName": "args",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "created",
"columnName": "created",
"affinity": "INTEGER",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [
{
"name": "index_operation_folder",
"unique": false,
"columnNames": [
"folder"
],
"createSql": "CREATE INDEX `index_operation_folder` ON `${TABLE_NAME}` (`folder`)"
},
{
"name": "index_operation_message",
"unique": false,
"columnNames": [
"message"
],
"createSql": "CREATE INDEX `index_operation_message` ON `${TABLE_NAME}` (`message`)"
}
],
"foreignKeys": [
{
"table": "folder",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"folder"
],
"referencedColumns": [
"id"
]
},
{
"table": "message",
"onDelete": "CASCADE",
"onUpdate": "NO ACTION",
"columns": [
"message"
],
"referencedColumns": [
"id"
]
}
]
},
{
"tableName": "answer",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `name` TEXT NOT NULL, `text` TEXT NOT NULL)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "name",
"columnName": "name",
"affinity": "TEXT",
"notNull": true
},
{
"fieldPath": "text",
"columnName": "text",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [],
"foreignKeys": []
},
{
"tableName": "log",
"createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `time` INTEGER NOT NULL, `data` TEXT NOT NULL)",
"fields": [
{
"fieldPath": "id",
"columnName": "id",
"affinity": "INTEGER",
"notNull": false
},
{
"fieldPath": "time",
"columnName": "time",
"affinity": "INTEGER",
"notNull": true
},
{
"fieldPath": "data",
"columnName": "data",
"affinity": "TEXT",
"notNull": true
}
],
"primaryKey": {
"columnNames": [
"id"
],
"autoGenerate": true
},
"indices": [
{
"name": "index_log_time",
"unique": false,
"columnNames": [
"time"
],
"createSql": "CREATE INDEX `index_log_time` ON `${TABLE_NAME}` (`time`)"
}
],
"foreignKeys": []
}
],
"setupQueries": [
"CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
"INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \"78658430615109b7c163e62ed1ad0a48\")"
]
}
}

+ 162
- 0
app/src/main/java/eu/faircode/email/AdapterLog.java View File

@ -0,0 +1,162 @@
package eu.faircode.email;
/*
This file is part of FairEmail.
FairEmail is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
NetGuard is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with NetGuard. If not, see <http://www.gnu.org/licenses/>.
Copyright 2018 by Marcel Bokhorst (M66B)
*/
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.ListUpdateCallback;
import androidx.recyclerview.widget.RecyclerView;
public class AdapterLog extends RecyclerView.Adapter<AdapterLog.ViewHolder> {
private Context context;
private List<EntityLog> all = new ArrayList<>();
private List<EntityLog> filtered = new ArrayList<>();
private static final DateFormat DF = SimpleDateFormat.getTimeInstance();
public class ViewHolder extends RecyclerView.ViewHolder {
View itemView;
TextView tvTime;
TextView tvData;
ViewHolder(View itemView) {
super(itemView);
this.itemView = itemView;
tvTime = itemView.findViewById(R.id.tvTime);
tvData = itemView.findViewById(R.id.tvData);
}
private void bindTo(EntityLog log) {
tvTime.setText(DF.format(log.time));
tvData.setText(log.data);
}
}
AdapterLog(Context context) {
this.context = context;
setHasStableIds(true);
}
public void set(@NonNull List<EntityLog> logs) {
Log.i(Helper.TAG, "Set logs=" + logs.size());
all.clear();
all.addAll(logs);
DiffUtil.DiffResult diff = DiffUtil.calculateDiff(new MessageDiffCallback(filtered, all));
filtered.clear();
filtered.addAll(all);
diff.dispatchUpdatesTo(new ListUpdateCallback() {
@Override
public void onInserted(int position, int count) {
Log.i(Helper.TAG, "Inserted @" + position + " #" + count);
}
@Override
public void onRemoved(int position, int count) {
Log.i(Helper.TAG, "Removed @" + position + " #" + count);
}
@Override
public void onMoved(int fromPosition, int toPosition) {
Log.i(Helper.TAG, "Moved " + fromPosition + ">" + toPosition);
}
@Override
public void onChanged(int position, int count, Object payload) {
Log.i(Helper.TAG, "Changed @" + position + " #" + count);
}
});
diff.dispatchUpdatesTo(this);
}
private class MessageDiffCallback extends DiffUtil.Callback {
private List<EntityLog> prev;
private List<EntityLog> next;
MessageDiffCallback(List<EntityLog> prev, List<EntityLog> next) {
this.prev = prev;
this.next = next;
}
@Override
public int getOldListSize() {
return prev.size();
}
@Override
public int getNewListSize() {
return next.size();
}
@Override
public boolean areItemsTheSame(int oldItemPosition, int newItemPosition) {
EntityLog l1 = prev.get(oldItemPosition);
EntityLog l2 = next.get(newItemPosition);
return l1.id.equals(l2.id);
}
@Override
public boolean areContentsTheSame(int oldItemPosition, int newItemPosition) {
EntityLog l1 = prev.get(oldItemPosition);
EntityLog l2 = next.get(newItemPosition);
return l1.equals(l2);
}
}
@Override
public long getItemId(int position) {
return filtered.get(position).id;
}
@Override
public int getItemCount() {
return filtered.size();
}
@Override
@NonNull
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return new ViewHolder(LayoutInflater.from(context).inflate(R.layout.item_log, parent, false));
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
EntityLog log = filtered.get(position);
holder.bindTo(log);
}
}

+ 12
- 1
app/src/main/java/eu/faircode/email/DB.java View File

@ -45,7 +45,7 @@ import androidx.sqlite.db.SupportSQLiteDatabase;
// https://developer.android.com/topic/libraries/architecture/room.html
@Database(
version = 6,
version = 7,
entities = {
EntityIdentity.class,
EntityAccount.class,
@ -54,6 +54,7 @@ import androidx.sqlite.db.SupportSQLiteDatabase;
EntityAttachment.class,
EntityOperation.class,
EntityAnswer.class,
EntityLog.class
}
)
@ -73,6 +74,8 @@ public abstract class DB extends RoomDatabase {
public abstract DaoAnswer answer();
public abstract DaoLog log();
private static DB sInstance;
private static final String DB_NAME = "email";
@ -150,6 +153,14 @@ public abstract class DB extends RoomDatabase {
db.execSQL("ALTER TABLE `message` ADD COLUMN `ui_found` INTEGER NOT NULL DEFAULT 0");
}
})
.addMigrations(new Migration(6, 7) {
@Override
public void migrate(SupportSQLiteDatabase db) {
Log.i(Helper.TAG, "DB migration from version " + startVersion + " to " + endVersion);
db.execSQL("CREATE TABLE IF NOT EXISTS `log` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `time` INTEGER NOT NULL, `data` TEXT NOT NULL)");
db.execSQL("CREATE INDEX `index_log_time` ON `log` (`time`)");
}
})
.build();
}


+ 36
- 0
app/src/main/java/eu/faircode/email/DaoLog.java View File

@ -0,0 +1,36 @@
package eu.faircode.email;
/*
This file is part of FairEmail.
FairEmail is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
NetGuard is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with NetGuard. If not, see <http://www.gnu.org/licenses/>.
Copyright 2018 by Marcel Bokhorst (M66B)
*/
import java.util.List;
import androidx.lifecycle.LiveData;
import androidx.room.Dao;
import androidx.room.Insert;
import androidx.room.Query;
@Dao
public interface DaoLog {
@Query("SELECT * FROM log ORDER BY time DESC LIMIT 500")
LiveData<List<EntityLog>> liveLogs();
@Insert
long insertLog(EntityLog log);
}

+ 64
- 0
app/src/main/java/eu/faircode/email/EntityLog.java View File

@ -0,0 +1,64 @@
package eu.faircode.email;
/*
This file is part of FairEmail.
FairEmail is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
NetGuard is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with NetGuard. If not, see <http://www.gnu.org/licenses/>.
Copyright 2018 by Marcel Bokhorst (M66B)
*/
import android.content.Context;
import java.util.Date;
import androidx.annotation.NonNull;
import androidx.room.Entity;
import androidx.room.Index;
import androidx.room.PrimaryKey;
@Entity(
tableName = EntityLog.TABLE_NAME,
foreignKeys = {
},
indices = {
@Index(value = {"time"})
}
)
public class EntityLog {
static final String TABLE_NAME = "log";
@PrimaryKey(autoGenerate = true)
public Long id;
@NonNull
public Long time;
@NonNull
public String data;
static void log(Context context, String data) {
EntityLog entry = new EntityLog();
entry.time = new Date().getTime();
entry.data = data;
DB.getInstance(context).log().insertLog(entry);
}
@Override
public boolean equals(Object obj) {
if (obj instanceof EntityLog) {
EntityLog other = (EntityLog) obj;
return (this.time.equals(other.time) && this.data.equals(other.data));
} else
return false;
}
}

+ 17
- 2
app/src/main/java/eu/faircode/email/FragmentAbout.java View File

@ -39,8 +39,13 @@ import javax.mail.Address;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentTransaction;
public class FragmentAbout extends FragmentEx {
private TextView tvVersion;
private Button btnLog;
private Button btnDebugInfo;
@Override
@Nullable
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
@ -48,11 +53,21 @@ public class FragmentAbout extends FragmentEx {
View view = inflater.inflate(R.layout.fragment_about, container, false);
TextView tvVersion = view.findViewById(R.id.tvVersion);
final Button btnDebugInfo = view.findViewById(R.id.btnDebugInfo);
tvVersion = view.findViewById(R.id.tvVersion);
btnLog = view.findViewById(R.id.btnLog);
btnDebugInfo = view.findViewById(R.id.btnDebugInfo);
tvVersion.setText(getString(R.string.title_version, BuildConfig.VERSION_NAME));
btnLog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.content_frame, new FragmentLogs()).addToBackStack("logs");
fragmentTransaction.commit();
}
});
btnDebugInfo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {


+ 91
- 0
app/src/main/java/eu/faircode/email/FragmentLogs.java View File

@ -0,0 +1,91 @@
package eu.faircode.email;
/*
This file is part of FairEmail.
FairEmail is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
NetGuard is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with NetGuard. If not, see <http://www.gnu.org/licenses/>.
Copyright 2018 by Marcel Bokhorst (M66B)
*/
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ProgressBar;
import java.util.ArrayList;
import java.util.List;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.Group;
import androidx.lifecycle.Observer;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
public class FragmentLogs extends FragmentEx {
private RecyclerView rvLog;
private ProgressBar pbWait;
private Group grpReady;
private AdapterLog adapter;
@Override
@Nullable
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
setSubtitle(R.string.title_log);
View view = inflater.inflate(R.layout.fragment_logs, container, false);
// Get controls
rvLog = view.findViewById(R.id.rvLog);
pbWait = view.findViewById(R.id.pbWait);
grpReady = view.findViewById(R.id.grpReady);
// Wire controls
rvLog.setHasFixedSize(false);
LinearLayoutManager llm = new LinearLayoutManager(getContext());
rvLog.setLayoutManager(llm);
adapter = new AdapterLog(getContext());
rvLog.setAdapter(adapter);
// Initialize
grpReady.setVisibility(View.GONE);
pbWait.setVisibility(View.VISIBLE);
return view;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
DB db = DB.getInstance(getContext());
db.log().liveLogs().observe(getViewLifecycleOwner(), new Observer<List<EntityLog>>() {
@Override
public void onChanged(List<EntityLog> logs) {
if (logs == null)
logs = new ArrayList<>();
adapter.set(logs);
pbWait.setVisibility(View.GONE);
grpReady.setVisibility(View.VISIBLE);
}
});
}
}

+ 20
- 5
app/src/main/java/eu/faircode/email/ServiceSynchronize.java View File

@ -358,6 +358,8 @@ public class ServiceSynchronize extends LifecycleService {
// MailConnectException
// - on connectity problems when connecting to store
EntityLog.log(this, ex.toString());
if (!(ex instanceof MailConnectException) &&
!(ex instanceof FolderClosedException) &&
!(ex instanceof IllegalStateException) &&
@ -1433,7 +1435,10 @@ public class ServiceSynchronize extends LifecycleService {
@Override
public void onAvailable(Network network) {
Log.i(Helper.TAG, "Network available " + network);
ConnectivityManager cm = getSystemService(ConnectivityManager.class);
NetworkInfo ni = cm.getNetworkInfo(network);
Log.i(Helper.TAG, "Network available " + network + " " + ni);
EntityLog.log(ServiceSynchronize.this, "Network available " + network + " " + ni);
if (running)
Log.i(Helper.TAG, "Service already running");
@ -1453,14 +1458,16 @@ public class ServiceSynchronize extends LifecycleService {
@Override
public void onLost(Network network) {
Log.i(Helper.TAG, "Network lost " + network);
EntityLog.log(ServiceSynchronize.this, "Network lost " + network);
if (running) {
Log.i(Helper.TAG, "Service running");
ConnectivityManager cm = getSystemService(ConnectivityManager.class);
NetworkInfo ni = cm.getActiveNetworkInfo();
Log.i(Helper.TAG, "Network active=" + (ni == null ? null : ni.toString()));
if (ni == null || !ni.isConnected()) {
Log.i(Helper.TAG, "Network disconnected=" + ni);
NetworkInfo ani = cm.getActiveNetworkInfo();
Log.i(Helper.TAG, "Network active=" + (ani == null ? null : ani.toString()));
if (ani == null || !ani.isConnected()) {
EntityLog.log(ServiceSynchronize.this, "Network disconnected=" + ani);
Log.i(Helper.TAG, "Network disconnected=" + ani);
running = false;
lifecycle.submit(new Runnable() {
@Override
@ -1475,6 +1482,7 @@ public class ServiceSynchronize extends LifecycleService {
}
private void start() {
EntityLog.log(ServiceSynchronize.this, "Start");
state = new ServiceState();
main = new Thread(new Runnable() {
@ -1530,6 +1538,8 @@ public class ServiceSynchronize extends LifecycleService {
threads.add(t);
}
EntityLog.log(ServiceSynchronize.this, "Started");
// Stop monitoring accounts
for (Thread t : threads)
join(t);
@ -1539,6 +1549,8 @@ public class ServiceSynchronize extends LifecycleService {
lbm.unregisterReceiver(outboxReceiver);
Log.i(Helper.TAG, outbox.name + " unlisten operations");
db.folder().setFolderState(outbox.id, null);
EntityLog.log(ServiceSynchronize.this, "Exited");
} catch (Throwable ex) {
// Fail-safe
Log.e(Helper.TAG, ex + "\n" + Log.getStackTraceString(ex));
@ -1551,6 +1563,7 @@ public class ServiceSynchronize extends LifecycleService {
private void stop(boolean disconnected) {
if (main != null) {
EntityLog.log(ServiceSynchronize.this, "Stop disconnected=" + disconnected);
synchronized (state) {
state.running = false;
state.disconnected = disconnected;
@ -1562,6 +1575,8 @@ public class ServiceSynchronize extends LifecycleService {
join(main);
main = null;
EntityLog.log(ServiceSynchronize.this, "Stopped");
}
}


+ 14
- 1
app/src/main/res/layout/fragment_about.xml View File

@ -47,6 +47,19 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvCopyright" />
<Button
android:id="@+id/btnLog"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:minHeight="0dp"
android:minWidth="0dp"
android:text="@string/title_log"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvEula" />
<Button
android:id="@+id/btnDebugInfo"
style="?android:attr/buttonStyleSmall"
@ -57,7 +70,7 @@
android:minWidth="0dp"
android:text="@string/title_debug_info"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@id/tvEula" />
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>

+ 36
- 0
app/src/main/res/layout/fragment_logs.xml View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ActivityView">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rvLog"
android:layout_width="0dp"
android:layout_height="0dp"
android:scrollbarStyle="outsideOverlay"
android:scrollbars="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ProgressBar
android:id="@+id/pbWait"
style="@style/Base.Widget.AppCompat.ProgressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminate="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.Group
android:id="@+id/grpReady"
android:layout_width="0dp"
android:layout_height="0dp"
app:constraint_referenced_ids="rvLog" />
</androidx.constraintlayout.widget.ConstraintLayout>

+ 28
- 0
app/src/main/res/layout/item_log.xml View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tvTime"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:ellipsize="start"
android:singleLine="true"
android:text="12:34:56"
android:textAppearance="@style/TextAppearance.AppCompat.Small"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/ivEdit" />
<TextView
android:id="@+id/tvData"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="6dp"
android:text="log"
android:textAppearance="@android:style/TextAppearance.Small"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@id/tvTime"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

+ 1
- 0
app/src/main/res/values-af/strings.xml View File

@ -174,6 +174,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-ar-rBH/strings.xml View File

@ -190,6 +190,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-ar-rEG/strings.xml View File

@ -190,6 +190,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-ar-rSA/strings.xml View File

@ -190,6 +190,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-ar-rYE/strings.xml View File

@ -190,6 +190,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-ar/strings.xml View File

@ -190,6 +190,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-ca/strings.xml View File

@ -174,6 +174,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-cs/strings.xml View File

@ -182,6 +182,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-da/strings.xml View File

@ -174,6 +174,7 @@
<string name="title_pro_activated">Alle pro funktioner er aktiveret</string>
<string name="title_pro_valid">Alle pro funktioner aktiveret</string>
<string name="title_pro_invalid">Ugyldigt svar</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debugging info</string>
<string name="title_debug_info_remark">Beskriv venligst problemet og angiv tidspunkt for problemet:</string>
</resources>

+ 3
- 2
app/src/main/res/values-de/strings.xml View File

@ -76,7 +76,7 @@
<string name="title_authorize">Konto wählen</string>
<string name="title_instructions">Anweisungen</string>
<string name="title_store_sent">Speichere gesendete Nachrichten (nur bei Bedarf aktivieren)</string>
<string name="title_interval">Keep-alive interval (minutes)</string>
<string name="title_interval">Keep-alive-Intervall (Minuten)</string>
<string name="title_synchronize_account">Synchronisiere (empfange E-Mails)</string>
<string name="title_synchronize_identity">Synchronisiere (sende E-Mails)</string>
<string name="title_primary_account">Primär (Standard-Konto)</string>
@ -151,7 +151,7 @@
<string name="title_draft_saved">Entwurf gespeichert</string>
<string name="title_queued">Nachricht senden\u2026</string>
<string name="title_search">Suche</string>
<string name="title_search_hint">Search sender/subject/text</string>
<string name="title_search_hint">Absender/Betreff/Text durchsuchen</string>
<string name="title_searching">Suche „%1$s“</string>
<string name="title_answer_reply">Standardantworten</string>
<string name="title_answer_name">Antwort Name</string>
@ -174,6 +174,7 @@
<string name="title_pro_activated">Alle Premium Funktionen sind aktiviert</string>
<string name="title_pro_valid">Alle Premium Funktionen aktiviert</string>
<string name="title_pro_invalid">Ungültige Antwort</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debuginformationen</string>
<string name="title_debug_info_remark">Bitte beschreiben Sie das Problem und zu welchem Zeitpunkt dieses aufgetreten ist:</string>
</resources>

+ 1
- 0
app/src/main/res/values-el/strings.xml View File

@ -174,6 +174,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-en/strings.xml View File

@ -174,6 +174,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-es-rES/strings.xml View File

@ -174,6 +174,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-fi/strings.xml View File

@ -174,6 +174,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-fr/strings.xml View File

@ -174,6 +174,7 @@
<string name="title_pro_activated">Toutes les fonctionnalités Pro sont activées</string>
<string name="title_pro_valid">Toutes les fonctionnalités Pro activées</string>
<string name="title_pro_invalid">Réponse non valide</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Information de débogage</string>
<string name="title_debug_info_remark">Veuillez décrire le problème et indiquer l\'heure à laquelle il est survenu :</string>
</resources>

+ 1
- 0
app/src/main/res/values-he/strings.xml View File

@ -182,6 +182,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-hu/strings.xml View File

@ -174,6 +174,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-it/strings.xml View File

@ -174,6 +174,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Informazioni di debug</string>
<string name="title_debug_info_remark">Si prega di descrivere il problema ed indicare il momento in cui è avvenuto:</string>
</resources>

+ 1
- 0
app/src/main/res/values-iw/strings.xml View File

@ -182,6 +182,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-ja/strings.xml View File

@ -170,6 +170,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-ko/strings.xml View File

@ -170,6 +170,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-nb/strings.xml View File

@ -174,6 +174,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-nl/strings.xml View File

@ -174,6 +174,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-no/strings.xml View File

@ -174,6 +174,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 9
- 8
app/src/main/res/values-pl/strings.xml View File

@ -84,7 +84,7 @@
<string name="title_authorize">Wybierz konto</string>
<string name="title_instructions">Instrukcje</string>
<string name="title_store_sent">Zachowuj wysłane wiadomości (włącz tylko gdy potrzebne)</string>
<string name="title_interval">Keep-alive interval (minutes)</string>
<string name="title_interval">Interwał utrzymywania aktywności (minuty)</string>
<string name="title_synchronize_account">Synchronizuj (odbierz wiadomości)</string>
<string name="title_synchronize_identity">Synchronizuj (wyślij wiadomości)</string>
<string name="title_primary_account">Podstawowe (domyślne konto)</string>
@ -104,7 +104,7 @@
<string name="title_identity_delete">Usunąć tożsamość bezpowrotnie?</string>
<string name="title_synchronize_folder">Synchronizuj (odbierz wiadomości)</string>
<string name="title_after">Synchronizuj (dni)</string>
<string name="title_folder_unified">Unified inbox</string>
<string name="title_folder_unified">Wspólna skrzynka odbiorcza</string>
<string name="title_folder_inbox">Odebrane</string>
<string name="title_folder_outbox">Wysłane</string>
<string name="title_folder_all">Archiwum</string>
@ -113,7 +113,7 @@
<string name="title_folder_junk">Spam</string>
<string name="title_folder_sent">Wysłane</string>
<string name="title_folder_user">Użytkownik</string>
<string name="title_folder_primary">Folders primary account</string>
<string name="title_folder_primary">Podstawowe konto folderów</string>
<string name="title_folder_thread">Wątek wiadomości</string>
<string name="title_no_messages">Brak wiadomości</string>
<string name="title_link">link</string>
@ -132,7 +132,7 @@
<string name="title_archive">Archiwum</string>
<string name="title_reply">Odpowiedz</string>
<string name="title_moving">Przenoszenie wiadomości do %1$s</string>
<string name="title_no_viewer">No viewer app available for %1$s</string>
<string name="title_no_viewer">Brak aplikacji do podglądu %1$s</string>
<string name="title_attachment_saved">Załącznik zapisany</string>
<string name="title_ask_delete">Usunąć wiadomość bezpowrotnie?</string>
<string name="title_ask_spam">Zgłosić wiadomość jako spam?</string>
@ -159,11 +159,11 @@
<string name="title_draft_saved">Szkic zapisany</string>
<string name="title_queued">Wysyłanie wiadomości</string>
<string name="title_search">Szukaj</string>
<string name="title_search_hint">Search sender/subject/text</string>
<string name="title_search_hint">Wyszukaj nadawcę/temat/tekst</string>
<string name="title_searching">Szukam \'%1$s\'</string>
<string name="title_answer_reply">Standardowa odpowiedź</string>
<string name="title_answer_name">Answer name</string>
<string name="title_answer_text">Answer text</string>
<string name="title_answer_name">Nazwa odpowiedzi</string>
<string name="title_answer_text">Tekst odpowiedzi</string>
<string name="title_legend_cc">DW/UDW</string>
<string name="title_legend_attachment">Załącznik</string>
<string name="title_legend_synchronize">Synchronizuj</string>
@ -173,7 +173,7 @@
<string name="title_legend_connected">Połączony</string>
<string name="title_legend_synchronizing">Synchronizowanie</string>
<string name="title_legend_closing">Zamykanie</string>
<string name="title_hint_actions">Swipe left to trash; swipe right to archive (if available); long press to mark read/unread</string>
<string name="title_hint_actions">Przesuń w lewo do kosza; przesuń w prawo do archiwum (jeśli są dostępne); długie naciśnięcie, aby oznaczyć przeczytane/nieprzeczytane</string>
<string name="title_understood">Rozumiem</string>
<string name="title_pro_feature">Jest to funkcja pro</string>
<string name="title_pro_list">List funkcji pro</string>
@ -182,6 +182,7 @@
<string name="title_pro_activated">Wszystkie funkcje pro są aktywowane</string>
<string name="title_pro_valid">Wszystkie funkcje pro aktywne</string>
<string name="title_pro_invalid">Nieprawidłowa odpowiedź</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Info debugowania</string>
<string name="title_debug_info_remark">Opisz proszę problem i wskaż moment jego wystąpienia:</string>
</resources>

+ 1
- 0
app/src/main/res/values-pt-rBR/strings.xml View File

@ -174,6 +174,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Informações de depuração</string>
<string name="title_debug_info_remark">Por favor, descreva o problema e indique o momento em que ocorrera:</string>
</resources>

+ 1
- 0
app/src/main/res/values-pt-rPT/strings.xml View File

@ -174,6 +174,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-ro/strings.xml View File

@ -178,6 +178,7 @@
<string name="title_pro_activated">Sunt activate toate caracteristicile Pro</string>
<string name="title_pro_valid">Au fost activate toate caracteristicile Pro</string>
<string name="title_pro_invalid">Răspunsul nu este valid</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Depanare</string>
<string name="title_debug_info_remark">Va rog sa descrieți problema și să indicați momentul când s-a produs:</string>
</resources>

+ 1
- 0
app/src/main/res/values-ru/strings.xml View File

@ -182,6 +182,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-sr/strings.xml View File

@ -178,6 +178,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-sv-rSE/strings.xml View File

@ -174,6 +174,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 160
- 159
app/src/main/res/values-tr/strings.xml View File

@ -1,179 +1,180 @@
<?xml version="1.0" encoding="utf-8"?>
<!--Generated by crowdin.com-->
<resources>
<string name="app_copyright">Copyright &#x24B8; 2018 by M. Bokhorst</string>
<string name="channel_service">Service</string>
<string name="channel_notification">Notifications</string>
<string name="channel_error">Errors</string>
<string name="app_copyright">Telif hakkı &#x24B8; 2018 M. Bokhorst \'a aittir</string>
<string name="channel_service">Hizmet</string>
<string name="channel_notification">Bildirimler</string>
<string name="channel_error">Hatalar</string>
<plurals name="title_notification_synchronizing">
<item quantity="one">Synchronizing %1$d account</item>
<item quantity="other">Synchronizing %1$d accounts</item>
<item quantity="one">%1$d Hesap senkronize ediliyor</item>
<item quantity="other">%1$d Hesap senkronize ediliyor</item>
</plurals>
<plurals name="title_notification_operations">
<item quantity="one">%1$d operation pending</item>
<item quantity="other">%1$d operations pending</item>
<item quantity="one">%1$d işlem beklemede</item>
<item quantity="other">%1$d işlem beklemede</item>
</plurals>
<plurals name="title_notification_unseen">
<item quantity="one">%1$d new message</item>
<item quantity="other">%1$d new messages</item>
<item quantity="one">%1$d yeni ileti</item>
<item quantity="other">%1$d yeni ileti</item>
</plurals>
<plurals name="title_notification_unsent">
<item quantity="one">%1$d unsent message</item>
<item quantity="other">%1$d unsent messages</item>
<item quantity="one">%1$d gönderilmemiş ileti</item>
<item quantity="other">%1$d gönderilmemiş ileti</item>
</plurals>
<string name="title_notification_failed">\'%1$s\' failed</string>
<string name="menu_setup">Setup</string>
<string name="menu_answers">Standard replies</string>
<string name="menu_operations">Operations</string>
<string name="menu_legend">Legend</string>
<string name="menu_faq">FAQ</string>
<string name="menu_pro">Pro features</string>
<string name="menu_privacy">Privacy</string>
<string name="menu_about">About</string>
<string name="menu_other">Other apps</string>
<string name="title_eula">End-user license agreement</string>
<string name="title_agree">I agree</string>
<string name="title_disagree">I disagree</string>
<string name="title_version">Version %1$s</string>
<string name="title_list_accounts">Accounts</string>
<string name="title_list_identities">Identities</string>
<string name="title_edit_account">Edit account</string>
<string name="title_edit_identity">Edit identity</string>
<string name="title_edit_folder">Edit folder</string>
<string name="title_setup">Setup</string>
<string name="title_setup_account">Manage accounts</string>
<string name="title_setup_account_remark">To receive email</string>
<string name="title_setup_identity">Manage identities</string>
<string name="title_setup_identity_remark">To send email</string>
<string name="title_setup_permissions">Grant permissions</string>
<string name="title_setup_permissions_remark">To autocomplete addresses (optional)</string>
<string name="title_setup_to_do">To do</string>
<string name="title_setup_done">Done</string>
<string name="title_setup_dark_theme">Dark theme</string>
<string name="title_advanced">Advanced options</string>
<string name="title_advanced_webview">Use WebView to show external links</string>
<string name="title_advanced_customtabs">Instead of <a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Custom Tabs</a></string>
<string name="title_advanced_sanitize">Remove HTML formatting from messages</string>
<string name="title_advanced_compress_imap">Compress IMAP data</string>
<string name="title_advanced_debug">Debug</string>
<string name="title_select">Select &#8230;</string>
<string name="title_identity_name">Your name</string>
<string name="title_identity_email">Your email address</string>
<string name="title_identity_reply_to">Reply to address</string>
<string name="title_optional">Optional</string>
<string name="title_account_linked">Linked account</string>
<string name="title_account_name">Account name</string>
<string name="title_account_name_hint">Used to differentiate folders</string>
<string name="title_notification_failed">\'%1$s\' başarısız oldu</string>
<string name="menu_setup">Kurulum</string>
<string name="menu_answers">Standart cevaplar</string>
<string name="menu_operations">İşlemler</string>
<string name="menu_legend">Açıklamalar</string>
<string name="menu_faq">SSS</string>
<string name="menu_pro">Pro özellikleri</string>
<string name="menu_privacy">Gizlilik</string>
<string name="menu_about">Hakkında</string>
<string name="menu_other">Diğer uygulamalar</string>
<string name="title_eula">Son Kullanıcı Lisans Sözleşmesi</string>
<string name="title_agree">Kabul ediyorum</string>
<string name="title_disagree">Kabul etmiyorum</string>
<string name="title_version">Sürüm %1$s</string>
<string name="title_list_accounts">Hesaplar</string>
<string name="title_list_identities">Kimlikler</string>
<string name="title_edit_account">Hesabı Düzenle</string>
<string name="title_edit_identity">Kimliği düzenle</string>
<string name="title_edit_folder">Klasörü düzenle</string>
<string name="title_setup">Kurulum</string>
<string name="title_setup_account">Hesapları Yönet</string>
<string name="title_setup_account_remark">E-posta almak için</string>
<string name="title_setup_identity">Kimlikleri Yönet</string>
<string name="title_setup_identity_remark">E-posta göndermek için</string>
<string name="title_setup_permissions">İzin Ver</string>
<string name="title_setup_permissions_remark">Adresleri otomatik tamamlamak için (isteğe bağlı)</string>
<string name="title_setup_to_do">Yapılacak</string>
<string name="title_setup_done">Bitti</string>
<string name="title_setup_dark_theme">Koyu Tema</string>
<string name="title_advanced">Gelişmiş ayarlar</string>
<string name="title_advanced_webview">Dış bağlantıları göstermek için WebView kullanın</string>
<string name="title_advanced_customtabs"><a href="https://developer.chrome.com/multidevice/android/customtabs">Chrome Özel Sekmeler</a> yerine</string>
<string name="title_advanced_sanitize">HTML biçimlendirmesini iletilerden kaldır</string>
<string name="title_advanced_compress_imap">IMAP verilerini sıkıştır</string>
<string name="title_advanced_debug">Hata ayıklama</string>
<string name="title_select">Seçin &#8230;</string>
<string name="title_identity_name">Adınız</string>
<string name="title_identity_email">E-posta adresiniz</string>
<string name="title_identity_reply_to">Yanıtlama adresi</string>
<string name="title_optional">İsteğe bağlı</string>
<string name="title_account_linked">Bağlı hesap</string>
<string name="title_account_name">Hesap adı</string>
<string name="title_account_name_hint">Klasörleri ayırt etmek için kullanılır</string>
<string name="title_imap">IMAP</string>
<string name="title_smtp">SMTP</string>
<string name="title_provider">Provider</string>
<string name="title_custom">Custom</string>
<string name="title_host">Host name</string>
<string name="title_provider">Sağlayıcı</string>
<string name="title_custom">Özel</string>
<string name="title_host">Sunucu adı</string>
<string name="title_starttls">STARTTLS</string>
<string name="title_port">Port number</string>
<string name="title_user">User name</string>
<string name="title_password">Password</string>
<string name="title_authorize">Select account</string>
<string name="title_instructions">Instructions</string>
<string name="title_store_sent">Store sent messages (enable if needed only)</string>
<string name="title_interval">Keep-alive interval (minutes)</string>
<string name="title_synchronize_account">Synchronize (receive messages)</string>
<string name="title_synchronize_identity">Synchronize (send messages)</string>
<string name="title_primary_account">Primary (default account)</string>
<string name="title_primary_identity">Primary (default identity)</string>
<string name="title_check">Check</string>
<string name="title_no_name">Name missing</string>
<string name="title_no_email">Email address missing</string>
<string name="title_no_account">Account missing</string>
<string name="title_no_host">Host name missing</string>
<string name="title_no_port">Port number missing</string>
<string name="title_no_user">User name missing</string>
<string name="title_no_password">Password missing</string>
<string name="title_no_drafts">Drafts folder missing</string>
<string name="title_no_idle">IDLE not supported</string>
<string name="title_no_uidplus">UIDPLUS not supported</string>
<string name="title_account_delete">Delete this account permanently?</string>
<string name="title_identity_delete">Delete this identity permanently?</string>
<string name="title_synchronize_folder">Synchronize (receive messages)</string>
<string name="title_after">Synchronize (days)</string>
<string name="title_folder_unified">Unified inbox</string>
<string name="title_folder_inbox">Inbox</string>
<string name="title_folder_outbox">Outbox</string>
<string name="title_folder_all">Archive</string>
<string name="title_folder_drafts">Drafts</string>
<string name="title_folder_trash">Trash</string>
<string name="title_port">Port numarası</string>
<string name="title_user">Kullanıcı adı</string>
<string name="title_password">Şifre</string>
<string name="title_authorize">Hesap seç</string>
<string name="title_instructions">Talimatlar</string>
<string name="title_store_sent">Gönderilen iletileri kaydet (yalnızca gerekliyse etkinleştir)</string>
<string name="title_interval">Canlı tutma aralığı (dakika)</string>
<string name="title_synchronize_account">Senkronize et (iletileri al)</string>
<string name="title_synchronize_identity">Senkronize et (iletileri gönder)</string>
<string name="title_primary_account">Birincil (varsayılan hesap)</string>
<string name="title_primary_identity">Birincil (varsayılan kimlik)</string>
<string name="title_check">Kontrol et</string>
<string name="title_no_name">İsim eksik</string>
<string name="title_no_email">E-posta adresi eksik</string>
<string name="title_no_account">Hesap bilgisi eksik</string>
<string name="title_no_host">Sunucu adı eksik</string>
<string name="title_no_port">Port numarası eksik</string>
<string name="title_no_user">Kullanıcı adı eksik</string>
<string name="title_no_password">Parola Eksik</string>
<string name="title_no_drafts">Taslaklar klasörü eksik</string>
<string name="title_no_idle">IDLE desteklenmiyor</string>
<string name="title_no_uidplus">UIDPLUS desteklenmiyor</string>
<string name="title_account_delete">Bu hesabı kalıcı olarak sil?</string>
<string name="title_identity_delete">Bu kimliği kalıcı olarak sil?</string>
<string name="title_synchronize_folder">Senkronize et (iletileri al)</string>
<string name="title_after">Senkronize (günler)</string>
<string name="title_folder_unified">Birleştirilmiş gelen kutusu</string>
<string name="title_folder_inbox">Gelen kutusu</string>
<string name="title_folder_outbox">Giden Kutusu</string>
<string name="title_folder_all">Arşiv</string>
<string name="title_folder_drafts">Taslaklar</string>
<string name="title_folder_trash">Çöp Kutusu</string>
<string name="title_folder_junk">Spam</string>
<string name="title_folder_sent">Sent</string>
<string name="title_folder_user">User</string>
<string name="title_folder_primary">Folders primary account</string>
<string name="title_folder_thread">Message thread</string>
<string name="title_no_messages">No messages</string>
<string name="title_link">link</string>
<string name="title_image">image</string>
<string name="title_show_images">Show images</string>
<string name="title_subject_reply">Re: %1$s</string>
<string name="title_subject_forward">Fwd: %1$s</string>
<string name="title_thread">Show thread</string>
<string name="title_seen">Mark read</string>
<string name="title_unseen">Mark unread</string>
<string name="title_forward">Forward</string>
<string name="title_reply_all">Reply to all</string>
<string name="title_trash">Trash</string>
<string name="title_folder_sent">Gönderilen</string>
<string name="title_folder_user">Kullanıcı</string>
<string name="title_folder_primary">Klasörler birincil hesap</string>
<string name="title_folder_thread">İleti dizisi</string>
<string name="title_no_messages">İleti yok</string>
<string name="title_link">bağlantı</string>
<string name="title_image">resim</string>
<string name="title_show_images">Resimleri göster</string>
<string name="title_subject_reply">Ynt: %1$s</string>
<string name="title_subject_forward">İlet: %1$s</string>
<string name="title_thread">Konuyu göster</string>
<string name="title_seen">Okundu olarak işaretle</string>
<string name="title_unseen">Okunmadı olarak işaretle</string>
<string name="title_forward">İlet</string>
<string name="title_reply_all">Tümünü yanıtla</string>
<string name="title_trash">Çöp Kutusu</string>
<string name="title_spam">Spam</string>
<string name="title_move">Move</string>
<string name="title_archive">Archive</string>
<string name="title_reply">Reply</string>
<string name="title_moving">Moving message to %1$s</string>
<string name="title_no_viewer">No viewer app available for %1$s</string>
<string name="title_attachment_saved">Attachment saved</string>
<string name="title_ask_delete">Delete message permanently?</string>
<string name="title_ask_spam">Report message as spam?</string>
<string name="title_compose">Compose</string>
<string name="title_from">From:</string>
<string name="title_to">To:</string>
<string name="title_reply_to">Reply to:</string>
<string name="title_move">Taşı</string>
<string name="title_archive">Arşivle</string>
<string name="title_reply">Yanıtla</string>
<string name="title_moving">İleti şuraya taşınıyor %1$s</string>
<string name="title_no_viewer">%1$s için kullanılabilir hiçbir görüntüleme uygulaması yok</string>
<string name="title_attachment_saved">Ek kaydedildi</string>
<string name="title_ask_delete">İletiyi kalıcı olarak sil?</string>
<string name="title_ask_spam">İletiyi spam olarak raporla?</string>
<string name="title_compose">Oluştur</string>
<string name="title_from">Gönderen:</string>
<string name="title_to">Alıcı:</string>
<string name="title_reply_to">Yanıt adresi:</string>
<string name="title_cc">CC:</string>
<string name="title_bcc">BCC:</string>
<string name="title_subject">Subject:</string>
<string name="title_body_hint">Your message</string>
<string name="title_save">Save</string>
<string name="title_send">Send</string>
<string name="title_show_addresses">Show CC/BCC</string>
<string name="title_add_attachment">Add attachment</string>
<string name="title_no_openpgp">OpenPGP not available</string>
<string name="title_not_encrypted">Encrypted message not found</string>
<string name="title_encrypt">Encrypt</string>
<string name="title_decrypt">Decrypt</string>
<string name="title_from_missing">Sender missing</string>
<string name="title_to_missing">Recipient missing</string>
<string name="title_attachments_missing">Attachments still loading</string>
<string name="title_draft_trashed">Draft trashed</string>
<string name="title_draft_saved">Draft saved</string>
<string name="title_queued">Sending message</string>
<string name="title_search">Search</string>
<string name="title_search_hint">Search sender/subject/text</string>
<string name="title_searching">Searching \'%1$s\'</string>
<string name="title_answer_reply">Standard reply</string>
<string name="title_answer_name">Answer name</string>
<string name="title_answer_text">Answer text</string>
<string name="title_subject">Konu:</string>
<string name="title_body_hint">Mesajınız</string>
<string name="title_save">Kaydet</string>
<string name="title_send">Gönder</string>
<string name="title_show_addresses">CC/BCC göster</string>
<string name="title_add_attachment">Ek ekle</string>
<string name="title_no_openpgp">OpenPGP mevcut değil</string>
<string name="title_not_encrypted">Şifreli ileti bulunamadı</string>
<string name="title_encrypt">Şifrele</string>
<string name="title_decrypt">Şifre çöz</string>
<string name="title_from_missing">Gönderici Eksik</string>
<string name="title_to_missing">Alıcı eksik</string>
<string name="title_attachments_missing">Ekler hala yükleniyor</string>
<string name="title_draft_trashed">Taslak çöp kutusuna atıldı</string>
<string name="title_draft_saved">Taslak kaydedildi</string>
<string name="title_queued">İleti gönderiliyor</string>
<string name="title_search">Ara</string>
<string name="title_search_hint">Gönderen/konu/metin ara</string>
<string name="title_searching">\'%1$s\' aranıyor</string>
<string name="title_answer_reply">Standart yanıt</string>
<string name="title_answer_name">Yanıt adı</string>
<string name="title_answer_text">Yanıt metni</string>
<string name="title_legend_cc">CC/BCC</string>
<string name="title_legend_attachment">Attachment</string>
<string name="title_legend_synchronize">Synchronize</string>
<string name="title_legend_primary">Primary</string>
<string name="title_legend_disconnected">Disconnected</string>
<string name="title_legend_connecting">Connecting</string>
<string name="title_legend_connected">Connected</string>
<string name="title_legend_synchronizing">Synchronizing</string>
<string name="title_legend_closing">Closing</string>
<string name="title_hint_actions">Swipe left to trash; swipe right to archive (if available); long press to mark read/unread</string>
<string name="title_understood">Understood</string>
<string name="title_pro_feature">This is a pro feature</string>
<string name="title_pro_list">List of pro features</string>
<string name="title_pro_purchase">Buy</string>
<string name="title_pro_hint">Buying pro features will allow you to use all current and future pro features and will keep this app maintained and supported</string>
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
<string name="title_legend_attachment">Ek</string>
<string name="title_legend_synchronize">Senkronize et</string>
<string name="title_legend_primary">Birincil</string>
<string name="title_legend_disconnected">Bağlantı kesildi</string>
<string name="title_legend_connecting">Bağlanıyor</string>
<string name="title_legend_connected">Bağlandı</string>
<string name="title_legend_synchronizing">Senkronize ediliyor</string>
<string name="title_legend_closing">Kapatılıyor</string>
<string name="title_hint_actions">Silmek için sola kaydırın; arşivlemek (mümkün ise) için sağa kaydırın; okundu/okunmadı işaretlemek için uzun basın</string>
<string name="title_understood">Anlaşıldı</string>
<string name="title_pro_feature">Bu Pro özelliğidir</string>
<string name="title_pro_list">Pro özelliklerin listesi</string>
<string name="title_pro_purchase">Satın al</string>
<string name="title_pro_hint">Pro özelliklerin satın alınması, mevcut ve gelecekteki tüm pro özelliklerin kullanılmasına izin verecek ve bu uygulamayı ayakta tutup destekleyecek</string>
<string name="title_pro_activated">Tüm pro özellikleri etkinleştirildi</string>
<string name="title_pro_valid">Tüm pro özellikleri etkinleştirildi</string>
<string name="title_pro_invalid">Geçersiz yanıt</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Hata ayıklama bilgisi</string>
<string name="title_debug_info_remark">Lütfen sorunu açıklayın ve sorunun zamanını belirtin:</string>
</resources>

+ 1
- 0
app/src/main/res/values-uk/strings.xml View File

@ -182,6 +182,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-vi/strings.xml View File

@ -170,6 +170,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values-zh-rCN/strings.xml View File

@ -170,6 +170,7 @@
<string name="title_pro_activated">专业版功能已激活</string>
<string name="title_pro_valid">专业版功能已激活</string>
<string name="title_pro_invalid">无效的响应</string>
<string name="title_log">Log</string>
<string name="title_debug_info">调试信息</string>
<string name="title_debug_info_remark">请描述问题及问题发生的时间:</string>
</resources>

+ 1
- 0
app/src/main/res/values-zh-rTW/strings.xml View File

@ -170,6 +170,7 @@
<string name="title_pro_activated">All pro features are activated</string>
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

+ 1
- 0
app/src/main/res/values/strings.xml View File

@ -207,6 +207,7 @@
<string name="title_pro_valid">All pro features activated</string>
<string name="title_pro_invalid">Invalid response</string>
<string name="title_log">Log</string>
<string name="title_debug_info">Debug info</string>
<string name="title_debug_info_remark">Please describe the problem and indicate the time of the problem:</string>
</resources>

Loading…
Cancel
Save