Re: Проблема локализации проекта.
От: Mishka Норвегия  
Дата: 02.11.01 09:02
Оценка:
Я б применил паттерн "Strategy", на C# это выглядит так.

// это в одном модуле
interface IText
{
string GetText(int id);
}

// Пусть это будет в russian.dll
class Text : IText
{
public string GetText(int id)
{
if (id == 1) return "Сообщение"; // главное вернуть строку, а как — это вопрос реализации ;)
}
}

// Пусть это будет в english.dll
class Text : IText
{
public string GetText(int id)
{
if (id == 1) return "Message";
}
}

// Пусть это будет ещё где-нибудь
class B
{
private IText text;
public B(IText _text)
{
text = _text;
}
public void DoSomething()
{
MessageBox.Show(text.GetText(1));
}
}

class MainClass
{
public void MainProc()
{
Assembly a = Assembly.LoadFrom("Russian.dll"); // путь можно считать откуда-нибудь, из реестра например
IText text = (IText)Activator.CreateInstance(a.GetType("Text"));
B b = new B(text);
b.DoSomething();
}
}

Теперь, если надо поменять язык — "Russian.dll" меняем на "English.dll" при загрузке assembly. Всё очень просто, не так ли? ;)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.