vb.net 2008 многоязычное отображение строки при добавлении ресурсов err: MissingManifestResourcesException - PullRequest
0 голосов
/ 26 мая 2010

Разрабатывая многоязычное приложение в VB.Net 2008, я могу добавлять ресурсы в формы и создавать многоязычные формы в зависимости от культуры. При чтении Msdn о создании многоязычных строковых значений для содержимого ящика сообщений добавьте файл .resource к указанному пути к файлам проекта. При компиляции ошибки нет, но выдается ошибка MissingManifestResourceException

Dim rm As ResourceManager rm = ResourceManager.CreateFileBasedResourceManager ("strFormResources", ".", Nothing) Dim Ci As CultureInfo ci = New CultureInfo ("fr-FR") MessageBox.Show ( rm.GetString ("sample1", ci))

Не удалось найти какие-либо ресурсы, подходящие для указанной культуры (или нейтральной культуры) на диске. baseName: strFormResources locationInfo: fileName: strFormResources.resources

В Ресурсах проекта есть strFormResources.resources и strFormResources.fr-FR.resources. Я искал детали этой ошибки, но не смог найти решение. Что я делаю не так или есть какой-либо другой способ отображения многоязычных строк в окне сообщений.

Заранее спасибо

1 Ответ

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

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

Чтобы сделать это «правильно», обязательно воспользуйтесь функцией My.Resources. Действуйте следующим образом:

  • Проект + Добавить новый элемент, Общий, Файл ресурсов
  • Назовите его Resources.fr-FR.resx и нажмите Добавить
  • Редактор строковых ресурсов открывается автоматически. Добавьте строки, которые вы получили, в свою исходную таблицу строк, теперь используя французский язык.
  • Compile.
  • Загляните в папку bin \ Debug вашего проекта и убедитесь, что вы видите сателлитную сборку. Он должен храниться в каталоге fr-FR с именем project .resources.dll.

Проверьте это, нажав кнопку на форме и написав код:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    System.Threading.Thread.CurrentThread.CurrentUICulture = _
        System.Globalization.CultureInfo.GetCultureInfo("fr-FR")
    MessageBox.Show(My.Resources.String1)
End Sub
...