Cleanup and simplify i18n code

There's no need for I18N_NOTIFICATION_DATA and I18N_NOTIFICATION_MAP
Also bugfix: NEW_PASSWORD_FORBIDDENT => NEW_PASSWORD_FORBIDDEN
This commit is contained in:
djmaze 2021-01-04 12:08:41 +01:00
parent 950579c7f5
commit 0d13484cdc
20 changed files with 45 additions and 142 deletions

View file

@ -8,7 +8,7 @@ import {
import { KeyState } from 'Common/Enums';
import { rootAdmin, rootUser } from 'Common/Links';
import { initOnStartOrLangChange, initNotificationLanguage } from 'Common/Translator';
import { initOnStartOrLangChange } from 'Common/Translator';
import LanguageStore from 'Stores/Language';
import ThemeStore from 'Stores/Theme';
@ -94,7 +94,7 @@ class AbstractApp {
ko.components.register('CheckboxSimple', require('Component/Checkbox').default);
}
initOnStartOrLangChange(initNotificationLanguage);
initOnStartOrLangChange();
if (!mobile) {
// mobile

View file

@ -138,9 +138,9 @@ export const UploadErrorCode = {
Normal: 0,
FileIsTooBig: 1,
FilePartiallyUploaded: 2,
FileNoUploaded: 3,
NoFileUploaded: 3,
MissingTempFolder: 4,
FileOnSaveingError: 5,
OnSavingFile: 5,
FileType: 98,
Unknown: 99
};
@ -353,9 +353,6 @@ export const Notification = {
AccessError: 103,
ConnectionError: 104,
CaptchaError: 105,
SocialFacebookLoginAccessDisable: 106,
SocialTwitterLoginAccessDisable: 107,
SocialGoogleLoginAccessDisable: 108,
DomainNotAllowed: 109,
AccountNotAllowed: 110,
@ -416,8 +413,6 @@ export const Notification = {
JsonParse: 952,
// JsonTimeout: 953,
UnknownNotification: 999,
UnknownNotification: 998,
UnknownError: 999
,getKeyByValue: function(v) { return Object.keys(this).find(key => this[key] === v); }
};

View file

@ -4,74 +4,7 @@ import { langLink } from 'Common/Links';
let I18N_DATA = window.rainloopI18N || {};
const doc = document,
I18N_NOTIFICATION_DATA = {},
I18N_NOTIFICATION_MAP = [
[Notification.InvalidToken, 'NOTIFICATIONS/INVALID_TOKEN'],
[Notification.InvalidToken, 'NOTIFICATIONS/INVALID_TOKEN'],
[Notification.AuthError, 'NOTIFICATIONS/AUTH_ERROR'],
[Notification.AccessError, 'NOTIFICATIONS/ACCESS_ERROR'],
[Notification.ConnectionError, 'NOTIFICATIONS/CONNECTION_ERROR'],
[Notification.CaptchaError, 'NOTIFICATIONS/CAPTCHA_ERROR'],
[Notification.SocialFacebookLoginAccessDisable, 'NOTIFICATIONS/SOCIAL_FACEBOOK_LOGIN_ACCESS_DISABLE'],
[Notification.SocialTwitterLoginAccessDisable, 'NOTIFICATIONS/SOCIAL_TWITTER_LOGIN_ACCESS_DISABLE'],
[Notification.SocialGoogleLoginAccessDisable, 'NOTIFICATIONS/SOCIAL_GOOGLE_LOGIN_ACCESS_DISABLE'],
[Notification.DomainNotAllowed, 'NOTIFICATIONS/DOMAIN_NOT_ALLOWED'],
[Notification.AccountNotAllowed, 'NOTIFICATIONS/ACCOUNT_NOT_ALLOWED'],
[Notification.AccountTwoFactorAuthRequired, 'NOTIFICATIONS/ACCOUNT_TWO_FACTOR_AUTH_REQUIRED'],
[Notification.AccountTwoFactorAuthError, 'NOTIFICATIONS/ACCOUNT_TWO_FACTOR_AUTH_ERROR'],
[Notification.CouldNotSaveNewPassword, 'NOTIFICATIONS/COULD_NOT_SAVE_NEW_PASSWORD'],
[Notification.CurrentPasswordIncorrect, 'NOTIFICATIONS/CURRENT_PASSWORD_INCORRECT'],
[Notification.NewPasswordShort, 'NOTIFICATIONS/NEW_PASSWORD_SHORT'],
[Notification.NewPasswordWeak, 'NOTIFICATIONS/NEW_PASSWORD_WEAK'],
[Notification.NewPasswordForbidden, 'NOTIFICATIONS/NEW_PASSWORD_FORBIDDENT'],
[Notification.ContactsSyncError, 'NOTIFICATIONS/CONTACTS_SYNC_ERROR'],
[Notification.CantGetMessageList, 'NOTIFICATIONS/CANT_GET_MESSAGE_LIST'],
[Notification.CantGetMessage, 'NOTIFICATIONS/CANT_GET_MESSAGE'],
[Notification.CantDeleteMessage, 'NOTIFICATIONS/CANT_DELETE_MESSAGE'],
[Notification.CantMoveMessage, 'NOTIFICATIONS/CANT_MOVE_MESSAGE'],
[Notification.CantCopyMessage, 'NOTIFICATIONS/CANT_MOVE_MESSAGE'],
[Notification.CantSaveMessage, 'NOTIFICATIONS/CANT_SAVE_MESSAGE'],
[Notification.CantSendMessage, 'NOTIFICATIONS/CANT_SEND_MESSAGE'],
[Notification.InvalidRecipients, 'NOTIFICATIONS/INVALID_RECIPIENTS'],
[Notification.CantSaveFilters, 'NOTIFICATIONS/CANT_SAVE_FILTERS'],
[Notification.CantGetFilters, 'NOTIFICATIONS/CANT_GET_FILTERS'],
[Notification.FiltersAreNotCorrect, 'NOTIFICATIONS/FILTERS_ARE_NOT_CORRECT'],
[Notification.CantCreateFolder, 'NOTIFICATIONS/CANT_CREATE_FOLDER'],
[Notification.CantRenameFolder, 'NOTIFICATIONS/CANT_RENAME_FOLDER'],
[Notification.CantDeleteFolder, 'NOTIFICATIONS/CANT_DELETE_FOLDER'],
[Notification.CantDeleteNonEmptyFolder, 'NOTIFICATIONS/CANT_DELETE_NON_EMPTY_FOLDER'],
[Notification.CantSubscribeFolder, 'NOTIFICATIONS/CANT_SUBSCRIBE_FOLDER'],
[Notification.CantUnsubscribeFolder, 'NOTIFICATIONS/CANT_UNSUBSCRIBE_FOLDER'],
[Notification.CantSaveSettings, 'NOTIFICATIONS/CANT_SAVE_SETTINGS'],
[Notification.CantSavePluginSettings, 'NOTIFICATIONS/CANT_SAVE_PLUGIN_SETTINGS'],
[Notification.DomainAlreadyExists, 'NOTIFICATIONS/DOMAIN_ALREADY_EXISTS'],
[Notification.CantInstallPackage, 'NOTIFICATIONS/CANT_INSTALL_PACKAGE'],
[Notification.CantDeletePackage, 'NOTIFICATIONS/CANT_DELETE_PACKAGE'],
[Notification.InvalidPluginPackage, 'NOTIFICATIONS/INVALID_PLUGIN_PACKAGE'],
[Notification.UnsupportedPluginPackage, 'NOTIFICATIONS/UNSUPPORTED_PLUGIN_PACKAGE'],
[Notification.DemoSendMessageError, 'NOTIFICATIONS/DEMO_SEND_MESSAGE_ERROR'],
[Notification.DemoAccountError, 'NOTIFICATIONS/DEMO_ACCOUNT_ERROR'],
[Notification.AccountAlreadyExists, 'NOTIFICATIONS/ACCOUNT_ALREADY_EXISTS'],
[Notification.AccountDoesNotExist, 'NOTIFICATIONS/ACCOUNT_DOES_NOT_EXIST'],
[Notification.MailServerError, 'NOTIFICATIONS/MAIL_SERVER_ERROR'],
[Notification.InvalidInputArgument, 'NOTIFICATIONS/INVALID_INPUT_ARGUMENT'],
[Notification.UnknownNotification, 'NOTIFICATIONS/UNKNOWN_ERROR'],
[Notification.UnknownError, 'NOTIFICATIONS/UNKNOWN_ERROR']
];
const doc = document;
export const trigger = ko.observable(false);
@ -120,7 +53,9 @@ const i18nToNode = element => {
element.textContent = i18n(key);
}
}
};
},
getKeyByValue = (o, v) => Object.keys(o).find(key => o[key] === v);
/**
* @param {Object} elements
@ -132,13 +67,6 @@ export function i18nToNodes(element) {
, 1);
}
/**
* @returns {void}
*/
export function initNotificationLanguage() {
I18N_NOTIFICATION_MAP.forEach(item => I18N_NOTIFICATION_DATA[item[0]] = i18n(item[1]));
}
/**
* @param {Function} startCallback
* @param {Function=} langCallback = null
@ -149,6 +77,15 @@ export function initOnStartOrLangChange(startCallback, langCallback = null) {
langCallback && trigger.subscribe(langCallback);
}
function getNotificationMessage(code) {
let key = getKeyByValue(Notification, code);
if (key) {
key = key.replace('CantCopyMessage', 'CantMoveMessage').replace('UnknownNotification', 'UnknownError');
key = 'NOTIFICATIONS/' + key.replace(/([a-z])([A-Z])/g, '$1_$2').toUpperCase();
return I18N_DATA[key];
}
}
/**
* @param {number} code
* @param {*=} message = ''
@ -162,11 +99,9 @@ export function getNotification(code, message = '', defCode = null) {
}
defCode = defCode ? parseInt(defCode, 10) || 0 : 0;
return undefined === I18N_NOTIFICATION_DATA[code]
? defCode && undefined === I18N_NOTIFICATION_DATA[defCode]
? I18N_NOTIFICATION_DATA[defCode]
: ''
: I18N_NOTIFICATION_DATA[code];
return getNotificationMessage(code)
|| getNotificationMessage(defCode)
|| '';
}
/**
@ -185,32 +120,19 @@ export function getNotificationFromResponse(response, defCode = Notification.Unk
* @returns {string}
*/
export function getUploadErrorDescByCode(code) {
let result = '';
switch (parseInt(code, 10) || 0) {
let result = 'UNKNOWN';
code = parseInt(code, 10) || 0;
switch (code) {
case UploadErrorCode.FileIsTooBig:
result = i18n('UPLOAD/ERROR_FILE_IS_TOO_BIG');
break;
case UploadErrorCode.FilePartiallyUploaded:
result = i18n('UPLOAD/ERROR_FILE_PARTIALLY_UPLOADED');
break;
case UploadErrorCode.FileNoUploaded:
result = i18n('UPLOAD/ERROR_NO_FILE_UPLOADED');
break;
case UploadErrorCode.NoFileUploaded:
case UploadErrorCode.MissingTempFolder:
result = i18n('UPLOAD/ERROR_MISSING_TEMP_FOLDER');
break;
case UploadErrorCode.FileOnSaveingError:
result = i18n('UPLOAD/ERROR_ON_SAVING_FILE');
break;
case UploadErrorCode.OnSavingFile:
case UploadErrorCode.FileType:
result = i18n('UPLOAD/ERROR_FILE_TYPE');
break;
default:
result = i18n('UPLOAD/ERROR_UNKNOWN');
result = getKeyByValue(UploadErrorCode, code).replace(/([a-z])([A-Z])/g, '$1_$2').toUpperCase();
break;
}
return result;
return i18n('UPLOAD/ERROR_' + result);
}
/**

View file

@ -1112,7 +1112,7 @@ class ComposePopupView extends AbstractViewNext {
.waiting(false)
.uploading(false)
.complete(true)
.error(getUploadErrorDescByCode(UploadErrorCode.FileNoUploaded));
.error(getUploadErrorDescByCode(UploadErrorCode.NoFileUploaded));
}
});
}

View file

@ -9,9 +9,6 @@ class Notifications
const AccessError = 103;
const ConnectionError = 104;
const CaptchaError = 105;
const SocialFacebookLoginAccessDisable = 106;
const SocialTwitterLoginAccessDisable = 107;
const SocialGoogleLoginAccessDisable = 108;
const DomainNotAllowed = 109;
const AccountNotAllowed = 110;
@ -84,9 +81,6 @@ class Notifications
self::AccessError => 'AccessError',
self::ConnectionError => 'ConnectionError',
self::CaptchaError => 'CaptchaError',
self::SocialFacebookLoginAccessDisable => 'SocialFacebookLoginAccessDisable',
self::SocialTwitterLoginAccessDisable => 'SocialTwitterLoginAccessDisable',
self::SocialGoogleLoginAccessDisable => 'SocialGoogleLoginAccessDisable',
self::DomainNotAllowed => 'DomainNotAllowed',
self::AccountNotAllowed => 'AccountNotAllowed',
self::AccountTwoFactorAuthRequired => 'AccountTwoFactorAuthRequired',

View file

@ -175,7 +175,7 @@ en:
CURRENT_PASSWORD_INCORRECT: "Current password incorrect"
NEW_PASSWORD_SHORT: "Password is too short"
NEW_PASSWORD_WEAK: "Password is too easy"
NEW_PASSWORD_FORBIDDENT: "Password contains forbidden characters"
NEW_PASSWORD_FORBIDDEN: "Password contains forbidden characters"
CONTACTS_SYNC_ERROR: "Contacts synchronization error"
CANT_GET_MESSAGE_LIST: "Can't get message list"
CANT_GET_MESSAGE: "Can't get message"

View file

@ -173,7 +173,7 @@ de_DE:
CURRENT_PASSWORD_INCORRECT: "Aktuelles Passwort falsch"
NEW_PASSWORD_SHORT: "Passwort ist zu kurz"
NEW_PASSWORD_WEAK: "Passwort ist zu einfach"
NEW_PASSWORD_FORBIDDENT: "Passwort enthält unzulässige Zeichen"
NEW_PASSWORD_FORBIDDEN: "Passwort enthält unzulässige Zeichen"
CONTACTS_SYNC_ERROR: "Fehler bei Kontakte-Synchronisierung"
CANT_GET_MESSAGE_LIST: "Die Nachrichtenliste ist nicht verfügbar"
CANT_GET_MESSAGE: "Diese Nachricht ist nicht verfügbar"

View file

@ -174,7 +174,7 @@ en_US:
CURRENT_PASSWORD_INCORRECT: "Current password incorrect"
NEW_PASSWORD_SHORT: "Password is too short"
NEW_PASSWORD_WEAK: "Password is too easy"
NEW_PASSWORD_FORBIDDENT: "Password contains forbidden characters"
NEW_PASSWORD_FORBIDDEN: "Password contains forbidden characters"
CONTACTS_SYNC_ERROR: "Contacts synchronization error"
CANT_GET_MESSAGE_LIST: "Can't get message list"
CANT_GET_MESSAGE: "Can't get message"

View file

@ -174,7 +174,7 @@ es_ES:
CURRENT_PASSWORD_INCORRECT: "La contraseña actual es incorrecta"
NEW_PASSWORD_SHORT: "La contraseña es muy corta"
NEW_PASSWORD_WEAK: "La contraseña es muy fácil"
NEW_PASSWORD_FORBIDDENT: "La contraseña contiene caracteres prohibidos"
NEW_PASSWORD_FORBIDDEN: "La contraseña contiene caracteres prohibidos"
CONTACTS_SYNC_ERROR: "Error de sincronización de Contactos"
CANT_GET_MESSAGE_LIST: "No se puede obtener la lista de mensajes"
CANT_GET_MESSAGE: "No se puede obtener el mensaje"

View file

@ -174,7 +174,7 @@ fr_FR:
CURRENT_PASSWORD_INCORRECT: "Le mot de passe actuel est incorrect"
NEW_PASSWORD_SHORT: "Le mot de passe est trop court"
NEW_PASSWORD_WEAK: "Le mot de passe n'est pas assez fort"
NEW_PASSWORD_FORBIDDENT: "Le mot de passe contient des caractères invalides"
NEW_PASSWORD_FORBIDDEN: "Le mot de passe contient des caractères invalides"
CONTACTS_SYNC_ERROR: "Erreur de synchronisation des contacts"
CANT_GET_MESSAGE_LIST: "Impossible d'obtenir la liste des messages"
CANT_GET_MESSAGE: "Impossible d'obtenir le message"

View file

@ -173,7 +173,7 @@ nl_NL:
CURRENT_PASSWORD_INCORRECT: "Huidig wachtwoord is onjuist"
NEW_PASSWORD_SHORT: "Wachtwoord is te kort"
NEW_PASSWORD_WEAK: "Wachtwoord is te gemakkelijk"
NEW_PASSWORD_FORBIDDENT: "Wachtwoord bevat verboden karakters"
NEW_PASSWORD_FORBIDDEN: "Wachtwoord bevat verboden karakters"
CONTACTS_SYNC_ERROR: "Contactpersonen synchronisatie fout"
CANT_GET_MESSAGE_LIST: "Kan berichtenlijst niet ophalen"
CANT_GET_MESSAGE: "Kan bericht niet ophalen"

View file

@ -174,7 +174,7 @@ zh_CN:
CURRENT_PASSWORD_INCORRECT: "当前密码不正确"
NEW_PASSWORD_SHORT: "密码太短"
NEW_PASSWORD_WEAK: "密码过于简单"
NEW_PASSWORD_FORBIDDENT: "密码包含禁止使用的字符"
NEW_PASSWORD_FORBIDDEN: "密码包含禁止使用的字符"
CONTACTS_SYNC_ERROR: "联系人同步错误"
CANT_GET_MESSAGE_LIST: "无法获取邮件列表"
CANT_GET_MESSAGE: "无法获取邮件"
@ -221,4 +221,4 @@ zh_CN:
BAD_BROWSER_TITLE: "您的浏览器过时了。"
BAD_BROWSER_DESC: |
为了使用所有特性,
下载并安装其中一款浏览器:
下载并安装其中一款浏览器:

View file

@ -425,7 +425,6 @@ en:
LABEL_FILTERS_NAME: "Filters"
LABEL_TEMPLATES_NAME: "Templates"
LABEL_SECURITY_NAME: "Security"
LABEL_SOCIAL_NAME: "Social"
LABEL_THEMES_NAME: "Themes"
LABEL_CHANGE_PASSWORD_NAME: "Password"
LABEL_OPEN_PGP_NAME: "OpenPGP"
@ -630,7 +629,7 @@ en:
CURRENT_PASSWORD_INCORRECT: "Current password incorrect"
NEW_PASSWORD_SHORT: "Password is too short"
NEW_PASSWORD_WEAK: "Password is too easy"
NEW_PASSWORD_FORBIDDENT: "Password contains forbidden characters"
NEW_PASSWORD_FORBIDDEN: "Password contains forbidden characters"
CONTACTS_SYNC_ERROR: "Contacts synchronization error"
CANT_GET_MESSAGE_LIST: "Can't get message list"
CANT_GET_MESSAGE: "Can't get message"

View file

@ -425,7 +425,6 @@ de_DE:
LABEL_FILTERS_NAME: "Filter"
LABEL_TEMPLATES_NAME: "Vorlagen"
LABEL_SECURITY_NAME: "Sicherheit"
LABEL_SOCIAL_NAME: "Social"
LABEL_THEMES_NAME: "Themen"
LABEL_CHANGE_PASSWORD_NAME: "Passwort"
LABEL_OPEN_PGP_NAME: "OpenPGP"
@ -629,7 +628,7 @@ de_DE:
CURRENT_PASSWORD_INCORRECT: "Aktuelles Passwort falsch"
NEW_PASSWORD_SHORT: "Passwort ist zu kurz"
NEW_PASSWORD_WEAK: "Passwort ist zu einfach"
NEW_PASSWORD_FORBIDDENT: "Passwort enthält unzulässige Zeichen"
NEW_PASSWORD_FORBIDDEN: "Passwort enthält unzulässige Zeichen"
CONTACTS_SYNC_ERROR: "Fehler bei Kontakte-Synchronisierung"
CANT_GET_MESSAGE_LIST: "Die Nachrichtenliste ist nicht verfügbar"
CANT_GET_MESSAGE: "Diese Nachricht ist nicht verfügbar"

View file

@ -425,7 +425,6 @@ en_GB:
LABEL_FILTERS_NAME: "Filters"
LABEL_TEMPLATES_NAME: "Templates"
LABEL_SECURITY_NAME: "Security"
LABEL_SOCIAL_NAME: "Social"
LABEL_THEMES_NAME: "Themes"
LABEL_CHANGE_PASSWORD_NAME: "Password"
LABEL_OPEN_PGP_NAME: "OpenPGP"
@ -630,7 +629,7 @@ en_GB:
CURRENT_PASSWORD_INCORRECT: "Current password incorrect"
NEW_PASSWORD_SHORT: "Password is too short"
NEW_PASSWORD_WEAK: "Password is too easy"
NEW_PASSWORD_FORBIDDENT: "Password contains forbidden characters"
NEW_PASSWORD_FORBIDDEN: "Password contains forbidden characters"
CONTACTS_SYNC_ERROR: "Contacts synchronization error"
CANT_GET_MESSAGE_LIST: "Can't get message list"
CANT_GET_MESSAGE: "Can't get message"

View file

@ -425,7 +425,6 @@ en_US:
LABEL_FILTERS_NAME: "Filters"
LABEL_TEMPLATES_NAME: "Templates"
LABEL_SECURITY_NAME: "Security"
LABEL_SOCIAL_NAME: "Social"
LABEL_THEMES_NAME: "Themes"
LABEL_CHANGE_PASSWORD_NAME: "Password"
LABEL_OPEN_PGP_NAME: "OpenPGP"
@ -630,7 +629,7 @@ en_US:
CURRENT_PASSWORD_INCORRECT: "Current password incorrect"
NEW_PASSWORD_SHORT: "Password is too short"
NEW_PASSWORD_WEAK: "Password is too easy"
NEW_PASSWORD_FORBIDDENT: "Password contains forbidden characters"
NEW_PASSWORD_FORBIDDEN: "Password contains forbidden characters"
CONTACTS_SYNC_ERROR: "Contacts synchronization error"
CANT_GET_MESSAGE_LIST: "Can't get message list"
CANT_GET_MESSAGE: "Can't get message"

View file

@ -426,7 +426,6 @@ es_ES:
LABEL_FILTERS_NAME: "Filtros"
LABEL_TEMPLATES_NAME: "Plantillas"
LABEL_SECURITY_NAME: "Seguridad"
LABEL_SOCIAL_NAME: "Social"
LABEL_THEMES_NAME: "Temas"
LABEL_CHANGE_PASSWORD_NAME: "Contraseña"
LABEL_OPEN_PGP_NAME: "OpenPGP"
@ -630,7 +629,7 @@ es_ES:
CURRENT_PASSWORD_INCORRECT: "La contraseña actual es incorrecta"
NEW_PASSWORD_SHORT: "La contraseña es muy corta"
NEW_PASSWORD_WEAK: "La contraseña es muy fácil"
NEW_PASSWORD_FORBIDDENT: "La contraseña contiene caracteres prohibidos"
NEW_PASSWORD_FORBIDDEN: "La contraseña contiene caracteres prohibidos"
CONTACTS_SYNC_ERROR: "Error de sincronización de Contactos"
CANT_GET_MESSAGE_LIST: "No se puede obtener la lista de mensajes"
CANT_GET_MESSAGE: "No se puede obtener el mensaje"

View file

@ -426,7 +426,6 @@ fr_FR:
LABEL_FILTERS_NAME: "Filtres"
LABEL_TEMPLATES_NAME: "Modèles"
LABEL_SECURITY_NAME: "Sécurité"
LABEL_SOCIAL_NAME: "Social"
LABEL_THEMES_NAME: "Thèmes"
LABEL_CHANGE_PASSWORD_NAME: "Mot de passe"
LABEL_OPEN_PGP_NAME: "OpenPGP"
@ -631,7 +630,7 @@ fr_FR:
CURRENT_PASSWORD_INCORRECT: "Le mot de passe actuel est incorrect"
NEW_PASSWORD_SHORT: "Le mot de passe est trop court"
NEW_PASSWORD_WEAK: "Le mot de passe n'est pas assez fort"
NEW_PASSWORD_FORBIDDENT: "Le mot de passe contient des caractères invalides"
NEW_PASSWORD_FORBIDDEN: "Le mot de passe contient des caractères invalides"
CONTACTS_SYNC_ERROR: "Erreur de synchronisation des contacts"
CANT_GET_MESSAGE_LIST: "Impossible d'obtenir la liste des messages"
CANT_GET_MESSAGE: "Impossible d'obtenir le message"

View file

@ -424,7 +424,6 @@ nl_NL:
LABEL_FILTERS_NAME: "Filters"
LABEL_TEMPLATES_NAME: "Templates"
LABEL_SECURITY_NAME: "Beveiliging"
LABEL_SOCIAL_NAME: "Social"
LABEL_THEMES_NAME: "Thema's"
LABEL_CHANGE_PASSWORD_NAME: "Wachtwoord"
LABEL_OPEN_PGP_NAME: "OpenPGP"
@ -628,7 +627,7 @@ nl_NL:
CURRENT_PASSWORD_INCORRECT: "Huidig wachtwoord onjuist"
NEW_PASSWORD_SHORT: "Wachtwoord is te kort"
NEW_PASSWORD_WEAK: "Wachtwoord is te makkelijk"
NEW_PASSWORD_FORBIDDENT: "Wachtwoord bevat verboden tekens"
NEW_PASSWORD_FORBIDDEN: "Wachtwoord bevat verboden tekens"
CONTACTS_SYNC_ERROR: "Contactpersonen synchronisatie fout"
CANT_GET_MESSAGE_LIST: "Berichtenlijst kan niet worden opgehaald"
CANT_GET_MESSAGE: "Bericht kan niet worden opgehaald"

View file

@ -423,7 +423,6 @@ zh_CN:
LABEL_FILTERS_NAME: "筛选条件"
LABEL_TEMPLATES_NAME: "模版"
LABEL_SECURITY_NAME: "安全"
LABEL_SOCIAL_NAME: "社交"
LABEL_THEMES_NAME: "主题"
LABEL_CHANGE_PASSWORD_NAME: "密码"
LABEL_OPEN_PGP_NAME: "OpenPGP"
@ -628,7 +627,7 @@ zh_CN:
CURRENT_PASSWORD_INCORRECT: "当前密码不正确"
NEW_PASSWORD_SHORT: "密码太短"
NEW_PASSWORD_WEAK: "密码过于简单"
NEW_PASSWORD_FORBIDDENT: "密码包含禁止使用的字符"
NEW_PASSWORD_FORBIDDEN: "密码包含禁止使用的字符"
CONTACTS_SYNC_ERROR: "联系人同步错误"
CANT_GET_MESSAGE_LIST: "无法获取邮件列表"
CANT_GET_MESSAGE: "无法获取邮件"