| Language Resource Templates |
Like file translation memories, server TMs, too, can leverage language resource templates. (For more information on language resources please see Configuring Translation Memories.) On this page you will learn how to retrieve server language resource templates and how to create a new language resource template.
Start by adding a new class called ServerLanguageResourceTemplates to your project. This class should contain the functionality to retrieve existing field templates and create new templates.
The first task will be to generate a list of all language resources templates that are hosted on a specified TM Server. To do this implement a function called GetTemplates, which takes the translation provider server as parameter. Use a foreach loop to iterate through all language resources templates by applying the GetLanguageResourcesTemplates method:
string templateList = string.Empty; foreach (ServerBasedLanguageResourcesTemplate template in tmServer.GetLanguageResourcesTemplates(LanguageResourcesTemplateProperties.All))
templateList += "Template name: " + template.Name + "\n"; templateList += "Description: " + template.Description + "\n";
LanguageResourceBundle bundle = template.LanguageResourceBundles[0]; templateList += "Number of variables in template: " + bundle.Variables.Count.ToString() + "\n\n";
public void GetTemplates(TranslationProviderServer tmServer) { #region "LoopTemplates" string templateList = string.Empty; foreach (ServerBasedLanguageResourcesTemplate template in tmServer.GetLanguageResourcesTemplates(LanguageResourcesTemplateProperties.All)) #endregion { #region "info" templateList += "Template name: " + template.Name + "\n"; templateList += "Description: " + template.Description + "\n"; #endregion #region "VarCount" LanguageResourceBundle bundle = template.LanguageResourceBundles[0]; templateList += "Number of variables in template: " + bundle.Variables.Count.ToString() + "\n\n"; #endregion } MessageBox.Show(templateList, "Available language resources remplates"); }
When creating server TMs you can specify a language resource template. The TM will then 'inherit' the language resources (e.g. variable lists) defined in the template. Imagine that you want to know which server TMs use a particular template. To do this implement a function called GetTmsForTemplate, which takes the translation provider server as and the language resources template name as parameters. First, retrieve the template that you want to select. The template can be referenced using the template name:
ServerBasedLanguageResourcesTemplate template = tmServer.GetLanguageResourcesTemplate(templateName, LanguageResourcesTemplateProperties.All);
string tmList = string.Empty; foreach (ServerBasedTranslationMemory tm in template.TranslationMemories) { tmList += tm.Name + "\n"; } MessageBox.Show(tmList);
public void GetTmsForTemplate(TranslationProviderServer tmServer, string templateName) { #region "SelectTemplate" ServerBasedLanguageResourcesTemplate template = tmServer.GetLanguageResourcesTemplate(templateName, LanguageResourcesTemplateProperties.All); #endregion #region "LoopTms" string tmList = string.Empty; foreach (ServerBasedTranslationMemory tm in template.TranslationMemories) { tmList += tm.Name + "\n"; } MessageBox.Show(tmList); #endregion }
The next task will be to create a new language resources template on the server. Start by adding a function called CreateTemplate, which takes the translation provider server as parameter. Create a template object on the server and assign the template name and an (optional) description by setting the corresponding properties:
ServerBasedLanguageResourcesTemplate template = new ServerBasedLanguageResourcesTemplate(tmServer); template.Name = "Sample Language Resources Template"; template.Description = "Language Resources template created through API";
LanguageResourceBundle variables = new LanguageResourceBundle(CultureInfo.GetCultureInfo("en-US")); variables.Variables.Add("SDL Trados Studio 2009"); variables.Variables.Add("SDL MultiTerm 2009");
LanguageResourceBundle abbreviations = new LanguageResourceBundle(CultureInfo.GetCultureInfo("en-US")); abbreviations.Abbreviations.Add("hr."); abbreviations.Abbreviations.Add("cont.");
Abbreviations are case-sensitive. |
template.LanguageResourceBundles.Add(variables); template.LanguageResourceBundles.Add(abbreviations);
template.Save();
MessageBox.Show("Unsaved changes? " + template.IsDirty.ToString());template.Delete();
public void CreateTemplate(TranslationProviderServer tmServer) { #region "TemplateProps" ServerBasedLanguageResourcesTemplate template = new ServerBasedLanguageResourcesTemplate(tmServer); template.Name = "Sample Language Resources Template"; template.Description = "Language Resources template created through API"; #endregion #region "variables" LanguageResourceBundle variables = new LanguageResourceBundle(CultureInfo.GetCultureInfo("en-US")); variables.Variables.Add("SDL Trados Studio 2009"); variables.Variables.Add("SDL MultiTerm 2009"); #endregion #region "abbreviations" LanguageResourceBundle abbreviations = new LanguageResourceBundle(CultureInfo.GetCultureInfo("en-US")); abbreviations.Abbreviations.Add("hr."); abbreviations.Abbreviations.Add("cont."); #endregion #region "AddResources" template.LanguageResourceBundles.Add(variables); template.LanguageResourceBundles.Add(abbreviations); #endregion #region "save" template.Save(); MessageBox.Show("Unsaved changes? " + template.IsDirty.ToString()); #endregion #region "delete" template.Delete(); #endregion }
The complete class should look as shown below:
namespace Sdl.SDK.LanguagePlatform.Samples.TmAutomation { using System.Globalization; using System.Windows.Forms; using Sdl.LanguagePlatform.TranslationMemoryApi; public class ServerLanguageResourceTemplates { #region "get" public void GetTemplates(TranslationProviderServer tmServer) { #region "LoopTemplates" string templateList = string.Empty; foreach (ServerBasedLanguageResourcesTemplate template in tmServer.GetLanguageResourcesTemplates(LanguageResourcesTemplateProperties.All)) #endregion { #region "info" templateList += "Template name: " + template.Name + "\n"; templateList += "Description: " + template.Description + "\n"; #endregion #region "VarCount" LanguageResourceBundle bundle = template.LanguageResourceBundles[0]; templateList += "Number of variables in template: " + bundle.Variables.Count.ToString() + "\n\n"; #endregion } MessageBox.Show(templateList, "Available language resources remplates"); } #endregion #region "GetTmsForTemplate" public void GetTmsForTemplate(TranslationProviderServer tmServer, string templateName) { #region "SelectTemplate" ServerBasedLanguageResourcesTemplate template = tmServer.GetLanguageResourcesTemplate(templateName, LanguageResourcesTemplateProperties.All); #endregion #region "LoopTms" string tmList = string.Empty; foreach (ServerBasedTranslationMemory tm in template.TranslationMemories) { tmList += tm.Name + "\n"; } MessageBox.Show(tmList); #endregion } #endregion #region "CreateTemplate" public void CreateTemplate(TranslationProviderServer tmServer) { #region "TemplateProps" ServerBasedLanguageResourcesTemplate template = new ServerBasedLanguageResourcesTemplate(tmServer); template.Name = "Sample Language Resources Template"; template.Description = "Language Resources template created through API"; #endregion #region "variables" LanguageResourceBundle variables = new LanguageResourceBundle(CultureInfo.GetCultureInfo("en-US")); variables.Variables.Add("SDL Trados Studio 2009"); variables.Variables.Add("SDL MultiTerm 2009"); #endregion #region "abbreviations" LanguageResourceBundle abbreviations = new LanguageResourceBundle(CultureInfo.GetCultureInfo("en-US")); abbreviations.Abbreviations.Add("hr."); abbreviations.Abbreviations.Add("cont."); #endregion #region "AddResources" template.LanguageResourceBundles.Add(variables); template.LanguageResourceBundles.Add(abbreviations); #endregion #region "save" template.Save(); MessageBox.Show("Unsaved changes? " + template.IsDirty.ToString()); #endregion #region "delete" template.Delete(); #endregion } #endregion } }