Как видно из предыдущей записи я заканчиваю написание программы поиска
для КПК. Когда только начинал писать ее не думал, что там будет много
текста. Однако вчера, посмотрел в исходный код и ужаснулся. Текст в
интерфейсе, сообщения об ошибках, предупреждение и вопросы
пользователям - все это потянет на несколько килобайт текста. Поэтому
было принято решение для простоты локализации свести весь этот текст
воедино. Так будет и проще править и легче переводить на нужный язык.
Сначала хотел создать xml файл, но потом почитал советы на rsdn.ru и
решил взять за модель Total Commander. Там есть текстовый файл с
расширением LNG и в нем идут строки вида:
Номер = "Значение"
Так и сделал. Получилось не много не мало 84 строки. Уже написал класс, обрабатывающий этот файл и возвращающий нужную строку.
Вот этот класс:
Код класса приведен на языке программирования C#. Класс содержит 2 статических метода. Один из них, доступный из вне, получает значение текстовой строки номер которой указан в левой части перед знаком равно. Второй приватный метод - получает директорию
в которой располагается приложение. Это сделано так сложно из-за того, что класс заточен для использования в КПК. А там не работает функция получения текущей директории. Так же класс не позволяет задать имя файла.
//Код класса
public class Localize { public Localize() { }
public static string GetTextString(string number) { string value = ""; // Process pr = Process.GetCurrentProcess();
//FileInfo fi = pr.StartInfo; string lang =GetApplicationPath() + "language.lng"; using (StreamReader sr = new StreamReader(lang, Encoding.GetEncoding(1251)))
//Для поддержки русского языка кодировка 1251 { while (sr.Peek() >= 0) {
string nextString = sr.ReadLine(); int iNum = nextString.IndexOf("="); if (iNum != -1) { string num = nextString.Substring(0, iNum);
if (num == number) { string[] val = new string[3];
//value = nextString.Substring(iNum + 2, nextString.Length - 2); val = nextString.Split('"');
value = val[1]; } } }