<?php

if (!function_exists('translation')) {
    function translation($id, $default = null, $parameters = array(), $domain = 'messages', $locale = null)
    {
        if (!translator()->has($id, $locale) && !empty($default)) {
            return $default;
        } else {
            return trans($id, $parameters, $domain, $locale);
        }
    }
}

if (!function_exists('getAvailableLanguages')) {
    function getAvailableLanguages()
    {
        return LaravelLocalization::getSupportedLocales();
    }
}

if (!function_exists('getAvailableLanguageCodes')) {
    function getAvailableLanguageCodes()
    {
        $langs =  LaravelLocalization::getSupportedLocales();
        return array_keys($langs);
    }
}

if (!function_exists('getActiveLanguage')) {
    function getActiveLanguage()
    {
        return LaravelLocalization::getCurrentLocale();
    }
}

if (!function_exists('getDefaultLanguage')) {
    function getDefaultLanguage()
    {
        return LaravelLocalization::getDefaultLocale();
    }
}

if (!function_exists('generateLangRules')) {
    function generateLangRules($rules, $locales, $subField = null)
    {
        $langRules = array();
        foreach ($rules as $field => $rule) {
            foreach ($locales as $locale) {
                if ($subField) {
                    $langRules[$field . '.' . $locale . '.' . $subField] = $rule;
                } else {
                    $langRules[$field . '.' . $locale] = $rule;
                }
            }
        }
        return $langRules;
    }
}

if (!function_exists('generateLangLabels')) {
    function generateLangLabels($field, $label, $locales, $subField = null)
    {
        $labels = array();
        foreach ($locales as $locale) {
            if ($subField) {
                $labels[$field . '.' . $locale . '.' . $subField] = $label;
            } else {
                $labels[$field . '.' . $locale] = $label;
            }
        }

        return $labels;
    }
}

if (!function_exists('getLangField')) {
    function getLangField($model, $field, $lang)
    {
        if (!$model || !$model->languages) {
            return '';
        }
        $modelLanguages = $model->languages;
        foreach ($modelLanguages as $modelLanguage) {
            if ($modelLanguage->language_id == $lang) {
                return $modelLanguage->$field;
            }
        }
        return '';
    }
}

if (!function_exists('lang_url')) {
    function lang_url($url = null, $locale = null)
    {

        $langUrl = LaravelLocalization::getLocalizedURL($locale, $url);
        return rtrim($langUrl, '/');
    }
}
