Salesforce中Custom Label导入导出及批量删除

news/2024/11/29 13:45:07/

前言】:在实施国际化项目时,Custom Label为我们提供了多语言的便利,为了优化翻译流程和加速多语言部署的进程,通常我们期待能将开发创建的那些Label导出来,然后通过Excel给到翻译专家,翻译完后再使用高效工具批量导入系统。

数据导出】:
这里提供2种方法,其核心都是借助工具本身的"Use Tooling API",通过下面SOQL语句导出Label:

SELECT Id, Name, Category, Language, Value FROM CustomLabel ORDER BY Name DESC

这里提供2种途径:
#1. Developer Console的Query Editor;
#2. Salesforce Inspector - Data Export;

效果预览:

缺点当启用多语言后,我们仅能导出单种语言,不能导出所有语言;另外,无法导出Short Description.

数据导入】:

提到导入有2个话题:
A. 批量导入新建的label;
B. 对现有label批量导入翻译的文本;

对于A - 不能使用Data Loader这类工具批量导入,需要手动创建;
对于B - 可以使用Translation Workbench的Export / Import来解决,本文将重点覆盖这一流程

Demo设计如下

目标:假如系统启用了三种语言en_US / zh_CN / zh_TW,现有2个custom label - label1, label2,需要批量将其翻译成中文;

Baby Steps:
1. 在Translation Workbench下选择Export导出可被翻译的元数据:

这时有3种导出类型和2种导出选择:以Bilingual为例
#1 Export as STF - 一种可以被加载进excel处理的数据格式
#2 Export as XLIFF - xml格式,本文将覆盖这一选择

获取到xml文件后,我们不妨看下翻译的基本套路:

模板如下:

<?xml version="1.0" encoding="UTF-8"?>
<xliff version="1.2"><file original="Salesforce" source-language="zh_CN" target-language="zh_CN" translation-type="metadata" datatype="xml"><body><trans-unit id="CustomLabel.label1" maxwidth="1000" size-unit="char"><source>label1</source><target>标签1</target><note>label1</note></trans-unit><trans-unit id="CustomLabel.label2" maxwidth="1000" size-unit="char"><source>label2</source><target>标签2</target><note>label2</note></trans-unit></body></file>
</xliff>

2. 翻译:对上述xml我们只需要关注如下部分:

a. 待翻译的语言 - language code,如en_US / zh_CN / zh_TW;
b. 提取body中待翻译的元数据类型 - 下载后有很多待翻译的元数据,这时我们最好剔除那些不在翻译范围内的元数据(经测试导入时仅作更新,对于移除的元数据的原有翻译不会有影响),否则未加target的部分会报错
c. 翻译的本质就是加targe节点并放入翻译的文字;

3. 导入:将翻译好的xml导入进系统即可:

系统处理成功后将发送邮件通知:如有错误,将附上log文本

4. 效果预览:

错误集锦】:
#1. xml方式导入,xml中不包含target节点的项:所以需要移除未被翻译的元数据

#2. 导出文件失败:多试几次 - 官方建议

#3. 使用第一种方式导出为STF后,导入时的错误:可以通过删除不需要的元数据来解决

想不明白的是导出的基础文件中就包含了重复的元数据:

补充】:对于需要大规模翻译的文本,构建xml并不是一种高效的方法,所以还是有必要介绍使用.stf处理翻译问题的成功关键因素。

#1. 导出.stf文件后,移除不必要的元素,保留需要翻译的元素,如下图:

#2. 将.stf文件加载进Excel进行翻译,如下:

#3. 翻译好后将数据另存为tab分割的txt格式:

#4. 修改拓展名后将必要信息加进去,保存后就可以用作导入了。

批量删除】:

Removing mass Salesforce metadata by integration destructiveChangesPre.xml and Workbench

参考资料】:Export Data Translation Files | Source Translation Files | Bilingual Translation Files | Import Translated Files | Common Errors with Exporting and Importing Translation Files


http://www.ppmy.cn/news/624449.html

相关文章

Salesforce 获取某个对象的某个字段的picklist值

封装成一个方法重用 public with sharing class CommonUtilities {AuraEnabledpublic static List<String> getPicklist(String objName, String fieldName) {List<String> lstPicklist new List<String>();Schema.SObjectType targetType Schema.getGlob…

Salesforce Lightning组件中的动态可重用自定义列表视图

&#x1f4d6;摘要 今天分享下 —— Salesforce Lightning组件中的动态可重用自定义列表视图 的一些基本知识&#xff0c;欢迎关注&#xff01; Salesforce始终在开发新功能。最近引入了新的闪电组件&#xff0c;称为“ lightning&#xff1a;listView ”。这有助于我们根据特定…

Dataloader在Salesforce中的使用

使用场景 Dataloader在Salesforce云平台中多用来做数据迁移&#xff0c;批量导入/导出&#xff0c;数据备份等。适合5000000万条数据一下的操作。 安装 第一步&#xff1a;在Force.com云平台进入设置&#xff0c;左上角的快速查找输入dataloader&#xff0c;选择对应的版本下…

Salesforce LWC学习(十) 前端处理之 list 处理

本篇参看&#xff1a;https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array list是我们经常要处理的内容&#xff0c;lwc前端针对list主要有几个函数处理&#xff0c;不同函数针对不同场景有不同的功能。下面就根据几个常用的处理list的方…

salesforce commandLink commandButton中通过param传递参数

第一次用 commandLink commandButton传递参数总是出现问题&#xff0c;后来查资料发现reRender&#xff0c;需要用这个参数渲染到当前的pageBlock部分代码如下。 <div id "cvExperienceDiv"><apex:form ><apex:pageBlock title"" id"…

Salesforce:文件上传

每一个Record&#xff0c;是有一个唯一的18位或者15位长度的ID, 这个ID会和一个存放关联文件的系统Object关联。 如果要上传文件&#xff0c;按照以下步骤操作。 From Setup, at the top of the page, select Object Manager and select the object you want to add the File…

Salesforce系列(十一):Salesforce 使用Process Builder自动化简单业务流程!

Salesforce系列&#xff08;十一&#xff09;&#xff1a;Salesforce 使用Process Builder自动化简单业务流程&#xff01; 前言 今天博主将为大家分享Salesforce系列&#xff08;十一&#xff09;&#xff1a;Salesforce 使用Process Builder自动化简单业务流程&#xff01;不…

Salesforce社交电商上线,阿里云提供技术支持

1月18 日&#xff0c;全球软件巨头Salesforce和阿里云联合发布针对中国市场的软件“Salesforce社交电商”。这是Salesforce与阿里云达成战略合作后在中国市场首发新品。 “用户可以在阿里云上使用本地化的Salesforce 社交电商软件&#xff0c;这是两大科技公司战略合作的重要一…