// executed when the menu command is clicked void MenuItemCallback(object sender, EventArgs e) { if (!csRange.HasValue) { return; } var range = csRange.Value; // get the text in the range var text = VsUtils.GetTextForTextView(VsUtils.GetActiveTextView(), range.topLine, range.topCol, range.bottomLine, range.bottomCol); // default values resource file var resFile = Resourcer.GetResourcePath(Resourcer.GetStringsResName()); string normalized = Strings.Normalize(text); bool resourceExisted = StringsXMLEditor.ContainsValue(resFile, normalized); var result = resourceExisted ? // if a key with this value already exists, use it new KeyValuePair <string, string>(StringsXMLEditor.GetKeyByValue(resFile, normalized), normalized) : // else, prompt a new dialog asking for a key ExtractStringCmdForm.PromptDialog(resFile, normalized); // if the result has value, replace the string with the method call if (result.HasValue) // replace the old string with the new method call { ((TextDocument)VsUtils.GetDTE().ActiveDocument.Object()) .ReplacePattern(text, Resourcer.AddString( result.Value, VsUtils.GetActiveDocumentLanguage() == LANGUAGE_XAML, resourceExisted)); } }
void addTranslationLL_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { var result = InputTextBox.Show("Enter the locale code you wish to use for your new translation", "Enter locale code", "es-ES", 5); if (string.IsNullOrEmpty(result)) { statusCSL.SetWarn("Adding locale operation cancelled"); } else // if the result is not null, add it { addTranslation(Resourcer.GetStringsResName(result)); } }
// ensure the strings.xml file exists public static void EnsureStringResources(Project project = null) { if (project == null) { project = VsUtils.GetCurrentProject(); } var resFile = Resourcer.GetResourcePath(Resourcer.GetStringsResName()); if (!File.Exists(resFile)) // if the file doesn't exist, create it { StringsXMLEditor.CreateDocument(resFile); } VsUtils.AddFileIfUnexisting(VsUtils.GetCurrentProject(), resFile); }