using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms; 
using System.Collections; 
using System.Collections.Generic;
using System.Text.RegularExpressions; 
using System.Collections.Specialized;


namespace Args
{
    /// \brief Перечисление языков приложения
    public enum language {
        eng
       ,rus
       ,ukr
    }

    /// \brief  класс для хранения версий слов для разных языков
    public class words{
        language lng;
        StringDictionary ru;  // 1
        StringDictionary ua;  // 2

        public language language{
           get{
             return lng;
           }
        
           set {lng = value;}
        
        }

        public words( language lang = language.eng)
        {
            lng = lang;
            ua                =                new StringDictionary();
            ru                =                new StringDictionary();
        }
        /// \brief метод выдает  список языков, поддерживаемых приложением
        public static string list() {  
                   Array all = Enum.GetValues(typeof(language));
           List<string> a =  new List<string>();
           foreach (object i in all)
             a.Add(i.ToString());
           return  String.Join(" ", a);
        }
        /// \brief  метод для конвертации строки в код языка
        public static language parse(string  code) {
               language x = language.eng;
               try {
                 x = (language) Enum.Parse(typeof(language), code);
               }
               catch {
               }
           return  x;
        }                            
            
        public void add(string key, string ruT=null, string uaT=null ){
            try{
               if (uaT != null)
                   ua.Add(key, uaT );
               if (ruT != null)
                   ru.Add(key, ruT );
            }
            catch {
            }
        }


        public string  translate (string key) {
           return trans ( key);
        }

        public string  trans (string key) {
           string rc =   null;
           switch (lng) {                   
             case  language.rus:  rc =  ru[key];  break;
             case  language.ukr:  rc =  ua[key];  break;
           }
           if (rc == null)
             return key;
           return rc;
        }
    }
}