Skip to content

Commit

Permalink
语言相关4
Browse files Browse the repository at this point in the history
  • Loading branch information
name committed Jan 1, 2021
1 parent eb4cbe9 commit 6404a62
Show file tree
Hide file tree
Showing 16 changed files with 113 additions and 44 deletions.
4 changes: 0 additions & 4 deletions language/en_US.js

This file was deleted.

5 changes: 0 additions & 5 deletions language/en_US.php

This file was deleted.

2 changes: 2 additions & 0 deletions language/zh-CN.php
@@ -0,0 +1,2 @@
<?php
$language = [];
2 changes: 2 additions & 0 deletions language/zh-HK.php
@@ -0,0 +1,2 @@
<?php
include 'zh-TW.php';
2 changes: 2 additions & 0 deletions language/zh-SG.php
@@ -0,0 +1,2 @@
<?php
$language = [];
5 changes: 5 additions & 0 deletions language/zh-TW.php
@@ -0,0 +1,5 @@
<?php
$language = [
'登录' => '登入',
'退出' => '登出',
];
7 changes: 2 additions & 5 deletions static/admin/js/aws_admin.js
Expand Up @@ -364,12 +364,9 @@ AWS.G =

function _t(string, replace)
{
if (typeof (aws_lang) != 'undefined')
if (window.aws_lang && window.aws_lang[string])
{
if (typeof (aws_lang[string]) != 'undefined')
{
string = aws_lang[string];
}
string = aws_lang[string];
}

if (replace)
Expand Down
7 changes: 2 additions & 5 deletions static/js/aws.js
Expand Up @@ -1619,12 +1619,9 @@ AWS.Init =

function _t(string, replace)
{
if (typeof (aws_lang) != 'undefined')
if (window.aws_lang && window.aws_lang[string])
{
if (typeof (aws_lang[string]) != 'undefined')
{
string = aws_lang[string];
}
string = aws_lang[string];
}

if (replace)
Expand Down
Empty file added static/language/zh-CN.js
Empty file.
4 changes: 4 additions & 0 deletions static/language/zh-HK.js
@@ -0,0 +1,4 @@

var aws_lang = {
"确定": "好",
};
Empty file added static/language/zh-SG.js
Empty file.
4 changes: 4 additions & 0 deletions static/language/zh-TW.js
@@ -0,0 +1,4 @@

var aws_lang = {
"确定": "好",
};
8 changes: 4 additions & 4 deletions system/aws_controller.inc.php
Expand Up @@ -72,9 +72,9 @@ public function __construct($process_setup = true)
'css/link.css',
));

if (defined('SYSTEM_LANG'))
if ($lang = AWS_APP::lang()->get_language())
{
TPL::import_js(base_url() . '/language/' . SYSTEM_LANG . '.js');
TPL::import_js('language/' . $lang . '.js');
}

// 引入系统 JS 文件
Expand Down Expand Up @@ -171,9 +171,9 @@ public function __construct()

TPL::import_clean();

if (defined('SYSTEM_LANG'))
if ($lang = AWS_APP::lang()->get_language())
{
TPL::import_js(base_url() . '/language/' . SYSTEM_LANG . '.js');
TPL::import_js('language/' . $lang . '.js');
}

TPL::import_js(array(
Expand Down
6 changes: 6 additions & 0 deletions system/config.inc.php.sample.php
Expand Up @@ -16,6 +16,12 @@

define('G_ERROR_REPORTING', E_ALL & ~E_NOTICE & ~E_STRICT & ~E_WARNING);

// 指定语言, 或根据 Accept-Language 自动选择
//define('G_SYSTEM_LANG', 'zh-CN');

// 预设语言
//define('G_DEFAULT_LANG', 'zh-TW');

// 定义 Cookies 作用域
define('G_COOKIE_DOMAIN', '');

Expand Down
100 changes: 80 additions & 20 deletions system/core/lang.php
Expand Up @@ -14,34 +14,98 @@

class core_lang
{
private $lang = array();
private $messages = [];
private $lang = null;

public function __construct()
{
if (!defined('SYSTEM_LANG'))
if (defined('G_SYSTEM_LANG') AND !!G_SYSTEM_LANG)
{
return false;
$this->init_language(G_SYSTEM_LANG);
return;
}

if (SYSTEM_LANG == '')
$preferred = $this->parse_accept_language();
foreach ($preferred as $lang)
{
return false;
if ($this->init_language($lang))
{
return;
}
}

if (defined('G_DEFAULT_LANG') AND !!G_DEFAULT_LANG)
{
$this->init_language(G_DEFAULT_LANG);
return;
}
}

private function parse_accept_language($limit = 10)
{
$result = [];

$accept_language = $_SERVER['HTTP_ACCEPT_LANGUAGE'] ?? null;
if (!$accept_language)
{
return $result;
}

$i = 0;
$locales = explode(',', $accept_language, $limit);
foreach ($locales as $locale)
{
$i++;
if (!$locale)
{
continue;
}
if ($i == $limit)
{
$locale = explode(',', $locale, 2)[0]; // 丢弃超出 $limit
}
$locale = explode(';', $locale, 2)[0]; // 偷懒不处理 q=
$locale = trim($locale);
if (!$locale)
{
continue;
}
$result[] = $locale;
}

$language_file = ROOT_PATH . 'language/' . SYSTEM_LANG . '.php';
return $result;
}

if (file_exists($language_file))
private function init_language($lang)
{
if (!is_string($lang))
{
require $language_file;
return false;
}

if (is_array($language))
$language_file = ROOT_PATH . 'language/' . $lang . '.php';
if (!file_exists($language_file))
{
$this->lang = $language;
return false;
}

require $language_file;
if (!is_array($language))
{
return false;
}

$this->messages = $language;
$this->lang = $lang;
return true;
}

public function get_language()
{
return $this->lang;
}

public function translate($string, $replace = null, $display = false)
public function translate($string, $replace = null)
{
$search = '%s';

Expand All @@ -55,19 +119,14 @@ public function translate($string, $replace = null, $display = false)
};
}

if ($translate = $this->lang[trim($string)] ?? null)
if ($translate = $this->messages[trim($string)] ?? null)
{
if (isset($replace))
{
$translate = str_replace($search, $replace, $translate);
}

if (!$display)
{
return $translate;
}

echo $translate;
return $translate;
}
else
{
Expand All @@ -80,8 +139,9 @@ public function translate($string, $replace = null, $display = false)
}
}

public function _t($string, $replace = null, $display = false)
public function _t($string, $replace = null)
{
return $this->translate($string, $replace, $display);
return $this->translate($string, $replace);
}

}
1 change: 0 additions & 1 deletion system/init.php
Expand Up @@ -16,7 +16,6 @@

define('IN_ANWSION', TRUE);
define('ENVIRONMENT_PHP_VERSION', '7.0.0');
//define('SYSTEM_LANG', 'en_US');

if (version_compare(PHP_VERSION, ENVIRONMENT_PHP_VERSION, '<'))
{
Expand Down

0 comments on commit 6404a62

Please sign in to comment.