Установите свойство Localizable всех моих форм - PullRequest
3 голосов
/ 26 января 2012

Есть ли способ автоматизировать набор этого свойства?у нас есть сотни форм, которые необходимо локализовать, и будет непросто пройти через все из них, установив для этого свойства значение true.

есть ли способ заставить Visual Studio настроить все формы в решении / проекте наLocalizable = правда, как-то?

Ответы [ 2 ]

4 голосов
/ 26 января 2012

Когда вы создаете новую форму Windows, у нее нет файла * .resx и соответствующего кода в файле designer.cs. Когда для свойства Localizable формы установлено значение True, VS добавляет следующий код в файл designer.cs, но затем генерирует и добавляет файл * .resx.

        System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form2));
        this.SuspendLayout();
        // 
        // Form2
        // 
        resources.ApplyResources(this, "$this");
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.Name = "Form2";
        this.ResumeLayout(false);

Поскольку VS добавляет файл * .resx, найти и заменить или вырезать и вставить только код невозможно.

Я попытался записать макрос VS, чтобы автоматизировать его, однако он не будет записывать изменение свойства Localizable на True (не знаю почему)

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

    DTE.Windows.Item(Constants.vsWindowKindSolutionExplorer).Activate()
    DTE.ActiveWindow.Object.GetItem("WindowsFormsApplication1\WindowsFormsApplication1\Form3.cs").Select(vsUISelectionType.vsUISelectionTypeSelect)
    DTE.ActiveWindow.Object.DoDefaultAction()
    DTE.Windows.Item(Constants.vsWindowKindProperties).Activate()
1 голос
/ 26 января 2012

Он представлен записью, подобной следующей (с поправкой на версию .NET Framework) в файле формы .resx:

<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    <value>True</value>
</metadata>

Самый простой способ автоматизировать переключение всех значений в true, вероятно, состоит в том, чтобы запустить файлы подкласса Form, загрузить их файлы .resx в виде XML для проверки наличия элемента и добавить его, если это не так. Кроме того, вы можете использовать ResXResourceReader и ResXResourceWriter для чтения и записи содержимого файла.

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