hiddify.com/overrides/partials/alternate.html
global 2db814702f
Some checks are pending
ci / deploy (push) Waiting to run
Initial commit
2025-03-05 18:05:33 +03:00

108 lines
5.3 KiB
HTML

<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<link href="https://cdn.jsdelivr.net/npm/sweetalert2@11.14.4/dist/sweetalert2.min.css" rel="stylesheet">
<!-- Site language selector -->
<div class="md-header__option">
<div class="md-select">
{% set icon = config.theme.icon.alternate or "material/translate" %}
<button
class="md-header__button md-icon"
aria-label="{{ lang.t('select.language') }}"
>
{% include ".icons/" ~ icon ~ ".svg" %}
</button>
<div class="md-select__inner">
<ul class="md-select__list">
{% for alt in config.extra.alternate %}
<li class="md-select__item">
<a id="langselect-{{alt.lang}}"
href="{{ alt.link | url }}"
hreflang="{{ alt.lang }}"
class="md-select__link"
>
{{ alt.name }}
</a>
</li>
{% if config.theme.language=="en" and alt.lang == "fa" %}
<script>
function detectPersianLanguageOrRegion() {
// List of timezones related to Iran, Afghanistan, and Tajikistan
const relevantTimezones = [
'Asia/Tehran', // Iran
'Asia/Kabul', // Afghanistan
'Asia/Dushanbe' // Tajikistan
];
// Check user languages
const languages = navigator.languages || [navigator.language];
const isPersianLanguage = languages.some(lang => lang.startsWith('fa'));
// Check user timezone
const userTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;
const isRelevantTimezone = relevantTimezones.includes(userTimezone);
// Return the result
return isPersianLanguage || isRelevantTimezone;
}
function getCookie(name) {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) return parts.pop().split(';').shift();
}
// Function to set a cookie
function setCookie(name, value, days) {
const expires = new Date(Date.now() + days * 864e5).toUTCString();
document.cookie = `${name}=${encodeURIComponent(value)}; expires=${expires}; path=/`;
}
const cookieName = "languagePreference"; // Name of the cookie to check
if (!getCookie(cookieName) && detectPersianLanguageOrRegion() && document.location.href.indexOf("fo1rce_lang")<0){
console.log("rrrrr",document.referrer)
if (document.referrer!=null && document.referrer.indexOf("https://hiddify.com")<0 && document.referrer.indexOf(".app.github.dev")<0)
document.location=document.getElementById("langselect-{{alt.lang}}").attributes['href'].value+window.location.hash;
}
if ( 0 &&!getCookie(cookieName) && detectPersianLanguageOrRegion())
Swal.fire({
title: "مشاهده سایت به زبان فارسی؟",
text: "به نظر شما فارسی زبان هستید. آیا میخواهید سایت را به زبان فارسی مشاهده کنید؟",
icon: "warning",
showCancelButton: true,
showDenyButton:true,
confirmButtonText: "فارسی",
denyButtonText:"English",
cancelButtonText: "Cancel",
reverseButtons: true,
// input: "checkbox",
// inputValue: 1,
// inputPlaceholder: `
// Do not show this dialog again
// `,
}).then((result) => {
if (result.isConfirmed) {
document.location=document.getElementById("langselect-{{alt.lang}}").attributes['href'].value;
} else if (result.dismiss === Swal.DismissReason.deny) {
Swal.fire({
title: "Show the dialog again?",
text: "Do you want to always show this dialog to select between english and persian?",
icon: "warning",
showDenyButton: true,
denyButtonText:"Keep this dialog",
confirmButtonText: "Always English"
}).then((result) => {
if (result.isConfirmed) {
setCookie(cookieName, "english", 30); // Set cookie to remember th
};
});
}
});
</script>
{%endif%}
{% endfor %}
</ul>
</div>
</div>
</div>