Вручную получить значение ресурса из Resx? - PullRequest
4 голосов
/ 04 октября 2011

Можно ли вообще получить значение из файла ресурсов, для которого не задана культура текущего пользователя? Наше приложение основано на данных, а не на культуре.

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

Можно ли поручить менеджеру ресурсов использовать французский .resx вместо стандартного .resx?

Ответы [ 3 ]

3 голосов
/ 21 августа 2012

Вы можете использовать метод ResourceManager.GetString () и предоставить желаемую культуру в качестве параметра:

var culture = CultureInfo.CreateSpecificCulture("fr-FR");
var localizedString = ResourceManager.GetString("labelName", culture);
2 голосов
/ 04 октября 2011

вы можете установить тип языка для текста надписи в одной из форм, а затем выбрать язык, который вы хотите показать конечному пользователю, сравнить с языком с этим текстом надписи IE, если текст надписи французскийвы можете отобразить все ваши элементы управления на французском

Примечание: оно работает только после создания файла resx на французском языке и переписать вручную все названия элементов управления метками и кнопками на французском языке в качестве значения имени что-то вродеэто ..

  Name              value 
-----------        -------------
 lblname.text      frenchtype name 


 using System;
 using System.IO;
using System.Linq;
using System.Data;
using System.Text;
using System.Diagnostics;
using System.Windows.Forms;
using System.Collections.Generic;
using System.ComponentModel;

public partial class Form1 : Form
{
   public form1()
   {
    System.Threading.Thread.CurrentThread.CurrentUICulture = new
 System.Globalization.CultureInfo("fr-FR");
    getlanguagaefile();
    InitializeComponent();
   }

 // blah
 // blah

private void getlanguagaefile()
{
    if (label1.Text == "French")
    {
        System.Threading.Thread.CurrentThread.CurrentUICulture = new
  System.Globalization.CultureInfo("fr-FR");
        ComponentResourceManager resources = new ComponentResourceManager(typeof(Wait));
        resources.ApplyResources(this, "$this");
        applyResources(resources, this.Controls);

    }
  } 

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

   private void applyResources(ComponentResourceManager resources, Control.ControlCollection controlCollection)
  {
    foreach (Control ctl in controlCollection)
    {
        resources.ApplyResources(ctl, ctl.Name);
        applyResources(resources, ctl.Controls);
    }
  }
}
1 голос
/ 04 октября 2011

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

" .NET Localization, часть 1: Менеджеры ресурсов - проверьте правильность начала в разделе" Создание ресурсов для нескольких языков ".

.NET Localization, часть 2: создание спутниковых сборок

.NET Localization, часть 3: Локализация текста

.NET Localization, часть 4: Локализация единиц"

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