none
Анализ кода error CA1303 как устранить предупреждение ? RRS feed

  • Вопрос

  • При анализе кода множество предупреждений типа:СА1303

    пример кода

    Form1.Lbl_Podskazka.Text = _
    
    "Совет: Увеличте сечение провода\кабеля "
    
    

    пример предупреждения

    Предупреждение 22 
    CA1303 : Microsoft.Globalization :
    Метод 'Line_size.AB()' передает строку-литерал, как параметр "value" при вызове 'Label.Text.Set(String)'.
    Вместо этого выполните поиск следующей строки (строк) в таблице источника: "Совет:  Увеличте сечение провода\кабеля

    Так вот вопрос как с это победить ?

    • Перемещено SachinW 1 октября 2010 г. 21:01 MSDN Forums Consolidation (От:Начинающие разработчики)
    22 августа 2010 г. 12:38

Ответы

  • Самый простой способ - добавить в проект новый файл ресурсов (например LocalizedStrings.resx), вынести в него все строки из кода. Студия сгенерирует класс, с тем же именем, что у файла resx. В коде заменить .Text = "текст подсказки" на .Text = LocalizedStrings.PodskazkaOSechenii. Ворнинг исчезнет. Примерно то же самое делает студия при выставлении Localizable=true.

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

    • Помечено в качестве ответа a.lisov 22 августа 2010 г. 19:10
    22 августа 2010 г. 17:04

Все ответы

  • В таблице источника? :-/ Ворнинг предлагает вынести локализованные строки в ресурсы, а не вписывать в код. В MSDN по ворнингу есть пример как победить: http://msdn.microsoft.com/en-us/library/ms182187.aspx

    22 августа 2010 г. 14:15
  • Так я видел этот код не чего не понял. Как то сложновато. На верно не дорос.  Думал есть более легкий способ.

    Таких предупреждений около 200. При чем при установке свойства Form1-Localisable = True в конструкторе. Остается только 31 только те которые задаются програмнно.

    Было бы интересно посмотреть пример или статью(По созданию многоязычных приложений) на человеческом языке. А лучше описание по пунктам для начинающих, думаю всем бы было интересно.

    Спасибо за ответ PashaPash. Приятное оживление за последние три дня.

    22 августа 2010 г. 16:20
  • Самый простой способ - добавить в проект новый файл ресурсов (например LocalizedStrings.resx), вынести в него все строки из кода. Студия сгенерирует класс, с тем же именем, что у файла resx. В коде заменить .Text = "текст подсказки" на .Text = LocalizedStrings.PodskazkaOSechenii. Ворнинг исчезнет. Примерно то же самое делает студия при выставлении Localizable=true.

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

    • Помечено в качестве ответа a.lisov 22 августа 2010 г. 19:10
    22 августа 2010 г. 17:04
  • Все спасибо разобрался. Только наверно будет так

    TextBox1.Text = _
     My.Resources.LocalizedStrings.TextBox1Text
    'TextBox1.Text = "Бла бла бла"
    

    или я опять намудрил

    22 августа 2010 г. 18:39