PDA

View Full Version : ترجمه متن پیغامها



JaguarXF
جمعه 04 اردیبهشت 1388, 18:31 عصر
در برنامه چند زبانه . چطور باید پیغامهای داخلی برنامه رو - نه متن کنترل های فرمها - رو به زبان مقصد ترجمه کنم؟

seven7777777
جمعه 04 اردیبهشت 1388, 20:20 عصر
معمولا در این موارد چندین فایل در کنار پروژه هست که هر کدام یک زبان رو ساپورت می کنن .
شما می تونی پیام هاتو به زبان های مختلف تو یه جدول در دیتابیست ذخیره کنی و بعد هم ادامه کار .
می تونی به هر پیامت یه کد اختصاص بدی ، اینجوری برنامت هم منسجم تر و راحت تر میشه و بعد مثلا متد ToString رو هم Override کن تا وقتی زدی 232.ToString() خودش از دیتابیس واکشی کنه و ... .

asefy2008
جمعه 04 اردیبهشت 1388, 20:59 عصر
سلام یه نظری داشتم می خوام ببینم دوستان نظرشون در این مورد چی هست.
اگر پیام ها رو به زبان های مختلف در یک فایل تکست ذخیره کنیم مشکلی پیش خواهد اومد؟

seven7777777
جمعه 04 اردیبهشت 1388, 22:28 عصر
اگر پیام ها رو به زبان های مختلف در یک فایل تکست ذخیره کنیم مشکلی پیش خواهد اومد؟
در فایل تکست نه ولی در یک فایل برای پروژه های بزرگ شاید مشکل ساز بشه . منظورم جستجو درفایل .
برا فایل مثل خیلی از نرم افزارها یا بازی ها مثل باز های فوتبال در فایل ذخیره می کنند اما در چندین فایل که هر کدوم مر بوط به یکی از زبان هاست .

asefy2008
جمعه 04 اردیبهشت 1388, 23:59 عصر
حالا غیر از دیتابیس و همین فایل روش دیگه ای برای چند زبانه کردن وجود داره؟

seven7777777
شنبه 05 اردیبهشت 1388, 09:49 صبح
فکر کنم بدترین کار اینه که تو خود برنامه یه Switch بذاریم و تو هر Case اون پیغام مربوطه رو به زبان مربوطه به کار ببریم .:لبخند:

شاید استفاده از فایل های XML هم کارساز باشه . این مورد یه مزیت داره ، اونم اینه که اگه مثلا از امکانات برنامت این بود که زبان های مختلفی رو پشتیبانی می کنه و بعد از ارائه خواستی زبان جدیدی به نرم افزار اضافه کنی با XML به راحتی میشد ( از طریق وب ) .

JaguarXF
شنبه 05 اردیبهشت 1388, 10:05 صبح
این میشه: ?
برای هر زبان مقصد . یک فایل ریسورس resx به ما بدهند و به پروزه اضافه کنیم شان.
داخل برنامه هم یک شی resourceManager و خوندن culture info و یک متد getstring هم برای آوردن پیغام اون زبان از فایل ریسورس مربوطه

seven7777777
شنبه 05 اردیبهشت 1388, 11:22 صبح
اینهم نظر خوبیه .
ولی به فرض برامه ای که دست کاربره و حالا کاربر می خواد زبان فرانسوی اونو فعال کنه ، ما بهش یه فایل ریسورس بدیم ؟؟؟
ان روش فکر کنم فقط برای خود برنامه نویس بدرد بخوره ، البته شاید ، من اینطور فکر می کنم . ولی بهتره طوری باشه که برنامه وقتی دست کاربره، خودش بتونه زبان های مختلف رو فعال کنه .

esmaeily-hosein
شنبه 05 اردیبهشت 1388, 14:50 عصر
یه مدل کوچولوش برات مینویسم خواستی خودت کامل کن :


public class TextItem
{
public TextItem(){}

public TextItem(string name,string text):this()
{
Name = name;
Text = text;
}

public string Name { get; set; }

[Localizable(true)]
public string Text { get; set; }
}

public class LocalizableItems : Component
{
private List<TextItem> textItems;

public LocalizableItems()
{
textItems = new List<TextItem>();
}

[Localizable(true)]
[DesignerSerializationVisibility(DesignerSerializat ionVisibility.Content)]
public List<TextItem> TextItems
{
get { return textItems; }
}

/// <summary>
/// GetTextByName
/// </summary>
/// <param name="name">key</param>
/// <returns>text string</returns>
public TextItem GetTextItemByName(string name)
{
if (textItems == null) return null;
TextItem item= textItems.Find((TextItem s)=> s.Name==name);
return item;
}
}