diff --git a/client/src/locales/ar-YE/core.js b/client/src/locales/ar-YE/core.js
new file mode 100644
index 00000000..4dfea111
--- /dev/null
+++ b/client/src/locales/ar-YE/core.js
@@ -0,0 +1,252 @@
+import dateFns from 'date-fns/locale/ar';
+
+export default {
+ dateFns,
+
+ format: {
+ date: 'M/d/yyyy',
+ time: 'p',
+ dateTime: '$t(format:date) $t(format:time)',
+ longDate: 'MMM d',
+ longDateTime: "MMMM d 'at' p",
+ fullDate: 'MMM d, y',
+ fullDateTime: "MMMM d, y 'at' p",
+ },
+
+ translation: {
+ common: {
+ aboutPlanka: 'حول Planka',
+ account: 'الحساب',
+ actions: 'إجراءات',
+ addAttachment_title: 'إضافة مرفق',
+ addComment: 'إضافة تعليق',
+ addManager_title: 'إضافة مدير',
+ addMember_title: 'إضافة عضو',
+ addUser_title: 'إضافة مستخدم',
+ administrator: 'المدير',
+ all: 'الكل',
+ allChangesWillBeAutomaticallySavedAfterConnectionRestored:
+ 'سيتم حفظ جميع التغييرات تلقائياً
بعد استعادة الإتصال.',
+ areYouSureYouWantToDeleteThisAttachment: 'هل أنت متأكد أنك تريد حذف هذا المرفق؟',
+ areYouSureYouWantToDeleteThisBoard: 'هل أنت متأكد أنك تريد حذف هذه اللوحة؟',
+ areYouSureYouWantToDeleteThisCard: 'هل أنت متأكد أنك تريد حذف هذه البطاقة؟',
+ areYouSureYouWantToDeleteThisComment: 'هل أنت متأكد أنك تريد حذف هذا التعليق؟',
+ areYouSureYouWantToDeleteThisLabel: 'هل أنت متأكد أنك تريد حذف هذا الملصق؟',
+ areYouSureYouWantToDeleteThisList: 'هل أنت متأكد أنك تريد حذف هذه القائمة؟',
+ areYouSureYouWantToDeleteThisProject: 'هل أنت متأكد أنك تريد حذف هذا المشروع؟',
+ areYouSureYouWantToDeleteThisTask: 'هل أنت متأكد أنك تريد حذف هذه المهمة؟',
+ areYouSureYouWantToDeleteThisUser: 'هل أنت متأكد أنك تريد حذف هذا المستخدم؟',
+ areYouSureYouWantToLeaveBoard: 'هل أنت متأكد أنك تريد مغادرة اللوحة؟',
+ areYouSureYouWantToLeaveProject: 'هل أنت متأكد أنك تريد مغادرة المشروع؟',
+ areYouSureYouWantToRemoveThisManagerFromProject:
+ 'هل أنت متأكد أنك تريد إزالة هذا المدير من المشروع؟',
+ areYouSureYouWantToRemoveThisMemberFromBoard:
+ 'هل أنت متأكد أنك تريد إزالة هذا العضو من اللوحة؟',
+ attachment: 'مرفق',
+ attachments: 'مرفقات',
+ authentication: 'المصادقة',
+ background: 'الخلفية',
+ board: 'لوحة',
+ boardNotFound_title: 'لم يتم العثور على اللوحة',
+ canComment: 'يمكن التعليق',
+ canEditContentOfBoard: 'يمكن تعديل محتوى اللوحة.',
+ canOnlyViewBoard: 'يمكن فقط عرض اللوحة.',
+ cardActions_title: 'إجراءات البطاقة',
+ cardNotFound_title: 'لم يتم العثور على البطاقة',
+ cardOrActionAreDeleted: 'تم حذف البطاقة أو الإجراء.',
+ color: 'اللون',
+ copy_inline: 'نسخ',
+ createBoard_title: 'إنشاء لوحة',
+ createLabel_title: 'إنشاء ملصق',
+ createNewOneOrSelectExistingOne: 'أنشئ واحدة جديدة أو اختر
واحدة موجودة.',
+ createProject_title: 'إنشاء مشروع',
+ createTextFile_title: 'إنشاء ملف نصي',
+ currentPassword: 'كلمة المرور الحالية',
+ dangerZone_title: 'منطقة الخطر',
+ date: 'تاريخ',
+ dueDate: 'تاريخ الاستحقاق',
+ dueDate_title: 'تاريخ الاستحقاق',
+ deleteAttachment_title: 'حذف المرفق',
+ deleteBoard_title: 'حذف اللوحة',
+ deleteCard_title: 'حذف البطاقة',
+ deleteComment_title: 'حذف التعليق',
+ deleteLabel_title: 'حذف الملصق',
+ deleteList_title: 'حذف القائمة',
+ deleteProject_title: 'حذف المشروع',
+ deleteTask_title: 'حذف المهمة',
+ deleteUser_title: 'حذف المستخدم',
+ description: 'الوصف',
+ detectAutomatically: 'الكشف تلقائياً',
+ dropFileToUpload: 'أفلت الملف لرفعه',
+ editor: 'محرر',
+ editAttachment_title: 'تعديل المرفق',
+ editAvatar_title: 'تحرير الصورة الرمزية',
+ editBoard_title: 'تعديل اللوحة',
+ editDueDate_title: 'تعديل تاريخ الاستحقاق',
+ editEmail_title: 'تعديل البريد الإلكتروني',
+ editInformation_title: 'تعديل المعلومات',
+ editLabel_title: 'تعديل الملصق',
+ editPassword_title: 'تعديل كلمة المرور',
+ editPermissions_title: 'تعديل الأذونات',
+ editStopwatch_title: 'تعديل المؤقت',
+ editUsername_title: 'تعديل اسم المستخدم',
+ email: 'البريد الإلكتروني',
+ emailAlreadyInUse: 'البريد الإلكتروني مستخدم بالفعل',
+ enterCardTitle: 'أدخل عنوان البطاقة... [Ctrl+Enter] لفتحها تلقائيًا.',
+ enterDescription: 'أدخل الوصف...',
+ enterFilename: 'أدخل اسم الملف',
+ enterListTitle: 'أدخل عنوان القائمة...',
+ enterProjectTitle: 'أدخل عنوان المشروع',
+ enterTaskDescription: 'أدخل وصف المهمة...',
+ filterByLabels_title: 'تصفية حسب الملصقات',
+ filterByMembers_title: 'تصفية حسب الأعضاء',
+ fromComputer_title: 'من الكمبيوتر',
+ fromTrello: 'من Trello',
+ general: 'عام',
+ hours: 'ساعات',
+ importBoard_title: 'استيراد اللوحة',
+ invalidCurrentPassword: 'كلمة المرور الحالية غير صالحة',
+ labels: 'الملصقات',
+ language: 'اللغة',
+ leaveBoard_title: 'غادر اللوحة',
+ leaveProject_title: 'غادر المشروع',
+ linkIsCopied: 'تم نسخ الرابط',
+ list: 'القائمة',
+ listActions_title: 'قائمة الإجراءات',
+ managers: 'المديرون',
+ managerActions_title: 'إجراءات المدير',
+ members: 'الأعضاء',
+ memberActions_title: 'إجراءات العضو',
+ minutes: 'الدقائق',
+ moveCard_title: 'نقل البطاقة',
+ name: 'الاسم',
+ newestFirst: 'الأحدث أولاً',
+ newEmail: 'بريد إلكتروني جديد',
+ newPassword: 'كلمة سر جديدة',
+ newUsername: 'مستخدم جديد',
+ noConnectionToServer: 'لا يوجد اتصال بالخادم',
+ noBoards: 'لا توجد لوحات',
+ noLists: 'لاتوجد قوائم',
+ noProjects: 'لاتوجد مشاريع',
+ notifications: 'الإشعارات',
+ noUnreadNotifications: 'لاتوجد إشعارات غير مقروءة',
+ oldestFirst: 'الأقدم أولاً',
+ openBoard_title: 'فتح اللوحة',
+ optional_inline: 'اختياري',
+ organization: 'المنظمة',
+ phone: 'الهاتف',
+ preferences: 'التفضيلات',
+ pressPasteShortcutToAddAttachmentFromClipboard:
+ 'نصيحة: اضغط على Ctrl-V (Cmd-V على Mac) لإضافة مرفق من الحافظة.',
+ project: 'مشروع',
+ projectNotFound_title: 'المشروع غير موجود',
+ removeManager_title: 'إزالة المدير',
+ removeMember_title: 'إزالة العضو',
+ searchLabels: 'البحث عن التصنيفات...',
+ searchMembers: 'البحث عن الأعضاء...',
+ searchUsers: 'البحث عن المستخدمين...',
+ searchCards: 'البحث عن البطاقات...',
+ seconds: 'ثواني',
+ selectBoard: 'اختر لوحة',
+ selectList: 'اختر قائمة',
+ selectPermissions_title: 'حدد الأذونات',
+ selectProject: 'حدد المشروع',
+ settings: 'الإعدادات',
+ sortList_title: 'فرز القائمة',
+ stopwatch: 'المؤقت',
+ subscribeToMyOwnCardsByDefault: 'الاشتراك في بطاقاتي الخاصة إفتراضياً',
+ taskActions_title: 'إجراءات المهمة',
+ tasks: 'المهام',
+ thereIsNoPreviewAvailableForThisAttachment: 'لا يوجد معاينة متاحة لهذا المرفق.',
+ time: 'الوقت',
+ title: 'العنوان',
+ userActions_title: 'إجراءات المستخدم',
+ userAddedThisCardToList: '<0>{{user}}0><1> تمت إضافة هذه البطاقة إلى {{list}}1>',
+ userLeftNewCommentToCard: '{{user}} ترك تعليق جديد «{{comment}}» إلى <2>{{card}}2>',
+ userMovedCardFromListToList: '{{user}} انتقل <2>{{card}}2> من {{fromList}} إلى {{toList}}',
+ userMovedThisCardFromListToList:
+ '<0>{{user}}0><1> نُقلت هذه البطاقة من {{fromList}} إلى {{toList}}1>',
+ username: 'اسم المستخدم',
+ usernameAlreadyInUse: 'اسم المستخدم تم استخدامه بالفعل',
+ users: 'المستخدمين',
+ version: 'الإصدار',
+ viewer: 'مشاهد',
+ writeComment: 'اكتب تعليقاً...',
+ },
+
+ action: {
+ addAnotherCard: 'إضافة بطاقة أخرى',
+ addAnotherList: 'إضافة قائمة أخرى',
+ addAnotherTask: 'إضافة مهمة أخرى',
+ addCard: 'إضافة بطاقة',
+ addCard_title: 'إضافة بطاقة',
+ addComment: 'إضافة تعليق',
+ addList: 'إضافة قائمة',
+ addMember: 'إضافة عضو',
+ addMoreDetailedDescription: 'إضافة وصف أكثر تفصيلاً',
+ addTask: 'إضافة مهمة',
+ addToCard: 'إضافة إلى البطاقة',
+ addUser: 'إضافة مستخدم',
+ copyLink_title: 'نسخ الرابط',
+ createBoard: 'إنشاء لوحة',
+ createFile: 'إنشاء ملف',
+ createLabel: 'إنشاء ملصق',
+ createNewLabel: 'إنشاء ملصق جديد',
+ createProject: 'إنشاء مشروع',
+ delete: 'حذف',
+ deleteAttachment: 'حذف المرفق',
+ deleteAvatar: 'حذف الصورة الرمزية',
+ deleteBoard: 'حذف اللوحة',
+ deleteCard: 'حذف البطاقة',
+ deleteCard_title: 'حذف البطاقة',
+ deleteComment: 'حذف التعليق',
+ deleteImage: 'حذف الصورة',
+ deleteLabel: 'حذف الملصق',
+ deleteList: 'حذف القائمة',
+ deleteList_title: 'حذف القائمة',
+ deleteProject: 'حذف المشروع',
+ deleteProject_title: 'حذف المشروع',
+ deleteTask: 'حذف المهمة',
+ deleteTask_title: 'حذف المهمة',
+ deleteUser: 'حذف المستخدم',
+ duplicate: 'تكرار',
+ duplicateCard_title: 'تكرار البطاقة',
+ edit: 'تعديل',
+ editDueDate_title: 'تعديل تاريخ الاستحقاق',
+ editDescription_title: 'تعديل الوصف',
+ editEmail_title: 'تعديل البريد الإلكتروني',
+ editInformation_title: 'تعديل المعلومات',
+ editPassword_title: 'تعديل كلمة المرور',
+ editPermissions: 'تعديل الأذونات',
+ editStopwatch_title: 'تعديل المؤقت',
+ editTitle_title: 'تعديل العنوان',
+ editUsername_title: 'تعديل اسم المستخدم',
+ hideDetails: 'إخفاء التفاصيل',
+ import: 'استيراد',
+ leaveBoard: 'غادر اللوحة',
+ leaveProject: 'غادر المشروع',
+ logOut_title: 'تسجيل الخروج',
+ makeCover_title: 'إصنع غلافاً',
+ move: 'نقل',
+ moveCard_title: 'نقل البطاقة',
+ remove: 'حذف',
+ removeBackground: 'إزالة الخلفية',
+ removeCover_title: 'إزالة الغلاف',
+ removeFromBoard: 'إزالة اللوحة',
+ removeFromProject: 'إزالة المشروع',
+ removeManager: 'إزالة المدير',
+ removeMember: 'إزالة العضو',
+ save: 'حفظ',
+ showAllAttachments: 'إظهار جميع المرفقات ({{hidden}} hidden)',
+ showDetails: 'إظهار التفاصيل',
+ showFewerAttachments: 'عرض مرفقات أقل',
+ sortList_title: 'فرز القائمة',
+ start: 'ابدأ',
+ stop: 'توقف',
+ subscribe: 'اشترك',
+ unsubscribe: 'إلغاء الاشتراك',
+ uploadNewAvatar: 'رفع صورة رمزية جديدة',
+ uploadNewImage: 'رفع صورة جديدة',
+ },
+ },
+};
diff --git a/client/src/locales/ar-YE/index.js b/client/src/locales/ar-YE/index.js
new file mode 100644
index 00000000..d8a057fd
--- /dev/null
+++ b/client/src/locales/ar-YE/index.js
@@ -0,0 +1,8 @@
+import login from './login';
+
+export default {
+ language: 'ar-YE',
+ country: 'ye',
+ name: 'العربية',
+ embeddedLocale: login,
+};
diff --git a/client/src/locales/ar-YE/login.js b/client/src/locales/ar-YE/login.js
new file mode 100644
index 00000000..fa3731b0
--- /dev/null
+++ b/client/src/locales/ar-YE/login.js
@@ -0,0 +1,23 @@
+export default {
+ translation: {
+ common: {
+ emailOrUsername: 'البريد الإلكتروني أو اسم المستخدم',
+ invalidEmailOrUsername: 'البريد الإلكتروني أو اسم المستخدم غير صالح',
+ invalidCredentials: 'بيانات الاعتماد غير صالحة',
+ invalidPassword: 'كلمة المرور غير صالحة',
+ logInToPlanka: 'تسجيل الدخول إلى Planka',
+ noInternetConnection: 'لا يوجد اتصال بالإنترنت',
+ pageNotFound_title: 'الصفحة غير موجودة',
+ password: 'كلمة المرور',
+ projectManagement: 'إدارة المشروع',
+ serverConnectionFailed: 'فشل الاتصال بالخادم',
+ unknownError: 'خطأ غير معروف، يرجى المحاولة لاحقاً',
+ useSingleSignOn: 'استخدم تسجيل الدخول الموحد',
+ },
+
+ action: {
+ logIn: 'تسجيل الدخول',
+ logInWithSSO: 'تسجيل الدخول باستخدام SSO',
+ },
+ },
+};
diff --git a/client/src/locales/index.js b/client/src/locales/index.js
index 32b17327..3793b24a 100644
--- a/client/src/locales/index.js
+++ b/client/src/locales/index.js
@@ -1,3 +1,4 @@
+import arYE from './ar-YE';
import bgBG from './bg-BG';
import csCZ from './cs-CZ';
import daDK from './da-DK';
@@ -25,6 +26,7 @@ import zhCN from './zh-CN';
import zhTW from './zh-TW';
const locales = [
+ arYE,
bgBG,
csCZ,
daDK,
diff --git a/server/api/models/User.js b/server/api/models/User.js
index a4216c8a..2c17bea7 100755
--- a/server/api/models/User.js
+++ b/server/api/models/User.js
@@ -6,6 +6,7 @@
*/
const LANGUAGES = [
+ 'ar-YE',
'bg-BG',
'cs-CZ',
'da-DK',