Traducerea widget-ului în plugin-ul meu

28 oct. 2011, 21:15:57
Vizualizări: 274
Voturi: 1

Adaug suportul i18n pentru widget-ul din List Category Posts. Am creat corect fișierul .pot, precum și fișierele .po și .mo pentru spaniolă și engleză. Toate șirurile de caractere sunt afișate folosind _e() în fișierul formularului.

Structura directorului este următoarea:

/
include/
    ListCategoryPostsWidget.php
    lcp_widget_form.php
languages/
    es_ES.mo
    en_US.mo
plugin.php

Există și alte fișiere, dar acestea sunt cele implicate în traducere. Din clasa mea Widget (ListCategoryPostsWidget.php) folosesc următorul cod pentru a înregistra traducerea:

$translation_dir = '../languages';
load_plugin_textdomain( 'list-category-posts', null, $translation_dir );

Și acesta este codul pe care îl folosesc pentru a include fișierul formular în ListCategoryPostsWidget.php:

/** @see WP_Widget::form */
function form($instance) {
    include('lcp_widget_form.php');
}

Limba implicită este engleza, deci acest lucru funcționează corect. Dar când setez WP_LANG pe "es_ES" în wp-config, tot văd textul în widget în engleză. Aveți idei? EDIT: Adaug mai mult cod:

<p><label for="<?php echo $this->get_field_id('title'); ?>">
<?php _e("Titlu", 'list-category-posts')?></label>

Așa folosesc funcția _e în lcp_widget_form.php.

3
Comentarii

Putem vedea codul de ieșire, pentru a ajuta la diagnosticarea problemei?

Chip Bennett Chip Bennett
28 oct. 2011 21:20:49

Desigur, care cod? HTML-ul generat de widget? Acela doar afișează șirurile din funcția _e, de exemplu: _e("Category") afișează "Category".

Fernando Briano Fernando Briano
28 oct. 2011 21:29:57

Da: codul PHP care generează ieșirea HTML - mai exact, șirurile care sunt afișate. INDICAȚIE: Dacă folosești _e( "Category" ), o faci greșit, și de aceea nu funcționează.

Chip Bennett Chip Bennett
28 oct. 2011 21:31:33
Toate răspunsurile la întrebare 1
4

Pe baza comentariului tău:

Codul HTML generat de widget? Acela doar afișează șirurile din funcția _e, de exemplu: _e("Category") afișează "Category"

Bănuiesc că nu ai configurat corect șirurile de traducere. Trebuie să incluzi textdomain în fiecare apel de funcție pentru șirurile de traducere, altfel acestea nu vor fi niciodată traduse.

De exemplu, pentru textdomain-ul tău 'list-category-posts':

_e( 'Category' )

...ar trebui să fie în schimb:

_e( 'Category', 'list-category-posts' )

Asigură-te că toate funcțiile tale pentru șirurile de traducere sunt declarate corespunzător.

28 oct. 2011 21:34:10
Comentarii

Ups, scuze, am greșit la comentarii, îl folosesc așa cum ar trebui: _e("Categorie", 'list-category-posts')

Fernando Briano Fernando Briano
28 oct. 2011 21:38:32

De aceea trebuie să vedem codul real... :)

Chip Bennett Chip Bennett
28 oct. 2011 21:53:47

Am adăugat mai multe detalii la întrebare.

Fernando Briano Fernando Briano
28 oct. 2011 22:04:37

Aceasta este o întrebare veche, dar tocmai verificam contul meu aici. i18n a fost în sfârșit adăugat: http://wordpress.org/extend/plugins/list-category-posts/changelog/, mulțumesc Chip! :)

Fernando Briano Fernando Briano
8 feb. 2013 07:48:10