Как gettext имеет дело с a / an или d '/ de? - PullRequest
4 голосов
/ 12 сентября 2011

Представьте себе эту строку для перевода:

"Ваш путь заблокирован% s".

Что если переменная "anaconda". Теперь это должно быть "Ваш путь заблокирован% s".

Как gettext справляется с этим, или как программист-клиент должен справляться с этим, или как другие системы справляются с этим?

Представьте себе эту строку:

"Страница% s".

Мы хотим перейти в «Брайан» или «Джим» или «Люсинда». Все хорошо.

Но во французском переводе это так:

"Страница de% s".

Для Жан-Поля или Клодетта это хорошо, но как насчет бедной Анаис? Ей нужен «Page d'Anais», а не «Page de Anais».

С этим справляется gettext? Какая стандартная практика?

1 Ответ

3 голосов
/ 25 октября 2011

Как и следовало ожидать, gettext не поможет вам построить грамматически правильные строки. Даже если у вас нет проблем с английским языком, программный способ создания отображаемого текста - это большая локализуемость, нет-нет, так как могут возникнуть проблемы с языком. Если это возможно, у вас, вероятно, должны быть отдельные строки для каждого случая, такие как «Ваш путь заблокирован динозавром», «Ваш путь заблокирован кроликом», «Ваш путь заблокирован анакондой» и т. Д. Это означает, что множество дублирование, но системы перевода помогают автоматизировать процесс за счет использования памяти переводов и даже в более сложных случаях автоматического перевода (который переводчикам просто необходимо вычитать и исправлять при необходимости).

Ваш "Page d'Anais" / "Page de Claudette" является отличным примером. Единственным решением в таких случаях является сохранение строки формата в таблице локализуемых строк (и, похоже, вы уже это делаете), чтобы локализаторы могли найти работоспособное решение. (например, «Page de: Anais», хотя и не очень хорошо работает в каждом случае, поэтому они локализуют «% s Page» как «Page de:% s»). Но локализаторам нужно понимать, куда пойдут строки этого формата и как он сконструирован, поэтому вам нужно прояснить это.

Одна из наиболее часто неправильно переведенных строк - это "% n of% n" (используется для печати страниц, как на странице "1 из 4"), которая без контекста часто переводится совершенно неправильно. Например. на французском языке буквальный перевод «1 из 4», что не имеет смысла в этом контексте, это должно быть «1 Sur 4».

...