PDA

View Full Version : تبدیل اسم از انگلیسی به فارسی (فینگلیش به فارسی)



managment-barnamenevis
شنبه 24 تیر 1402, 02:17 صبح
سلام دوستان من به دلایلی نیاز دارم
تو برنامه ام
اسم انگلیسی را به فارسی تبدیل کنم
مثلا mohammad بشه محمد

آیا dll وجود داره؟
ممنون میشم راهنماییم کنید.

پرستو پارسایی
شنبه 24 تیر 1402, 10:28 صبح
برای تبدیل یک رشته انگلیسی به فارسی می‌توانید از کلاس System.Globalization.PersianCalendar استفاده کنید. این کلاس به شما این امکان را می‌دهد که تاریخ و زمان را به شمسی تبدیل کنید، اما با استفاده از یک ترفند ساده می‌توانید این کلاس را برای تبدیل رشته‌های انگلیسی به فارسی هم استفاده کنید.

در ابتدا، باید فضای‌نام System.Globalization را وارد کنید. سپس می‌توانید یک نمونه از کلاس PersianCalendar را ایجاد کنید و از تابع GetMonthName آن برای تبدیل نام ماه انگلیسی به فارسی استفاده کنید. همچنین برای تبدیل نام خود به فارسی، می‌توانید از یک دیکشنری استفاده کنید که نام‌های انگلیسی را به فارسی متناظرشان می‌نویسد.

یک مثال از تبدیل نام انگلیسی به فارسی :

using System;
using System.Collections.Generic;
using System.Globalization;


class Program
{
static void Main(string[] args)
{
Dictionary<string, string> nameDict = new Dictionary<string, string>()
{
{"mohammad", "محمد"},
{"ali", "علی"},
{"maryam", "مریم"},
};


string name = "mohammad";
string persianName = nameDict.ContainsKey(name) ? nameDict[name] : name;


TextInfo ti = new CultureInfo("fa-IR", false).TextInfo;
Console.WriteLine(ti.ToTitleCase(persianName));


Console.ReadLine();
}
}

در این کد، ابتدا یک دیکشنری با نام‌های انگلیسی و متناظرشان در فارسی ساخته شده . سپس نام انگلیسی مورد نظر در متغیر name قرار داده شده و با استفاده از دیکشنری، نام متناظر در فارسی در متغیر persianName قرار داده گزفته. سپس با استفاده از کلاس TextInfo، نام به صورت تایتل کیس (با حروف بزرگ در ابتدای هر کلمه) تبدیل و در نهایت، نام تبدیل شده در خروجی نمایش داده میشه.

در صورتیکه به هر دلیلی نخواستید از روش فوق استفاده کنید میتوانید برای تبدیل متن انگلیسی به متن فارسی ، از کتابخانه‌های پردازش زبان طبیعی مانند FarsiLibrary.Utils و PersianTools.Core استفاده کنید.
برای مثال، با استفاده از کلاس PersianTools.Core.PersianText در کتابخانه PersianTools.Core، می‌توانید یک رشته انگلیسی را به فارسی تبدیل کنید. برای این کار، کافی است این کتابخانه را در پروژه‌ی خود نصب کرده و کد زیر را در برنامه‌ی خود قرار دهید.

using System.Windows.Forms;
using PersianTools.Core;


class Program
{
static void Main(string[] args)
{
string englishText = "This is an English text.";
string persianText = PersianText.ConvertToPersian(englishText);


MessageBox.Show(persianText, "نمایش متن فارسی");


Application.Run();
}
}

در این کد، ابتدا رشته‌ی انگلیسی مورد نظر در متغیر englishText قرار داده می‌شود. سپس با استفاده از تابع ConvertToPersian کلاس PersianText، رشته‌ی انگلیسی به متن فارسی تبدیل و در متغیر persianText قرار می‌گیرد. در نهایت، متن تبدیل شده در یک مسیج باکس نمایش داده می‌شود. عنوان مسیج باکس با استفاده از رشته "نمایش متن فارسی" تعیین شده .
لازم به ذکر است که به منظور نمایش مسیج باکس، باید فضای‌نام System.Windows.Forms را وارد کنید و از تابع Application.Run() برای نمایش پنجره‌ی برنامه استفاده کنید. این روش برای تبدیل نام‌های انگلیسی به فارسی کارایی خوبی ندارد، زیرا تبدیل باید برای هر نام به صورت جداگانه انجام شود. برای این کار، استفاده از یک دیکشنری می‌تواند روش بهتری باشه.

managment-barnamenevis
شنبه 24 تیر 1402, 14:25 عصر
برای تبدیل یک رشته انگلیسی به فارسی می‌توانید از کلاس System.Globalization.PersianCalendar استفاده کنید. این کلاس به شما این امکان را می‌دهد که تاریخ و زمان را به شمسی تبدیل کنید، اما با استفاده از یک ترفند ساده می‌توانید این کلاس را برای تبدیل رشته‌های انگلیسی به فارسی هم استفاده کنید.

در ابتدا، باید فضای‌نام System.Globalization را وارد کنید. سپس می‌توانید یک نمونه از کلاس PersianCalendar را ایجاد کنید و از تابع GetMonthName آن برای تبدیل نام ماه انگلیسی به فارسی استفاده کنید. همچنین برای تبدیل نام خود به فارسی، می‌توانید از یک دیکشنری استفاده کنید که نام‌های انگلیسی را به فارسی متناظرشان می‌نویسد.

یک مثال از تبدیل نام انگلیسی به فارسی :

using System;
using System.Collections.Generic;
using System.Globalization;


class Program
{
static void Main(string[] args)
{
Dictionary<string, string> nameDict = new Dictionary<string, string>()
{
{"mohammad", "محمد"},
{"ali", "علی"},
{"maryam", "مریم"},
};


string name = "mohammad";
string persianName = nameDict.ContainsKey(name) ? nameDict[name] : name;


TextInfo ti = new CultureInfo("fa-IR", false).TextInfo;
Console.WriteLine(ti.ToTitleCase(persianName));


Console.ReadLine();
}
}

در این کد، ابتدا یک دیکشنری با نام‌های انگلیسی و متناظرشان در فارسی ساخته شده . سپس نام انگلیسی مورد نظر در متغیر name قرار داده شده و با استفاده از دیکشنری، نام متناظر در فارسی در متغیر persianName قرار داده گزفته. سپس با استفاده از کلاس TextInfo، نام به صورت تایتل کیس (با حروف بزرگ در ابتدای هر کلمه) تبدیل و در نهایت، نام تبدیل شده در خروجی نمایش داده میشه.

در صورتیکه به هر دلیلی نخواستید از روش فوق استفاده کنید میتوانید برای تبدیل متن انگلیسی به متن فارسی ، از کتابخانه‌های پردازش زبان طبیعی مانند FarsiLibrary.Utils و PersianTools.Core استفاده کنید.
برای مثال، با استفاده از کلاس PersianTools.Core.PersianText در کتابخانه PersianTools.Core، می‌توانید یک رشته انگلیسی را به فارسی تبدیل کنید. برای این کار، کافی است این کتابخانه را در پروژه‌ی خود نصب کرده و کد زیر را در برنامه‌ی خود قرار دهید.

using System.Windows.Forms;
using PersianTools.Core;


class Program
{
static void Main(string[] args)
{
string englishText = "This is an English text.";
string persianText = PersianText.ConvertToPersian(englishText);


MessageBox.Show(persianText, "نمایش متن فارسی");


Application.Run();
}
}

در این کد، ابتدا رشته‌ی انگلیسی مورد نظر در متغیر englishText قرار داده می‌شود. سپس با استفاده از تابع ConvertToPersian کلاس PersianText، رشته‌ی انگلیسی به متن فارسی تبدیل و در متغیر persianText قرار می‌گیرد. در نهایت، متن تبدیل شده در یک مسیج باکس نمایش داده می‌شود. عنوان مسیج باکس با استفاده از رشته "نمایش متن فارسی" تعیین شده .
لازم به ذکر است که به منظور نمایش مسیج باکس، باید فضای‌نام System.Windows.Forms را وارد کنید و از تابع Application.Run() برای نمایش پنجره‌ی برنامه استفاده کنید. این روش برای تبدیل نام‌های انگلیسی به فارسی کارایی خوبی ندارد، زیرا تبدیل باید برای هر نام به صورت جداگانه انجام شود. برای این کار، استفاده از یک دیکشنری می‌تواند روش بهتری باشه.





دوست عزیز ممنون بابت پاسخگویی شما
اما متاسفانه درست اسم هارا تبدیل نمی کنه

و مورد بعدی هم خودم باید از قبل اسامی را بنویسم
در حالی که اسم های من مشخص نیست

پرستو پارسایی
شنبه 24 تیر 1402, 15:11 عصر
اگر امکان ایجاد دیکشنری را ندارید
برای تبدیل فینگلیش به معادل فارسی ، شما می توانید از کتابخانه‌ی PersianTools.Core استفاده کنید. این کتابخانه می‌تواند به شما کمک کنه تا یک رشته فارسی را به فینگلیش و یا فینگلیش را به معادل فارسی تبدیل کنید.
برای استفاده از این کتابخانه، ابتدا نیاز است آن را به پروژه‌ی خود اضافه کنید. برای این کار، از NuGet Package Manager استفاده کنید و کتابخانه‌ی PersianTools.Core را نصب کنید.
سپس می‌توانید از توابع FinglishToPersian و PersianToStandard برای تبدیل فینگلیش به معادل فارسی استفاده کنید. بعنوان مثال:

using PersianTools.Core;

string farsiText = FarsiTextTools.FinglishToPersian("salam donya");
string standardText = FarsiTextTools.PersianToStandard(farsiText);

managment-barnamenevis
شنبه 24 تیر 1402, 15:17 عصر
اگر امکان ایجاد دیکشنری را ندارید
برای تبدیل فینگلیش به معادل فارسی ، شما می توانید از کتابخانه‌ی PersianTools.Core استفاده کنید. این کتابخانه می‌تواند به شما کمک کنه تا یک رشته فارسی را به فینگلیش و یا فینگلیش را به معادل فارسی تبدیل کنید.
برای استفاده از این کتابخانه، ابتدا نیاز است آن را به پروژه‌ی خود اضافه کنید. برای این کار، از NuGet Package Manager استفاده کنید و کتابخانه‌ی PersianTools.Core را نصب کنید.
سپس می‌توانید از توابع FinglishToPersian و PersianToStandard برای تبدیل فینگلیش به معادل فارسی استفاده کنید. بعنوان مثال:

using PersianTools.Core;

string farsiText = FarsiTextTools.FinglishToPersian("salam donya");
string standardText = FarsiTextTools.PersianToStandard(farsiText);



کتابخانه را اضافه کردم
اما
توابع شناسایی نشد

154808

پرستو پارسایی
شنبه 24 تیر 1402, 15:30 عصر
احتمالاً مشکل در اضافه کردن کتابخانه PersianTools.Core به پروژه شماست
مطمئن شوید که در ابتدای کد خود، دستور using PersianTools.Core را قرار داده‌اید. این دستور به کامپایلر برای شناسایی کلاس‌های موجود در کتابخانه PersianTools.Core کمک می‌کند.

managment-barnamenevis
شنبه 24 تیر 1402, 15:58 عصر
احتمالاً مشکل در اضافه کردن کتابخانه PersianTools.Core به پروژه شماست
مطمئن شوید که در ابتدای کد خود، دستور using PersianTools.Core را قرار داده‌اید. این دستور به کامپایلر برای شناسایی کلاس‌های موجود در کتابخانه PersianTools.Core کمک می‌کند.


PersianTools.Core
از nuget نصب کردم

و با
using در ابتدا کتابخانه را اضافه کردم

پرستو پارسایی
شنبه 24 تیر 1402, 19:23 عصر
اگر باز هم خط قرمزی در محیط برنامه‌نویسی شما وجود دارد، باید بررسی کنید که آیا کتابخانه PersianTools.Core به درستی به پروژه شما اضافه شده است و آیا نسخه آن با نسخه NuGet مطابقت دارد. همچنین می‌توانید از روش‌های دیگری مانند بررسی مسیر کتابخانه و اضافه کردن آن به صورت دستی به پروژه خود استفاده کنید.

managment-barnamenevis
شنبه 24 تیر 1402, 19:25 عصر
اگر باز هم خط قرمزی در محیط برنامه‌نویسی شما وجود دارد، باید بررسی کنید که آیا کتابخانه PersianTools.Core به درستی به پروژه شما اضافه شده است و آیا نسخه آن با نسخه NuGet مطابقت دارد. همچنین می‌توانید از روش‌های دیگری مانند بررسی مسیر کتابخانه و اضافه کردن آن به صورت دستی به پروژه خود استفاده کنید.


من ازویژوال نسخه 2015 استفاده می کنم . احتمال داره مشکل از اون باشه؟

پرستو پارسایی
شنبه 24 تیر 1402, 19:36 عصر
ممکن است خطاهایی که در کد خود دارید به دلیل استفاده از ویژگی‌هایی باشد که در نسخه 2015 وجود ندارد. اما اگر خطاهایی که دارید مربوط به کتابخانه PersianTools.Core هستند، باید بررسی کنید که آیا این کتابخانه به درستی به پروژه شما اضافه شده است و آیا نسخه آن با نسخه NuGet مطابقت دارد.


برای رفع این خطاها، می‌توانید از روش‌هایی مانند بررسی مسیر کتابخانه و اضافه کردن آن به صورت دستی به پروژه خود استفاده کنید. برای این کار، فایل .dll کتابخانه PersianTools.Core را دانلود کرده و به پروژه خود اضافه کنید. و در بخش ابتدای کد خود دستور using PersianTools.Core را قرار داده و از توابع آن استفاده بفرمائید. تاکید دوباره من برای درست دریافت نکردن کتابخانه هست .