From 59a02af2b7f009fb04a64589e186d31e0af46774 Mon Sep 17 00:00:00 2001 From: the-djmaze <> Date: Sun, 24 Mar 2024 19:13:47 +0100 Subject: [PATCH] Languages use rfc5646, by using the shortest ISO 639 code by default --- .../RainLoop/Actions/Localization.php | 19 +- snappymail/v/0.0.0/app/localization/README | 4 +- .../{bg-BG => bg}/relativetimeformat.js | 0 .../localization/{bg-BG => bg}/static.json | 0 .../app/localization/{bg-BG => bg}/user.json | 0 .../app/localization/{de-DE => de}/admin.json | 0 .../{de-DE => de}/relativetimeformat.js | 0 .../localization/{de-DE => de}/static.json | 0 .../app/localization/{de-DE => de}/user.json | 0 .../v/0.0.0/app/localization/en-GB/user.json | 622 ------------------ .../v/0.0.0/app/localization/en/admin.json | 2 +- .../app/localization/{es-ES => es}/admin.json | 0 .../{es-ES => es}/relativetimeformat.js | 0 .../localization/{es-ES => es}/static.json | 0 .../app/localization/{es-ES => es}/user.json | 0 .../app/localization/{fi-FI => fi}/admin.json | 0 .../{fi-FI => fi}/relativetimeformat.js | 0 .../localization/{fi-FI => fi}/static.json | 0 .../app/localization/{fi-FI => fi}/user.json | 0 .../app/localization/{fr-FR => fr}/admin.json | 0 .../{fr-FR => fr}/relativetimeformat.js | 0 .../localization/{fr-FR => fr}/static.json | 0 .../app/localization/{fr-FR => fr}/user.json | 0 .../app/localization/{hu-HU => hu}/admin.json | 0 .../{hu-HU => hu}/relativetimeformat.js | 0 .../localization/{hu-HU => hu}/static.json | 0 .../app/localization/{hu-HU => hu}/user.json | 0 .../app/localization/{id-ID => id}/admin.json | 0 .../{id-ID => id}/relativetimeformat.js | 0 .../localization/{id-ID => id}/static.json | 0 .../app/localization/{id-ID => id}/user.json | 0 .../{is-IS => is}/relativetimeformat.js | 0 .../localization/{is-IS => is}/static.json | 0 .../app/localization/{is-IS => is}/user.json | 0 .../app/localization/{it-IT => it}/admin.json | 0 .../{it-IT => it}/relativetimeformat.js | 0 .../localization/{it-IT => it}/static.json | 0 .../app/localization/{it-IT => it}/user.json | 0 .../v/0.0.0/app/localization/langs.json | 79 ++- .../app/localization/{lt-LT => lt}/admin.json | 0 .../{lt-LT => lt}/relativetimeformat.js | 0 .../localization/{lt-LT => lt}/static.json | 0 .../app/localization/{lt-LT => lt}/user.json | 0 .../{lv-LV => lv}/relativetimeformat.js | 0 .../localization/{lv-LV => lv}/static.json | 0 .../app/localization/{lv-LV => lv}/user.json | 0 .../app/localization/{nl-NL => nl}/admin.json | 0 .../{nl-NL => nl}/relativetimeformat.js | 0 .../localization/{nl-NL => nl}/static.json | 0 .../app/localization/{nl-NL => nl}/user.json | 0 .../app/localization/{pl-PL => pl}/admin.json | 0 .../{pl-PL => pl}/relativetimeformat.js | 0 .../localization/{pl-PL => pl}/static.json | 0 .../app/localization/{pl-PL => pl}/user.json | 0 .../v/0.0.0/app/localization/pt-PT/admin.json | 185 ------ .../localization/pt-PT/relativetimeformat.js | 76 --- .../0.0.0/app/localization/pt-PT/static.json | 9 - .../v/0.0.0/app/localization/pt-PT/user.json | 622 ------------------ .../{ro-RO => ro}/relativetimeformat.js | 0 .../localization/{ro-RO => ro}/static.json | 0 .../app/localization/{ro-RO => ro}/user.json | 0 .../app/localization/{ru-RU => ru}/admin.json | 0 .../{ru-RU => ru}/relativetimeformat.js | 0 .../localization/{ru-RU => ru}/static.json | 0 .../app/localization/{ru-RU => ru}/user.json | 0 .../app/localization/{sk-SK => sk}/admin.json | 0 .../{sk-SK => sk}/relativetimeformat.js | 0 .../localization/{sk-SK => sk}/static.json | 0 .../app/localization/{sk-SK => sk}/user.json | 0 .../{tr-TR => tr}/relativetimeformat.js | 0 .../localization/{tr-TR => tr}/static.json | 0 .../app/localization/{tr-TR => tr}/user.json | 0 72 files changed, 54 insertions(+), 1564 deletions(-) rename snappymail/v/0.0.0/app/localization/{bg-BG => bg}/relativetimeformat.js (100%) rename snappymail/v/0.0.0/app/localization/{bg-BG => bg}/static.json (100%) rename snappymail/v/0.0.0/app/localization/{bg-BG => bg}/user.json (100%) rename snappymail/v/0.0.0/app/localization/{de-DE => de}/admin.json (100%) rename snappymail/v/0.0.0/app/localization/{de-DE => de}/relativetimeformat.js (100%) rename snappymail/v/0.0.0/app/localization/{de-DE => de}/static.json (100%) rename snappymail/v/0.0.0/app/localization/{de-DE => de}/user.json (100%) delete mode 100644 snappymail/v/0.0.0/app/localization/en-GB/user.json rename snappymail/v/0.0.0/app/localization/{es-ES => es}/admin.json (100%) rename snappymail/v/0.0.0/app/localization/{es-ES => es}/relativetimeformat.js (100%) rename snappymail/v/0.0.0/app/localization/{es-ES => es}/static.json (100%) rename snappymail/v/0.0.0/app/localization/{es-ES => es}/user.json (100%) rename snappymail/v/0.0.0/app/localization/{fi-FI => fi}/admin.json (100%) rename snappymail/v/0.0.0/app/localization/{fi-FI => fi}/relativetimeformat.js (100%) rename snappymail/v/0.0.0/app/localization/{fi-FI => fi}/static.json (100%) rename snappymail/v/0.0.0/app/localization/{fi-FI => fi}/user.json (100%) rename snappymail/v/0.0.0/app/localization/{fr-FR => fr}/admin.json (100%) rename snappymail/v/0.0.0/app/localization/{fr-FR => fr}/relativetimeformat.js (100%) rename snappymail/v/0.0.0/app/localization/{fr-FR => fr}/static.json (100%) rename snappymail/v/0.0.0/app/localization/{fr-FR => fr}/user.json (100%) rename snappymail/v/0.0.0/app/localization/{hu-HU => hu}/admin.json (100%) rename snappymail/v/0.0.0/app/localization/{hu-HU => hu}/relativetimeformat.js (100%) rename snappymail/v/0.0.0/app/localization/{hu-HU => hu}/static.json (100%) rename snappymail/v/0.0.0/app/localization/{hu-HU => hu}/user.json (100%) rename snappymail/v/0.0.0/app/localization/{id-ID => id}/admin.json (100%) rename snappymail/v/0.0.0/app/localization/{id-ID => id}/relativetimeformat.js (100%) rename snappymail/v/0.0.0/app/localization/{id-ID => id}/static.json (100%) rename snappymail/v/0.0.0/app/localization/{id-ID => id}/user.json (100%) rename snappymail/v/0.0.0/app/localization/{is-IS => is}/relativetimeformat.js (100%) rename snappymail/v/0.0.0/app/localization/{is-IS => is}/static.json (100%) rename snappymail/v/0.0.0/app/localization/{is-IS => is}/user.json (100%) rename snappymail/v/0.0.0/app/localization/{it-IT => it}/admin.json (100%) rename snappymail/v/0.0.0/app/localization/{it-IT => it}/relativetimeformat.js (100%) rename snappymail/v/0.0.0/app/localization/{it-IT => it}/static.json (100%) rename snappymail/v/0.0.0/app/localization/{it-IT => it}/user.json (100%) rename snappymail/v/0.0.0/app/localization/{lt-LT => lt}/admin.json (100%) rename snappymail/v/0.0.0/app/localization/{lt-LT => lt}/relativetimeformat.js (100%) rename snappymail/v/0.0.0/app/localization/{lt-LT => lt}/static.json (100%) rename snappymail/v/0.0.0/app/localization/{lt-LT => lt}/user.json (100%) rename snappymail/v/0.0.0/app/localization/{lv-LV => lv}/relativetimeformat.js (100%) rename snappymail/v/0.0.0/app/localization/{lv-LV => lv}/static.json (100%) rename snappymail/v/0.0.0/app/localization/{lv-LV => lv}/user.json (100%) rename snappymail/v/0.0.0/app/localization/{nl-NL => nl}/admin.json (100%) rename snappymail/v/0.0.0/app/localization/{nl-NL => nl}/relativetimeformat.js (100%) rename snappymail/v/0.0.0/app/localization/{nl-NL => nl}/static.json (100%) rename snappymail/v/0.0.0/app/localization/{nl-NL => nl}/user.json (100%) rename snappymail/v/0.0.0/app/localization/{pl-PL => pl}/admin.json (100%) rename snappymail/v/0.0.0/app/localization/{pl-PL => pl}/relativetimeformat.js (100%) rename snappymail/v/0.0.0/app/localization/{pl-PL => pl}/static.json (100%) rename snappymail/v/0.0.0/app/localization/{pl-PL => pl}/user.json (100%) delete mode 100644 snappymail/v/0.0.0/app/localization/pt-PT/admin.json delete mode 100644 snappymail/v/0.0.0/app/localization/pt-PT/relativetimeformat.js delete mode 100644 snappymail/v/0.0.0/app/localization/pt-PT/static.json delete mode 100644 snappymail/v/0.0.0/app/localization/pt-PT/user.json rename snappymail/v/0.0.0/app/localization/{ro-RO => ro}/relativetimeformat.js (100%) rename snappymail/v/0.0.0/app/localization/{ro-RO => ro}/static.json (100%) rename snappymail/v/0.0.0/app/localization/{ro-RO => ro}/user.json (100%) rename snappymail/v/0.0.0/app/localization/{ru-RU => ru}/admin.json (100%) rename snappymail/v/0.0.0/app/localization/{ru-RU => ru}/relativetimeformat.js (100%) rename snappymail/v/0.0.0/app/localization/{ru-RU => ru}/static.json (100%) rename snappymail/v/0.0.0/app/localization/{ru-RU => ru}/user.json (100%) rename snappymail/v/0.0.0/app/localization/{sk-SK => sk}/admin.json (100%) rename snappymail/v/0.0.0/app/localization/{sk-SK => sk}/relativetimeformat.js (100%) rename snappymail/v/0.0.0/app/localization/{sk-SK => sk}/static.json (100%) rename snappymail/v/0.0.0/app/localization/{sk-SK => sk}/user.json (100%) rename snappymail/v/0.0.0/app/localization/{tr-TR => tr}/relativetimeformat.js (100%) rename snappymail/v/0.0.0/app/localization/{tr-TR => tr}/static.json (100%) rename snappymail/v/0.0.0/app/localization/{tr-TR => tr}/user.json (100%) diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Localization.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Localization.php index 3af73d4f7..296b5ddc4 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Localization.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Actions/Localization.php @@ -34,6 +34,7 @@ trait Localization $aHelper = array( 'ar' => 'ar-SA', + 'be' => 'be-BY', 'cn' => 'zh-CN', 'cs' => 'cs-CZ', 'da' => 'da-DK', @@ -60,18 +61,22 @@ trait Localization return $sLanguage; } - $sLanguage = \preg_replace('/^([a-zA-Z]{2})$/', '\1-\1', $sLanguage); - - $sLanguage = \preg_replace_callback('/-([a-zA-Z]{2})$/', function ($aData) { - return \strtoupper($aData[0]); - }, $sLanguage); - if (\in_array($sLanguage, $aLang)) { - return $sLanguage; + if (\str_contains($sLanguage, '-')) { + $sLanguage = \strtok($sLanguage, '-'); + if (\in_array($sLanguage, $aLang)) { + return $sLanguage; + } } if (\in_array($sDefault, $aLang)) { return $sDefault; } + if (\str_contains($sDefault, '-')) { + $sDefault = \strtok($sDefault, '-'); + if (\in_array($sDefault, $aLang)) { + return $sDefault; + } + } if ($bAllowEmptyResult) { return ''; diff --git a/snappymail/v/0.0.0/app/localization/README b/snappymail/v/0.0.0/app/localization/README index 180dca837..e5cd1c388 100644 --- a/snappymail/v/0.0.0/app/localization/README +++ b/snappymail/v/0.0.0/app/localization/README @@ -8,8 +8,8 @@ locale examples: en, en-US, nl, nl-NL https://github.com/the-djmaze/snappymail/issues/435 -https://tools.ietf.org/html/rfc1766 -https://tools.ietf.org/html/rfc3066 +https://datatracker.ietf.org/doc/html/rfc5646 + https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes https://en.wikipedia.org/wiki/IETF_language_tag http://www.w3.org/WAI/ER/IG/ert/iso639.htm diff --git a/snappymail/v/0.0.0/app/localization/bg-BG/relativetimeformat.js b/snappymail/v/0.0.0/app/localization/bg/relativetimeformat.js similarity index 100% rename from snappymail/v/0.0.0/app/localization/bg-BG/relativetimeformat.js rename to snappymail/v/0.0.0/app/localization/bg/relativetimeformat.js diff --git a/snappymail/v/0.0.0/app/localization/bg-BG/static.json b/snappymail/v/0.0.0/app/localization/bg/static.json similarity index 100% rename from snappymail/v/0.0.0/app/localization/bg-BG/static.json rename to snappymail/v/0.0.0/app/localization/bg/static.json diff --git a/snappymail/v/0.0.0/app/localization/bg-BG/user.json b/snappymail/v/0.0.0/app/localization/bg/user.json similarity index 100% rename from snappymail/v/0.0.0/app/localization/bg-BG/user.json rename to snappymail/v/0.0.0/app/localization/bg/user.json diff --git a/snappymail/v/0.0.0/app/localization/de-DE/admin.json b/snappymail/v/0.0.0/app/localization/de/admin.json similarity index 100% rename from snappymail/v/0.0.0/app/localization/de-DE/admin.json rename to snappymail/v/0.0.0/app/localization/de/admin.json diff --git a/snappymail/v/0.0.0/app/localization/de-DE/relativetimeformat.js b/snappymail/v/0.0.0/app/localization/de/relativetimeformat.js similarity index 100% rename from snappymail/v/0.0.0/app/localization/de-DE/relativetimeformat.js rename to snappymail/v/0.0.0/app/localization/de/relativetimeformat.js diff --git a/snappymail/v/0.0.0/app/localization/de-DE/static.json b/snappymail/v/0.0.0/app/localization/de/static.json similarity index 100% rename from snappymail/v/0.0.0/app/localization/de-DE/static.json rename to snappymail/v/0.0.0/app/localization/de/static.json diff --git a/snappymail/v/0.0.0/app/localization/de-DE/user.json b/snappymail/v/0.0.0/app/localization/de/user.json similarity index 100% rename from snappymail/v/0.0.0/app/localization/de-DE/user.json rename to snappymail/v/0.0.0/app/localization/de/user.json diff --git a/snappymail/v/0.0.0/app/localization/en-GB/user.json b/snappymail/v/0.0.0/app/localization/en-GB/user.json deleted file mode 100644 index 36dffb0b3..000000000 --- a/snappymail/v/0.0.0/app/localization/en-GB/user.json +++ /dev/null @@ -1,622 +0,0 @@ -{ - "LANG_DIR": "ltr", - "GLOBAL": { - "TO_ARCHIVE": "Archive", - "ARE_YOU_SURE": "Are you sure?", - "BACK": "Back", - "BCC": "Bcc", - "CANCEL": "Cancel", - "CC": "Cc", - "CLEAR": "Clear", - "CLOSE": "Close", - "CONTACTS": "Contacts", - "DELETE": "Delete", - "DONE": "Done", - "EMAIL": "Email", - "FROM": "From", - "LOADING": "Loading", - "LOGOUT": "Logout", - "MORE": "More", - "MOVE_TO": "Move To", - "NAME": "Name", - "NONE": "None", - "TO_SPAM": "Move message(s) to Spam", - "NOT_SPAM": "Not Spam", - "USERNAME": "Username", - "PASSWORD": "Password", - "REMEMBER": "Remember", - "REPLY_TO": "Reply-To", - "SAVE": "Save", - "SAVE_CHANGES": "Save changes?", - "SEARCH": "Search", - "SPAM": "Spam", - "SUBJECT": "Subject", - "TEST": "Test", - "TO": "To", - "SERVER_MESSAGE": "Server message", - "YES": "Yes", - "NO": "No", - "INACTIVE": "Inactive", - "DEFAULT": "default", - "HELP": "Help", - "TEXT": "Text", - "ATTACHMENTS": "Attachments" - }, - "LOGIN": { - "LABEL_LOGIN": "Login", - "LABEL_SIGN_ME": "Remember Me", - "BUTTON_SIGN_IN": "Sign In" - }, - "TOP_TOOLBAR": { - "BUTTON_ADD_ACCOUNT": "Add Account" - }, - "SEARCH": { - "TITLE_ADV": "Advanced Search", - "TEXT": "Text", - "HAS_ATTACHMENT": "Has attachment", - "FLAGGED": "Flagged", - "UNSEEN": "Unseen", - "DATE": "Date", - "DATE_ALL": "All", - "DATE_3_DAYS": "Up to 3 days old", - "DATE_7_DAYS": "Up to 1 week old", - "DATE_MONTH": "Up to 1 month old", - "DATE_3_MONTHS": "Up to 3 months old", - "DATE_6_MONTHS": "Up to 6 months old", - "DATE_YEAR": "Up to 1 year old", - "SUBFOLDERS": "Subfolders", - "SUBFOLDERS_NONE": "None", - "SUBFOLDERS_SUBTREE": "All", - "SUBFOLDERS_SUBTREE_ONE": "One level", - "REPLIED": "Answered", - "KEYWORD": "Tag" - }, - "FOLDER_LIST": { - "BUTTON_COMPOSE": "Compose", - "BUTTON_NEW_MESSAGE": "New message", - "INBOX_NAME": "Inbox", - "SENT_NAME": "Sent", - "DRAFTS_NAME": "Drafts", - "TRASH_NAME": "Deleted", - "ARCHIVE_NAME": "Archive" - }, - "QUOTA": { - "TITLE": "Quota usage" - }, - "MESSAGE_LIST": { - "BUTTON_RELOAD": "Reload Message List", - "BUTTON_EMPTY_FOLDER": "Clear Folder", - "BUTTON_MULTY_FORWARD": "Forward as attachment(s)", - "BUTTON_DELETE_WITHOUT_MOVE": "Delete permanently", - "MENU_SET_SEEN": "Mark as read", - "MENU_SET_ALL_SEEN": "Mark all as read", - "MENU_UNSET_SEEN": "Mark as unread", - "MENU_SET_FLAG": "Flag", - "MENU_UNSET_FLAG": "Unflag", - "MENU_SELECT_ALL": "All", - "MENU_SELECT_INVERT": "Invert", - "MENU_SELECT_UNSEEN": "Unread", - "MENU_SELECT_SEEN": "Read", - "MENU_SELECT_FLAGGED": "Flagged", - "MENU_SELECT_UNFLAGGED": "Unflagged", - "DOWNLOAD_ALL_ATTACHMENTS": "Download all attachments", - "EMPTY_LIST": "Empty list.", - "EMPTY_SEARCH_LIST": "No messages matched your search.", - "SEARCH_RESULT_FOR": "Search results for \"%SEARCH%\"", - "BACK_TO_MESSAGE_LIST": "back to message list", - "PUT_MESSAGE_HERE": "Drop message here to view it in the list", - "TODAY_AT": "today at %TIME%", - "YESTERDAY_AT": "yesterday at %TIME%", - "NEW_MESSAGE_NOTIFICATION": "You have %COUNT% new messages!", - "QUOTA_SIZE": "Using %SIZE% (%PROC%%)<\/strong> of your %LIMIT%<\/strong>", - "SORT": "Sort", - "NO_SORT": "Mail server does not support sorting", - "SORT_DATE_ASC": "Date ascending", - "SORT_DATE_DESC": "Date descending", - "SORT_SIZE_ASC": "Size ascending", - "SORT_SIZE_DESC": "Size descending", - "SORT_SUBJECT_ASC": "Subject A-Z", - "SORT_SUBJECT_DESC": "Subject Z-A", - "SORT_FROM_ASC": "From A-Z", - "SORT_FROM_DESC": "From Z-A" - }, - "MESSAGE": { - "BUTTON_EDIT": "Edit", - "BUTTON_UNSUBSCRIBE": "Unsubscribe from this list", - "BUTTON_REPLY": "Reply", - "BUTTON_REPLY_ALL": "Reply All", - "BUTTON_FORWARD": "Forward", - "BUTTON_FORWARD_AS_ATTACHMENT": "Forward as attachment", - "BUTTON_EDIT_AS_NEW": "Edit as New", - "BUTTON_SHOW_IMAGES": "Display external images", - "BUTTON_NOTIFY_READ_RECEIPT": "The sender has asked to be notified when you read this message.", - "BUTTON_IN_NEW_WINDOW": "View in separate window", - "BUTTON_THREAD_LIST": "Thread list", - "BUTTON_THREAD_PREV": "Previous", - "BUTTON_THREAD_NEXT": "Next", - "BUTTON_THREAD_MORE": "More messages", - "MENU_HEADERS": "Show message headers", - "MENU_VIEW_ORIGINAL": "Show Source", - "HTML_VIEW": "View HTML message", - "PLAIN_VIEW": "View plain text message", - "SWAP_COLORS": "Swap default (background)color", - "MENU_DOWNLOAD_ORIGINAL": "Download as .eml file", - "MENU_FILTER_SIMILAR": "Filter messages like this", - "MENU_PRINT": "Print", - "EMPTY_SUBJECT_TEXT": "(No subject)", - "LABEL_DATE": "Date", - "LABEL_FROM_SHORT": "from", - "LABEL_TO_SHORT": "to", - "PRINT_LABEL_ATTACHMENTS": "Attachments", - "MESSAGE_VIEW_DESC": "Select any message in the list to view it here.", - "MESSAGE_VIEW_MOVE_DESC": "Click folder name in the left panel to select the destination.", - "LINK_DOWNLOAD_AS_ZIP": "Download as zip", - "SPAM_SCORE": "Spam Score", - "HAS_VIRUS_WARNING": "WARNING: virus detected", - "TAGS": "Tags", - "NEW_TAG": "New tag", - "ENABLE_TRACKING_LINKS": "Enable tracking links", - "TRACKING_ENABLED": "Links are now tracked when clicked!" - }, - "MESSAGE_TAGS": { - "$important": "Important", - "$todo": "To Do", - "$label1": "Important", - "$label2": "Work", - "$label3": "Personal", - "$label4": "To Do", - "$label5": "Later" - }, - "READ_RECEIPT": { - "SUBJECT": "Return Receipt (displayed) - %SUBJECT%", - "BODY": "This is a Return Receipt for the mail that you sent to %READ-RECEIPT%.\n\nNote: \"This Return Receipt only acknowledges that the message was displayed on the recipient's computer.\"\nThere is no guarantee that the recipient has read or understood the message contents.\n" - }, - "SUGGESTIONS": { - "SEARCHING_DESC": "Searching..." - }, - "CONTACTS": { - "TAB_CONTACT": "Contact", - "TAB_LOCATIONS": "Locations", - "TAB_BUSINESS": "Business", - "LABEL_ORGANIZATION": "Organization", - "LABEL_DEPARTMENT": "Department", - "LABEL_TITLE": "Title", - "TAB_CRYPTO": "Crypto", - "ASK": "Ask", - "NEVER": "Never", - "ALWAYS": "Always", - "ALWAYS_IF_POSSIBLE": "Always if possible", - "BUTTON_ADD_CONTACT": "Add Contact", - "BUTTON_CREATE_CONTACT": "Create", - "BUTTON_UPDATE_CONTACT": "Update", - "BUTTON_IMPORT": "Import (csv, vcf, vCard)", - "BUTTON_EXPORT_VCARD": "Export (vcf, vCard)", - "BUTTON_EXPORT_CSV": "Export (csv)", - "ERROR_IMPORT_FILE": "Import error (invalid file format)", - "EMPTY_LIST": "No contacts here", - "EMPTY_SEARCH": "No contacts found", - "CLEAR_SEARCH": "Clear search", - "CONTACT_VIEW_DESC": "Select contact in the list to view it here.", - "LABEL_BIRTHDAY": "Birthday", - "PLACEHOLDER_ENTER_DISPLAY_NAME": "Enter display name", - "PLACEHOLDER_ENTER_LAST_NAME": "Enter last name", - "PLACEHOLDER_ENTER_FIRST_NAME": "Enter first name", - "PLACEHOLDER_ENTER_NICK_NAME": "Enter nickname", - "LABEL_READ_ONLY": "Read only", - "ADD_MENU_LABEL": "Add", - "ADD_MENU_NICKNAME": "Nickname", - "ADD_MENU_NOTE": "Notes", - "ADD_MENU_PHONE": "Phone", - "ADD_MENU_URL": "URL", - "ADD_MENU_ADDRESS": "Address", - "ADD_MENU_BIRTHDAY": "Birthday", - "ADD_MENU_TAGS": "Tags", - "BUTTON_SHARE_ALL": "Everyone", - "BUTTON_SYNC": "Synchronization (CardDAV)", - "SEND_TO_ALL_CONTACT_EMAILS": "Send to all contact emails" - }, - "COMPOSE": { - "LINK_SHOW_INPUTS": "show all fields", - "BUTTON_SEND": "Send", - "BUTTON_MINIMIZE": "Minimize", - "SAVED_TIME": "Saved at %TIME%", - "SAVED_ERROR_ON_SEND": "Message was sent but not saved to sent items folder", - "DISCARD_UNSAVED_DATA": "Discard unsaved data?", - "ATTACH_FILES": "Attach files", - "ATTACH_DROP_FILES_DESC": "Drop files here", - "REPLY_MESSAGE_TITLE": "%DATETIME%, %EMAIL% wrote", - "FORWARD_MESSAGE_TOP_TITLE": "-------- Forwarded message -------", - "FORWARD_MESSAGE_TOP_SENT": "Sent", - "EMPTY_TO_ERROR_DESC": "Please specify at least one recipient", - "NO_ATTACHMENTS_HERE_DESC": "No attachments here.", - "ATTACHMENTS_ERROR_DESC": "Warning! Not all attachments have been uploaded.", - "ATTACHMENTS_UPLOAD_ERROR_DESC": "Not all attachments have been uploaded yet.", - "ALLOW_SPELLCHECK": "Enable browser spelling checker", - "ALLOW_DRAFT_AUTOSAVE": "Automatically save draft", - "BUTTON_REQUEST_READ_RECEIPT": "Request a read receipt", - "BUTTON_MARK_AS_IMPORTANT": "Mark as important", - "BUTTON_REQUEST_DSN": "Request a delivery receipt", - "BUTTON_REQUIRE_TLS": "Require secure delivery", - "ERROR_EMPTY_BODY": "Message body is empty" - }, - "POPUPS_ASK": { - "EXIT_ARE_YOU_SURE": "Are you sure you want to exit?", - "DESC_WANT_CLOSE_THIS_WINDOW": "Are you sure you want to close this window?", - "DESC_WANT_DELETE_MESSAGES": "Are you sure you want to delete the message(s)?" - }, - "POPUPS_LANGUAGES": { - "TITLE_LANGUAGES": "Choose your language" - }, - "POPUPS_ADD_ACCOUNT": { - "TITLE_ADD_ACCOUNT": "Add Account?", - "BUTTON_ADD_ACCOUNT": "Add", - "TITLE_UPDATE_ACCOUNT": "Update Account?", - "BUTTON_UPDATE_ACCOUNT": "Update" - }, - "POPUPS_IDENTITY": { - "TITLE_ADD_IDENTITY": "Add Identity?", - "TITLE_UPDATE_IDENTITY": "Update Identity?", - "LABEL": "Label", - "BUTTON_ADD_IDENTITY": "Add", - "BUTTON_UPDATE_IDENTITY": "Update", - "SIGNATURE": "Signature", - "LABEL_SIGNATURE_INSERT_BEFORE": "Insert this signature before quoted text in replies" - }, - "POPUPS_CREATE_FOLDER": { - "TITLE_CREATE_FOLDER": "Create a folder", - "LABEL_PARENT": "Parent folder", - "BUTTON_CREATE": "Create", - "TITLE_CREATING_PROCESS": "Creating a folder" - }, - "POPUPS_CLEAR_FOLDER": { - "TITLE_CLEAR_FOLDER": "Purge all messages from the folder?", - "DANGER_DESC_WARNING": "Warning!", - "DANGER_DESC_HTML_1": "This action will result in removing all mails from %FOLDER%<\/strong> folder completely.", - "DANGER_DESC_HTML_2": "Once started, the process cannot be aborted or cancelled.", - "TITLE_CLEARING_PROCESS": "Purging the folder..." - }, - "CRYPTO": { - "SIGN": "Sign", - "ENCRYPT": "Encrypt", - "DECRYPT": "Decrypt", - "VERIFY": "Verify", - "GOOD_SIGNATURE": "Good signature from %USER%", - "ERROR": "%TYPE% error: %ERROR%", - "CREATE_SELF_SIGNED": "Create self-signed", - "VALID_UNTIL": "Valid until", - "PRIVATE_KEY": "Private key", - "CHANGE_PASS": "Change passphrase", - "CURRENT_PASS": "Current passphrase", - "NEW_PASS": "New passphrase", - "ASK_CRYPTKEY_PASS": "Your login passphrase has changed. Please fill in your old login password to decrypt data" - }, - "OPENPGP": { - "POPUP_IMPORT_TITLE": "Import OpenPGP key", - "POPUP_IMPORT_BUTTON": "Import", - "POPUP_VIEW_TITLE": "View OpenPGP key", - "POPUP_VIEW_BUTTON": "Select", - "POPUP_GENERATE_TITLE": "Generate OpenPGP key pair", - "POPUP_GENERATE_BUTTON": "Generate", - "LABEL_KEY_TYPE": "Type", - "SIGNED_MESSAGE": "OpenPGP signed message", - "ENCRYPTED_MESSAGE": "OpenPGP encrypted message", - "STORE_IN_GNUPG": "Store on server in GnuPG", - "STORE_PUBLIC_KEY_IN_GNUPG": "Store public key on server in GnuPG", - "STORE_PRIVATE_KEY_IN_GNUPG": "Store private key on server in GnuPG", - "BACKUP_ON_SERVER": "Store (encrypted) on server", - "BACKUP_PUBLIC_KEY_ON_SERVER": "Backup public key on server", - "BACKUP_PRIVATE_KEY_ON_SERVER": "Backup private key on server" - }, - "SMIME": { - "POPUP_IMPORT_TITLE": "Import S\/MIME certificate", - "CERTIFICATE": "Certificate", - "CERTIFICATES": "S\/MIME Certificates", - "SIGNED_MESSAGE": "S\/MIME signed message", - "ENCRYPTED_MESSAGE": "S\/MIME encrypted message", - "PRIVATE_KEY_OF": "S\/MIME private key of %EMAIL%" - }, - "POPUPS_FILTER": { - "TITLE_CREATE_FILTER": "Create a filter?", - "TITLE_EDIT_FILTER": "Update filter?", - "LEGEND_CONDITIONS": "Conditions", - "LEGEND_ACTIONS": "Actions", - "BUTTON_ADD_CONDITION": "Add a Condition", - "SELECT_ACTION_MOVE_TO": "Move to", - "SELECT_ACTION_FORWARD_TO": "Forward to", - "SELECT_ACTION_REJECT": "Reject", - "SELECT_ACTION_VACATION_MESSAGE": "Vacation message", - "SELECT_ACTION_DISCARD": "Discard", - "SELECT_FIELD_RECIPIENTS": "Recipients (To or CC)", - "SELECT_FIELD_HEADER": "Header", - "SELECT_FIELD_BODY": "Body", - "SELECT_FIELD_SIZE": "Size", - "SELECT_TYPE_CONTAINS": "Contains", - "SELECT_TYPE_NOT_CONTAINS": "Not Contains", - "SELECT_TYPE_MATCHES": "Matches (* and ? supported)", - "SELECT_TYPE_NOT_MATCHES": "Not Matches (* and ? supported)", - "SELECT_TYPE_REGEXP": "Regexp", - "SELECT_TYPE_NOT_REGEXP": "Not Regexp", - "SELECT_TYPE_EQUAL_TO": "Equal To", - "SELECT_TYPE_NOT_EQUAL_TO": "Not Equal To", - "SELECT_TYPE_OVER": "Over", - "SELECT_TYPE_UNDER": "Under", - "SELECT_TYPE_TEXT": "Text", - "SELECT_TYPE_RAW": "Raw", - "SELECT_MATCH_ANY": "Matching ANY of the following rules", - "SELECT_MATCH_ALL": "Matching ALL of the following rules", - "MARK_AS_READ_LABEL": "Mark as read", - "REPLY_INTERVAL_LABEL": "Reply interval (days)", - "KEEP_LABEL": "Keep", - "STOP_LABEL": "Stop further processing of rules", - "VACATION_SUBJECT_LABEL": "Subject (optional)", - "VACATION_MESSAGE_LABEL": "Message", - "VACATION_RECIPIENTS_LABEL": "Recipients (comma separated)", - "REJECT_MESSAGE_LABEL": "Reject message", - "ALL_INCOMING_MESSAGES_DESC": "All incoming messages" - }, - "POPUPS_SIEVE_SCRIPT": { - "TITLE_CREATE": "Create Script", - "TITLE_EDIT": "Edit Script", - "BUTTON_ADD_FILTER": "Add a Filter", - "BUTTON_RAW_SCRIPT": "Use Custom User Script", - "CAPABILITY_LABEL": "Capabilities", - "CHANGES_NEED_TO_BE_SAVED_DESC": "These changes need to be saved to the server." - }, - "POPUPS_SYSTEM_FOLDERS": { - "TITLE_SYSTEM_FOLDERS": "Select system folders", - "SELECT_CHOOSE_ONE": "Choose one", - "SELECT_UNUSE_NAME": "Do not use", - "NOTIFICATION_SENT": "You haven't selected \"Sent\" system folder messages are put to after sending.\nIf you don't want to save sent message, please select \"Do not use\" option.\n", - "NOTIFICATION_DRAFTS": "You haven't selected \"Drafts\" system folder messages are saved to while composing.", - "NOTIFICATION_SPAM": "You haven't selected \"Spam\" system folder spamed messages are placed to.\nIf you wish to remove messages permanently, please select \"Do not use\" option.\n", - "NOTIFICATION_TRASH": "You haven't selected \"Deleted\" system folder deleted messages are placed to.\nIf you wish to remove messages permanently, please select \"Do not use\" option.\n", - "NOTIFICATION_ARCHIVE": "You haven't selected \"Archive\" system folder achived messages are placed to." - }, - "TITLES": { - "MAILBOX": "MailBox", - "SETTINGS": "Settings" - }, - "UPLOAD": { - "ERROR_FILE_IS_TOO_BIG": "File is too big", - "ERROR_FILE_PARTIALLY_UPLOADED": "File was partially uploaded due to unknown error", - "ERROR_NO_FILE_UPLOADED": "No file uploaded", - "ERROR_MISSING_TEMP_FOLDER": "The temporary file is missing", - "ERROR_ON_SAVING_FILE": "Saving uploaded file failed", - "ERROR_FILE_TYPE": "Invalid file type", - "ERROR_UNKNOWN": "An unknown file upload error occurred" - }, - "EDITOR": { - "PLAIN": "HTML <-> TEXT", - "SOURCE": "HTML <-> SOURCE", - "FONTFAMILY": "Font family", - "FONTSIZE": "Font size", - "DIR": "Text direction", - "DIR_LTR": "Left to right", - "DIR_RTL": "Right to left", - "DIR_AUTO": "Automatic", - "TEXTCOLOR": "Text color", - "BACKGROUNDCOLOR": "Background color", - "BOLD": "Bold", - "ITALIC": "Italic", - "UNDERLINE": "Underline", - "STRIKE": "Strikethrough", - "SUB": "Subscript", - "SUP": "Superscript", - "OL": "Ordered list", - "UL": "Unordered list", - "QUOTE": "Blockquote", - "INDENTDECREASE": "Decrease indent", - "INDENTINCREASE": "Increase indent", - "LINK": "Link", - "IMAGEURL": "Image URL", - "IMAGEUPLOAD": "Image select", - "UNDO": "Undo", - "REDO": "Redo", - "REMOVESTYLE": "Remove style" - }, - "SETTINGS_LABELS": { - "GENERAL": "General", - "CONTACTS": "Contacts", - "FOLDERS": "Folders", - "ACCOUNTS": "Accounts", - "FILTERS": "Filters", - "SECURITY": "Security", - "THEMES": "Themes" - }, - "SETTINGS_FILTERS": { - "SIMPLE": "Simple", - "ADVANCED": "Advanced", - "BUTTON_ADD_SCRIPT": "Add a Script", - "SUBNAME_MOVE_TO": "Move to \"%FOLDER%\"", - "SUBNAME_FORWARD_TO": "Forward to \"%EMAIL%\"", - "SUBNAME_REJECT": "Reject", - "SUBNAME_VACATION_MESSAGE": "Vacation message", - "SUBNAME_DISCARD": "Discard" - }, - "SETTINGS_SECURITY": { - "LEGEND_SECURITY": "Security", - "LABEL_AUTOLOGOUT": "Auto Logout", - "AUTOLOGIN_NEVER_OPTION_NAME": "Never" - }, - "SETTINGS_GENERAL": { - "LANGUAGE": "Language", - "HOUR_FORMAT": "Hour format", - "IDENTITY": "Identity", - "LAYOUT": "Layout", - "LAYOUT_NO_SPLIT": "No Split", - "LAYOUT_VERTICAL_SPLIT": "Vertical Split", - "LAYOUT_HORIZONTAL_SPLIT": "Horizontal Split", - "SHOW_NEXT_MESSAGE": "Show next message when (re)move current message", - "EDITOR": "Default text editor", - "EDITOR_HTML": "Html", - "EDITOR_PLAIN": "Plain", - "VIEW_OPTIONS": "View options", - "USE_PREVIEW_PANE": "Use preview pane", - "HIDE_DELETED_MESSAGES": "Hide messages marked for deletion", - "USE_CHECKBOXES_IN_LIST": "Display checkboxes in list", - "USE_THREADS": "Use threads", - "REPLY_SAME_FOLDER": "Place replies in the folder of the message being replied to", - "PREFER_HTML": "Prefer HTML to plain text", - "PREFER_HTML_INFO": "Messages sometimes come in both formats. This option controls whether you want the HTML part or the plain text part to be displayed.", - "REMOVE_COLORS": "Remove background and text colors from message body", - "ALLOW_STYLES": "Allow