[ Mini Kiebo ]
Server: Windows NT DESKTOP-5B8S0D4 6.2 build 9200 (Windows 8 Professional Edition) i586
Path:
D:
/
Backup
/
14082024
/
Data
/
htdocs
/
htdocs
/
jurnal-kesmas
/
lib
/
pkp
/
classes
/
i18n
/
translation
/
[
Home
]
File: LocaleFile.php
<?php declare(strict_types=1); /** * @defgroup i18n I18N * Implements localization concerns such as locale files, time zones, and country lists. */ /** * @file classes/i18n/translation/LocaleFile.php * * Copyright (c) 2014-2021 Simon Fraser University * Copyright (c) 2000-2021 John Willinsky * Distributed under the GNU GPL v3. For full terms see the file docs/COPYING. * * @class LocaleFile * * @ingroup i18n * * @brief Loads translations from a locale file */ namespace PKP\i18n\translation; use DateInterval; use Exception; use Gettext\Generator\ArrayGenerator; use Gettext\Loader\LoaderInterface; use Gettext\Loader\MoLoader; use Gettext\Loader\PoLoader; use Gettext\Translations; use Illuminate\Support\Facades\Cache; use SplFileInfo; abstract class LocaleFile { /** @var string Max lifetime for the cache, a new cache file is created whenever the translation file is modified */ protected const MAX_CACHE_LIFETIME = '1 year'; /** * Retrieves a suitable loader */ public static function getLoader(string $path): LoaderInterface { return match (strtolower((new SplFileInfo($path))->getExtension())) { 'po' => new PoLoader(), 'mo' => new MoLoader(), default => throw new Exception("There's no suitable gettext loader for this file type") }; } /** * Loads the translations from a file */ public static function loadTranslations(string $path): Translations { return self::getLoader($path)->loadFile($path); } /** * Loads the translations from a file as an array and caches the content physically as a PHP file in order to use the opcache */ public static function loadArray(string $path, bool $useCache = false): array { $loader = fn () => (new ArrayGenerator(['includeEmpty' => false]))->generateArray(static::loadTranslations($path)); $key = __METHOD__ . static::MAX_CACHE_LIFETIME . $path . filemtime($path); return $useCache ? Cache::remember($key, DateInterval::createFromDateString(static::MAX_CACHE_LIFETIME), $loader) : $loader(); } }