我遇到一个小问题 - 我必须列出几个大型共享项目的所有标签,因此标识了缺少翻译的标签。
现在我正在寻找像Palle Agermark的标签导出作业(http://www.agermark.com/2011/10/export-and-import-labels-for.html),但是经过一个或多个项目并提取所有标签ID(不论标签系列)和三种语言的值到Excel。
可以这样做,任何指针? :)
答案 0 :(得分:4)
这扩展了Jan B. Kjeldsen最后一条评论的想法,即从项目xpo文件中获取标签。标签以以下XML结构保存在xpo文件中:
<Table:Record name="TmpSysLabel" xmlns:Table='urn:www.microsoft.com/Formats/Table'>
<Table:Field name="Language">de</Table:Field>
<Table:Field name="Label">Geplante Produktionsaufträge</Table:Field>
<Table:Field name="Description"></Table:Field>
<Table:Field name="LabelId">@SYS119128</Table:Field>
<Table:Field name="SysLabelApplModule">0</Table:Field>
<Table:Field name="recVersion">0</Table:Field>
<Table:Field name="Partition">5637144576</Table:Field>
</Table:Record>
我的第一个想法是将此XML导入Excel,但Excel对属性中的列名称不起作用。所以我写了一个xsl,它将XML转换成如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<labels>
<record>
<Language>de</Language>
<Label>Geplante Produktionsaufträge</Label>
<Description />
<LabelId>@SYS119128</LabelId>
<SysLabelApplModule>0</SysLabelApplModule>
<recVersion>0</recVersion>
<Partition>5637144576</Partition>
</record>
</labels>
要进行此转换,必须稍微清理原始XML,将Table:Record
的所有出现替换为record
,并将所有出现的Table:Field
替换为field
。还要添加根XML节点labels
。它应该看起来像
<labels>
<record>
<field name="Language">de</field>
<field name="Label">Geplante Produktionsaufträge</field>
<field name="Description"></field>
<field name="LabelId">@SYS119128</field>
<field name="SysLabelApplModule">0</field>
<field name="recVersion">0</field>
<field name="Partition">5637144576</field>
</record>
</labels>
现在为了有趣的部分(至少对我而言,因为我对xsl语法没有太多的先验知识),xsl转换文件。我最终得到了以下内容,它将使用http://www.freeformatter.com/xsl-transformer.html生成所需的XML:
<?xml version="1.0" encoding="utf-16"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" omit-xml-declaration="yes" indent="no" />
<xsl:template match="/">
<labels>
<xsl:for-each select="Labels/*">
<record>
<xsl:for-each select="*">
<xsl:element name="{@name}">
<xsl:value-of select="." />
</xsl:element>
</xsl:for-each>
</record>
</xsl:for-each>
</labels>
</xsl:template>
</xsl:stylesheet>
答案 1 :(得分:2)
最简单的解决方案是直接转到标签源。
在AX 2009中,标签存储在应用程序文件夹中,其名称与axSYSen-us.ald类似,其中包含以下部分:
文件采用文本格式,可以轻松导入Excel或使用文本编辑器进行编辑。
您可以导入到Excel,每个标签文件一张,然后使用Excel公式将输出合并到一个单独的工作表(在同一工作簿中)。
在AX 2012中,标签存储在model数据库中,并且.ald文件在启动时创建。