public virtual string Translate(RouteData routeData, string text) { if (routeData == null) throw new ArgumentNullException("routeData"); if (string.IsNullOrEmpty(text)) throw new ArgumentNullException("text"); if (!_repository.Exists(CultureInfo.CurrentUICulture)) { //use english as default CloneDefaultCulture(); } var textToSay = ""; var uri = ViewPromptKey.GetViewPath(routeData); var id = new ViewPromptKey(uri, text); var prompt = _repository.GetPrompt(CultureInfo.CurrentUICulture, id); if (prompt == null) { textToSay = LoadCommonPrompt(text); if (textToSay == null) _repository.CreatePrompt(CultureInfo.CurrentUICulture, uri, text, ""); } else textToSay = prompt.TranslatedText; return string.IsNullOrEmpty(textToSay) ? FormatMissingPrompt(text) : textToSay; }
/// <summary> /// Translate a text prompt /// </summary> /// <param name="viewPath">Virtual path to the view, so that we can identify layouts and request common prompts.</param> /// <param name="routeData">Used to lookup the view location</param> /// <param name="text">Text to translate</param> /// <returns> /// String if found; otherwise null. /// </returns> public virtual string Translate(string viewPath, RouteData routeData, string text) { if (routeData == null) throw new ArgumentNullException("routeData"); if (string.IsNullOrEmpty(text)) throw new ArgumentNullException("text"); if (!_repository.Exists(CultureInfo.CurrentUICulture)) { //use english as default CloneDefaultCulture(); } var textToSay = ""; string uri = ViewPromptKey.GetViewPath(viewPath, routeData); /* uri = viewPath.ToLower().Contains("/views/shared/") ? viewPath.TrimStart('~').Remove(viewPath.LastIndexOf('/')) : ViewPromptKey.GetViewPath(routeData); */ var id = new ViewPromptKey(uri, text); var prompt = _repository.GetPrompt(CultureInfo.CurrentUICulture, id); if (prompt == null) { textToSay = LoadCommonPrompt(text); if (textToSay == null) _repository.CreatePrompt(CultureInfo.CurrentUICulture, uri, text, ""); } else textToSay = prompt.TranslatedText; return string.IsNullOrEmpty(textToSay) ? FormatMissingPrompt(text) : textToSay; }
/// <summary> /// Load a common prompt /// </summary> /// <param name="text">Text to translate</param> /// <returns>Translation if found; otherwise null</returns> /// <remarks>Used to avoid duplications of prompts.</remarks> protected virtual string LoadCommonPrompt(string text) { var key = new ViewPromptKey("CommonPrompts", text); var prompt = _repository.GetPrompt(CultureInfo.CurrentUICulture, key); return prompt == null ? null : prompt.TranslatedText; }
/// <summary> /// Indicates whether the current object is equal to another object of the same type. /// </summary> /// <returns> /// true if the current object is equal to the <paramref name="other"/> parameter; otherwise, false. /// </returns> /// <param name="other">An object to compare with this object.</param> public bool Equals(ViewPromptKey other) { return other != null && other._id.Equals(_id); }