aboutsummaryrefslogtreecommitdiffhomepage
path: root/misc/get_ui_language.php
blob: 712b6c5817a16613b50bedc479a14dc8aae33ba4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<?php

function get_ui_language(?array $possibleLanguages = null): string {
    if ($possibleLanguages == null) {
        $possibleLanguages = array_map(function ($path) {
            $parts = explode('/', $path);
            return str_replace('.json', '', $parts[count($parts) - 1]);
        }, glob(__DIR__ . '/../locale/*.json'));
    }

    if (!isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
        return $possibleLanguages[0];
    }

    $accepts = array_map(
        fn($spec) => str_replace('-', '_', explode(';', $spec)[0]),
        explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE'])
    );

    foreach ($accepts as $alang) {
        foreach ($possibleLanguages as $candidate) {
            if (str_starts_with(strtolower($candidate), strtolower($alang))) {
                return $candidate;
            }
        }
    }

    return $possibleLanguages[0];
}