Localize.php
1.5 KB
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
<?php
namespace ACP;
use AC\Asset\Location\Absolute;
use AC\Registerable;
class Localize implements Registerable
{
private const TEXTDOMAIN = 'codepress-admin-columns';
private $location;
public function __construct(Absolute $location)
{
$this->location = $location;
}
public function register(): void
{
add_action('init', [$this, 'localize']);
}
public function localize(): void
{
// prevent the loading of existing translations within the 'wp-content/languages' folder.
unload_textdomain(self::TEXTDOMAIN);
$local = $this->get_local();
$this->load_textdomain($this->location->with_suffix('admin-columns/languages')->get_path(), $local);
$this->load_textdomain($this->location->with_suffix('languages')->get_path(), $local);
}
private function get_local(): string
{
$local = function_exists('determine_locale')
? determine_locale()
: get_user_locale();
return (string)apply_filters('plugin_locale', $local, self::TEXTDOMAIN);
}
/**
* Do no use `load_plugin_textdomain()` because it could prevent
* pro languages from loading when core translation files are found.
*/
private function load_textdomain(string $language_dir, string $local): void
{
$mofile = sprintf(
'%s/%s-%s.mo',
$language_dir,
self::TEXTDOMAIN,
$local
);
load_textdomain(self::TEXTDOMAIN, $mofile);
}
}