I18n в современном Cpp проекте - PullRequest
0 голосов
/ 02 марта 2020

Я разрабатываю современный проект C ++, в настоящее время и в среднесрочной перспективе, но в определенный момент как проект FOSS. В настоящее время я нахожусь в точке, где я должен реализовать функциональность для интернационализации. Я немного исследовал и обнаружил, что разговорные языки - полный беспорядок. Поэтому я не могу реализовать что-то вроде библиотеки i18n / l10n самостоятельно. Суммируется до: Используйте gettext. (В моем случае оболочка Boost.Locale)

Пока все хорошо, но библиотека требует от меня, чтобы написать исходный / исходный текст прямо в коде. Английский sh предполагается. Как вы, наверное, заметили, я не родной человек из Engli sh. Мой Engli sh слишком плох, чтобы использовать его в качестве исходного языка - и я не хочу этого. Например, для тонкого юмора необходимо хорошее знание языка.

Теперь я вижу 3 варианта:

  1. std::cout << gettext("Hallo Welt") << std::endl;
  2. std::cout << gettext("Hello World") << std::endl;
  3. std::cout << my_own_crappy_lib(HELLO_WORLD_ID) << std::endl;

1) Средства для написания моего родного языка в коде, что делает невозможным разработку не-немцами с моей базой кода. Это тоже безобразно, потому что я пишу исходный код на Engli sh, документацию на кодировку Engli sh, но на немецком языке приведены строки.

2) Имеется в виду написание Engli sh и надеюсь, что кто-то исправит мои опечатки и Отбросьте мой юмор.

3) Реализуйте что-то самостоятельно, чтобы сопоставить некоторый сокращенный идентификатор с переводами. Но я совершенно не уверен, как это сделать и как обращаться с множественными формами и т. Д. c.

Можете ли вы дать мне подсказку, как я буду продолжать?

ОТ: Пожалуйста, не надо Виноват в моей лени, чтобы выучить правильный английский sh. Я большой поклонник сериала Futurama, и там вы видите, что даже профессиональные переводчики не могут перевести много шуток или тонких намеков.

...