private void btnNew_Click(object sender, EventArgs e)
 {
   if (CheckSave())
   {
     NewLanguageDialog newlanguage = new NewLanguageDialog(_languageList);
     if (newlanguage.ShowDialog() == DialogResult.OK)
     {
       _languageList.Add(newlanguage.Selected);
       DrawLanguageList(newlanguage.Selected.Name);
       _targetStrings = new StringFile();
       _targetStrings._languageName = newlanguage.Selected.Name;
       _targetStrings._sections = new List<StringSection>();
       cbLanguages_SelectedIndexChanged(this, new EventArgs());
     }
   }
 }
    private void cbLanguages_SelectedIndexChanged(object sender, EventArgs e)
    {
      if (cbLanguages.SelectedIndex != 0 && cbLanguages.SelectedIndex != _currentLanguage)
      {
        if (CheckSave())
        {
          LanguageInfo info = _languageList[cbLanguages.SelectedIndex - 1];
          _targetStrings = LoadStrings(_stringPath, info.Name);

          BuildMissingList();
          ColourMissingSections();
          SetTargetSection();
          BuildEditList();
          DrawTargetList();
          btnSave.Enabled = false;
          _modifiedSection = false;
          _currentLanguage = cbLanguages.SelectedIndex;
        }
      }
      cbLanguages.SelectedIndex = _currentLanguage;
    }
    private void LoadDefaultStrings()
    {
      _strings = new LocalisationStrings(_stringPath);
      _defaultStrings = LoadStrings(_stringPath, "en");

      // Get Available language list
      _languageList = new List<LanguageInfo>();
      foreach (CultureInfo language in _strings.GetAvailableLanguages())
      {
        if (language.Name != "en")
        {
          LanguageInfo langInfo = new LanguageInfo(language);
          _languageList.Add(langInfo);

        }
      }

      DrawLanguageList(null);

      // Build section trees
      treeSections.Nodes.Clear();
     
      tvSections.Nodes.Clear();
      foreach (StringSection section in _defaultStrings.Sections)
      {
        treeSections.Nodes.Add(section.SectionName);
        tvSections.Nodes.Add(section.SectionName);
      }
    }
 private void btnNewStrings_Click(object sender, EventArgs e)
 {
   _defaultStrings = new StringFile();
   _defaultStrings._sections = new List<StringSection>();
   _defaultStrings._languageName = "en";
   tabsModes.Controls[(int)Tabs.Create].Enabled = true;
   tabsModes.SelectedIndex = (int)Tabs.Create;
 }
 /// <summary>
 /// Saves the given <paramref name="stringFile"/> to an xml file formated as "strings_<paramref name="language"/>.xml"
 /// in the specified <paramref name="directory"/>.
 /// </summary>
 /// <param name="stringFile">The <see cref="StringFile"/> to save.</param>
 /// <param name="directory">The directory to save the <paramref name="stringFile"/> to.</param>
 /// <param name="language">The language of the <see cref="StringFile"/>.</param>
 /// <returns>Whether the <see cref="StringFile"/> was saved.</returns>
 private static bool SaveStrings(StringFile stringFile, string directory, string language)
 {
   string filename = "strings_" + language + ".xml";
   string path = Path.Combine(directory, filename);
   /// Make a backup of the current languagefile.
   if (File.Exists(path + ".bak"))
     File.Delete(path + ".bak");
   if (File.Exists(path))
     File.Move(path, path + ".bak");
   /// Serialize the StringFile
   try
   {
     XmlSerializer s = new XmlSerializer(typeof(StringFile));
     XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
     ns.Add("", "");
     using (XmlTextWriter writer = new XmlTextWriter(new StreamWriter(path)))
     {
       writer.Formatting = Formatting.Indented;
       s.Serialize(writer, stringFile, ns);
     }
     return true;
   }
   catch (Exception)
   {
     return false;
   }
 }