برای تبدیل یک رشته انگلیسی به فارسی میتوانید از کلاس 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() برای نمایش پنجرهی برنامه استفاده کنید. این روش برای تبدیل نامهای انگلیسی به فارسی کارایی خوبی ندارد، زیرا تبدیل باید برای هر نام به صورت جداگانه انجام شود. برای این کار، استفاده از یک دیکشنری میتواند روش بهتری باشه.