通过API获取Ektron Workarea中内容的XLIFF文件

时间:2013-01-23 08:14:20

标签: ektron

关于同一主题,SO中已经有两个问题。 哪些是(Creating XLIFF file of a Content in EktronContent export in ektron)。 由于两个线程都没有结束,我在这里讨论相同的主题,但没有更多细节。

我需要通过ektron用于提供相同选项的API生成工作区中特定内容的XLIFF文件。 我已经浏览了相应的工作区文件和数据库中的相应表。 但是无法弄清楚XLIFF zip文件是否存储在某处。像它这样的类似的文件并没有存储在任何物理目录中。它也没有作为XLIFF文件存储在任何表格中。我需要拉出内容的XLIFF文件使用API​​,我该如何实现? 当我在工作区文件中调查时,XLIFF通过以下方式生成: 取决于内容和语言的选择,

 <div class="ektronBorder">
                    <iframe src="localizationjobs.aspx" height="360" width="100%" title="History"></iframe>
                </div>

我是否可以通过API生成和存储XLIFF文件而不是依赖于此?

1 个答案:

答案 0 :(得分:0)

没有“1函数”api来执行这两个作业,但是要导出到xliff,以下代码块应该可以帮助你入门,你需要更改一些变量名/引用:

Ektron.Cms.BusinessObjects.Localization.L10nManager l10nMgr = new Ektron.Cms.BusinessObjects.Localization.L10nManager(this.requestInfoRef);
LocalizationExportJob exportJob = this.CreateExportJob(title, l10nMgr);
exportJob.XliffVersion = xliffVersion;
exportJob.MaxCompressedFileSize = maxCompressedFileSize;
l10nMgr.StartExportForTranslation(exportJob);

private LocalizationExportJob CreateExportJob(string title, Ektron.Cms.BusinessObjects.Localization.L10nManager l10nMgr)
{
    long[] taxonomyIds = this.GetSelectedLocaleTaxonomyIds();
    if (String.IsNullOrEmpty(title))
    {
        title = this.defaultJobTitle;
        if (taxonomyIds != null && 1 == taxonomyIds.Length)
        {
            long id = taxonomyIds[0];
            Ektron.Cms.API.Content.Taxonomy taxonomyApi = new Ektron.Cms.API.Content.Taxonomy();
            Ektron.Cms.TaxonomyRequest req = new Ektron.Cms.TaxonomyRequest();
            req.TaxonomyId = id;
            req.TaxonomyLanguage = this.commonApi.ContentLanguage;
            Ektron.Cms.TaxonomyData data = taxonomyApi.ReadTaxonomy(ref req);
            if (data != null)
            {
                title = data.TaxonomyName;
            }
        }
    }

    LocalizationExportJob job = new LocalizationExportJob(title);
    job.SourceLanguageId = this.GetSelectedSourceLanguage();
    foreach (long id in taxonomyIds)
    {
        job.AddItem(LocalizableCmsObjectType.LocaleTaxonomy, id);
    }

    return job;
}

不幸的是,导入更不容易访问,只能在Ektron业务逻辑中找到。 (嵌入在DLL中)