Локализация приложения Windows Forms
От: Аноним  
Дата: 27.11.08 21:45
Оценка:
Хочется держать все локализуемые ресурсы (только строки в моем случае) в одном файле.
Как лучше организовать хранение локализуемых ресурсов для форм?

Я пытаюсь сделать так:

1) Очищаю поле текста контролов на форме.
Делаю метод у формы типа

InitializeControlsCaptions()
{
button1.Text = LocalizationManager.SomeForm_Button1Text;
}

но это слишком утомительно и лишено наглядности в визуальном дизайнере.

2) В SomeForm.Designer.cs пишу примерно так

button1.Text = LocalizationManager.SomeForm_Button1Text;

но при изменении формы в визуальном редакторе это изменение пропадает.

Как сделать правильно и просто?
Re: Локализация приложения Windows Forms
От: Nuseraro Россия  
Дата: 28.11.08 14:27
Оценка: 1 (1) +1
Здравствуйте, Аноним, Вы писали:

А>Хочется держать все локализуемые ресурсы (только строки в моем случае) в одном файле.

Зачем?

А>2) В SomeForm.Designer.cs пишу примерно так

Не надо никогда ничего изменять в SomeForm.Designer.cs.

А>Как сделать правильно и просто?

Если Вас всё же устроит хранение локализованных ресурсов в разных файлах — а, по-моему это хорошая практика, то стандартно:
Выставить свойство Localizable = true, и для разных значений свойства Langugage, менять локальные настройки.
Homo Guglens
Re[2]: Локализация приложения Windows Forms
От: vioso  
Дата: 29.11.08 09:43
Оценка:
Здравствуйте, Nuseraro, Вы писали:

N>Здравствуйте, Аноним, Вы писали:


А>>Хочется держать все локализуемые ресурсы (только строки в моем случае) в одном файле.

N>Зачем?

А>>2) В SomeForm.Designer.cs пишу примерно так

N>Не надо никогда ничего изменять в SomeForm.Designer.cs.

А>>Как сделать правильно и просто?

N>Если Вас всё же устроит хранение локализованных ресурсов в разных файлах — а, по-моему это хорошая практика, то стандартно:
N>Выставить свойство Localizable = true, и для разных значений свойства Langugage, менять локальные настройки.

Полностью поддерживаю. Хранение перевода в разных файлах (перевод по месту) позволяет не только переводить слова,
но и изменять размеры самих элементов управления (ибо на разных языках длина слова разная)
Re[3]: Локализация приложения Windows Forms
От: jenyavb  
Дата: 30.11.08 11:37
Оценка:
Здравствуйте, vioso, Вы писали:

V>Полностью поддерживаю. Хранение перевода в разных файлах (перевод по месту) позволяет не только переводить слова,

V>но и изменять размеры самих элементов управления (ибо на разных языках длина слова разная)
Плюс ещё глобальный файл ресурсов со временем превращается в помойку, в которой сложно определить, что к чему относится, а что вообще уже не нужно .
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[2]: Локализация приложения Windows Forms
От: Аноним  
Дата: 30.11.08 19:18
Оценка:
Здравствуйте, Nuseraro, Вы писали:

N>Здравствуйте, Аноним, Вы писали:


А>>Хочется держать все локализуемые ресурсы (только строки в моем случае) в одном файле.

N>Зачем?

А>>2) В SomeForm.Designer.cs пишу примерно так

N>Не надо никогда ничего изменять в SomeForm.Designer.cs.

А>>Как сделать правильно и просто?

N>Если Вас всё же устроит хранение локализованных ресурсов в разных файлах — а, по-моему это хорошая практика, то стандартно:
N>Выставить свойство Localizable = true, и для разных значений свойства Langugage, менять локальные настройки.


Это все, конечно, хорошо, но как тогда быть со строковыми ресурсами не относящимися к форме?
Сейчас у меня сделано так: для конкретного языка (напр. ru-RU, en-GB, en-US) делается отдельный ресурсный файл
со строками — например Resources.ru-RU.resx, в Post-Build генерируется соответстующая ресурсная сборка {PrimaryAssemblyName}.resources.dll

Но в случае, если в основном проекте есть локализованная форма, эту же сборку генерирует студия, и она потом перезаписывается в Post-Build-е.

Как решить эту проблему?
Re[3]: Локализация приложения Windows Forms
От: jenyavb  
Дата: 01.12.08 11:20
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Это все, конечно, хорошо, но как тогда быть со строковыми ресурсами не относящимися к форме?

А>Сейчас у меня сделано так: для конкретного языка (напр. ru-RU, en-GB, en-US) делается отдельный ресурсный файл
А>со строками — например Resources.ru-RU.resx, в Post-Build генерируется соответстующая ресурсная сборка {PrimaryAssemblyName}.resources.dll
А зачем ты сам генерируешь сборку в PostBuild? Студия сама умеет это делать, тогда ничего конфликтовать не будет.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Re[3]: Локализация приложения Windows Forms
От: Аноним  
Дата: 01.12.08 13:04
Оценка:
А>Как решить эту проблему?
Доброго !
Включить в проэкт файлы ресурсов MyMessages.resx MyMessages.ru.resx и т.д.
Прописать строки сообщений и т.д
Использвать :
MessageBox.Show(MyMessages.String1...)
С уважением..
Re[4]: Локализация приложения Windows Forms
От: Аноним  
Дата: 02.12.08 08:07
Оценка:
Здравствуйте, Аноним, Вы писали:


А>>Как решить эту проблему?

А>Доброго !
А>Включить в проэкт файлы ресурсов MyMessages.resx MyMessages.ru.resx и т.д.
А>Прописать строки сообщений и т.д
А>Использвать :
А>MessageBox.Show(MyMessages.String1...)
А>С уважением..

Похоже я сам напутал... Неделю назад мне попалась в руки статья (впрочем довольно старая) про локализацию в дотнете. Там был описан как раз тот грабельный способ — сделать батник, собирать пост-билд, у добавленных .ru.resx ресурсов выставить в Build Action — None.

А тут вон оно как все просто
Re[5]: Локализация приложения Windows Forms
От: V.Petrovski Беларусь  
Дата: 02.12.08 08:59
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>А тут вон оно как все просто

Можно еще упрастить себе жизнь если вопслользоваться RGreatEx.


SafeDevelop
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.