Разработка приложения для неспецифического языка, например, планирование локализации - PullRequest
0 голосов
/ 26 августа 2010

Сделано в этом сообществе вики: 3

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

(Это спасло бы меня от многих мигрантов в будущем)

Для этого примера давайте использовать западные языки слева направо. Английский, испанский, немецкий, французский, итальянский.

Это базовый пример того, что у меня есть.
Один XML-файл содержит отображение и схему разговора.

<conversation>
<dialog>line1</dialog>
<dialog>line2</dialog>
</conversation>

Другие XML-файлы содержат определения.

<mappings language="English">
<line1>This is line 1 in English!</line1>
<line2>Other lines are contained in language-separated xml files</line2>
</mappings>

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

Каким был бы самый обнадеживающий способ решения этой проблемы? Прямо сейчас я подумал о том, чтобы придумать разные таблицы сопоставления, одна из которых исключительно для предложений мужского времени, тогда как другая таблица будет охватывать только женские времена. Или просто чтение из разных таблиц определений.

И еще один кикер будет основан на моем дизайне игровых данных. Я никогда не думал об этом, но мне может понадобиться хранить в моих игровых элементах и ​​персонажах их пол, чтобы я мог использовать правильное предложение. Тем не менее, у других языков могут быть свои специфические особенности, которые мне необходимо учитывать (хотя, к счастью, из того, что я знаю, итальянский и испанский языки относительно похожи, и, возможно, французский также.)

Так что, очевидно, передо мной стоит огромная задача. Какие еще соображения по поводу дизайна я должен подумать? Ладно, я думаю, что статический класс будет проще всего. Сконфигурируйте выбранный язык при запуске, добавьте входные данные и, надеюсь, верните строку.

Любые идеи (ищите идеи: P)

Ответы [ 2 ]

0 голосов
/ 03 сентября 2010

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

Попытка быть умным, довольно быстро, довольно быстро, особенно если вы пытаетесь охватить много языков.

Вам необходимо хранить больше информации о персонажах, чем о полу. Например, в русском языке есть разные слова, означающие «вы», в зависимости от того, являетесь ли вы неформальным или формальным (или говорите с несколькими людьми), и окончания глагола также различны. В зависимости от формальности существуют разные переводы: «Пожалуйста, передайте хлеб». На других языках правильность перевода зависит от социального статуса.

Есть проблемы, как указал pawel_dyda, в единственном, множественном числе и, возможно, двойном регистре. Другие языки также используют разные порядки слов: «Стрелки по X медные каждая, поэтому для покупки Y стрелок вам понадобится Z серебро», возможно, вам потребуется отслеживать порядок чисел.

Visual C ++ и MFC поставляются с очень хорошими средствами интернационализации. Вы бы сохранили строки в файле ресурсов, и можно заменить числа и т. П., Сохраняя правильный порядок для разных языков.

Найдите в Интернете "интернационализацию" (часто сокращенно "i18n"). Там много всего.

0 голосов
/ 02 сентября 2010

Что касается пола, вы можете попытаться поощрить переводчиков использовать переводы, не относящиеся к полу (что обычно возможно в бизнес-приложениях, но может быть невозможно здесь).

Возможно, вы столкнулись с проблемой где-то еще.Другие (не английские) языки имеют множественные формы множественного числа.Например: «Ваша команда приобрела 2 меча».Независимо от того, сколько мечей вы на самом деле получите, будь то 5 или 1000, на английском языке вы всегда получите одно предложение во множественном числе.Но это не так во многих языках.

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