4

デフォルトでスペイン語のdrupalのサイトがあります。今、私は英語の翻訳を追加したいと思います。未定義(「und」)言語のエンティティ「producto」がたくさんあります。'es'言語をそれらに一括割り当てしたいと思います。この質問を投稿する前に、この他の質問を確認しました。ノード言語をバッチで変更するにはどうすればよいですか?しかし、私は自分が望むことを達成することができません。説明させてください:

a)言語割り当てを試しましたが、最後のコミットは1年前であり、データ損失につながる可能性のある重大なバグがあります(エラーも再現しました)ユーザーbaramiのパッチでも試しましたが、データ損失が続きます。

b)一括操作の表示:試しましたが、データベーステーブル「ノード」のフィールドのみが更新されます。他のものではありません。

c)そこで、drupalデータベースがどのように機能するかを確認し、データの損失につながるSQLスクリプトを作成しました。

-- Step 1 Node lang
update node set language='es' where type='producto';

-- Step 2 body field
update field_data_body set language='es' where bundle='producto';

-- Step 3 Field comment vody
update field_data_comment_body set language='es' where bundle='comment_node_producto';

-- Step 4 For each field of producto, update language
update field_data_field_precio set language='es' where bundle='producto';
update field_revision_field_precio set language='es' where bundle='producto';

(...)

次の翻訳モジュールをアクティブにしました:国際化、ブロック言語、フィールド翻訳、メニュー翻訳、多言語コンテンツ、多言語選択、翻訳の同期、分類翻訳、翻訳リダイレクト、翻訳セット

sqlスクリプトで何が間違っていますか?私がやりたいことを達成するための他のプラグインはありますか?どんな提案でもありがたいですありがとう!

4

3 に答える 3

2

サイトで言語を一括設定する方法は次のとおりです。

  1. ビューの一括最適化を使用して、変更するすべてのノードを選択し、[値の変更]オプションを使用してから、値を目的の言語に変更します。

  2. これを行った後、ノードを編集するときにフィールド値は表示されないため、スクリプトを実行する必要がありますUPDATE database.field_data_body SET language='en' WHERE bundle='page'(たとえば、db名、フィールド名、およびバンドルを適切に使用します)。

重要:カスタムURLエイリアスがある場合、pathautoの問題により、このアプローチで上書きされますが、回避策があります。最初に/ admin / config / search / path / settingsに移動し、'を変更します。 「アクション」オプションを「何もしない」に更新します。古いエイリアスはそのままにしておきます。'ビューの一括操作アクションを実行したら、この値を元に戻します。

于 2014-04-01T22:24:33.250 に答える
1

エンティティを一覧表示するビューを作成できると仮定すると、ViewsBulkOperationsモジュールを使用してこれを行うことができます。 先日、DrupalAnswersのノードでこれを行う方法を説明しました。

于 2013-01-22T07:08:19.377 に答える
0

別の解決策は、フィールド言語が「und」のままでなければならないことを発見したため、最初のSQLを実行することです。

update node set language='es' where type='producto';
于 2013-01-31T10:00:54.283 に答える