4

我在 drupal 中有一个站点,默认情况下是西班牙语。现在我想添加英文翻译。它有很多带有未定义('und')语言的实体“producto”。我想将“es”语言批量分配给他们。在发布这个问题之前,我已经检查了另一个问题如何批量更改节点语言?但我无法完成我想要的。让我解释:

a) 我尝试过 Language Assignement,但它最后一次提交是 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. 使用 Views Bulk Optimization,选择您要更改的所有节点,使用“更改值”选项,然后将值更改为您想要的语言。

  2. 完成此操作后,编辑节点时字段值将不会出现,因此您需要运行脚本,例如UPDATE database.field_data_body SET language='en' WHERE bundle='page'(根据需要使用您的数据库名称、字段名称和捆绑包)。

重要提示:如果您有任何自定义 url 别名,由于 pathauto 的问题,它们将被此方法覆盖,但有一个解决方法:首先转到 /admin/config/search/path/settings,然后更改 '将操作”选项更新为“什么都不做。保持旧别名不变。',然后在运行“视图批量操作”操作后更改回此值。

于 2014-04-01T22:24:33.250 回答
1

假设您可以创建一个列出实体的视图,您可以使用 Views Bulk Operations 模块来执行此操作。 前几天我刚刚解释了如何为 Drupal Answers 上的节点执行此操作。

于 2013-01-22T07:08:19.377 回答
0

另一个解决方案是只执行第一个 SQL,因为我发现字段语言必须保持“und”。

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