<?php

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

function tilfy_dil_al() {
	$opts = get_option( 'tilfy_ayarlar', array() );
	$dil  = ( is_array( $opts ) && ! empty( $opts['dil'] ) ) ? (string) $opts['dil'] : 'tr_TR';
	if ( ! preg_match( '/^[a-z]{2}_[A-Z]{2}$/', $dil ) ) {
		return 'tr_TR';
	}
	return $dil;
}

function tilfy_dil_etiketleri() {
	return array(
		'tr_TR' => 'Türkçe',
		'en_US' => 'English',
	);
}

function tilfy_dil_secenekleri() {
	$secenekler = tilfy_dil_etiketleri();
	$kaynaklar  = array();
	if ( defined( 'WP_LANG_DIR' ) ) {
		$kaynaklar[] = trailingslashit( WP_LANG_DIR ) . 'plugins';
	}
	if ( defined( 'TILFY_YOL' ) ) {
		$kaynaklar[] = TILFY_YOL . 'lang';
	}
	foreach ( $kaynaklar as $lang_dir ) {
		if ( ! is_dir( $lang_dir ) ) {
			continue;
		}
		foreach ( glob( trailingslashit( $lang_dir ) . 'tilfy-*.mo' ) as $dosya ) {
			$kod = str_replace( array( 'tilfy-', '.mo' ), '', basename( $dosya ) );
			if ( preg_match( '/^[a-z]{2}_[A-Z]{2}$/', $kod ) && ! isset( $secenekler[ $kod ] ) ) {
				$secenekler[ $kod ] = $kod;
			}
		}
	}
	return $secenekler;
}

function tilfy_dil_yukle() {
	static $yuklenen = '';
	if ( ! defined( 'TILFY_YOL' ) ) {
		return;
	}
	$locale = tilfy_dil_al();
	if ( $yuklenen === $locale ) {
		return;
	}
	if ( $yuklenen !== '' ) {
		unload_textdomain( 'tilfy' );
	}
	$yuklenen = $locale;

	$adaylar = array();
	if ( defined( 'WP_LANG_DIR' ) ) {
		$adaylar[] = trailingslashit( WP_LANG_DIR ) . 'plugins/tilfy-' . $locale . '.mo';
	}
	$adaylar[] = TILFY_YOL . 'lang/tilfy-' . $locale . '.mo';

	foreach ( $adaylar as $mofile ) {
		if ( is_readable( $mofile ) ) {
			load_textdomain( 'tilfy', $mofile );
			return;
		}
	}

	load_plugin_textdomain( 'tilfy', false, dirname( plugin_basename( TILFY_YOL . 'tilfy.php' ) ) . '/lang' );
}

function tilfy__( $metin ) {
	$metin = (string) $metin;
	if ( $metin === '' ) {
		return '';
	}
	$locale   = tilfy_dil_al();
	$switched = false;
	if ( function_exists( 'switch_to_locale' ) && function_exists( 'determine_locale' ) && $locale !== determine_locale() ) {
		$switched = switch_to_locale( $locale );
	}
	tilfy_dil_yukle();
	$ceviri = $metin;
	if ( function_exists( 'get_translations_for_domain' ) ) {
		$tr = get_translations_for_domain( 'tilfy' );
		if ( is_object( $tr ) && method_exists( $tr, 'translate' ) ) {
			$aday = $tr->translate( $metin );
			if ( is_string( $aday ) && $aday !== '' ) {
				$ceviri = $aday;
			}
		}
	}
	if ( $switched && function_exists( 'restore_previous_locale' ) ) {
		restore_previous_locale();
	}
	return $ceviri;
}

function tilfy_e( $metin ) {
	echo esc_html( tilfy__( $metin ) );
}

function tilfy_esc_attr__( $metin ) {
	return esc_attr( tilfy__( $metin ) );
}

function tilfy_esc_html__( $metin ) {
	return esc_html( tilfy__( $metin ) );
}

add_action( 'init', 'tilfy_dil_yukle', 0 );

if ( defined( 'TILFY_YOL' ) ) {
	require_once TILFY_YOL . 'includes/dil-js.php';
}
