Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
Локализация проекта ММВ при помощи языкового модуля
toizyДата: Суббота, 07 Апреля 2007, 13:06 | Сообщение # 1
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
В приложении MMB имеются три вида текстовых значений, которые могут нуждаться в локализации.
1) Собственно Text (aka Caption or Default Text) различных объектов.
2) Текстовая переменная.
3) Всплывающая подсказка (ToolTip).
К сожалению, третий вид (ToolTip) в MMB пока недоступен для локализации при помощи языковых модулей.

Языковой модуль является текстовым файлом и по своей структуре напоминает ини-файл. Каждый элемент состоит из идентификатора и значения.
Идентификаторы объектов равны Label этих объектов, а переменных - в виде str (или любого другого обозначения - по желанию) и числовых индексов. Все переменные, которые нуждаются в локализации, выносятся в отдельный скрипт и инициализируются при запуске приложения первым действием. Выглядят они в виде массива переменных str - str$[n]. Это, конечно, не идеальный вариант, но лучшего я пока не нашел. Далее - при запуске программы считывается имя файла нужного модуля (из реестра или ини-файла).

Пример языкового модуля:

TextBTN=Кнопка
Text=Здесь текст - замена дефолтному
str1=Текстовая переменная
str2=Многострочная текстовая переменная:\nПример текста в несколько строк.

Сам скрипт локализации выглядит следующим образом:

Code
lang$='<SrcDir>\Language\rus.lng' - как пример маршрута
linefeed$=CHR(13)+CHR(10)
For i=1 To NOL(lang$)
trans$=StrFromFile(lang$,i,1)
If (POS(=,trans$)) Then
trans$=StrChange(trans$,\n,linefeed$)
count=POS(=,trans$)
len=LEN(trans$)-count+1
txt$=StrDel(trans$,1,count)
label$=StrDel(trans$   ,count,len)
If (POS(str,label$)) Then
pos=POS(str,label$)+3
count2=count-pos
n=VAL(StrCopy(label$,pos,count2))
LoadText("str$[n]","txt$")
Else
LoadText("label$","txt$")
End
End
Next i

Автор - Rush


Жизнь оказалась не такой уж и забавной, как поначалу...
 
  • Страница 1 из 1
  • 1
Поиск: