View previous topic :: View next topic |
Author |
Message |
KopBuH
Joined: 02 Jul 2010 Posts: 127 Location: Tashkent, Uzbekistan
|
(Separately) Posted: Wed Dec 12, 2012 16:28 Post subject: |
|
|
Flasher wrote: | MVV
А там всего 2 языка до Else..
|
а у меня в сборке только 2 языка и есть
Rus/Eng мне хватает.
хотите добавлять языки, добавляйте вручную:
(тут указаны стандартные названия файлов меню)
Code: | IniRead "Commander_LangIni" "%COMMANDER_PATH%\wincmd.ini" "Configuration" "LanguageIni" ""
If %COMMANDER_LANGINI% = wcmd_rus.lng Then
SetEnv /EV COMMANDER_LANG "Rus"
ElseIf %COMMANDER_LANGINI% = wcmd_eng.lng Then
SetEnv /EV COMMANDER_LANG "Eng"
ElseIf %COMMANDER_LANGINI% = wcmd_fra.lng Then
SetEnv /EV COMMANDER_LANG "Fra"
ElseIf %COMMANDER_LANGINI% = wcmd_deu.lng Then
SetEnv /EV COMMANDER_LANG "Deu"
Else
SetEnv /EV COMMANDER_LANG "Default"
EndIf |
|
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 15, 2012 15:36 Post subject: |
|
|
KopBuH wrote: | хотите добавлять языки, добавляйте вручную | Вот об этом технически неправильном подходе я и пишу.
А должно быть по идее так:
Code: | IniRead COMMANDER_LANGINI %COMMANDER_INI% Configuration LanguageIni False
If %COMMANDER_LANGINI% = wcmd_eng.lng OR %COMMANDER_LANGINI% = False Then
SetEnv /EV COMMANDER_LANG Eng
ElseIf %COMMANDER_LANGINI% = wcmd_rus.lng Then
SetEnv /EV COMMANDER_LANG Rus
EndIf |
Avada wrote: | Loopback wrote: | А для чего, если не секрет? |
| Я вижу смысл только в случае использования переменной в скриптах, где сообщения будут выводиться на соответствующем текущему языке. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1290
|
(Separately) Posted: Sat Dec 15, 2012 20:48 Post subject: |
|
|
Flasher wrote: | А должно быть по идее так: |
IniRead получает дефолтное значение только в случае отсутствия ключа файле. Если ключ есть, но пустой или с другим содержимым, неучтенным в условии, то переменная COMMANDER_LANG может остаться неопределенной. Поэтому последняя часть в условии KopBuH - правильная, только вместо Default можно поставить тот же Eng. Либо, надо перед условием установить начальное значение COMMANDER_LANG в нужное значение.
Flasher wrote: | Я вижу смысл только в случае использования переменной в скриптах, где сообщения будут выводиться на соответствующем текущему языке. |
Народ, вы посмотрите вопрос-то. При чем тут язык? Я спрашивал про SID, который в том виде, как я показал, мне представляется малоприменимым. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 15, 2012 20:57 Post subject: |
|
|
Loopback wrote: | IniRead получает дефолтное значение только в случае отсутствия ключа файле. | Я знаю, приведённый пример к этому и относится. Только что-то не работает твой плагин в этом отношении.
Loopback wrote: | Поэтому последняя часть в условии KopBuH - правильная | Неправильная. Почему - на предыдущей странице объяснял. Loopback wrote: | При чем тут язык? | Avada привёл цитату после появления обсуждаемой задачи. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1290
|
(Separately) Posted: Sat Dec 15, 2012 21:20 Post subject: |
|
|
Flasher wrote: | Только что-то не работает твой плагин в этом отношении. |
Если не работает - так и скажи, что баг. Это я еще проверю.
Но в остальном, достаточно вместо Default использовать Eng - и условие станет вполне правильным.
Flasher wrote: | Avada привёл цитату после появления обсуждаемой задачи. |
Ок. Насчет SID'a, как я понимаю, ответа вряд ли дождусь |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 15, 2012 21:36 Post subject: |
|
|
Loopback wrote: | и условие станет вполне правильным. | Объясняю. Допустим, кто-то захотел активировать отсутствующий в условиях язык. В этом случае переменная окружения будет иметь неправильное значение Eng. С моим примером переменная будет вообще отсутствовать, что явно лучше, чем иметь неправильное значение.
Loopback wrote: | Насчет SID'a, как я понимаю, ответа вряд ли дождусь | А я тут при чём? В мои задачи это не входило. Сам бы хотел знать, на кой оно.. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Loopback
Joined: 07 Sep 2009 Posts: 1290
|
(Separately) Posted: Sat Dec 15, 2012 23:10 Post subject: |
|
|
Flasher wrote: | С моим примером переменная будет вообще отсутствовать, что явно лучше, чем иметь неправильное значение. |
И чем же это будет лучше?
Как раз обычная практика - использование языка по-умолчанию, если языковый файл не найден.
Лично я вообще не приемлю ситуации, когда переменная может существовать или нет. Если есть переменная, в зависимости от значения которой должны выполняться какие-то дальнейшие действия - она должна быть определена и у нее должно быть значение.
Хотя, конечно, можно и поверять, есть ли она или нет - это просто вопрос подхода.
Flasher wrote: | А я тут при чём? |
Ни при чем, конечно, вопрос риторический. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Dec 15, 2012 23:20 Post subject: |
|
|
Loopback wrote: | Как раз обычная практика - использование языка по-умолчанию, если языковый файл не найден. | Я пишу про отсутствие переменной. FileExist тут даже не используется. К чему тут поиск файла?
Loopback wrote: | она должна быть определена и у нее должно быть значение | Даже если оно неправильное? И какой в этом практический смысл?
Loopback wrote: | Хотя, конечно, можно и поверять, есть ли она или нет - это просто вопрос подхода. | Увы, подходы дают разные результаты при описанных условиях.
Я бы, откровенно, вообще записывал в переменную значение ключа, а потом обрезал бы лишнее: wcmd_deu.lng. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Sun Dec 16, 2012 10:36 Post subject: |
|
|
Quote: | Даже если оно неправильное? И какой в этом практический смысл? |
Ну суть же понятна. Чем меньше значений может принимать переменная, тем лучше. Пустое или нет значение по умолчанию - это действительно вопрос подхода.
Quote: | Я бы, откровенно, вообще записывал в переменную значение ключа, а потом обрезал бы лишнее: wcmd_deu.lng. |
Непросто будет с ограниченным синтаксисом обработать все случаи вида WCMD_BLABLA_RUS.lng и т.п. Так что вариант с проверкой возможных (автор скрипта знает наверняка, какие у него там есть языки) имён куда проще. _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
KopBuH
Joined: 02 Jul 2010 Posts: 127 Location: Tashkent, Uzbekistan
|
(Separately) Posted: Sun Dec 16, 2012 11:17 Post subject: |
|
|
Flasher wrote: | KopBuH wrote: | хотите добавлять языки, добавляйте вручную | Вот об этом технически неправильном подходе я и пишу.
А должно быть по идее так:
Code: | IniRead COMMANDER_LANGINI %COMMANDER_INI% Configuration LanguageIni False
If %COMMANDER_LANGINI% = wcmd_eng.lng OR %COMMANDER_LANGINI% = False Then
SetEnv /EV COMMANDER_LANG Eng
ElseIf %COMMANDER_LANGINI% = wcmd_rus.lng Then
SetEnv /EV COMMANDER_LANG Rus
EndIf |
|
понимаешь...откуда мне знать, как называется файл меню у тебя?.
может быть он у тебя по другому называется?. поэтому - хочешь добавить - добавь нужные языки ручками. я просто привел пример, как я сделал это для себя, и всё.
P.S. почему именно по умолчанию именно default? потому что я привязываю тулбары к конкретному языку. а у ТС по умолчанию стоит тулбар default.bar в корне ТС. поэтому я делаю переменную со значением default и скрипт грузит тулбар по умолчаню, в случае если langini пустой. язык по умолчанию - и тулбар по умолчанию.
У меня английский язык выбирается вручную, и в соответсвии с этим грузятся меню, тулбары, сообщения и т.д. если значение LangIni пустое, я не хочу чтобы грузились эти расширенные английские тулбары. поэтому у меня в случае отсутсвия конкретного значения - переменная назначается default. это значит, что в ТС установлен язык "по умолчанию" и грузить какие-то отдельные тулбары и меню - не надо.
Loopback: SID нужен для того, чтобы привязать парочку нестандартных фукнций ТС к контретному пользователю. SID будет использоватся для шифрования конкретных файлов, содержащих пароли и еще кое-что. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Dec 16, 2012 13:31 Post subject: |
|
|
MVV wrote: | Пустое или нет значение по умолчанию - это действительно вопрос подхода. | Какого подхода? Как "я" пойму, что "у меня" стоит не английский, если переменная показывает Eng?
MVV wrote: | Непросто будет с ограниченным синтаксисом обработать все случаи вида WCMD_BLABLA_RUS.lng и т.п. | Почему с ограниченным синтаксисом? Я же пишу, как бы я делал (уже в скрипте, соответственно) после возврата переменной среды.
KopBuH wrote: | понимаешь...откуда мне знать, как называется файл меню у тебя? | Синтаксис имён глаголит справка:
Справка ТС wrote: | Этот диалог позволяет выбрать внутреннюю команду из файла totalcmd.inc, а также определить новые команды, которые будут храниться либо в файле usercmd.ini, либо в специфическом для данного языка файле wcmd_lng.ini (например, wcmd_rus.ini для русского языка). | Другого знать и не надо. Имеем отсечённое значение, сверяем по массиву переменных. А вот как соотносится ответ с не понять зачем процитированным кодом я вообще не понял.
KopBuH wrote: | поэтому - хочешь добавить - добавь нужные языки ручками | Опять - 25. Такое ощущение, что читал мои ответы сквозь пальцы (если вообще читал)..
Если всё сводить к частному случаю с наличием 2-ух языков, то в таком случае ElseIf - вообще лишняя конструкция, тут и Else достаточно.
Кстати, Loopback, а ты можешь добавить возможность работы с условиями без переноса строк и EndIf, как в VB? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Sun Dec 16, 2012 14:43 Post subject: |
|
|
Quote: | Какого подхода? Как "я" пойму, что "у меня" стоит не английский, если переменная показывает Eng? |
Если ты в своем скрипте используешь английский, когда в тотале стоит не русский, то какая тебе разница, именно английский ли язык в действительности или нет? В данном случае eng - как раз значение по умолчанию (т.е., если язык не русский, считаем его английским, остальное не имеет значения).
Quote: | Кстати, Loopback, а ты можешь добавить возможность работы с условиями без переноса строк и EndIf, как в VB? |
Так ли это необходимо? Кто-то пишет такие простыни в скрипте Autorun, что эта мелочь сильно прояснит что-то? _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Dec 16, 2012 15:05 Post subject: |
|
|
MVV wrote: | какая тебе разница, именно английский ли язык в действительности или нет? | Язык сообщения должен в идеале соответствовать текущему языку. Разница в знании/понимании отражаемого языка. Можно ставить указание на отсутствие языка перевода и менять это при необходимости.
А в случае предложенной обрезки можно сразу устанавливать язык меню, плагинов, программ, к примеру.
MVV wrote: | Кто-то пишет такие простыни в скрипте Autorun, что эта мелочь сильно прояснит что-то? | Я как раз не люблю простыни.. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Sun Dec 16, 2012 16:00 Post subject: |
|
|
По-моему, все операции, которые не требуют быть сделанными непосредственно в пространстве тотала, должны выноситься во внешние скрипты и т.п., а в конфиге плагина должен остаться минимум (типа установки переменных окружения, т.к. извне этого не сделать). _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Dec 16, 2012 16:15 Post subject: |
|
|
Так а тут больше кроме установки переменной ничего и не требуется. Главное баг исправить. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|