diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/fa.json b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/fa.json
new file mode 100644
index 0000000000..83e7d2423d
--- /dev/null
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/fa.json
@@ -0,0 +1,13 @@
+{
+ "culture": "fa",
+ "texts": {
+ "GivenTenantIsNotExist": "تننت مورد نظر وجود ندارد: {0}",
+ "GivenTenantIsNotAvailable": "تننت مورد نظر در دسترس نمیباشد: {0}",
+ "Tenant": "تننت",
+ "Switch": "جابجایی",
+ "Name": "نام",
+ "SwitchTenantHint": "برای جابجایی به سمت میزبان، قسمت نام را خالی بگذارید.",
+ "SwitchTenant": "جابجایی تننت",
+ "NotSelected": "انتخاب نشده"
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Localization/fa.json b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Localization/fa.json
new file mode 100644
index 0000000000..5e8bf4d484
--- /dev/null
+++ b/framework/src/Volo.Abp.Authorization/Volo/Abp/Authorization/Localization/fa.json
@@ -0,0 +1,10 @@
+{
+ "culture": "fa",
+ "texts": {
+ "Volo.Authorization:010001": "اعتبار سنجی انجام نشد! دسترسی داده نشده است.",
+ "Volo.Authorization:010002": "اعتبار سنجی انجام نشد! دسترسی داده نشده است: {PolicyName}",
+ "Volo.Authorization:010003": "اعتبار سنجی انجام نشد! دسترسی به منابع مورد نظر داده نشده است: {ResourceName}",
+ "Volo.Authorization:010004": "اعتبار سنجی انجام نشد! به مورد اعلامی دسترسی داده نشده است: {ResourceName}",
+ "Volo.Authorization:010005": "اعتبار سنجی انجام نشد! به موارد اعلامی دسترسی داده نشده است: {ResourceName}"
+ }
+}
diff --git a/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/fa.json b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/fa.json
new file mode 100644
index 0000000000..f7d556fae2
--- /dev/null
+++ b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/fa.json
@@ -0,0 +1,6 @@
+{
+ "culture": "fa",
+ "texts": {
+ "MaxResultCountExceededExceptionMessage": "{0} نمیتواند بیشتر از {1}! باشد. مقدار {2} را افزایش دهید.{3} در سمت سرور."
+ }
+}
diff --git a/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/fa.json b/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/fa.json
new file mode 100644
index 0000000000..ac81810933
--- /dev/null
+++ b/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/fa.json
@@ -0,0 +1,25 @@
+{
+ "culture": "fa",
+ "texts": {
+ "DisplayName:Abp.Mailing.DefaultFromAddress": "از آدرس پیش فرض",
+ "DisplayName:Abp.Mailing.DefaultFromDisplayName": "از نام نمایشی پیش فرض",
+ "DisplayName:Abp.Mailing.Smtp.Host": "هاست",
+ "DisplayName:Abp.Mailing.Smtp.Port": "پورت",
+ "DisplayName:Abp.Mailing.Smtp.UserName": "نام کاربری",
+ "DisplayName:Abp.Mailing.Smtp.Password": "رمز عبور",
+ "DisplayName:Abp.Mailing.Smtp.Domain": "دامنه",
+ "DisplayName:Abp.Mailing.Smtp.EnableSsl": "فعال سازی SSL",
+ "DisplayName:Abp.Mailing.Smtp.UseDefaultCredentials": "از اعتبارنامه های پیش فرض استفاده کنید",
+ "Description:Abp.Mailing.DefaultFromAddress": "از آدرس پیش فرض",
+ "Description:Abp.Mailing.DefaultFromDisplayName": "از نام نمایشی پیش فرض",
+ "Description:Abp.Mailing.Smtp.Host": "نام یا آدرس IP میزبان مورد استفاده برای تراکنش های SMTP.",
+ "Description:Abp.Mailing.Smtp.Port": "پورتی که برای تراکنش های SMTP استفاده می شود.",
+ "Description:Abp.Mailing.Smtp.UserName": "نام کاربری مرتبط با اعتبارنامه",
+ "Description:Abp.Mailing.Smtp.Password": "رمز عبور کاربر مرتبط با اعتبارنامه.",
+ "Description:Abp.Mailing.Smtp.Domain": "نام دامنه یا رایانه ای که اعتبار را تأیید می کند.",
+ "Description:Abp.Mailing.Smtp.EnableSsl": "اینکه آیا SmtpClient از لایه سوکت های امن (SSL) برای رمزگذاری هنگام ارتباط استفاده می کند.",
+ "Description:Abp.Mailing.Smtp.UseDefaultCredentials": "اینکه آیا DefaultCredentials همراه با درخواست ها ارسال می شوند.",
+ "TextTemplate:StandardEmailTemplates.Layout": "الگوی طرح بندی ایمیل پیش فرض",
+ "TextTemplate:StandardEmailTemplates.Message": "قالب پیام ساده برای ایمیل"
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/fa.json b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/fa.json
new file mode 100644
index 0000000000..93424701ca
--- /dev/null
+++ b/framework/src/Volo.Abp.ExceptionHandling/Volo/Abp/ExceptionHandling/Localization/fa.json
@@ -0,0 +1,26 @@
+{
+ "culture": "fa",
+ "texts": {
+ "InternalServerErrorMessage": "یک خطای داخلی در حین درخواست شما رخ داد!",
+ "ValidationErrorMessage": "درخواست شما معتبر نیست!",
+ "ValidationNarrativeErrorMessageTitle": "خطاهای زیر در حین اعتبارسنجی شناسایی شد.",
+ "DefaultErrorMessage": "خطایی رخ داده است!",
+ "DefaultErrorMessageDetail": "جزئیات خطا توسط سرور ارسال نشده است.",
+ "DefaultErrorMessage401": "شما احراز هویت نشده اید!",
+ "DefaultErrorMessage401Detail": "برای انجام این عملیات باید وارد سیستم شوید.",
+ "DefaultErrorMessage403": "شما مجاز نیستید!",
+ "DefaultErrorMessage403Detail": "شما مجاز به انجام این عمل نیستید!",
+ "DefaultErrorMessage404": "منبع پیدا نشد!",
+ "DefaultErrorMessage404Detail": "منبع درخواست شده در سرور یافت نشد!",
+ "EntityNotFoundErrorMessage": "هیچ موجودیتی : {0} با شناسه = {1} وجود ندارد!",
+ "AbpDbConcurrencyErrorMessage": "دادههایی که ارسال کردهاید قبلاً توسط کاربر/مشتری دیگر تغییر کرده است. لطفاً تغییراتی را که انجام دادهاید کنار بگذارید و از ابتدا تلاش کنید.",
+ "Error": "خطا",
+ "UnhandledException": "خطای کنترل نشده",
+ "401Message": "غیرمجاز",
+ "403Message": "ممنوع",
+ "404Message": "صفحه یافت نشد",
+ "500Message": "خطای سرور داخلی",
+ "403MessageDetail": "شما مجاز به انجام این عملیات نیستید!",
+ "404MessageDetail": "با عرض پوزش، چیزی در این آدرس وجود ندارد."
+ }
+}
diff --git a/framework/src/Volo.Abp.Features/Volo/Abp/Features/Localization/fa.json b/framework/src/Volo.Abp.Features/Volo/Abp/Features/Localization/fa.json
new file mode 100644
index 0000000000..771fea72b6
--- /dev/null
+++ b/framework/src/Volo.Abp.Features/Volo/Abp/Features/Localization/fa.json
@@ -0,0 +1,8 @@
+{
+ "culture": "fa",
+ "texts": {
+ "Volo.Feature:010001": "ویژگی فعال نیست: {FeatureName}",
+ "Volo.Feature:010002": "ویژگی های مورد نیاز فعال نیستند. همه این ویژگی ها باید فعال باشند: {FeatureNames}",
+ "Volo.Feature:010003": "ویژگی های مورد نیاز فعال نیستند. حداقل یکی از این ویژگی ها باید فعال باشد: {FeatureNames}"
+ }
+}
diff --git a/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/Localization/fa.json b/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/Localization/fa.json
new file mode 100644
index 0000000000..c2927e9b59
--- /dev/null
+++ b/framework/src/Volo.Abp.GlobalFeatures/Volo/Abp/GlobalFeatures/Localization/fa.json
@@ -0,0 +1,6 @@
+{
+ "culture": "fa",
+ "texts": {
+ "Volo.GlobalFeature:010001": "سرویس '{ServiceName}' باید ابتدا امکانات '{GlobalFeatureName}' را فعال نماید."
+ }
+}
diff --git a/framework/src/Volo.Abp.Ldap/Volo/Abp/Ldap/Localization/fa.json b/framework/src/Volo.Abp.Ldap/Volo/Abp/Ldap/Localization/fa.json
new file mode 100644
index 0000000000..3e536b1e1f
--- /dev/null
+++ b/framework/src/Volo.Abp.Ldap/Volo/Abp/Ldap/Localization/fa.json
@@ -0,0 +1,17 @@
+{
+ "culture": "fa",
+ "texts": {
+ "DisplayName:Abp.Ldap.ServerHost": "میزبان سرور",
+ "Description:Abp.Ldap.ServerHost": "میزبان سرور",
+ "DisplayName:Abp.Ldap.ServerPort": "پورت سرور",
+ "Description:Abp.Ldap.ServerPort": "پورت سرور",
+ "DisplayName:Abp.Ldap.BaseDc": "کامپوننت پایه دامنه",
+ "Description:Abp.Ldap.BaseDc": "کامپوننت پایه دامنه",
+ "DisplayName:Abp.Ldap.Domain": "دامنه",
+ "Description:Abp.Ldap.Domain": "دامنه",
+ "DisplayName:Abp.Ldap.UserName": "نام کاربری",
+ "Description:Abp.Ldap.UserName": "نام کاربری",
+ "DisplayName:Abp.Ldap.Password": "رمز عبور",
+ "Description:Abp.Ldap.Password": "رمز عبور"
+ }
+}
diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/fa.json b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/fa.json
new file mode 100644
index 0000000000..f861d1af47
--- /dev/null
+++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/fa.json
@@ -0,0 +1,7 @@
+{
+ "culture": "fa",
+ "texts": {
+ "DisplayName:Abp.Localization.DefaultLanguage": "زبان پیش فرض",
+ "Description:Abp.Localization.DefaultLanguage": "زبان پیش فرض برنامه"
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Timing/Volo/Abp/Timing/Localization/fa.json b/framework/src/Volo.Abp.Timing/Volo/Abp/Timing/Localization/fa.json
new file mode 100644
index 0000000000..b1818ff6fe
--- /dev/null
+++ b/framework/src/Volo.Abp.Timing/Volo/Abp/Timing/Localization/fa.json
@@ -0,0 +1,7 @@
+{
+ "culture": "en",
+ "texts": {
+ "DisplayName:Abp.Timing.Timezone": "منطقه زمانی",
+ "Description:Abp.Timing.Timezone": "منطقه زمانی برنامه"
+ }
+}
diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/fa.json b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/fa.json
new file mode 100644
index 0000000000..ab89c14e11
--- /dev/null
+++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/fa.json
@@ -0,0 +1,6 @@
+{
+ "culture": "fa",
+ "texts": {
+ "Menu:Administration": "مدیریت"
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fa.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fa.json
new file mode 100644
index 0000000000..0ee671206f
--- /dev/null
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/fa.json
@@ -0,0 +1,53 @@
+{
+ "culture": "fa",
+ "texts": {
+ "Languages": "زبان ها",
+ "AreYouSure": "آیا اطمینان دارید؟",
+ "Cancel": "لغو",
+ "Clear": "پاکسازی",
+ "Yes": "بله",
+ "No": "خیر",
+ "Ok": "اوکی",
+ "Close": "بستن",
+ "Save": "ذخیره",
+ "SavingWithThreeDot": "ذخیره...",
+ "Actions": "عملیات",
+ "Delete": "حذف",
+ "SuccessfullyDeleted": "با موفقیت حذف شد",
+ "Edit": "ویرایش",
+ "Refresh": "رفرش",
+ "Language": "زبان",
+ "LoadMore": "بارگذاری بیشتر",
+ "ProcessingWithThreeDot": "در حال پردازش...",
+ "LoadingWithThreeDot": "درحال بارگذاری...",
+ "Welcome": "خوش آمدید",
+ "Login": "ورود",
+ "Register": "ثبت نام",
+ "Logout": "خروج",
+ "Submit": "ارسال",
+ "Back": "عقب",
+ "PagerSearch": "جستجو",
+ "PagerNext": "بعدی",
+ "PagerPrevious": "قبلی",
+ "PagerFirst": "نخستین",
+ "PagerLast": "آخرین",
+ "PagerInfo": "نمایش از _START_ تا _END_ از مجموع _TOTAL_ مورد",
+ "PagerInfo{0}{1}{2}": "نمایش از {0} تا {1} از مجموع {2} مورد",
+ "PagerInfoEmpty": "نمایش از 0 تا 0 از مجموع 0 مورد",
+ "PagerInfoFiltered": "(فیلتر شده از مجموع _MAX_ مورد)",
+ "NoDataAvailableInDatatable": "داده ای وجود ندارد",
+ "Total": "مجموع",
+ "Selected": "انتخاب شده",
+ "PagerShowMenuEntries": "نمایش _MENU_ مورد",
+ "DatatableActionDropdownDefaultText": "عملیات",
+ "ChangePassword": "تغییر رمز",
+ "PersonalInfo": "پروفایل من",
+ "AreYouSureYouWantToCancelEditingWarningMessage": "You have unsaved changes.",
+ "GoHomePage": "برو به صفحه اصلی",
+ "GoBack": "برگرد",
+ "Search": "جستجو",
+ "ItemWillBeDeletedMessageWithFormat": "{0} حذف خواهد شد!",
+ "ItemWillBeDeletedMessage": "این مورد حذف خواهد شد!",
+ "ManageYourAccount": "حساب خود را مدیریت کنید"
+ }
+}
diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/fa.json b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/fa.json
new file mode 100644
index 0000000000..69659ee008
--- /dev/null
+++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/fa.json
@@ -0,0 +1,34 @@
+{
+ "culture": "fa",
+ "texts": {
+ "'{0}' and '{1}' do not match.": "'{0}' و '{1}' مطابقت ندارند",
+ "The {0} field is not a valid credit card number.": "مقدار {0} یک شماره کارت اعتباری استاندارد نیست",
+ "{0} is not valid.": "{0} معتبر نیست.",
+ "The {0} field is not a valid e-mail address.": "فیلد {0} دارای آدرس ایمیل معتبر نیست.",
+ "The {0} field only accepts files with the following extensions: {1}": "فیلد {0} تنها فایل هایی پسوندهای زیر را می پذیرد: {1}",
+ "The field {0} must be a string or array type with a maximum length of '{1}'.": "فیلد {0} یک باید از نوع رشته یا آرایه با حداکثر طول '{1}' باشد.",
+ "The field {0} must be a string or array type with a minimum length of '{1}'.": "فیلد {0} یک باید از نوع رشته یا آرایه با حداقل طول '{1}' باشد.",
+ "The {0} field is not a valid phone number.": "فیلد {0} یک شماره تلفن معتبر نیست.",
+ "The field {0} must be between {1} and {2}.": "فیلد {0} باید بین {1} و {2} باشد.",
+ "The field {0} must match the regular expression '{1}'.": "فیلد {0} با قالب درخواستی مطابقت ندارد.",
+ "The {0} field is required.": "فیلد {0} الزامی است.",
+ "The field {0} must be a string with a maximum length of {1}.": "فیلد {0} باید یک رشته با حداکثر طول {1} باشد.",
+ "The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.": "فیلد {0} باید یک رشته با حداقل طول {2} و حداکثر طول {1} باشد.",
+ "The {0} field is not a valid fully-qualified http, https, or ftp URL.": "فیلد {0} یک نشانی اینترنتی http، https، یا ftp کاملا و معتبر نیست.",
+ "The field {0} is invalid.": "فیلد {0} نامعتبر است.",
+ "ThisFieldIsNotAValidCreditCardNumber.": "این فیلد یک شماره کارت اعتباری معتبر نیست.",
+ "ThisFieldIsNotValid.": "این فیلد معتبر نیست",
+ "ThisFieldIsNotAValidEmailAddress.": "این فیلد یک آدرس ایمیل معتبر نیست.",
+ "ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "این فیلد فقط فایل هایی با پسوندهای زیر را می پذیرد: {0}",
+ "ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthOf{0}": "این فیلد باید از نوع رشته یا آرایه با حداکثر طول '{0}' باشد.",
+ "ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "این فیلد باید از نوع رشته یا آرایه با حداقل طول '{0}' باشد.",
+ "ThisFieldIsNotAValidPhoneNumber.": "این فیلد یک شماره تلفن معتبر نیست.",
+ "ThisFieldMustBeBetween{0}And{1}": "این فیلد باید بین {0} و {1} باشد.",
+ "ThisFieldMustMatchTheRegularExpression{0}": "این فیلد باید با عبارت منظم '{0}' مطابقت داشته باشد.",
+ "ThisFieldIsRequired.": "این فیلد الزامی است.",
+ "ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "این فیلد باید یک رشته با طول حداکثر {0} باشد.",
+ "ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf{0}": "این فیلد باید یک رشته با حداقل طول {1} و حداکثر طول {0} باشد.",
+ "ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl": "فیلد {0} یک نشانی اینترنتی http، https، یا ftp کاملا و معتبر نیست.",
+ "ThisFieldIsInvalid.": "این فیلد نامعتبر است."
+ }
+}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/fa.json b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/fa.json
new file mode 100644
index 0000000000..54576c81fb
--- /dev/null
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/fa.json
@@ -0,0 +1,10 @@
+{
+ "culture": "fa",
+ "texts": {
+ "DisplayName:PersonModel:BirthDate1": "تاریخ تولد1",
+ "DisplayName:BirthDate2": "تاریخ تولد2",
+ "PersonModel:BirthDate3": "تاریخ تولد3",
+ "BirthDate": "تاریخ تولد",
+ "Value1": "مقدار یک"
+ }
+}
diff --git a/framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/fa.json b/framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/fa.json
new file mode 100644
index 0000000000..33c0298f1a
--- /dev/null
+++ b/framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/fa.json
@@ -0,0 +1,6 @@
+{
+ "culture": "fa",
+ "texts": {
+ "hello": "سلام"
+ }
+}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/fa.json b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/fa.json
new file mode 100644
index 0000000000..c01f3c1b73
--- /dev/null
+++ b/framework/test/Volo.Abp.Http.Client.Tests/Volo/Abp/Http/Localization/fa.json
@@ -0,0 +1,6 @@
+{
+ "culture": "fa",
+ "texts": {
+ "Volo.Abp.Http.DynamicProxying:10001": "خطای بیزنسی به همراه داده: {0}"
+ }
+}
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/fa.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/fa.json
new file mode 100644
index 0000000000..c1c7e50b87
--- /dev/null
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/fa.json
@@ -0,0 +1,7 @@
+{
+ "culture": "fa",
+ "texts": {
+ "USA": "ایالات متحده آمریکا",
+ "Brazil": "برزیل"
+ }
+}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/fa.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/fa.json
new file mode 100644
index 0000000000..e469dd85d5
--- /dev/null
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/fa.json
@@ -0,0 +1,7 @@
+{
+ "culture": "fa",
+ "texts": {
+ "ThisFieldIsRequired": "این فیلد الزامی است",
+ "MaxLenghtErrorMessage": "این فیلد میتواند نهایتا '{0}' کاراکتر باشد"
+ }
+}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/fa.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/fa.json
new file mode 100644
index 0000000000..4761d95a34
--- /dev/null
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/fa.json
@@ -0,0 +1,11 @@
+{
+ "culture": "fa",
+ "texts": {
+ "Hello {0}.": "سلام {0}.",
+ "Car": "اتومبیل",
+ "CarPlural": "اتومبیل ها",
+ "MaxLenghtErrorMessage": "طول این فیلد میتواند نهایتا '{0}' کاراکتر باشد",
+ "Universe": "کائنات",
+ "FortyTwo": "چهل و دو"
+ }
+}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/fa.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/fa.json
new file mode 100644
index 0000000000..1ffcb34105
--- /dev/null
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/fa.json
@@ -0,0 +1,6 @@
+{
+ "culture": "fa",
+ "texts": {
+ "SeeYou": "به امید دیدار"
+ }
+}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/Localization/fa.json b/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/Localization/fa.json
new file mode 100644
index 0000000000..618f242806
--- /dev/null
+++ b/framework/test/Volo.Abp.TextTemplating.Tests/Volo/Abp/TextTemplating/Localization/fa.json
@@ -0,0 +1,7 @@
+{
+ "culture": "en",
+ "texts": {
+ "HelloText": "سلام {0}",
+ "HowAreYou": "حال شما چطور است؟"
+ }
+}