MUI

Обсуждение NeoBook на русском
User avatar
Snow_Irbis
Posts: 13
Joined: Thu Jul 14, 2011 7:46 am
Contact:

Re: MUI

Post by Snow_Irbis »

mishem wrote:Короче, я особо не вникал что там в файле.
Взгляд мой упал на заранее в сущности не правильный код.
Разжевывать, у меня нет ни желания ни времени человеку который не хочет понять простых истин.
Считаете что так правильно да ради бога.
Хотя ладно, попробую еще раз.
Так как Вы пытаетесь вложить в проект файл не указав его явное имя
это вам ни о чем не говорит?

Code: Select all

SetVar "[lang]" "RU"
Как раз и получится

Code: Select all

ExtractFile "[PubDir]MUI\[b]RU[/b].txt" "[PubDir]lang.llf"
и если мне память не изменяет, то вообще достаточно указать имя извлекаемого файла без всяких путей.
:mrgreen: видите ли компилятор не обладает телепатическими способностями и не может предугадать что Вы за значение присвоите в переменную [lang] , во время же компиляции переменная пустая , соответственно приведенный Вами код и его алгоритм работать не будут
mishem wrote: и если мне память не изменяет, то вообще достаточно указать имя извлекаемого файла без всяких путей.
Что бы извлечь его нужно добавить , а в Вашем примере файл просто не добавится
mishem wrote: А это

Code: Select all

FileRead "[PubDir]lang.llf" "2" "[MUI_VAR_2]"
FileRead "[PubDir]lang.llf" "3" "[MUI_VAR_3]"
на мой взгляд, вообще не нужно.
Но в моей голове прокрутилось что это текст присваивается переменным.
Здесь мое упущение, не вник.
Но при вашем раскладе, если файл существует, Else никогда не сработает.
Но если и сработает, то текст будет тот который присвоен по умолчанию. Тоесть русский.
Я англичанин, и мне до лампочки будет сообщение на русском.
А сообщение должно быть на том языке, который мне хотелось бы установить.
Отсюда через условие нужно присвоить переменным сообщение на нужном языке.
А код после Else и не должен срабатывать если файл существует , он должен срабатывать только в том случае если файл отсутствует ( такое может произойти например если программа запущена с РидОнлиМемори носителя )
mishem wrote: Я англичанин, и мне до лампочки будет сообщение на русском.
А сообщение должно быть на том языке, который мне хотелось бы установить.
Отсюда через условие нужно присвоить переменным сообщение на нужном языке.
Ну что я могу сказать , учите русский

mishem wrote: Мне этот пример совершенно не интересен. Отсюда на скорую руку и были выссказаны недостатки(на мой взгляд) как и сейчас.
Не сумел правильно донести? Да, это моя вина.
Но если бы человек захотел понять то о чем ему хотели сказать, он понял бы.
Я все, продолжения не будет.
Захотите понять, поймете. Нет, на нет и спроса нет.
А тут не надо на скорую руку высказывать недостатки особенно если Вы не вникли в код . А то получается и сами не вникли и могли других людей запутать :D
mishem wrote:
250 мс это очень малая величина , Вы никак не ощутите ее
В том то и дело что смысла в ее существовании нет.
Для антивиря - мало. ДДля медленного компа тоже.
Тогда зачем?
Для антивируса как раз достаточно этого времени
Image
InitteCig
Posts: 19
Joined: Sun Oct 28, 2012 11:44 am

Re: MUI

Post by InitteCig »

раз Вы запутались в моем простом коде , то код Peter Вы вряд ли осилили ( опять же мое ИМХО )
Я вас помню еще на нашем форуме, и если честно, в дисскусию вступать не хотелось.
В моей памяти вы остались упертым, не упрямым человеком.

Но задели мое самолюбие.
Потрачу время и разберу все ваши ошибки.

Описывать не буду, выложу пример.

http://rghost.ru/41131243

Это все что нужно в данном случае как для примера.
Единственное что может понадобиться, это исправить путь к вложенным файлам
Проект>Вложенные файлы...
И ФСЕ!
А не городить портянки с никому не нужным кодом.
Длина кода и размер дистрибутива ни как не указывает на размер познаний. :wink:

А! Да! Извиняюсь, забыл из свойства страницы убрать никому не нужный код. Удалите его пожалуйста.
User avatar
Snow_Irbis
Posts: 13
Joined: Thu Jul 14, 2011 7:46 am
Contact:

Re: MUI

Post by Snow_Irbis »

mishem wrote:
раз Вы запутались в моем простом коде , то код Peter Вы вряд ли осилили ( опять же мое ИМХО )
Я вас помню еще на нашем форуме, и если честно, в дисскусию вступать не хотелось.
В моей памяти вы остались упертым, не упрямым человеком.

Но задели мое самолюбие.
Потрачу время и разберу все ваши ошибки.

Описывать не буду, выложу пример.

http://rghost.ru/41131243

Это все что нужно в данном случае как для примера.
Единственное что может понадобиться, это исправить путь к вложенным файлам
Проект>Вложенные файлы...
И ФСЕ!
А не городить портянки с никому не нужным кодом.
Длина кода и размер дистрибутива ни как не указывает на размер познаний. :wink:

А! Да! Извиняюсь, забыл из свойства страницы убрать никому не нужный код. Удалите его пожалуйста.
Видимо я все же мало задел Ваше самолюбие , раз у Вас опять фейл :D Навешенный Вами код на картинки , мало того что лишен всякой логики

Code: Select all

FileRead "[Embedded]Название_файла.txt" "1" "[MUI_VAR_1]"
Но и после компиляции будет вызывать ошибку ( не поленитесь и скомпилируйте свой проект ) после чего получите это

Image

Что бы Ваш код работал надо сделать так

Code: Select all

ExtractFile "[Embedded]Название_файла.txt" "[PubDir]Название_файла.txt"
FileRead "[PubDir]Название_файла.txt" "1" "[MUI_VAR_1]"
Дальнейший спор с Вами прекращаю , так как считаю что ничего полезного он мне не принесет , кроме как не аргументированных оскорблений с Вашей стороны

ПИ Вы все же прислушайтесь к моему совету и читайте Хелп :D
Image
InitteCig
Posts: 19
Joined: Sun Oct 28, 2012 11:44 am

Re: MUI

Post by InitteCig »

Но и после компиляции будет вызывать ошибку
Есть такая проблема. И это не раз обсуждалось на форуме.
Но в каких именно случаях, я уже не помню.
За год открыл НБ раз 5, и то для просмотра чужих проектов.
Еще раз, мне этот пример, не интересен. Так как уж слишком простой что бы заострять на нем внимание.
Я старался донести до вас то, чего вы никак не хотите понять.
Но не расстраивайтесь, вы не одиноки))
Вы все же прислушайтесь к моему совету и читайте Хелп
Ну-ну..
:lol:
Phaniaameve
Posts: 13
Joined: Sun Oct 28, 2012 2:50 am

Re: MUI

Post by Phaniaameve »

Честно говоря, у меня нет желания встревать в эти "разборки" типа что там конкретьно неправильно или правильно.
Дополню лишь только свои аргументы...
Snow_Irbis wrote: Чем мой пример опасный ?
В моем высказывании были лишь общие принципы "правильного", на мой взгляд (и не только на мой!) программирования.
И не имел ввиду конкретно ваш код, который на первый взгляд (думаю и не только на первый) ничего опасного в себе не несет.

Snow_Irbis wrote: Ну почему же , мой вариант реализации мультиязычности сможет освоить даже новичек :)
Новичок НЕ СМОЖЕТ!
В любом случае, реализация многоязычности предусмативает умение работать с переменными (а иначе просто никак), а необукера, умеющего работать с переменными, новичком назвать ну никак язык не повернется.
Собственно, пример реализации многоязычности хорош лишь с точки зрения "агитации" новичков (в пользу NeoBook), демонстрирующмй возможности программы.
Опытному необукеру не нужны никакие примеры, т.к. он сам прекрасно додумается КАК реализовать мультиязычность, поскольку абсолютно ничего мудреного в этом нет!

Snow_Irbis wrote:
Каждый из нас все равно останется при своем мнении , ну а пользователи которые захотят реализовать мультиязычноть сами решат какой из примеров им использовать :)
Извините, но похоже, вы и впрямь не понимаете как разницы в работе между FileRead и LoadVariables, так и разницы в реализации.
Snow_Irbis wrote: Ок , теперь я 10 раз подумаю прежде чем постить какой то пример , а то введу еще кого то в заблуждение
Вот это верно!
Постить свои примеры никто никому не запрещает, а скорее наоборот - подобное можно только поощярять.
Но, в то же время, вводить людей в забуждение не есть гуд.
Я говорю не про ваш пример, а вообще.
Уж далеко не секрет для программеров, что 90% гуляющего по сети (на разных программерских ресурсах) кода - т.н. "говнокод", часто содержащий большое количество ошибок, и отражающий лишь собственное представление автора кода, но новички, мало понимающие суть, начинают это принимать на веру (как истину), копировать и считать, что именно так и нужно.
Вот пример.

Я никоим образом не желаю представить себя "знатоком" программирования (по сути я ещё ой какой зеленый), но кое-какой опыт имеется, и мозги ещё не окончательно усохли, т.к. не режусь в дебилки-стрелялки, и не сижу в соцсетях.
:)
User avatar
Garic
Posts: 107
Joined: Wed Sep 26, 2012 8:42 am

Re: MUI

Post by Garic »

Способов смены языка можно придумать несколько.
Но на мой взгляд (на вкус и цвет) проще все манипуляции сделать внутри программы напрямую через переменные, чем заморачиваться с внешними файлами
Вот ещё один способ - простой и понятный:

при смене на русский:

Code: Select all

SetVar "[Lang]" "Файл,Правка,Управление,Настройки,Помощь,Язык,Русский,Английский,Кнопка_1,Кнопка_2,Какой-то текст"
StrParse "[Lang]" "," "[c]" ""
ClearVariables "[Lang]"
при смене на английский:

Code: Select all

SetVar "[Lang]" "File,Edit,Control,Settings,Help,Language,Russian,English,Button_1,Button_2,Some Text"
StrParse "[Lang]" "," "[c]" ""
ClearVariables "[Lang]"
Ну и соответственно в качестве названий элементов управления используем переменные [c1] [ c2] [c3] и т.д.

..........................................................
Блок
StrParse "[Lang]" "," "[c]" ""
ClearVariables "[Lang]"
разумеется можно запихнуть в подпрограмму
..........................................................
ks
.............
Image
User avatar
Peter
Posts: 30
Joined: Thu Sep 27, 2012 4:41 pm
Location: St.Petersburg, Russia
Contact:

Re: MUI

Post by Peter »

Честно говоря, у меня нет желания встревать в эти "разборки" типа что там конкретьно неправильно или правильно.
Дополню лишь только свои аргументы...
Snow_Irbis wrote: Чем мой пример опасный ?
В моем высказывании были лишь общие принципы "правильного", на мой взгляд (и не только на мой!) программирования.
И не имел ввиду конкретно ваш код, который на первый взгляд (думаю и не только на первый) ничего опасного в себе не несет.

Snow_Irbis wrote: Ну почему же , мой вариант реализации мультиязычности сможет освоить даже новичек :)
Новичок НЕ СМОЖЕТ!
В любом случае, реализация многоязычности предусмативает умение работать с переменными (а иначе просто никак), а необукера, умеющего работать с переменными, новичком назвать ну никак язык не повернется.
Собственно, пример реализации многоязычности хорош лишь с точки зрения "агитации" новичков (в пользу NeoBook), демонстрирующмй возможности программы.
Опытному необукеру не нужны никакие примеры, т.к. он сам прекрасно додумается КАК реализовать мультиязычность, поскольку абсолютно ничего мудреного в этом нет!

Snow_Irbis wrote:
Каждый из нас все равно останется при своем мнении , ну а пользователи которые захотят реализовать мультиязычноть сами решат какой из примеров им использовать :)
Извините, но похоже, вы и впрямь не понимаете как разницу в работе между FileRead и LoadVariables, так и разницу в реализации.
Snow_Irbis wrote: Ок , теперь я 10 раз подумаю прежде чем постить какой то пример , а то введу еще кого то в заблуждение
Вот это верно!
Постить свои примеры вам никто не запрещает, а скорее наоборот - подобное можно только поощярять.
Но, в то же время, вводить людей в заблуждение не есть гуд.
Я говорю не про ваш пример, а вообще.
Уж далеко не секрет для программеров, что 90% гуляющего по сети (на разных программерских ресурсах) кода - т.н. "говнокод", часто содержащий большое количество ошибок, и отражающий лишь собственное представление автора кода, но новички, мало понимающие суть, начинают это принимать на веру (как учебник), копировать и считать, что именно так и нужно.
Вот пример.

Я никоим образом не желаю представить себя "знатоком" программирования (по сути я ещё ой какой зеленый).
:)
User avatar
Peter
Posts: 30
Joined: Thu Sep 27, 2012 4:41 pm
Location: St.Petersburg, Russia
Contact:

Re: MUI

Post by Peter »

Garic wrote:Способов смены языка можно придумать несколько.
Но на мой взгляд (на вкус и цвет) проще все манипуляции сделать внутри программы напрямую через переменные, чем заморачиваться с внешними файлами
С внешними файлами (неважно истинно внешние они или будут вложены при компиляции) все намного проще, т.к. файлы можно редактировать независимо от кода программы, при "правильных" именах переменных в них очень просто ориенитроваться, требуется всего одна команда для загрузки (смены языка).
User avatar
Garic
Posts: 107
Joined: Wed Sep 26, 2012 8:42 am

Re: MUI

Post by Garic »

Peter wrote: файлы можно редактировать независимо от кода программы
Тоже верно - некое преимущество
Если автор конечно не зашифрует файл, то пользователь, юзающий сию прогу, без проблем подредактирует под себя нужные ему строки.
ks
.............
Image
User avatar
Peter
Posts: 30
Joined: Thu Sep 27, 2012 4:41 pm
Location: St.Petersburg, Russia
Contact:

Re: MUI

Post by Peter »

Garic wrote:
Peter wrote: файлы можно редактировать независимо от кода программы
Тоже верно - некое преимущество
Если автор конечно не зашифрует файл, то пользователь, юзающий сию прогу, без проблем подредактирует под себя нужные ему строки.
Ну, если автор решил поиграть в шпионов...
:)

А пользователь действительно сможет сам отредактровать файл, и, таким образом, открывается ещё один "плюс" подхода: возможность расширения и дополнения к программе языков интерфейса самими пользователями.
Так устроены многие программы, и в них даже есть специальные редакторы.
Например, WhereIsIt.
User avatar
Garic
Posts: 107
Joined: Wed Sep 26, 2012 8:42 am

Re: MUI

Post by Garic »

Я например при создании инсталяторов в Inno Setup подшаманиваю нужный файлик под свои интерфейсные "репризы" ну и картиночку свою можно влепить
ks
.............
Image
aguilar955
Posts: 85
Joined: Sat Jan 17, 2009 10:50 am

Re: MUI

Post by aguilar955 »

Con un archivo por cada idioma que se quiera poner la aplicacion y guardar una variable con la leyenda del idioma seleccionado seria suficiente.

Solo hay que utilizar despues la opcion LoadVariables para cargar el idioma seleccionado.

Code: Select all

NBW Publication Source File
(C)1993-2011 NeoSoft Corp.
Title=Untitled NeoBook Publication
Language=US
NeoBookVer=5,70
ScreenColors=16777216
ScreenWidth=320
ScreenHeight=200
BkndColor=0
ScreenAutoSize=Yes
LinkColor=16711680
WindowStyle=0
WindowOrder=0
WindowPos=0
WindowProps=31
BiDiMode=0
UseUpdateTimer=Yes
ReturnTime=60
ShapeTransColor=536870912
CompiledName=C:\ProyectosNeobook\Multilingue\MUI.exe
CompileType=0
MediaType=0
FilesIncluded=1
FontsIncluded=2
FontsToCompile=|
CopyExternalFiles=No
SetupMedia=3
SetupInstDir=C:\MyProgram
SetupTitle=Setup
SetupColors=16711680|0|65535
Variables=[mui]¶
VersionMajor=1
VersionMinor=0
VersionRelease=0
VersionBuild=0
ReqExLevel=1
CustomFontName=Arial
CustomFontSize=9
CustomFontStyle=0
CustomCharset=1
CacheSize=30
ExtractOp=132
L_OK=OK
L_CANCEL=Cancel
L_YES=Yes
L_NO=No
L_CLOSE=Close
L_ERRORTITLE=Error
L_FINDTITLE=Find
L_FINDPROMPT=Find &What
L_FINDFIRST=&Find First
L_FINDNEXT=Find &Next
L_FINDERROR=Search text not found.
L_PWORDTITLE=Password required
L_PWORDMSG=Before continuing, you must first|enter the correct password.
L_PWORDPROMPT=&Password:
L_PWORDERROR=That's not the right password!
L_MEDIAERROR=In order to play this type of file you must install|the appropriate multimedia hardware and/or|software.
L_INTERNETERROR=Unable to locate Internet Browser software.
L_ABORTFUNCTION=Do you want to cancel this function?
L_EXTRACTERROR=This file could not be extracted and cannot be played.
L_INSTDIRPROMPT=Please enter the drive and directory where you would like this program to be installed. To accept the default drive and directory, simply press Enter.
L_INSTFOLDERPROMPT=Do you wish to create a program folder?
L_INSTRUNPROMPT=Do you want to run
L_INSTDISKPROMPT=Please insert disk #
L_INSTDISKERROR=That's not the correct disk, try again.
L_INSTGENERROR=The installation has terminated.
L_INSTEXITPROMPT=Do you really want to cancel the installation?
L_INSTWINTITLE=Setup
L_INSTPROGTITLE=Extracting Files...
L_SENDEMAIL=Sending Mail...
L_MAILSERVER=Please enter the name of your outgoing email server:
L_COPY=Copy to Clipboard
L_SELECTALL=Select All
L_DONWLOADFILE=Downloading: %s
L_PLEASEWAIT=Please wait...
TrayMenuBegin
MenuName=TrayOpen
MenuText=Open
MenuState=3
MenuKey=0
MenuAction=SetVar "[WindowState]" "Normal"
MenuName=TrayExit
MenuText=Exit
MenuState=3
MenuKey=0
MenuAction=Exit "" ""
MenuEnd
MasterPage
NewPage=New Page
PageStyle=0
PageColor=16777215
PageGradient1=16711680
PageGradient2=255
PageGradientDir=1
WallpaperStyle=0
ObjectType=8
Name=Text1
X=40
Y=50
W=256
H=24
Anchor=0
Font=Arial
FontSize=10
FontStyle=0
FontCharset=1
TextColor=0
Text={\rtf1\ansi\deff0\deftab254{\fonttbl{\f0\fnil\fcharset1 Arial;}}{\pard{\ql\li0\fi0\ri0\sb0\sl\sa0 \plain\f0\fs20\cf0 Selecciona el idioma \plain\f0\fs20\cf0\uldb Espa\'f1ol\plain\f0\fs20\cf0\v SetVar "[mui]" "Spanish.ini"\'b6FileWrite "[PubDir]Spanish.ini" "All" "1AZ=Hola mundo."\'b6LoadVariables "[PubDir][mui]"\'b6AlertBox "Mui" "[1AZ]"}}}
HMargin=5
VMargin=3
LineColor=0
LineWidth=0
LineStyle=0
FillColor=12632256
FillPattern=1
TabOrder=2
ObjectType=8
Name=Text2
X=40
Y=80
W=224
H=24
Anchor=0
Font=Arial
FontSize=10
FontStyle=0
FontCharset=1
TextColor=0
Text={\rtf1\ansi\deff0\deftab254{\fonttbl{\f0\fnil\fcharset1 Arial;}}{\pard{\ql\li0\fi0\ri0\sb0\sl\sa0 \plain\f0\fs20\cf0 Select \plain\f0\fs20\cf0\uldb English\plain\f0\fs20\cf0\v SetVar "[mui]" "English.ini"\'b6FileWrite "[PubDir]English.ini" "All" "1AZ=Hello world."\'b6LoadVariables "[PubDir][mui]"\'b6AlertBox "Mui" "[1AZ]"\plain\f0\fs20\cf0  language}}}
HMargin=5
VMargin=3
LineColor=0
LineWidth=0
LineStyle=0
FillColor=12632256
FillPattern=1
TabOrder=3
Seleccion idioma español

Code: Select all

SetVar "[mui]" "Spanish.ini"
FileWrite "[PubDir]Spanish.ini" "All" "1AZ=Hola mundo."
LoadVariables "[PubDir][mui]"
AlertBox "Mui" "[1AZ]"
Seleccion idioma Ingles

Code: Select all

SetVar "[mui]" "English.ini"
FileWrite "[PubDir]English.ini" "All" "1AZ=Hello world."
LoadVariables "[PubDir][mui]"
AlertBox "Mui" "[1AZ]"
Image

Saludos
Locked