Локализация с использованием файла ресурсов - PullRequest
3 голосов
/ 04 марта 2011

Я использую файл * .resx для целей локализации.Имя - это фраза или слово на английском языке.Значение - перевод на другой язык этой фразы.Я выбрал этот подход, чтобы иметь один файл локализации для всего приложения.И любой, у кого есть этот файл, может сделать перевод самостоятельно.

Но в редакторе resx Visual Studio 2010 каждая запись с именем, в которой есть пробелы, имеет предупреждение: «Имя ресурса не является допустимым идентификатором».Хотя он компилируется и работает, но, пожалуйста, скажите мне, если я здесь что-то не так делаю.

Ответы [ 3 ]

4 голосов
/ 04 марта 2011

Сила локализации с файлами resx заключается в том, что культура на вашем компьютере решает, на каком языке ваше приложение. По моему мнению, если вы используете один файл resx, вы игнорируете его мощность.Вместо этого попробуйте создать файл resx для каждого языка, который вы хотите интегрировать.Например: язык по умолчанию - английский, тогда у вас есть страница по умолчанию localization.resx, где вы сохраняете только английские предложения.Скажем, вам нужен перевод на французский, создайте еще один файл resx с именем localization.fr-FR.resx.Таким образом, пользователи, у которых на компьютере включена культура fr-FR, будут использовать этот язык в программе без какой-либо конкретной работы с кодом.Если кто-то с культурой, не интегрированной в ваше приложение, запускает программу, она будет искать ее, и если она не найдет ее, она выбирает значение по умолчанию, т.е. английское.

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

4 голосов
/ 04 марта 2011

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

Например, вы можете создать Forms.en-GB.resx, Forms.pl-PL.resx, Forms.de-DE.resx и соответствующий файл будут выбраны на основе текущей культуры пользовательского интерфейса без необходимости что-либо предпринимать (за исключением того, что установлена ​​соответствующая культура).

Visual Studio сгенерирует класс ресурсов, содержащий все вашипары ключ / значение из файла ресурсов в качестве свойств - это облегчает использование в коде.Полученное предупреждение означает, что ключи, предоставленные вами в файле ресурсов, не являются допустимыми идентификаторами (они содержат пробелы).Возможно, вы захотите использовать _ вместо пробела в ключах.

Если вы не хотите использовать сгенерированный класс, вы можете проигнорировать это предупреждение - ваши файлы resx в порядке и могут использоваться напрямую.Вы можете удалить ResXFileCodeGenerator из свойства «Custom Tool» вашего файла resx (окна свойств) или установить для «Access Modifier» значение «Нет генерации кода» в редакторе файлов resx, если вам не нужно создавать класс, но вы все равно будетеполучите предупреждение.

1 голос
/ 04 марта 2011

Полагаю, это работает, но на самом деле это не та стратегия, которой вы должны следовать.

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

Хотя я не используюэто все время, и я делаю что-то, как вы, но я склонен использовать идентификатор, поэтому у меня может быть:

UserWelcome  Hey, {name}, thanks for dropping by ...

И тогда я переведу это.Это полезно, потому что допускает общность языков (скажем, например, некоторые языки следует приветствовать формально, а другие нет, вы не хотите, чтобы вас ограничивал прямой перевод, скажем, «Вы»).

Надеюсь, это понятно.

Если то, что у вас есть, работает, то, я полагаю, это что-то, но это не "общий" способ сделать это.

...