我在drupal中有一个站点,默认情况下是西班牙语。现在我想添加英文翻译。它有很多实体" producto"使用未定义(' und')语言。我想大规模分配' es'语言给他们。在发布此问题之前,我已经检查了另一个问题How to change node languages in batches?,但我无法完成我想要的任务。让我解释一下:
a)我已经尝试过语言Assignement但是它最后一次提交是1年前它有一个严重的错误,可能导致数据丢失(我也重现了错误)我也试过用户barami的补丁但数据丢失仍然存在。
b)查看批量操作:我已经尝试过,但它只更新数据库表中的字段" node"。不是其他的。
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脚本出错了什么?是否有其他插件可以完成我想要做的事情?任何建议将不胜感激,谢谢!
答案 0 :(得分:2)
以下是我在网站上批量设置语言的方法:
使用视图批量优化,选择您要更改的所有节点,使用'更改值'选项,然后将值更改为您想要的语言。
完成此操作后,编辑节点时不会显示字段值,因此您需要运行脚本,例如UPDATE database.field_data_body SET language='en' WHERE bundle='page'
(根据需要使用您的数据库名称,字段名称和包)。
重要提示:如果您有任何自定义网址别名,由于pathauto存在问题,它们会被这种方法覆盖,但是有一个解决办法:首先转到/ admin / config / search / path /设置,并更改“更新”操作'选项'什么都不做。保留旧别名。',然后在运行“观看批量操作”操作后更改此值。
答案 1 :(得分:1)
假设您可以列出实体列表,可以使用Views Bulk Operations模块执行此操作。 I just explained how to do this the other day for nodes on Drupal Answers.
答案 2 :(得分:0)
另一种解决方案是执行第一个SQL,因为我发现字段语言必须保持'und'。
update node set language='es' where type='producto';