tạo nút đa ngôn ngữ theo chương trình


8

Tôi đang cố gắng tạo một nút đa ngôn ngữ bằng cách sử dụng tập lệnh php.

Tôi đang làm điều này:

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

Miễn là tôi đặt $ node-> ngôn ngữ thành 'und' mọi thứ đều hoạt động tốt. Nhưng ngay sau khi tôi đặt ngôn ngữ thành 'de' hoặc 'en' (cả hai ngôn ngữ đều được kích hoạt trong bản cài đặt Drupal của tôi), văn bản cơ thể sẽ không được lưu.

Vì vậy, câu hỏi của tôi là: bất kỳ ai cũng có thể cung cấp cho tôi một ví dụ hoạt động về cách lưu trữ một nút đa chiều (de, en) vào Drupal bằng mã chương trình.

Cảm ơn bạn


[Link] Tôi hy vọng điều này có thể giúp bạn đi đúng hướng ( drupal.stackexchange.com/questions/6401/iêu )
Vic

Câu trả lời:


9

Nó phụ thuộc vào lĩnh vực cơ thể của bạn có thể dịch hay không. Xin vui lòng, xem giải thích này về các lĩnh vực có thể dịch: 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);

một vấn đề đối với Drupal 8 để làm cho API ngôn ngữ trường có thể sử dụng nhiều hơn.


Cảm ơn bạn rất nhiều vì câu trả lời của bạn. Nó đang làm việc bây giờ. Tất cả tôi thấy đó là một khái niệm khá lạ, rằng chính nút đó là ngôn ngữ trong khi các trường từ nút này là 'không xác định'. Tôi tự hỏi liệu có trường hợp sử dụng nào trong đó các trường là ngôn ngữ cụ thể không (trong các thử nghiệm của tôi, mọi trường đều là 'und'). Nếu các trường luôn luôn là 'und', tôi có thể bỏ qua chức năng gọi hoàn toàn.
caspermc

1
Không nên sử dụng 'und'như khóa trường trong các trang web đa ngôn ngữ.
kalabro

@kalabro - Phải, LANGUAGE_NONEthay vào đó.
leymannx
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.