protected TextLocal GenerateTextLocal(TextCode textCode, TextLocalModel textLocalModel, List <string> listParams) { TextLocal textLocal = new TextLocal(); textLocal.TextLocalModelId = textLocalModel.Id; // insert params if (listParams != null) { // check the params count // todo: try { textLocal.Text = string.Format(textLocalModel.Text, listParams.ToArray()); } catch { // error! textLocal.Text = textLocalModel.Text; } } else { textLocal.Text = textLocalModel.Text; } return(textLocal); }
public void ChangeCurrentLang_GetTextLocal_ok() { EtagairCore core = Common.CreateCore(RepositConfig); //----Define languages in the current catalog core.Editor.DefineLanguage(LanguageCode.en); // ->becomes the default language core.Editor.DefineLanguage(LanguageCode.fr); // create textCode and translation TextCode tcName = core.Editor.CreateTextCode("Name"); TextLocalModel tl_en_Name = core.Editor.CreateTextLocalModel(LanguageCode.en, tcName, "Name"); TextLocalModel tl_fr_Name = core.Editor.CreateTextLocalModel(LanguageCode.fr, tcName, "Nom"); // create textCode and translation TextCode tcNameToshiba = core.Editor.CreateTextCode("NameToshiba"); core.Editor.CreateTextLocalModel(LanguageCode.en, tcNameToshiba, "Laptop Toshiba Core i7 RAM 8Go HD 1To Win10"); core.Editor.CreateTextLocalModel(LanguageCode.fr, tcNameToshiba, "Ordinateur portable Toshiba Core i7 RAM 8Go DD 1To Win10"); // change the current language from en to fr core.Searcher.SetCurrentLanguage(LanguageCode.fr); // get localized text TextLocal tlNameFound = core.Editor.GenerateTextLocal(tcName); // should be in french Assert.AreEqual(tl_fr_Name.Id, tlNameFound.TextLocalModelId, "the TextLocal Language should be 'en'"); }
/// <summary> /// Dev the language and text data model. /// E: /// P: key=TC:tcName= Value=TC:tcNameToshiba /// </summary> public void ManageLanguagesAndLocalizedText() { EtagairEngine engine = CreateEngine(); Console.WriteLine("Create TextCode, TextLocalModel, and then TextLocal."); //----set defined (activate) language codes in the application engine.Editor.DefineLanguage(LanguageCode.en); engine.Editor.DefineLanguage(LanguageCode.fr); // create localized text for main languages managed in the application TextCode tcName = engine.Editor.CreateTextCode("Name"); engine.Editor.CreateTextLocalModel(LanguageCode.en, tcName, "Name"); engine.Editor.CreateTextLocalModel(LanguageCode.fr, tcName, "Nom"); TextCode tcValueToshiba = engine.Editor.CreateTextCode("ValueToshiba"); engine.Editor.CreateTextLocalModel(LanguageCode.en, tcValueToshiba, "Laptop Toshiba Core i7 RAM 8Go HD 1To Win10"); engine.Editor.CreateTextLocalModel(LanguageCode.fr, tcValueToshiba, "Ordinateur portable Toshiba Core i7 RAM 8Go DD 1To Win10"); // create an entity with one property: key and value are TextCode Entity toshibaCoreI7 = engine.Editor.CreateEntity(); // Add a property to an object: key - value, both are textCode (will be displayed translated depending on the language) engine.Editor.CreateProperty(toshibaCoreI7, tcName, tcValueToshiba); // set the current language, get the localized/translated text engine.Searcher.SetCurrentLanguage(LanguageCode.en); // create/generate the localized/translated text of a textCode in the current language TextLocal tlName = engine.Editor.GenerateTextLocal(tcName); // Output: Name in current language (en): Name Console.WriteLine("Name in current language (en): " + tlName.Text); // create/generate the localized/translated text of a textCode in the specified language TextLocal tlNameFr = engine.Editor.GenerateTextLocal(tcName, LanguageCode.fr); // Output: Name in fr language: Nom Console.WriteLine("Name in fr language: " + tlNameFr.Text); }
public void CreateTextWithOneParam_ParamNotProvided() { EtagairCore core = Common.CreateCore(RepositConfig); //----Define languages in the current catalog core.Editor.DefineLanguage(LanguageCode.en); // ->becomes the default language core.Editor.DefineLanguage(LanguageCode.fr); // create textCode and translation TextCode tcName = core.Editor.CreateTextCode("NameIs", 1); TextLocalModel tl_en_Name = core.Editor.CreateTextLocalModel(LanguageCode.en, tcName, "My name is {0}: "); TextLocalModel tl_fr_Name = core.Editor.CreateTextLocalModel(LanguageCode.fr, tcName, "Mon nom est {0}: "); // get localized text List <string> listParams = new List <string>(); //listParams.Add("Yvan"); TextLocal tlNameFound = core.Editor.GenerateTextLocal(tcName, listParams); // should be in english Assert.AreEqual("My name is {0}: ", tlNameFound.Text, "the TextLocal should include the parameter"); }
public void GetTextLocal_enGB_Get_en() { EtagairCore core = Common.CreateCore(RepositConfig); //----Define languages in the current catalog core.Editor.DefineLanguage(LanguageCode.en); // ->becomes the default language core.Editor.DefineLanguage(LanguageCode.en_GB); // create textCode and translation, only for the en lang TextCode tcName = core.Editor.CreateTextCode("Name"); TextLocalModel tl_en_Name = core.Editor.CreateTextLocalModel(LanguageCode.en, tcName, "Name"); // change the current language from en to en_GB (exp: because the users are in UK) core.Searcher.SetCurrentLanguage(LanguageCode.en_GB); // get localized text TextLocal tlNameFound = core.Editor.GenerateTextLocal(tcName); // en textLocal doesn't exists, so return the en main languageCode textLocal Assert.AreEqual(tl_en_Name.Id, tlNameFound.TextLocalModelId, "the TextLocal Language should be 'en'"); }
/// <summary> /// Dev the language and text data model. /// Ent: /// tc:Name= tc:NameToshiba /// </summary> /// <param name="core"></param> static void CreateLangAndTexts(EtagairCore core) { //----set defined (activate) language codes in the current catalog core.Editor.DefineLanguage(LanguageCode.en); core.Editor.DefineLanguage(LanguageCode.en_GB); core.Editor.DefineLanguage(LanguageCode.en_US); core.Editor.DefineLanguage(LanguageCode.fr); core.Editor.DefineLanguage(LanguageCode.fr_FR); // create localized text for main languages managed in the application TextCode tcName = core.Editor.CreateTextCode("Name"); core.Editor.CreateTextLocalModel(LanguageCode.en, tcName, "Name"); core.Editor.CreateTextLocalModel(LanguageCode.fr, tcName, "Nom"); TextCode tcNameToshiba = core.Editor.CreateTextCode("NameToshiba"); core.Editor.CreateTextLocalModel(LanguageCode.en, tcNameToshiba, "Laptop Toshiba Core i7 RAM 8Go HD 1To Win10"); core.Editor.CreateTextLocalModel(LanguageCode.fr, tcNameToshiba, "Ordinateur portable Toshiba Core i7 RAM 8Go DD 1To Win10"); // set the current language, get the localized/translated text core.Searcher.SetCurrentLanguage(LanguageCode.en_GB); // define a second current language //core.Editor.SetCurrentLang2(LanguageCode.en_GB); // create/generate the localized/translated text of a textCode // the en_GB language doesn't exists so return the main lang (en for en_GB) textLocal: 'Name' TextLocal tlName = core.Editor.GenerateTextLocal(tcName); TextLocal tlNameAgain = core.Editor.GenerateTextLocal(tcName, LanguageCode.en); // todo: gestion des entités avec textes (sur les textCode) dans la langue courante // EntityLoc pour entity Localized? EntityLzd }