Многоязыковая поддержка в C#

Я разработал демонстрационное программное обеспечение в c# окнах Appliation. Как сделать это многоязычным поддерживающим программным обеспечением.

Например: Один из дисплея окон сообщения "Добро пожаловать в пример приложения"

я установил программное обеспечение в китайцы OS, но это отображает сообщение на английском языке только.

я использую "таблицу строк" (Файл ресурсов) для этой проблемы.

В таблице строк я должен создать запись для каждого, обменивается сообщениями в англичанах и Китайцах.

это - своевременный процесс. там какой-либо другой путь состоит в том, чтобы сделать это?

6
задан Jon Seigel 31 May 2010 в 05:13
поделиться

4 ответа

Создайте файлы ресурсов для каждого языка, для которого вы хотите поддерживать упомянутые ниже.

альтернативный текст http://geekswithblogs.net/images/geekswithblogs_net/dotNETPlayground/resx.gif

На основе языка / текущей культуры пользователя считывать значения из соответствующего файла языковых ресурсов и отображать их в ярлыке или MessageBox. Вот пример кода:

public static class Translate

{

    public static string GetLanguage()

    {

        return HttpContext.Current.Request.UserLanguages[0];

    }



    public static string Message(string key)

    {

        ResourceManager resMan = null;

        if (HttpContext.Current.Cache["resMan" + Global.GetLanguage()] == null)

        {

            resMan = Language.GetResourceManager(Global.GetLanguage());

            if (resMan != null) HttpContext.Current.Cache["resMan" + Global.GetLanguage()] = resMan;

        }

        else

            resMan = (ResourceManager)HttpContext.Current.Cache["resMan" + Global.GetLanguage()];



        if (resMan == null) return key;



        string originalKey = key;

        key = Regex.Replace(key, "[ ./]", "_");



        try

        {

            string value = resMan.GetString(key);

            if (value != null) return value;

            return originalKey;

        }

        catch (MissingManifestResourceException)

        {

            try

            {

                return HttpContext.GetGlobalResourceObject("en_au", key).ToString();

            }

            catch (MissingManifestResourceException mmre)

            {

                throw new System.IO.FileNotFoundException("Could not locate the en_au.resx resource file. This is the default language pack, and needs to exist within the Resources project.", mmre);

            }

            catch (NullReferenceException)

            {

                return originalKey;

            }

        }

        catch (NullReferenceException)

        {

            return originalKey;

        }

    }

}

В приложении asn asp.net вы должны использовать его следующим образом:

<span class="label">User:</span>

Теперь вы должны ввести:

<span class="label"><%=Translate.Message("User") %>:</span>
4
ответ дан 17 December 2019 в 02:24
поделиться

Если вы собираетесь использовать файлы ресурсов, как предложил Ram, есть хорошая статья в блоге о локализации здесь: ASP.NET MVC 2 Localization complete guide. (Я должен был упомянуть, что это для Asp.net mvc 2, это может быть полезно, а может и нет) Вам все равно придется потратить время на создание таблиц для каждого языка. Я не использовал никаких других подходов для этого раньше, надеюсь, вы найдете что-то полезное

.
2
ответ дан 17 December 2019 в 02:24
поделиться

Resharper 5. 0 может значительно улучшить время, которое вы тратите на локализацию. В нем есть функции, позволяющие легко перемещаться на ресурс, и он подчеркивает (если его выбрать) все строки, которые являются локализуемыми, так что их труднее пропустить.

Учитывая, что у нее есть 30-дневная пробная версия (полная версия), вы можете просто установить ее, сделать свою работу и удалить, если она вам не по карману, но я бы предложил оставить ее :-) Она действительно стоит своей цены.

Локализация и глобализация программного обеспечения всегда были трудными и порой нежелательными задачами для разработчиков. ReSharper 5 значительно упрощает работу с ресурсами, предоставляя полный набор функций для resx файлов и использования ресурсов в коде C# и VB.NET, а также в разметке ASP.NET и XAML.
Специальные функции включают в себя Move string to resource, Find usages of resource и другие навигационные действия. В сочетании с поддержкой рефакторинга, инспекций и исправлений вы получаете удобную среду локализации.

0
ответ дан 17 December 2019 в 02:24
поделиться

Вы можете сделать это с помощью файлов ресурсов. Вам необходимо создать файл ресурсов для каждого языка, и вы можете использовать соответствующий при запуске приложения.

0
ответ дан 17 December 2019 в 02:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: