/
MessagesCatalogue.php
69 lines (63 loc) · 1.83 KB
/
MessagesCatalogue.php
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
62
63
64
65
66
67
68
69
<?php
namespace Nexendrie\Translation\Loaders;
use Nette\Utils\Finder,
Nexendrie\Translation\FolderNotSetException;
/**
* MessagesCatalogue
* Loads texts from compiled (PHP) messages catalogue
*
* @author Jakub Konečný
*/
class MessagesCatalogue extends PhpLoader {
protected function loadDomain($name) {
}
/**
* Load all texts
*
* @return void
* @throws FolderNotSetException
*/
protected function loadTexts() {
if(!count($this->folders)) {
throw new FolderNotSetException("Folder for translations was not set.");
}
$this->resources = $texts = [];
$extension = $this->extension;
$lang = $this->lang;
$files = Finder::findFiles("catalogue.$lang.$extension")->from($this->folders);
/** @var \SplFileInfo $file */
foreach($files as $file) {
$texts = array_merge($texts, $this->parseFile($file->getPathname()));
if(isset($texts["__resources"])) {
$this->resources = array_merge($this->resources, $texts["__resources"]);
unset($texts["__resources"]);
} else {
$this->resources["*"][] = $file->getPathname();
}
}
$this->texts = $texts;
$this->loadedLang = $this->lang;
}
/**
* @return string[]
* @throws FolderNotSetException
*/
function getAvailableLanguages() {
if(!count($this->folders)) {
throw new FolderNotSetException("Folder for translations was not set.");
}
$languages = [];
$extension = $this->extension;
$files = Finder::findFiles("catalogue.*.$extension")->from($this->folders);
/** @var \SplFileInfo $file */
foreach($files as $file) {
$filename = $file->getBasename(".$extension");
$lang = substr($filename, strpos($filename, ".") + 1);
if(!in_array($lang, $languages)) {
$languages[] = $lang;
}
}
return $languages;
}
}
?>