Комментарии 8
Минималистично API это, конечно, хорошо, но
Какие инструменты для переводчиков вы предлагаете?
Как происходит плурализация? (1 яблоко, 2 яблока, 5 яблок / 1 apple, 2 apples, 5 apples)
Как насчет локализации чисел? (1 000,15 vs 1,000.15)
И падежи ещё (1 яблоком, 2 яблоками), я сейчас страдаю от их отсутствия в gettext
Имхо, падежи не меняются диамически, они не зависят от подставляемых данных. Вы просто формируете фразу сразу в нужном падеже. Но да, так мы ограничены в динамической сборке из кусков
Подставляемые данные зависят от падежей. А среднестатистический англоязычный разработчик часто забывает, что в других языках падежей бывает больше чем в английском, и в итоге из какого-нибудь «%s угостил %s %d %s» мы получаем «Вася угостил Петя 1 яблоко»
Ах да, попутно и про род можно вспомнить, а то какое-нибудь «Получен 1 яблоко» тоже не круто
По сопровождению translation.json файлов и их наполнению я использую плагины в ide и отдельные приложения предназначенные чисто для этих целей.
Плюрализации в этой библиотеки нет, возможно в будущем я добавлю ее. В проектах 90% случаев плюрализация скорее всего Вам не понадобится. Если рассматривать пример с яблоками, можно переназвать это как: "Яблок: {n} шт."
Для плюрализации, чтобы это хорошо работало нужно учитывать большое количество факторов: род (мужской, женский, средний), число (множественное, единственное), контест в предложении, падежи, ешё это в разных языках это все по разному. В итоге Вы откажитесь от этой затеи и придете к нейтральным словам (предложениям).
По локализации чисел, валют, дат, номеров телефонов здесь я могу предложить использовать сторонние библиотеки, например locale (https://metanit.com/python/tutorial/6.3.php)
Где можно посмотреть эти приложения?
Простите, я не понимаю как вы собираетесь учитывать число в плурализации, если это буквально про числа. Контекст и падежи часто заданы прям в переводе, вы же не собираете предложение из отдельных слов. Но в любом случае, спасибо, ограничение либы понятно.
locale это не сторонняя библиотека, это встроенная. Если я правильно помню, в ней есть ограничения по падежам ("5 мая" получить можно, "май" - нельзя).
Это ваша библиотека? Ни одной звезды, 4 коммита за все время. Вы тогда хотя бы скажите об этом, а то выглядит не очень безопасно.
Интернационализация Python-проектов modern-i18n