creare un nodo multilingue a livello di codice


8

sto cercando di creare un nodo multilingue usando uno script php.

Sto facendo questo:

 $node = new stdClass();
 $node->title = "Test ".mktime();
 $node->type = "job";
 $node->language = 'de'; // Or e.g. 'en' if locale is enabled
 $node->uid = $user->uid; 
 $node->status = 1; //(1 or 0): published or not
 $node->promote = 0; //(1 or 0): promoted to front page
 $node->comment = 1; //2 = comments on, 1 = comments off
 $node->path = array('alias' => 'das-ist-ein-test-'.mktime());
 $node->body[$node->language][0]['value']   = "Body Body Body";
 $node->body[$node->language] = text_summary("Body Body Body");
 $node->body[$node->language]  = 'filtered_html';
 node_save($node);

Finché ho impostato $ node-> language su 'und' tutto funziona bene. Ma non appena imposto la lingua su 'de' o 'en' (entrambe le lingue sono attivate nella mia installazione di Drupal) il testo del corpo non viene salvato.

Quindi la mia domanda è: qualcuno può fornirmi un esempio funzionante di come memorizzare un nodo multilingue (de, en) in Drupal usando il codice del programma.

Grazie


[Link] Spero che questo possa aiutarti nella giusta direzione ( drupal.stackexchange.com/questions/6401/… )
Vic

Risposte:


9

Dipende da se il campo del tuo corpo è traducibile o meno. Per favore, guarda questa spiegazione sui campi traducibili: https://drupal.stackexchange.com/a/31639/2466

$node_lang = 'ru'; // I am a Russian girl

$node = new stdClass();
$node->title = "Test ".mktime();
$node->type = 'article'; // Your type
$node->language = $node_lang;
$node->uid = 1; 
$node->status = 1;

// Get proper langcode
$body_field_info = field_info_field('body');
if (field_is_translatable('node', $body_field_info)) {
  $body_language = field_valid_language($node_lang);
} else {
  $body_language = LANGUAGE_NONE;
}

// Some lorem ipsum.
// You can add custom summary:
// $node->body[$body_language][0]['summary'] = 'Summary';
$node->body[$body_language][0]['value']   = 'Lorem monotonectally iterate resource-leveling innovation before timely core competencies. Globally coordinate sustainable strategic theme areas and intermandated infomediaries. Monotonectally brand customer directed solutions and high-quality bandwidth.';

node_save($node);

C'è un problema con Drupal 8 per rendere più utilizzabile l'API Language Field.


Grazie mille per la tua risposta. Sta lavorando adesso. Detto ciò, trovo piuttosto strano il concetto che il nodo stesso sia specifico per la lingua, mentre i campi di questo nodo sono "indefiniti". Mi chiedo se esiste un caso d'uso in cui i campi sono specifici della lingua (nei miei test ogni campo era "und"). Se i campi sono sempre "und" potrei abbandonare la chiamata di funzione complessivamente.
caspermc,

1
Non è consigliabile utilizzare solo 'und'la chiave di campo nei siti multilingue.
Kalabro,

@kalabro - Esatto, LANGUAGE_NONEinvece.
leymannx,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.