У меня есть три варианта этого вопроса в возрастающей сложности. Все вопросы предполагают, что gettext запрашивает однобуквенный ответ. В настоящее время я пишу в perl, но ответ на C является приемлемым, как и у меня, и я могу писать модули XS. вы можете предположить, что нет проблем с методом ввода и что языковые переменные установлены правильно.Как мне интернационализировать ввод?
Итак, давайте скажем, что у меня есть программа, которая просит
gettext("are you sure you want to do that (Yes/No)?")
и она была переведена на испанский язык (... (Si/No)?"
), французский и valspeak (... (No problemo/Stop right there)?"
Как я могу сказать, если письмо я получаю от средства ввода да или нет?не предположим, что мы отображения меню с вопросом, как
gettext("Which install procedure do you want?")
с вариантами, какgettext("(N)ovice")
,gettext("(I)ntermediate")
,gettext("(E)xpert")
иgettext("(A)utomated")
. на английском языке я принимаю[niea]
. что я принимаю, если пользователь говорит по-русски ? или китайский? или суахили?Мой фактический проект включает в себя перевод загрузочных меню из общего формата в форматы, которые работают с несколькими загрузчиками. Учитывая, что для каждой записи в меню у меня есть набор пар ключевых значений (текст меню, горячая клавиша и действие среди других), я вижу три возможных способа создания меню на языках, на которых я не говорю.
- (easy) Переведите все меню. Преимущества в том, что файл прост, действие и связанные с ним ключи можно игнорировать, не работать. Недостатки в том, что для этого нет инструментов перевода, и языки могут выйти из строя.
- (medium) Добавить языковые значения ключа, такие как menu_fr, hotkey_fr, menu_ch ... Преимущества в том, что их просто реализовать и что все там. Недостатки снова связаны с проблемами синхронизации.
- (неизвестно) Используйте gettext в главном меню на английском языке. Преимущества включают множество инструментов для переводчиков, установленный рабочий процесс, записи в меню не сложно реализовать, и поскольку я уже использую gettext для сообщений о проделанной работе, большая часть реализации довольно проста. Недостатком является то, что я не знаю, как распознавать горячие клавиши.
Что является лучшим решением?
Перевод на русский язык не в том месте, где вы можете использовать его в качестве основного механизма. Не знаю, какие различия существуют между # 1 или # 2, или что вы подразумеваете под «проблемами синхронизации». – ikegami
@ikegami gettext не выполняет машинный перевод, это позволяет переводчикам не работать с кодом. Что касается синхронизации, когда есть изменение, которое влияет на сообщение, это сообщение нуждается в ретрансляции. # 1 проще, чем # 2, поскольку он касается только логических ответов. – hildred
Я пошел от непонимания №1 и №2, чтобы также не понимать № 3, так как я думал, что это автоматический перевод. – ikegami