Browse Source

Merge pull request #3754 from kgamalseif/dev

RTL language support & added arabic localization resources
pull/4021/head
Halil İbrahim Kalkan 6 years ago
committed by GitHub
parent
commit
d97ad29714
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      .gitignore
  2. 12
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/ar.json
  3. 6
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/Bootstrap/BootstrapStyleContributor.cs
  4. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Account.cshtml
  5. 3
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml
  6. 5
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Empty.cshtml
  7. 9
      framework/src/Volo.Abp.Core/Volo/Abp/Localization/CultureHelper.cs
  8. 6
      framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/ar.json
  9. 23
      framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/ar.json
  10. 7
      framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/ar.json
  11. 6
      framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/ar.json
  12. 34
      framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/ar.json
  13. 7
      framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/ar.json
  14. 6
      framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/ar.json
  15. 7
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/ar.json
  16. 7
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/ar.json
  17. 11
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/ar.json
  18. 6
      framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/ar.json
  19. 45
      modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/ar.json
  20. 7
      modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/ar.json
  21. 104
      modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json
  22. 12
      modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/ar.json
  23. 10
      modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/ar.json
  24. 7
      modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/ar.json
  25. 22
      modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/ar.json
  26. 1
      npm/packs/bootstrap/abp.resourcemapping.js
  27. 5
      npm/packs/bootstrap/package.json
  28. 8
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/ar.json
  29. 1
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs
  30. 11083
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/bootstrap/css/bootstrap-rtl.css

9
.gitignore

@ -293,10 +293,11 @@ samples/MicroserviceDemo/applications/ConsoleClientDemo/Logs/logs.txt
modules/docs/app/Volo.DocsTestApp/Logs/logs.txt
framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/Logs/logs.txt
samples/MicroserviceDemo/microservices/TenantManagementService.Host/Logs/logs.txt
/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package-lock.json
/samples/BookStore/src/Acme.BookStore.Web/package-lock.json
/samples/DashboardDemo/src/DashboardDemo.Web/package-lock.json
/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package-lock.json
/framework/test/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic.Demo/package-lock.json
/npm/packs/bootstrap/package-lock.json
/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/package-lock.json
/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/package-lock.json
/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/package-lock.json
/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/package-lock.json
/templates/app/angular/package-lock.json
/modules/client-simulation/demo/Volo.ClientSimulation.Demo/package-lock.json

12
framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/ar.json

@ -0,0 +1,12 @@
{
"culture": "ar",
"texts": {
"GivenTenantIsNotAvailable": "الجهة المحددة غير متاحة: {0}",
"Tenant": "الجهة",
"Switch": "تغيير",
"Name": "اسم",
"SwitchTenantHint": "اترك حقل الاسم فارغًا للتبديل إلى المضيف.",
"SwitchTenant": "تغيير الجهة",
"NotSelected": "غير محدد"
}
}

6
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Packages/Volo/Abp/AspNetCore/Mvc/UI/Packages/Bootstrap/BootstrapStyleContributor.cs

@ -1,5 +1,6 @@
using System.Collections.Generic;
using Volo.Abp.AspNetCore.Mvc.UI.Bundling;
using Volo.Abp.Localization;
namespace Volo.Abp.AspNetCore.Mvc.UI.Packages.Bootstrap
{
@ -7,7 +8,10 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Packages.Bootstrap
{
public override void ConfigureBundle(BundleConfigurationContext context)
{
context.Files.AddIfNotContains("/libs/bootstrap/css/bootstrap.css");
if(CultureHelper.IsRtl)
context.Files.AddIfNotContains("/libs/bootstrap/css/bootstrap-rtl.css");
else
context.Files.AddIfNotContains("/libs/bootstrap/css/bootstrap.css");
}
}
}

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Account.cshtml

@ -12,6 +12,7 @@
@using Volo.Abp.AspNetCore.Mvc.UI.Widgets.Components.WidgetScripts
@using Volo.Abp.AspNetCore.Mvc.UI.Widgets.Components.WidgetStyles
@using Volo.Abp.MultiTenancy
@using Volo.Abp.Localization
@inject IAbpAntiForgeryManager AbpAntiForgeryManager
@inject IBrandingProvider BrandingProvider
@inject IOptions<AbpMultiTenancyOptions> MultiTenancyOptions
@ -28,7 +29,8 @@
<!DOCTYPE html>
<html lang="@CultureInfo.CurrentCulture.Name">
<html lang="@CultureInfo.CurrentCulture.Name" dir=@(CultureHelper.IsRtl ? "rtl" : "")>
<!--<![endif]-->">
<head>
@await Component.InvokeLayoutHookAsync(LayoutHooks.Head.First, StandardLayouts.Account)

3
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Application.cshtml

@ -8,6 +8,7 @@
@using Volo.Abp.AspNetCore.Mvc.UI.Theming
@using Volo.Abp.AspNetCore.Mvc.UI.Widgets.Components.WidgetScripts
@using Volo.Abp.AspNetCore.Mvc.UI.Widgets.Components.WidgetStyles
@using Volo.Abp.Localization
@inject IAbpAntiForgeryManager AbpAntiForgeryManager
@inject IBrandingProvider BrandingProvider
@inject IPageLayout PageLayout
@ -31,7 +32,7 @@
<!DOCTYPE html>
<html lang="@CultureInfo.CurrentCulture.Name">
<html lang="@CultureInfo.CurrentCulture.Name" dir=@(CultureHelper.IsRtl ? "rtl" : "")>
<head>
@await Component.InvokeLayoutHookAsync(LayoutHooks.Head.First, StandardLayouts.Application)

5
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic/Themes/Basic/Layouts/Empty.cshtml

@ -7,6 +7,7 @@
@using Volo.Abp.AspNetCore.Mvc.UI.Theming
@using Volo.Abp.AspNetCore.Mvc.UI.Widgets.Components.WidgetScripts
@using Volo.Abp.AspNetCore.Mvc.UI.Widgets.Components.WidgetStyles
@using Volo.Abp.Localization
@inject IAbpAntiForgeryManager AbpAntiForgeryManager
@inject IBrandingProvider BrandingProvider
@inject IPageLayout PageLayout
@ -30,7 +31,7 @@
<!DOCTYPE html>
<html lang="@CultureInfo.CurrentCulture.Name">
<html lang="@CultureInfo.CurrentCulture.Name" dir=@(CultureHelper.IsRtl ? "rtl" : "")>
<head>
@await Component.InvokeLayoutHookAsync(LayoutHooks.Head.First, StandardLayouts.Empty)
@ -39,7 +40,7 @@
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>@pageTitle</title>
@if (ViewBag.Description!=null)
@if (ViewBag.Description != null)
{
<meta name="description" content="@ViewBag.Description" />
}

9
framework/src/Volo.Abp.Core/Volo/Abp/Localization/CultureHelper.cs

@ -1,5 +1,6 @@
using System;
using System;
using System.Globalization;
using System.Threading;
using JetBrains.Annotations;
namespace Volo.Abp.Localization
@ -35,6 +36,10 @@ namespace Volo.Abp.Localization
});
}
public static bool IsRtl
{
get { return CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft; }
}
public static bool IsValidCultureCode(string cultureCode)
{
if (cultureCode.IsNullOrWhiteSpace())
@ -60,4 +65,4 @@ namespace Volo.Abp.Localization
: cultureName;
}
}
}
}

6
framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/ar.json

@ -0,0 +1,6 @@
{
"culture": "ar",
"texts": {
"MaxResultCountExceededExceptionMessage": "لا يمكن أن يكون {0} أكثر من {1}! قم بزيادة{2}. {3} على الخادم للسماح بمزيد من النتائج."
}
}

23
framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/ar.json

@ -0,0 +1,23 @@
{
"culture": "ar",
"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": "المنفذ المستخدم في معاملات.",
"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": "إرسال الصلاحيات الافتراضية مع الطلب."
}
}

7
framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/ar.json

@ -0,0 +1,7 @@
{
"culture": "ar",
"texts": {
"DisplayName:Abp.Localization.DefaultLanguage": "اللغة الافتراضية",
"Description:Abp.Localization.DefaultLanguage": "اللغة الافتراضية للتطبيق."
}
}

6
framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/ar.json

@ -0,0 +1,6 @@
{
"culture": "ar",
"texts": {
"Menu:Administration": "الإدارة"
}
}

34
framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/ar.json

@ -0,0 +1,34 @@
{
"culture": "ar",
"texts": {
"'{0}' and '{1}' do not match.": "'{0}' and '{1}' do not match.",
"The {0} field is not a valid credit card number.": "The {0} field is not a valid credit card number.",
"{0} is not valid.": "{0} is not valid.",
"The {0} field is not a valid e-mail address.": "The {0} field is not a valid e-mail address.",
"The {0} field only accepts files with the following extensions: {1}": "The {0} field only accepts files with the following extensions: {1}",
"The field {0} must be a string or array type with a maximum length of '{1}'.": "The field {0} must be a string or array type with a maximum length of '{1}'.",
"The field {0} must be a string or array type with a minimum length of '{1}'.": "The field {0} must be a string or array type with a minimum length of '{1}'.",
"The {0} field is not a valid phone number.": "The {0} field is not a valid phone number.",
"The field {0} must be between {1} and {2}.": "The field {0} must be between {1} and {2}.",
"The field {0} must match the regular expression '{1}'.": "The field {0} must match the regular expression '{1}'.",
"The {0} field is required.": "The {0} field is required.",
"The field {0} must be a string with a maximum length of {1}.": "The field {0} must be a string with a maximum length of {1}.",
"The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.": "The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.",
"The {0} field is not a valid fully-qualified http, https, or ftp URL.": "The {0} field is not a valid fully-qualified http, https, or ftp URL.",
"The field {0} is invalid.": "The field {0} is invalid.",
"ThisFieldIsNotAValidCreditCardNumber.": "This field is not a valid credit card number.",
"ThisFieldIsNotValid.": "This field is not valid.",
"ThisFieldIsNotAValidEmailAddress.": "This field is not a valid e-mail address.",
"ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "This field only accepts files with the following extensions: {0}",
"ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthoOf{0}": "This field must be a string or array type with a maximum length of '{0}'.",
"ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "This field must be a string or array type with a minimum length of '{0}'.",
"ThisFieldIsNotAValidPhoneNumber.": "This field is not a valid phone number.",
"ThisFieldMustBeBetween{0}And{1}": "This field must be between {0} and {1}.",
"ThisFieldMustMatchTheRegularExpression{0}": "This field must match the regular expression '{0}'.",
"ThisFieldIsRequired.": "This field is required.",
"ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "This field must be a string with a maximum length of {0}.",
"ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf{0}": "This field must be a string with a minimum length of {1} and a maximum length of {0}.",
"ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl": "This field is not a valid fully-qualified http, https, or ftp URL.",
"ThisFieldIsInvalid.": "This field is invalid."
}
}

7
framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/ar.json

@ -0,0 +1,7 @@
{
"culture": "ar",
"texts": {
"BirthDate": "تاريخ الميلاد",
"Value1": "القيمة الأولى"
}
}

6
framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/ar.json

@ -0,0 +1,6 @@
{
"culture": "ar",
"texts": {
"hello": "مرحبا"
}
}

7
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/ar.json

@ -0,0 +1,7 @@
{
"culture": "ar",
"texts": {
"USA": "الولايات المتحدة الامريكية",
"Brazil": "البرازيل"
}
}

7
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/ar.json

@ -0,0 +1,7 @@
{
"culture": "ar",
"texts": {
"ThisFieldIsRequired": "الحقل مطلوب",
"MaxLenghtErrorMessage": "اقصى طول للحقل '{0}' حرف"
}
}

11
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/ar.json

@ -0,0 +1,11 @@
{
"culture": "ar",
"texts": {
"Hello <b>{0}</b>.": "مرحباً <b>{0}</b>.",
"Car": "سيارة",
"CarPlural": "سيارات",
"MaxLenghtErrorMessage": "اقصى طول للحقل '{0}' حرف",
"Universe": "عالم",
"FortyTwo": "اثنان وأربعون"
}
}

6
framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/ar.json

@ -0,0 +1,6 @@
{
"culture": "ar",
"texts": {
"SeeYou": "الى لقاء"
}
}

45
modules/account/src/Volo.Abp.Account.Application.Contracts/Volo/Abp/Account/Localization/Resources/ar.json

@ -0,0 +1,45 @@
{
"culture": "ar",
"texts": {
"UserName": "اسم المستخدم",
"EmailAddress": "البريد الإلكتروني",
"UserNameOrEmailAddress": "اسم المستخدم أو البريد الإلكتروني",
"Password": "كلمة المرور",
"RememberMe": "تذكرني",
"UseAnotherServiceToLogin": "استخدم خدمة أخرى لتسجيل الدخول",
"UserLockedOutMessage": "تم قفل حساب المستخدم بسبب محاولات تسجيل الدخول غير الصالحة. يرجى الانتظار بعض الوقت والمحاولة مرة أخرى.",
"InvalidUserNameOrPassword": "اسم مستخدم أو كلمة مرور غير صالحة!",
"LoginIsNotAllowed": "غير مسموح لك بتسجيل الدخول! أنت بحاجة إلى تأكيد بريدك الإلكتروني / رقم هاتفك.",
"SelfRegistrationDisabledMessage": "تم تعطيل التسجيل الذاتي لهذا التطبيق. يرجى الاتصال بمسؤول التطبيق لتسجيل مستخدم جديد.",
"LocalLoginDisabledMessage": "تسجيل الدخول المحلي معطّل لهذا التطبيق.",
"Login": "دخول",
"Cancel": "إلغاء",
"Register": "تسجيل",
"AreYouANewUser": "هل أنت مستخدم جديد?",
"AlreadyRegistered": "مسجل بالفعل?",
"InvalidLoginRequest": "طلب تسجيل دخول غير صالح",
"ThereAreNoLoginSchemesConfiguredForThisClient": "لم يتم تكوين أنظمة تسجيل دخول لهذا العميل.",
"LogInUsingYourProviderAccount": "قم بتسجيل الدخول باستخدام حسابك في {0}",
"DisplayName:CurrentPassword": "كلمة المرور الحالية",
"DisplayName:NewPassword": "كلمة مرور جديدة",
"DisplayName:NewPasswordConfirm": "تأكيد كلمة المرور الجديدة",
"PasswordChangedMessage": "تم تغيير كلمة مرورك بنجاح.",
"DisplayName:UserName": "اسم المستخدم",
"DisplayName:Email": "البريد الإلكتروني",
"DisplayName:Name": "الاسم",
"DisplayName:Surname": "اللقب",
"DisplayName:Password": "كلمة المرور",
"DisplayName:EmailAddress": "البريد الإلكتروني",
"DisplayName:PhoneNumber": "رقم الهاتف",
"PersonalSettings": "الإعدادات الشخصية",
"PersonalSettingsSaved": "تم حفظ الإعدادات الشخصية",
"PasswordChanged": "تم تغيير كلمة المرور",
"NewPasswordConfirmFailed": "يرجى تأكيد كلمة المرور الجديدة.",
"Manage": "إدارة",
"ManageYourProfile": "إدارة ملف التعريف الخاص بك",
"DisplayName:Abp.Account.IsSelfRegistrationEnabled": "هل تم تمكين التسجيل الذاتي",
"Description:Abp.Account.IsSelfRegistrationEnabled": "ما إذا كان يمكن للمستخدم تسجيل الحساب بنفسه أم لا.",
"DisplayName:Abp.Account.EnableLocalLogin": "المصادقة باستخدام حساب محلي",
"Description:Abp.Account.EnableLocalLogin": "يشير إلى ما إذا كان الخادم سيسمح للمستخدمين بالمصادقة باستخدام حساب محلي."
}
}

7
modules/feature-management/src/Volo.Abp.FeatureManagement.Domain.Shared/Volo/Abp/FeatureManagement/Localization/Domain/ar.json

@ -0,0 +1,7 @@
{
"culture": "ar",
"texts": {
"Features": "المميزات",
"NoFeatureFoundMessage": "لا توجد أي ميزة متاحة."
}
}

104
modules/identity/src/Volo.Abp.Identity.Domain.Shared/Volo/Abp/Identity/Localization/ar.json

@ -0,0 +1,104 @@
{
"culture": "ar",
"texts": {
"Menu:IdentityManagement": "إدارة الهوية",
"Users": "المستخدمون",
"NewUser": "مستخدم جديد",
"UserName": "اسم المستخدم",
"EmailAddress": "البريد الإلكتروني",
"PhoneNumber": "رقم الهاتف",
"UserInformations": "معلومات المستخدم",
"DisplayName:IsDefault": "افتراضي",
"DisplayName:IsStatic": "ثابت",
"DisplayName:IsPublic": "عام",
"Roles": "الأدوار",
"Password": "كلمة المرور",
"PersonalInfo": "ملفي الشخصي",
"PersonalSettings": "الإعدادات الشخصية",
"UserDeletionConfirmationMessage": "سيتم حذف المستخدم {0}. هل تؤكد ذلك?",
"RoleDeletionConfirmationMessage": "سيتم حذف الدور {0}. هل تؤكد ذلك?",
"DisplayName:RoleName": "اسم الدور",
"DisplayName:UserName": "اسم المستخدم",
"DisplayName:Name": "الاسم",
"DisplayName:Surname": "اللقب",
"DisplayName:Password": "كلمة المرور",
"DisplayName:Email": "البريد الإلكتروني",
"DisplayName:PhoneNumber": "رقم الهاتف",
"DisplayName:TwoFactorEnabled": "التحقق من عاملين",
"DisplayName:LockoutEnabled": "تأمين الحساب بعد محاولات تسجيل الدخول الفاشلة",
"NewRole": "دور جديد",
"RoleName": "اسم الدور",
"CreationTime": "وقت الإنشاء",
"Permissions": "أذونات",
"DisplayName:CurrentPassword": "كلمة المرور الحالية",
"DisplayName:NewPassword": "كلمة مرور جديدة",
"DisplayName:NewPasswordConfirm": "تأكيد كلمة المرور الجديدة",
"PasswordChangedMessage": "تم تغيير كلمة مرورك بنجاح.",
"PersonalSettingsSavedMessage": "تم حفظ إعداداتك الشخصية بنجاح.",
"Identity.DefaultError": "حدث خطأ.",
"Identity.ConcurrencyFailure": "فشل التزامن المتفائل ، تم تعديل الكائن.",
"Identity.DuplicateEmail": "البريد الإلكتروني '{0}' مستخدم بالفعل.",
"Identity.DuplicateRoleName": "اسم الدور '{0}' مأخوذ بالفعل.",
"Identity.DuplicateUserName": "اسم المستخدم '{0}' مأخوذ بالفعل.",
"Identity.InvalidEmail": "البريد الإلكتروني '{0}' غير صالح.",
"Identity.InvalidPasswordHasherCompatibilityMode": "وضع PasswordHasherCompatibilityMode غير صالح.",
"Identity.InvalidPasswordHasherIterationCount": "يجب أن يكون عدد التكرار عددًا صحيحًا موجبًا.",
"Identity.InvalidRoleName": "اسم الدور '{0}' غير صالح.",
"Identity.InvalidToken": "غير صالح token.",
"Identity.InvalidUserName": "اسم المستخدم '{0}' غير صالح ، يمكن أن يحتوي على أحرف أو أرقام فقط.",
"Identity.LoginAlreadyAssociated": "يوجد مستخدم لديه معلومات تسجيل الدخول هذه بالفعل.",
"Identity.PasswordMismatch": "كلمة مرور غير صحيحة.",
"Identity.PasswordRequiresDigit": "يجب أن تحتوي كلمات المرور على رقم واحد على الأقل ('0' - '9').",
"Identity.PasswordRequiresLower": "يجب أن تحتوي كلمات المرور على حرف صغير واحد على الأقل ('a' - 'z').",
"Identity.PasswordRequiresNonAlphanumeric": "يجب أن تحتوي كلمات المرور على حرف واحد غير أبجدي رقمي على الأقل.",
"Identity.PasswordRequiresUpper": "يجب أن تحتوي كلمات المرور على حرف كبير واحد على الأقل ('A' - 'Z').",
"Identity.PasswordTooShort": "يجب أن تتكون كلمات المرور من {0} حرف على الأقل.",
"Identity.RoleNotFound": "الدور {0} غير موجود.",
"Identity.UserAlreadyHasPassword": "لدى المستخدم بالفعل مجموعة كلمات مرور.",
"Identity.UserAlreadyInRole": "المستخدم بالفعل في الدور '{0}'.",
"Identity.UserLockedOut": "المستخدم مغلق.",
"Identity.UserLockoutNotEnabled": "التأمين غير ممكّن لهذا المستخدم.",
"Identity.UserNameNotFound": "المستخدم {0} غير موجود.",
"Identity.UserNotInRole": "المستخدم ليس في الدور '{0}'.",
"Identity.PasswordConfirmationFailed": "كلمة المرور لا تتطابق مع كلمة مرور التأكيد.",
"Identity.StaticRoleRenamingErrorMessage": "لا يمكن إعادة تسمية الأدوار الثابتة.",
"Identity.StaticRoleDeletionErrorMessage": "لا يمكن حذف الأدوار الثابتة.",
"Volo.Abp.Identity:010001": "لا يمكنك حذف حسابك الخاص!",
"Permission:IdentityManagement": "إدارة الهوية",
"Permission:RoleManagement": "إدارة الأدوار",
"Permission:Create": "إنشاء",
"Permission:Edit": "تحرير",
"Permission:Delete": "حذف",
"Permission:ChangePermissions": "تغيير الأذونات",
"Permission:UserManagement": "إدارة المستخدم",
"Permission:UserLookup": "بحث المستخدم",
"DisplayName:Abp.Identity.Password.RequiredLength": "الطول المطلوب",
"DisplayName:Abp.Identity.Password.RequiredUniqueChars": "رقم الأحرف الفريدة المطلوبة",
"DisplayName:Abp.Identity.Password.RequireNonAlphanumeric": "الحرف غير الأبجدي الرقمي المطلوب",
"DisplayName:Abp.Identity.Password.RequireLowercase": "الأحرف صغيرة المطلوبة",
"DisplayName:Abp.Identity.Password.RequireUppercase": "الأحرف الكبيرة المطلوبة",
"DisplayName:Abp.Identity.Password.RequireDigit": "الرقم المطلوب",
"DisplayName:Abp.Identity.Lockout.AllowedForNewUsers": "ممكّن للمستخدمين الجدد",
"DisplayName:Abp.Identity.Lockout.LockoutDuration": "مدة التأمين (بالثواني)",
"DisplayName:Abp.Identity.Lockout.MaxFailedAccessAttempts": "محاولات الوصول الفاشلة",
"DisplayName:Abp.Identity.SignIn.RequireConfirmedEmail": "مطلوب بريد إلكتروني مؤكد",
"DisplayName:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "تمكين تأكيد رقم الهاتف",
"DisplayName:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "تتطلب رقم هاتف مؤكد",
"DisplayName:Abp.Identity.User.IsUserNameUpdateEnabled": "هل تم تمكين تحديث اسم المستخدم",
"DisplayName:Abp.Identity.User.IsEmailUpdateEnabled": "هل تم تمكين تحديث البريد الإلكتروني",
"Description:Abp.Identity.Password.RequiredLength": "يجب أن يكون الحد الأدنى لطول كلمة المرور.",
"Description:Abp.Identity.Password.RequiredUniqueChars": "الحد الأدنى لعدد الأحرف الفريدة التي يجب أن تحتويها كلمة المرور.",
"Description:Abp.Identity.Password.RequireNonAlphanumeric": "إذا كانت كلمات المرور يجب أن تحتوي على حرف غير أبجدي رقمي.",
"Description:Abp.Identity.Password.RequireLowercase": "إذا كانت كلمات المرور يجب أن تحتوي على حرف ASCII صغير.",
"Description:Abp.Identity.Password.RequireUppercase": "إذا كان يجب أن تحتوي كلمات المرور على أحرف ASCII ذات الأحرف الكبيرة.",
"Description:Abp.Identity.Password.RequireDigit": "إذا كانت كلمات المرور يجب أن تحتوي على رقم.",
"Description:Abp.Identity.Lockout.AllowedForNewUsers": "ما إذا كان يمكن قفل مستخدم جديد.",
"Description:Abp.Identity.Lockout.LockoutDuration": "المدة التي يتم فيها حظر المستخدم عند حدوث قفل.",
"Description:Abp.Identity.Lockout.MaxFailedAccessAttempts": "عدد محاولات الوصول الفاشلة المسموح بها قبل قفل المستخدم ، بافتراض تمكين التأمين.",
"Description:Abp.Identity.SignIn.RequireConfirmedEmail": "ما إذا كان عنوان البريد الإلكتروني المؤكد مطلوبًا لتسجيل الدخول.",
"Description:Abp.Identity.SignIn.EnablePhoneNumberConfirmation": "ما إذا كان بإمكان المستخدم تأكيد رقم الهاتف.",
"Description:Abp.Identity.SignIn.RequireConfirmedPhoneNumber": "ما إذا كان رقم الهاتف المؤكد مطلوبًا لتسجيل الدخول.",
"Description:Abp.Identity.User.IsUserNameUpdateEnabled": "ما إذا كان يمكن تحديث اسم المستخدم بواسطة المستخدم.",
"Description:Abp.Identity.User.IsEmailUpdateEnabled": "ما إذا كان يمكن تحديث البريد الإلكتروني من قبل المستخدم."
}
}

12
modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Localization/Resources/ar.json

@ -0,0 +1,12 @@
{
"culture": "ar",
"texts": {
"Volo.IdentityServer:DuplicateIdentityResourceName": "اسم مورد الهوية موجود بالفعل: {Name}",
"Volo.IdentityServer:DuplicateApiResourceName": "اسم مورد Api موجود بالفعل: {Name}",
"Volo.IdentityServer:DuplicateClientId": "موجود بالفعل: {ClientId}",
"UserLockedOut": "تم قفل حساب المستخدم بسبب محاولات تسجيل الدخول غير الصالحة. يرجى الانتظار بعض الوقت والمحاولة مرة أخرى.",
"InvalidUserNameOrPassword": "اسم مستخدم أو كلمة مرور غير صالحة!",
"LoginIsNotAllowed": "غير مسموح لك بتسجيل الدخول! أنت بحاجة إلى تأكيد بريدك الإلكتروني / رقم هاتفك.",
"InvalidUsername": "اسم المستخدم أو كلمة المرور غير صالحة!"
}
}

10
modules/permission-management/src/Volo.Abp.PermissionManagement.Domain.Shared/Volo/Abp/PermissionManagement/Localization/Domain/ar.json

@ -0,0 +1,10 @@
{
"culture": "ar",
"texts": {
"Permissions": "الأذونات",
"OnlyProviderPermissons": "هذا الموفر فقط",
"All": "الكل",
"SelectAllInAllTabs": "منح كافة الأذونات",
"SelectAllInThisTab": "تحديد الكل"
}
}

7
modules/setting-management/src/Volo.Abp.SettingManagement.Domain.Shared/Volo/Abp/SettingManagement/Localization/Resources/AbpSettingManagement/ar.json

@ -0,0 +1,7 @@
{
"culture": "ar",
"texts": {
"Settings": "الإعدادات",
"SuccessfullySaved": "تم الحفظ بنجاح"
}
}

22
modules/tenant-management/src/Volo.Abp.TenantManagement.Domain.Shared/Volo/Abp/TenantManagement/Localization/Resources/ar.json

@ -0,0 +1,22 @@
{
"culture": "ar",
"texts": {
"Menu:TenantManagement": "إدارة الجهات",
"Tenants": "الجهات",
"NewTenant": "جهة جديدة",
"TenantName": "اسم الجهة",
"DisplayName:TenantName": "اسم الجهة",
"TenantDeletionConfirmationMessage": "سيتم حذف المستأجر {0}. هل تؤكد ذلك?",
"ConnectionStrings": "Connection Strings",
"DisplayName:DefaultConnectionString": "Default Connection String",
"DisplayName:UseSharedDatabase": "استخدام قاعدة البيانات المشتركة",
"Permission:TenantManagement": "إدارة المستأجر",
"Permission:Create": "إنشاء",
"Permission:Edit": "تحرير",
"Permission:Delete": "حذف",
"Permission:ManageConnectionStrings": "Manage connection strings",
"Permission:ManageFeatures": "إدارة الميزات",
"DisplayName:AdminEmailAddress": "عنوان البريد الإلكتروني للمسؤول",
"DisplayName:AdminPassword": "كلمة مرور المسؤول"
}
}

1
npm/packs/bootstrap/abp.resourcemapping.js

@ -1,6 +1,7 @@
module.exports = {
mappings: {
"@node_modules/bootstrap/dist/css/bootstrap.css": "@libs/bootstrap/css/",
"@node_modules/@laylazi/bootstrap-rtl/dist/css/bootstrap-rtl.css": "@libs/bootstrap/css/",
"@node_modules/bootstrap/dist/js/bootstrap.bundle.js": "@libs/bootstrap/js/"
}
}

5
npm/packs/bootstrap/package.json

@ -6,7 +6,8 @@
},
"dependencies": {
"@abp/core": "^2.7.0",
"bootstrap": "^4.3.1"
"bootstrap": "^4.3.1",
"@laylazi/bootstrap-rtl": "4.4.101"
},
"gitHead": "0ea3895f3b0b489e3ea81fc88f8f0896b22b61bd"
}
}

8
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain.Shared/Localization/MyProjectName/ar.json

@ -0,0 +1,8 @@
{
"culture": "ar",
"texts": {
"Menu:Home": "الرئيسية",
"Welcome": "مرحبا",
"LongWelcomeMessage": "مرحبا بكم في التطبيق. هذا مشروع بدء تشغيل يعتمد على إطار عمل ABP. لمزيد من المعلومات ، يرجى زيارة abp.io."
}
}

1
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/MyProjectNameWebModule.cs

@ -149,6 +149,7 @@ namespace MyCompanyName.MyProjectName.Web
typeof(AbpUiResource)
);
options.Languages.Add(new LanguageInfo("ar", "ar", "العربية"));
options.Languages.Add(new LanguageInfo("cs", "cs", "Čeština"));
options.Languages.Add(new LanguageInfo("en", "en", "English"));
options.Languages.Add(new LanguageInfo("pt-BR", "pt-BR", "Português"));

11083
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/bootstrap/css/bootstrap-rtl.css

File diff suppressed because it is too large
Loading…
Cancel
Save