Переведите строку на язык с существительными мужского / женского рода

9

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

Вы можете включить% s в childtheme

поскольку «а» зависит от того, что такое% s?

helgatheviking
источник

Ответы:

7

Это не проблема, если каждая строка получает свой собственный шаблон для перевода.

Если вы используете строку You can include a %s in a childtheme.более одного раза для разных существительных, это не переводится.

Пример, взятый из недавней статьи : New %sна немецком языке (да, у нас есть и гендерные существительные)…

  • Neues Buch (для книги, нейтральная)
  • Нойер Фильм (для фильма, мужской)

... так что вы должны написать New book и New movie или или You can include a logo in a child theme. и You can include a stylesheet in a child theme. .

Примечание

Это одна из причин, почему файлы перевода занимают так много памяти: вы должны «повторить» много очень похожих строк. Хотя установка WordPress на английском языке, вероятно, будет хорошо работать с 32-мегабайтной PHP-памятью, она просто умрет, если вы используете то же самое с немецким или французским переводом.

Если ваша тема или плагин использует много переводимых строк для внешнего интерфейса и внутреннего интерфейса, рассмотрите возможность использования двух файлов: одного для внутреннего интерфейса и отдельного файла для внешнего интерфейса.

load_theme_textdomain( 
    'your_text_domain', 
    get_template_directory() . '/languages' . ( is_admin() ? '/backend' : '/frontend' )
);

Ядро WordPress просто изменилось на эту систему для повышения производительности.

Фуксия
источник
спасибо. я думаю, мне нужно глубже изучить назначение исходной строки и посмотреть, для чего используется% s. как разделить строки и интерфейсные строки?
helgatheviking
@helgatheviking посмотри мое обновление.
fuxia
Попался. Спасибо за это. еще одна вещь, если строка используется только один раз, можете ли вы оставить ее с% s и просто дать разъяснение контекста?
helgatheviking
@helgatheviking Да, вы делаете это. Но я не понимаю, как это облегчит перевод. Параметр context также должен быть жестко закодированной строкой; Вы не можете использовать переменную PHP здесь.
fuxia
« да, у нас тоже есть родовые существительные », вспоминает меня Марк Твен: всякий раз, когда литературный немец погружается в предложение, это последнее, что вы увидите о нем, пока он не появится на другой стороне Атлантики с глаголом в рот.
brasofilo
0

Хельга, ты, викинг ... Я бы сказал, что это одна из плотей простого и интригующего вопроса!

В простом виде, похоже, что проблема в том, %sа не пол:

Вы можете включить %sв детскую тему

Сложность в этом вопросе, я не знаю, решит ли это gettext toscho reranslate wizardry , или если это не по теме и должно решаться WP Polyglots .

примечание: Как: Перевести формы множественного числа для тем / плагинов с помощью PoEdit

brasofilo
источник
уф, этот перевод сложен. ясно, я принимаю быть родным англоязычным как должное! если этот поток будет лучше в WP Polyglots, я надеюсь, что кто-то переместит его.
helgatheviking
Ну, а теперь, наоборот , с каноническим ответом, предоставленным toscho, WP Polyglots может использовать этот пост в качестве ссылки для предмета :)
brasofilo