Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Локализация ресурсов 
:(
    Опции темы
HalkaR
Дата 28.4.2008, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: нет
Всего: 42



Такой вопрос. Можно ли как-то реализовать следующее: есть приложение. К нему имеется набор локализации. Причем локализация изменяется путем замены файла в папке приложения. Очень хотелось бы чтоб этот файл был текстовым, а не бинарным. Есть ли стандартные средства? Спасибо!
PM MAIL   Вверх
mr.DUDA
Дата 28.4.2008, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Стандартные средства - есть. Если нужно локализовать форму, просто ставь Localizable=true и меняй Culture на другой язык - автоматически создадутся ресурсные файлы (.resx) и всё что поменяется на форме, будет сохранено в resx-файл для текущей культуры. Если нужно локализовать строки - добавляем в проект Add new item / Resource File, забиваем туда строки (можно напрямую редактировать resx или в виде таблицы, в студии), добавляем ещё один Resource File с тем же именем и суффиксом перед .resx (например Resource1.ru.resx) переводим строки на другой язык.

Программно получить строку для текущей культуры можно через статические свойства одноимённого класса (имя ресурсного файла = имя класса, а имя строки в ресурсе = имени свойства класса, например Resource1.myString). 

Наконец, изменить во время выполнения приложения текущую культуру можно через свойство Thread.CurrentThread.CurrentUICulture или установив свойство Culture класса ресурса:
Код
            Resource1.Culture = CultureInfo.GetCultureInfo("ru");

//или

            Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("ru");


.resx это обычный XML-файл вида:
Код
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
... тут объявление схемы и прочая фигня ...
-->
  <data name="String1" xml:space="preserve">
    <value>asdasd</value>
  </data>
</root>




--------------------
user posted image
PM MAIL WWW   Вверх
HalkaR
Дата 28.4.2008, 15:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: нет
Всего: 42



mr.DUDA, это не совсем удобно для меня. Мне желательно иметь один общий файл со всеми локализованными строками и язык определяется не через код, а через файл лежащий в папке. Мне не надо распространять много языков вместе с приложением. Нужен только один. Причем язык должен определяться без перекомпиляции приложения.

Добавлено через 54 секунды
Про этот способ я естественно знаю, но он мне не очень удобен. + приложение на WPF.
PM MAIL   Вверх
mr.DUDA
Дата 28.4.2008, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



При стандартной локализации, рядом с приложением будет лежать длл с тем же именем что у локализованного exe/dll и суффиксом .ru и т.п., хоть это и бинарный файл, конечно. Я так понимаю, такой вариант не катит.


--------------------
user posted image
PM MAIL WWW   Вверх
HalkaR
Дата 28.4.2008, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: нет
Всего: 42



Боюсь что нет. Можно конечно банально класть рядом с exe xml который будет читаться кастомным парсером.
PM MAIL   Вверх
HalkaR
Дата 28.4.2008, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пуфыстый назгул
****


Профиль
Группа: Экс. модератор
Сообщений: 2132
Регистрация: 8.12.2002
Где: В Москве

Репутация: нет
Всего: 42



Вопщем написал руками загрузку из resx файлов с помощью ResXResourceReader.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0698 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.