Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
Локализация проекта ММВ при помощи языкового модуля
toizyДата: Пятница, 06 Апреля 2007, 09:19 | Сообщение # 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


Жизнь оказалась не такой уж и забавной, как поначалу...

Сообщение отредактировал toizy - Пятница, 06 Апреля 2007, 09:21
 
  • Страница 1 из 1
  • 1
Поиск: