﻿namespace Stove.StoveSDK
{
    using System;
    using UnityEngine;

    /**
     * Localization provided by the Stove.
     */
    public class Localization
    {
        public enum Language
        {
            /**
             * System language.
             * @since 2.0.0
             */
            System = 0,

            /**
             * English.
             * @since 2.0.0
             */
            English = 1,

            /**
             * Korean.
             * @since 2.0.0
             */
            Korean = 2,

            /**
             * Spanish.
             * @since 2.0.0
             */
            Spanish = 3,

            /**
             * Simplified Chinese.
             * @since 2.0.0
             */
            SimplifiedChinese = 4,

            /**
             * Traditional Chinese.
             * @since 2.0.0
             */
            TraditionalChinese = 5,

            /**
             * German.
             * @since 2.0.0
             */
            German = 6,

            /**
             * French.
             * @since 2.0.0
             */
            French = 7,

            /**
             * Indonesian.
             * @since 2.0.0
             */
            Indonesian = 8,

            /**
             * Italian.
             * @since 2.0.0
             */
            Italian = 9,

            /**
             * Japanese.
             * @since 2.0.0
             */
            Japanese = 10,

            /**
             * Portuguese.
             * @since 2.0.0
             */
            Portuguese = 11,

            /**
             * Russian.
             * @since 2.0.0
             */
            Russian = 12,

            /**
             * Turkish.
             * @since 2.0.0
             */
            Turkish = 13,

            /**
             * Thai.
             * @since 2.0.0
             */
            Thai = 14,

            /**
             * Czech.
             * @since 2.0.0
             */
            Czech = 15,

            /**
             * Malay.
             * @since 2.0.0
             */
            Malay = 16,

            /**
             * Dutch.
             * @since 2.0.0
             */
            Dutch = 17,

            /**
             * Polish.
             * @since 2.0.0
             */
            Polish = 18,

            /**
             * Vietnamese.
             * @since 2.1.0
             */
            Vietnamese = 19,
        };

        /**
         * Fetch set language.
         * @return language. If not set, returns the system language.
         * @see Language
         * @since 2.0.0
         */
        public static Language GetLanguage()
        {
            Debug.Log("Localization.GetLanguage");

            int language = BaseInterface.GetLanguage();

            Debug.Log("Localization.GetLanguage return : " + language);

            return (Language)language;
        }

        /**
         * Set the language in the SDK.
         *
         * The set language is applied to the UI provided by the SDK.
         * @param language Language.
         * @see Language
         * @since 2.0.0
         */
        public static void SetLanguage(Language language)
        {
            Debug.Log("Localization.SetLanguage");
            BaseInterface.SetLanguage(Convert.ToInt32(language));
        }
    }
}
