@infolemadk
As stated above we have implemented your request in Aspose.Words Cloud 22.1. We have added FieldOptions
and FieldUpdateCultureName
parameters to set a specific culture (locale) for Mail Merge fields. To set a template locale we need to set above two FieldOptions parameters as follows.
using Aspose.Words.Cloud.Sdk;
using Aspose.Words.Cloud.Sdk.Model;
using Aspose.Words.Cloud.Sdk.Model.Requests;
using Aspose.Words.Cloud.Sdk.Tests.Base;
using System;
using System.IO;
using System.Text;
using System.Threading.Tasks;
namespace MailMergeDemo
{
class Program
{
static async Task Main(string[] args)
{
var p = new Program();
WordsApi api = p.InitApi();
// create template with a MERGEFIELD
var templateFilename = "template.docx";
var fieldCode = "{ MERGEFIELD Start \\@ \"dddd\"}";
await p.CreateTemplate(api, templateFilename, fieldCode);
// mail merge in De-de locale
var data = "<Data><Start>2021/12/13</Start></Data>";
await p.MailMerge(api, templateFilename, data, "de-DE"); // output Montag
await p.MailMerge(api, templateFilename, data, "en-US"); // output Monday
}
private WordsApi InitApi()
{
// create Words Cloud API
var config = new Configuration { ClientId = "xxxxx-xxx-xxxx-xxxx-xxx", ClientSecret = "xxxxxxxxxxxxxxxxxx", };
var api = new WordsApi(config);
return api;
}
private async Task CreateTemplate(WordsApi api, string templateFilename, string fieldCode)
{
// create docx with a date field.
var createTemplateRequest = new BatchPartRequest(new CreateDocumentRequest(templateFilename));
var insertFieldRequest = new BatchPartRequest(new InsertFieldRequest(templateFilename, new FieldInsert { FieldCode = fieldCode }));
await api.Batch(false, createTemplateRequest, insertFieldRequest.DependsOn(createTemplateRequest));
}
private async Task MailMerge(WordsApi api, string templateFilename, string data, string locale)
{
string mergedFilename = $"{locale}.docx";
string textFilename = $"{locale}.txt";
var fieldOptions = new FieldOptions
{
FieldUpdateCultureSource = FieldOptions.FieldUpdateCultureSourceEnum.FieldCode,
FieldUpdateCultureName = locale
};
// batch with mail merge, save as text, and dowenloading result
var mailMergeRequest = new BatchPartRequest(new ExecuteMailMergeRequest(templateFilename, data, fieldOptions, destFileName: mergedFilename));
var saveAsRequest = new BatchPartRequest(new SaveAsRequest(mergedFilename, new TxtSaveOptionsBaseData { SaveFormat = "txt", FileName = textFilename }));
var downloadRequest = new BatchPartRequest(new DownloadFileRequest(textFilename));
var result = await api.Batch(false, mailMergeRequest, saveAsRequest.DependsOn(mailMergeRequest), downloadRequest.DependsOn(saveAsRequest));
// print the result
Console.WriteLine($"Locale {locale}, date {new StreamReader((Stream)result[0], Encoding.UTF8).ReadToEnd()}");
}
}
}