Помощ » Преводи » Poedit 1.7.5 / Plural form – не ги прихваща при генерирането.

  • Касае последните текущи версии на WP и Poedit (съответно 4.1.1 и 1.7.5).
    Свалих готова тема, където естествено си бяха добавили в languages и необходимия *.pot файл, конвертирах си го в *.po с всички останли стъпки както трябва. До тук всичко е ок, и всичко си работи привидно, но забелязах, че към темата има непреведен стринг. Разрових и видях, че ползва шаблон за ед./мн. число:

    printf( _nx( 'One thought on “%2$s”', '%1$s thoughts on “%2$s”', get_comments_number(), 'honma' ), number_format_i18n( get_comments_number() ), '<span>' . get_the_title() . '</span>' )

    И тъй като е лоша практика да се пипа направо в *.po файла, реших да си фиксна проблема по някой от нормалните начини, но ударих на камък. Не прихваща въпросния ред. Първоначално помислих, че настройките не са били достатъчни, когато е генериран прикачения към темата *.pot файл и за целта направих нов каталог на темата. Добавих всички настройки за да функционира правилно: директория където да „копа“, хедър на *.po файла (nplurals=2; plural=(n != 1);), необходимите му шаблони за превод (__, _n, _nx и т.н.), но пак нищо. Всъщност единственото ми придвижване беше, че започна да хваща първата част – тази за единственото число (нормалните преводи си ги генерира обаче).
    … та с няколко думи това ми е проблема .. дайте някаква идея какво да пробвам още или ако се сетите дали не съм пропуснал нещо … бих ви добавил няколко скрийншота, но видях, че няма позволена опция във форума.

    Предварително благодаря на коментиралите проблема!

Виждате 2 отговора - 1 от 2 (от 2 общо)
  • Оправих се. Това, което бях пропуснал да спомена е, че платформата ми е линукс (Ubuntu 14.04). Помня, че до преди две-три години Poedit-а имаше друг проблем под юникс базираните платформи. Както и да е … фикснах го. Проблема беше при първоначалната индексация на кода в посочената директория от Poedit-а. Това, което направих е:

    1. Промених кода в темплейта, като последния аргумент го сложих в скоби, тъй като явно има проблем с конкатенацията ако не е затворена в такива. Този проблем го има и с други PHP функции, така че можем да го приемем за нещо нормално мисля.

    printf( _n( 'One thought on “%2$s”', '%1$s thoughts on “%2$s”', get_comments_number(), 'honma' ), number_format_i18n( get_comments_number() ), ('<span>' . get_the_title() . '</span>') )

    2. Транслейт функцията (върах я в първоначалния ѝ вид в кода _n), след което в настройките на каталога експлицитно указах вида ѝ:

    _n:1,2
    _nx:1,2

    В крайна сметка Catalog -> Properties -> Sources Keywords придоби следния вид:

    _
    _n:1,2
    _nx:1,2
    gettext
    gettext_noop
    _e

    Всъщност тази настройка при всеки е различна според транслейт функциите, които е ползвал в указаната директория на каталога. Конкретно при мен я насочих да „копа“ единствено в директорията на темплейта:
    Catalog -> Properties -> Sources Paths
    Base path: .
    Paths: ../../themes/honma

    Ако сте решили да ползвате Honma темплейта го имайте в предвид, че дори в оригиналния им *.pot каталог не фигурира този превод. Нямам идея в платената версия на въпросния темплейт как стоят неща. За тестовете аз ползвах безплатната му версия.

    Още нещо … след като разрових в последствие и проследих gettext и gettext_noop видях, че вероятно са ненужни в моя случай, тъй като те са събирателно за всички ползвани. Виж във /wp-content/plugins/codestyling-localization/includes/class.parser.php (19 ред за текущата версия на WP).

    $gettext = array(
    	'__',
    	'_e',
    	'_c', //context by |
    	'_nc', //context by |
    	'__ngettext', '_n',
    	'__ngettext_noop', '_n_noop',
    	'_x', 		//see "_c" but explicite context
    	'_ex', 		//see "_c" but explicite context
    	'_nx', 		//see "_n" but  but additional context,
    	'_nx_noop'	//see "_n_noop" but  but additional context,
    );

    … явно тук се дефинират, и от тук се получава разминаването, тъй като Poedit-а си изисква точния формат на търсене … както и да е де … аз за първи път пипам WP и вероятно пропускам куп детайли още, но ако на някой му се занимава може да продължи да рови – интересно е. Аз само исках да подкарам ъпдейта на plural form за темата. Ако някой е запознат в дълбочина с конкретния софтуер и има време естествено може да драсне някой ред, че да почерпим по мързеливия начин още knowhow, ако ли не – здраве на всички и както пише в индексните файлове на wp-conten директориите:
    // Silence is golden.

    🙂

    Модератор Stanko Metodiev

    (@metodiew)

    ха, супер че си се оправил и благодаря за подробното описание! Надявам се че ако някой друг срещне подобен проблем, първо ще се отбие тук, за да види решението му 🙂

Виждате 2 отговора - 1 от 2 (от 2 общо)
  • Темата ‘Poedit 1.7.5 / Plural form – не ги прихваща при генерирането.’ е затворена за нови отговори.