buat node multibahasa secara terprogram

8

Saya mencoba membuat simpul multibahasa menggunakan skrip php.

Saya sedang melakukan ini:

 $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);

Selama saya mengatur $ node-> bahasa ke 'und' semuanya bekerja dengan baik. Tapi begitu saya mengatur bahasa ke 'de' atau 'en' (kedua bahasa diaktifkan di instalasi Drupal saya) teks tubuh tidak bisa disimpan.

Jadi pertanyaan saya adalah: adakah yang bisa memberi saya contoh yang berfungsi tentang cara menyimpan simpul multlingual (de, en) ke dalam Drupal menggunakan kode program.

Terima kasih

caspermc
sumber
[Tautan] Saya harap ini dapat membantu Anda ke arah yang benar ( drupal.stackexchange.com/questions/6401/… )
Vic

Jawaban:

9

Itu tergantung pada apakah bidang tubuh Anda bisa diterjemahkan atau tidak. Silakan, lihat penjelasan ini tentang bidang yang dapat diterjemahkan: 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);

Ada masalah bagi Drupal 8 untuk membuat API Bahasa Lapangan lebih bermanfaat.

kalabro
sumber
Terimakasih banyak atas jawaban Anda. Ini bekerja sekarang. Walaupun saya menemukan konsep yang agak aneh, bahwa simpul itu sendiri adalah bahasa spesifik sedangkan bidang dari simpul ini 'tidak terdefinisi'. Saya bertanya-tanya apakah ada kasus penggunaan di mana bidang-bidang tersebut khusus bahasa (dalam pengujian saya setiap bidang adalah 'tidak'). Jika bidang selalu 'tidak' saya bisa membuang fungsi panggil semuanya.
caspermc
1
Tidak disarankan untuk menggunakan hanya 'und'sebagai kunci bidang di situs multibahasa.
kalabro
@kalabro - Benar, ini LANGUAGE_NONEmalah.
leymannx