/**
 * @author schukai GmbH
 */

import {BaseWithOptions} from "../types/basewithoptions.mjs";
import {Locale} from "./locale.mjs"
import {Translations} from "./translations.mjs"

export {Provider}

/**
 * A provider makes a translation object available.
 *
 * ```
 * <script type="module">
 * import {Provider} from 'https://cdn.jsdelivr.net/npm/@schukai/monster@latest/source/i18n/provider.mjs';
 * new Provider()
 * </script>
 * ```
 *
 * @since 1.13.0
 * @copyright schukai GmbH
 * @memberOf Monster.I18n
 * @see {@link https://datatracker.ietf.org/doc/html/rfc3066}
 */
class Provider extends BaseWithOptions {

    /**
     * @param {Locale|string} locale
     * @return {Promise}
     */
    getTranslations(locale) {
        return new Promise((resolve, reject) => {
            try {
                resolve(new Translations(locale));
            } catch (e) {
                reject(e);
            }

        });
    }

}