diff --git a/client/src/locales/fa/core.js b/client/src/locales/fa/core.js
new file mode 100644
index 00000000..358897fc
--- /dev/null
+++ b/client/src/locales/fa/core.js
@@ -0,0 +1,254 @@
+import dateFns from 'date-fns/locale/fa-IR';
+
+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 در مک) میتوانید پیوست را از کلیپ بورد اضافه کنید.',
+ 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}} مخفی)',
+ showDetails: 'نمایش جزئیات',
+ showFewerAttachments: 'نمایش کمتر پیوستها',
+ sortList_title: 'مرتبسازی لیست',
+ start: 'شروع',
+ stop: 'توقف',
+ subscribe: 'مشترک شدن',
+ unsubscribe: 'لغو اشتراک',
+ uploadNewAvatar: 'آپلود آواتار جدید',
+ uploadNewImage: 'آپلود تصویر جدید',
+ },
+ },
+};
diff --git a/client/src/locales/fa/index.js b/client/src/locales/fa/index.js
new file mode 100644
index 00000000..a03206be
--- /dev/null
+++ b/client/src/locales/fa/index.js
@@ -0,0 +1,8 @@
+import login from './login';
+
+export default {
+ language: 'fa',
+ country: 'ir',
+ name: 'فارسی',
+ embeddedLocale: login,
+};
diff --git a/client/src/locales/fa/login.js b/client/src/locales/fa/login.js
new file mode 100644
index 00000000..776b92dc
--- /dev/null
+++ b/client/src/locales/fa/login.js
@@ -0,0 +1,22 @@
+export default {
+ translation: {
+ common: {
+ emailOrUsername: 'ایمیل یا نام کاربری',
+ invalidEmailOrUsername: 'ایمیل یا نام کاربری نامعتبر است',
+ 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 c689d3ea..3f8175eb 100644
--- a/client/src/locales/index.js
+++ b/client/src/locales/index.js
@@ -4,6 +4,7 @@ import da from './da';
import de from './de';
import en from './en';
import es from './es';
+import fa from './fa';
import fr from './fr';
import hu from './hu';
import id from './id';
@@ -29,6 +30,7 @@ const locales = [
de,
en,
es,
+ fa,
fr,
hu,
id,