Поддержка мультиязычности в C # - PullRequest
6 голосов
/ 31 мая 2010

Я разработал пример программного обеспечения в C # Windows Appliation. Как сделать это многоязычным программным обеспечением.

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

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

Я использую «таблицу строк» ​​(файл ресурсов) для этой проблемы.

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

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

Ответы [ 4 ]

4 голосов
/ 31 мая 2010

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

альтернативный текст 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>
2 голосов
/ 31 мая 2010

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

0 голосов
/ 31 мая 2010

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

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

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

0 голосов
/ 31 мая 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...