Localization - exe-шник растет!
От: Sinatr Германия  
Дата: 15.07.04 12:37
Оценка:
Привет!

Началось с того, что я написал тулзу, чтобы удобнее переводить формы — она делает текстовый уникодовый файл, который посылается переводчику, а затем автоматом его вставляет в ресурсы.. Вообщем выскочили такие грабли с проектом (который перевожу) — размер exe-файла увеличился с 1.1М до 3.6М! (это release), да и начали глючить некоторые места (к примеру тулбар главной формы стал половинной ширины!)..

Я еще пытаюсь разобраться что к чему, но такой вопрос мне не дает покоя — почему на локализацию одной небольшой формы exe-шнику нужно 100К и больше*?! Ну чуть-чуть идет в ресурсы.. ну еще чуть-чуть в код (надо ж десериализовать всякие строки из ресурсов?).. но не настолько же!
---
ПроГLамеры объединяйтесь..
Re: Localization - exe-шник растет!
От: V.Petrovski Беларусь  
Дата: 15.07.04 13:25
Оценка:
Здравствуйте, Sinatr, Вы писали:

S>Привет!

привет, это ты про .NET?

S>Началось с того, что я написал тулзу, чтобы удобнее переводить формы — она делает текстовый уникодовый файл, который посылается переводчику,

Ну это понятно.
S>а затем автоматом его вставляет в ресурсы.
А что вот эта фраза означает, в какие ресурсы и как он его вставляет.
... << Rsdn@Home 1.1.4 beta 1 >>
Re[2]: Localization - exe-шник растет!
От: Sinatr Германия  
Дата: 15.07.04 16:21
Оценка:
Привет!

VP>привет, это ты про .NET?


Точно!

S>>а затем автоматом его вставляет в ресурсы.

VP>А что вот эта фраза означает, в какие ресурсы и как он его вставляет.

Неважно.. просто после того как я заметил появление глюков — я начал копать (т.к. решил, что виноваты мои ручки)..

Кстати, читал твой с АВК топик про локализацию, там есть одна идея, до которой я (дибил) не додумался, вернее для Net не использовал — генерировать тулзой некий класс констант, чтобы в проге было поменьше строк типа:
// было
Lng.GetString("Form1.MessageBox.Caption");
// стало
Lng.GetString(LngStrings.Form1.MessageBox.Caption);


Вообщем ща полезу в Анус.. тьфу.. в Янус ковыряться..

Вопрос про размер exe остается открытым..

Еще наблюдение — стоит поставить для формы Localization = true и после сохранения формы в дизайнере все текстовые и еще какие-то константы для Language = Default дружно переползают из InitializeComponent() в ресурсы.. А если сделать наоборт — почему-то не переползают.. Это нормально?

При создании какой-нибудь локали (ru) в нее помещаются только измениния и даже если попробовать тулзой запихнуть туда что-то из дефоултовой локали (ресурсов) — они (изменения) таинственно исчезает после октрытия/закрытия формы в дизайнере, из-чего можно сделать вывод, что дизайнер читает/сохраняет только те ресурсы (entries), которые запрашивается в InitializeComponent, верно?

Еще такое — после создания какой-нибудь локализации, той же "ru" — другие делаются методом копирования/перевода ресурсов (ru — заменяешь на uk или еще на что-нибудь)..
---
ПроГLамеры объединяйтесь..
Re[3]: Localization - exe-шник растет!
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 16.07.04 06:56
Оценка:
Здравствуйте, Sinatr, Вы писали:

S>Вопрос про размер exe остается открытым..


Не заню, я с такой проблемой не сталкивался ни разу. Скорее всего ты что то где то напортачил.

S>Еще наблюдение — стоит поставить для формы Localization = true и после сохранения формы в дизайнере все текстовые и еще какие-то константы для Language = Default дружно переползают из InitializeComponent() в ресурсы.. А если сделать наоборт — почему-то не переползают.. Это нормально?


Как то не приходилось подобное делать.

S>При создании какой-нибудь локали (ru) в нее помещаются только измениния и даже если попробовать тулзой запихнуть туда что-то из дефоултовой локали (ресурсов) — они (изменения) таинственно исчезает после октрытия/закрытия формы в дизайнере, из-чего можно сделать вывод, что дизайнер читает/сохраняет только те ресурсы (entries), которые запрашивается в InitializeComponent, верно?


Дизайнер после каждого изменения формы полностью пересоздает resx файлы.
... << RSDN@Home 1.1.4 beta 2 >>
AVK Blog
Re[4]: Localization - exe-шник растет!
От: Руслан Разбежкин Россия  
Дата: 16.12.04 06:24
Оценка:
У меня вот какой вопрос.
В локализованной форме сообщения выдаваемые MessageBox (и в др. случаях) должны дыть тоже локализованы. Я эти сообщения добавил в resx файл формы, а значения извлекал с помощью ResourceManager.GetString(). Все нормально, но после каждого изменения формы, все мои сообщения из файла пропадают (Из-за того, что дизайнер регенирирует файл ресурсов). Как же в таком случае поступать?
Re[5]: Localization - exe-шник растет!
От: V.Petrovski Беларусь  
Дата: 16.12.04 07:30
Оценка:
Здравствуйте, Руслан Разбежкин, Вы писали:

РР>У меня вот какой вопрос.

РР>Как же в таком случае поступать?
Эти сообщения добавляй в другой resx файл. Делаешь Add-New Item-Resx File и туда вставляешь все строки.
Вот глянь Локализация приложения .NET
Автор: V.Petrovski
Дата: 15.07.03
... << RSDN@Home 1.1.4 @@subversion >>
Re[6]: Localization - exe-шник растет!
От: Руслан Разбежкин Россия  
Дата: 16.12.04 08:59
Оценка:
ОК.
А как тогда писать локализованные сообщения?
Если используешь стандартные resx файлы. то извлекать строки можно таким кодом:

rx=new System.Resources.ResourceManager(typeof(MainForm));
rx.GetString("SaveConfigMessage");

не заботясь о том какой язык сейчас используется, сообщения выбираются из того файла, который является текущим по отношению к языку.
Re[7]: Localization - exe-шник растет!
От: V.Petrovski Беларусь  
Дата: 16.12.04 09:07
Оценка:
Здравствуйте, Руслан Разбежкин, Вы писали:

РР>ОК.

РР>А как тогда писать локализованные сообщения?
Опять делаешь Add — New Item — Resx File и указываешь имя культуры.

Для русского файл должен быть MyResources.ru.resx, смотри MSDN.
РР>Если используешь стандартные resx файлы. то извлекать строки можно таким кодом:

РР>rx=new System.Resources.ResourceManager(typeof(MainForm));

РР>rx.GetString("SaveConfigMessage");
По мною преведенной ссылке ты найдешь как создать ResourceManager.
РР>не заботясь о том какой язык сейчас используется, сообщения выбираются из того файла, который является текущим по отношению к языку.
Об этом заботиться ResourceManager
... << RSDN@Home 1.1.4 @@subversion >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.