国际化方法配置

This commit is contained in:
qf
2023-05-18 16:44:00 +08:00
parent ca8e33ce2d
commit 38e12aa6bf
38 changed files with 952 additions and 600 deletions

View File

@@ -557,10 +557,74 @@ function getInfoFromClient () {
};
}
};
// 设定语言 fuzzy模糊查询客户端返回的语言
const languageMap = [
{ name: '简体中文', code: 'zh', fuzzy: ['zh', 'zh-Hans', 'zh-'] },
{ name: '繁体中文', code: 'zh', fuzzy: ['zh', 'zh-Hant', 'zh-'] },
{ name: '英语', code: 'en', fuzzy: ['en'] },
{ name: '阿拉伯语', code: 'ar', fuzzy: ['ar','ar-'] },
{ name: '印尼语', code: 'id', fuzzy: ['id', 'in', 'id-', 'in-'] },
{ name: '土耳其语', code: 'tr', fuzzy: ['tr','tr-'] },
];
// 判断当前语言环境
function getLanguageCode(language) {
if (language) {
// language = language.toLowerCase();
for (const item of languageMap) {
// if (item.fuzzy.indexOf(language) !=-1) {
// return item.code;
// }
for (const list of item.fuzzy) {
if (language.indexOf(list) != -1) {
return item.code;
}
}
}
} else {
return 'zh'; // 旧版本返回默认语言
}
}
// 判断国际化参数路径
function fuzzyMatchUpdateQueryStringParameterFun() {
const browser = checkVersion();
if (browser.app) {
if (browser.android) {
console.log('and deviceInfo', JSON.parse(pubInfo.deviceInfo));
let langCode = getLanguageCode(JSON.parse(pubInfo.deviceInfo)["accept-language"]);
history.replaceState(null, null, updateQueryStringParameter(window.location.href, 'lang', langCode));
} else {
setTimeout(function () {
console.log('ios deviceInfo', pubInfo.deviceInfo);
let langCode = getLanguageCode(pubInfo.deviceInfo["accept-language"]);
history.replaceState(null, null, updateQueryStringParameter(window.location.href, 'lang', langCode));
}, 30)
}
} else {
let langCode = getLanguageCode();
history.replaceState(null, null, updateQueryStringParameter(window.location.href, 'lang', langCode));
}
}
// 获取整条url
function updateQueryStringParameter(uri, key, value) {
if (!value) {
return uri;
}
var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i");
var separator = uri.indexOf('?') !== -1 ? "&" : "?";
if (uri.match(re)) {
return uri.replace(re, '$1' + key + "=" + value + '$2');
}
else {
return uri + separator + key + "=" + value;
}
}
// 繁体字转换方法
// fontConvert(true);//调用字体转换函数
// setTimeout(function () {
fontConvert(true);//调用字体转换函数
// fontConvert(true);//调用字体转换函数
// }, 1000)
function fontConvert(fontConvertBool) {
function SconvertT() {//简体转换繁体

View File

@@ -0,0 +1,55 @@
/**
* 初始化当前语言
*/
function initLocalLang () {
const lang = localStorage.getItem('lang')
// if (lang === 'zh' || window.location.href.match('=zh-CN')) {
// console.log("langHandler" + '简体')
// // 将 zh-CN.js中的对象langZhCN设置到window.lang中
// window.lang = langZh-CN
// window.lang.code = 'zh-CN'
// window.lang.defaults = false
// } else
if (lang === 'zh' || window.location.href.match('=zh')) {
console.log("langHandler" + '繁体')
window.lang = langZh
window.lang.code = 'zh'
window.lang.defaults = false
} else if (lang === 'ar' || window.location.href.match('=ar')) {
// 阿拉伯
console.log("langHandler" + '阿拉伯')
window.lang = langAr
window.lang.code = 'ar'
window.lang.defaults = false
} else if (lang === 'en' || window.location.href.match('=en')) {
// 英语
console.log("langHandler" + '英语')
window.lang = langEn
window.lang.code = 'en'
window.lang.defaults = false
} else if (lang === 'id' || window.location.href.match('=id')) {
// 印度尼西亚
console.log("langHandler" + '印尼')
window.lang = langId
window.lang.code = 'Id'
window.lang.defaults = false
}else if (lang === 'tr' || window.location.href.match('=tr')) {
// 土耳其
console.log("langHandler" + '土耳其')
window.lang = langTr
window.lang.code = 'Tr'
window.lang.defaults = false
} else {
console.log("langHandler" + '默认')
window.lang = langZh
window.lang.code = null
window.lang.defaults = true
}
window.lang.replace = (Lang, defaultText) => {
if (Lang) {
return Lang
}
return defaultText
}
}

View File

@@ -2,8 +2,7 @@
body,
html {
height: 100%;
background: #F3F5FA;
}
background: #F3F5FA; }
body .logingActive,
html .logingActive {
position: fixed;
@@ -20,8 +19,7 @@ html .logingActive {
background: rgba(0, 0, 0, 0.6);
z-index: 999;
padding: 0 0.2rem;
display: none;
}
display: none; }
body .wx_skip,
html .wx_skip {
position: fixed;
@@ -31,8 +29,7 @@ html .wx_skip {
right: 0;
background: rgba(0, 0, 0, 0.8);
z-index: 9999999999;
display: none;
}
display: none; }
body .wx_skip img,
html .wx_skip img {
width: 80%;
@@ -40,16 +37,14 @@ html .wx_skip img {
position: absolute;
left: 50%;
top: 5%;
transform: translateX(-50%);
}
transform: translateX(-50%); }
body .header,
html .header {
width: 100%;
height: 6.6666666667rem;
background: #000;
margin: 0 auto;
background: linear-gradient(180deg, #F2E0FF 0%, #FAF7FE 100%);
}
background: linear-gradient(180deg, #F2E0FF 0%, #FAF7FE 100%); }
body .header .header_top,
html .header .header_top {
width: 100%;
@@ -58,15 +53,13 @@ html .header .header_top {
box-sizing: border-box;
padding: 0 0.4rem;
display: flex;
justify-content: space-between;
}
justify-content: space-between; }
body .header .header_top .header_top_left,
html .header .header_top .header_top_left {
min-width: 4rem;
height: 100%;
position: relative;
margin-left: 0.8rem;
}
margin-left: 0.8rem; }
body .header .header_top .header_top_left img,
html .header .header_top .header_top_left img {
position: absolute;
@@ -74,19 +67,16 @@ html .header .header_top .header_top_left img {
height: 0.8rem;
top: 50%;
transform: translateY(-50%);
left: -0.9333333333rem;
}
left: -0.9333333333rem; }
body .header .header_top .header_top_left b,
html .header .header_top .header_top_left b {
color: #333;
font-size: 0.48rem;
}
font-size: 0.48rem; }
body .header .header_top .header_top_right,
html .header .header_top .header_top_right {
min-width: 0.6666666667rem;
height: 100%;
position: relative;
}
position: relative; }
body .header .header_top .header_top_right img,
html .header .header_top .header_top_right img {
position: absolute;
@@ -94,13 +84,11 @@ html .header .header_top .header_top_right img {
height: 0.5866666667rem;
top: 50%;
transform: translateY(-50%);
left: -0.72rem;
}
left: -0.72rem; }
body .header .header_top .header_top_right b,
html .header .header_top .header_top_right b {
color: #1F1A4E;
font-size: 0.3733333333rem;
}
font-size: 0.3733333333rem; }
body .header .user,
html .header .user {
background: #FFFFFF;
@@ -114,8 +102,7 @@ html .header .user {
box-sizing: border-box;
padding: 0 0.1333333333rem;
font-size: 0.4rem;
padding: 0rem 0.4rem;
}
padding: 0rem 0.4rem; }
body .pay_method,
html .pay_method {
width: 9.2rem;
@@ -125,20 +112,17 @@ html .pay_method {
margin: -3.5rem auto 0;
border-radius: 0.1333333333rem;
box-sizing: border-box;
padding: 0.3733333333rem 0.2666666667rem;
}
padding: 0.3733333333rem 0.2666666667rem; }
body .pay_method p,
html .pay_method p {
font-size: 0.3733333333rem;
color: #999;
width: 100%;
height: 0.8rem;
}
height: 0.8rem; }
body .pay_method .methodBox,
html .pay_method .methodBox {
display: flex;
flex-wrap: wrap;
}
flex-wrap: wrap; }
body .pay_method .methods,
html .pay_method .methods {
width: 30%;
@@ -146,8 +130,7 @@ html .pay_method .methods {
display: flex;
flex-wrap: wrap;
padding-left: 0.285rem;
margin-bottom: 0.1rem;
}
margin-bottom: 0.1rem; }
body .pay_method .methods span,
html .pay_method .methods span {
float: left;
@@ -159,19 +142,17 @@ html .pay_method .methods span {
position: relative;
margin-bottom: 1rem;
margin-right: 0.3rem;
box-sizing: border-box;
}
box-sizing: border-box; }
body .pay_method .methods span img,
html .pay_method .methods span img {
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 1.8rem;
width: 1.5rem;
height: 1.5rem;
border-radius: 50%;
overflow: hidden;
}
overflow: hidden; }
body .pay_method .methods span p,
html .pay_method .methods span p {
color: #B3B3C3;
@@ -180,17 +161,14 @@ html .pay_method .methods span p {
text-align: center;
position: absolute;
left: 0;
top: 1.9rem;
}
top: 1.9rem; }
body .pay_method .methods .active,
html .pay_method .methods .active {
background: url(../images/jvxing.png) no-repeat;
background-size: 100% 100%;
}
background-size: 100% 100%; }
body .pay_method .methods .active p,
html .pay_method .methods .active p {
color: #9168FA;
}
color: #9168FA; }
body .pay_number,
html .pay_number {
width: 9.2rem;
@@ -200,22 +178,19 @@ html .pay_number {
margin: 0.5333333333rem auto 1.3333333333rem;
padding: 0.2666666667rem 0.2666666667rem;
box-sizing: border-box;
border-radius: 0.1333333333rem;
}
border-radius: 0.1333333333rem; }
body .pay_number p,
html .pay_number p {
width: 100%;
height: 0.8rem;
color: #999;
font-size: 0.3733333333rem;
}
font-size: 0.3733333333rem; }
body .pay_number .number,
html .pay_number .number {
width: 100%;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
flex-wrap: wrap; }
body .pay_number .number span,
html .pay_number .number span {
display: block;
@@ -224,16 +199,14 @@ html .pay_number .number span {
background: #F0F5F6;
border-radius: 0.16rem;
position: relative;
margin-bottom: 0.5333333333rem;
}
margin-bottom: 0.5333333333rem; }
body .pay_number .number span b,
html .pay_number .number span b {
position: absolute;
color: #333;
font-size: 0.4533333333rem;
left: 0.2666666667rem;
top: 0.2666666667rem;
}
top: 0.2666666667rem; }
body .pay_number .number span i,
html .pay_number .number span i {
position: absolute;
@@ -241,13 +214,11 @@ html .pay_number .number span i {
font-size: 0.32rem;
right: 0.2666666667rem;
bottom: 0.2666666667rem;
font-style: normal;
}
font-style: normal; }
body .pay_number .number .active,
html .pay_number .number .active {
background: url(../images/active.png) no-repeat;
background-size: 100% 100%;
}
background-size: 100% 100%; }
body .pay_number .but1,
html .pay_number .but1 {
color: #B3B3C3;
@@ -258,8 +229,7 @@ html .pay_number .but1 {
line-height: 1.2266666667rem;
margin: 0 auto;
text-align: center;
background: #E6E6F0;
}
background: #E6E6F0; }
body .pay_number .but2,
html .pay_number .but2 {
color: #fff;
@@ -271,8 +241,7 @@ html .pay_number .but2 {
margin: 0 auto;
text-align: center;
background: linear-gradient(255deg, #CC66FF 1%, #9CB3FF 52%, #13E2F5 100%);
display: none;
}
display: none; }
body .pop_up,
html .pop_up {
position: fixed;
@@ -282,8 +251,7 @@ html .pop_up {
right: 0;
background: rgba(0, 0, 0, 0.6);
z-index: 99;
display: none;
}
display: none; }
body .pop_up .pop_up_in,
html .pop_up .pop_up_in {
position: absolute;
@@ -296,21 +264,18 @@ html .pop_up .pop_up_in {
border-radius: 0.32rem;
text-align: center;
font-size: 0.4266666667rem;
color: #333;
}
color: #333; }
body .pop_up .pop_up_in b,
html .pop_up .pop_up_in b {
width: 100%;
height: 1.5466666667rem;
line-height: 1.5466666667rem;
}
line-height: 1.5466666667rem; }
body .pop_up .pop_up_in p,
html .pop_up .pop_up_in p {
width: 100%;
height: 1.0666666667rem;
line-height: 1.0666666667rem;
border-top: 1px solid #ccc;
}
border-top: 1px solid #ccc; }
body .stance,
html .stance {
position: fixed;
@@ -320,8 +285,7 @@ html .stance {
right: 0;
background: #fff;
z-index: 999;
display: none;
}
display: none; }
body .stance .picture,
html .stance .picture {
width: 8rem;
@@ -332,8 +296,7 @@ html .stance .picture {
left: 50%;
top: 40%;
transform: translate(-50%, -50%);
position: relative;
}
position: relative; }
body .stance .picture span,
html .stance .picture span {
font-size: 0.64rem;
@@ -343,8 +306,7 @@ html .stance .picture span {
bottom: -1.5rem;
transform: translateX(-56%);
width: 100%;
white-space: nowrap;
}
white-space: nowrap; }
input::-webkit-input-placeholder {
/* placeholder颜色 */
@@ -352,7 +314,6 @@ input::-webkit-input-placeholder {
/* placeholder字体大小 */
font-size: 0.32rem;
/* placeholder位置 */
text-align: center;
}
text-align: center; }
/*# sourceMappingURL=index.css.map */

View File

@@ -176,7 +176,7 @@ html {
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 1.8rem;
width: 1.5rem;
height: 1.5rem;
border-radius: 50%;
overflow: hidden;

View File

@@ -94,6 +94,12 @@
<script src="../../common/js/pingpp.js"></script>
<script src="../../common/js/common2.js?v=8.0"></script>
<script src="../../common/js/layer.js"></script>
<script src="./local/zh.js"></script>
<script src="./local/en.js"></script>
<script src="./local/ar.js"></script>
<script src="./local/id.js"></script>
<script src="./local/tr.js"></script>
<script src="../../common/local/langHandler.js"></script>
<script src="./js/index.js?v=1.2"></script>
</body>

View File

@@ -19,11 +19,14 @@ let uid;
let modeOfPayment = false;//判断是否有选择支付方式
let paymentAmount = false;//判断是否有选择付款金额
var deviceId;//型号ID
$(function () {
if (EnvCheck() == 'test') {//degBug
new VConsole();
}
getInfoFromClient();//请求依赖
// 判断语言
fuzzyMatchUpdateQueryStringParameterFun();
setTimeout(function () {
listChargeAreaInfo();
if (browser.app) {
@@ -33,7 +36,27 @@ $(function () {
$('.but1').hide();
$('.but2').show();
}
// 初始化国际化
initLocalLang();
// 进行文本替换
translateFun();
}, 100)
function translateFun() {
const langReplace = window.lang.replace;
const localLang = window.lang;
$('#pay_title').text(langReplace(localLang.demoModule.pay_title));
$('#pay_header_t_l').text(langReplace(localLang.demoModule.pay_header_t_l));
$('#pay_user_id').attr('placeholder', langReplace(localLang.demoModule.placeholder));
$('#pay_method_p').text(langReplace(localLang.demoModule.pay_method_p));
$('#pay_number_sd').text(langReplace(localLang.demoModule.pay_number_sd));
$('.but1').text(langReplace(localLang.demoModule.but));
$('.but2').text(langReplace(localLang.demoModule.but));
$('#pop_up_in_b').text(langReplace(localLang.demoModule.pop_up_in_b));
$('#pay_stance_picture').text(langReplace(localLang.demoModule.pay_stance_picture));
}
function get_param(param) {
var query = location.search.substring(1).split('&');
for (var i = 0; i < query.length; i++) {
@@ -119,10 +142,12 @@ $(function () {
$('.but2').off();
$('.but2').on('click', function () {
console.log(countryCode)
const langReplace = window.lang.replace;
const localLang = window.lang;
if (modeOfPayment == false) {
logingFun("請選擇儲值方式")//''
logingFun(langReplace(localLang.demoModule.pay_method_p))//''
} else if (paymentAmount == false) {
logingFun("請選擇您的儲值金額")//''
logingFun(langReplace(localLang.demoModule.pay_number_sd))//''
} else {
console.log(countryCode)
networkRequest({
@@ -132,7 +157,7 @@ $(function () {
success: function (res) {
if (res.code == 200) {
console.log(res)
$('.logingActive').text("請稍等");//""
$('.logingActive').text(langReplace(localLang.demoModule.logingActive));//""
$('.logingActive').show();
window.location.href = res.data.payInfo.mweb_url;
} else {

View File

@@ -1,21 +1,20 @@
// 阿拉伯
langAr = {
// 模块
demoModule: {
wx_skip_img: './images/wx_skip_en.png',
// 国际化内容对应的数据项:
pay_title: `recharge`,
pay_header_t_l: `HABU Recharge Center`,
pay_header_t_r: `Taiwan`,
pay_method_p: `Please select a recharge method:`,
pay_number_sd: `Please select your recharge amount:`,
pay_but: `Pay now`,
pop_up_in_b: `Please select a recharge area`,
pop_up_in_p1: `Taiwan`,
pop_up_in_p2: `China`,
pay_stance_picture: `The recharge service is about to open, please be patient`,
wait_a_minute: 'Please wait',
gold_id: 'gold coins',
pay_user_id: 'Please enter your HABU account ID',
// 國際化內容對應的數據項:
loading: '加載中',
network: '網絡錯誤,請退出重進',
open_app: '請在app內打開',
// ===============index============
pay_title:'充值',
pay_header_t_l:'peko儲值中心',
pay_method_p:'请选择儲值方式',
placeholder:'請輸入peko賬號ID',
pay_number_sd:'請選擇您的儲值金額',
but:'立即支付',
pop_up_in_b:'請選擇儲值地區',
pay_stance_picture:'儲值服務即將開放,請耐心等待',
logingActive:'請稍等',
}
}

View File

@@ -2,20 +2,20 @@
langEn = {
// 模块
demoModule: {
wx_skip_img: './images/wx_skip_en.png',
// 国际化内容对应的数据项:
pay_title: `recharge`,
pay_header_t_l: `HABU Recharge Center`,
pay_header_t_r: `Taiwan`,
pay_method_p: `Please select a recharge method:`,
pay_number_sd: `Please select your recharge amount:`,
pay_but: `Pay now`,
pop_up_in_b: `Please select a recharge area`,
pop_up_in_p1: `Taiwan`,
pop_up_in_p2: `China`,
pay_stance_picture: `The recharge service is about to open, please be patient`,
wait_a_minute: 'Please wait',
gold_id: 'gold coins',
pay_user_id: 'Please enter your HABU account ID',
// 國際化內容對應的數據項:
loading: 'loading...',
network: 'Network error, please exit and retry',
open_app: 'Please open it in app',
// ===============index============
pay_title:'Pay',
pay_header_t_l:'peko storage Center',
pay_method_p:'Please select the store value mode',
placeholder:'Please enter the peko account ID',
pay_number_sd:'Please select your stored value amount',
but:'immediate payment',
pop_up_in_b:'Please select the store area',
pay_stance_picture:'Store value service will be opened soon, please wait patiently',
logingActive:'Wait for a moment, please',
}
}

View File

@@ -0,0 +1,20 @@
// 印尼语
langId = {
demoModule: {
// 國際化內容對應的數據項:
loading: '加載中',
network: '網絡錯誤,請退出重進',
open_app: '請在app內打開',
// ===============index============
pay_title:'充值',
pay_header_t_l:'peko儲值中心',
pay_method_p:'请选择儲值方式',
placeholder:'請輸入peko賬號ID',
pay_number_sd:'請選擇您的儲值金額',
but:'立即支付',
pop_up_in_b:'請選擇儲值地區',
pay_stance_picture:'儲值服務即將開放,請耐心等待',
logingActive:'請稍等',
}
}

View File

@@ -1,21 +0,0 @@
// 印尼语
langIn = {
// 模块
demoModule: {
wx_skip_img: './images/wx_skip_en.png',
// 国际化内容对应的数据项:
pay_title: `recharge`,
pay_header_t_l: `HABU Recharge Center`,
pay_header_t_r: `Taiwan`,
pay_method_p: `Please select a recharge method:`,
pay_number_sd: `Please select your recharge amount:`,
pay_but: `Pay now`,
pop_up_in_b: `Please select a recharge area`,
pop_up_in_p1: `Taiwan`,
pop_up_in_p2: `China`,
pay_stance_picture: `The recharge service is about to open, please be patient`,
wait_a_minute: 'Please wait',
gold_id: 'gold coins',
pay_user_id: 'Please enter your HABU account ID',
}
}

View File

@@ -0,0 +1,20 @@
// 土耳其语
langTr = {
demoModule: {
// 國際化內容對應的數據項:
loading: '加載中',
network: '網絡錯誤,請退出重進',
open_app: '請在app內打開',
// ===============index============
pay_title:'充值',
pay_header_t_l:'peko儲值中心',
pay_method_p:'请选择儲值方式',
placeholder:'請輸入peko賬號ID',
pay_number_sd:'請選擇您的儲值金額',
but:'立即支付',
pop_up_in_b:'請選擇儲值地區',
pay_stance_picture:'儲值服務即將開放,請耐心等待',
logingActive:'請稍等',
}
}

View File

@@ -1,21 +0,0 @@
// 简体中文
langZhCN = {
// 模块
demoModule: {
wx_skip_img: './images/wx_skip_en.png',
// 国际化内容对应的数据项:
pay_title: `recharge`,
pay_header_t_l: `HABU Recharge Center`,
pay_header_t_r: `Taiwan`,
pay_method_p: `Please select a recharge method:`,
pay_number_sd: `Please select your recharge amount:`,
pay_but: `Pay now`,
pop_up_in_b: `Please select a recharge area`,
pop_up_in_p1: `Taiwan`,
pop_up_in_p2: `China`,
pay_stance_picture: `The recharge service is about to open, please be patient`,
wait_a_minute: 'Please wait',
gold_id: 'gold coins',
pay_user_id: 'Please enter your HABU account ID',
}
}

View File

@@ -1,21 +0,0 @@
// 繁体中文
langZhTW = {
// 模块
demoModule: {
wx_skip_img: './images/wx_skip_en.png',
// 国际化内容对应的数据项:
pay_title: `recharge`,
pay_header_t_l: `HABU Recharge Center`,
pay_header_t_r: `Taiwan`,
pay_method_p: `Please select a recharge method:`,
pay_number_sd: `Please select your recharge amount:`,
pay_but: `Pay now`,
pop_up_in_b: `Please select a recharge area`,
pop_up_in_p1: `Taiwan`,
pop_up_in_p2: `China`,
pay_stance_picture: `The recharge service is about to open, please be patient`,
wait_a_minute: 'Please wait',
gold_id: 'gold coins',
pay_user_id: 'Please enter your HABU account ID',
}
}

View File

@@ -0,0 +1,21 @@
// 繁体中文
langZh = {
// 模塊
demoModule: {
// 國際化內容對應的數據項:
loading: '加載中',
network: '網絡錯誤,請退出重進',
open_app: '請在app內打開',
// ===============index============
pay_title:'充值',
pay_header_t_l:'peko儲值中心',
pay_method_p:'请选择儲值方式',
placeholder:'請輸入peko賬號ID',
pay_number_sd:'請選擇您的儲值金額',
but:'立即支付',
pop_up_in_b:'請選擇儲值地區',
pay_stance_picture:'儲值服務即將開放,請耐心等待',
logingActive:'請稍等',
}
}

View File

@@ -86,10 +86,10 @@ module.exports = {
// test: /\.(js|vue)$/,
// loader: 'language-tw-loader',
// },
{
test:/\.(js|vue)$/,
loader:'language-hk-loader'
}
// {
// test:/\.(js|vue)$/,
// loader:'language-hk-loader'
// }
]
},
node: {

View File

@@ -22,8 +22,8 @@ module.exports = {
}},
// Various Dev Server settings
host: '127.0.0.1', // can be overwritten by process.env.HOST
// host: '192.168.3.153', // can be overwritten by process.env.HOST
// host: '127.0.0.1', // can be overwritten by process.env.HOST
host: '192.168.8.153', // can be overwritten by process.env.HOST
// host: '192.168.9.200', // can be overwritten by process.env.HOST
port: 8080, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: false,

View File

@@ -5946,16 +5946,6 @@
"is-buffer": "^1.1.5"
}
},
"language-hk-loader": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/language-hk-loader/-/language-hk-loader-1.0.1.tgz",
"integrity": "sha512-OmOLx119bkmabkQYn4GvxzMrnp2PAxX6lhHkMwqyaHA6Casi6SyO5uhst1+svPJcR+kA7r8d7H3ri97N1JKXng=="
},
"language-tw-loader": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/language-tw-loader/-/language-tw-loader-1.0.3.tgz",
"integrity": "sha512-fA+6+Dn2IQUBN8QAfVO6ek+flzqdUmPvbKYDNXE/64invrDWIzJiXjv2PB2++F06lKxSso/B9clHUHN9jhx0gg=="
},
"last-call-webpack-plugin": {
"version": "2.1.2",
"resolved": "https://registry.npm.taobao.org/last-call-webpack-plugin/download/last-call-webpack-plugin-2.1.2.tgz",
@@ -12327,6 +12317,11 @@
"integrity": "sha1-UylVzB6yCKPZkLOp+acFdGV+CPI=",
"dev": true
},
"vue-i18n": {
"version": "8.28.2",
"resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-8.28.2.tgz",
"integrity": "sha512-C5GZjs1tYlAqjwymaaCPDjCyGo10ajUphiwA922jKt9n7KPpqR7oM1PCwYzhB/E7+nT3wfdG3oRre5raIT1rKA=="
},
"vue-lazyload": {
"version": "1.2.3",
"resolved": "https://registry.npm.taobao.org/vue-lazyload/download/vue-lazyload-1.2.3.tgz?cache=0&sync_timestamp=1568801961628&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fvue-lazyload%2Fdownload%2Fvue-lazyload-1.2.3.tgz",

View File

@@ -14,8 +14,6 @@
"crypto-js": "^4.0.0",
"fastclick": "^1.0.6",
"jsencrypt": "^3.0.0-rc.1",
"language-hk-loader": "^1.0.1",
"language-tw-loader": "^1.0.3",
"lib-flexible": "^0.3.2",
"node-sass": "^4.13.0",
"postcss-pxtorem": "^5.1.1",
@@ -28,6 +26,7 @@
"vconsole": "^3.3.4",
"vue": "^2.5.2",
"vue-awesome-swiper": "^4.1.1",
"vue-i18n": "^8.28.2",
"vue-router": "^3.0.1",
"vuex": "^3.2.0"
},

View File

@@ -0,0 +1,18 @@
import Vue from 'vue';
// import locale from 'element-ui/lib/locale' //element组件翻译
import VueI18n from 'vue-i18n';
import messages from './langs';
Vue.use(VueI18n);
const i18n = new VueI18n({ //从sessionStorage中取没有就默认
// locale: 'zh',
locale: window.sessionStorage.getItem('language') || 'zh',
messages,
silentTranslationWarn: true,
})
// console.log('i18n.messages',i18n.messages);
// console.log('i18n.locale',i18n.locale);
export default i18n

View File

@@ -0,0 +1,55 @@
const en = {
diamondLog: {
登录过期: '登錄狀態已過期,請重新登錄',
钻石记录: '鉆石記錄',
支出记录: '支出記錄',
收入记录: '收入記錄',
礼物获得: '禮物獲得',
没有更多了: '沒有更多了',
共收入: '共收入',
共获得价值: '共獲得價值',
共支出: '共支出',
钻石: '鉆石',
房间红包: '房間紅包-來自',
全服红包: '全服紅包-來自',
全服红包退款: '全服紅包退款-來自',
水晶兑换钻石: '水晶兌換鉆石',
金币兑换钻石: '金幣兌換鉆石',
活动赠送钻石: '活動贈送鉆石',
充值: '充值',
塔罗占卜: '塔羅占蔔',
集福气瓜分钻石: '集福氣瓜分鉆石',
CP邀请退还: 'CP邀請退還',
赠送钻石: '贈送鉆石',
首充礼包获得钻石: '首充禮包獲得鉆石',
星级厨房奖励: '星級廚房獎勵',
寻找小精灵中奖奖励: '尋找小精靈中獎獎勵',
全服红包: '全服紅包-發生在',
房间红包: '房間紅包-發生在',
活动礼包支出: '活動禮包支出',
购买门票: '購買門票',
CP邀请支出: 'CP邀請支出',
寻找小精灵支出: '尋找小精靈支出',
赠送头饰支出: '贈送頭飾支出',
购买头饰支出: '購買頭飾支出',
购买铭牌支出: '購買銘牌支出',
赠送铭牌支出: '贈送銘牌支出',
购买资料卡支出: '購買資料卡支出',
赠送资料卡支出: '贈送資料卡支出',
购买聊天气泡支出: '購買聊天氣泡支出',
赠送聊天气泡支出: '贈送聊天氣泡支出',
航海冒险礼包支出: '航海冒險禮包支出',
购买座驾支出: '購買座駕支出',
赠送座驾支出: '贈送座駕支出',
星级厨房抽奖: '星級廚房抽獎',
新年烟花抽奖: '新年煙花抽獎',
夺宝精灵礼包购买支出: '奪寶精靈禮包購買支出',
寻爱之旅抽奖: '尋愛之旅抽獎',
转赠钻石给: '轉贈鉆石給',
: '鉆',
赠送: '贈送',
礼物: '禮物',
自己: '自己',
},
}
export default en

View File

@@ -0,0 +1,9 @@
import en from './en';
import zh from './zh';
const messages = {
en: en,
zh: zh,
}
// console.log('langmessages',messages);
export default messages

View File

@@ -0,0 +1,56 @@
const zh = {
diamondLog: {
登录过期: '登錄狀態已過期,請重新登錄',
钻石记录: '鉆石記錄',
支出记录: '支出記錄',
收入记录: '收入記錄',
礼物获得: '禮物獲得',
没有更多了: '沒有更多了',
共收入: '共收入',
共获得价值: '共獲得價值',
共支出: '共支出',
钻石: '鉆石',
房间红包: '房間紅包-來自',
全服红包: '全服紅包-來自',
全服红包退款: '全服紅包退款-來自',
水晶兑换钻石: '水晶兌換鉆石',
金币兑换钻石: '金幣兌換鉆石',
活动赠送钻石: '活動贈送鉆石',
充值: '充值',
塔罗占卜: '塔羅占蔔',
集福气瓜分钻石: '集福氣瓜分鉆石',
CP邀请退还: 'CP邀請退還',
赠送钻石: '贈送鉆石',
首充礼包获得钻石: '首充禮包獲得鉆石',
星级厨房奖励: '星級廚房獎勵',
寻找小精灵中奖奖励: '尋找小精靈中獎獎勵',
全服红包发生在: '全服紅包-發生在',
房间红包发生在: '房間紅包-發生在',
活动礼包支出: '活動禮包支出',
购买门票: '購買門票',
CP邀请支出: 'CP邀請支出',
寻找小精灵支出: '尋找小精靈支出',
赠送头饰支出: '贈送頭飾支出',
购买头饰支出: '購買頭飾支出',
购买铭牌支出: '購買銘牌支出',
赠送铭牌支出: '贈送銘牌支出',
购买资料卡支出: '購買資料卡支出',
赠送资料卡支出: '贈送資料卡支出',
购买聊天气泡支出: '購買聊天氣泡支出',
赠送聊天气泡支出: '贈送聊天氣泡支出',
航海冒险礼包支出: '航海冒險禮包支出',
购买座驾支出: '購買座駕支出',
赠送座驾支出: '贈送座駕支出',
星级厨房抽奖: '星級廚房抽獎',
新年烟花抽奖: '新年煙花抽獎',
夺宝精灵礼包购买支出: '奪寶精靈禮包購買支出',
寻爱之旅抽奖: '尋愛之旅抽獎',
转赠钻石给: '轉贈鉆石給',
: '鉆',
赠送: '贈送',
礼物: '禮物',
自己: '自己',
},
}
export default zh

View File

@@ -15,6 +15,8 @@ import { EnvCheck, checkVersion } from '@/utils/browser.js'
if (EnvCheck() === 'test') {
new Vconsole();
}
import i18n from '@/i18n/i18n.js'
//300毫秒
import fastClick from 'fastClick'
fastClick.attach(document.body)
@@ -34,6 +36,7 @@ new Vue({
el: '#app',
router,
store,
i18n,
components: { App },
template: '<App/>'
});

View File

@@ -30,6 +30,12 @@ routers.beforeEach((to, from, next) => {
setTimeout(() => {
window.sessionStorage.setItem('uid', info.uid);
window.sessionStorage.setItem('ticket', info.ticket);
let language = info.deviceInfo['accept-language'];
if (language.indexOf('zh') !=-1) {
window.sessionStorage.setItem('language', 'zh');
} else {
window.sessionStorage.setItem('language', info.deviceInfo['accept-language']);
}
console.log(info, 'router')
next();
}, 50)

View File

@@ -16,6 +16,7 @@ export default function getId() {
info.uid = $uid[0];
window.webkit.messageHandlers.getTicket.postMessage(null);
window.webkit.messageHandlers.getDeviceId.postMessage(null);
window.webkit.messageHandlers.getDeviceInfo.postMessage(null);
// console.log("ios");
// console.log(info.ticket);
} else if (browser.android) {
@@ -23,13 +24,23 @@ export default function getId() {
info.uid = parseInt(window.androidJsObj.getUid());
info.ticket = window.androidJsObj.getTicket();
info.deviceId = window.androidJsObj.getDeviceId();
info.deviceInfo = JSON.parse(window.androidJsObj.getDeviceInfo());
}
}
} else {
window.sessionStorage.clear();
info.uid = 1016;
info.ticket = "test"
info.ticket = "test",
info.deviceInfo = {
app: 'peko',
appVersion: '0.0.0',
os: '0.0.0',
osVersion: '0.0.0',
channel: 'browser',
client: 'h5',
'accept-language':'zh-Hans'
}
}
}
// export default function getJurisdiction() {

View File

@@ -1,6 +1,7 @@
import axios from 'axios'
import { Toast } from 'vant';
import router from '@/router'
import i18n from '@/i18n/i18n.js'
import { EnvCheck, checkVersion } from '@/utils/browser.js'
let baseURL;
if (EnvCheck() === 'test') {
@@ -84,7 +85,7 @@ service.interceptors.response.use(response => {
error => {
if (!checkVersion().app && error.response.status === 401) {
window.localStorage.clear();
Toast('登录失效,请重新登录')
Toast(i18n.t('diamondLog.登录过期'))
// router.replace({ path: '/Login' })
return
}

View File

@@ -1,17 +1,17 @@
<template>
<div>
<navigation v-if="!this.$store.state.isApp" title="石记录" rightTitle></navigation>
<navigation v-if="!this.$store.state.isApp" :title="$t('diamondLog.钻石记录')" rightTitle></navigation>
<div :class="!this.$store.state.isApp ? 'diamond-tab' : 'diamond-tab crystal-top-app'">
<div :class="tab === 11 ?'active' :''" @click="cutTab(11)">
<span>收入记录</span>
<span>{{$t('diamondLog.收入记录')}}</span>
<span :class="tab === 11 ?'active' :''"></span>
</div>
<div :class="tab === 12 ?'active' :''" @click="cutTab(12)">
<span>支出记录</span>
<span>{{$t('diamondLog.支出记录')}}</span>
<span :class="tab === 12 ?'active' :''"></span>
</div>
<div :class="tab === 1 ?'active' :''" @click="cutTab(1)">
<span>礼物获得</span>
<span>{{$t('diamondLog.礼物获得')}}</span>
<span :class="tab === 1 ?'active' :''"></span>
</div>
</div>
@@ -20,12 +20,18 @@
class="diamond-list"
:sticky-offset-top="!this.$store.state.isApp ? unApp : isApp"
>
<van-list
<!-- <van-list
style="width:100%"
v-model="loading"
:finished="finished"
finished-text="没有更多了"
@load="onLoad"
> -->
<van-list
style="width:100%"
:finished="finished"
:finished-text="noMore"
@load="onLoad"
>
<div v-for="(item, index) in list" :key="index">
<van-index-anchor
@@ -35,52 +41,52 @@
v-if="thinkTime(index, item)"
>
<span class="time">{{ relDate(item.date) }}</span>
<span>{{tab === 11 ? "共收入" : tab == 1 ? '共获得价值' : '共支出'}}</span>
<span>{{tab === 11 ? $t('diamondLog.共收入') : tab == 1 ? $t('diamondLog.共获得价值') : $t('diamondLog.共支出')}}</span>
<span class="total">{{tab === 1? item.totalGiftGoldNumDailySum: item.total}}</span>
<span>鉆石</span>
<span>{{$t('diamondLog.钻石')}}</span>
</van-index-anchor>
<div class="in-all-detail" v-for="(item1, index1) in item[item.date]" :key="index1">
<div class="in-all-user">
<p v-if="tab === 11 && item1.objType === 43">房间红包-来自{{ item1.roomTitle }}</p>
<p v-else-if="tab === 11 && item1.objType === 44">全服红包-来自{{ item1.roomTitle }}</p>
<p v-else-if="tab === 11 && item1.objType === 41">房间红包退款-来自{{ item1.roomTitle }}</p>
<p v-else-if="tab === 11 && item1.objType === 42">全服红包退款-来自{{ item1.roomTitle }}</p>
<p v-else-if="tab === 11 && item1.objType === 13">水晶兑换鉆石</p>
<p v-else-if="tab === 11 && item1.objType === 15">金币兑换鉆石</p>
<p v-else-if="tab === 11 && item1.objType === 23">活动赠送鉆石</p>
<p v-else-if="tab === 11 && item1.objType === 1">充值</p>
<p v-else-if="tab === 11 && item1.objType === 59">塔罗占卜</p>
<p v-else-if="tab === 11 && item1.objType === 60">集福气瓜分鉆石</p>
<p v-else-if="tab === 11 && item1.objType === 71">CP邀请退还</p>
<p v-else-if="tab === 11 && item1.objType === 89">{{item1.targetNick}}赠送鉆石</p>
<p v-else-if="tab === 11 && item1.objType === 62">首充礼包获得钻石</p>
<p v-else-if="tab === 11 && item1.objType === 88">星级厨房奖励</p>
<p v-else-if="tab === 11 && item1.objType === 96">寻找小精灵中奖奖励</p>
<p v-if="tab === 11 && item1.objType === 43">{{$t('diamondLog.房间红包')}}{{ item1.roomTitle }}</p>
<p v-else-if="tab === 11 && item1.objType === 44">{{$t('diamondLog.全服红包')}}{{ item1.roomTitle }}</p>
<p v-else-if="tab === 11 && item1.objType === 41">{{$t('diamondLog.房间红包退款')}}{{ item1.roomTitle }}</p>
<p v-else-if="tab === 11 && item1.objType === 42">{{$t('diamondLog.全服红包退款')}}{{ item1.roomTitle }}</p>
<p v-else-if="tab === 11 && item1.objType === 13">{{$t('diamondLog.水晶兑换鉆石')}}</p>
<p v-else-if="tab === 11 && item1.objType === 15">{{$t('diamondLog.金币兑换鉆石')}}</p>
<p v-else-if="tab === 11 && item1.objType === 23">{{$t('diamondLog.活动赠送鉆石')}}</p>
<p v-else-if="tab === 11 && item1.objType === 1">{{$t('diamondLog.充值')}}</p>
<p v-else-if="tab === 11 && item1.objType === 59">{{$t('diamondLog.塔罗占卜')}}</p>
<p v-else-if="tab === 11 && item1.objType === 60">{{$t('diamondLog.集福气瓜分鉆石')}}</p>
<p v-else-if="tab === 11 && item1.objType === 71">{{$t('diamondLog.CP邀请退还')}}</p>
<p v-else-if="tab === 11 && item1.objType === 89">{{item1.targetNick}}{{$t('diamondLog.赠送鉆石')}}</p>
<p v-else-if="tab === 11 && item1.objType === 62">{{$t('diamondLog.首充礼包获得钻石')}}</p>
<p v-else-if="tab === 11 && item1.objType === 88">{{$t('diamondLog.星级厨房奖励')}}</p>
<p v-else-if="tab === 11 && item1.objType === 96">{{$t('diamondLog.寻找小精灵中奖奖励')}}</p>
<!-- <p v-else-if="tab === 11 || !item1.targetNick">{{ item1.srcNick }}</p> -->
<p v-if="tab === 12 && item1.objType === 40">全服红包-发生在{{ item1.roomTitle }}</p>
<p v-else-if="tab === 12 && item1.objType === 39">房间红包-发生在{{ item1.roomTitle }}</p>
<p v-else-if="tab === 12 && item1.objType === 27">活动礼包支出</p>
<p v-else-if="tab === 12 && item1.objType === 61">购买门票</p>
<p v-else-if="tab === 12 && item1.objType === 70">CP邀请支出</p>
<p v-else-if="tab === 12 && item1.objType === 74">寻找小精灵支出</p>
<p v-else-if="tab === 12 && item1.objType === 79">赠送头饰支出</p>
<p v-else-if="tab === 12 && item1.objType === 78">购买头饰支出</p>
<p v-else-if="tab === 12 && item1.objType === 80">购买铭牌支出</p>
<p v-else-if="tab === 12 && item1.objType === 81">赠送铭牌支出</p>
<p v-else-if="tab === 12 && item1.objType === 82">购买资料卡支出</p>
<p v-else-if="tab === 12 && item1.objType === 83">赠送资料卡支出</p>
<p v-else-if="tab === 12 && item1.objType === 84">购买聊天气泡支出</p>
<p v-else-if="tab === 12 && item1.objType === 85">赠送聊天气泡支出</p>
<p v-else-if="tab === 12 && item1.objType === 86">航海冒险礼包支出</p>
<p v-else-if="tab === 12 && item1.objType === 31">购买座驾支出</p>
<p v-else-if="tab === 12 && item1.objType === 32">赠送座驾支出</p>
<p v-else-if="tab === 12 && item1.objType === 87">星级厨房抽奖</p>
<p v-else-if="tab === 12 && item1.objType === 95">新年煙花抽獎</p>
<p v-else-if="tab === 12 && item1.objType === 98">奪寶精靈禮包購買支出</p>
<p v-else-if="tab === 12 && item1.objType === 99">尋愛之旅抽獎</p>
<p v-else-if="tab === 12 && item1.objType === 90">转赠鉆石给 {{item1.targetNick}} {{item1.sendDiamondAmount}}</p>
<p v-if="tab === 12 && item1.objType === 40">{{$t('diamondLog.全服红包发生在')}}{{ item1.roomTitle }}</p>
<p v-else-if="tab === 12 && item1.objType === 39">{{$t('diamondLog.房间红包发生在')}}{{ item1.roomTitle }}</p>
<p v-else-if="tab === 12 && item1.objType === 27">{{$t('diamondLog.活动礼包支出')}}</p>
<p v-else-if="tab === 12 && item1.objType === 61">{{$t('diamondLog.购买门票')}}</p>
<p v-else-if="tab === 12 && item1.objType === 70">{{$t('diamondLog.CP邀请支出')}}</p>
<p v-else-if="tab === 12 && item1.objType === 74">{{$t('diamondLog.寻找小精灵支出')}}</p>
<p v-else-if="tab === 12 && item1.objType === 79">{{$t('diamondLog.赠送头饰支出')}}</p>
<p v-else-if="tab === 12 && item1.objType === 78">{{$t('diamondLog.购买头饰支出')}}</p>
<p v-else-if="tab === 12 && item1.objType === 80">{{$t('diamondLog.购买铭牌支出')}}</p>
<p v-else-if="tab === 12 && item1.objType === 81">{{$t('diamondLog.赠送铭牌支出')}}</p>
<p v-else-if="tab === 12 && item1.objType === 82">{{$t('diamondLog.购买资料卡支出')}}</p>
<p v-else-if="tab === 12 && item1.objType === 83">{{$t('diamondLog.赠送资料卡支出')}}</p>
<p v-else-if="tab === 12 && item1.objType === 84">{{$t('diamondLog.购买聊天气泡支出')}}</p>
<p v-else-if="tab === 12 && item1.objType === 85">{{$t('diamondLog.赠送聊天气泡支出')}}</p>
<p v-else-if="tab === 12 && item1.objType === 86">{{$t('diamondLog.航海冒险礼包支出')}}</p>
<p v-else-if="tab === 12 && item1.objType === 31">{{$t('diamondLog.购买座驾支出')}}</p>
<p v-else-if="tab === 12 && item1.objType === 32">{{$t('diamondLog.赠送座驾支出')}}</p>
<p v-else-if="tab === 12 && item1.objType === 87">{{$t('diamondLog.星级厨房抽奖')}}</p>
<p v-else-if="tab === 12 && item1.objType === 95">{{$t('diamondLog.新年煙花抽獎')}}</p>
<p v-else-if="tab === 12 && item1.objType === 98">{{$t('diamondLog.奪寶精靈禮包購買支出')}}</p>
<p v-else-if="tab === 12 && item1.objType === 99">{{$t('diamondLog.尋愛之旅抽獎')}}</p>
<p v-else-if="tab === 12 && item1.objType === 90">{{$t('diamondLog.转赠鉆石给')}} {{item1.targetNick}} {{item1.sendDiamondAmount}}</p>
<!-- <p v-if="tab === 12">{{ item1.srcNick }}</p> -->
<p
v-else-if="tab === 12 && item1.targetNick"
@@ -117,13 +123,15 @@ export default {
finished: false, //是否加载完
indexList: [], //不清楚应该没啥用
//点击tab类型
tab: 11
tab: 11,
//底部提示
noMore:'没有更多了'
};
},
components: { navigation },
created() {
document.title = this.$route.meta.title;
this.$i18n.locale = window.sessionStorage.getItem('language')
},
computed: {
isApp() {
@@ -212,6 +220,7 @@ export default {
mounted() {
let htmlCss = document.getElementsByTagName("html")[0];
htmlCss.style.background = "#fff";
this.noMore = this.$t('diamondLog.没有更多了')
}
};
</script>

View File

@@ -36,14 +36,14 @@ module.exports = {
loader: 'vue-loader',
options: vueLoaderConfig
},
{
test: /\.(js|vue)$/,
loader: 'language-hk-loader',
},
{
test: /\.(js|vue)$/,
loader: 'language-tw-loader',
},
// {
// test: /\.(js|vue)$/,
// loader: 'language-hk-loader',
// },
// {
// test: /\.(js|vue)$/,
// loader: 'language-tw-loader',
// },
{
test: /\.js$/,
loader: 'babel-loader',

View File

@@ -5675,16 +5675,6 @@
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
"integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw=="
},
"language-hk-loader": {
"version": "1.0.1",
"resolved": "https://registry.npmmirror.com/language-hk-loader/-/language-hk-loader-1.0.1.tgz",
"integrity": "sha512-OmOLx119bkmabkQYn4GvxzMrnp2PAxX6lhHkMwqyaHA6Casi6SyO5uhst1+svPJcR+kA7r8d7H3ri97N1JKXng=="
},
"language-tw-loader": {
"version": "1.0.3",
"resolved": "https://registry.npmmirror.com/language-tw-loader/-/language-tw-loader-1.0.3.tgz",
"integrity": "sha512-fA+6+Dn2IQUBN8QAfVO6ek+flzqdUmPvbKYDNXE/64invrDWIzJiXjv2PB2++F06lKxSso/B9clHUHN9jhx0gg=="
},
"last-call-webpack-plugin": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-2.1.2.tgz",
@@ -11484,6 +11474,11 @@
"integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==",
"dev": true
},
"vue-i18n": {
"version": "8.28.2",
"resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-8.28.2.tgz",
"integrity": "sha512-C5GZjs1tYlAqjwymaaCPDjCyGo10ajUphiwA922jKt9n7KPpqR7oM1PCwYzhB/E7+nT3wfdG3oRre5raIT1rKA=="
},
"vue-layer": {
"version": "1.2.5",
"resolved": "https://registry.npmjs.org/vue-layer/-/vue-layer-1.2.5.tgz",

View File

@@ -12,8 +12,6 @@
"dependencies": {
"axios": "^0.19.0",
"fastclick": "^1.0.6",
"language-hk-loader": "^1.0.1",
"language-tw-loader": "^1.0.3",
"lib-flexible": "^0.3.2",
"node-sass": "^4.13.0",
"postcss-pxtorem": "^5.1.1",
@@ -25,6 +23,7 @@
"vconsole": "^3.3.4",
"vue": "^2.5.2",
"vue-awesome-swiper": "^4.1.1",
"vue-i18n": "^8.28.2",
"vue-layer": "^1.2.5",
"vue-router": "^3.0.1",
"vuex": "^3.2.0"

View File

@@ -0,0 +1,18 @@
import Vue from 'vue';
// import locale from 'element-ui/lib/locale' //element组件翻译
import VueI18n from 'vue-i18n';
import messages from './langs';
Vue.use(VueI18n);
const i18n = new VueI18n({ //从sessionStorage中取没有就默认
// locale: 'zh',
locale: window.sessionStorage.getItem('language') || 'zh',
messages,
silentTranslationWarn: true,
})
// console.log('i18n.messages',i18n.messages);
// console.log('i18n.locale',i18n.locale);
export default i18n

View File

@@ -0,0 +1,17 @@
const en = {
rank: {
日榜: 'day',
周榜: 'week',
月榜: 'month',
距上一名: '距上一名',
未上榜: '未上榜',
爱意榜: '愛意榜',
魅力榜: '魅力榜',
房间榜: '房間榜',
公会周榜: '公會周榜',
加載中: '加載中...',
排行榜: '排行榜',
虚位以待: '虚位以待',
}
}
export default en

View File

@@ -0,0 +1,9 @@
import en from './en';
import zh from './zh';
const messages = {
en: en,
zh: zh,
}
// console.log('langmessages',messages);
export default messages

View File

@@ -0,0 +1,17 @@
const zh = {
rank: {
日榜 : '日榜',
周榜:'周榜',
月榜:'月榜',
距上一名: '距上一名',
未上榜:'未上榜',
爱意榜:'愛意榜',
魅力榜:'魅力榜',
房间榜:'房間榜',
公会周榜:'公會周榜',
加載中:'加載中...',
排行榜:'排行榜',
虚位以待:'虚位以待',
}
}
export default zh

View File

@@ -14,7 +14,13 @@ import 'vant/lib/index.css';
import vant from 'vant';
import 'lib-flexible/flexible'
import Vconsole from 'vconsole'
// new Vconsole()
import { EnvCheck, checkVersion } from '@/utils/browser.js'
if (EnvCheck() === 'test') {
new Vconsole();
}
import i18n from '@/i18n/i18n.js'
console.log('main.js获取到的语言i18n.locale',i18n.locale);
//300毫秒
import fastClick from 'fastClick'
fastClick.attach(document.body)
@@ -23,6 +29,7 @@ new Vue({
el: '#app',
router,
store,
i18n,
components: { App },
template: '<App/>'
});

View File

@@ -24,9 +24,17 @@ routers.beforeEach((to, from, next) => {
sessionStorage.clear();
window.sessionStorage.setItem('uid', info.uid);
window.sessionStorage.setItem('ticket', info.ticket);
let language = info.deviceInfo['accept-language'];
if (language.indexOf('zh') !=-1) {
window.sessionStorage.setItem('language', 'zh');
} else {
window.sessionStorage.setItem('language', info.deviceInfo['accept-language']);
}
console.log(info, 'router')
next();
}, 70)
}, 50)
}
});
export default routers;

View File

@@ -14,17 +14,28 @@ export default function getId() {
var $uid = allcookies.match(/\d+/);
info.uid = $uid[0];
window.webkit.messageHandlers.getTicket.postMessage(null);
window.webkit.messageHandlers.getDeviceInfo.postMessage(null);
// console.log("ios");
// console.log(info.ticket);
} else if (browser.android) {
if (androidJsObj && typeof androidJsObj === 'object') {
info.uid = parseInt(window.androidJsObj.getUid());
info.ticket = window.androidJsObj.getTicket();
info.deviceInfo = JSON.parse(window.androidJsObj.getDeviceInfo());
}
}
} else {
info.uid = 0
info.ticket = "0"
info.ticket = "0",
info.deviceInfo = {
app: 'peko',
appVersion: '0.0.0',
os: '0.0.0',
osVersion: '0.0.0',
channel: 'browser',
client: 'h5',
'accept-language':'zh-Hans'
}
}
}
// export default function getJurisdiction() {

View File

@@ -8,7 +8,7 @@
:key="index"
@click="setTabType(index)"
>
{{ item }}
{{ $t(`rank.${item}`) }}
<span class="subscript-one"></span>
</div>
</div>
@@ -17,13 +17,13 @@
:class="`choose ${chooseType === 1 ? 'active' : ''}`"
@click="setChooseType(1)"
>
<span>日榜</span>
<span>{{$t('rank.日榜')}}</span>
</div>
<div
:class="`choose ${chooseType === 2 ? 'active' : ''}`"
@click="setChooseType(2)"
>
<span>周榜</span>
<span>{{$t('rank.周榜')}}</span>
</div>
</div>
</div>
@@ -69,7 +69,7 @@
}}
<br
/></span>
距上一名
{{$t('rank.距上一名')}}
</span>
<span v-else>
<img src="@/assets/images/rank/first-icon.png" alt="" />
@@ -128,7 +128,7 @@
<!-- <p v-if="tabType != 3">ID:{{ item.erbanNo }}</p> -->
</div>
<p class="rank-user-num" v-if="tabType != 3">
<span>距上一名</span><br />
<span> {{$t('rank.距上一名')}}</span><br />
{{
index
? formatTotal(value[index - 1].totalNum - item.totalNum)
@@ -162,10 +162,10 @@
<!-- <p>ID:{{ me.erbanNo }}</p> -->
</div>
<p class="rank-user-num" v-if="me.seqNo != 0 && me.seqNo != 1">
<span>距上一名</span><br />
<span>{{$t('rank.距上一名')}}</span><br />
{{ totalList[me.seqNo - 2].totalNum - me.totalNum }}
</p>
<p v-else-if="me.seqNo == 0" class="not-rank">未上榜</p>
<p v-else-if="me.seqNo == 0" class="not-rank">{{$t('rank.未上榜')}}</p>
<!-- <p class="rank-user-num">{{ formatTotal(me.totalNum) }}</p> -->
</div>
</div>
@@ -190,7 +190,8 @@ export default {
document.title = this.$route.meta.title;
setTimeout(() => {
this.getList();
}, 50);
this.$i18n.locale = window.sessionStorage.getItem('language')
}, 80);
// new Vconsole();
},
data() {