<?php
if ( ! defined( 'ABSPATH' ) ) { exit; }

/**
 * 3. parti kütüphaneler (Select2, Flatpickr) için otomatik dil dosyası yükleme.
 * Yeni dil eklendiğinde sadece dosyaları vendor/ klasörüne atmak yeterli.
 */
class KNSDD_Vendor_I18n {

    /**
     * Select2 dil dosyasını yükler (varsa)
     * 
     * @param string $lang Dil kodu (tr, de, es, fr, it vb.)
     */
    public static function enqueue_select2_locale( $lang ) {
        if ( empty( $lang ) || $lang === 'en' ) {
            return; // İngilizce varsayılan, dosya gerekmez
        }

        $file_path = KNSDD_PLUGIN_DIR . "assets/js/vendor/select2-{$lang}.js";
        
        if ( file_exists( $file_path ) ) {
            wp_enqueue_script(
                "select2-i18n-{$lang}",
                KNSDD_PLUGIN_URL . "assets/js/vendor/select2-{$lang}.js",
                array( 'jquery', 'select2-js' ),
                '4.1.0-rc.0',
                true
            );
        }
    }

    /**
     * Flatpickr dil dosyasını yükler (varsa)
     * 
     * @param string $lang Dil kodu (tr, de, es, fr, it vb.)
     */
    public static function enqueue_flatpickr_locale( $lang ) {
        if ( empty( $lang ) || $lang === 'en' ) {
            return; // İngilizce varsayılan, dosya gerekmez
        }

        $file_path = KNSDD_PLUGIN_DIR . "assets/js/vendor/flatpickr-{$lang}.js";
        
        if ( file_exists( $file_path ) ) {
            wp_enqueue_script(
                "flatpickr-{$lang}",
                KNSDD_PLUGIN_URL . "assets/js/vendor/flatpickr-{$lang}.js",
                array( 'flatpickr-js' ),
                '4.6.13',
                true
            );
        }
    }

    /**
     * Mevcut locale'den dil kodunu çıkarır (ilk 2 karakter)
     * 
     * @return string Dil kodu (tr, de, es, en vb.)
     */
    public static function get_current_lang() {
        $locale = method_exists( 'KNSDD_I18n', 'determine_locale' ) 
            ? KNSDD_I18n::determine_locale() 
            : ( function_exists( 'get_user_locale' ) ? get_user_locale() : get_locale() );
        
        return substr( $locale, 0, 2 );
    }

    /**
     * Hem Select2 hem Flatpickr için dil dosyalarını yükler
     * 
     * @param bool $include_select2 Select2 dil dosyasını yükle (varsayılan: true)
     * @param bool $include_flatpickr Flatpickr dil dosyasını yükle (varsayılan: true)
     */
    public static function enqueue_vendor_locales( $include_select2 = true, $include_flatpickr = true ) {
        $lang = self::get_current_lang();

        if ( $include_select2 ) {
            self::enqueue_select2_locale( $lang );
        }

        if ( $include_flatpickr ) {
            self::enqueue_flatpickr_locale( $lang );
        }
    }
}
