/// <summary> /// Retrieves the key on depends on the language /// </summary> /// <param name="language">"FR", "EN" or "ES"</param> /// <param name="key">Key of the label</param> /// <param name="parameters">list of parameters - null or empty if you want the label without parameters</param> /// <returns></returns> private string GetDefaultLabel(string language, string key, params object[] parameters) { if (!_defaults.ContainsKey(key.Trim())) { return(key.Trim()); } LanguageLabel currentLabel = _defaults[key.Trim()]; if (currentLabel == null) { return(key); } if (!currentLabel.Languages.ContainsKey(language.Trim())) { return(key); } if (parameters == null || parameters.Count() == 0) { return(currentLabel.Languages[language.Trim()]); } return(Interpolation(language, currentLabel.Languages[language.Trim()], parameters)); }
/// <summary> /// Declare a new label into the multilingual dictionary (in the default dictionary) /// </summary> /// <param name="key"></param> /// <param name="FR"></param> /// <param name="EN"></param> /// <param name="comment"></param> private void DeclareDefaultLabel(string key, string FR, string EN, string comment) { if (key == null) { return; } LanguageLabel newLabel = new LanguageLabel(FR, EN, comment); _defaults[key.Trim()] = newLabel; }
/// <summary> /// Declare a new label into the multilingual dictionary /// </summary> /// <param name="key"></param> /// <param name="FR"></param> /// <param name="EN"></param> /// <param name="comment"></param> public LanguageLabel DeclareLabel(string key, string FR, string EN, string comment) { if (key == null) { return(null); } LanguageLabel newLabel = new LanguageLabel(FR, EN, comment); _labels[key.Trim()] = newLabel; return(newLabel); }
/// <summary> /// Load once all languages and all labels /// </summary> /// <param name="database"></param> /// <param name="customerId"></param> public void Load(DatabaseContext database, int customerId) { if (database == null) { Error("No database defined ... unable to load all labels into the multilingual dictionary"); return; } // Remove all existing labels if (_labels.Count > 0) { Debug("Reloading labels ..."); _labels.Clear(); } else { Debug("Loading labels ..."); } // Load all labels and add it into the manager try { int i = 0; foreach (LanguageRecord label in LanguageManager.GetInstance(database, customerId).GetLabels(customerId)) { LanguageLabel newLabel = DeclareLabel(label.Key, label.FR, label.EN, label.Comment); if (newLabel == null) { continue; } i++; } Debug($"{i} labels loaded"); } catch (System.Exception ex) { Exception("Unable to load all labels", ex); } }
/// <summary> /// Update or create a label into the dictionary /// </summary> /// <param name="language"></param> /// <param name="key"></param> /// <param name="label"></param> /// <param name="comment"></param> public void SetLabel(string language, string key, string label, string comment = "") { if (key == null || language == null) { return; } if (!_labels.ContainsKey(key.Trim())) { _labels[key.Trim()] = new LanguageLabel(comment); return; } LanguageLabel currentLabel = _labels[key.Trim()]; if (currentLabel == null) { return; } currentLabel.SetLabel(language, label, comment); }
/// <summary> /// Retrieves the key on depends on the language /// </summary> /// <param name="language">"FR", "EN" or "ES"</param> /// <param name="key">Key of the label</param> /// <param name="parameters">list of parameters - null or empty if you want the label without parameters</param> /// <returns></returns> public string GetLabel(string language, string key, params object[] parameters) { if (key == null) { return(string.Empty); } if (language == null) { return(GetLabel(DefaultLanguage, key, parameters)); } if (!_labels.ContainsKey(key.Trim())) { return(GetDefaultLabel(language, key, parameters)); } LanguageLabel currentLabel = _labels[key.Trim()]; if (currentLabel == null) { return(GetDefaultLabel(language, key, parameters)); } if (!currentLabel.Languages.ContainsKey(language.Trim())) { return(key); } if (parameters == null || parameters.Count() == 0) { return(currentLabel.Languages[language.Trim()]); } return(Interpolation(language, currentLabel.Languages[language.Trim()], parameters)); }