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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> mui проиложение 
:(
    Опции темы
SEugene
Дата 19.11.2006, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 26.9.2006

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



Нужно обеспечить возможность смены языка интерфейса. Есть ли в Windows Forms для этого специальные средства, типа таблиц строк в MFC.
PM MAIL   Вверх
mr.DUDA
Дата 19.11.2006, 23:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Есть ресурсы и локализация. Языковые настройки в дотнет называются "культурой", класс CultureInfo содержит описание конкретной культуры. Всего культур порядка сотни. С любой культурой может быть связано любое количество ресурсов - строк, битмапов, внешнего вида форм, контролов и т.п. Для того, чтобы связать ресурс с культурой, нужно добавить в проект ресурс под именем, оканчивающимся на краткое имя культуры - например, MyStrings.ru.resx. Такой ресурс, связанный с культурой, называется локализованным; несколько ресурсов с одним именем для разных культур логически являются одним ресурсом, локализованным для разных культур. Загрузка ресурсов по имени (идентификатору) производится с пом. класса ResourceManager, либо через авто-сгенерированный класс ресурса, обращаясь по имени ресурса:

Код
using System;
using System.Globalization;
using System.Threading;

class Program
{
    static void Main()
    {
        Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("ru");
        string str = ConsoleApplication2.Resource1.String1;
    }
}



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


wasm
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 16.1.2006

Репутация: 3
Всего: 16



В ресурсы основной сборки проекта (напр., Namespase.Properties.Resources.resx) запихай все локализованные ресурсы для, скажем, русского языка и поставь ей атрибут NeutralResourcesLanguage("ru-RU"). Это позволит увеличить скорость загрузки ресурсов, если региональный стандарт пользователя соответствует стандарту ресурсов, хранимых в основной сборке.

Для других языков добавь в проект ClassLibrary с именем сборки и рабочим пространством, как у приложения, в которую положи в качестве ресурсов все необходимое. Притом, имена должны быть типа Namespase.Properties.Resources.en-us.resx - тогда будут созданы dll-ки в соответствующих папках en-us и т.д. Таким образом можно создавать новые локализованные версии без перекомпиляции программы.
Теперь при запуске приложения в main'не можно установить культуру UI
Код

SetCurrCultInfo("it-IT");
//Можно установить культуру, отличающуюся от заданной в настройках системы

А всем надписям, к примеру, присваивай так
Код

GetResource gr = new GetResource();
textBox1.Text = gr.GetString("my_str_tb")

my_str_tb - это имя ресурса (см. рис)

Код

public class GetResource
    {
        ResourceManager resources = new ResourceManager("Namespase.Properties.Resources", Assembly.GetExecutingAssembly());

        public static void SetCurrCultInfo(string value)
        {
            try
            {
                Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(value);
            }
            catch { Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo("en-us"); }
        }

        public string GetString(string value)
        {
            return resources.GetString(value);
        }
    }


Все это долго объяснять.

Добавлено @ 23:24 
mr.DUDA, таки опередил опять

Присоединённый файл ( Кол-во скачиваний: 15 )
Присоединённый файл  view.gif 67,77 Kb


--------------------
Разочарованный в .NET
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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