Проблема перевода и локализации - PullRequest
0 голосов
/ 26 ноября 2011

Предлагает ли реализация Microsoft среды выполнения C # какой-либо механизм локализации для перевода общих строк, таких как Overflow, Stack overflow, Underflow и т. Д ...

См. Код ниже - это часть Mono, а в Mono есть подпрограмма Locale.GetText для выполнения таких переводов.

// Added to avoid possible integer overflow.
if (inputOffset > inputBuffer.Length - inputCount)
    throw new ArgumentException("inputOffset" +
                                Locale.GetText("Overflow");

Теперь - как это делается в Microsoft версии среды выполнения и как я могу использовать ее, например, для получения локализованного эквивалента Overflow без добавления файлов ресурсов?

Ответы [ 3 ]

3 голосов
/ 26 ноября 2011

.NET предоставляет платформу, которая позволяет легко локализовать ваш контент ( ResourceManager ) и, в то же время, внутренне поддерживает некоторые переводы для собственных целей (например, DateTime.ToString дает вам текстовое представление для даты / время, которое соответствует местным условиям (включая переведенные названия месяца и дня), не предоставляет вам готовые переводы, будь то обычные строки или нет. В любом случае, он вряд ли сможет сделать это надежно, поскольку существует множество человеческих языков, и слова могут иметь разные переводы в зависимости от контекста и т. Д.

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

1 голос
/ 26 ноября 2011

Да, это так, и это ужасная идея. Это делает отладку намного сложнее.

0 голосов
/ 26 ноября 2011

без добавления файлов ресурсов

Что вы имеете против файлов ресурсов?Ресурсы - это предписанный способ предоставления локализованных и локализуемых строк, изображений и других данных для приложения или сборки .NET.

Обратите внимание, что замена одного слова, как показано в примере кода, приведет к плохому качеству переводов.Разные языки имеют разную структуру предложений и порядок слов, который не подойдет для замены одного слова.Неанглийские языки часто включают в себя роды для существительных и склонения слов, чтобы правильно отразить их роль и число в фразе.Замена одного слова с треском проваливается при этом.

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

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