Files
BESCMS/dayrui/Fcms/Library/Lang.php
T

104 lines
2.9 KiB
PHP

<?php namespace Phpcmf\Library;
/**
* https://www.besyun.com
* BESCMS
* 本文件是框架系统文件,二次开发时不可以修改本文件,可以通过继承类方法来重写此文件
**/
/**
* 语言包
*/
class Lang {
public $lang;
/**
* 加载自定义语言
*/
public function __construct(...$params) {
$this->lang = [];
if (is_file(MYPATH.'Config/Lang_'.SITE_LANGUAGE.'.php')) {
$this->lang = require MYPATH.'Config/Lang_'.SITE_LANGUAGE.'.php';
}
// 执行插件自己的语言文件
$local = \Phpcmf\Service::Apps();
foreach ($local as $dir => $path) {
if (is_file($path.'install.lock')
&& is_file($path.'Config/Lang_'.SITE_LANGUAGE.'.php')) {
$_data = require $path.'Config/Lang_'.SITE_LANGUAGE.'.php';
if ($_data) {
foreach ($_data as $key => $name) {
$this->lang[$key] = $name;
}
}
}
}
$file = ROOTPATH.'api/language/'.SITE_LANGUAGE.'/lang.php';
if (is_file($file)) {
$lang = require $file;
if ($lang) {
foreach ($lang as $key => $name) {
$this->lang[$key] = $name;
}
}
}
}
/**
* 输出最终语言
*/
public function text($text) {
if (!$text) {
return $text;
}
$text = (string)$text;
if (IS_XRDEV) {
$text = trim($text, '}');
$text = trim($text, '{');
}
if (isset($this->lang[$text])) {
return $this->lang[$text];
} else {
if (IS_XRDEV) {
$this->_save_file($text);
return '{'.$text.'}';
}
// 加载自定义语言文件接口
if (SITE_LANGUAGE != 'zh-cn' && function_exists('my_translate_lang')) {
$rt = call_user_func_array('my_translate_lang', [
$text,
SITE_LANGUAGE,
]);
if ($rt) {
return $rt;
}
}
// 没有找到语言时记录日志中
if (SITE_LANGUAGE != 'zh-cn' && IS_DEV) {
$this->_save_file($text);
}
}
return $text;
}
private function _save_file($text) {
$file = WRITEPATH.'lang_'.SITE_LANGUAGE.'.php';
if (!is_file($file)) {
file_put_contents($file, '<?php return [];');
if (!is_file($file)) {
return;// 创建失败
}
}
$lang_cache = require $file;
if (!isset($lang_cache[$text])) {
$lang_cache[$text] = $text;
file_put_contents($file, '<?php'.PHP_EOL.'// 以下文字需要手动翻译'.PHP_EOL.PHP_EOL.' return '.var_export($lang_cache, true).';');
}
}
}